Merge remote-tracking branch 'origin/mark' into su

This commit is contained in:
苏尹岚
2019-11-01 15:31:58 +08:00
8 changed files with 42 additions and 15 deletions

View File

@@ -131,6 +131,8 @@ type tStoreSkuBindAndSpec struct {
SkuNamePrice int
SkuNameUnit string
RealSkuID int `orm:"column(real_sku_id)"`
ChangePriceType int8 `json:"changePriceType"` // 修改价格类型,即是否需要审核
}
type SkuSaleInfo struct {
@@ -907,6 +909,10 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs
// return nil, err
// }
// globals.SugarLogger.Debugf("updateStoresSkusWithoutSync2, storeIDs:%v, skuBindInfos:%s", storeIDs, utils.Format4Output(skuBindInfos, false))
isUserCanDirectChangePrice := true
if user := ctx.GetFullUser(); user != nil {
isUserCanDirectChangePrice = user.Type&model.UserTypeOperator != 0
}
userName := ctx.GetUserName()
needSyncIDMap := make(map[int]int)
@@ -931,7 +937,8 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs
sql += " IF(t5.unit_price > 0, t5.unit_price, t3.price) sku_name_price,"
}
sql += `
t3.unit sku_name_unit, t3.name, t3.status sku_name_status
t3.unit sku_name_unit, t3.name, t3.status sku_name_status,
ts.change_price_type
FROM sku t1
JOIN store ts ON ts.id = ? AND ts.deleted_at = ?
LEFT JOIN store_sku_bind t2 ON t2.sku_id = t1.id AND t2.store_id = ts.id AND t2.deleted_at = ?
@@ -981,10 +988,11 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs
for _, v := range allBinds {
var num int64
inSkuBind := inSkuBinsMap[v.RealSkuID]
isCanChangePrice := (isUserCanDirectChangePrice || v.ChangePriceType != model.StoreChangePriceTypeBossDisabled)
// globals.SugarLogger.Debug(utils.Format4Output(inSkuBind, false))
var skuBind *model.StoreSkuBind
if v.ID == 0 {
if skuBindInfo.IsFocus == 1 && v.SkuNameStatus == model.SkuStatusNormal && v.SkuStatus == model.SkuStatusNormal {
if skuBindInfo.IsFocus == 1 && v.SkuNameStatus == model.SkuStatusNormal && v.SkuStatus == model.SkuStatusNormal && isCanChangePrice {
skuBind = &model.StoreSkuBind{
StoreID: storeID,
SkuID: v.RealSkuID,
@@ -1008,7 +1016,7 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs
} else {
skuBind = &v.StoreSkuBind
if skuBindInfo.IsFocus == -1 {
if skuBindInfo.IsFocus == -1 && isCanChangePrice {
if num, err = dao.DeleteEntityLogically(db, skuBind, map[string]interface{}{
model.FieldStatus: model.StoreSkuBindStatusDeleted,
model.FieldJdSyncStatus: model.SyncFlagDeletedMask,
@@ -1038,7 +1046,7 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs
setStoreSkuBindStatus(skuBind, model.SyncFlagSaleMask)
updateFieldMap[model.FieldStatus] = 1
}
if skuBindInfo.UnitPrice != 0 { // 这里是否需要加此条件限制
if skuBindInfo.UnitPrice != 0 && isCanChangePrice { // 这里是否需要加此条件限制
skuBind.UnitPrice = unitPrice
skuBind.Price = jxutils.CaculateSkuPrice(unitPrice, v.SpecQuality, v.SpecUnit, v.SkuNameUnit)
setStoreSkuBindStatus(skuBind, model.SyncFlagPriceMask)

View File

@@ -238,10 +238,12 @@ func sku2Update(vendorID int, sku *dao.StoreSkuSyncInfo, syncStatus int8) (item
kvs[dao.GetVendorThingIDStructField(model.VendorNames[vendorID])] = utils.Str2Int64WithDefault(sku.VendorSkuID, 0)
} else if model.IsSyncStatusDelete(syncStatus) {
sku.StoreSkuSyncStatus = 0
if utils.IsTimeZero(sku.BindDeletedAt) {
if utils.IsTimeZero(sku.BindDeletedAt) && (sku.ID == 0 || sku.NameID == 0) {
kvs[model.FieldDeletedAt] = time.Now()
}
kvs[dao.GetVendorThingIDStructField(model.VendorNames[vendorID])] = 0
if !dao.IsVendorThingIDEmpty(sku.VendorSkuID) && !partner.IsMultiStore(vendorID) {
kvs[dao.GetVendorThingIDStructField(model.VendorNames[vendorID])] = 0
}
} else {
sku.StoreSkuSyncStatus = sku.StoreSkuSyncStatus & model.SyncFlagPriceMask
}