From 2350e182a53f779b23cbf982c3fedb11ebb0c0b0 Mon Sep 17 00:00:00 2001 From: gazebo Date: Fri, 14 Sep 2018 15:44:13 +0800 Subject: [PATCH] - up. --- business/jxstore/cms/sku.go | 25 +++++---- business/model/sku.go | 9 ++++ business/partner/partner.go | 13 ++++- business/partner/purchase/elm/sku.go | 4 +- business/partner/purchase/jd/sku.go | 73 +++++++++++++++++---------- controllers/cms_sku.go | 17 ++++++- routers/commentsRouter_controllers.go | 8 +++ 7 files changed, 104 insertions(+), 45 deletions(-) diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index 360a0e1b4..f6a24ea01 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -12,18 +12,9 @@ import ( "git.rosy.net.cn/jx-callback/business/model/dao" ) -type SkuNameExt struct { - model.SkuName - Skus []*model.Sku `orm:"-" json:"skus"` - SkusStr string `json:"-"` - - Places []int `orm:"-" json:"places"` - PlacesStr string `json:"-"` -} - type SkuNamesInfo struct { - TotalCount int `json:"totalCount"` - SkuNames []*SkuNameExt `json:"skuNames"` + TotalCount int `json:"totalCount"` + SkuNames []*model.SkuNameExt `json:"skuNames"` } var ( @@ -295,7 +286,7 @@ func GetSkuNames(keyword string, params map[string]interface{}, offset, pageSize return skuNamesInfo, err } -func AddSkuName(skuNameExt *SkuNameExt, userName string) (outSkuNameExt *SkuNameExt, err error) { +func AddSkuName(skuNameExt *model.SkuNameExt, userName string) (outSkuNameExt *model.SkuNameExt, err error) { if skuNameExt.CategoryID == 0 { return nil, errors.New("CategoryID不能为空") } @@ -406,7 +397,7 @@ func DeleteSkuName(nameID int, userName string) (num int64, err error) { return num, err } -func AddSku(nameID int, sku *model.Sku, userName string) (outSkuNameExt *SkuNameExt, err error) { +func AddSku(nameID int, sku *model.Sku, userName string) (outSkuNameExt *model.SkuNameExt, err error) { db := dao.GetDB() dao.WrapAddIDCULDEntity(sku, userName) sku.JdSyncStatus = model.SyncFlagNewMask @@ -484,3 +475,11 @@ func DeleteSkuNamePlace(nameID, placeCode int, userName string) (num int64, err } return num, err } + +func GetVendorSku(vendorID int, vendorSkuID string) (skuNameInfo *model.SkuNameExt, err error) { + handler := GetPurchaseHandler(vendorID) + if handler != nil { + return handler.ReadSku(vendorSkuID) + } + return nil, ErrCanNotVendor +} diff --git a/business/model/sku.go b/business/model/sku.go index 332b6b152..dbc2dc738 100644 --- a/business/model/sku.go +++ b/business/model/sku.go @@ -203,3 +203,12 @@ func (*SkuNamePlaceBind) TableUnique() [][]string { []string{"NameID", "PlaceCode"}, } } + +type SkuNameExt struct { + SkuName + Skus []*Sku `orm:"-" json:"skus"` + SkusStr string `json:"-"` + + Places []int `orm:"-" json:"places"` + PlacesStr string `json:"-"` +} diff --git a/business/partner/partner.go b/business/partner/partner.go index 0618bc44c..a13385ffb 100644 --- a/business/partner/partner.go +++ b/business/partner/partner.go @@ -1,6 +1,7 @@ package partner import ( + "errors" "time" "git.rosy.net.cn/jx-callback/business/model" @@ -19,6 +20,10 @@ var ( CancelWaybillReasonStrActive = "操作由人员主动发起" ) +var ( + ErrCanNotFindItem = errors.New("没有找到指定的东西") +) + var ( CurOrderManager IOrderManager ) @@ -72,9 +77,15 @@ type IPurchasePlatformHandler interface { ReorderCategories(parentCat *model.SkuCategory, userName string) (err error) CreateSku(sku *model.Sku, userName string) (err error) - ReadSku(vendorSkuID string) (skuName *model.SkuName, sellPlaces []*model.Place, sku *model.Sku, err error) + ReadSku(vendorSkuID string) (skuNameExt *model.SkuNameExt, err error) UpdateSku(sku *model.Sku, userName string) (err error) DeleteSku(sku *model.Sku, userName string) (err error) + + //store sku + // CreateStoreSku(storeID int, sku *model.Sku, userName string) (err error) + // ReadStoreSku(vendorSkuID string) (skuName *model.SkuName, sellPlaces []*model.Place, sku *model.Sku, err error) + // UpdateStoreSku(storeID int, sku *model.Sku, userName string) (err error) + // DeleteStoreSku(storeID int, 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 ceafc5dee..4b39a4359 100644 --- a/business/partner/purchase/elm/sku.go +++ b/business/partner/purchase/elm/sku.go @@ -30,8 +30,8 @@ func (p *PurchaseHandler) CreateSku(sku *model.Sku, userName string) (err error) return nil } -func (p *PurchaseHandler) ReadSku(vendorSkuID string) (skuName *model.SkuName, sellPlaces []*model.Place, sku *model.Sku, err error) { - return nil, nil, nil, nil +func (p *PurchaseHandler) ReadSku(vendorSkuID string) (skuNameExt *model.SkuNameExt, err error) { + return nil, nil } func (p *PurchaseHandler) UpdateSku(sku *model.Sku, userName string) (err error) { diff --git a/business/partner/purchase/jd/sku.go b/business/partner/purchase/jd/sku.go index 0c1268723..f1ba020f8 100644 --- a/business/partner/purchase/jd/sku.go +++ b/business/partner/purchase/jd/sku.go @@ -7,6 +7,7 @@ import ( "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" + "git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals/api" ) @@ -19,9 +20,9 @@ const ( type skuInfoExt struct { model.SkuName Img string - JdID int64 // 商家类别 - JdCategoryID int // 到家类别 - SkuCatID int64 // 商家特殊类别 + JdID int64 `orm:"column(jd_id)"` // 商家类别 + JdCategoryID int `orm:"column(jd_category_id)"` // 到家类别 + SkuCatID int64 `orm:"column(sku_cat_id)"` // 商家特殊类别 } func (p *PurchaseHandler) CreateCategory(cat *model.SkuCategory, userName string) (err error) { @@ -158,10 +159,15 @@ func (p *PurchaseHandler) CreateSku(sku *model.Sku, userName string) (err error) }) } -func (p *PurchaseHandler) ReadSku(vendorSkuID string) (skuName *model.SkuName, sellPlaces []*model.Place, sku *model.Sku, err error) { - result, _, err := api.JdAPI.QuerySkuInfos("", int(utils.Str2Int64(vendorSkuID)), 0, 0, false) +func (p *PurchaseHandler) ReadSku(vendorSkuID string) (skuNameExt *model.SkuNameExt, err error) { + jdSkuID := utils.Str2Int64(vendorSkuID) + result, _, err := api.JdAPI.QuerySkuInfos("", jdSkuID, 0, 0, false) if err == nil { if len(result) == 1 { + skuNameExt = &model.SkuNameExt{} + if picInfo, err2 := api.JdAPI.QueryListBySkuIds([]int64{jdSkuID}, nil); err2 == nil && len(picInfo) > 0 { + skuNameExt.Img = utils.Interface2String(picInfo[0]["sourceImgUrl"]) + } mapData := result[0] skuNameStr := utils.Interface2String(mapData["skuName"]) prefix, name, comment, specUnit, unit, specQuality := jxutils.SplitSkuName(skuNameStr) @@ -170,42 +176,53 @@ func (p *PurchaseHandler) ReadSku(vendorSkuID string) (skuName *model.SkuName, s unit = "份" specUnit = "g" } - skuName = &model.SkuName{ - Prefix: prefix, - Name: name, - Comment: comment, - Unit: unit, - Price: int(utils.MustInterface2Int64(mapData["skuPrice"])), + skuNameExt.Prefix = prefix + skuNameExt.Name = name + skuNameExt.Comment = comment + skuNameExt.Unit = unit + skuNameExt.Price = int(utils.MustInterface2Int64(mapData["skuPrice"])) + skuNameExt.Skus = []*model.Sku{ + &model.Sku{ + SpecQuality: specQuality, + SpecUnit: specUnit, + Weight: jxutils.FloatWeight2Int(float32(utils.MustInterface2Float64(mapData["weight"]))), + JdID: utils.MustInterface2Int64(mapData["skuId"]), + Status: jdStatus2jxStatus(int(utils.MustInterface2Int64(mapData["fixedStatus"]))), + }, } - sku = &model.Sku{ - SpecQuality: specQuality, - 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"]))) + skuNameExt.Skus[0].ID = int(utils.Str2Int64(utils.Interface2String(mapData["outSkuId"]))) + db := dao.GetDB() shopCategories := utils.Interface2Int64List(mapData["shopCategories"]) if len(shopCategories) > 0 { skuCat := &model.SkuCategory{} skuCat.JdID = shopCategories[0] if dao.GetEntity(db, skuCat, "JdID") == nil { - skuName.CategoryID = skuCat.ID + skuNameExt.CategoryID = skuCat.ID } } sellCities := utils.Interface2Int64List(mapData["sellCities"]) - if len(sellCities) == 0 { - skuName.IsGlobal = 1 - } else { - sellPlaces = make([]*model.Place, 0) - err2 := dao.GetRows(db, &sellPlaces, "SELECT * FROM place WHERE jd_code IN (?) AND level = 2", sellCities) - globals.SugarLogger.Debug("err2:%v", err2) + for _, v := range sellCities { + if v == 0 { + skuNameExt.IsGlobal = 1 + } } - return skuName, sellPlaces, sku, nil + if len(sellCities) == 0 || skuNameExt.IsGlobal == 1 { + skuNameExt.IsGlobal = 1 + } else { + var places []*model.Place + if err = dao.GetRows(db, &places, "SELECT * FROM place WHERE jd_code IN ("+dao.GenQuestionMarks(len(sellCities))+") AND level = 2", sellCities); err == nil { + skuNameExt.Places = make([]int, len(places)) + for k, v := range places { + skuNameExt.Places[k] = v.Code + } + } + } + } else { + err = partner.ErrCanNotFindItem } } - return nil, nil, nil, err + return skuNameExt, err } func (p *PurchaseHandler) UpdateSku(sku *model.Sku, userName string) (err error) { diff --git a/controllers/cms_sku.go b/controllers/cms_sku.go index 85a0eb4ec..a45a54d92 100644 --- a/controllers/cms_sku.go +++ b/controllers/cms_sku.go @@ -150,7 +150,7 @@ func (c *SkuController) GetSkuNames() { // @router /AddSkuName [post] func (c *SkuController) AddSkuName() { c.callAddSkuName(func(params *tSkuAddSkuNameParams) (retVal interface{}, errCode string, err error) { - skuName := &cms.SkuNameExt{} + skuName := &model.SkuNameExt{} if err = utils.UnmarshalUseNumber([]byte(params.Payload), skuName); err == nil { retVal, err = cms.AddSkuName(skuName, GetUserNameFromToken(params.Token)) } @@ -269,3 +269,18 @@ func (c *SkuController) DeleteSkuNamePlace() { return retVal, "", err }) } + +// @Title 远程查询厂商SKU信息 +// @Description 远程查询厂商SKU信息,这个是实时调用API远程查询 +// @Param token header string true "认证token" +// @Param vendorSkuID query string true "sku ID" +// @Param vendorID query int true "门店所属的厂商ID" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /GetVendorSku [get] +func (c *SkuController) GetVendorSku() { + c.callGetVendorSku(func(params *tSkuGetVendorSkuParams) (retVal interface{}, errCode string, err error) { + retVal, err = cms.GetVendorSku(params.VendorID, params.VendorSkuID) + return retVal, "", err + }) +} diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 679ba8751..0ddb35d7a 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -231,6 +231,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: "GetVendorSku", + Router: `/GetVendorSku`, + 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: "ReorderCategories",