jd2配置

SyncSkuNames
SyncCategorys
This commit is contained in:
gazebo
2019-12-12 09:18:44 +08:00
parent 2168cf9731
commit 29bc986e45
8 changed files with 142 additions and 30 deletions

View File

@@ -666,22 +666,7 @@ func (v *VendorSync) SyncSkuNames(ctx *jxcontext.Context, nameIDs []int, isForce
func (v *VendorSync) oldSyncSkuNames(ctx *jxcontext.Context, nameIDs []int, isForce, isAsync, isContinueWhenError bool) (hint string, err error) { func (v *VendorSync) oldSyncSkuNames(ctx *jxcontext.Context, nameIDs []int, isForce, isAsync, isContinueWhenError bool) (hint string, err error) {
db := dao.GetDB() db := dao.GetDB()
if isForce { if isForce {
sql := ` dao.SetSkuNameSyncStatus(db, nil, nil, nameIDs, model.SyncFlagModifiedMask)
UPDATE sku t1
SET t1.jd_sync_status = t1.jd_sync_status | ?
WHERE t1.deleted_at = ?
`
sqlParams := []interface{}{
model.SyncFlagModifiedMask,
utils.DefaultTimeValue,
}
if len(nameIDs) > 0 {
sql += " AND t1.name_id IN(" + dao.GenQuestionMarks(len(nameIDs)) + ")"
sqlParams = append(sqlParams, nameIDs)
}
if _, err = dao.ExecuteSQL(db, sql, sqlParams...); err != nil {
return "", err
}
} }
return v.SyncSkus(ctx, db, nameIDs, nil, isAsync, isContinueWhenError, ctx.GetUserName()) return v.SyncSkus(ctx, db, nameIDs, nil, isAsync, isContinueWhenError, ctx.GetUserName())
} }

View File

@@ -4,6 +4,8 @@ import "git.rosy.net.cn/jx-callback/business/model"
import "git.rosy.net.cn/baseapi/utils" import "git.rosy.net.cn/baseapi/utils"
import "git.rosy.net.cn/jx-callback/globals"
func GetThingMapList(db *DaoDB, thingType int, vendorIDs, thingIDs []int) (cats []*model.ThingMap, err error) { func GetThingMapList(db *DaoDB, thingType int, vendorIDs, thingIDs []int) (cats []*model.ThingMap, err error) {
sql := ` sql := `
SELECT t1.* SELECT t1.*
@@ -32,3 +34,55 @@ func GetThingMapMap(db *DaoDB, thingType int, vendorIDs, thingIDs []int) (thingM
} }
return thingMapMap, err return thingMapMap, err
} }
func SetThingMapSyncStatus(db *DaoDB, vendorIDs []int, vendorOrgCodes []string, thingType int, thingIDs []int, syncStatus int8) (num int64, err error) {
sql := `
UPDATE thing_map t1
SET t1.sync_status |= ?
WHERE t1.deleted_at = ? AND t1.thing_type = ?
`
sqlParams := []interface{}{
syncStatus,
utils.DefaultTimeValue,
thingType,
}
if len(vendorIDs) > 0 {
sql += " AND t1.vendor_id IN (" + GenQuestionMarks(len(vendorIDs)) + ")"
sqlParams = append(sqlParams, vendorIDs)
}
if len(vendorOrgCodes) > 0 {
sql += " AND t1.vendor_org_code IN (" + GenQuestionMarks(len(vendorOrgCodes)) + ")"
sqlParams = append(sqlParams, vendorOrgCodes)
}
if len(thingIDs) > 0 {
sql += " AND t1.thing_id IN (" + GenQuestionMarks(len(thingIDs)) + ")"
sqlParams = append(sqlParams, thingIDs)
}
num, err = ExecuteSQL(db, sql, sqlParams...)
return num, err
}
func SetSkuNameSyncStatus(db *DaoDB, vendorIDs []int, vendorOrgCodes []string, nameIDs []int, syncStatus int8) (num int64, err error) {
if globals.IsUseThingMap {
skuIDs, err2 := GetSkuIDByNames(db, nameIDs)
if err = err2; err == nil {
num, err = SetThingMapSyncStatus(db, vendorIDs, vendorOrgCodes, model.ThingTypeSku, skuIDs, syncStatus)
}
} else {
sql := `
UPDATE sku t1
SET t1.jd_sync_status = t1.jd_sync_status | ?
WHERE t1.deleted_at = ?
`
sqlParams := []interface{}{
syncStatus,
utils.DefaultTimeValue,
}
if len(nameIDs) > 0 {
sql += " AND t1.name_id IN(" + GenQuestionMarks(len(nameIDs)) + ")"
sqlParams = append(sqlParams, nameIDs)
}
num, err = ExecuteSQL(db, sql, sqlParams...)
}
return num, err
}

