diff --git a/business/jxstore/cms/cms.go b/business/jxstore/cms/cms.go index c4794c535..2980f2c39 100644 --- a/business/jxstore/cms/cms.go +++ b/business/jxstore/cms/cms.go @@ -1,78 +1,14 @@ package cms import ( - "errors" - - "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxcallback/scheduler/basesch" - "git.rosy.net.cn/jx-callback/business/model" - "git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/business/partner" ) -type VendorSync struct { -} - var ( CurVendorSync VendorSync ) -var ( - ErrHaveNotImplementedYet = errors.New("还没有实现") - ErrEntityNotExist = errors.New("找不到相应实体") -) - func GetPurchaseHandler(vendorID int) partner.IPurchasePlatformHandler { return basesch.FixedBaseScheduler.GetPurchasePlatformFromVendorID(vendorID) } - -func (v *VendorSync) SyncCategory(categoryID int, isForce bool, userName string) (err error) { - db := dao.GetDB() - cats := []*model.SkuCategory{} - cond := make(map[string]interface{}) - if categoryID != 0 { - cond["ID"] = categoryID - } - err = dao.GetEntities(db, &cats, cond, true) - for _, cat := range cats { - if (cat.JdSyncStatus & model.SyncFlagNewMask) != 0 { // 新增 - err = GetPurchaseHandler(model.VendorIDJD).CreateCategory(cat, userName) - } else if (cat.JdSyncStatus&model.SyncFlagModifiedMask) != 0 || isForce { // 修改 - err = GetPurchaseHandler(model.VendorIDJD).UpdateCategory(cat, userName) - } else if (cat.JdSyncStatus & model.SyncFlagDeletedMask) != 0 { - err = GetPurchaseHandler(model.VendorIDJD).DeleteCategory(cat, userName) - } - if err == nil { - cat.JdSyncStatus = 0 - _, err = dao.UpdateEntity(db, cat, model.FieldJdSyncStatus) - } - if err != nil { - break - } - } - return err -} - -func (v *VendorSync) SyncStore(db *dao.DaoDB, vendorID int, store *model.Store, isForce bool, userName string) (err error) { - var ( - storeMaps []*model.StoreMap - ) - if db == nil { - db = dao.GetDB() - } - err = dao.GetEntities(db, &storeMaps, utils.Params2Map(model.FieldStoreID, store.ID), true) - if err == nil { - // globals.SugarLogger.Debug(utils.Format4Output(store, false)) - copiedStore := *store - for _, storeMap := range storeMaps { - if (vendorID == -1 || storeMap.VendorID == vendorID) && (isForce || storeMap.SyncStatus != 0) { - copiedStore.Status = mergeStoreStatus(store.Status, storeMap.Status) - if err = GetPurchaseHandler(storeMap.VendorID).UpdateStore(storeMap.VendorStoreID, &copiedStore, userName); err == nil { - storeMap.SyncStatus = 0 - dao.UpdateEntity(db, storeMap, model.FieldSyncStatus) - } - } - } - } - return err -} diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index de395080d..d9c74eec8 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -55,7 +55,7 @@ func AddCategory(cat *model.SkuCategory, userName string) (outCat *model.SkuCate cat.JdSyncStatus = model.SyncFlagNewMask if err = dao.CreateEntity(nil, cat); err == nil { outCat = cat - err = CurVendorSync.SyncCategory(cat.ID, false, userName) + err = CurVendorSync.SyncCategory(nil, cat.ID, false, userName) } return outCat, err } @@ -64,10 +64,12 @@ func UpdateCategory(categoryID int, payload map[string]interface{}, userName str cat := &model.SkuCategory{} cat.ID = categoryID valid := dao.NormalMakeMapByStructObject(payload, cat, userName) - valid[model.FieldJdSyncStatus] = model.SyncFlagModifiedMask - db := dao.GetDB() - if num, err = dao.UpdateEntityByKV(db, cat, valid, nil); err == nil { - err = CurVendorSync.SyncCategory(categoryID, false, userName) + if len(valid) > 0 { + valid[model.FieldJdSyncStatus] = model.SyncFlagModifiedMask + db := dao.GetDB() + if num, err = dao.UpdateEntityByKV(db, cat, valid, nil); err == nil { + err = CurVendorSync.SyncCategory(db, categoryID, false, userName) + } } return num, err } @@ -107,7 +109,8 @@ func DeleteCategory(categoryID int, isForce bool, userName string) (num int64, e cat := &model.SkuCategory{} cat.ID = categoryID var countInfos []*struct{ Ct int } - if err = dao.GetRows(nil, &countInfos, ` + db := dao.GetDB() + if err = dao.GetRows(db, &countInfos, ` SELECT COUNT(*) ct FROM sku t1 WHERE t1.category_id = ? @@ -127,8 +130,8 @@ func DeleteCategory(categoryID int, isForce bool, userName string) (num int64, e } else if countInfos[2].Ct != 0 { return 0, errors.New("还有商品类别使用此类别,不能删除") } - if num, err = dao.DeleteEntity(nil, cat, nil, userName, utils.Params2Map(model.FieldJdSyncStatus, model.SyncFlagDeletedMask)); err == nil && num == 1 { - err = CurVendorSync.SyncCategory(cat.ID, false, userName) + if num, err = dao.DeleteEntity(db, cat, nil, userName, utils.Params2Map(model.FieldJdSyncStatus, model.SyncFlagDeletedMask)); err == nil && num == 1 { + err = CurVendorSync.SyncCategory(db, cat.ID, false, userName) } } return num, err @@ -137,12 +140,12 @@ func DeleteCategory(categoryID int, isForce bool, userName string) (num int64, e func GetSkuNames(keyword string, params map[string]interface{}, offset, pageSize int) (skuNamesInfo *SkuNamesInfo, err error) { sql := ` FROM sku_name t1 - JOIN sku t2 ON t1.id = t2.name_id - WHERE` + LEFT JOIN sku t2 ON t1.id = t2.name_id AND t2.deleted_at = '1970-01-01 00:00:00' + WHERE t1.deleted_at = '1970-01-01 00:00:00'` sqlParams := make([]interface{}, 0) if keyword != "" { keywordLike := "%" + keyword + "%" - sql += " (t1.name LIKE ? OR t1.prefix LIKE ? OR t1.comment LIKE ?" + sql += " AND (t1.name LIKE ? OR t1.prefix LIKE ? OR t1.comment LIKE ?" sqlParams = append(sqlParams, keywordLike, keywordLike, keywordLike) if keywordInt64, err2 := strconv.ParseInt(keyword, 10, 64); err2 == nil { @@ -150,8 +153,6 @@ func GetSkuNames(keyword string, params map[string]interface{}, offset, pageSize sqlParams = append(sqlParams, keywordInt64, keywordInt64, keywordInt64) } sql += ")" - } else { - sql += " 1 = 1" } if params["id"] != nil { @@ -252,8 +253,10 @@ func GetSkuNames(keyword string, params map[string]interface{}, offset, pageSize if err = dao.GetRow(db, countInfo, "SELECT FOUND_ROWS() ct"); err == nil { skuNamesInfo.TotalCount = countInfo.Ct for _, skuName := range skuNamesInfo.SkuNames { - if err = utils.UnmarshalUseNumber([]byte(skuName.SkusStr), &skuName.Skus); err != nil { - break + if skuName.SkusStr != "" { + if err = utils.UnmarshalUseNumber([]byte(skuName.SkusStr), &skuName.Skus); err != nil { + break + } } } } @@ -262,6 +265,9 @@ func GetSkuNames(keyword string, params map[string]interface{}, offset, pageSize } func AddSkuName(skuNameExt *SkuNameExt, userName string) (outSkuNameExt *SkuNameExt, err error) { + if skuNameExt.CategoryID == 0 { + return nil, errors.New("CategoryID不能为空") + } db := dao.GetDB() dao.Begin(db) dao.WrapAddIDCULDEntity(&skuNameExt.SkuName, userName) @@ -271,6 +277,8 @@ func AddSkuName(skuNameExt *SkuNameExt, userName string) (outSkuNameExt *SkuName } for _, sku := range skuNameExt.Skus { dao.WrapAddIDCULDEntity(sku, userName) + sku.NameID = skuNameExt.ID + sku.JdSyncStatus = model.SyncFlagNewMask if err = dao.CreateEntity(db, sku); err != nil { dao.Rollback(db) return nil, err @@ -285,9 +293,25 @@ func AddSkuName(skuNameExt *SkuNameExt, userName string) (outSkuNameExt *SkuName return nil, ErrEntityNotExist } outSkuNameExt = tmpInfo.SkuNames[0] + err = CurVendorSync.SyncSku(db, &outSkuNameExt.SkuName, -1, false, userName) return outSkuNameExt, err } -func UpdateSkuName(skuNameID int, payload map[string]interface{}) (num int64, err error) { +func UpdateSkuName(nameID int, payload map[string]interface{}, userName string) (num int64, err error) { + skuName := &model.SkuName{} + skuName.ID = nameID + valid := dao.NormalMakeMapByStructObject(payload, skuName, userName) + if len(valid) > 0 { + db := dao.GetDB() + if num, err = dao.UpdateEntityByKV(db, skuName, valid, nil); err == nil && num == 1 { + sku := &model.Sku{} + _, err2 := dao.UpdateEntityByKV(db, sku, utils.Params2Map(model.FieldSyncStatus, 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, -1, false, userName) + } + } + } + } return num, err } diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index 84f6b3e7c..40aae677a 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -8,7 +8,6 @@ import ( "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model/dao" - "git.rosy.net.cn/jx-callback/globals" ) type StoreExt struct { @@ -201,13 +200,15 @@ func UpdateStore(storeID int, payload map[string]interface{}, userName string) ( store := &model.Store{} store.ID = storeID valid := dao.NormalMakeMapByStructObject(payload, store, userName) - db := dao.GetDB() - if num, err = dao.UpdateEntityByKV(db, store, valid, nil); err == nil { - dummy := &model.StoreMap{} - _, err2 := dao.UpdateEntityByKV(db, dummy, utils.Params2Map(model.FieldSyncStatus, model.SyncFlagModifiedMask), utils.Params2Map(model.FieldStoreID, store.ID)) - if err = err2; err == nil { - if err = dao.GetEntity(db, store); err == nil { - err = CurVendorSync.SyncStore(db, -1, store, false, userName) + if len(valid) > 0 { + db := dao.GetDB() + if num, err = dao.UpdateEntityByKV(db, store, valid, nil); err == nil && num == 1 { + dummy := &model.StoreMap{} + _, err2 := dao.UpdateEntityByKV(db, dummy, utils.Params2Map(model.FieldSyncStatus, model.SyncFlagModifiedMask), utils.Params2Map(model.FieldStoreID, store.ID)) + if err = err2; err == nil { + if err = dao.GetEntity(db, store); err == nil { + err = CurVendorSync.SyncStore(db, -1, store, false, userName) + } } } } @@ -232,13 +233,15 @@ func GetStoreVendorMaps(db *dao.DaoDB, storeID int, vendorID int) (storeMaps []* return storeMaps, dao.GetEntities(db, &storeMaps, cond, false) } -func AddStoreVendorMap(db *dao.DaoDB, storeMap *model.StoreMap, userName string) (outStoreMap *model.StoreMap, err error) { +func AddStoreVendorMap(db *dao.DaoDB, storeID, vendorID int, storeMap *model.StoreMap, userName string) (outStoreMap *model.StoreMap, err error) { store, err := GetPurchaseHandler(storeMap.VendorID).ReadStore(storeMap.VendorStoreID) if err == nil { dao.WrapAddIDCULEntity(storeMap, userName) + storeMap.StoreID = storeID + storeMap.VendorID = vendorID storeMap.DeliveryType = store.DeliveryType storeMap.Status = store.Status - storeMap.SyncStatus = model.SyncFlagModifiedMask + storeMap.SyncStatus = model.SyncFlagModifiedMask // 新增绑定门店是修改的概念 if err = dao.CreateEntity(db, storeMap); err == nil { outStoreMap = storeMap err = CurVendorSync.SyncStore(db, storeMap.VendorID, store, true, userName) @@ -265,16 +268,17 @@ func UpdateStoreVendorMap(db *dao.DaoDB, storeID, vendorID int, payload map[stri if err == nil { dummyStoreMap := &model.StoreMap{} valid := dao.NormalMakeMapByStructObject(payload, dummyStoreMap, userName) - if valid["status"] != nil { // 对于store vendor map,只有Status改变才需要同步到厂商 - valid[model.FieldSyncStatus] = model.SyncFlagModifiedMask - } - globals.SugarLogger.Debug(utils.Format4Output(valid, false)) - if num, err = dao.UpdateEntityByKV(db, dummyStoreMap, valid, utils.Params2Map(model.FieldStoreID, storeID, model.FieldVendorID, vendorID)); err == nil { - if valid["status"] != nil { - store := &model.Store{} - store.ID = storeID - if err = dao.GetEntity(db, store); err == nil { - err = CurVendorSync.SyncStore(db, vendorID, store, true, userName) + if len(valid) > 0 { + if valid["status"] != nil { // 对于store vendor map,只有Status改变才需要同步到厂商 + valid[model.FieldSyncStatus] = model.SyncFlagModifiedMask + } + if num, err = dao.UpdateEntityByKV(db, dummyStoreMap, valid, utils.Params2Map(model.FieldStoreID, storeID, model.FieldVendorID, vendorID)); err == nil { + if valid["status"] != nil { + store := &model.Store{} + store.ID = storeID + if err = dao.GetEntity(db, store); err == nil { + err = CurVendorSync.SyncStore(db, vendorID, store, false, userName) + } } } } diff --git a/business/jxstore/cms/sync.go b/business/jxstore/cms/sync.go new file mode 100644 index 000000000..376c1552a --- /dev/null +++ b/business/jxstore/cms/sync.go @@ -0,0 +1,92 @@ +package cms + +import ( + "errors" + + "git.rosy.net.cn/baseapi/utils" + "git.rosy.net.cn/jx-callback/business/model" + "git.rosy.net.cn/jx-callback/business/model/dao" +) + +type VendorSync struct { +} + +var ( + ErrHaveNotImplementedYet = errors.New("还没有实现") + ErrEntityNotExist = errors.New("找不到相应实体") +) + +func (v *VendorSync) SyncCategory(db *dao.DaoDB, categoryID int, isForce bool, userName string) (err error) { + if db == nil { + db = dao.GetDB() + } + var cats []*model.SkuCategory + cond := make(map[string]interface{}) + if categoryID > 0 { + cond[model.FieldID] = categoryID + } + if err = dao.GetEntities(db, &cats, cond, true); err == nil { + for _, cat := range cats { + if (cat.JdSyncStatus & model.SyncFlagDeletedMask) != 0 { //删除 + err = GetPurchaseHandler(model.VendorIDJD).DeleteCategory(cat, userName) + } else if (cat.JdSyncStatus&model.SyncFlagNewMask) != 0 || isForce { // 新增 + err = GetPurchaseHandler(model.VendorIDJD).CreateCategory(cat, userName) + } else if (cat.JdSyncStatus & model.SyncFlagModifiedMask) != 0 { // 修改 + err = GetPurchaseHandler(model.VendorIDJD).UpdateCategory(cat, userName) + } + if err == nil { + cat.JdSyncStatus = 0 + _, err = dao.UpdateEntity(db, cat, model.FieldJdSyncStatus) + } + if err != nil { + break + } + } + } + return err +} + +func (v *VendorSync) SyncStore(db *dao.DaoDB, vendorID int, store *model.Store, isForce bool, userName string) (err error) { + if db == nil { + db = dao.GetDB() + } + var storeMapList []*model.StoreMap + if err = dao.GetEntities(db, &storeMapList, utils.Params2Map(model.FieldStoreID, store.ID), true); err == nil { + copiedStore := *store + for _, storeMap := range storeMapList { + if (vendorID == -1 || vendorID == storeMap.VendorID) && (isForce || storeMap.SyncStatus != 0) { // 对于门店,当前只有修改标记 + copiedStore.Status = mergeStoreStatus(store.Status, storeMap.Status) + if err = GetPurchaseHandler(storeMap.VendorID).UpdateStore(storeMap.VendorStoreID, &copiedStore, userName); err == nil { + storeMap.SyncStatus = 0 + dao.UpdateEntity(db, storeMap, model.FieldSyncStatus) + } + } + } + } + return err +} + +func (v *VendorSync) SyncSku(db *dao.DaoDB, skuName *model.SkuName, skuID int, isForce bool, userName string) (err error) { + if db == nil { + db = dao.GetDB() + } + var skuList []*model.Sku + if err = dao.GetEntities(db, &skuList, utils.Params2Map(model.FieldNameID, skuName.ID), true); err == nil { + for _, sku := range skuList { + if (skuID == -1 || skuID == sku.ID) && (isForce || sku.JdSyncStatus != 0) { + if sku.JdSyncStatus&model.SyncFlagDeletedMask != 0 { // 删除 + err = GetPurchaseHandler(model.VendorIDJD).CreateSku(sku, userName) + } else if sku.JdSyncStatus&model.SyncFlagNewMask != 0 { // 新增 + err = GetPurchaseHandler(model.VendorIDJD).DeleteSku(sku, userName) + } else if sku.JdSyncStatus&model.SyncFlagModifiedMask != 0 { // 修改 + err = GetPurchaseHandler(model.VendorIDJD).UpdateSku(sku, userName) + } + if err == nil { + sku.JdSyncStatus = 0 + dao.UpdateEntity(db, sku, model.FieldSyncStatus) + } + } + } + } + return err +} diff --git a/business/jxstore/cms/validation.go b/business/jxstore/cms/validation.go new file mode 100644 index 000000000..fc6045e38 --- /dev/null +++ b/business/jxstore/cms/validation.go @@ -0,0 +1,35 @@ +package cms + +import ( + "fmt" + + "git.rosy.net.cn/jx-callback/business/jxutils" + "git.rosy.net.cn/jx-callback/business/model" +) + +var ( + unitNamesMap map[string]int + specUnitNamesMap map[string]int +) + +func init() { + unitNamesMap = jxutils.MakeValidationMapFromSlice(model.UnitNames, 1) + specUnitNamesMap = jxutils.MakeValidationMapFromSlice(model.SpecUnitNames, 1) +} + +func validateStringInMap(name string, value interface{}, flagMap map[string]int) (err error) { + if strValue, ok := value.(string); ok { + if flagMap[strValue] == 1 { + return nil + } + } + return fmt.Errorf("属性%s类型或取值不合法,要求string", name) +} + +func ValidateUnit(value interface{}) (err error) { + return validateStringInMap("Unit", value, unitNamesMap) +} + +func ValidateSpecUnit(value interface{}) (err error) { + return validateStringInMap("SpecUnit", value, specUnitNamesMap) +} diff --git a/business/jxutils/jxutils.go b/business/jxutils/jxutils.go index 06ed3e52d..4f9989ce7 100644 --- a/business/jxutils/jxutils.go +++ b/business/jxutils/jxutils.go @@ -331,3 +331,11 @@ func FilterMapByFieldList(mapData map[string]interface{}, fields []string) (vali func GetObjFieldByName(obj interface{}, fieldName string) interface{} { return reflect.Indirect(reflect.ValueOf(obj)).FieldByName(fieldName).Interface() } + +func MakeValidationMapFromSlice(validValues []string, flag int) map[string]int { + retVal := make(map[string]int) + for _, v := range validValues { + retVal[v] = flag + } + return retVal +} diff --git a/business/model/dao/dao_utils.go b/business/model/dao/dao_utils.go index c50ac16f0..e6e5040a4 100644 --- a/business/model/dao/dao_utils.go +++ b/business/model/dao/dao_utils.go @@ -10,20 +10,23 @@ import ( ) func NormalFilterMapByStructObject(mapData map[string]interface{}, obj interface{}) (valid map[string]interface{}, invalid map[string]interface{}) { - return jxutils.FilterMapByStructObject(mapData, obj, []string{"id", "createdAt", "syncStatus", "lastOperator", "updatedAt", "finishedAt"}) + // 这里必须用首字母小写,因为是用于访问map,是用于访问map,是需要完全匹配的 + return jxutils.FilterMapByStructObject(mapData, obj, []string{"id", "createdAt", "updatedAt", "finishedAt", "deletedAt", "syncStatus", "lastOperator"}) } func NormalMakeMapByStructObject(mapData map[string]interface{}, obj interface{}, userName string) (retVal map[string]interface{}) { retVal, _ = NormalFilterMapByStructObject(mapData, obj) - retVal["lastOperator"] = userName - retVal["updatedAt"] = time.Now() + if len(retVal) > 0 { + WrapUpdateULEntity(retVal, userName) + } return retVal } func NormalMakeMapByFieldList(mapData map[string]interface{}, fields []string, userName string) (retVal map[string]interface{}) { retVal, _ = jxutils.FilterMapByFieldList(mapData, fields) - retVal["lastOperator"] = userName - retVal["updatedAt"] = time.Now() + if len(retVal) > 0 { + WrapUpdateULEntity(retVal, userName) + } return retVal } diff --git a/business/model/model.go b/business/model/model.go index 319c79546..0074cecdd 100644 --- a/business/model/model.go +++ b/business/model/model.go @@ -17,6 +17,7 @@ const ( FieldVendorID = "VendorID" FieldStoreID = "StoreID" FieldVendorStoreID = "VendorStoreID" + FieldNameID = "NameID" ) type ModelIDCUL struct { diff --git a/business/model/sku.go b/business/model/sku.go index 1bd1930d3..11ef721aa 100644 --- a/business/model/sku.go +++ b/business/model/sku.go @@ -80,13 +80,12 @@ type SkuCategory struct { Type int8 `json:"type"` // 类别类型,即是普通类别还是特殊用于做活动的类别 Seq int `json:"seq"` - JdID int64 `orm:"column(jd_id);index" json:"jdID"` // 这个是指商家自己的商品类别在京东平台上的ID - JdCategoryID int `orm:"column(jd_category_id)" json:"jdCategoryID"` // 这个是指对应的京东商品类别 - + JdCategoryID int `orm:"column(jd_category_id)" json:"jdCategoryID"` // 这个是指对应的京东商品类别 ElmCategoryID int64 `orm:"column(elm_category_id)" json:"elmCategoryID"` // 这个是指对应的饿了么商品类别 EbaiCategoryID int64 `orm:"column(ebai_category_id)" json:"ebaiCategoryID"` // 这个是指对应的饿百商品类别 - JdSyncStatus int8 `orm:"default(2)" json:"jdSyncStatus"` + JdID int64 `orm:"column(jd_id);index" json:"jdID"` // 这个是指商家自己的商品类别在京东平台上的ID + JdSyncStatus int8 `orm:"default(2)" json:"jdSyncStatus"` } func (*SkuCategory) TableUnique() [][]string { @@ -96,7 +95,7 @@ func (*SkuCategory) TableUnique() [][]string { } type SkuName struct { - ModelIDCUL + ModelIDCULD Prefix string `orm:"size(255)" json:"prefix"` Name string `orm:"size(255)" json:"name"` @@ -120,7 +119,7 @@ type SkuName struct { // } type Sku struct { - ModelIDCUL + ModelIDCULD CategoryID int `orm:"column(category_id)" json:"categoryID"` // 特殊类别,一般用于秒杀,特价之类的特殊类别 NameID int `orm:"column(name_id)" json:"nameID"` // todo 这个索引应该要求唯一 @@ -128,7 +127,8 @@ type Sku struct { SpecUnit string `orm:"size(8)" json:"specUnit"` // 质量或容量 Weight int `json:"weight"` // 重量/质量,单位为克,当相应的SkuName的SpecUnit为g或kg时,必须等于SpecQuality - JdID int64 `orm:"column(jd_id)" json:"jdID"` + JdID int64 `orm:"column(jd_id)" json:"jdID"` + JdSyncStatus int8 `orm:"default(2)" json:"jdSyncStatus"` } func (*Sku) TableUnique() [][]string { diff --git a/business/partner/partner.go b/business/partner/partner.go index fdd94bbc5..0618bc44c 100644 --- a/business/partner/partner.go +++ b/business/partner/partner.go @@ -71,10 +71,10 @@ type IPurchasePlatformHandler interface { DeleteCategory(cat *model.SkuCategory, userName string) error ReorderCategories(parentCat *model.SkuCategory, userName string) (err error) - CreateSku(sku *model.Sku) (err error) + CreateSku(sku *model.Sku, userName string) (err error) ReadSku(vendorSkuID string) (skuName *model.SkuName, sellPlaces []*model.Place, sku *model.Sku, err error) - UpdateSku(sku *model.Sku) (err error) - DeleteSku(sku *model.Sku) (err error) + UpdateSku(sku *model.Sku, userName string) (err error) + DeleteSku(sku *model.Sku, userName string) (err error) } type IDeliveryPlatformHandler interface { diff --git a/business/partner/purchase/elm/sku.go b/business/partner/purchase/elm/sku.go index 172fc4261..ceafc5dee 100644 --- a/business/partner/purchase/elm/sku.go +++ b/business/partner/purchase/elm/sku.go @@ -26,7 +26,7 @@ func (p *PurchaseHandler) ReorderCategories(parentCat *model.SkuCategory, userNa return nil } -func (p *PurchaseHandler) CreateSku(sku *model.Sku) (err error) { +func (p *PurchaseHandler) CreateSku(sku *model.Sku, userName string) (err error) { return nil } @@ -34,10 +34,10 @@ func (p *PurchaseHandler) ReadSku(vendorSkuID string) (skuName *model.SkuName, s return nil, nil, nil, nil } -func (p *PurchaseHandler) UpdateSku(sku *model.Sku) (err error) { +func (p *PurchaseHandler) UpdateSku(sku *model.Sku, userName string) (err error) { return nil } -func (p *PurchaseHandler) DeleteSku(sku *model.Sku) (err error) { +func (p *PurchaseHandler) DeleteSku(sku *model.Sku, userName string) (err error) { return nil } diff --git a/business/partner/purchase/jd/sku.go b/business/partner/purchase/jd/sku.go index 9d8e10a09..5b4ef69b5 100644 --- a/business/partner/purchase/jd/sku.go +++ b/business/partner/purchase/jd/sku.go @@ -159,7 +159,7 @@ func (p *PurchaseHandler) cuSku(sku *model.Sku, handler func(skuExt *skuInfoExt, return err } -func (p *PurchaseHandler) CreateSku(sku *model.Sku) (err error) { +func (p *PurchaseHandler) CreateSku(sku *model.Sku, userName string) (err error) { return p.cuSku(sku, func(skuExt *skuInfoExt, skuName string, shopCategories []int64, addParams map[string]interface{}) (string, error) { return api.JdAPI.AddSku(utils.Int2Str(sku.ID), skuExt.JdCategoryID, shopCategories, skuExt.BrandID, skuName, skuExt.Price, jxutils.IntWeight2Float(sku.Weight), []string{skuExt.Img}, 1, true, addParams) }) @@ -214,7 +214,7 @@ func (p *PurchaseHandler) ReadSku(vendorSkuID string) (skuName *model.SkuName, s return nil, nil, nil, err } -func (p *PurchaseHandler) UpdateSku(sku *model.Sku) (err error) { +func (p *PurchaseHandler) UpdateSku(sku *model.Sku, userName string) (err error) { return p.cuSku(sku, func(skuExt *skuInfoExt, skuName string, shopCategories []int64, addParams map[string]interface{}) (string, error) { params := utils.MergeMaps(addParams) params["categoryId"] = skuExt.JdCategoryID @@ -228,7 +228,7 @@ func (p *PurchaseHandler) UpdateSku(sku *model.Sku) (err error) { }) } -func (p *PurchaseHandler) DeleteSku(sku *model.Sku) (err error) { +func (p *PurchaseHandler) DeleteSku(sku *model.Sku, userName string) (err error) { if !globals.EnableStoreWrite { return nil } diff --git a/controllers/cms_sku.go b/controllers/cms_sku.go index 28c86c4b0..14c09fc93 100644 --- a/controllers/cms_sku.go +++ b/controllers/cms_sku.go @@ -126,8 +126,8 @@ func (c *SkuController) DeleteCategory() { }) } -// @Title 得到京西门店信息 -// @Description 得到京西门店信息,如下条件之间是与的关系 +// @Title 得到商品信息 +// @Description 得到商品信息,如下条件之间是与的关系 // @Param token header string true "认证token" // @Param keyword query string false "查询关键字(可以为空,为空表示不限制)" // @Param id query int false "SkuName ID" @@ -151,3 +151,38 @@ func (c *SkuController) GetSkuNames() { return retVal, "", err }) } + +// @Title 新增商品信息 +// @Description 新增商品信息 +// @Param token header string true "认证token" +// @Param payload formData string true "json数据,SkuNameExt对象(),可传Skus" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /AddSkuName [post] +func (c *SkuController) AddSkuName() { + c.callAddSkuName(func(params *tSkuAddSkuNameParams) (retVal interface{}, errCode string, err error) { + skuName := &cms.SkuNameExt{} + if err = utils.UnmarshalUseNumber([]byte(params.Payload), skuName); err == nil { + retVal, err = cms.AddSkuName(skuName, GetUserNameFromToken(params.Token)) + } + return retVal, "", err + }) +} + +// @Title 修改商品名信息 +// @Description 修改商品名信息 +// @Param token header string true "认证token" +// @Param nameID formData int true "需要修改的商品名ID,payload中的相应数据会被忽略" +// @Param payload formData string true "json数据,SkuNameExt对象(),Skus无效" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /UpdateSkuName [put] +func (c *SkuController) UpdateSkuName() { + c.callUpdateSkuName(func(params *tSkuUpdateSkuNameParams) (retVal interface{}, errCode string, err error) { + payload := make(map[string]interface{}) + if err = utils.UnmarshalUseNumber([]byte(params.Payload), &payload); err == nil { + retVal, err = cms.UpdateSkuName(params.NameID, payload, GetUserNameFromToken(params.Token)) + } + return retVal, "", err + }) +} diff --git a/controllers/cms_store.go b/controllers/cms_store.go index 06b05f29b..5d634792d 100644 --- a/controllers/cms_store.go +++ b/controllers/cms_store.go @@ -198,6 +198,8 @@ func (c *StoreController) UpdateStoreVendorMap() { // @Title 新增门店映射信息 // @Description 新增门店映射信息 // @Param token header string true "认证token" +// @Param storeID formData int true "门店ID,payload中的相应字段会被忽略" +// @Param vendorID formData int true "厂商ID,payload中的相应字段会被忽略" // @Param payload formData string true "json数据,storeMap对象({'vendorID':0,'vendorStoreID':'11732425','autoPickup':1,'deliveryCompetition':1, 'pricePercentage':100})" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult @@ -206,7 +208,7 @@ func (c *StoreController) AddStoreVendorMap() { c.callAddStoreVendorMap(func(params *tStoreAddStoreVendorMapParams) (retVal interface{}, errCode string, err error) { storeMap := &model.StoreMap{} if err = utils.UnmarshalUseNumber([]byte(params.Payload), storeMap); err == nil { - retVal, err = cms.AddStoreVendorMap(nil, storeMap, GetUserNameFromToken(params.Token)) + retVal, err = cms.AddStoreVendorMap(nil, params.StoreID, params.VendorID, storeMap, GetUserNameFromToken(params.Token)) } return retVal, "", err }) diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 048bd9962..4e11ef890 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -135,6 +135,14 @@ func init() { MethodParams: param.Make(), Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"], + beego.ControllerComments{ + Method: "AddSkuName", + Router: `/AddSkuName`, + AllowHTTPMethods: []string{"post"}, + MethodParams: param.Make(), + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"], beego.ControllerComments{ Method: "DeleteCategory", @@ -191,6 +199,14 @@ func init() { MethodParams: param.Make(), Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"], + beego.ControllerComments{ + Method: "UpdateSkuName", + Router: `/UpdateSkuName`, + AllowHTTPMethods: []string{"put"}, + MethodParams: param.Make(), + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"], beego.ControllerComments{ Method: "AddStoreVendorMap",