爆品预警测试
This commit is contained in:
@@ -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
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user