价格审核测试

This commit is contained in:
苏尹岚
2020-05-28 15:33:05 +08:00
parent 81ad63ea4f
commit b77bd3444c
2 changed files with 98 additions and 28 deletions

View File

@@ -839,10 +839,7 @@ func UpdateStoreSkus(ctx *jxcontext.Context, causeFlag, storeID int, skuBindInfo
func UpdateStoresSkus(ctx *jxcontext.Context, causeFlag int, storeIDs []int, skuBindInfos []*StoreSkuBindInfo, isScale, isAsync, isContinueWhenError bool) (hint string, err error) {
globals.SugarLogger.Debugf("UpdateStoresSkus:%s, storeIDs:%v, skuBindInfos:%s", ctx.GetTrackInfo(), storeIDs, utils.Format4Output(skuBindInfos, true))
var flag = false
if ctx.GetLoginType() == weixin.AuthTypeMP || ctx.GetLoginType() == weixin.AuthTypeMini {
flag, err = doStoreSkuAudit(ctx, storeIDs, skuBindInfos)
}
flag, err := doStoreSkuAudit(ctx, storeIDs, skuBindInfos)
if !flag {
var num int64
db := dao.GetDB()
@@ -983,7 +980,6 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs
// if err = checkStoresSkusSaleCity(ctx, db, storeIDs, skuBindInfos); err != nil {
// return nil, err
// }
filterStoreSkuAudit(ctx, storeIDs, skuBindInfos)
// globals.SugarLogger.Debugf("updateStoresSkusWithoutSync2, storeIDs:%v, skuBindInfos:%s", storeIDs, utils.Format4Output(skuBindInfos, false))
isUserCanDirectChangePrice := true
if user := ctx.GetFullUser(); user != nil {
@@ -4458,46 +4454,97 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto
db := dao.GetDB()
for _, storeID := range storeIDs {
for _, skuBindInfo := range skuBindInfos {
storeAudits, err := dao.GetStoreSkuAuditLight(db, []int{storeID}, []int{skuBindInfo.NameID}, model.StoreAuditStatusOnline)
//关注,可售排除
if skuBindInfo.IsFocus != 0 || skuBindInfo.IsSale != 0 || skuBindInfo.UnitPrice == 0 {
globals.SugarLogger.Debugf("doStoreSkuAudit return1 storeID : %v nameID: %v", storeID, skuBindInfo.NameID)
return false, err
}
//运营排除
if (ctx.GetFullUser().Type & model.UserTypeOperator) != 0 {
if len(storeAudits) > 0 {
dao.DeleteEntityLogically(db, storeAudits[0], nil, ctx.GetUserName(), nil)
}
globals.SugarLogger.Debugf("doStoreSkuAudit return2 storeID : %v nameID: %v", storeID, skuBindInfo.NameID)
return false, err
}
if ctx.GetLoginType() != weixin.AuthTypeMP && ctx.GetLoginType() != weixin.AuthTypeMini {
globals.SugarLogger.Debugf("doStoreSkuAudit return3 storeID : %v nameID: %v", storeID, skuBindInfo.NameID)
return false, err
}
dao.Begin(db)
defer dao.Rollback(db)
storeSkuAudit := model.StoreSkuAudit{
StoreID: storeID,
Type: model.StoreSkuAuditTypePrice,
NameID: skuBindInfo.NameID,
Status: model.StoreAuditStatusOnline,
UserID: ctx.GetUserID(),
UnitPrice: skuBindInfo.UnitPrice,
}
dao.WrapAddIDCULEntity(storeSkuAudit, ctx.GetUserName())
storeSkus, err2 := dao.GetStoreSkusByNameIDs(db, []int{storeID}, skuBindInfo.NameID)
err = err2
//如果改的价比原价低排除
storeSkus, err := dao.GetStoreSkusByNameIDs(db, []int{storeID}, skuBindInfo.NameID)
if len(storeSkus) > 0 {
if skuBindInfo.UnitPrice <= int(storeSkus[0].UnitPrice) {
globals.SugarLogger.Debugf("doStoreSkuAudit return2 storeID : %v nameID: %v", storeID, skuBindInfo.NameID)
if len(storeAudits) > 0 {
dao.DeleteEntityLogically(db, storeAudits[0], nil, ctx.GetUserName(), nil)
}
globals.SugarLogger.Debugf("doStoreSkuAudit return4 storeID : %v nameID: %v", storeID, skuBindInfo.NameID)
return false, err
} else {
if len(storeAudits) > 0 {
dao.DeleteEntityLogically(db, storeAudits[0], nil, ctx.GetUserName(), nil)
}
}
storeSkuAudit.OriginUnitPrice = int(storeSkus[0].UnitPrice)
} else {
return false, fmt.Errorf("未查询到该门店商品价storeID: %v, nameID: %V", storeID, skuBindInfo.NameID)
}
storeSkuAudit := model.StoreSkuAudit{
StoreID: storeID,
Type: model.StoreSkuAuditTypePrice,
NameID: skuBindInfo.NameID,
Status: model.StoreAuditStatusOnline,
UnitPrice: skuBindInfo.UnitPrice,
OriginUnitPrice: int(storeSkus[0].UnitPrice),
}
dao.WrapAddIDCULEntity(storeSkuAudit, ctx.GetUserName())
err = dao.CreateEntity(db, storeSkuAudit)
}
dao.Commit(db)
}
return isAudit, err
}
func filterStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*StoreSkuBindInfo) (err error) {
return err
}
func StoreSkuPriceAudit(ctx *jxcontext.Context) (err error) {
return err
func StoreSkuPriceAudit(ctx *jxcontext.Context, storeIDs, nameIDs []int, status int, isAsync, isContinueWhenError bool) (hint string, err error) {
db := dao.GetDB()
if status == model.StoreAuditStatusOnline {
return "", fmt.Errorf("审核标志不正确!")
}
task := tasksch.NewParallelTask("StoreSkuPriceAudit", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError), ctx,
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
storeID := batchItemList[0].(int)
for _, v := range nameIDs {
storeAudits, err := dao.GetStoreSkuAuditLight(db, []int{storeID}, []int{v}, model.StoreAuditStatusOnline)
if len(storeAudits) == 0 || err != nil {
return retVal, fmt.Errorf("未查询到该门店该商品的待审核信息storeID: %v, nameID: %v", storeID, v)
}
//审核通过
if status == model.StoreAuditStatusCreated {
storeAudits[0].UserID = ctx.GetUserID()
storeAudits[0].Status = model.StoreAuditStatusCreated
_, err = dao.UpdateEntity(db, storeAudits[0], "UserID", "Status")
var skuBindInfos = []*StoreSkuBindInfo{
&StoreSkuBindInfo{
NameID: v,
UnitPrice: storeAudits[0].UnitPrice,
},
}
_, err = UpdateStoresSkus(ctx, 0, []int{storeID}, skuBindInfos, false, false, true)
} else if status == model.StoreAuditStatusRejected {
storeAudits[0].UserID = ctx.GetUserID()
storeAudits[0].Status = model.StoreAuditStatusRejected
_, err = dao.UpdateEntity(db, storeAudits[0], "UserID", "Status")
} else {
return retVal, fmt.Errorf("审核标志不正确!")
}
}
return retVal, err
}, storeIDs)
tasksch.HandleTask(task, nil, true).Run()
if isAsync {
hint = task.GetID()
} else {
_, err = task.GetResult(0)
hint = "1"
}
return hint, err
}

View File

@@ -1585,3 +1585,26 @@ func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs []int, status int, na
}
return pagedInfo, err
}
func GetStoreSkuAuditLight(db *DaoDB, storeIDs, nameIDs []int, status int) (storeSkuAudit []*model.StoreSkuAudit, err error) {
sql := `
SELECT a.*
FROM store_sku_audit a
WHERE a.deleted_at = ?
`
sqlParams := []interface{}{utils.DefaultTimeValue}
if len(storeIDs) > 0 {
sql += " AND a.store_id IN (" + GenQuestionMarks(len(storeIDs)) + ")"
sqlParams = append(sqlParams, storeIDs)
}
if len(nameIDs) > 0 {
sql += " AND a.name_id IN (" + GenQuestionMarks(len(nameIDs)) + ")"
sqlParams = append(sqlParams, nameIDs)
}
if status != model.StoreAuditStatusAll {
sql += " AND a.status = ? "
sqlParams = append(sqlParams, status)
}
err = GetRows(db, &storeSkuAudit, sql, sqlParams...)
return storeSkuAudit, err
}