diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 854300772..0b7a3b233 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -839,20 +839,25 @@ 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 num int64 - db := dao.GetDB() - skuIDs, err := updateStoresSkusWithoutSync(ctx, db, storeIDs, skuBindInfos, isScale) - if err != nil { - return "", err + var flag = false + if ctx.GetLoginType() == weixin.AuthTypeMP || ctx.GetLoginType() == weixin.AuthTypeMini { + flag, err = doStoreSkuAudit(ctx, storeIDs, skuBindInfos) } - isAsync = asyncStoreSkuOpFilter(ctx, isAsync) - num = int64(len(skuIDs)) - if num > 0 { - hint, err = CurVendorSync.SyncStoresSkus(ctx, nil, causeFlag, db, nil, storeIDs, skuIDs, false, isAsync, isContinueWhenError) - } - if num == 0 || !isAsync || hint == "" { - hint = utils.Int64ToStr(num) + if !flag { + var num int64 + db := dao.GetDB() + skuIDs, err := updateStoresSkusWithoutSync(ctx, db, storeIDs, skuBindInfos, isScale) + if err != nil { + return "", err + } + isAsync = asyncStoreSkuOpFilter(ctx, isAsync) + num = int64(len(skuIDs)) + if num > 0 { + hint, err = CurVendorSync.SyncStoresSkus(ctx, nil, causeFlag, db, nil, storeIDs, skuIDs, false, isAsync, isContinueWhenError) + } + if num == 0 || !isAsync || hint == "" { + hint = utils.Int64ToStr(num) + } } return hint, err } @@ -978,9 +983,7 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs // if err = checkStoresSkusSaleCity(ctx, db, storeIDs, skuBindInfos); err != nil { // return nil, err // } - // if storeIDs, skuBindInfos, err = filterStorePriceChange(ctx, 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 { @@ -4449,3 +4452,52 @@ func GetStoreSkuAudit(ctx *jxcontext.Context, storeIDs, nameIDs, skuIDs []int, s pagedInfo, err = dao.GetStoreSkuAudit(dao.GetDB(), storeIDs, nameIDs, skuIDs, status, name, remark, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd, pageSize, offset) return pagedInfo, err } + +func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*StoreSkuBindInfo) (isAudit bool, err error) { + globals.SugarLogger.Debugf("doStoreSkuAudit storeIDs: %v", storeIDs) + db := dao.GetDB() + for _, storeID := range storeIDs { + for _, skuBindInfo := range skuBindInfos { + 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 { + 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 + if len(storeSkus) > 0 { + if skuBindInfo.UnitPrice <= int(storeSkus[0].UnitPrice) { + globals.SugarLogger.Debugf("doStoreSkuAudit return2 storeID : %v nameID: %v", storeID, skuBindInfo.NameID) + return false, err + } + storeSkuAudit.OriginUnitPrice = int(storeSkus[0].UnitPrice) + } + 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 +} diff --git a/business/model/store.go b/business/model/store.go index 647cc86d4..de13f468f 100644 --- a/business/model/store.go +++ b/business/model/store.go @@ -25,6 +25,10 @@ const ( StoreAuditStatusAll = -9 ) +const ( + StoreSkuAuditTypePrice = 1 //改价 +) + const ( MainSubStoreName = "本店" MainSubStoreAddress = "本店"