饿鲜达合并,按美团调价包刷新京西价

This commit is contained in:
苏尹岚
2020-02-11 18:25:58 +08:00
parent 7d2a90ad4c
commit 4f858f15a5
8 changed files with 140 additions and 61 deletions

View File

@@ -1443,3 +1443,12 @@ func DeleteSkuNameExPrefixOverdue(db *dao.DaoDB) (err error) {
_, err = dao.DeleteSkuNameExPrefixOverdue(db) _, err = dao.DeleteSkuNameExPrefixOverdue(db)
return err return err
} }
func SumExianDaDepot() (err error) {
// result, err := api.EbaiAPI.GetExianDaSkuDepot()
// for _, v := range result {
// v.ElemeGoodsID
// v.ImageURL
// }
return err
}

View File

@@ -3539,7 +3539,7 @@ func SendSeckillSkusCountMsg(ctx *jxcontext.Context, vendorIDs []int, isAsync, i
return hint, err 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 ( var (
db = dao.GetDB() db = dao.GetDB()
jdMap = make(map[int][]*JdStoreSkus) 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) { taskSeqFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
switch step { switch step {
case 0: case 0:
for _, v := range jdStoreSkus { if vendorID == model.VendorIDJD {
var ( for _, v := range jdStoreSkus {
pricePercentagePack []*model.PricePercentageItem var (
cats []*model.ThingMap pricePercentagePack []*model.PricePercentageItem
skus []*model.SkuAndName cats []*model.ThingMap
) skus []*model.SkuAndName
sql := ` )
SELECT t1.* sql := `
FROM thing_map t1 SELECT t1.*
WHERE t1.deleted_at = ? AND t1.thing_type = ? FROM thing_map t1
AND t1.vendor_thing_id = ? WHERE t1.deleted_at = ? AND t1.thing_type = ?
` AND t1.vendor_thing_id = ?
sqlParams := []interface{}{ `
utils.DefaultTimeValue, sqlParams := []interface{}{
model.ThingTypeSku, utils.DefaultTimeValue,
v.JdSkuID, 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)
} }
} else { err = dao.GetRows(db, &cats, sql, sqlParams...)
return result, fmt.Errorf("没有找到该京东skuID对应的京西skuID,京东skuID :[%v]", v.JdSkuID) if len(cats) > 0 {
} skus, err = dao.GetSkus(db, []int{int(cats[0].ThingID)}, nil, nil, nil)
store, err := dao.GetStoreDetailByVendorStoreID(db, utils.Int2Str(v.JdStoreID), model.VendorIDJD) if err != nil || len(skus) == 0 {
if err != nil || store == nil { return result, fmt.Errorf("没有找到该京西skuID,京西skuID :[%v]", cats[0].ThingID)
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 { } 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 } else if vendorID == model.VendorIDMTWM {
} for _, v := range jdStoreSkus {
for k, v := range jxMap { var (
for kk, vv := range v { pricePercentagePack []*model.PricePercentageItem
result, err := dao.GetStoreSkuBindByNameID(db, k, kk, model.SkuStatusNormal) )
if len(result) > 0 && err == nil { skus, _ := dao.GetSkus(db, []int{v.JdSkuID}, nil, nil, nil)
if result[0].UnitPrice > vv { store, _ := dao.GetStoreDetail(db, v.JdStoreID, vendorID)
storeSkuBindInfo := &StoreSkuBindInfo{ err = jxutils.Strings2Objs(store.PricePercentagePackStr, &pricePercentagePack)
StoreID: k, jxPrice := jxutils.CaculateJxPriceByPricePack(pricePercentagePack, 0, v.Price)
NameID: kk, jdMap[v.JdStoreID] = append(jdMap[v.JdStoreID], &JdStoreSkus{
UnitPrice: vv, 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)
} }
} }
} }

View File

@@ -129,7 +129,7 @@ func (p *PurchaseHandler) updateStoreSkus(ctx *jxcontext.Context, storeID int, v
if err != nil { if err != nil {
failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDEBAI], "更新商品基础信息") failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDEBAI], "更新商品基础信息")
} }
if isNeedMapCat { if isNeedMapCat && !isExd {
utils.CallFuncAsync(func() { utils.CallFuncAsync(func() {
api.EbaiAPI.SkuShopCategoryMap(strStoreID, utils.Str2Int64(storeSku.VendorSkuID), "", utils.Str2Int64(storeSku.VendorCatID), genSkuCatRank(storeSku)) 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) params := genSkuParamsFromStoreSkuInfo2(storeSku, true, isExd)
if globals.EnableEbaiStoreWrite { if globals.EnableEbaiStoreWrite {
strStoreID := utils.Int2Str(storeID) 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() { utils.AfterFuncWithRecover(5*time.Second, func() {
api.EbaiAPI.SkuShopCategoryMap(strStoreID, vendorSkuID, "", utils.Str2Int64(storeSku.VendorCatID), genSkuCatRank(storeSku)) api.EbaiAPI.SkuShopCategoryMap(strStoreID, vendorSkuID, "", utils.Str2Int64(storeSku.VendorCatID), genSkuCatRank(storeSku))
// 饿百平台有BUG会导致新建一个之前删除的商品时信息不会及时更新强制刷新一下 // 饿百平台有BUG会导致新建一个之前删除的商品时信息不会及时更新强制刷新一下

View File

@@ -66,6 +66,7 @@ fakeJdBaseURL = "http://test.jxc4.com/qqqq"
ebaiStorePageCookieWMUSS = "B0AAFQCAAAGbhkuMCsvcyYBDkkyAxBGIBlgXAQYVwc7VwYZFkx2HDoPSmo5eV1femopWgJRawhgAALG04cg1RUmhUakBbJRdgPS0tNEhnQhNRewwuWwYYBDEFPCQSDXV5YWA6PAVRHUJ9SnVGMThYAjNjLw9pRxIbS04-XFo05AQgBl%7ERLA33vWcR73gEAKZ" ebaiStorePageCookieWMUSS = "B0AAFQCAAAGbhkuMCsvcyYBDkkyAxBGIBlgXAQYVwc7VwYZFkx2HDoPSmo5eV1femopWgJRawhgAALG04cg1RUmhUakBbJRdgPS0tNEhnQhNRewwuWwYYBDEFPCQSDXV5YWA6PAVRHUJ9SnVGMThYAjNjLw9pRxIbS04-XFo05AQgBl%7ERLA33vWcR73gEAKZ"
ebaiStorePageCookieWMSTOKEN = "gAALgNAAAGfBI5YEBHSQdZY1InIS8CVQU9aBU1f3VLWVQqKHAAAc5LnRLZ1QLLx0S5IuzCSX8ZQ7oUwAAUr-GEm9JpRc9AQAAsLkLHHXzuhh2lZkbyrcAAAWBESKg3ZA" ebaiStorePageCookieWMSTOKEN = "gAALgNAAAGfBI5YEBHSQdZY1InIS8CVQU9aBU1f3VLWVQqKHAAAc5LnRLZ1QLLx0S5IuzCSX8ZQ7oUwAAUr-GEm9JpRc9AQAAsLkLHHXzuhh2lZkbyrcAAAWBESKg3ZA"
ebaiStorePageCookieExdTOKEN = "PBE_2.0_5cd1c6141c127d4188f026ac01fc93656266683e8dfb3127c2fdf894259e9034125ff3bdd2a997a385802ee3ef1802ba93a04acea34fde2d2b6e802c5dcd4ec6e3f4ad909a1d806e3ceeb349ed726b03d60ed1fe7010d4140aa338d9c5f05e3fec172c78d3d7f0ca579d61b7015af1bf99aa46b04d2b8a64aa50646dc09afe94b6b60e0ba9a933635db5e8b2a035e9b6d693b289acf1b256d5b9a3f8478c87b0b009115bfd1394f20bb5a0dc2c07b8d013a25f286ec6bf7f2d86010d65507e31358834b7a6b58fbd88cb3f1a12cf71c997b91c1527f6f3c10693f7c2bd6073da8633a98cd2dc1114dfa5be5ee0e60b02cf7e4a94d0fb563a8c01717e7c050f02249117219c07a2eb211577c208ba77f4d536fa25139bc249be93b38d6fc495ef67a32aa206835d177db402bc534de1d29caf4f6b4fbcd912c13f167d00d1732222744c336a5189728f72fb5e153c4b1164171cfb0c811f34f4c2fedd43f721b8706b43f8d631251c"
mtpsStoreToken = "M0p9VatZSeSHfrosD5IViAVl73IcA8mlcuHIV5sG6Zpv83a7JE0wY3t26aEhrrs_MR5gtLSFF1UIkt8HAjaXow" mtpsStoreToken = "M0p9VatZSeSHfrosD5IViAVl73IcA8mlcuHIV5sG6Zpv83a7JE0wY3t26aEhrrs_MR5gtLSFF1UIkt8HAjaXow"
weimobAppID = "319F5E7FB6784DFCA3684C9333EB7744" 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" dbConnectStr = "root:WebServer@1@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true"
[alpha] [alpha]
httpport = 8088 httpport = 8080
# xiaan # xiaan
jdOrgCode = "82029" jdOrgCode = "82029"

View File

@@ -415,3 +415,16 @@ func (c *SkuController) UpdateSkuNamesExPrefix() {
return retVal, "", err 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
})
}

View File

@@ -673,6 +673,7 @@ func (c *StoreSkuController) SendSeckillSkusCountMsg() {
// @Description 根据平台价反算京西价 // @Description 根据平台价反算京西价
// @Param token header string true "认证token" // @Param token header string true "认证token"
// @Param payload formData string true "json数据JdStoreSkus对象" // @Param payload formData string true "json数据JdStoreSkus对象"
// @Param vendorID formData int true "厂商ID"
// @Param isAsync formData bool true "是否异步,缺省是同步" // @Param isAsync formData bool true "是否异步,缺省是同步"
// @Param isContinueWhenError formData bool true "单个同步失败是否继续缺省false" // @Param isContinueWhenError formData bool true "单个同步失败是否继续缺省false"
// @Success 200 {object} controllers.CallResult // @Success 200 {object} controllers.CallResult
@@ -684,7 +685,7 @@ func (c *StoreSkuController) RefreshJxPriceByVendor() {
if err = jxutils.Strings2Objs(params.Payload, &skuBindInfos); err != nil { if err = jxutils.Strings2Objs(params.Payload, &skuBindInfos); err != nil {
return retVal, "", err 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 return retVal, "", err
}) })
} }

View File

@@ -124,9 +124,11 @@ func Init() {
EbaiAPI = ebaiapi.New(beego.AppConfig.String("ebaiSource"), beego.AppConfig.String("ebaiSecret")) EbaiAPI = ebaiapi.New(beego.AppConfig.String("ebaiSource"), beego.AppConfig.String("ebaiSecret"))
ebaiStorePageCookieWMUSS := beego.AppConfig.DefaultString("ebaiStorePageCookieWMUSS", "") ebaiStorePageCookieWMUSS := beego.AppConfig.DefaultString("ebaiStorePageCookieWMUSS", "")
ebaiStorePageCookieWMSTOKEN := beego.AppConfig.DefaultString("ebaiStorePageCookieWMSTOKEN", "") ebaiStorePageCookieWMSTOKEN := beego.AppConfig.DefaultString("ebaiStorePageCookieWMSTOKEN", "")
if ebaiStorePageCookieWMUSS != "" && ebaiStorePageCookieWMSTOKEN != "" { ebaiStorePageCookieExdTOKEN := beego.AppConfig.DefaultString("ebaiStorePageCookieExdTOKEN", "")
if ebaiStorePageCookieWMUSS != "" && ebaiStorePageCookieWMSTOKEN != "" && ebaiStorePageCookieExdTOKEN != "" {
EbaiAPI.SetCookie("WMUSS", ebaiStorePageCookieWMUSS) EbaiAPI.SetCookie("WMUSS", ebaiStorePageCookieWMUSS)
EbaiAPI.SetCookie("WMSTOKEN", ebaiStorePageCookieWMSTOKEN) EbaiAPI.SetCookie("WMSTOKEN", ebaiStorePageCookieWMSTOKEN)
EbaiAPI.SetCookie("PASSPORT_DELIMONT_TOKEN", ebaiStorePageCookieExdTOKEN)
} }
} else { } else {
EbaiAPI = nil EbaiAPI = nil

View File

@@ -1359,6 +1359,15 @@ func init() {
Filters: nil, Filters: nil,
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: "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.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: "SyncCategory", Method: "SyncCategory",