package task import ( "github.com/robfig/cron/v3" "time" "applet/app/cfg" "applet/app/db" "applet/app/db/model" "applet/app/md" "applet/app/utils" "applet/app/utils/logx" "xorm.io/xorm" ) var ( timer *cron.Cron jobs = map[string]func(*xorm.Engine, string){} baseEntryId cron.EntryID entryIds []cron.EntryID taskCfgList map[string]*[]model.SysCfg ch = make(chan int, 50) workerNum = 50 // 智盟跟单并发数量 orderStatWorkerNum = 50 // 智盟跟单并发数量 tbagoworkerNum = 50 // 智盟跟单并发数量 tbsettleworkerNum = 50 // 智盟跟单并发数量 pddOrderWorkerNum = 50 // 拼多多跟单并发数量 orderSuccessWorkerNum = 50 // tbOrderWorkerNum = 50 // 淘宝跟单并发数量 jdOrderWorkerNum = 50 // 京东跟单并发数量 wphOrderWorkerNum = 50 // 唯品会跟单并发数量 cardWorkerNum = 20 // 权益卡并发数量 tbRelationWorkerNum = 50 // 淘宝并发数量 hw365WorkerNum = 50 // 海威并发数量 hw365TourismWorkerNum = 50 // 海威并发数量 tbpubWorkerNum = 50 // 海威并发数量 liveWorkerNum = 50 // 海威并发数量 tikTokOwnWorkerNum = 50 // 海威并发数量 cardUpdateWorkerNum = 50 // 海威并发数量 lifeWorkerNum = 50 //生活服务跟单 pddWorkerNum = 50 // oilWorkerNum = 50 // otherWorkerNum = 50 // 淘宝, 苏宁, 考拉并发量 jdWorkerNum = 50 // tikTokWorkerNum = 50 // teamGoodsWorkerNum = 50 jdCh = make(chan int, 50) jdWorkerNum1 = 50 // orderStatCh = make(chan int, 50) jdCh1 = make(chan int, 50) oilCh = make(chan int, 50) otherCh = make(chan int, 50) otherTourismCh = make(chan int, 50) liveOtherCh = make(chan int, 50) teamGoodsCh = make(chan int, 50) tikTokOwnOtherCh = make(chan int, 50) cardUpdateCh = make(chan int, 50) tbpubCh = make(chan int, 50) cardCh = make(chan int, 20) pddCh = make(chan int, 50) tikTokCh = make(chan int, 50) tbRefundCh = make(chan int, 50) tbagodCh = make(chan int, 50) tbsettleCh = make(chan int, 50) pddFailCh = make(chan int, 50) orderSuccessCh = make(chan int, 50) tbRelationCh = make(chan int, 50) ) func Init() { // 初始化任务列表 initTasks() var err error timer = cron.New() if baseEntryId, err = timer.AddFunc("@every 20m", reload); err != nil { _ = logx.Fatal(err) } } func Run() { reload() timer.Start() _ = logx.Info("auto tasks running...") } func reload() { // 重新初始化数据库 db.InitMapDbs(cfg.DB, cfg.Prd) if len(taskCfgList) == 0 { taskCfgList = map[string]*[]model.SysCfg{} } // 获取所有站长的配置信息 for dbName, v := range db.DBs { if conf := db.MapCrontabCfg(v); conf != nil { if cfg.Debug { dbInfo := md.SplitDbInfo(v) // 去掉模版库 if dbName == "000000" { continue } _ = logx.Debugf("【MasterId】%s, 【Host】%s, 【Name】%s, 【User】%s, 【prd】%v, 【Task】%v\n", dbName, dbInfo.Host, dbInfo.Name, dbInfo.User, cfg.Prd, utils.SerializeStr(*conf)) } taskCfgList[dbName] = conf } } if len(taskCfgList) > 0 { // 删除原有所有任务 if len(entryIds) > 0 { for _, v := range entryIds { if v != baseEntryId { timer.Remove(v) } } entryIds = nil } var ( entryId cron.EntryID err error ) // 添加任务 for dbName, v := range taskCfgList { for _, vv := range *v { if _, ok := jobs[vv.Key]; ok && vv.Val != "" { // fmt.Println(vv.Val) if entryId, err = timer.AddFunc(vv.Val, doTask(dbName, vv.Key)); err == nil { entryIds = append(entryIds, entryId) } } } } } } func doTask(dbName, fnName string) func() { return func() { begin := time.Now().Local() jobs[fnName](db.DBs[dbName], dbName) end := time.Now().Local() logx.Infof( "[%s] AutoTask <%s> started at <%s>, ended at <%s> duration <%s>", dbName, fnName, begin.Format("2006-01-02 15:04:05.000"), end.Format("2006-01-02 15:04:05.000"), time.Duration(end.UnixNano()-begin.UnixNano()).String(), ) } } // 增加自动任务队列 func initTasks() { //v2 //jobs[md.KEY_CFG_CRON_BUCKLE] = taskOrderBuckle // //jobs[md.KEY_CFG_CRON_CHECK_BUCKLE_ORDER] = taskCheckBuckleOrder // //jobs[md.KEY_CFG_CRON_USER_RELATE] = taskUserRelate // //v3 //jobs[md.KEY_CFG_CRON_TB12] = taskOrderTaobao12 //淘宝抓单 //jobs[md.KEY_CFG_CRON_TBBYAGOTIME] = taskAgoOrderTB //用于恢复个别时间丢单的 //jobs[md.KEY_CFG_CRON_TB_PUNISH_REFUND] = taskTbPunishOrderRefund //淘宝退款订单处理 //jobs[md.KEY_CFG_CRON_TBREFUND] = taskTbOrderRefund //淘宝退款订单处理 //jobs[md.KEY_CFG_CRON_PUBLISHER_RELATION] = taskTaobaoPublisherRelation //获取渠道信息 //jobs[md.KEY_CFG_CRON_PUBLISHER_RELATION_NEW] = taskTaobaoPublisherRelationNew //获取渠道信息 //jobs[md.KEY_CFG_CRON_TBSETTLEORDER] = taskOrderTaobaoSettleOrder //淘宝抓单结算订单 //v4 //jobs[md.KEY_CFG_CRON_PDD_SUCC] = taskOrderPddSucc //jobs[md.KEY_CFG_CRON_PDDBYSTATUS] = taskOrderPddStatus //jobs[md.KEY_CFG_CRON_PDDBYSTATUSSUCCESS] = taskOrderPddStatusSuccess //jobs[md.KEY_CFG_CRON_PDDBYSTATUSFAIL] = taskOrderPddStatusFail //jobs[md.KEY_CFG_CRON_PDDBYLOOPTIME] = taskLoopOrderPdd //拼多多创建时间循环当天 //jobs[md.KEY_CFG_CRON_PDDREFUND] = taskPddOrderRefund //拼多多退款订单处理 //jobs[md.KEY_CFG_CRON_PDDBYAGOTIME] = taskAgoOrderPdd //用于恢复个别时间丢单的 //jobs[md.KEY_CFG_CRON_PDDBYCREATETIME] = taskOrderPddByCreateTime //拼多多创建时间跟踪订单 //jobs[md.KEY_CFG_CRON_PDD] = taskOrderPdd //v5-guide-settle //jobs[md.KEY_CFG_CRON_SETTLE] = taskOrderSettle // 结算 //v5 //jobs[md.KEY_CFG_CRON_FREE_SETTLE] = taskOrderFreeSettle // 结算 //jobs[md.KEY_CFG_CRON_SECOND_FREE_SETTLE] = taskOrderSecondFreeSettle // 结算 //jobs[md.KEY_CFG_CRON_THIRD_FREE_SETTLE] = taskOrderMoreFreeSettle // 结算 //jobs[md.KEY_CFG_CRON_AGGREGATION_RECHARGE_SETTLE] = taskAggregationRechargeSettle // //jobs[md.KEY_CFG_CRON_PLAYLET_SETTLE] = taskAggregationPlaylet // //jobs[md.KEY_CFG_CRON_DUOYOUORD_SETTLE] = taskDuoYouSettle // //jobs[md.KEY_CFG_CRON_LIANLIAN_SETTLE] = taskLianlianSettle // //jobs[md.KEY_CFG_CRON_SWIPE_SETTLE] = taskSwipeSettle // //jobs[md.KEY_CFG_CRON_USER_LV_UP_SETTLE] = taskUserLvUpOrderSettle // 会员费订单结算 //jobs[md.KEY_CFG_CRON_PRIVILEGE_CARD_SETTLE] = taskPrivilegeCardOrderSettle // 权益卡订单结算 //jobs[md.KEY_CFG_CRON_ACQUISITION_CONDITION] = taskAcquisitionCondition //jobs[md.KEY_CFG_CRON_ACQUISITION_CONDITION_BY_LV] = taskAcquisitionConditionByLv //jobs[md.KEY_CFG_CRON_ACQUISITION_REWARD] = taskAcquisitionReward //jobs[md.KEY_CFG_CRON_NEW_ACQUISTION_SETTLE] = taskNewAcquisition // 拉新 //jobs[md.KEY_CFG_CRON_ACQUISTION_SETTLE] = taskAcquisition // 拉新 //jobs[md.KEY_CFG_VERIFY] = taskVerify //团长 //v7 //jobs[md.KEY_CFG_CRON_JD] = taskOrderJd //jobs[md.KEY_CFG_CRON_JDFAILBYCREATETIME] = taskOrderJDFailByCreateTime //拼多多创建时间跟踪订单 //jobs[md.KEY_CFG_CRON_JDBYCREATETIME] = taskOrderJDByCreateTime //拼多多创建时间跟踪订单 //jobs[md.KEY_CFG_CRON_JDBYSUCCESS] = taskOrderJDBySuccess //拼多多创建时间跟踪订单 //jobs[md.KEY_CFG_CRON_ORDER_SUCCESS_CHECK] = taskOrderSuccessCheck // //jobs[md.KEY_CFG_CRON_JDBYSTATUS] = taskOrderJdStatus //jobs[md.KEY_CFG_CRON_JDREFUND] = taskJdOrderRefund //京东退款订单处理 //v6 jobs[md.KEY_CFG_CRON_TIKTOKLIFE] = taskOrderTikTokLife //抖音本地生活 jobs[md.KEY_CFG_KUAISHOU_AUTH] = taskKuaishouAuth //团长 jobs[md.KEY_CFG_TIK_TOK_TEAM_ORDER_PAY] = taskTikTokTeamOrder //团长 jobs[md.KEY_CFG_TIK_TOK_TEAM_ORDER_UPDATE] = taskTikTokTeamOrderUpdate //团长 jobs[md.KEY_CFG_TIK_TOK_TEAM_USER_BIND_BUYINID] = taskTikTokTeamUserBindBuyinid //达人buyin_id jobs[md.KEY_CFG_KUAISHOU_TEAM_ORDER_PAY] = taskKuaishouTeamOrder //团长 jobs[md.KEY_CFG_KUAISHOU_TEAM_ORDER_UPDATE] = taskKuaishouTeamOrderUpdate //团长 jobs[md.KEY_CFG_CRON_AUTO_ADD_TIKTOK_GOODS] = taskAutoAddTikTokGoods // jobs[md.KEY_CFG_CRON_KuaishouOwn] = taskOrderKuaishouOwn // jobs[md.KEY_CFG_CRON_KuaishouOwnCreate] = taskOrderKuaishouOwnCreate // jobs[md.KEY_CFG_CRON_KUAISHOU] = taskOrderKuaishou // jobs[md.KEY_CFG_CRON_KUAISHOULIVE] = taskOrderKuaishouLive // jobs[md.KEY_CFG_CRON_TIKTOKCsjp] = taskOrderTIKTokCsjp // jobs[md.KEY_CFG_CRON_TIKTOKCsjpLive] = taskOrderTIKTokCsjpLive // jobs[md.KEY_CFG_CRON_TIKTOKOwnCsjp] = taskOrderTIKTokOwnCsjp // jobs[md.KEY_CFG_CRON_TIKTOKOwnCsjpLive] = taskOrderTIKTokOwnCsjpLive // jobs[md.KEY_CFG_CRON_TIKTOKOwnCsjpActivity] = taskOrderTIKTokOwnCsjpActivity // jobs[md.KEY_CFG_CRON_KUAISHOUOFFICIAL] = taskOrderKuaishouOfficial // jobs[md.KEY_CFG_CRON_KUAISHOUOFFICIALLive] = taskOrderKuaishouOfficialLive // //v8 //jobs[md.KEY_CFG_CRON_MEITUANLM_START] = taskOrderMeituanLmStart //智盟返回的美团联盟 //jobs[md.KEY_CFG_CRON_MEITUAN_START] = taskOrderMeituanStart //智盟返回的美团联盟 //jobs[md.KEY_CFG_CRON_MEITUAN] = taskOrderMeituan //jobs[md.KEY_CFG_CRON_MEITUANLM] = taskOrderMeituanLm //智盟返回的美团联盟 //jobs[md.KEY_CFG_CRON_STATIONMEITUANLM] = taskOrderStationMeituanLm //站长自己美团联盟 //jobs[md.KEY_CFG_CRON_MEITUANOFFICIAL] = taskOrderMeituanOfficial //站长自己美团联盟 //v9 //jobs[md.KEY_CFG_CRON_ELM] = taskOrderElm // //jobs[md.KEY_CFG_CRON_HEYTEA] = taskOrderHeytea //海威365喜茶 //jobs[md.KEY_CFG_CRON_PIZZA] = taskOrderPizza //海威365 //jobs[md.KEY_CFG_CRON_WALLACE] = taskOrderWallace //海威365 //jobs[md.KEY_CFG_CRON_TOURISM] = taskOrderTourism //海威365 //jobs[md.KEY_CFG_CRON_FLOWERCAKE] = taskOrderFlowerCake //海威365 //jobs[md.KEY_CFG_CRON_DELIVERY] = taskOrderDelivery //海威365 //jobs[md.KEY_CFG_CRON_BURGERKING] = taskOrderBurgerKing //海威365汉堡王 //jobs[md.KEY_CFG_CRON_STARBUCKS] = taskOrderStarbucks //海威365星巴克 //jobs[md.KEY_CFG_CRON_MCDONALD] = taskOrderMcdonald //海威365麦当劳 //jobs[md.KEY_CFG_CRON_HWMOVIE] = taskOrderHwMovie //海威365电影票 //jobs[md.KEY_CFG_CRON_NAYUKI] = taskOrderNayuki //海威365奈雪 //jobs[md.KEY_CFG_CRON_TO_KFC] = taskOrderToKfc //海威365 //jobs[md.KEY_CFG_CRON_PAGODA] = taskOrderPagoda //海威365 //jobs[md.KEY_CFG_CRON_LUCKIN] = taskOrderLuckin //海威365 //v10 ////jobs[md.KEY_CFG_CRON_WPHREFUND] = taskWphOrderRefund //唯品会退款订单处理 ////jobs[md.KEY_CFG_CRON_VIP] = taskOrderVip //jobs[md.KEY_CFG_CRON_KFC] = taskOrderKfc //jobs[md.KEY_CFG_CRON_CINEMA] = taskOrderCinema //jobs[md.KEY_CFG_CRON_DUOMAI] = taskOrderDuomai //多麦跟单 //jobs[md.KEY_CFG_CRON_PLAYLET_ORDER] = taskPlayletOrder //jobs[md.KEY_CFG_CRON_DIDI_ENERGY] = taskOrderDidiEnergy //滴滴加油 //jobs[md.KEY_CFG_CRON_T3_CAR] = taskOrderT3Car //T3打车 //jobs[md.KEY_CFG_CRON_DIDI_ONLINE_CAR] = taskOrderDidiOnlineCar //滴滴网约车 //jobs[md.KEY_CFG_CRON_KING_FLOWER] = taskOrderKingFlower //滴滴网约车 //jobs[md.KEY_CFG_CRON_DIDI_FREIGHT] = taskOrderDidiFreight //滴滴货运 //jobs[md.KEY_CFG_CRON_DIDI_CHAUFFEUR] = taskOrderDidiChauffeur //滴滴代驾 //jobs[md.KEY_CFG_CRON_OILSTATION] = taskOrderOilstation //jobs[md.KEY_CFG_CRON_BRIGHTOILSTATION] = taskOrderBrightOilstation //jobs[md.KEY_CFG_CRON_SN] = taskOrderSuning //jobs[md.KEY_CFG_CRON_KL] = taskOrderKaola ////原来的 //jobs[md.KEY_CFG_CRON_PlayLet_Total] = taskPlayletTotal // //jobs[md.KEY_CFG_CRON_CHECK_GUIDE_STORE_ORDER] = taskCheckGuideStoreOrder // //jobs[md.KEY_CFG_CRON_FAST_REFUND] = taskOrderFastRefund // //jobs[md.KEY_CFG_CRON_FAST_SUCCESS] = taskOrderFastSuccess // //jobs[md.KEY_CFG_CRON_DUOYOUORD] = taskOrderDuoYouOrd // //jobs[md.KEY_CFG_CRON_TASKBOX] = taskOrderTaskBoxOrd // //jobs[md.KEY_CFG_CRON_TASKBOXSECOND] = taskOrderTaskSecondOrd // //jobs[md.KEY_CFG_CRON_CARD_CHECK_UPDATE] = taskCardCheckUpdate //权益卡退款 //jobs[md.KEY_CFG_CRON_CARD_UPDATE] = taskCardUpdate // 权益卡更新 //jobs[md.KEY_CFG_CRON_ORDER_STAT] = taskOrderStat // 订单统计 //jobs[md.KEY_CFG_CRON_GOODS_SHELF] = taskGoodsShelf //站内商品上下架 //jobs[md.KEY_CFG_CRON_CARD_RETURN] = taskCardReturn //权益卡退款 //jobs[md.KEY_CFG_CRON_DTKBRAND] = taskTaoKeBrandInfo // 大淘客品牌信息 //jobs[md.KEY_CFG_CRON_PUBLISHER] = taskTaobaoPublisherInfo // 淘宝备案信息绑定 //jobs[md.KEY_CFG_CRON_AUTO_UN_FREEZE] = taskAutoUnFreeze // 定时解冻 //先不用 //jobs[md.ZhimengCronPlayletVideoOrder] = taskPlayletVideoOrder // //jobs[md.ZhimengCronPlayletVideoOrderYesterDay] = taskPlayletVideoOrderYesterday // //jobs[md.ZhimengCronPlayletVideoOrderMonth] = taskPlayletVideoOrderMonth // //jobs[md.ZhimengCronPlayletAdvOrderMonth] = taskPlayletAdvOrderMonth // //jobs[md.ZhimengCronPlayletAdvOrder] = taskPlayletAdvOrder // //jobs[md.ZhimengCronPlayletAdvOrderYesterDay] = taskPlayletAdvOrderYesterday // //jobs[md.ZhimengCronPlayletAdvOrderYesterDayToMoney] = taskPlayletAdvOrderYesterdayToMoney // }