View File

@@ -365,9 +365,13 @@ func (c *PurchaseHandler) GetAllStoresVendorID(ctx *jxcontext.Context, vendorOrg
return vendorStoreIDs, err return vendorStoreIDs, err
} }
func (c *PurchaseHandler) storeUploadImgByURL(inImgURL string) (imgURL string, err error) { func (c *PurchaseHandler) storeUploadImgByURL(vendorOrgCode, inImgURL string) (imgURL string, err error) {
if globals.EnableJdStoreWrite { if globals.EnableJdStoreWrite {
imgURL, err = api.JdPageAPI.StoreUploadImgByURL(inImgURL) if vendorOrgCode == globals.JdOrgCode {
imgURL, err = api.JdPageAPI.StoreUploadImgByURL(inImgURL)
} else {
imgURL, err = getAPI(vendorOrgCode).StoreUploadImgByURL(inImgURL)
}
} else { } else {
imgURL = utils.GetUUID() imgURL = utils.GetUUID()
} }
@@ -395,7 +399,7 @@ func (c *PurchaseHandler) SyncQualify(ctx *jxcontext.Context, storeDetail *dao.S
if err != nil { if err != nil {
return err return err
} }
licenceURL, err := c.storeUploadImgByURL(storeDetail.Licence) licenceURL, err := c.storeUploadImgByURL(storeDetail.VendorOrgCode, storeDetail.Licence)
if err != nil { if err != nil {
return err return err
} }
@@ -417,7 +421,7 @@ func (c *PurchaseHandler) SyncQualify(ctx *jxcontext.Context, storeDetail *dao.S
Scope: licenceDetail.Scope, Scope: licenceDetail.Scope,
}) })
idFrondURL, err := c.storeUploadImgByURL(storeDetail.IDCardFront) idFrondURL, err := c.storeUploadImgByURL(storeDetail.VendorOrgCode, storeDetail.IDCardFront)
if err != nil { if err != nil {
return addStoreInfo2Err(err, storeDetail.ID) return addStoreInfo2Err(err, storeDetail.ID)
} }
@@ -451,7 +455,7 @@ func (c *PurchaseHandler) SyncQualify(ctx *jxcontext.Context, storeDetail *dao.S
qualifyList = append(qualifyList, addInfo) qualifyList = append(qualifyList, addInfo)
} }
if storeDetail.IDExpire == "" { if storeDetail.IDExpire == "" {
idBackURL, err := c.storeUploadImgByURL(storeDetail.IDCardBack) idBackURL, err := c.storeUploadImgByURL(storeDetail.VendorOrgCode, storeDetail.IDCardBack)
if err != nil { if err != nil {
return addStoreInfo2Err(err, storeDetail.ID) return addStoreInfo2Err(err, storeDetail.ID)
} }

View File

@@ -59,6 +59,8 @@ backstageHost = "http://www.jxc4.com"
wxBackstageHost = "http://wx.jxc4.com" wxBackstageHost = "http://wx.jxc4.com"
jdStorePageCookie = "OPJQMA7B3FTKCAUGO7FHCH5NMBGAWGGXYRNLEHYYZNGNPNIBCAM4IOEPG3NT3RIA44G5C3535Q5LGG4F4SR4AZVLGYKYTKFJJKEAOXENVBL5VXNILRP3GLNVVWA26XZ3VGSYOHA72RICMVZS3G53DTEH3LYUCSS54VI6WPOAGGDK532VYPEWWVCXUFRWENWDI4PEKM7SXBZ5BJO6DBLLERUA74YR2CVCGP4WUROCAHAMXKJ2VBGHTZYRL2DHR3BMXAHCTBAHYQLL24K5YI2PULRJL2UGAVD7VFRMEYTOXYHWCYVDXJ6HYFIPWIN3ULLXDDLN2ICON4GRK" jdStorePageCookie = "OPJQMA7B3FTKCAUGO7FHCH5NMBGAWGGXYRNLEHYYZNGNPNIBCAM4IOEPG3NT3RIA44G5C3535Q5LGG4F4SR4AZVLGYKYTKFJJKEAOXENVBL5VXNILRP3GLNVVWA26XZ3VGSYOHA72RICMVZS3G53DTEH3LYUCSS54VI6WPOAGGDK532VYPEWWVCXUFRWENWDI4PEKM7SXBZ5BJO6DBLLERUA74YR2CVCGP4WUROCAHAMXKJ2VBGHTZYRL2DHR3BMXAHCTBAHYQLL24K5YI2PULRJL2UGAVD7VFRMEYTOXYHWCYVDXJ6HYFIPWIN3ULLXDDLN2ICON4GRK"
jd2StorePageCookie = "CK5GE5MR2UIOBOZC7BBZLLSI7MVDWPEQ4BRJTJQ2OP3ZFKYDDYTHXLZR3RDCQD6WXIWTDOSXTP3AQEC2D3ZS24VYF7PTTKKUKN7G4XBQS3QOBGUDNLQNEY7CLSNLWZCC7LNI6GZOWOOEN72AWG53MMCURHIQRBG7CGEGVIZQNRKV2NAWXHUA2REY6NP2B3GHPO6S4H35ST5KQXRJWL5LJSIWZHXGPYA3OGPRNAHBLVVNTQE6OL2RPMHQYNXCFMU5QQERDWPFLIWKB7W4GI7GHKLYDY"
ebaiStorePageCookieWMUSS = "B0AAFQCAAAGbhkuMCsvcyYBDkkyAxBGIBlgXAQYVwc7VwYZFkx2HDoPSmo5eV1femopWgJRawhgAALG04cg1RUmhUakBbJRdgPS0tNEhnQhNRewwuWwYYBDEFPCQSDXV5YWA6PAVRHUJ9SnVGMThYAjNjLw9pRxIbS04-XFo05AQgBl%7ERLA33vWcR73gEAKZ" ebaiStorePageCookieWMUSS = "B0AAFQCAAAGbhkuMCsvcyYBDkkyAxBGIBlgXAQYVwc7VwYZFkx2HDoPSmo5eV1femopWgJRawhgAALG04cg1RUmhUakBbJRdgPS0tNEhnQhNRewwuWwYYBDEFPCQSDXV5YWA6PAVRHUJ9SnVGMThYAjNjLw9pRxIbS04-XFo05AQgBl%7ERLA33vWcR73gEAKZ"
ebaiStorePageCookieWMSTOKEN = "gAALgNAAAGfBI5YEBHSQdZY1InIS8CVQU9aBU1f3VLWVQqKHAAAc5LnRLZ1QLLx0S5IuzCSX8ZQ7oUwAAUr-GEm9JpRc9AQAAsLkLHHXzuhh2lZkbyrcAAAWBESKg3ZA" ebaiStorePageCookieWMSTOKEN = "gAALgNAAAGfBI5YEBHSQdZY1InIS8CVQU9aBU1f3VLWVQqKHAAAc5LnRLZ1QLLx0S5IuzCSX8ZQ7oUwAAUr-GEm9JpRc9AQAAsLkLHHXzuhh2lZkbyrcAAAWBESKg3ZA"
mtpsStoreToken = "M0p9VatZSeSHfrosD5IViAVl73IcA8mlcuHIV5sG6Zpv83a7JE0wY3t26aEhrrs_MR5gtLSFF1UIkt8HAjaXow" mtpsStoreToken = "M0p9VatZSeSHfrosD5IViAVl73IcA8mlcuHIV5sG6Zpv83a7JE0wY3t26aEhrrs_MR5gtLSFF1UIkt8HAjaXow"
@@ -105,6 +107,11 @@ jdToken = "77e703b7-7997-441b-a12a-2e522efb117a"
jdAppKey = "1dba76d40cac446ca500c0391a0b6c9d" jdAppKey = "1dba76d40cac446ca500c0391a0b6c9d"
jdSecret = "a88d031a1e7b462cb1579f12e97fe7f4" jdSecret = "a88d031a1e7b462cb1579f12e97fe7f4"
jd2OrgCode = "349454"
jd2Token = "29e0e567-c475-433a-aff0-37176ee8d8a7"
jd2AppKey = "7fb947624ff847ae94ff2f068cc99652"
jd2Secret = "1097abd7ef09427099b4922784af123a"
elmIsProd = false elmIsProd = false
elmToken = "2d2b583447b04b6bba5a6f3faed3559b" elmToken = "2d2b583447b04b6bba5a6f3faed3559b"
elmAppKey = "RwT214gAsS" elmAppKey = "RwT214gAsS"
@@ -137,6 +144,11 @@ jdToken = "77e703b7-7997-441b-a12a-2e522efb117a"
jdAppKey = "1dba76d40cac446ca500c0391a0b6c9d" jdAppKey = "1dba76d40cac446ca500c0391a0b6c9d"
jdSecret = "a88d031a1e7b462cb1579f12e97fe7f4" jdSecret = "a88d031a1e7b462cb1579f12e97fe7f4"
jd2OrgCode = ""
jd2Token = "29e0e567-c475-433a-aff0-37176ee8d8a7"
jd2AppKey = "7fb947624ff847ae94ff2f068cc99652"
jd2Secret = "1097abd7ef09427099b4922784af123a"
elmIsProd = true elmIsProd = true
elmToken = "" elmToken = ""
elmAppKey = "KLRDcOZGrk" elmAppKey = "KLRDcOZGrk"
@@ -307,6 +319,11 @@ jdToken = "77e703b7-7997-441b-a12a-2e522efb117a"
jdAppKey = "1dba76d40cac446ca500c0391a0b6c9d" jdAppKey = "1dba76d40cac446ca500c0391a0b6c9d"
jdSecret = "a88d031a1e7b462cb1579f12e97fe7f4" jdSecret = "a88d031a1e7b462cb1579f12e97fe7f4"
jd2OrgCode = "349454"
jd2Token = "29e0e567-c475-433a-aff0-37176ee8d8a7"
jd2AppKey = "7fb947624ff847ae94ff2f068cc99652"
jd2Secret = "1097abd7ef09427099b4922784af123a"
elmIsProd = true elmIsProd = true
elmToken = "" elmToken = ""
elmAppKey = "KLRDcOZGrk" elmAppKey = "KLRDcOZGrk"

View File

@@ -4,7 +4,9 @@ import (
"git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxstore/cms" "git.rosy.net.cn/jx-callback/business/jxstore/cms"
"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/dao" "git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/globals"
"github.com/astaxie/beego" "github.com/astaxie/beego"
) )
@@ -142,21 +144,61 @@ func (c *SyncController) DeleteRemoteStoreSkus() {
}) })
} }
// @Title 同步SkuName(多门店平台) // @Title 同步商家分类(多门店平台)
// @Description 同步SkuName(多门店平台) // @Description 同步商家分类(多门店平台)
// @Param token header string true "认证token" // @Param token header string true "认证token"
// @Param nameIDs formData string false "name ID列表" // @Param vendorID formData int false "平台ID(京东0 美团1 饿百3)"
// @Param vendorOrgCode formData string false "平台账号"
// @Param isForce formData bool false "是否强制(设置修改标志)" // @Param isForce formData bool false "是否强制(设置修改标志)"
// @Param isAsync formData bool false "是否异步" // @Param isAsync formData bool false "是否异步"
// @Param isContinueWhenError formData bool false "单个同步失败是否继续缺省false" // @Param isContinueWhenError formData bool false "单个同步失败是否继续缺省false"
// @Success 200 {object} controllers.CallResult // @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult
// @router /SyncSkuNames [put] // @router /SyncCategories [post]
func (c *SyncController) SyncCategories() {
c.callSyncCategories(func(params *tSyncSyncCategoriesParams) (retVal interface{}, errCode string, err error) {
var vendorIDs []int
if params.MapData["vendorID"] != nil {
vendorIDs = append(vendorIDs, params.VendorID)
}
vendorOrgCodes := jxutils.BatchString2Slice(params.VendorOrgCode)
if params.IsForce {
dao.SetThingMapSyncStatus(dao.GetDB(), vendorIDs, vendorOrgCodes, model.ThingTypeCategory, nil, model.SyncFlagModifiedMask)
}
retVal, err = cms.SyncCategories(params.Ctx, nil, vendorIDs, vendorOrgCodes, nil, params.IsAsync)
return retVal, "", err
})
}
// @Title 同步SkuName多门店平台
// @Description 同步SkuName多门店平台
// @Param token header string true "认证token"
// @Param nameIDs formData string false "name ID列表"
// @Param isForce formData bool false "是否强制(设置修改标志)"
// @Param vendorID formData int false "平台ID(京东0 美团1 饿百3)"
// @Param vendorOrgCode formData string false "平台账号"
// @Param isAsync formData bool false "是否异步"
// @Param isContinueWhenError formData bool false "单个同步失败是否继续缺省false"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /SyncSkuNames [put,post]
func (c *SyncController) SyncSkuNames() { func (c *SyncController) SyncSkuNames() {
c.callSyncSkuNames(func(params *tSyncSyncSkuNamesParams) (retVal interface{}, errCode string, err error) { c.callSyncSkuNames(func(params *tSyncSyncSkuNamesParams) (retVal interface{}, errCode string, err error) {
var nameIDs []int var nameIDs []int
if err = jxutils.Strings2Objs(params.NameIDs, &nameIDs); err == nil { if err = jxutils.Strings2Objs(params.NameIDs, &nameIDs); err == nil {
retVal, err = cms.CurVendorSync.SyncSkuNames(params.Ctx, nameIDs, params.IsForce, params.IsAsync, params.IsContinueWhenError) if globals.IsUseThingMap {
var vendorIDs []int
if params.MapData["vendorID"] != nil {
vendorIDs = append(vendorIDs, params.VendorID)
}
vendorOrgCodes := jxutils.BatchString2Slice(params.VendorOrgCode)
if params.IsForce {
dao.SetSkuNameSyncStatus(dao.GetDB(), vendorIDs, vendorOrgCodes, nameIDs, model.SyncFlagModifiedMask)
}
retVal, err = cms.SyncSkus(params.Ctx, nil, vendorIDs, vendorOrgCodes, nameIDs, nil, params.IsAsync)
} else {
retVal, err = cms.CurVendorSync.SyncSkuNames(params.Ctx, nameIDs, params.IsForce, params.IsAsync, params.IsContinueWhenError)
}
} }
return retVal, "", err return retVal, "", err
}) })

View File

@@ -32,8 +32,11 @@ import (
) )
var ( var (
JdAPI *jdapi.API JdAPI *jdapi.API
JdPageAPI *jdapi.API JdPageAPI *jdapi.API
Jd2API *jdapi.API
ElmAPI *elmapi.API ElmAPI *elmapi.API
EbaiAPI *ebaiapi.API EbaiAPI *ebaiapi.API
MtwmAPI *mtwmapi.API MtwmAPI *mtwmapi.API
@@ -79,6 +82,11 @@ func Init() {
conf := platformapi.NewDefAPIConfig() conf := platformapi.NewDefAPIConfig()
conf.MaxSleepSecondWhenExceedLimit = 60 * 30 // 最大重试间隙30分钟 conf.MaxSleepSecondWhenExceedLimit = 60 * 30 // 最大重试间隙30分钟
JdPageAPI = jdapi.NewPageOnly(cookieValue, conf) JdPageAPI = jdapi.NewPageOnly(cookieValue, conf)
if globals.Jd2OrgCode != "" {
Jd2API = jdapi.New(beego.AppConfig.String("jd2Token"), beego.AppConfig.String("jd2AppKey"), beego.AppConfig.String("jd2Secret"))
Jd2API.SetJdCookie(beego.AppConfig.DefaultString("jd2StorePageCookie", ""))
}
} else { } else {
JdAPI = nil JdAPI = nil
} }

View File

@@ -43,7 +43,7 @@ func (a *APIManager) GetAPI(vendorID int, appOrgCode string) (pfAPI interface{})
func (a *APIManager) GetAppOrgCodeList(vendorID int) (appOrgCodeList []string) { func (a *APIManager) GetAppOrgCodeList(vendorID int) (appOrgCodeList []string) {
switch vendorID { switch vendorID {
case model.VendorIDJD: case model.VendorIDJD:
appOrgCodeList = []string{globals.JdOrgCode} appOrgCodeList = jxutils.BatchString2Slice(globals.JdOrgCode, globals.Jd2OrgCode)
case model.VendorIDMTWM: case model.VendorIDMTWM:
appOrgCodeList = []string{api.MtwmAPI.GetAppID()} appOrgCodeList = []string{api.MtwmAPI.GetAppID()}
case model.VendorIDEBAI: case model.VendorIDEBAI:

View File

@@ -50,7 +50,8 @@ var (
WxpayNotifyURL string WxpayNotifyURL string
JdOrgCode string JdOrgCode string
Jd2OrgCode string
IsUseThingMap bool IsUseThingMap bool
) )
@@ -101,6 +102,7 @@ func Init() {
WxpayNotifyURL = beego.AppConfig.DefaultString("wxpayNotifyURL", "") WxpayNotifyURL = beego.AppConfig.DefaultString("wxpayNotifyURL", "")
JdOrgCode = beego.AppConfig.DefaultString("jdOrgCode", "") JdOrgCode = beego.AppConfig.DefaultString("jdOrgCode", "")
Jd2OrgCode = beego.AppConfig.DefaultString("jd2OrgCode", "")
IsUseThingMap = beego.AppConfig.DefaultBool("useThingMap", false) IsUseThingMap = beego.AppConfig.DefaultBool("useThingMap", false)
} }