main.go 5.9 KB

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