From a0fe44d600f6d1c007c097d2a75892d7a1b7483b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 20 Jan 2020 17:24:48 +0800 Subject: [PATCH] =?UTF-8?q?=E7=88=86=E5=93=81=E9=A2=84=E8=AD=A6=E6=B5=8B?= =?UTF-8?q?=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 159 ++++++++++++++---------------- 1 file changed, 76 insertions(+), 83 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index b6ed64c13..bc55062a3 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -3356,47 +3356,40 @@ func SendSeckillSkusCountMsg(ctx *jxcontext.Context, vendorIDs []int, isAsync, i type2Count = 5 ) db := dao.GetDB() - storeList, err := dao.GetStoreList(db, nil, nil, []int{model.StoreStatusOpened, model.StoreStatusClosed, model.StoreStatusHaveRest}, nil, "") - task := tasksch.NewParallelTask("SendSeckillSkusCountMsg", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, + storeList, err := dao.GetStoresMapList(db, vendorIDs, nil, model.StoreStatusOpened, model.StoreIsSyncAll, "") + // storeList, err := dao.GetStoreList(db, nil, nil, []int{model.StoreStatusOpened, model.StoreStatusClosed, model.StoreStatusHaveRest}, nil, "") + pTask := tasksch.NewParallelTask("SendSeckillSkusCountMsg", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { - store := batchItemList[0].(*model.Store) - for _, vendorID := range vendorIDs { - storeDetial, _ := dao.GetStoreDetail(db, store.ID, vendorID) - if storeDetial == nil { - continue - } - var type1, type2 int - switch vendorID { - case model.VendorIDEBAI: - result, err := api.EbaiAPI.GetStoresShowWindowSkus(utils.Str2Int64(storeDetial.VendorStoreID)) - if err != nil { - return retVal, err + store := batchItemList[0].(*model.StoreMap) + var type1, type2 int + switch store.VendorID { + case model.VendorIDEBAI: + result, _ := api.EbaiAPI.GetStoresShowWindowSkus(utils.Str2Int64(store.VendorStoreID)) + for _, v := range result { + type1++ + if v.SalePrice < 1 { + type2++ } - for _, v := range result.SkuList { - type1++ - if v.SalePrice < 1 { + } + case model.VendorIDMTWM: + handler := partner.GetPurchasePlatformFromVendorID(store.VendorID).(partner.ISingleStoreStoreSkuHandler) + remoteSkuList, err := handler.GetStoreSkusFullInfo(ctx, nil, store.StoreID, store.VendorStoreID, nil) + if err != nil { + return retVal, err + } + for _, v := range remoteSkuList { + for _, vv := range v.SkuList { + if vv.IsSpecialty == 1 { + type1++ + } + if vv.IsSpecialty == 1 && vv.VendorPrice < 100 { type2++ } } - case model.VendorIDMTWM: - handler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.ISingleStoreStoreSkuHandler) - remoteSkuList, err := handler.GetStoreSkusFullInfo(ctx, nil, store.ID, storeDetial.VendorStoreID, nil) - if err != nil { - return retVal, err - } - for _, v := range remoteSkuList { - for _, vv := range v.SkuList { - if vv.IsSpecialty == 1 { - type1++ - } - if vv.IsSpecialty == 1 && vv.VendorPrice < 100 { - type2++ - } - } - } - case model.VendorIDJD: - var storeSecKill = &tStoreSkusSecKill{} - sql := ` + } + case model.VendorIDJD: + var storeSecKill []*tStoreSkusSecKill + sql := ` SELECT t1.store_id,count(*) sec_kill_count, count(t1.price < 100 or NULL) sec_kill_count2 FROM( SELECT a.store_id, a.sku_id, d.type, MIN(b.act_price) price @@ -3414,60 +3407,60 @@ func SendSeckillSkusCountMsg(ctx *jxcontext.Context, vendorIDs []int, isAsync, i GROUP BY 1,2,3)t1 GROUP BY 1 ` - sqlParams := []interface{}{ - store.ID, vendorID, - model.ActSkuSecKill, model.StoreSkuBindStatusNormal, - utils.DefaultTimeValue, - } - err = dao.GetRow(db, &storeSecKill, sql, sqlParams...) - type1 = storeSecKill.SecKillCount - type2 = storeSecKill.SecKillCount2 + sqlParams := []interface{}{ + store.StoreID, store.VendorID, + model.ActSkuSecKill, model.StoreSkuBindStatusNormal, + utils.DefaultTimeValue, } - if type1 < type1Count || type2 < type2Count { - fmt.Println(type1, type2, store.ID, vendorID) - err = sendDDMsgBySpecSkusCount(db, type1, type2, storeDetial, vendorID) + err = dao.GetRows(db, &storeSecKill, sql, sqlParams...) + if len(storeSecKill) > 0 { + type1 = storeSecKill[0].SecKillCount + type2 = storeSecKill[0].SecKillCount2 + } else { + type1 = 0 + type2 = 0 + } + } + if type1 < type1Count || type2 < type2Count { + storeDetail, _ := dao.GetStoreDetail(db, store.StoreID, store.VendorID) + fmt.Println(type1, type2, storeDetail) + var ( + operatorName string + operatorPhone string + type1Str = "爆品数量低于8个!" + type2Str = "爆品价格小于1元的爆品数量低于5个!" + typeResult = "" + ) + if storeDetail.OperatorPhone != "" { + operatorName = storeDetail.OperatorName + operatorPhone = storeDetail.OperatorPhone + } else if storeDetail.OperatorPhone2 != "" { + operatorName = storeDetail.OperatorName2 + operatorPhone = storeDetail.OperatorPhone2 + } + if type1 < type1Count { + typeResult += type1Str + } + if type2 < type2Count { + typeResult += type2Str + } + noticeMsg := fmt.Sprintf("运营负责人:[%v],市场负责人:[%v],门店ID:[%v],平台门店ID[%v],门店名:[%v],平台:[%v],警告类型:[%v]", operatorName, storeDetail.MarketManName, store.StoreID, storeDetail.VendorStoreID, store.StoreName, model.VendorChineseNames[store.VendorID], typeResult) + user, err := dao.GetUserByID(db, "mobile", operatorPhone) + if user != nil && err == nil { + ddmsg.SendUserMessage(dingdingapi.MsgTyeText, user.UserID, "警告!门店爆品数量异常!", noticeMsg) + } + user2, err := dao.GetUserByID(db, "mobile", storeDetail.MarketManPhone) + if err == nil && user2 != nil { + ddmsg.SendUserMessage(dingdingapi.MsgTyeText, user2.UserID, "警告!门店爆品数量异常!", noticeMsg) } } return retVal, err }, storeList) - tasksch.HandleTask(task, nil, true).Run() + tasksch.HandleTask(pTask, nil, true).Run() if !isAsync { - _, err = task.GetResult(0) + _, err = pTask.GetResult(0) } else { - hint = task.GetID() + hint = pTask.GetID() } return hint, err } - -func sendDDMsgBySpecSkusCount(db *dao.DaoDB, type1Count, type2Count int, store *dao.StoreDetail, vendorID int) (err error) { - var ( - operatorName string - operatorPhone string - type1 = "爆品数量低于8个!" - type2 = "爆品价格小于1元的爆品数量低于5个!" - typeResult = "" - ) - if store.OperatorPhone != "" { - operatorName = store.OperatorName - operatorPhone = store.OperatorPhone - } else if store.OperatorPhone2 != "" { - operatorName = store.OperatorName2 - operatorPhone = store.OperatorPhone2 - } - if type1Count < 8 { - typeResult += type1 - } - if type2Count < 5 { - typeResult += type2 - } - noticeMsg := fmt.Sprintf("运营负责人:[%v],门店ID:[%v],平台门店ID[%v],门店名:[%v],平台:[%v],警告类型:[%v]", operatorName, store.ID, store.VendorStoreID, store.Name, model.VendorChineseNames[vendorID], typeResult) - user, err := dao.GetUserByID(db, "mobile", operatorPhone) - if store.MarketManPhone != "" { - user2, err := dao.GetUserByID(db, "mobile", store.MarketManPhone) - if err != nil { - ddmsg.SendUserMessage(dingdingapi.MsgTyeText, user2.UserID, "警告!门店爆品数量异常!", noticeMsg) - } - } - ddmsg.SendUserMessage(dingdingapi.MsgTyeText, user.UserID, "警告!门店爆品数量异常!", noticeMsg) - return err -}