main.go 6.0 KB

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