This commit is contained in:
gazebo
2018-09-14 15:44:13 +08:00
parent 87ddd8aa52
commit 2350e182a5
7 changed files with 104 additions and 45 deletions

View File

@@ -12,18 +12,9 @@ import (
"git.rosy.net.cn/jx-callback/business/model/dao" "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 { type SkuNamesInfo struct {
TotalCount int `json:"totalCount"` TotalCount int `json:"totalCount"`
SkuNames []*SkuNameExt `json:"skuNames"` SkuNames []*model.SkuNameExt `json:"skuNames"`
} }
var ( var (
@@ -295,7 +286,7 @@ func GetSkuNames(keyword string, params map[string]interface{}, offset, pageSize
return skuNamesInfo, err 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 { if skuNameExt.CategoryID == 0 {
return nil, errors.New("CategoryID不能为空") return nil, errors.New("CategoryID不能为空")
} }
@@ -406,7 +397,7 @@ func DeleteSkuName(nameID int, userName string) (num int64, err error) {
return num, err 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() db := dao.GetDB()
dao.WrapAddIDCULDEntity(sku, userName) dao.WrapAddIDCULDEntity(sku, userName)
sku.JdSyncStatus = model.SyncFlagNewMask sku.JdSyncStatus = model.SyncFlagNewMask
@@ -484,3 +475,11 @@ func DeleteSkuNamePlace(nameID, placeCode int, userName string) (num int64, err
} }
return num, 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
}

View File

@@ -203,3 +203,12 @@ func (*SkuNamePlaceBind) TableUnique() [][]string {
[]string{"NameID", "PlaceCode"}, []string{"NameID", "PlaceCode"},
} }
} }
type SkuNameExt struct {
SkuName
Skus []*Sku `orm:"-" json:"skus"`
SkusStr string `json:"-"`
Places []int `orm:"-" json:"places"`
PlacesStr string `json:"-"`
}

View File

