From 20c3c0341a448d253219e5add4b2e64f5a19374f Mon Sep 17 00:00:00 2001 From: gazebo Date: Thu, 13 Sep 2018 21:49:00 +0800 Subject: [PATCH] - change skuName place bind to bare bind. --- business/jxstore/cms/sku.go | 45 +++++++++++++++++++++++++++++-------- business/model/dao/dao.go | 2 +- controllers/cms_sku.go | 12 +++++----- 3 files changed, 43 insertions(+), 16 deletions(-) diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index 1f7817494..360a0e1b4 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -1,6 +1,7 @@ package cms import ( + "encoding/json" "errors" "strconv" "strings" @@ -16,8 +17,8 @@ type SkuNameExt struct { Skus []*model.Sku `orm:"-" json:"skus"` SkusStr string `json:"-"` - Places []*model.SkuNamePlaceBind `orm:"-" json:"places"` - PlacesStr string `json:"-"` + Places []int `orm:"-" json:"places"` + PlacesStr string `json:"-"` } type SkuNamesInfo struct { @@ -260,7 +261,7 @@ func GetSkuNames(keyword string, params map[string]interface{}, offset, pageSize t1.img, t1.elm_img_hash_code, CONCAT("[", GROUP_CONCAT(DISTINCT CONCAT('{"id":', t2.id, ',"status":', t2.status, ',"createdAt":"', CONCAT(REPLACE(t2.created_at," ","T"),"+08:00"), '","updatedAt":"', CONCAT(REPLACE(t2.updated_at," ","T"),"+08:00"), '","lastOperator":"', t2.last_operator, '","specQuality":', t2.spec_quality, ',"specUnit":"', t2.spec_unit, '","weight":', t2.weight, ',"jdID":', t2.jd_id, ',"categoryID":', t2.category_id, ',"nameID":', t2.name_id, "}")), "]") skus_str, - CONCAT("[", GROUP_CONCAT(DISTINCT CONCAT('{"id":', t3.id, ',"createdAt":"', CONCAT(REPLACE(t3.created_at," ","T"),"+08:00"), '","updatedAt":"', CONCAT(REPLACE(t3.updated_at," ","T"),"+08:00"), '","lastOperator":"', t3.last_operator, '","nameID":', t3.name_id, ',"placeCode":', t3.place_code, "}")), "]") places_str + CONCAT("[", GROUP_CONCAT(DISTINCT t3.place_code), "]") places_str ` + sql + ` ORDER BY t1.id LIMIT ? OFFSET ?` @@ -314,9 +315,11 @@ func AddSkuName(skuNameExt *SkuNameExt, userName string) (outSkuNameExt *SkuName return nil, err } } - for _, placeBind := range skuNameExt.Places { + for _, placeCode := range skuNameExt.Places { + placeBind := model.SkuNamePlaceBind{} dao.WrapAddIDCULEntity(placeBind, userName) placeBind.NameID = skuNameExt.ID + placeBind.PlaceCode = placeCode if err = dao.CreateEntity(db, placeBind); err != nil { dao.Rollback(db) return nil, err @@ -336,19 +339,43 @@ func AddSkuName(skuNameExt *SkuNameExt, userName string) (outSkuNameExt *SkuName } func UpdateSkuName(nameID int, payload map[string]interface{}, userName string) (num int64, err error) { + var err2 error skuName := &model.SkuName{} skuName.ID = nameID valid := dao.NormalMakeMapByStructObject(payload, skuName, userName) if len(valid) > 0 { db := dao.GetDB() + dao.Begin(db) if num, err = dao.UpdateEntityByKV(db, skuName, valid, nil); err == nil && num == 1 { - sku := &model.Sku{} - _, err2 := dao.UpdateEntityByKV(db, sku, utils.Params2Map(model.FieldJdSyncStatus, model.SyncFlagModifiedMask), utils.Params2Map(model.FieldNameID, skuName.ID)) - if err = err2; err == nil { - if err = dao.GetEntity(db, skuName); err == nil { - err = CurVendorSync.SyncSku(db, skuName.ID, -1, false, userName) + if payload["places"] != nil { + var places []int + if err = json.Unmarshal([]byte(payload["places"].(string)), &places); err == nil { + if _, err = dao.ExecuteSQL(db, "DELETE FROM sku_name_place_bind WHERE name_id = ?", nameID); err == nil { + for _, placeCode := range places { + placeBind := model.SkuNamePlaceBind{} + dao.WrapAddIDCULEntity(placeBind, userName) + placeBind.NameID = nameID + placeBind.PlaceCode = placeCode + err = dao.CreateEntity(db, placeBind) + } + } } } + if err == nil { + sku := &model.Sku{} + _, err2 := dao.UpdateEntityByKV(db, sku, utils.Params2Map(model.FieldJdSyncStatus, model.SyncFlagModifiedMask), utils.Params2Map(model.FieldNameID, skuName.ID)) + if err = err2; err == nil { + if err = dao.GetEntity(db, skuName); err == nil { + dao.Commit(db) + err2 = CurVendorSync.SyncSku(db, skuName.ID, -1, false, userName) + } + } + } + } + if err != nil { + dao.Rollback(db) + } else { + err = err2 } } return num, err diff --git a/business/model/dao/dao.go b/business/model/dao/dao.go index 2ea82387c..30903790a 100644 --- a/business/model/dao/dao.go +++ b/business/model/dao/dao.go @@ -216,7 +216,7 @@ func DeleteEntityLogically(db *DaoDB, item interface{}, conditions map[string]in return num, err } -func UpdateBySQL(db *DaoDB, sql string, params ...interface{}) (num int64, err error) { +func ExecuteSQL(db *DaoDB, sql string, params ...interface{}) (num int64, err error) { if db == nil { db = GetDB() } diff --git a/controllers/cms_sku.go b/controllers/cms_sku.go index 9cfd8480f..85a0eb4ec 100644 --- a/controllers/cms_sku.go +++ b/controllers/cms_sku.go @@ -159,10 +159,10 @@ func (c *SkuController) AddSkuName() { } // @Title 修改商品名信息 -// @Description 修改商品名信息 +// @Description 修改商品名信息,注意:如果Places没有变动,不要传此字段,否则会导致不必要的删除与新增 // @Param token header string true "认证token" // @Param nameID formData int true "需要修改的商品名ID,payload中的相应数据会被忽略" -// @Param payload formData string true "json数据,SkuNameExt对象(),Skus, Places无效" +// @Param payload formData string true "json数据,SkuNameExt对象(),Skus无效, Places有效" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /UpdateSkuName [put] @@ -240,8 +240,8 @@ func (c *SkuController) DeleteSku() { }) } -// @Title 新增商品名可售地点绑定 -// @Description 新增商品名可售地点绑定 +// @Title 新增商品名可售地点绑定(不推荐使用) +// @Description 新增商品名可售地点绑定(不推荐使用) // @Param token header string true "认证token" // @Param nameID formData int true "商品名ID" // @Param placeCode formData int true "地点代码" @@ -255,8 +255,8 @@ func (c *SkuController) AddSkuNamePlace() { }) } -// @Title 删除商品 -// @Description 删除商品 +// @Title 删除商品名可售地点绑定(不推荐使用) +// @Description 删除商品名可售地点绑定(不推荐使用) // @Param token header string true "认证token" // @Param nameID query int true "商品名ID" // @Param placeCode query int true "地点代码"