123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- package main
- import (
- "app.yhyue.com/moapp/jybase/common"
- elastic "app.yhyue.com/moapp/jybase/es"
- "app.yhyue.com/moapp/jybase/mail"
- "app.yhyue.com/moapp/jybase/mongodb"
- "app.yhyue.com/moapp/jybase/mysql"
- "app.yhyue.com/moapp/jybase/redis"
- "bp.jydev.jianyu360.cn/BaseService/pushpkg/p"
- "flag"
- "github.com/ClickHouse/clickhouse-go/v2/lib/driver"
- "github.com/robfig/cron"
- "log"
- )
- var (
- cfg = new(Config)
- db = new(DB)
- lableJson = new(LableJson)
- Mysql *mysql.Mysql
- TiDb *mysql.Mysql
- dataServiceMsql *mysql.Mysql
- ClickhouseConn driver.Conn
- TiDbData *mysql.Mysql
- TiDbPower *mysql.Mysql
- WorkOrder *mysql.Mysql
- ThirdParty *mysql.Mysql
- Jyactivities *mysql.Mysql
- debrisProductMysql *mysql.Mysql
- Base *mysql.Mysql
- BiService *mysql.Mysql
- DataAnalysisService *mysql.Mysql
- CrmService *mysql.Mysql
- Es elastic.Es
- Mgo *mongodb.MongodbSim
- MgoLog *mongodb.MongodbSim
- MgoQyxy *mongodb.MongodbSim
- mode = flag.Int("m", 1, "")
- startTime, endTime = "00:00", "23:59"
- Gmail mail.GmailAuth
- UserChannel = make(map[string]map[string]interface{})
- )
- func main() {
- flag.Parse()
- common.ReadConfig(&cfg)
- log.Println("cfg ", cfg)
- common.ReadConfig("./db.json", &db)
- log.Println("db ", db)
- common.ReadConfig("./lable.json", &lableJson)
- log.Println("lableJson ", lableJson)
- Gmail = mail.GmailAuth{
- SmtpHost: db.Mail.SmtpHost,
- SmtpPort: db.Mail.SmtpPort,
- User: db.Mail.User,
- Pwd: db.Mail.Pwd,
- }
- TiDb = MysqlTidbInit(db.TiDb)
- TiDb.Init()
- TiDbData = MysqlTidbInit(db.TiDbData)
- TiDbData.Init()
- TiDbPower = MysqlTidbInit(db.TiDbPower)
- TiDbPower.Init()
- ThirdParty = MysqlTidbInit(db.ThirdParty)
- ThirdParty.Init()
- Jyactivities = MysqlTidbInit(db.Jyactivities)
- Jyactivities.Init()
- debrisProductMysql = MysqlTidbInit(db.DebrisProduct)
- debrisProductMysql.Init()
- WorkOrder = MysqlTidbInit(db.WorderOrder)
- WorkOrder.Init()
- Mysql = MysqlTidbInit(db.Mysql)
- Mysql.Init()
- Base = MysqlTidbInit(db.BaseService)
- Base.Init()
- BiService = MysqlTidbInit(db.BiService)
- BiService.Init()
- DataAnalysisService = MysqlTidbInit(db.DataAnalysis)
- DataAnalysisService.Init()
- CrmService = MysqlTidbInit(db.Crm)
- CrmService.Init()
- ConnectClickhouse(&db.Clickhouse)
- Es = elastic.NewEs(db.Es.Version, db.Es.Address, db.Es.DbSize, db.Es.UserName, db.Es.Password)
- redis.InitRedis(db.RedisServer)
- Mgo = mongodb.NewMgo(db.Mgo.Address, db.Mgo.DbName, db.Mgo.DbSize)
- MgoLog = mongodb.NewMgoWithUser(db.MgoLog.Address, db.MgoLog.DbName, db.MgoLog.User, db.MgoLog.Password, db.MgoLog.DbSize)
- MgoQyxy = mongodb.NewMgoWithUser(db.MgoQyxy.Address, db.MgoQyxy.DbName, db.MgoQyxy.User, db.MgoQyxy.Password, db.MgoQyxy.DbSize)
- InitArea()
- InitProduct(db.ProductArr)
- InitUserChannel()
- /*bigCustomer()
- return*/
- if *mode == 1 {
- go ordersClue() //后台订单进线索
- //一秒钟一次
- go p.VarTimeTask.RunInSecondTimeLoop("1秒钟定时任务", "", "", db.CornExp8, true, true, nil, func() {
- LockHandle() //绑定状态处理
- })
- //30分钟一次
- go p.VarTimeTask.RunInTimeLoop("30分钟定时任务", "", "", db.CornExp1, true, true, nil, func() {
- orders() //未支付订单
- messageSync() //在线客服聊天记录进线索
- userbase() //新绑定手机号进线索
- customerButton()
- })
- //5分钟一次
- go p.VarTimeTask.RunInTimeSection("5分钟定时任务1", db.CornExp2Start, db.CornExp2End, db.CornExp2, func(dayFirst bool) {
- InitUserChannel()
- users() //新注册用户进线索
- saleLeads() //留资进线索
- eventReg() //渠道
- bigCustomer() //大客户线索
- SpecialSaleLeads()
- rebind() //取关重新关注处理
- activeUsers() //活跃用户处理
- inviteUser() //邀请用户
- nextYearActivity() //开年活动
- })
- //每天8点30
- c := cron.New()
- c.AddFunc(db.CornExp3, func() {
- users() //新注册用户进线索
- saleLeads() //留资进线索
- activeUsers() //活跃用户处理
- })
- c.Start()
- // 一天一次
- // tagAllSync()
- d := cron.New()
- d.AddFunc(db.CornExp4, func() {
- tagAllSync() //用户标签
- })
- d.Start()
- // 5分钟一次
- go p.VarTimeTask.RunInTimeLoop("5分钟定时任务2", "", "", db.CornExp5, true, true, nil, func() {
- //go p.VarTimeTask.RunInTimeSection("5分钟定时任务2", startTime, endTime, db.CornExp5, func(dayFirst bool) {
- InitUserChannel()
- everythingSync() //渠道
- ordersClue() //后台已支付订单进线索
- kcSync() //移交客成
- kcAuto() //客成自动加入任务车
- tagAddSync() //用户标签增量
- autoExitSea() //自动退海
- Thaw() //自动解冻处理
- subscribeAddSync() //订阅增量
- CustomerChange() //客成人员变更
- })
- //5分钟一次
- go p.VarTimeTask.RunInTimeLoop("5分钟定时任务3", "", "", db.CornExp6, true, true, nil, func() {
- //go p.VarTimeTask.RunInTimeSection("5分钟定时任务3", startTime, endTime, db.CornExp6, func(dayFirst bool) {
- subscribeAddSync() //订阅增量
- rderAcceptance() //工单生成
- })
- //自动进入任务车 1天一次
- g := cron.New()
- g.AddFunc(db.CornExp7, func() {
- readClue() //读取中间表进线索
- refundAuto() //客成移交销售
- autoTask() //超时未跟进加入任务车
- autoTasks() //按照下次跟进时间提前一天加入任务车
- ClueToDxTask()
- })
- f := cron.New()
- f.AddFunc(db.CornExp9, func() {
- LabelToClue()
- })
- g.Start()
- f.Start()
- log.Println("个人邮件告警查询开始")
- WarningPerl() // 个人
- log.Println("部门邮件告警查询开始")
- WarningDm() // 部门
- log.Println("个人/部门邮件告警查询结束")
- h := cron.New()
- h.AddFunc(db.CornMail, func() {
- log.Println("个人邮件告警查询开始")
- WarningPerl() // 个人
- log.Println("部门邮件告警查询开始")
- WarningDm() // 部门
- log.Println("个人/部门邮件告警查询结束")
- UpperLimitAutoExitSea(db.AllocationCap)
- })
- h.Start()
- select {}
- } else if *mode == 2 {
- LabelToClue()
- } else if *mode == 3 {
- ClueToDxTask()
- } else {
- users()
- saleLeads()
- }
- }
|