package main import ( "flag" "fmt" "github.com/robfig/cron" "log" "app.yhyue.com/moapp/jybase/common" elastic "app.yhyue.com/moapp/jybase/es" "app.yhyue.com/moapp/jybase/mongodb" "app.yhyue.com/moapp/jybase/mysql" "app.yhyue.com/moapp/jybase/redis" ) var ( cfg = new(Config) db = new(DB) Mysql *mysql.Mysql TiDb *mysql.Mysql TiDbData *mysql.Mysql TiDbPower *mysql.Mysql WorkOrder *mysql.Mysql ThirdParty *mysql.Mysql Jyactivities *mysql.Mysql Base *mysql.Mysql Es elastic.Es Mgo *mongodb.MongodbSim MgoLog *mongodb.MongodbSim MgoQyxy *mongodb.MongodbSim mode = flag.Int("m", 1, "") ) func main() { flag.Parse() common.ReadConfig(&cfg) log.Println("cfg ", cfg) common.ReadConfig("./db.json", &db) log.Println("db ", db) TiDb = &mysql.Mysql{ Address: db.TiDb.Host + ":" + fmt.Sprint(db.TiDb.Port), UserName: db.TiDb.User, PassWord: db.TiDb.Password, DBName: db.TiDb.Database, MaxOpenConns: db.TiDb.PollSize, MaxIdleConns: db.TiDb.MaxIdle, } TiDb.Init() TiDbData = &mysql.Mysql{ Address: db.TiDbData.Host + ":" + fmt.Sprint(db.TiDbData.Port), UserName: db.TiDbData.User, PassWord: db.TiDbData.Password, DBName: db.TiDbData.Database, MaxOpenConns: db.TiDbData.PollSize, MaxIdleConns: db.TiDbData.MaxIdle, } TiDbData.Init() TiDbPower = &mysql.Mysql{ Address: db.TiDbPower.Host + ":" + fmt.Sprint(db.TiDbPower.Port), UserName: db.TiDbPower.User, PassWord: db.TiDbPower.Password, DBName: db.TiDbPower.Database, MaxOpenConns: db.TiDbPower.PollSize, MaxIdleConns: db.TiDbPower.MaxIdle, } TiDbPower.Init() ThirdParty = &mysql.Mysql{ Address: db.ThirdParty.Host + ":" + fmt.Sprint(db.ThirdParty.Port), UserName: db.ThirdParty.User, PassWord: db.ThirdParty.Password, DBName: db.ThirdParty.Database, MaxOpenConns: db.ThirdParty.PollSize, MaxIdleConns: db.ThirdParty.MaxIdle, } ThirdParty.Init() Jyactivities = &mysql.Mysql{ Address: db.Jyactivities.Host + ":" + fmt.Sprint(db.Jyactivities.Port), UserName: db.Jyactivities.User, PassWord: db.Jyactivities.Password, DBName: db.Jyactivities.Database, MaxOpenConns: db.Jyactivities.PollSize, MaxIdleConns: db.Jyactivities.MaxIdle, } Jyactivities.Init() WorkOrder = &mysql.Mysql{ Address: db.WorderOrder.Host + ":" + fmt.Sprint(db.WorderOrder.Port), UserName: db.WorderOrder.User, PassWord: db.WorderOrder.Password, DBName: db.WorderOrder.Database, MaxOpenConns: db.WorderOrder.PollSize, MaxIdleConns: db.WorderOrder.MaxIdle, } WorkOrder.Init() Mysql = &mysql.Mysql{ Address: db.Mysql.Host + ":" + fmt.Sprint(db.Mysql.Port), UserName: db.Mysql.User, PassWord: db.Mysql.Password, DBName: db.Mysql.Database, MaxOpenConns: db.Mysql.PollSize, MaxIdleConns: db.Mysql.MaxIdle, } Mysql.Init() Base = &mysql.Mysql{ Address: db.BaseService.Host + ":" + fmt.Sprint(db.BaseService.Port), UserName: db.BaseService.User, PassWord: db.BaseService.Password, DBName: db.BaseService.Database, MaxOpenConns: db.BaseService.PollSize, MaxIdleConns: db.BaseService.MaxIdle, } Base.Init() 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) if *mode == 1 { //30分钟一次 a := cron.New() a.AddFunc(db.CornExp1, func() { orders() //未支付订单 messageSync() //聊天记录进线索 userbase() //新绑定手机号进线索 }) a.Start() //5分钟一次 b := cron.New() b.AddFunc(db.CornExp2, func() { users() //新注册用户进线索 saleLeads() //留资进线索 eventReg() //渠道 bigCustomer() //大客户线索 marketCustomer() //市场部线索 }) b.Start() //每天8点30 c := cron.New() c.AddFunc(db.CornExp3, func() { users() //新注册用户进线索 saleLeads() //留资进线索 }) c.Start() // 一天一次 // tagAllSync() d := cron.New() d.AddFunc(db.CornExp4, func() { tagAllSync() //用户标签 }) d.Start() // 5分钟一次 go ordersClue() //后台订单进线索 e := cron.New() e.AddFunc(db.CornExp5, func() { go everythingSync() //渠道 go ordersClue() //后台订单进线索 go kcSync() //移交客成 go kcAuto() //客成自动加入任务车 go tagAddSync() //用户标签增量 go autoExitSea() //自动退海 go Thaw() //自动解冻处理 }) e.Start() //5分钟一次 f := cron.New() f.AddFunc(db.CornExp6, func() { subscribeAddSync() //订阅增量 rderAcceptance() //工单生成 }) f.Start() //自动进入任务车 1天一次 g := cron.New() g.AddFunc(db.CornExp7, func() { readClue() //读取中间表进线索 refundAuto() //客成移交销售 autoTask() //超时未跟进加入任务车 autoTasks() //按照下次跟进时间提前一天加入任务车 }) g.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 { users() saleLeads() } }