From 8e9d712464955fb128f1dca5173fe8b2ca989a0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 16 Dec 2019 11:28:03 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E6=8E=A8=E8=8D=90=E5=88=86=E7=B1=BB?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 72f1e15ee..e075409e9 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -2147,9 +2147,10 @@ func GetTopCategorysByStoreIDs(ctx *jxcontext.Context, storeIDs []int) (skuCateg db := dao.GetDB() skuCategory, err = dao.GetTopCategorysByStoreIDs(db, storeIDs) if len(skuCategory) < 10 { + j := 10 - len(skuCategory) skuCategory2, err = dao.GetCategories(db, -1, 1, nil) if len(skuCategory2) > 0 { - for i := 0; i < 10-len(skuCategory); i++ { + for i := 0; i < j; i++ { skuCategory = append(skuCategory, skuCategory2[i]) } } From f5166d59b62903af4131cf7ad3480bf5efd27dfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 16 Dec 2019 11:47:08 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E6=8E=A8=E8=8D=90=E5=88=86=E7=B1=BB?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 32 +++++++++++++++++++++++++------ business/model/dao/store_sku.go | 4 ++-- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index e075409e9..126662b55 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -2140,18 +2140,38 @@ func GetTopSkusByStoreIDs(ctx *jxcontext.Context, storeIDs []int) (storeSkuNameE } func GetTopCategorysByStoreIDs(ctx *jxcontext.Context, storeIDs []int) (skuCategory []*model.SkuCategory, err error) { - var skuCategory2 []*model.SkuCategory + var ( + skuCategory2 []*model.SkuCategory + skuCategoryMap = make(map[int]*model.SkuCategory) + limit = 10 + ) if len(storeIDs) == 0 { return skuCategory, err } db := dao.GetDB() - skuCategory, err = dao.GetTopCategorysByStoreIDs(db, storeIDs) - if len(skuCategory) < 10 { - j := 10 - len(skuCategory) + skuCategory, err = dao.GetTopCategorysByStoreIDs(db, storeIDs, limit) + //若大于等于10个就不用做下面的操作 + if len(skuCategory) >= limit { + return skuCategory, err + } + if len(skuCategory) > 0 { + for _, v := range skuCategory { + skuCategoryMap[v.ID] = v + } + } + //推荐分类,若不满10个,则填满10个 + if (len(skuCategory) < limit && len(skuCategory) > 0) || len(skuCategory) == 0 { skuCategory2, err = dao.GetCategories(db, -1, 1, nil) if len(skuCategory2) > 0 { - for i := 0; i < j; i++ { - skuCategory = append(skuCategory, skuCategory2[i]) + for _, v := range skuCategory2 { + if skuCategoryMap[v.ID] == nil { + if !strings.Contains(v.Name, "赠品") { + skuCategory = append(skuCategory, v) + } + } + if len(skuCategory) >= limit { + break + } } } } diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index fa160da6b..1eab9015a 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -984,7 +984,7 @@ func GetTopSkusByStoreIDs(db *DaoDB, storeIDs []int) (storeSkuNameExt []*StoreSk return storeSkuNameExt, err } -func GetTopCategorysByStoreIDs(db *DaoDB, storeIDs []int) (skuCategory []*model.SkuCategory, err error) { +func GetTopCategorysByStoreIDs(db *DaoDB, storeIDs []int, limit int) (skuCategory []*model.SkuCategory, err error) { sql := ` SELECT DISTINCT t5.* FROM( SELECT d.* @@ -1023,7 +1023,7 @@ func GetTopCategorysByStoreIDs(db *DaoDB, storeIDs []int) (skuCategory []*model. Order by t4.count DESC)t5 LIMIT ? ` - sqlParams = append(sqlParams, time.Now().AddDate(0, -1, 0), 100, 2, utils.DefaultTimeValue, 1, 10) + sqlParams = append(sqlParams, time.Now().AddDate(0, -1, 0), 100, 2, utils.DefaultTimeValue, 1, limit) err = GetRows(db, &skuCategory, sql, sqlParams...) return skuCategory, err } From 1f1835fa2d90ba95c50a9cd2f3fdc977a1afbab2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 16 Dec 2019 14:21:19 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E5=90=8D=E5=AD=97?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BA=AC=E4=B8=9Cupc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/sku.go | 37 +++++++++++++++++++-------- business/model/api.go | 17 ++++++++++++ controllers/cms_sku.go | 7 ++--- routers/commentsRouter_controllers.go | 2 +- 4 files changed, 49 insertions(+), 14 deletions(-) diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index 1180a83e3..570fac001 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -7,6 +7,10 @@ import ( "strings" "time" + "git.rosy.net.cn/jx-callback/business/jxutils/tasksch" + + "git.rosy.net.cn/baseapi/platformapi/jdapi" + "git.rosy.net.cn/jx-callback/globals/api" "git.rosy.net.cn/baseapi/utils" @@ -1292,16 +1296,29 @@ func SortCategorySkus(ctx *jxcontext.Context, catID int, skuIDList []int) (err e return err } -func GetJdUpcCodeByName(ctx *jxcontext.Context, name string) (pagedInfo *model.PagedInfo, err error) { - pageNo := 1 - pageSize := 30 - jdSkus, totalCount, err := api.JdAPI.GetJdUpcCodeByName(name, pageNo, pageSize) - for _, v := range jdSkus { - fmt.Println(v) +func GetJdUpcCodeByName(ctx *jxcontext.Context, name, upcCode string) (productInfos []*jdapi.ProductInfo, err error) { + var ( + pageNo = 5 + pageSize = 30 + pageNoList []int + ) + for i := 1; i < pageNo+1; i++ { + pageNoList = append(pageNoList, i) } - pagedInfo = &model.PagedInfo{ - Data: jdSkus, - TotalCount: totalCount, + task := tasksch.NewParallelTask("获取京东商品", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx, + func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + pageNum := batchItemList[0].(int) + productInfo, err := api.JdAPI.GetJdUpcCodeByName(name, upcCode, pageNum, pageSize) + if err != nil { + return retVal, err + } + retVal = productInfo + return retVal, err + }, pageNoList) + tasksch.HandleTask(task, nil, true).Run() + productInfoInterface, err := task.GetResult(0) + for _, v := range productInfoInterface { + productInfos = append(productInfos, v.(*jdapi.ProductInfo)) } - return pagedInfo, err + return productInfos, err } diff --git a/business/model/api.go b/business/model/api.go index 4e2d1c2c8..cd453caf1 100644 --- a/business/model/api.go +++ b/business/model/api.go @@ -83,3 +83,20 @@ type OrderFinancialSkuExt struct { OrderSkuFinancial Image string `json:"image"` } + +type ProductInfo struct { + OriginalName string `json:"originalName"` + OriginalSpec string `json:"originalSpec"` + Name string `json:"name"` + Img string `json:"img"` + ImgList []string `json:"imgList"` + SpecQuality int `json:"specQuality"` + SpecUnit string `json:"specUnit"` + Unit string `json:"unit"` + Weight float32 `json:"weight"` + Price int `json:"price"` + Categories []string `json:"categories"` + ManName string `json:"manName"` // 生产商 + BrandName string `json:"brandName"` + UpcCode string `json:"upcCode"` +} diff --git a/controllers/cms_sku.go b/controllers/cms_sku.go index b4314bc2a..b8605f96a 100644 --- a/controllers/cms_sku.go +++ b/controllers/cms_sku.go @@ -379,13 +379,14 @@ func (c *SkuController) GetStoreSkuSalesInfo() { // @Title 根据名字查询京东商品UPC信息 // @Description 根据名字查询京东商品UPC信息 // @Param token header string true "认证token" -// @Param name formData string true "商品名" +// @Param name query string false "商品名" +// @Param upcCode query string false "upcCode,不支持模糊" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult -// @router /GetJdUpcCodeByName [post] +// @router /GetJdUpcCodeByName [get] func (c *SkuController) GetJdUpcCodeByName() { c.callGetJdUpcCodeByName(func(params *tSkuGetJdUpcCodeByNameParams) (retVal interface{}, errCode string, err error) { - retVal, err = cms.GetJdUpcCodeByName(params.Ctx, params.Name) + retVal, err = cms.GetJdUpcCodeByName(params.Ctx, params.Name, params.UpcCode) return retVal, "", err }) } diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 974cbc666..273fb032d 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -1174,7 +1174,7 @@ func init() { beego.ControllerComments{ Method: "GetJdUpcCodeByName", Router: `/GetJdUpcCodeByName`, - AllowHTTPMethods: []string{"post"}, + AllowHTTPMethods: []string{"get"}, MethodParams: param.Make(), Filters: nil, Params: nil}) From 245e793ce384cd779b9f8066da6b0ddc44389398 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 16 Dec 2019 16:12:56 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E5=90=8D=E5=AD=97?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2upc=E7=A0=81=EF=BC=8C=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E7=AD=89=E7=BA=A7=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/sku.go | 13 +++++++++ business/partner/purchase/jd/store.go | 40 ++++++++++++++++++++++++++- 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index 570fac001..0184f9067 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -1302,6 +1302,9 @@ func GetJdUpcCodeByName(ctx *jxcontext.Context, name, upcCode string) (productIn pageSize = 30 pageNoList []int ) + if name == "" && upcCode == "" { + return nil, fmt.Errorf("至少输入一个条件查询,商品名或者upc码!") + } for i := 1; i < pageNo+1; i++ { pageNoList = append(pageNoList, i) } @@ -1312,6 +1315,16 @@ func GetJdUpcCodeByName(ctx *jxcontext.Context, name, upcCode string) (productIn if err != nil { return retVal, err } + if len(productInfo) > 0 { + for _, v := range productInfo { + productInfo2, _ := api.ShowAPI.GetProductInfoByBarCode(v.UpcCode) + if productInfo2 != nil { + v.Name = productInfo2.Name + v.SpecQuality = productInfo2.SpecQuality + v.SpecUnit = productInfo2.SpecUnit + } + } + } retVal = productInfo return retVal, err }, pageNoList) diff --git a/business/partner/purchase/jd/store.go b/business/partner/purchase/jd/store.go index ba0de3170..ff8b89f34 100644 --- a/business/partner/purchase/jd/store.go +++ b/business/partner/purchase/jd/store.go @@ -36,6 +36,8 @@ type tJdStoreInfo struct { VendorStoreID string `orm:"column(vendor_store_id)"` RealLastOperator string SyncStatus int + Level string + PageNo int } var ( @@ -91,7 +93,7 @@ func (p *PurchaseHandler) ReadStore(ctx *jxcontext.Context, vendorOrgCode, vendo } } } - if level, err := a.GetJdStoreLevel(vendorOrgCode, vendorStoreID); err == nil { + if level, err := GetJdStoreLevel(ctx, vendorOrgCode, vendorStoreID); err == nil { retVal.JdStoreLevel = level } if retVal.DistrictCode == 0 { @@ -118,6 +120,42 @@ func (p *PurchaseHandler) ReadStore(ctx *jxcontext.Context, vendorOrgCode, vendo return nil, err } +func GetJdStoreLevel(ctx *jxcontext.Context, vendorOrgCode, vendorStoreID string) (level string, err error) { + var ( + pageNoList []int + storeMap = make(map[int]string) + pageNo int + ) + a := getAPI(vendorOrgCode) + for i := 1; i < 6; i++ { + pageNoList = append(pageNoList, i) + } + task := tasksch.NewParallelTask("获取京东商品", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx, + func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + currentPage := batchItemList[0].(int) + level, err = a.GetJdStoreLevel(vendorOrgCode, vendorStoreID, currentPage) + if err != nil { + return retVal, err + } + tJdStoreInfo1 := &tJdStoreInfo{ + Level: level, + PageNo: currentPage, + } + retVal = []*tJdStoreInfo{tJdStoreInfo1} + return retVal, err + }, pageNoList) + tasksch.HandleTask(task, nil, true).Run() + tJdStoreInfoInterface, err := task.GetResult(0) + for _, v := range tJdStoreInfoInterface { + store := v.(*tJdStoreInfo) + if store.PageNo > pageNo { + pageNo = store.PageNo + } + storeMap[store.PageNo] = store.Level + } + return storeMap[pageNo], err +} + // stoerIDs为nil表示所有 func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName string) (err error) { var stores []*tJdStoreInfo