main.go 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  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/mail"
  6. "app.yhyue.com/moapp/jybase/mongodb"
  7. "app.yhyue.com/moapp/jybase/mysql"
  8. "app.yhyue.com/moapp/jybase/redis"
  9. "bp.jydev.jianyu360.cn/BaseService/pushpkg/p"
  10. "flag"
  11. "github.com/ClickHouse/clickhouse-go/v2/lib/driver"
  12. "github.com/robfig/cron"
  13. "log"
  14. )
  15. var (
  16. cfg = new(Config)
  17. db = new(DB)
  18. lableJson = new(LableJson)
  19. Mysql *mysql.Mysql
  20. TiDb *mysql.Mysql
  21. dataServiceMsql *mysql.Mysql
  22. ClickhouseConn driver.Conn
  23. TiDbData *mysql.Mysql
  24. TiDbPower *mysql.Mysql
  25. WorkOrder *mysql.Mysql
  26. ThirdParty *mysql.Mysql
  27. Jyactivities *mysql.Mysql
  28. debrisProductMysql *mysql.Mysql
  29. Base *mysql.Mysql
  30. BiService *mysql.Mysql
  31. DataAnalysisService *mysql.Mysql
  32. CrmService *mysql.Mysql
  33. Es elastic.Es
  34. Mgo *mongodb.MongodbSim
  35. MgoLog *mongodb.MongodbSim
  36. MgoQyxy *mongodb.MongodbSim
  37. mode = flag.Int("m", 1, "")
  38. startTime, endTime = "00:00", "23:59"
  39. Gmail mail.GmailAuth
  40. UserChannel = make(map[string]map[string]interface{})
  41. )
  42. func main() {
  43. flag.Parse()
  44. common.ReadConfig(&cfg)
  45. log.Println("cfg ", cfg)
  46. common.ReadConfig("./db.json", &db)
  47. log.Println("db ", db)
  48. common.ReadConfig("./lable.json", &lableJson)
  49. log.Println("lableJson ", lableJson)
  50. Gmail = mail.GmailAuth{
  51. SmtpHost: db.Mail.SmtpHost,
  52. SmtpPort: db.Mail.SmtpPort,
  53. User: db.Mail.User,
  54. Pwd: db.Mail.Pwd,
  55. }
  56. TiDb = MysqlTidbInit(db.TiDb)
  57. TiDb.Init()
  58. TiDbData = MysqlTidbInit(db.TiDbData)
  59. TiDbData.Init()
  60. TiDbPower = MysqlTidbInit(db.TiDbPower)
  61. TiDbPower.Init()
  62. ThirdParty = MysqlTidbInit(db.ThirdParty)
  63. ThirdParty.Init()
  64. Jyactivities = MysqlTidbInit(db.Jyactivities)
  65. Jyactivities.Init()
  66. debrisProductMysql = MysqlTidbInit(db.DebrisProduct)
  67. debrisProductMysql.Init()
  68. WorkOrder = MysqlTidbInit(db.WorderOrder)
  69. WorkOrder.Init()
  70. Mysql = MysqlTidbInit(db.Mysql)
  71. Mysql.Init()
  72. Base = MysqlTidbInit(db.BaseService)
  73. Base.Init()
  74. BiService = MysqlTidbInit(db.BiService)
  75. BiService.Init()
  76. DataAnalysisService = MysqlTidbInit(db.DataAnalysis)
  77. DataAnalysisService.Init()
  78. CrmService = MysqlTidbInit(db.Crm)
  79. CrmService.Init()
  80. ConnectClickhouse(&db.Clickhouse)
  81. Es = elastic.NewEs(db.Es.Version, db.Es.Address, db.Es.DbSize, db.Es.UserName, db.Es.Password)
  82. redis.InitRedis(db.RedisServer)
  83. Mgo = mongodb.NewMgo(db.Mgo.Address, db.Mgo.DbName, db.Mgo.DbSize)
  84. MgoLog = mongodb.NewMgoWithUser(db.MgoLog.Address, db.MgoLog.DbName, db.MgoLog.User, db.MgoLog.Password, db.MgoLog.DbSize)
  85. MgoQyxy = mongodb.NewMgoWithUser(db.MgoQyxy.Address, db.MgoQyxy.DbName, db.MgoQyxy.User, db.MgoQyxy.Password, db.MgoQyxy.DbSize)
  86. InitArea()
  87. InitProduct(db.ProductArr)
  88. InitUserChannel()
  89. /*bigCustomer()
  90. return*/
  91. if *mode == 1 {
  92. go ordersClue() //后台订单进线索
  93. //一秒钟一次
  94. go p.VarTimeTask.RunInSecondTimeLoop("1秒钟定时任务", "", "", db.CornExp8, true, true, nil, func() {
  95. LockHandle() //绑定状态处理
  96. })
  97. //30分钟一次
  98. go p.VarTimeTask.RunInTimeLoop("30分钟定时任务", "", "", db.CornExp1, true, true, nil, func() {
  99. orders() //未支付订单
  100. messageSync() //在线客服聊天记录进线索
  101. userbase() //新绑定手机号进线索
  102. customerButton()
  103. })
  104. //5分钟一次
  105. go p.VarTimeTask.RunInTimeSection("5分钟定时任务1", db.CornExp2Start, db.CornExp2End, db.CornExp2, func(dayFirst bool) {
  106. InitUserChannel()
  107. users() //新注册用户进线索
  108. saleLeads() //留资进线索
  109. eventReg() //渠道
  110. bigCustomer() //大客户线索
  111. SpecialSaleLeads()
  112. rebind() //取关重新关注处理
  113. activeUsers() //活跃用户处理
  114. inviteUser() //邀请用户
  115. nextYearActivity() //开年活动
  116. })
  117. //每天8点30
  118. c := cron.New()
  119. c.AddFunc(db.CornExp3, func() {
  120. users() //新注册用户进线索
  121. saleLeads() //留资进线索
  122. activeUsers() //活跃用户处理
  123. })
  124. c.Start()
  125. // 一天一次
  126. // tagAllSync()
  127. d := cron.New()
  128. d.AddFunc(db.CornExp4, func() {
  129. tagAllSync() //用户标签
  130. })
  131. d.Start()
  132. // 5分钟一次
  133. go p.VarTimeTask.RunInTimeLoop("5分钟定时任务2", "", "", db.CornExp5, true, true, nil, func() {
  134. //go p.VarTimeTask.RunInTimeSection("5分钟定时任务2", startTime, endTime, db.CornExp5, func(dayFirst bool) {
  135. InitUserChannel()
  136. everythingSync() //渠道
  137. ordersClue() //后台已支付订单进线索
  138. kcSync() //移交客成
  139. kcAuto() //客成自动加入任务车
  140. tagAddSync() //用户标签增量
  141. autoExitSea() //自动退海
  142. Thaw() //自动解冻处理
  143. subscribeAddSync() //订阅增量
  144. CustomerChange() //客成人员变更
  145. })
  146. //5分钟一次
  147. go p.VarTimeTask.RunInTimeLoop("5分钟定时任务3", "", "", db.CornExp6, true, true, nil, func() {
  148. //go p.VarTimeTask.RunInTimeSection("5分钟定时任务3", startTime, endTime, db.CornExp6, func(dayFirst bool) {
  149. subscribeAddSync() //订阅增量
  150. rderAcceptance() //工单生成
  151. })
  152. //自动进入任务车 1天一次
  153. g := cron.New()
  154. g.AddFunc(db.CornExp7, func() {
  155. readClue() //读取中间表进线索
  156. refundAuto() //客成移交销售
  157. autoTask() //超时未跟进加入任务车
  158. autoTasks() //按照下次跟进时间提前一天加入任务车
  159. ClueToDxTask()
  160. })
  161. f := cron.New()
  162. f.AddFunc(db.CornExp9, func() {
  163. LabelToClue()
  164. })
  165. g.Start()
  166. f.Start()
  167. log.Println("个人邮件告警查询开始")
  168. WarningPerl() // 个人
  169. log.Println("部门邮件告警查询开始")
  170. WarningDm() // 部门
  171. log.Println("个人/部门邮件告警查询结束")
  172. h := cron.New()
  173. h.AddFunc(db.CornMail, func() {
  174. log.Println("个人邮件告警查询开始")
  175. WarningPerl() // 个人
  176. log.Println("部门邮件告警查询开始")
  177. WarningDm() // 部门
  178. log.Println("个人/部门邮件告警查询结束")
  179. UpperLimitAutoExitSea(db.AllocationCap)
  180. })
  181. h.Start()
  182. select {}
  183. } else if *mode == 2 {
  184. LabelToClue()
  185. } else if *mode == 3 {
  186. ClueToDxTask()
  187. } else {
  188. users()
  189. saleLeads()
  190. }
  191. }