- don't use Unmarshal2Map
- recaculate sku price in updateSku
This commit is contained in:
@@ -605,13 +605,28 @@ func UpdateSku(ctx *jxcontext.Context, skuID int, payload map[string]interface{}
|
|||||||
}
|
}
|
||||||
valid := dao.StrictMakeMapByStructObject(payload, sku, userName)
|
valid := dao.StrictMakeMapByStructObject(payload, sku, userName)
|
||||||
if len(valid) > 0 {
|
if len(valid) > 0 {
|
||||||
|
// globals.SugarLogger.Debug(utils.Format4Output(valid, false))
|
||||||
dao.Begin(db)
|
dao.Begin(db)
|
||||||
defer func() {
|
defer func() {
|
||||||
dao.Rollback(db)
|
dao.Rollback(db)
|
||||||
}()
|
}()
|
||||||
maskValue := model.SyncFlagModifiedMask
|
maskValue := model.SyncFlagModifiedMask
|
||||||
if valid["specQuality"] != nil || valid["specUnit"] != nil {
|
if valid["specQuality"] != nil || valid["specUnit"] != nil {
|
||||||
|
skuName := &model.SkuName{}
|
||||||
|
skuName.ID = sku.NameID
|
||||||
|
if err = dao.GetEntity(db, skuName); err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
maskValue |= model.SyncFlagSpecMask
|
maskValue |= model.SyncFlagSpecMask
|
||||||
|
specQuality := sku.SpecQuality
|
||||||
|
if valid["specQuality"] != nil {
|
||||||
|
specQuality = float32(utils.MustInterface2Float64(valid["specQuality"]))
|
||||||
|
}
|
||||||
|
specUnit := sku.SpecUnit
|
||||||
|
if valid["specUnit"] != nil {
|
||||||
|
specUnit = utils.Interface2String(valid["specUnit"])
|
||||||
|
}
|
||||||
|
valid["price"] = jxutils.CaculateSkuPrice(skuName.Price, specQuality, specUnit, skuName.Unit)
|
||||||
}
|
}
|
||||||
if num, err = dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, sku, valid, userName, nil, model.FieldJdSyncStatus, maskValue); err == nil {
|
if num, err = dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, sku, valid, userName, nil, model.FieldJdSyncStatus, maskValue); err == nil {
|
||||||
if num == 1 {
|
if num == 1 {
|
||||||
|
|||||||
@@ -366,7 +366,7 @@ func FilterMapByStructObject(mapData map[string]interface{}, obj interface{}, ex
|
|||||||
valid = make(map[string]interface{})
|
valid = make(map[string]interface{})
|
||||||
invalid = make(map[string]interface{})
|
invalid = make(map[string]interface{})
|
||||||
for k, v := range mapData {
|
for k, v := range mapData {
|
||||||
if m[k] != nil && excludedMap[k] == 0 && v != nil && (!isCheckValue || m[k] != v) {
|
if m[k] != nil && excludedMap[k] == 0 && v != nil && (!isCheckValue || !IsValueEqual(m[k], v)) {
|
||||||
valid[k] = v
|
valid[k] = v
|
||||||
} else {
|
} else {
|
||||||
invalid[k] = v
|
invalid[k] = v
|
||||||
@@ -440,3 +440,7 @@ func Strings2Objs(strAndObjAddPairs ...interface{}) (err error) {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func IsValueEqual(value1, value2 interface{}) bool {
|
||||||
|
return fmt.Sprint(value1) == fmt.Sprint(value2)
|
||||||
|
}
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ func NormalMakeMapByStructObject(mapData map[string]interface{}, obj interface{}
|
|||||||
return retVal
|
return retVal
|
||||||
}
|
}
|
||||||
|
|
||||||
// 此函数要求mapData中的数据类型是完全正确的(可利用函数utils.Unmarshal2Map),比如整数,浮点不能为通用的Number型
|
|
||||||
func StrictMakeMapByStructObject(mapData map[string]interface{}, obj interface{}, userName string) (retVal map[string]interface{}) {
|
func StrictMakeMapByStructObject(mapData map[string]interface{}, obj interface{}, userName string) (retVal map[string]interface{}) {
|
||||||
retVal, _ = IDCULDFilterMapByStructObject(mapData, obj, true)
|
retVal, _ = IDCULDFilterMapByStructObject(mapData, obj, true)
|
||||||
return retVal
|
return retVal
|
||||||
|
|||||||
@@ -235,9 +235,8 @@ func (c *SkuController) AddSku() {
|
|||||||
// @router /UpdateSku [put]
|
// @router /UpdateSku [put]
|
||||||
func (c *SkuController) UpdateSku() {
|
func (c *SkuController) UpdateSku() {
|
||||||
c.callUpdateSku(func(params *tSkuUpdateSkuParams) (retVal interface{}, errCode string, err error) {
|
c.callUpdateSku(func(params *tSkuUpdateSkuParams) (retVal interface{}, errCode string, err error) {
|
||||||
var payload map[string]interface{}
|
payload := make(map[string]interface{})
|
||||||
dummySku := &model.Sku{}
|
if err = utils.UnmarshalUseNumber([]byte(params.Payload), &payload); err == nil {
|
||||||
if payload, err = utils.Unmarshal2Map([]byte(params.Payload), dummySku); err == nil {
|
|
||||||
retVal, err = cms.UpdateSku(params.Ctx, params.SkuID, payload, params.Ctx.GetUserName())
|
retVal, err = cms.UpdateSku(params.Ctx, params.SkuID, payload, params.Ctx.GetUserName())
|
||||||
}
|
}
|
||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
|
|||||||
@@ -66,9 +66,8 @@ func (c *StoreController) GetVendorStore() {
|
|||||||
// @router /UpdateStore [put]
|
// @router /UpdateStore [put]
|
||||||
func (c *StoreController) UpdateStore() {
|
func (c *StoreController) UpdateStore() {
|
||||||
c.callUpdateStore(func(params *tStoreUpdateStoreParams) (retVal interface{}, errCode string, err error) {
|
c.callUpdateStore(func(params *tStoreUpdateStoreParams) (retVal interface{}, errCode string, err error) {
|
||||||
var payload map[string]interface{}
|
payload := make(map[string]interface{})
|
||||||
dummyStore := &model.Store{}
|
if err = utils.UnmarshalUseNumber([]byte(params.Payload), &payload); err == nil {
|
||||||
if payload, err = utils.Unmarshal2Map([]byte(params.Payload), dummyStore); err == nil {
|
|
||||||
retVal, err = cms.UpdateStore(params.Ctx, params.StoreID, payload, params.Ctx.GetUserName())
|
retVal, err = cms.UpdateStore(params.Ctx, params.StoreID, payload, params.Ctx.GetUserName())
|
||||||
}
|
}
|
||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
@@ -145,9 +144,8 @@ func (c *StoreController) GetStoreVendorMaps() {
|
|||||||
// @router /UpdateStoreVendorMap [put]
|
// @router /UpdateStoreVendorMap [put]
|
||||||
func (c *StoreController) UpdateStoreVendorMap() {
|
func (c *StoreController) UpdateStoreVendorMap() {
|
||||||
c.callUpdateStoreVendorMap(func(params *tStoreUpdateStoreVendorMapParams) (retVal interface{}, errCode string, err error) {
|
c.callUpdateStoreVendorMap(func(params *tStoreUpdateStoreVendorMapParams) (retVal interface{}, errCode string, err error) {
|
||||||
var payload map[string]interface{}
|
payload := make(map[string]interface{})
|
||||||
dummyStoreMap := &model.StoreMap{}
|
if err = utils.UnmarshalUseNumber([]byte(params.Payload), &payload); err == nil {
|
||||||
if payload, err = utils.Unmarshal2Map([]byte(params.Payload), dummyStoreMap); err == nil {
|
|
||||||
retVal, err = cms.UpdateStoreVendorMap(params.Ctx, nil, params.StoreID, params.VendorID, payload, params.Ctx.GetUserName())
|
retVal, err = cms.UpdateStoreVendorMap(params.Ctx, nil, params.StoreID, params.VendorID, payload, params.Ctx.GetUserName())
|
||||||
}
|
}
|
||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
|
|||||||
Reference in New Issue
Block a user