main.go 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  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. "flag"
  10. "fmt"
  11. "log"
  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. debrisProductMysql *mysql.Mysql
  24. Base *mysql.Mysql
  25. BiService *mysql.Mysql
  26. DataAnalysisService *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. startTime, endTime = "00:00", "23:59"
  33. Gmail mail.GmailAuth
  34. )
  35. func main() {
  36. flag.Parse()
  37. common.ReadConfig(&cfg)
  38. log.Println("cfg ", cfg)
  39. common.ReadConfig("./db.json", &db)
  40. log.Println("db ", db)
  41. Gmail = mail.GmailAuth{
  42. SmtpHost: db.Mail.SmtpHost,
  43. SmtpPort: db.Mail.SmtpPort,
  44. User: db.Mail.User,
  45. Pwd: db.Mail.Pwd,
  46. }
  47. TiDb = &mysql.Mysql{
  48. Address: db.TiDb.Host + ":" + fmt.Sprint(db.TiDb.Port),
  49. UserName: db.TiDb.User,
  50. PassWord: db.TiDb.Password,
  51. DBName: db.TiDb.Database,
  52. MaxOpenConns: db.TiDb.PollSize,
  53. MaxIdleConns: db.TiDb.MaxIdle,
  54. }
  55. TiDb.Init()
  56. TiDbData = &mysql.Mysql{
  57. Address: db.TiDbData.Host + ":" + fmt.Sprint(db.TiDbData.Port),
  58. UserName: db.TiDbData.User,
  59. PassWord: db.TiDbData.Password,
  60. DBName: db.TiDbData.Database,
  61. MaxOpenConns: db.TiDbData.PollSize,
  62. MaxIdleConns: db.TiDbData.MaxIdle,
  63. }
  64. TiDbData.Init()
  65. TiDbPower = &mysql.Mysql{
  66. Address: db.TiDbPower.Host + ":" + fmt.Sprint(db.TiDbPower.Port),
  67. UserName: db.TiDbPower.User,
  68. PassWord: db.TiDbPower.Password,
  69. DBName: db.TiDbPower.Database,
  70. MaxOpenConns: db.TiDbPower.PollSize,
  71. MaxIdleConns: db.TiDbPower.MaxIdle,
  72. }
  73. TiDbPower.Init()
  74. ThirdParty = &mysql.Mysql{
  75. Address: db.ThirdParty.Host + ":" + fmt.Sprint(db.ThirdParty.Port),
  76. UserName: db.ThirdParty.User,
  77. PassWord: db.ThirdParty.Password,
  78. DBName: db.ThirdParty.Database,
  79. MaxOpenConns: db.ThirdParty.PollSize,
  80. MaxIdleConns: db.ThirdParty.MaxIdle,
  81. }
  82. ThirdParty.Init()
  83. Jyactivities = &mysql.Mysql{
  84. Address: db.Jyactivities.Host + ":" + fmt.Sprint(db.Jyactivities.Port),
  85. UserName: db.Jyactivities.User,
  86. PassWord: db.Jyactivities.Password,
  87. DBName: db.Jyactivities.Database,
  88. MaxOpenConns: db.Jyactivities.PollSize,
  89. MaxIdleConns: db.Jyactivities.MaxIdle,
  90. }
  91. Jyactivities.Init()
  92. debrisProductMysql = &mysql.Mysql{
  93. Address: db.DebrisProduct.Host + ":" + fmt.Sprint(db.DebrisProduct.Port),
  94. UserName: db.DebrisProduct.User,
  95. PassWord: db.DebrisProduct.Password,
  96. DBName: db.DebrisProduct.Database,
  97. }
  98. debrisProductMysql.Init()
  99. WorkOrder = &mysql.Mysql{
  100. Address: db.WorderOrder.Host + ":" + fmt.Sprint(db.WorderOrder.Port),
  101. UserName: db.WorderOrder.User,
  102. PassWord: db.WorderOrder.Password,
  103. DBName: db.WorderOrder.Database,
  104. MaxOpenConns: db.WorderOrder.PollSize,
  105. MaxIdleConns: db.WorderOrder.MaxIdle,
  106. }
  107. WorkOrder.Init()
  108. Mysql = &mysql.Mysql{
  109. Address: db.Mysql.Host + ":" + fmt.Sprint(db.Mysql.Port),
  110. UserName: db.Mysql.User,
  111. PassWord: db.Mysql.Password,
  112. DBName: db.Mysql.Database,
  113. MaxOpenConns: db.Mysql.PollSize,
  114. MaxIdleConns: db.Mysql.MaxIdle,
  115. }
  116. Mysql.Init()
  117. Base = &mysql.Mysql{
  118. Address: db.BaseService.Host + ":" + fmt.Sprint(db.BaseService.Port),
  119. UserName: db.BaseService.User,
  120. PassWord: db.BaseService.Password,
  121. DBName: db.BaseService.Database,
  122. MaxOpenConns: db.BaseService.PollSize,
  123. MaxIdleConns: db.BaseService.MaxIdle,
  124. }
  125. Base.Init()
  126. BiService = &mysql.Mysql{
  127. Address: db.BiService.Host + ":" + fmt.Sprint(db.BiService.Port),
  128. UserName: db.BiService.User,
  129. PassWord: db.BiService.Password,
  130. DBName: db.BiService.Database,
  131. MaxOpenConns: db.BiService.PollSize,
  132. MaxIdleConns: db.BiService.MaxIdle,
  133. }
  134. BiService.Init()
  135. DataAnalysisService = &mysql.Mysql{
  136. Address: db.DataAnalysis.Host + ":" + fmt.Sprint(db.DataAnalysis.Port),
  137. UserName: db.DataAnalysis.User,
  138. PassWord: db.DataAnalysis.Password,
  139. DBName: db.DataAnalysis.Database,
  140. MaxOpenConns: db.DataAnalysis.PollSize,
  141. MaxIdleConns: db.DataAnalysis.MaxIdle,
  142. }
  143. //DataAnalysisService.Init()
  144. //Es = elastic.NewEs(db.Es.Version, db.Es.Address, db.Es.DbSize, db.Es.UserName, db.Es.Password)
  145. redis.InitRedis(db.RedisServer)
  146. Mgo = mongodb.NewMgo(db.Mgo.Address, db.Mgo.DbName, db.Mgo.DbSize)
  147. MgoLog = mongodb.NewMgoWithUser(db.MgoLog.Address, db.MgoLog.DbName, db.MgoLog.User, db.MgoLog.Password, db.MgoLog.DbSize)
  148. MgoQyxy = mongodb.NewMgoWithUser(db.MgoQyxy.Address, db.MgoQyxy.DbName, db.MgoQyxy.User, db.MgoQyxy.Password, db.MgoQyxy.DbSize)
  149. //InitArea()
  150. InitProduct(db.ProductArr)
  151. ClueNameChange("河南碧桂园建设工程有限公司", 1, 1176118)
  152. /*if *mode == 1 {
  153. go ordersClue() //后台订单进线索
  154. //一秒钟一次
  155. go p.VarTimeTask.RunInSecondTimeLoop("1秒钟定时任务", "", "", db.CornExp8, true, true, nil, func() {
  156. LockHandle() //绑定状态处理
  157. })
  158. //30分钟一次
  159. go p.VarTimeTask.RunInTimeLoop("30分钟定时任务", "", "", db.CornExp1, true, true, nil, func() {
  160. orders() //未支付订单
  161. messageSync() //聊天记录进线索
  162. userbase() //新绑定手机号进线索
  163. })
  164. //5分钟一次
  165. go p.VarTimeTask.RunInTimeSection("5分钟定时任务1", db.CornExp2Start, db.CornExp2End, db.CornExp2, func(dayFirst bool) {
  166. users() //新注册用户进线索
  167. saleLeads() //留资进线索
  168. eventReg() //渠道
  169. bigCustomer() //大客户线索
  170. MarketCustomer() //市场部线索
  171. AdvisoryCommittee() //咨询组线索
  172. SelectionDepartment() //运营部线索
  173. rebind() //取关重新关注处理
  174. activeUsers() //活跃用户处理
  175. inviteUser() //邀请用户
  176. nextYearActivity() //开年活动
  177. })
  178. //每天8点30
  179. c := cron.New()
  180. c.AddFunc(db.CornExp3, func() {
  181. users() //新注册用户进线索
  182. saleLeads() //留资进线索
  183. activeUsers() //活跃用户处理
  184. })
  185. c.Start()
  186. // 一天一次
  187. // tagAllSync()
  188. d := cron.New()
  189. d.AddFunc(db.CornExp4, func() {
  190. tagAllSync() //用户标签
  191. })
  192. d.Start()
  193. // 5分钟一次
  194. go p.VarTimeTask.RunInTimeLoop("5分钟定时任务2", "", "", db.CornExp5, true, true, nil, func() {
  195. //go p.VarTimeTask.RunInTimeSection("5分钟定时任务2", startTime, endTime, db.CornExp5, func(dayFirst bool) {
  196. everythingSync() //渠道
  197. ordersClue() //后台订单进线索
  198. kcSync() //移交客成
  199. kcAuto() //客成自动加入任务车
  200. tagAddSync() //用户标签增量
  201. autoExitSea() //自动退海
  202. Thaw() //自动解冻处理
  203. subscribeAddSync() //订阅增量
  204. CustomerChange() //客成人员变更发邮件
  205. })
  206. //5分钟一次
  207. go p.VarTimeTask.RunInTimeLoop("5分钟定时任务3", "", "", db.CornExp6, true, true, nil, func() {
  208. //go p.VarTimeTask.RunInTimeSection("5分钟定时任务3", startTime, endTime, db.CornExp6, func(dayFirst bool) {
  209. subscribeAddSync() //订阅增量
  210. rderAcceptance() //工单生成
  211. })
  212. //自动进入任务车 1天一次
  213. g := cron.New()
  214. g.AddFunc(db.CornExp7, func() {
  215. readClue() //读取中间表进线索
  216. refundAuto() //客成移交销售
  217. autoTask() //超时未跟进加入任务车
  218. autoTasks() //按照下次跟进时间提前一天加入任务车
  219. ClueToDxTask()
  220. })
  221. g.Start()
  222. log.Println("个人邮件告警查询开始")
  223. WarningPerl() // 个人
  224. log.Println("部门邮件告警查询开始")
  225. WarningDm() // 部门
  226. log.Println("个人/部门邮件告警查询结束")
  227. h := cron.New()
  228. h.AddFunc(db.CornMail, func() {
  229. log.Println("个人邮件告警查询开始")
  230. WarningPerl() // 个人
  231. log.Println("部门邮件告警查询开始")
  232. WarningDm() // 部门
  233. log.Println("个人/部门邮件告警查询结束")
  234. UpperLimitAutoExitSea(db.AllocationCap)
  235. })
  236. h.Start()
  237. select {}
  238. } else {
  239. users()
  240. saleLeads()
  241. }*/
  242. }