main.go 8.7 KB

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