main.go 6.4 KB

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