main.go 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. package main
  2. import (
  3. "app.yhyue.com/moapp/jybase/common"
  4. elastic "app.yhyue.com/moapp/jybase/es"
  5. "app.yhyue.com/moapp/jybase/mongodb"
  6. "app.yhyue.com/moapp/jybase/mysql"
  7. "app.yhyue.com/moapp/jybase/redis"
  8. "bp.jydev.jianyu360.cn/BaseService/pushpkg/p"
  9. "flag"
  10. "fmt"
  11. "github.com/robfig/cron"
  12. "log"
  13. )
  14. var (
  15. cfg = new(Config)
  16. db = new(DB)
  17. Mysql *mysql.Mysql
  18. TiDb *mysql.Mysql
  19. TiDbData *mysql.Mysql
  20. TiDbPower *mysql.Mysql
  21. WorkOrder *mysql.Mysql
  22. ThirdParty *mysql.Mysql
  23. Jyactivities *mysql.Mysql
  24. Base *mysql.Mysql
  25. BiService *mysql.Mysql
  26. DataAnalysisService *mysql.Mysql
  27. Es elastic.Es
  28. Mgo *mongodb.MongodbSim
  29. MgoLog *mongodb.MongodbSim
  30. MgoQyxy *mongodb.MongodbSim
  31. mode = flag.Int("m", 1, "")
  32. startTime, endTime = "00:00", "23:59"
  33. )
  34. func main() {
  35. flag.Parse()
  36. common.ReadConfig(&cfg)
  37. log.Println("cfg ", cfg)
  38. common.ReadConfig("./db.json", &db)
  39. log.Println("db ", db)
  40. TiDb = &mysql.Mysql{
  41. Address: db.TiDb.Host + ":" + fmt.Sprint(db.TiDb.Port),
  42. UserName: db.TiDb.User,
  43. PassWord: db.TiDb.Password,
  44. DBName: db.TiDb.Database,
  45. MaxOpenConns: db.TiDb.PollSize,
  46. MaxIdleConns: db.TiDb.MaxIdle,
  47. }
  48. TiDb.Init()
  49. TiDbData = &mysql.Mysql{
  50. Address: db.TiDbData.Host + ":" + fmt.Sprint(db.TiDbData.Port),
  51. UserName: db.TiDbData.User,
  52. PassWord: db.TiDbData.Password,
  53. DBName: db.TiDbData.Database,
  54. MaxOpenConns: db.TiDbData.PollSize,
  55. MaxIdleConns: db.TiDbData.MaxIdle,
  56. }
  57. TiDbData.Init()
  58. TiDbPower = &mysql.Mysql{
  59. Address: db.TiDbPower.Host + ":" + fmt.Sprint(db.TiDbPower.Port),
  60. UserName: db.TiDbPower.User,
  61. PassWord: db.TiDbPower.Password,
  62. DBName: db.TiDbPower.Database,
  63. MaxOpenConns: db.TiDbPower.PollSize,
  64. MaxIdleConns: db.TiDbPower.MaxIdle,
  65. }
  66. TiDbPower.Init()
  67. ThirdParty = &mysql.Mysql{
  68. Address: db.ThirdParty.Host + ":" + fmt.Sprint(db.ThirdParty.Port),
  69. UserName: db.ThirdParty.User,
  70. PassWord: db.ThirdParty.Password,
  71. DBName: db.ThirdParty.Database,
  72. MaxOpenConns: db.ThirdParty.PollSize,
  73. MaxIdleConns: db.ThirdParty.MaxIdle,
  74. }
  75. ThirdParty.Init()
  76. Jyactivities = &mysql.Mysql{
  77. Address: db.Jyactivities.Host + ":" + fmt.Sprint(db.Jyactivities.Port),
  78. UserName: db.Jyactivities.User,
  79. PassWord: db.Jyactivities.Password,
  80. DBName: db.Jyactivities.Database,
  81. MaxOpenConns: db.Jyactivities.PollSize,
  82. MaxIdleConns: db.Jyactivities.MaxIdle,
  83. }
  84. Jyactivities.Init()
  85. WorkOrder = &mysql.Mysql{
  86. Address: db.WorderOrder.Host + ":" + fmt.Sprint(db.WorderOrder.Port),
  87. UserName: db.WorderOrder.User,
  88. PassWord: db.WorderOrder.Password,
  89. DBName: db.WorderOrder.Database,
  90. MaxOpenConns: db.WorderOrder.PollSize,
  91. MaxIdleConns: db.WorderOrder.MaxIdle,
  92. }
  93. WorkOrder.Init()
  94. Mysql = &mysql.Mysql{
  95. Address: db.Mysql.Host + ":" + fmt.Sprint(db.Mysql.Port),
  96. UserName: db.Mysql.User,
  97. PassWord: db.Mysql.Password,
  98. DBName: db.Mysql.Database,
  99. MaxOpenConns: db.Mysql.PollSize,
  100. MaxIdleConns: db.Mysql.MaxIdle,
  101. }
  102. Mysql.Init()
  103. Base = &mysql.Mysql{
  104. Address: db.BaseService.Host + ":" + fmt.Sprint(db.BaseService.Port),
  105. UserName: db.BaseService.User,
  106. PassWord: db.BaseService.Password,
  107. DBName: db.BaseService.Database,
  108. MaxOpenConns: db.BaseService.PollSize,
  109. MaxIdleConns: db.BaseService.MaxIdle,
  110. }
  111. Base.Init()
  112. BiService = &mysql.Mysql{
  113. Address: db.BiService.Host + ":" + fmt.Sprint(db.BiService.Port),
  114. UserName: db.BiService.User,
  115. PassWord: db.BiService.Password,
  116. DBName: db.BiService.Database,
  117. MaxOpenConns: db.BiService.PollSize,
  118. MaxIdleConns: db.BiService.MaxIdle,
  119. }
  120. BiService.Init()
  121. DataAnalysisService = &mysql.Mysql{
  122. Address: db.DataAnalysis.Host + ":" + fmt.Sprint(db.DataAnalysis.Port),
  123. UserName: db.DataAnalysis.User,
  124. PassWord: db.DataAnalysis.Password,
  125. DBName: db.DataAnalysis.Database,
  126. MaxOpenConns: db.DataAnalysis.PollSize,
  127. MaxIdleConns: db.DataAnalysis.MaxIdle,
  128. }
  129. DataAnalysisService.Init()
  130. Es = elastic.NewEs(db.Es.Version, db.Es.Address, db.Es.DbSize, db.Es.UserName, db.Es.Password)
  131. redis.InitRedis(db.RedisServer)
  132. Mgo = mongodb.NewMgo(db.Mgo.Address, db.Mgo.DbName, db.Mgo.DbSize)
  133. MgoLog = mongodb.NewMgoWithUser(db.MgoLog.Address, db.MgoLog.DbName, db.MgoLog.User, db.MgoLog.Password, db.MgoLog.DbSize)
  134. MgoQyxy = mongodb.NewMgoWithUser(db.MgoQyxy.Address, db.MgoQyxy.DbName, db.MgoQyxy.User, db.MgoQyxy.Password, db.MgoQyxy.DbSize)
  135. InitArea()
  136. InitProduct(db.ProductArr)
  137. if *mode == 1 {
  138. //30分钟一次
  139. go p.VarTimeTask.RunInTimeLoop("30分钟定时任务", "", "", db.CornExp1, true, true, nil, func() {
  140. orders() //未支付订单
  141. messageSync() //聊天记录进线索
  142. userbase() //新绑定手机号进线索
  143. })
  144. //5分钟一次
  145. go p.VarTimeTask.RunInTimeSection("5分钟定时任务1", db.CornExp2Start, db.CornExp2End, db.CornExp2, func(dayFirst bool) {
  146. users() //新注册用户进线索
  147. saleLeads() //留资进线索
  148. eventReg() //渠道
  149. bigCustomer() //大客户线索
  150. marketCustomer() //市场部线索
  151. AdvisoryCommittee() //咨询组线索
  152. rebind() //取关重新关注处理
  153. activeUsers() //活跃用户处理
  154. })
  155. //每天8点30
  156. c := cron.New()
  157. c.AddFunc(db.CornExp3, func() {
  158. users() //新注册用户进线索
  159. saleLeads() //留资进线索
  160. activeUsers() //活跃用户处理
  161. })
  162. c.Start()
  163. // 一天一次
  164. // tagAllSync()
  165. d := cron.New()
  166. d.AddFunc(db.CornExp4, func() {
  167. tagAllSync() //用户标签
  168. })
  169. d.Start()
  170. // 5分钟一次
  171. go ordersClue() //后台订单进线索
  172. go p.VarTimeTask.RunInTimeLoop("5分钟定时任务2", "", "", db.CornExp5, true, true, nil, func() {
  173. //go p.VarTimeTask.RunInTimeSection("5分钟定时任务2", startTime, endTime, db.CornExp5, func(dayFirst bool) {
  174. everythingSync() //渠道
  175. ordersClue() //后台订单进线索
  176. kcSync() //移交客成
  177. kcAuto() //客成自动加入任务车
  178. tagAddSync() //用户标签增量
  179. autoExitSea() //自动退海
  180. Thaw() //自动解冻处理
  181. subscribeAddSync() //订阅增量
  182. rderAcceptance() //工单生成
  183. })
  184. //5分钟一次
  185. go p.VarTimeTask.RunInTimeLoop("5分钟定时任务3", "", "", db.CornExp6, true, true, nil, func() {
  186. //go p.VarTimeTask.RunInTimeSection("5分钟定时任务3", startTime, endTime, db.CornExp6, func(dayFirst bool) {
  187. subscribeAddSync() //订阅增量
  188. rderAcceptance() //工单生成
  189. })
  190. //自动进入任务车 1天一次
  191. g := cron.New()
  192. g.AddFunc(db.CornExp7, func() {
  193. readClue() //读取中间表进线索
  194. refundAuto() //客成移交销售
  195. autoTask() //超时未跟进加入任务车
  196. autoTasks() //按照下次跟进时间提前一天加入任务车
  197. })
  198. g.Start()
  199. log.Println("个人邮件告警查询开始")
  200. WarningPerl() // 个人
  201. log.Println("部门邮件告警查询开始")
  202. WarningDm() // 部门
  203. log.Println("个人/部门邮件告警查询结束")
  204. h := cron.New()
  205. h.AddFunc(db.CornMail, func() {
  206. log.Println("个人邮件告警查询开始")
  207. WarningPerl() // 个人
  208. log.Println("部门邮件告警查询开始")
  209. WarningDm() // 部门
  210. log.Println("个人/部门邮件告警查询结束")
  211. UpperLimitAutoExitSea(db.AllocationCap)
  212. })
  213. h.Start()
  214. select {}
  215. } else {
  216. users()
  217. saleLeads()
  218. }
  219. }