From 4f858f15a50f08996289c95f47e740c34a1a5f6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 11 Feb 2020 18:25:58 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A5=BF=E9=B2=9C=E8=BE=BE=E5=90=88=E5=B9=B6?= =?UTF-8?q?=EF=BC=8C=E6=8C=89=E7=BE=8E=E5=9B=A2=E8=B0=83=E4=BB=B7=E5=8C=85?= =?UTF-8?q?=E5=88=B7=E6=96=B0=E4=BA=AC=E8=A5=BF=E4=BB=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/sku.go | 9 ++ business/jxstore/cms/store_sku.go | 156 ++++++++++++------- business/partner/purchase/ebai/store_sku2.go | 4 +- conf/app.conf | 3 +- controllers/cms_sku.go | 13 ++ controllers/cms_store_sku.go | 3 +- globals/api/api.go | 4 +- routers/commentsRouter_controllers.go | 9 ++ 8 files changed, 140 insertions(+), 61 deletions(-) diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index 4e8bce85e..1938a4a90 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -1443,3 +1443,12 @@ func DeleteSkuNameExPrefixOverdue(db *dao.DaoDB) (err error) { _, err = dao.DeleteSkuNameExPrefixOverdue(db) return err } + +func SumExianDaDepot() (err error) { + // result, err := api.EbaiAPI.GetExianDaSkuDepot() + // for _, v := range result { + // v.ElemeGoodsID + // v.ImageURL + // } + return err +} diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index adbca1b87..bd03742de 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -3539,7 +3539,7 @@ func SendSeckillSkusCountMsg(ctx *jxcontext.Context, vendorIDs []int, isAsync, i return hint, err } -func RefreshJxPriceByVendor(ctx *jxcontext.Context, jdStoreSkus []*JdStoreSkus, isAsync, isContinueWhenError bool) (hint string, err error) { +func RefreshJxPriceByVendor(ctx *jxcontext.Context, jdStoreSkus []*JdStoreSkus, vendorID int, isAsync, isContinueWhenError bool) (hint string, err error) { var ( db = dao.GetDB() jdMap = make(map[int][]*JdStoreSkus) @@ -3549,67 +3549,111 @@ func RefreshJxPriceByVendor(ctx *jxcontext.Context, jdStoreSkus []*JdStoreSkus, taskSeqFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) { switch step { case 0: - for _, v := range jdStoreSkus { - var ( - pricePercentagePack []*model.PricePercentageItem - cats []*model.ThingMap - skus []*model.SkuAndName - ) - sql := ` - SELECT t1.* - FROM thing_map t1 - WHERE t1.deleted_at = ? AND t1.thing_type = ? - AND t1.vendor_thing_id = ? - ` - sqlParams := []interface{}{ - utils.DefaultTimeValue, - model.ThingTypeSku, - v.JdSkuID, - } - err = dao.GetRows(db, &cats, sql, sqlParams...) - if len(cats) > 0 { - skus, err = dao.GetSkus(db, []int{int(cats[0].ThingID)}, nil, nil, nil) - if err != nil || len(skus) == 0 { - return result, fmt.Errorf("没有找到该京西skuID!,京西skuID :[%v]", cats[0].ThingID) + if vendorID == model.VendorIDJD { + for _, v := range jdStoreSkus { + var ( + pricePercentagePack []*model.PricePercentageItem + cats []*model.ThingMap + skus []*model.SkuAndName + ) + sql := ` + SELECT t1.* + FROM thing_map t1 + WHERE t1.deleted_at = ? AND t1.thing_type = ? + AND t1.vendor_thing_id = ? + ` + sqlParams := []interface{}{ + utils.DefaultTimeValue, + model.ThingTypeSku, + v.JdSkuID, } - } else { - return result, fmt.Errorf("没有找到该京东skuID对应的京西skuID!,京东skuID :[%v]", v.JdSkuID) - } - store, err := dao.GetStoreDetailByVendorStoreID(db, utils.Int2Str(v.JdStoreID), model.VendorIDJD) - if err != nil || store == nil { - return result, fmt.Errorf("没有找到该京东门店对应的京西门店!,京东门店ID :[%v]", v.JdStoreID) - } - err = jxutils.Strings2Objs(store.PricePercentagePackStr, &pricePercentagePack) - jxPrice := jxutils.CaculateJxPriceByPricePack(pricePercentagePack, 0, v.Price) - jdMap[store.ID] = append(jdMap[store.ID], &JdStoreSkus{ - JdSkuID: skus[0].NameID, - Price: jxPrice, - }) - } - for k, v := range jdMap { - var skuNameMap = make(map[int]int) - for _, vv := range v { - if skuNameMap[vv.JdSkuID] != 0 { - if skuNameMap[vv.JdSkuID] > vv.Price { - skuNameMap[vv.JdSkuID] = vv.Price + err = dao.GetRows(db, &cats, sql, sqlParams...) + if len(cats) > 0 { + skus, err = dao.GetSkus(db, []int{int(cats[0].ThingID)}, nil, nil, nil) + if err != nil || len(skus) == 0 { + return result, fmt.Errorf("没有找到该京西skuID!,京西skuID :[%v]", cats[0].ThingID) } } else { - skuNameMap[vv.JdSkuID] = vv.Price + return result, fmt.Errorf("没有找到该京东skuID对应的京西skuID!,京东skuID :[%v]", v.JdSkuID) + } + store, err := dao.GetStoreDetailByVendorStoreID(db, utils.Int2Str(v.JdStoreID), vendorID) + if err != nil || store == nil { + return result, fmt.Errorf("没有找到该京东门店对应的京西门店!,京东门店ID :[%v]", v.JdStoreID) + } + err = jxutils.Strings2Objs(store.PricePercentagePackStr, &pricePercentagePack) + jxPrice := jxutils.CaculateJxPriceByPricePack(pricePercentagePack, 0, v.Price) + jdMap[store.ID] = append(jdMap[store.ID], &JdStoreSkus{ + JdSkuID: skus[0].NameID, + Price: jxPrice, + }) + } + for k, v := range jdMap { + var skuNameMap = make(map[int]int) + for _, vv := range v { + if skuNameMap[vv.JdSkuID] != 0 { + if skuNameMap[vv.JdSkuID] > vv.Price { + skuNameMap[vv.JdSkuID] = vv.Price + } + } else { + skuNameMap[vv.JdSkuID] = vv.Price + } + } + jxMap[k] = skuNameMap + } + for k, v := range jxMap { + for kk, vv := range v { + result, err := dao.GetStoreSkuBindByNameID(db, k, kk, model.SkuStatusNormal) + if len(result) > 0 && err == nil { + if result[0].UnitPrice > vv { + storeSkuBindInfo := &StoreSkuBindInfo{ + StoreID: k, + NameID: kk, + UnitPrice: vv, + } + param = append(param, storeSkuBindInfo) + } + } } } - jxMap[k] = skuNameMap - } - for k, v := range jxMap { - for kk, vv := range v { - result, err := dao.GetStoreSkuBindByNameID(db, k, kk, model.SkuStatusNormal) - if len(result) > 0 && err == nil { - if result[0].UnitPrice > vv { - storeSkuBindInfo := &StoreSkuBindInfo{ - StoreID: k, - NameID: kk, - UnitPrice: vv, + } else if vendorID == model.VendorIDMTWM { + for _, v := range jdStoreSkus { + var ( + pricePercentagePack []*model.PricePercentageItem + ) + skus, _ := dao.GetSkus(db, []int{v.JdSkuID}, nil, nil, nil) + store, _ := dao.GetStoreDetail(db, v.JdStoreID, vendorID) + err = jxutils.Strings2Objs(store.PricePercentagePackStr, &pricePercentagePack) + jxPrice := jxutils.CaculateJxPriceByPricePack(pricePercentagePack, 0, v.Price) + jdMap[v.JdStoreID] = append(jdMap[v.JdStoreID], &JdStoreSkus{ + JdSkuID: skus[0].NameID, + Price: jxPrice, + }) + } + for k, v := range jdMap { + var skuNameMap = make(map[int]int) + for _, vv := range v { + if skuNameMap[vv.JdSkuID] != 0 { + if skuNameMap[vv.JdSkuID] > vv.Price { + skuNameMap[vv.JdSkuID] = vv.Price + } + } else { + skuNameMap[vv.JdSkuID] = vv.Price + } + } + jxMap[k] = skuNameMap + } + for k, v := range jxMap { + for kk, vv := range v { + result, err := dao.GetStoreSkuBindByNameID(db, k, kk, model.SkuStatusNormal) + if len(result) > 0 && err == nil { + if result[0].UnitPrice > vv { + storeSkuBindInfo := &StoreSkuBindInfo{ + StoreID: k, + NameID: kk, + UnitPrice: vv, + } + param = append(param, storeSkuBindInfo) } - param = append(param, storeSkuBindInfo) } } } diff --git a/business/partner/purchase/ebai/store_sku2.go b/business/partner/purchase/ebai/store_sku2.go index 9685a7679..84d93c9d6 100644 --- a/business/partner/purchase/ebai/store_sku2.go +++ b/business/partner/purchase/ebai/store_sku2.go @@ -129,7 +129,7 @@ func (p *PurchaseHandler) updateStoreSkus(ctx *jxcontext.Context, storeID int, v if err != nil { failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDEBAI], "更新商品基础信息") } - if isNeedMapCat { + if isNeedMapCat && !isExd { utils.CallFuncAsync(func() { api.EbaiAPI.SkuShopCategoryMap(strStoreID, utils.Str2Int64(storeSku.VendorSkuID), "", utils.Str2Int64(storeSku.VendorCatID), genSkuCatRank(storeSku)) }) @@ -161,7 +161,7 @@ func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, v params := genSkuParamsFromStoreSkuInfo2(storeSku, true, isExd) if globals.EnableEbaiStoreWrite { strStoreID := utils.Int2Str(storeID) - if vendorSkuID, err = api.EbaiAPI.SkuCreate(ctx.GetTrackInfo(), strStoreID, customSkuID, params); err == nil { + if vendorSkuID, err = api.EbaiAPI.SkuCreate(ctx.GetTrackInfo(), strStoreID, customSkuID, params); err == nil && !isExd { utils.AfterFuncWithRecover(5*time.Second, func() { api.EbaiAPI.SkuShopCategoryMap(strStoreID, vendorSkuID, "", utils.Str2Int64(storeSku.VendorCatID), genSkuCatRank(storeSku)) // 饿百平台有BUG,会导致新建一个之前删除的商品时,信息不会及时更新,强制刷新一下 diff --git a/conf/app.conf b/conf/app.conf index c8214c064..8292692a1 100644 --- a/conf/app.conf +++ b/conf/app.conf @@ -66,6 +66,7 @@ fakeJdBaseURL = "http://test.jxc4.com/qqqq" ebaiStorePageCookieWMUSS = "B0AAFQCAAAGbhkuMCsvcyYBDkkyAxBGIBlgXAQYVwc7VwYZFkx2HDoPSmo5eV1femopWgJRawhgAALG04cg1RUmhUakBbJRdgPS0tNEhnQhNRewwuWwYYBDEFPCQSDXV5YWA6PAVRHUJ9SnVGMThYAjNjLw9pRxIbS04-XFo05AQgBl%7ERLA33vWcR73gEAKZ" ebaiStorePageCookieWMSTOKEN = "gAALgNAAAGfBI5YEBHSQdZY1InIS8CVQU9aBU1f3VLWVQqKHAAAc5LnRLZ1QLLx0S5IuzCSX8ZQ7oUwAAUr-GEm9JpRc9AQAAsLkLHHXzuhh2lZkbyrcAAAWBESKg3ZA" +ebaiStorePageCookieExdTOKEN = "PBE_2.0_5cd1c6141c127d4188f026ac01fc93656266683e8dfb3127c2fdf894259e9034125ff3bdd2a997a385802ee3ef1802ba93a04acea34fde2d2b6e802c5dcd4ec6e3f4ad909a1d806e3ceeb349ed726b03d60ed1fe7010d4140aa338d9c5f05e3fec172c78d3d7f0ca579d61b7015af1bf99aa46b04d2b8a64aa50646dc09afe94b6b60e0ba9a933635db5e8b2a035e9b6d693b289acf1b256d5b9a3f8478c87b0b009115bfd1394f20bb5a0dc2c07b8d013a25f286ec6bf7f2d86010d65507e31358834b7a6b58fbd88cb3f1a12cf71c997b91c1527f6f3c10693f7c2bd6073da8633a98cd2dc1114dfa5be5ee0e60b02cf7e4a94d0fb563a8c01717e7c050f02249117219c07a2eb211577c208ba77f4d536fa25139bc249be93b38d6fc495ef67a32aa206835d177db402bc534de1d29caf4f6b4fbcd912c13f167d00d1732222744c336a5189728f72fb5e153c4b1164171cfb0c811f34f4c2fedd43f721b8706b43f8d631251c" mtpsStoreToken = "M0p9VatZSeSHfrosD5IViAVl73IcA8mlcuHIV5sG6Zpv83a7JE0wY3t26aEhrrs_MR5gtLSFF1UIkt8HAjaXow" weimobAppID = "319F5E7FB6784DFCA3684C9333EB7744" @@ -280,7 +281,7 @@ weixinSecret = "ba32b269a068a5b72486a0beafd171e8" dbConnectStr = "root:WebServer@1@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true" [alpha] -httpport = 8088 +httpport = 8080 # xiaan jdOrgCode = "82029" diff --git a/controllers/cms_sku.go b/controllers/cms_sku.go index 421308aa4..f28836c62 100644 --- a/controllers/cms_sku.go +++ b/controllers/cms_sku.go @@ -415,3 +415,16 @@ func (c *SkuController) UpdateSkuNamesExPrefix() { return retVal, "", err }) } + +// @Title 合并饿鲜达商品库 +// @Description 合并饿鲜达商品库 +// @Param token header string true "认证token" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /SumExianDaDepot [put] +func (c *SkuController) SumExianDaDepot() { + c.callSumExianDaDepot(func(params *tSkuSumExianDaDepotParams) (retVal interface{}, errCode string, err error) { + err = cms.SumExianDaDepot() + return retVal, "", err + }) +} diff --git a/controllers/cms_store_sku.go b/controllers/cms_store_sku.go index 7e879b6f4..72632ae0c 100644 --- a/controllers/cms_store_sku.go +++ b/controllers/cms_store_sku.go @@ -673,6 +673,7 @@ func (c *StoreSkuController) SendSeckillSkusCountMsg() { // @Description 根据平台价反算京西价 // @Param token header string true "认证token" // @Param payload formData string true "json数据,JdStoreSkus对象" +// @Param vendorID formData int true "厂商ID" // @Param isAsync formData bool true "是否异步,缺省是同步" // @Param isContinueWhenError formData bool true "单个同步失败是否继续,缺省false" // @Success 200 {object} controllers.CallResult @@ -684,7 +685,7 @@ func (c *StoreSkuController) RefreshJxPriceByVendor() { if err = jxutils.Strings2Objs(params.Payload, &skuBindInfos); err != nil { return retVal, "", err } - retVal,err = cms.RefreshJxPriceByVendor(params.Ctx, skuBindInfos, params.IsAsync, params.IsContinueWhenError) + retVal, err = cms.RefreshJxPriceByVendor(params.Ctx, skuBindInfos, params.VendorID, params.IsAsync, params.IsContinueWhenError) return retVal, "", err }) } diff --git a/globals/api/api.go b/globals/api/api.go index e797f0471..cf7608f49 100644 --- a/globals/api/api.go +++ b/globals/api/api.go @@ -124,9 +124,11 @@ func Init() { EbaiAPI = ebaiapi.New(beego.AppConfig.String("ebaiSource"), beego.AppConfig.String("ebaiSecret")) ebaiStorePageCookieWMUSS := beego.AppConfig.DefaultString("ebaiStorePageCookieWMUSS", "") ebaiStorePageCookieWMSTOKEN := beego.AppConfig.DefaultString("ebaiStorePageCookieWMSTOKEN", "") - if ebaiStorePageCookieWMUSS != "" && ebaiStorePageCookieWMSTOKEN != "" { + ebaiStorePageCookieExdTOKEN := beego.AppConfig.DefaultString("ebaiStorePageCookieExdTOKEN", "") + if ebaiStorePageCookieWMUSS != "" && ebaiStorePageCookieWMSTOKEN != "" && ebaiStorePageCookieExdTOKEN != "" { EbaiAPI.SetCookie("WMUSS", ebaiStorePageCookieWMUSS) EbaiAPI.SetCookie("WMSTOKEN", ebaiStorePageCookieWMSTOKEN) + EbaiAPI.SetCookie("PASSPORT_DELIMONT_TOKEN", ebaiStorePageCookieExdTOKEN) } } else { EbaiAPI = nil diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index b059096c5..b2a20cdfc 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -1359,6 +1359,15 @@ func init() { Filters: 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: "SumExianDaDepot", + Router: `/SumExianDaDepot`, + AllowHTTPMethods: []string{"put"}, + MethodParams: param.Make(), + Filters: 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: "SyncCategory",