From 6dbadf0569497e9a7dbc3a428a436c787ed3190a Mon Sep 17 00:00:00 2001 From: gazebo Date: Thu, 18 Oct 2018 09:49:04 +0800 Subject: [PATCH] - store courier map --- business/jxstore/cms/store.go | 71 +++++++++++++++++++++++++++ business/jxstore/cms/sync.go | 10 +++- business/model/store.go | 8 +-- controllers/cms_store.go | 71 +++++++++++++++++++++++++++ routers/commentsRouter_controllers.go | 32 ++++++++++++ 5 files changed, 186 insertions(+), 6 deletions(-) diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index 0f4e3f301..7c56f9876 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -6,6 +6,7 @@ import ( "strings" "git.rosy.net.cn/baseapi/utils" + "git.rosy.net.cn/jx-callback/business/jxcallback/scheduler/basesch" "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model/dao" @@ -368,3 +369,73 @@ func TmpGetJxBadCommentsByStoreId(storeID, page, size, commentType int) (retVal } return retVal, err } + +func GetStoreCourierMaps(db *dao.DaoDB, storeID int, vendorID int) (storeCourierMaps []*model.StoreCourierMap, err error) { + cond := map[string]interface{}{ + model.FieldStoreID: storeID, + } + if vendorID != -1 { + cond[model.FieldVendorID] = vendorID + } + return storeCourierMaps, dao.GetEntitiesByKV(db, &storeCourierMaps, cond, false) +} + +func AddStoreCourierMap(db *dao.DaoDB, storeID, vendorID int, storeCourierMap *model.StoreCourierMap, userName string) (outStoreCourierMap *model.StoreCourierMap, err error) { + if handler := basesch.FixedBaseScheduler.GetDeliveryPlatformFromVendorID(vendorID); handler != nil { + dao.WrapAddIDCULDEntity(storeCourierMap, userName) + storeCourierMap.StoreID = storeID + storeCourierMap.VendorID = vendorID + if db == nil { + db = dao.GetDB() + } + dao.Begin(db) + defer func() { + if r := recover(); r != nil { + dao.Rollback(db) + panic(r) + } + }() + if err = dao.CreateEntity(db, storeCourierMap); err == nil { + dao.Commit(db) + outStoreCourierMap = storeCourierMap + err = CurVendorSync.SyncStore(db, storeCourierMap.VendorID, storeID, true, userName) + } + if err != nil { + dao.Rollback(db) + } + } else { + err = ErrCanNotFindVendor + } + return outStoreCourierMap, err +} + +func DeleteStoreCourierMap(db *dao.DaoDB, storeID, vendorID int, userName string) (num int64, err error) { + if db == nil { + db = dao.GetDB() + } + storeCourierMap := &model.StoreCourierMap{} + if num, err = dao.DeleteEntityLogically(db, storeCourierMap, map[string]interface{}{ + model.FieldStatus: model.StoreStatusDisabled, + }, userName, map[string]interface{}{ + model.FieldStoreID: storeID, + model.FieldVendorID: vendorID, + }); err == nil && num > 0 { + err = CurVendorSync.SyncStore(db, vendorID, storeID, true, userName) + } + return num, err +} + +func UpdateStoreCourierMap(db *dao.DaoDB, storeID, vendorID int, payload map[string]interface{}, userName string) (num int64, err error) { + if db == nil { + db = dao.GetDB() + } + dummyStoreCourierMap := &model.StoreCourierMap{} + valid := dao.NormalMakeMapByStructObject(payload, dummyStoreCourierMap, userName) + if len(valid) > 0 { + num, err = dao.UpdateEntityLogically(db, dummyStoreCourierMap, valid, userName, map[string]interface{}{ + model.FieldStoreID: storeID, + model.FieldVendorID: vendorID, + }) + } + return num, err +} diff --git a/business/jxstore/cms/sync.go b/business/jxstore/cms/sync.go index 169183c43..691daae8b 100644 --- a/business/jxstore/cms/sync.go +++ b/business/jxstore/cms/sync.go @@ -98,11 +98,17 @@ func (v *VendorSync) GetStoreHandler(vendorID int) partner.IPurchasePlatformHand } func (v *VendorSync) GetMultiStoreHandler(vendorID int) partner.IMultipleStoresHandler { - return v.PurchaseHandlers[vendorID].(partner.IMultipleStoresHandler) + if v.PurchaseHandlers[vendorID] != nil { + return v.PurchaseHandlers[vendorID].(partner.IMultipleStoresHandler) + } + return nil } func (v *VendorSync) GetSingleStoreHandler(vendorID int) partner.ISingleStoreHandler { - return v.PurchaseHandlers[vendorID].(partner.ISingleStoreHandler) + if v.PurchaseHandlers[vendorID] != nil { + return v.PurchaseHandlers[vendorID].(partner.ISingleStoreHandler) + } + return nil } func (v *VendorSync) SyncCategory(db *dao.DaoDB, categoryID int, isForce bool, userName string) (err error) { diff --git a/business/model/store.go b/business/model/store.go index aacf19d16..36271676b 100644 --- a/business/model/store.go +++ b/business/model/store.go @@ -184,10 +184,10 @@ func (*StoreMap) TableUnique() [][]string { type StoreCourierMap struct { ModelIDCULD - StoreID int `orm:"column(store_id)"` - VendorID int `orm:"column(vendor_id)"` - VendorStoreID string `orm:"column(vendor_store_id);size(48)"` - Status int + StoreID int `orm:"column(store_id)" json:"storeID"` + VendorID int `orm:"column(vendor_id)" json:"vendorID"` + VendorStoreID string `orm:"column(vendor_store_id);size(48)" json:"vendorStoreID"` + Status int `json:"status"` } func (*StoreCourierMap) TableUnique() [][]string { diff --git a/controllers/cms_store.go b/controllers/cms_store.go index d48906966..4000f00c9 100644 --- a/controllers/cms_store.go +++ b/controllers/cms_store.go @@ -200,3 +200,74 @@ func (c *StoreController) TmpGetJxBadCommentsByStoreId() { return retVal, "", err }) } + +// @Title 得到门店快递映射信息 +// @Description 得到门店快递映射信息 +// @Param token header string true "认证token" +// @Param storeID query int true "门店ID" +// @Param vendorID query int false "厂商ID(缺省为全部)" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /GetStoreCourierMaps [get] +func (c *StoreController) GetStoreCourierMaps() { + c.callGetStoreCourierMaps(func(params *tStoreGetStoreCourierMapsParams) (retVal interface{}, errCode string, err error) { + if c.GetString("vendorID") == "" { + params.VendorID = -1 + } + retVal, err = cms.GetStoreCourierMaps(nil, params.StoreID, params.VendorID) + return retVal, "", err + }) +} + +// @Title 修改门店快递映射信息 +// @Description 修改门店快递映射信息 +// @Param token header string true "认证token" +// @Param storeID query int true "门店ID,payload中的相应字段会被忽略" +// @Param vendorID query int true "快递厂商ID,payload中的相应字段会被忽略" +// @Param payload formData string true "json数据,StoreCourierMap对象(当前只有status, vendorStoreId两项)" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /UpdateStoreCourierMap [put] +func (c *StoreController) UpdateStoreCourierMap() { + c.callUpdateStoreCourierMap(func(params *tStoreUpdateStoreCourierMapParams) (retVal interface{}, errCode string, err error) { + storeCourierMap := make(map[string]interface{}) + if err = utils.UnmarshalUseNumber([]byte(params.Payload), &storeCourierMap); err == nil { + retVal, err = cms.UpdateStoreCourierMap(nil, params.StoreID, params.VendorID, storeCourierMap, GetUserNameFromToken(params.Token)) + } + return retVal, "", err + }) +} + +// @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数据,StoreCourierMap对象(当前只有status, vendorStoreId两项)" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /AddStoreCourierMap [post] +func (c *StoreController) AddStoreCourierMap() { + c.callAddStoreCourierMap(func(params *tStoreAddStoreCourierMapParams) (retVal interface{}, errCode string, err error) { + storeCourierMap := &model.StoreCourierMap{} + if err = utils.UnmarshalUseNumber([]byte(params.Payload), storeCourierMap); err == nil { + retVal, err = cms.AddStoreCourierMap(nil, params.StoreID, params.VendorID, storeCourierMap, GetUserNameFromToken(params.Token)) + } + return retVal, "", err + }) +} + +// @Title 删除门店快递映射信息 +// @Description 删除门店快递映射信息 +// @Param token header string true "认证token" +// @Param storeID query int true "门店ID" +// @Param vendorID query int true "快递厂商ID" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /DeleteStoreCourierMap [delete] +func (c *StoreController) DeleteStoreCourierMap() { + c.callDeleteStoreCourierMap(func(params *tStoreDeleteStoreCourierMapParams) (retVal interface{}, errCode string, err error) { + retVal, err = cms.DeleteStoreCourierMap(nil, params.StoreID, params.VendorID, GetUserNameFromToken(params.Token)) + return retVal, "", err + }) +} diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 6d7f7192a..57e94fbe7 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -359,6 +359,14 @@ func init() { 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: "AddStoreCourierMap", + Router: `/AddStoreCourierMap`, + AllowHTTPMethods: []string{"post"}, + 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", @@ -375,6 +383,14 @@ func init() { 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: "DeleteStoreCourierMap", + Router: `/DeleteStoreCourierMap`, + AllowHTTPMethods: []string{"delete"}, + 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: "DeleteStoreVendorMap", @@ -383,6 +399,14 @@ func init() { 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: "GetStoreCourierMaps", + Router: `/GetStoreCourierMaps`, + AllowHTTPMethods: []string{"get"}, + 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: "GetStoreVendorMaps", @@ -431,6 +455,14 @@ func init() { 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: "UpdateStoreCourierMap", + Router: `/UpdateStoreCourierMap`, + 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: "UpdateStoreVendorMap",