From 4dcc31e36d7cf9e246a428b1fba6773ee3958b14 Mon Sep 17 00:00:00 2001 From: gazebo Date: Tue, 11 Sep 2018 18:34:59 +0800 Subject: [PATCH] - GetServerInfo added. --- business/jxstore/cms/cms.go | 44 ++++++++++++++++ business/jxstore/cms/sku.go | 13 +---- business/model/sku.go | 24 +++++++-- business/model/store.go | 29 ++++++++++ business/partner/purchase/jd/sku.go | 76 +++++++++++++++++---------- business/partner/purchase/jd/store.go | 10 ++-- controllers/cms.go | 23 ++++++++ controllers/cms_sku.go | 13 ----- main.go | 2 + routers/commentsRouter_controllers.go | 16 +++--- routers/router.go | 5 ++ 11 files changed, 186 insertions(+), 69 deletions(-) create mode 100644 controllers/cms.go diff --git a/business/jxstore/cms/cms.go b/business/jxstore/cms/cms.go index 2980f2c39..92d7b0ee2 100644 --- a/business/jxstore/cms/cms.go +++ b/business/jxstore/cms/cms.go @@ -2,13 +2,57 @@ package cms import ( "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/partner" ) +type MetaData struct { + Units []string `json:"units"` + SpecUnits []string `json:"specUnits"` + + DeliveryRangeType map[int]string `json:"deliveryRangeType"` + DeliveryType map[int]string `json:"deliveryType"` + StoreStatus map[int]string `json:"storeStatus"` + CategoryType map[int]string `json:"categoryType"` + SkuStatus map[int]string `json:"skuStatus"` + VendorName map[int]string `json:"vendorName"` +} + +type ServerInfo struct { + Version string `json:"version"` + BuildDate string `json:"buildDate"` + GitCommit string `json:"gitCommit"` + MetaData MetaData `json:"metaData"` +} + var ( CurVendorSync VendorSync + serverInfo *ServerInfo ) +func InitServerInfo(version, buildDate, gitCommit string) { + serverInfo = &ServerInfo{ + Version: version, + BuildDate: buildDate, + GitCommit: gitCommit, + MetaData: MetaData{ + Units: model.UnitNames, + SpecUnits: model.SpecUnitNames, + + DeliveryRangeType: model.DeliveryTypeName, + DeliveryType: model.DeliveryTypeName, + StoreStatus: model.SkuStatusName, + CategoryType: model.CategoryTypeName, + SkuStatus: model.SkuStatusName, + VendorName: model.VendorChineseNames, + }, + } +} + func GetPurchaseHandler(vendorID int) partner.IPurchasePlatformHandler { return basesch.FixedBaseScheduler.GetPurchasePlatformFromVendorID(vendorID) } + +func GetServerInfo() *ServerInfo { + return serverInfo +} diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index d9c74eec8..618ada743 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -35,13 +35,6 @@ func GetVendorCategories(vendorID int, parentID int) (vendorCats []*model.SkuVen return vendorCats, dao.GetEntities(nil, &vendorCats, cond, false) } -func GetSkuMetaInfo() (*model.SkuMetaInfo, error) { - return &model.SkuMetaInfo{ - Units: model.UnitNames, - SpecUnits: model.SpecUnitNames, - }, nil -} - // parentID 为-1表示所有 func GetCategories(parentID int) (cats []*model.SkuCategory, err error) { if parentID == -1 { @@ -196,7 +189,7 @@ func GetSkuNames(keyword string, params map[string]interface{}, offset, pageSize if params["toStatus"] != nil { toStatus = params["toStatus"].(int) } - sql += " AND t1.status >= ? AND t1.status <= ?" + sql += " AND t2.status >= ? AND t2.status <= ?" sqlParams = append(sqlParams, fromStatus, toStatus) } sql += ` @@ -210,7 +203,6 @@ func GetSkuNames(keyword string, params map[string]interface{}, offset, pageSize t1.comment, t1.brand_id, t1.category_id, - t1.status, t1.is_global, t1.unit, t1.price, @@ -229,13 +221,12 @@ func GetSkuNames(keyword string, params map[string]interface{}, offset, pageSize t1.comment, t1.brand_id, t1.category_id, - t1.status, t1.is_global, t1.unit, t1.price, t1.img, t1.elm_img_hash_code, - CONCAT("[", GROUP_CONCAT(CONCAT('{"id":', t2.id, ',"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(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 ` + sql + ` ORDER BY t1.id LIMIT ? OFFSET ?` diff --git a/business/model/sku.go b/business/model/sku.go index 11ef721aa..634afc9c9 100644 --- a/business/model/sku.go +++ b/business/model/sku.go @@ -13,8 +13,9 @@ const ( ) const ( - SkuNameStatusNormal = 0 - SkuNameStatusDontSale = 1 + SkuStatusDeleted = -1 + SkuStatusDontSale = 0 + SkuStatusNormal = 1 ) var ( @@ -52,6 +53,23 @@ var ( } ) +var ( + CategoryTypeName map[int]string + SkuStatusName map[int]string +) + +func init() { + CategoryTypeName = map[int]string{ + SkuCategoryNormal: "普通类别", + SkuCategorySpecial: "特殊类别", + } + SkuStatusName = map[int]string{ + SkuStatusDeleted: "删除", + SkuStatusDontSale: "下架", + SkuStatusNormal: "上架", + } +} + // 这个指的是厂商(比如京东到家,饿百)自已的商品分类,与商家自己的商品分类是两回事 type SkuVendorCategory struct { ModelIDCUL @@ -103,7 +121,6 @@ type SkuName struct { BrandID int `orm:"column(brand_id);default(0)" json:"brandID"` // 此属性暂时没有使用 CategoryID int `orm:"column(category_id)" json:"categoryID"` // 标准类别 - Status int `json:"status"` IsGlobal int8 `orm:"default(1)" json:"isGlobal"` // 是否是全部(全国)可见,如果否的话,可见性由SkuPlace决定 Unit string `orm:"size(8)" json:"unit"` @@ -126,6 +143,7 @@ type Sku struct { SpecQuality float32 `json:"specQuality"` SpecUnit string `orm:"size(8)" json:"specUnit"` // 质量或容量 Weight int `json:"weight"` // 重量/质量,单位为克,当相应的SkuName的SpecUnit为g或kg时,必须等于SpecQuality + Status int `json:"status"` JdID int64 `orm:"column(jd_id)" json:"jdID"` JdSyncStatus int8 `orm:"default(2)" json:"jdSyncStatus"` diff --git a/business/model/store.go b/business/model/store.go index 2159ec232..854aaad1f 100644 --- a/business/model/store.go +++ b/business/model/store.go @@ -17,6 +17,35 @@ const ( DeliveryRangeTypeRadius = 3 ) +const ( + StoreDeliveryTypeCrowdSourcing = 0 //缺省,平台众包配送,可转自送 + StoreDeliveryTypeByPlatform = 1 //平台专送 + StoreDeliveryTypeByStore = 2 //完全门店自送 +) + +var ( + StoreStatusName map[int]string + DeliveryRangeTypeName map[int]string + DeliveryTypeName map[int]string +) + +func init() { + StoreStatusName = map[int]string{ + StoreStatusDisabled: "禁用", + StoreStatusClosed: "休息", + StoreStatusOpened: "营业中", + } + DeliveryRangeTypeName = map[int]string{ + DeliveryRangeTypePolygon: "多边形", + DeliveryRangeTypeRadius: "圆", + } + DeliveryTypeName = map[int]string{ + StoreDeliveryTypeCrowdSourcing: "平台众包配送", + StoreDeliveryTypeByPlatform: "平台专送", + StoreDeliveryTypeByStore: "门店自送", + } +} + type Store struct { ModelIDCUL diff --git a/business/partner/purchase/jd/sku.go b/business/partner/purchase/jd/sku.go index 5b4ef69b5..a2b904117 100644 --- a/business/partner/purchase/jd/sku.go +++ b/business/partner/purchase/jd/sku.go @@ -25,10 +25,6 @@ type skuInfoExt struct { } func (p *PurchaseHandler) CreateCategory(cat *model.SkuCategory, userName string) (err error) { - if !globals.EnableStoreWrite { - return nil - } - var jdPid int64 if cat.ParentID != 0 { pCat := &model.SkuCategory{} @@ -39,9 +35,11 @@ func (p *PurchaseHandler) CreateCategory(cat *model.SkuCategory, userName string return err } } - result, err := api.JdAPI.AddShopCategory(jdPid, cat.Name, int(cat.Level), cat.Seq, userName) - if err == nil { - cat.JdID = utils.Str2Int64(result) + if globals.EnableStoreWrite { + result, err2 := api.JdAPI.AddShopCategory(jdPid, cat.Name, int(cat.Level), cat.Seq, userName) + if err = err2; err == nil { + cat.JdID = utils.Str2Int64(result) + } } return err } @@ -81,7 +79,6 @@ func (p *PurchaseHandler) UpdateCategory(cat *model.SkuCategory, userName string if !globals.EnableStoreWrite { return nil } - return api.JdAPI.UpdateShopCategory(cat.JdID, cat.Name) } @@ -89,31 +86,24 @@ func (p *PurchaseHandler) DeleteCategory(cat *model.SkuCategory, userName string if !globals.EnableStoreWrite { return nil } - return api.JdAPI.DelShopCategory(cat.JdID) } func (p *PurchaseHandler) ReorderCategories(parentCat *model.SkuCategory, userName string) (err error) { - if !globals.EnableStoreWrite { - return nil - } - var cats []*model.SkuCategory if err = dao.GetRows(nil, &cats, "SELECT * FROM sku_category WHERE parent_id = ? ORDER BY seq", parentCat.ID); err == nil { jdCatIDs := make([]int64, len(cats)) for k, v := range cats { jdCatIDs[k] = v.JdID } - err = api.JdAPI.ChangeShopCategoryOrder(parentCat.JdID, jdCatIDs) + if globals.EnableStoreWrite { + err = api.JdAPI.ChangeShopCategoryOrder(parentCat.JdID, jdCatIDs) + } } return err } func (p *PurchaseHandler) cuSku(sku *model.Sku, handler func(skuExt *skuInfoExt, skuName string, shopCategories []int64, addParams map[string]interface{}) (string, error)) (err error) { - if !globals.EnableStoreWrite { - return nil - } - var otherInfo skuInfoExt db := dao.GetDB() err = dao.GetRow(nil, &otherInfo, ` @@ -160,8 +150,11 @@ func (p *PurchaseHandler) cuSku(sku *model.Sku, handler func(skuExt *skuInfoExt, } 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) + return p.cuSku(sku, func(skuExt *skuInfoExt, skuName string, shopCategories []int64, addParams map[string]interface{}) (vendorSkuID string, err error) { + if globals.EnableStoreWrite { + vendorSkuID, err = 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) + } + return vendorSkuID, err }) } @@ -189,9 +182,9 @@ func (p *PurchaseHandler) ReadSku(vendorSkuID string) (skuName *model.SkuName, s SpecUnit: specUnit, Weight: jxutils.FloatWeight2Int(float32(utils.MustInterface2Float64(mapData["weight"]))), JdID: utils.MustInterface2Int64(mapData["skuId"]), + Status: jdStatus2jxStatus(int(utils.MustInterface2Int64(mapData["fixedStatus"]))), } sku.ID = int(utils.Str2Int64(utils.Interface2String(mapData["outSkuId"]))) - db := dao.GetDB() shopCategories := utils.Interface2Int64List(mapData["shopCategories"]) if len(shopCategories) > 0 { @@ -215,7 +208,7 @@ func (p *PurchaseHandler) ReadSku(vendorSkuID string) (skuName *model.SkuName, s } 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) { + return p.cuSku(sku, func(skuExt *skuInfoExt, skuName string, shopCategories []int64, addParams map[string]interface{}) (vendorSkuID string, err error) { params := utils.MergeMaps(addParams) params["categoryId"] = skuExt.JdCategoryID params["shopCategories"] = shopCategories @@ -223,19 +216,44 @@ func (p *PurchaseHandler) UpdateSku(sku *model.Sku, userName string) (err error) params["skuName"] = skuName params["weight"] = jxutils.IntWeight2Float(sku.Weight) params["images"] = []string{skuExt.Img} - - return api.JdAPI.UpdateSku(utils.Int2Str(sku.ID), params) + params["fixedStatus"] = jxStatus2jdStatus(sku.Status) + if globals.EnableStoreWrite { + vendorSkuID, err = api.JdAPI.UpdateSku(utils.Int2Str(sku.ID), params) + } + return vendorSkuID, err }) } func (p *PurchaseHandler) DeleteSku(sku *model.Sku, userName string) (err error) { - if !globals.EnableStoreWrite { - return nil - } - params := map[string]interface{}{ "fixedStatus": 4, } - _, err = api.JdAPI.UpdateSku(utils.Int2Str(sku.ID), params) + if globals.EnableStoreWrite { + _, err = api.JdAPI.UpdateSku(utils.Int2Str(sku.ID), params) + } return err } + +func jdStatus2jxStatus(jdStatus int) (jxStatus int) { + switch jdStatus { + case 1: + jxStatus = model.SkuStatusNormal + case 2: + jxStatus = model.SkuStatusDontSale + case 4: + jxStatus = model.SkuStatusDeleted + } + return jxStatus +} + +func jxStatus2jdStatus(jxStatus int) (jdStatus int) { + switch jxStatus { + case model.SkuStatusNormal: + jdStatus = 1 + case model.SkuStatusDontSale: + jdStatus = 2 + case model.SkuStatusDeleted: + jdStatus = 4 + } + return jdStatus +} diff --git a/business/partner/purchase/jd/store.go b/business/partner/purchase/jd/store.go index 267f62db8..b794a0571 100644 --- a/business/partner/purchase/jd/store.go +++ b/business/partner/purchase/jd/store.go @@ -62,10 +62,7 @@ func (p *PurchaseHandler) ReadStore(vendorStoreID string) (*model.Store, error) return nil, err } -func (p *PurchaseHandler) UpdateStore(vendorStoreID string, store *model.Store, userName string) error { - if !globals.EnableStoreWrite { - return nil - } +func (p *PurchaseHandler) UpdateStore(vendorStoreID string, store *model.Store, userName string) (err error) { params := map[string]interface{}{ "outSystemId": utils.Int2Str(int(store.ID)), "stationName": store.Name, @@ -88,7 +85,10 @@ func (p *PurchaseHandler) UpdateStore(vendorStoreID string, store *model.Store, } _, params["closeStatus"] = JxStoreStatus2JdStatus(store.Status) // globals.SugarLogger.Debug(utils.Format4Output(params, false)) - return api.JdAPI.UpdateStoreInfo4Open(vendorStoreID, userName, params) + if globals.EnableStoreWrite { + err = api.JdAPI.UpdateStoreInfo4Open(vendorStoreID, userName, params) + } + return err } // 没用 diff --git a/controllers/cms.go b/controllers/cms.go new file mode 100644 index 000000000..0595f424b --- /dev/null +++ b/controllers/cms.go @@ -0,0 +1,23 @@ +package controllers + +import ( + "git.rosy.net.cn/jx-callback/business/jxstore/cms" + "github.com/astaxie/beego" +) + +type CmsController struct { + beego.Controller +} + +// @Title 得到服务相关的一些基础信息 +// @Description 得到服务相关的一些基础信息,包括版本,及一些元数据信息 +// @Param token header string true "认证token" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /GetServerInfo [get] +func (c *CmsController) GetServerInfo() { + c.callGetServerInfo(func(params *tCmsGetServerInfoParams) (retVal interface{}, errCode string, err error) { + retVal = cms.GetServerInfo() + return retVal, "", err + }) +} diff --git a/controllers/cms_sku.go b/controllers/cms_sku.go index 14c09fc93..d88f6b044 100644 --- a/controllers/cms_sku.go +++ b/controllers/cms_sku.go @@ -29,19 +29,6 @@ func (c *SkuController) GetVendorCategories() { }) } -// @Title 得到商品相关的一些基础信息 -// @Description 得到商品相关的一些基础信息,包括unit列表,specUnit列表 -// @Param token header string true "认证token" -// @Success 200 {object} controllers.CallResult -// @Failure 200 {object} controllers.CallResult -// @router /GetSkuMetaInfo [get] -func (c *SkuController) GetSkuMetaInfo() { - c.callGetSkuMetaInfo(func(params *tSkuGetSkuMetaInfoParams) (retVal interface{}, errCode string, err error) { - retVal, err = cms.GetSkuMetaInfo() - return retVal, "", err - }) -} - // @Title 得到商品类别 // @Description 得到商品类别(区别于厂商家SKU类别) // @Param token header string true "认证token" diff --git a/main.go b/main.go index 51399d1f5..93de498a6 100644 --- a/main.go +++ b/main.go @@ -6,6 +6,7 @@ import ( "os" "git.rosy.net.cn/jx-callback/business/jxcallback/orderman" + "git.rosy.net.cn/jx-callback/business/jxstore/cms" "git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals/api" "git.rosy.net.cn/jx-callback/globals/beegodb" @@ -25,6 +26,7 @@ var ( func Init() { // globals.Init() + cms.InitServerInfo(Version, BuildDate, GitCommit) beegodb.Init() api.Init() } diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 4e11ef890..223b35a60 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -55,6 +55,14 @@ func init() { MethodParams: param.Make(), Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:CmsController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:CmsController"], + beego.ControllerComments{ + Method: "GetServerInfo", + Router: `/GetServerInfo`, + AllowHTTPMethods: []string{"get"}, + MethodParams: param.Make(), + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"], beego.ControllerComments{ Method: "CreateWaybillOnProviders", @@ -159,14 +167,6 @@ 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: "GetSkuMetaInfo", - Router: `/GetSkuMetaInfo`, - AllowHTTPMethods: []string{"get"}, - 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: "GetSkuNames", diff --git a/routers/router.go b/routers/router.go index 33feece34..429f77ede 100644 --- a/routers/router.go +++ b/routers/router.go @@ -36,6 +36,11 @@ func init() { &controllers.AuthController{}, ), ), + beego.NSNamespace("/cms", + beego.NSInclude( + &controllers.CmsController{}, + ), + ), ) beego.AddNamespace(ns)