@@ -1,6 +1,7 @@
package partner package partner
import ( import (
"errors"
"time" "time"
"git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model"
@@ -19,6 +20,10 @@ var (
CancelWaybillReasonStrActive = "操作由人员主动发起" CancelWaybillReasonStrActive = "操作由人员主动发起"
) )
var (
ErrCanNotFindItem = errors.New("没有找到指定的东西")
)
var ( var (
CurOrderManager IOrderManager CurOrderManager IOrderManager
) )
@@ -72,9 +77,15 @@ type IPurchasePlatformHandler interface {
ReorderCategories(parentCat *model.SkuCategory, userName string) (err error) ReorderCategories(parentCat *model.SkuCategory, userName string) (err error)
CreateSku(sku *model.Sku, 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) UpdateSku(sku *model.Sku, userName string) (err error)
DeleteSku(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 { type IDeliveryPlatformHandler interface {

View File

@@ -30,8 +30,8 @@ func (p *PurchaseHandler) CreateSku(sku *model.Sku, userName string) (err error)
return nil return nil
} }
func (p *PurchaseHandler) ReadSku(vendorSkuID string) (skuName *model.SkuName, sellPlaces []*model.Place, sku *model.Sku, err error) { func (p *PurchaseHandler) ReadSku(vendorSkuID string) (skuNameExt *model.SkuNameExt, err error) {
return nil, nil, nil, nil return nil, nil
} }
func (p *PurchaseHandler) UpdateSku(sku *model.Sku, userName string) (err error) { func (p *PurchaseHandler) UpdateSku(sku *model.Sku, userName string) (err error) {

View File

@@ -7,6 +7,7 @@ import (
"git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils"
"git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao" "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"
"git.rosy.net.cn/jx-callback/globals/api" "git.rosy.net.cn/jx-callback/globals/api"
) )
@@ -19,9 +20,9 @@ const (
type skuInfoExt struct { type skuInfoExt struct {
model.SkuName model.SkuName
Img string Img string
JdID int64 // 商家类别 JdID int64 `orm:"column(jd_id)"` // 商家类别
JdCategoryID int // 到家类别 JdCategoryID int `orm:"column(jd_category_id)"` // 到家类别
SkuCatID int64 // 商家特殊类别 SkuCatID int64 `orm:"column(sku_cat_id)"` // 商家特殊类别
} }
func (p *PurchaseHandler) CreateCategory(cat *model.SkuCategory, userName string) (err error) { 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) { func (p *PurchaseHandler) ReadSku(vendorSkuID string) (skuNameExt *model.SkuNameExt, err error) {
result, _, err := api.JdAPI.QuerySkuInfos("", int(utils.Str2Int64(vendorSkuID)), 0, 0, false) jdSkuID := utils.Str2Int64(vendorSkuID)
result, _, err := api.JdAPI.QuerySkuInfos("", jdSkuID, 0, 0, false)
if err == nil { if err == nil {
if len(result) == 1 { 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] mapData := result[0]
skuNameStr := utils.Interface2String(mapData["skuName"]) skuNameStr := utils.Interface2String(mapData["skuName"])
prefix, name, comment, specUnit, unit, specQuality := jxutils.SplitSkuName(skuNameStr) prefix, name, comment, specUnit, unit, specQuality := jxutils.SplitSkuName(skuNameStr)
@@ -170,42 +176,53 @@ func (p *PurchaseHandler) ReadSku(vendorSkuID string) (skuName *model.SkuName, s
unit = "份" unit = "份"
specUnit = "g" specUnit = "g"
} }
skuName = &model.SkuName{ skuNameExt.Prefix = prefix
Prefix: prefix, skuNameExt.Name = name
Name: name, skuNameExt.Comment = comment
Comment: comment, skuNameExt.Unit = unit
Unit: unit, skuNameExt.Price = int(utils.MustInterface2Int64(mapData["skuPrice"]))
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{ skuNameExt.Skus[0].ID = int(utils.Str2Int64(utils.Interface2String(mapData["outSkuId"])))
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"])))
db := dao.GetDB() db := dao.GetDB()
shopCategories := utils.Interface2Int64List(mapData["shopCategories"]) shopCategories := utils.Interface2Int64List(mapData["shopCategories"])
if len(shopCategories) > 0 { if len(shopCategories) > 0 {
skuCat := &model.SkuCategory{} skuCat := &model.SkuCategory{}
skuCat.JdID = shopCategories[0] skuCat.JdID = shopCategories[0]
if dao.GetEntity(db, skuCat, "JdID") == nil { if dao.GetEntity(db, skuCat, "JdID") == nil {
skuName.CategoryID = skuCat.ID skuNameExt.CategoryID = skuCat.ID
} }
} }
sellCities := utils.Interface2Int64List(mapData["sellCities"]) sellCities := utils.Interface2Int64List(mapData["sellCities"])
if len(sellCities) == 0 { for _, v := range sellCities {
skuName.IsGlobal = 1 if v == 0 {
} else { skuNameExt.IsGlobal = 1
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)
} }
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) { func (p *PurchaseHandler) UpdateSku(sku *model.Sku, userName string) (err error) {

View File

@@ -150,7 +150,7 @@ func (c *SkuController) GetSkuNames() {
// @router /AddSkuName [post] // @router /AddSkuName [post]
func (c *SkuController) AddSkuName() { func (c *SkuController) AddSkuName() {
c.callAddSkuName(func(params *tSkuAddSkuNameParams) (retVal interface{}, errCode string, err error) { 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 { if err = utils.UnmarshalUseNumber([]byte(params.Payload), skuName); err == nil {
retVal, err = cms.AddSkuName(skuName, GetUserNameFromToken(params.Token)) retVal, err = cms.AddSkuName(skuName, GetUserNameFromToken(params.Token))
} }
@@ -269,3 +269,18 @@ func (c *SkuController) DeleteSkuNamePlace() {
return retVal, "", err 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
})
}

View File

@@ -231,6 +231,14 @@ func init() {
MethodParams: param.Make(), MethodParams: param.Make(),
Params: nil}) 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.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"],
beego.ControllerComments{ beego.ControllerComments{
Method: "ReorderCategories", Method: "ReorderCategories",