价格审核测试
This commit is contained in:
@@ -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) {
|
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))
|
globals.SugarLogger.Debugf("UpdateStoresSkus:%s, storeIDs:%v, skuBindInfos:%s", ctx.GetTrackInfo(), storeIDs, utils.Format4Output(skuBindInfos, true))
|
||||||
var flag = false
|
flag, err := doStoreSkuAudit(ctx, storeIDs, skuBindInfos)
|
||||||
if ctx.GetLoginType() == weixin.AuthTypeMP || ctx.GetLoginType() == weixin.AuthTypeMini {
|
|
||||||
flag, err = doStoreSkuAudit(ctx, storeIDs, skuBindInfos)
|
|
||||||
}
|
|
||||||
if !flag {
|
if !flag {
|
||||||
var num int64
|
var num int64
|
||||||
db := dao.GetDB()
|
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 {
|
// if err = checkStoresSkusSaleCity(ctx, db, storeIDs, skuBindInfos); err != nil {
|
||||||
// return nil, err
|
// return nil, err
|
||||||
// }
|
// }
|
||||||
filterStoreSkuAudit(ctx, storeIDs, skuBindInfos)
|
|
||||||
// globals.SugarLogger.Debugf("updateStoresSkusWithoutSync2, storeIDs:%v, skuBindInfos:%s", storeIDs, utils.Format4Output(skuBindInfos, false))
|
// globals.SugarLogger.Debugf("updateStoresSkusWithoutSync2, storeIDs:%v, skuBindInfos:%s", storeIDs, utils.Format4Output(skuBindInfos, false))
|
||||||
isUserCanDirectChangePrice := true
|
isUserCanDirectChangePrice := true
|
||||||
if user := ctx.GetFullUser(); user != nil {
|
if user := ctx.GetFullUser(); user != nil {
|
||||||
@@ -4458,46 +4454,97 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto
|
|||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
for _, storeID := range storeIDs {
|
for _, storeID := range storeIDs {
|
||||||
for _, skuBindInfo := range skuBindInfos {
|
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 {
|
if skuBindInfo.IsFocus != 0 || skuBindInfo.IsSale != 0 || skuBindInfo.UnitPrice == 0 {
|
||||||
globals.SugarLogger.Debugf("doStoreSkuAudit return1 storeID : %v nameID: %v", storeID, skuBindInfo.NameID)
|
globals.SugarLogger.Debugf("doStoreSkuAudit return1 storeID : %v nameID: %v", storeID, skuBindInfo.NameID)
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
|
//运营排除
|
||||||
if (ctx.GetFullUser().Type & model.UserTypeOperator) != 0 {
|
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)
|
globals.SugarLogger.Debugf("doStoreSkuAudit return3 storeID : %v nameID: %v", storeID, skuBindInfo.NameID)
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
dao.Begin(db)
|
//如果改的价比原价低排除
|
||||||
defer dao.Rollback(db)
|
storeSkus, err := dao.GetStoreSkusByNameIDs(db, []int{storeID}, skuBindInfo.NameID)
|
||||||
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
|
|
||||||
if len(storeSkus) > 0 {
|
if len(storeSkus) > 0 {
|
||||||
if skuBindInfo.UnitPrice <= int(storeSkus[0].UnitPrice) {
|
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
|
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)
|
err = dao.CreateEntity(db, storeSkuAudit)
|
||||||
}
|
}
|
||||||
dao.Commit(db)
|
|
||||||
}
|
}
|
||||||
return isAudit, err
|
return isAudit, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func filterStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*StoreSkuBindInfo) (err error) {
|
func StoreSkuPriceAudit(ctx *jxcontext.Context, storeIDs, nameIDs []int, status int, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||||
|
db := dao.GetDB()
|
||||||
return err
|
if status == model.StoreAuditStatusOnline {
|
||||||
}
|
return "", fmt.Errorf("审核标志不正确!")
|
||||||
|
}
|
||||||
func StoreSkuPriceAudit(ctx *jxcontext.Context) (err error) {
|
task := tasksch.NewParallelTask("StoreSkuPriceAudit", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError), ctx,
|
||||||
return err
|
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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1585,3 +1585,26 @@ func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs []int, status int, na
|
|||||||
}
|
}
|
||||||
return pagedInfo, err
|
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
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user