爆品预警测试

This commit is contained in:
苏尹岚
2020-01-20 17:24:48 +08:00
parent 7efc93847d
commit a0fe44d600

View File

@@ -3356,31 +3356,24 @@ func SendSeckillSkusCountMsg(ctx *jxcontext.Context, vendorIDs []int, isAsync, i
type2Count = 5 type2Count = 5
) )
db := dao.GetDB() db := dao.GetDB()
storeList, err := dao.GetStoreList(db, nil, nil, []int{model.StoreStatusOpened, model.StoreStatusClosed, model.StoreStatusHaveRest}, nil, "") storeList, err := dao.GetStoresMapList(db, vendorIDs, nil, model.StoreStatusOpened, model.StoreIsSyncAll, "")
task := tasksch.NewParallelTask("SendSeckillSkusCountMsg", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, // 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) { func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
store := batchItemList[0].(*model.Store) store := batchItemList[0].(*model.StoreMap)
for _, vendorID := range vendorIDs {
storeDetial, _ := dao.GetStoreDetail(db, store.ID, vendorID)
if storeDetial == nil {
continue
}
var type1, type2 int var type1, type2 int
switch vendorID { switch store.VendorID {
case model.VendorIDEBAI: case model.VendorIDEBAI:
result, err := api.EbaiAPI.GetStoresShowWindowSkus(utils.Str2Int64(storeDetial.VendorStoreID)) result, _ := api.EbaiAPI.GetStoresShowWindowSkus(utils.Str2Int64(store.VendorStoreID))
if err != nil { for _, v := range result {
return retVal, err
}
for _, v := range result.SkuList {
type1++ type1++
if v.SalePrice < 1 { if v.SalePrice < 1 {
type2++ type2++
} }
} }
case model.VendorIDMTWM: case model.VendorIDMTWM:
handler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.ISingleStoreStoreSkuHandler) handler := partner.GetPurchasePlatformFromVendorID(store.VendorID).(partner.ISingleStoreStoreSkuHandler)
remoteSkuList, err := handler.GetStoreSkusFullInfo(ctx, nil, store.ID, storeDetial.VendorStoreID, nil) remoteSkuList, err := handler.GetStoreSkusFullInfo(ctx, nil, store.StoreID, store.VendorStoreID, nil)
if err != nil { if err != nil {
return retVal, err return retVal, err
} }
@@ -3395,7 +3388,7 @@ func SendSeckillSkusCountMsg(ctx *jxcontext.Context, vendorIDs []int, isAsync, i
} }
} }
case model.VendorIDJD: case model.VendorIDJD:
var storeSecKill = &tStoreSkusSecKill{} var storeSecKill []*tStoreSkusSecKill
sql := ` sql := `
SELECT t1.store_id,count(*) sec_kill_count, count(t1.price < 100 or NULL) sec_kill_count2 SELECT t1.store_id,count(*) sec_kill_count, count(t1.price < 100 or NULL) sec_kill_count2
FROM( FROM(
@@ -3415,59 +3408,59 @@ func SendSeckillSkusCountMsg(ctx *jxcontext.Context, vendorIDs []int, isAsync, i
GROUP BY 1 GROUP BY 1
` `
sqlParams := []interface{}{ sqlParams := []interface{}{
store.ID, vendorID, store.StoreID, store.VendorID,
model.ActSkuSecKill, model.StoreSkuBindStatusNormal, model.ActSkuSecKill, model.StoreSkuBindStatusNormal,
utils.DefaultTimeValue, utils.DefaultTimeValue,
} }
err = dao.GetRow(db, &storeSecKill, sql, sqlParams...) err = dao.GetRows(db, &storeSecKill, sql, sqlParams...)
type1 = storeSecKill.SecKillCount if len(storeSecKill) > 0 {
type2 = storeSecKill.SecKillCount2 type1 = storeSecKill[0].SecKillCount
type2 = storeSecKill[0].SecKillCount2
} else {
type1 = 0
type2 = 0
}
} }
if type1 < type1Count || type2 < type2Count { if type1 < type1Count || type2 < type2Count {
fmt.Println(type1, type2, store.ID, vendorID) storeDetail, _ := dao.GetStoreDetail(db, store.StoreID, store.VendorID)
err = sendDDMsgBySpecSkusCount(db, type1, type2, storeDetial, 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 return retVal, err
}, storeList) }, storeList)
tasksch.HandleTask(task, nil, true).Run() tasksch.HandleTask(pTask, nil, true).Run()
if !isAsync { if !isAsync {
_, err = task.GetResult(0) _, err = pTask.GetResult(0)
} else { } else {
hint = task.GetID() hint = pTask.GetID()
} }
return hint, err 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
}