main.go 5.9 KB

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