|
- 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 //
-
- }
|