diff --git a/business/jxstore/cms/sync.go b/business/jxstore/cms/sync.go index 02244463a..ce4d1d81f 100644 --- a/business/jxstore/cms/sync.go +++ b/business/jxstore/cms/sync.go @@ -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) { db := dao.GetDB() if isForce { - sql := ` - 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 - } + dao.SetSkuNameSyncStatus(db, nil, nil, nameIDs, model.SyncFlagModifiedMask) } return v.SyncSkus(ctx, db, nameIDs, nil, isAsync, isContinueWhenError, ctx.GetUserName()) } diff --git a/business/model/dao/thing_map.go b/business/model/dao/thing_map.go index 69fd5a336..59ce42b1c 100644 --- a/business/model/dao/thing_map.go +++ b/business/model/dao/thing_map.go @@ -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/jx-callback/globals" + func GetThingMapList(db *DaoDB, thingType int, vendorIDs, thingIDs []int) (cats []*model.ThingMap, err error) { sql := ` SELECT t1.* @@ -32,3 +34,55 @@ func GetThingMapMap(db *DaoDB, thingType int, vendorIDs, thingIDs []int) (thingM } 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 +} diff --git a/business/partner/purchase/jd/store.go b/business/partner/purchase/jd/store.go index 8cafda7d6..fc88d91cd 100644 --- a/business/partner/purchase/jd/store.go +++ b/business/partner/purchase/jd/store.go @@ -365,9 +365,13 @@ func (c *PurchaseHandler) GetAllStoresVendorID(ctx *jxcontext.Context, vendorOrg 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 { - imgURL, err = api.JdPageAPI.StoreUploadImgByURL(inImgURL) + if vendorOrgCode == globals.JdOrgCode { + imgURL, err = api.JdPageAPI.StoreUploadImgByURL(inImgURL) + } else { + imgURL, err = getAPI(vendorOrgCode).StoreUploadImgByURL(inImgURL) + } } else { imgURL = utils.GetUUID() } @@ -395,7 +399,7 @@ func (c *PurchaseHandler) SyncQualify(ctx *jxcontext.Context, storeDetail *dao.S if err != nil { return err } - licenceURL, err := c.storeUploadImgByURL(storeDetail.Licence) + licenceURL, err := c.storeUploadImgByURL(storeDetail.VendorOrgCode, storeDetail.Licence) if err != nil { return err } @@ -417,7 +421,7 @@ func (c *PurchaseHandler) SyncQualify(ctx *jxcontext.Context, storeDetail *dao.S Scope: licenceDetail.Scope, }) - idFrondURL, err := c.storeUploadImgByURL(storeDetail.IDCardFront) + idFrondURL, err := c.storeUploadImgByURL(storeDetail.VendorOrgCode, storeDetail.IDCardFront) if err != nil { return addStoreInfo2Err(err, storeDetail.ID) } @@ -451,7 +455,7 @@ func (c *PurchaseHandler) SyncQualify(ctx *jxcontext.Context, storeDetail *dao.S qualifyList = append(qualifyList, addInfo) } if storeDetail.IDExpire == "" { - idBackURL, err := c.storeUploadImgByURL(storeDetail.IDCardBack) + idBackURL, err := c.storeUploadImgByURL(storeDetail.VendorOrgCode, storeDetail.IDCardBack) if err != nil { return addStoreInfo2Err(err, storeDetail.ID) } diff --git a/conf/app.conf b/conf/app.conf index 12237e789..87e5c2ef1 100644 --- a/conf/app.conf +++ b/conf/app.conf @@ -59,6 +59,8 @@ backstageHost = "http://www.jxc4.com" wxBackstageHost = "http://wx.jxc4.com" jdStorePageCookie = "OPJQMA7B3FTKCAUGO7FHCH5NMBGAWGGXYRNLEHYYZNGNPNIBCAM4IOEPG3NT3RIA44G5C3535Q5LGG4F4SR4AZVLGYKYTKFJJKEAOXENVBL5VXNILRP3GLNVVWA26XZ3VGSYOHA72RICMVZS3G53DTEH3LYUCSS54VI6WPOAGGDK532VYPEWWVCXUFRWENWDI4PEKM7SXBZ5BJO6DBLLERUA74YR2CVCGP4WUROCAHAMXKJ2VBGHTZYRL2DHR3BMXAHCTBAHYQLL24K5YI2PULRJL2UGAVD7VFRMEYTOXYHWCYVDXJ6HYFIPWIN3ULLXDDLN2ICON4GRK" +jd2StorePageCookie = "CK5GE5MR2UIOBOZC7BBZLLSI7MVDWPEQ4BRJTJQ2OP3ZFKYDDYTHXLZR3RDCQD6WXIWTDOSXTP3AQEC2D3ZS24VYF7PTTKKUKN7G4XBQS3QOBGUDNLQNEY7CLSNLWZCC7LNI6GZOWOOEN72AWG53MMCURHIQRBG7CGEGVIZQNRKV2NAWXHUA2REY6NP2B3GHPO6S4H35ST5KQXRJWL5LJSIWZHXGPYA3OGPRNAHBLVVNTQE6OL2RPMHQYNXCFMU5QQERDWPFLIWKB7W4GI7GHKLYDY" + ebaiStorePageCookieWMUSS = "B0AAFQCAAAGbhkuMCsvcyYBDkkyAxBGIBlgXAQYVwc7VwYZFkx2HDoPSmo5eV1femopWgJRawhgAALG04cg1RUmhUakBbJRdgPS0tNEhnQhNRewwuWwYYBDEFPCQSDXV5YWA6PAVRHUJ9SnVGMThYAjNjLw9pRxIbS04-XFo05AQgBl%7ERLA33vWcR73gEAKZ" ebaiStorePageCookieWMSTOKEN = "gAALgNAAAGfBI5YEBHSQdZY1InIS8CVQU9aBU1f3VLWVQqKHAAAc5LnRLZ1QLLx0S5IuzCSX8ZQ7oUwAAUr-GEm9JpRc9AQAAsLkLHHXzuhh2lZkbyrcAAAWBESKg3ZA" mtpsStoreToken = "M0p9VatZSeSHfrosD5IViAVl73IcA8mlcuHIV5sG6Zpv83a7JE0wY3t26aEhrrs_MR5gtLSFF1UIkt8HAjaXow" @@ -105,6 +107,11 @@ jdToken = "77e703b7-7997-441b-a12a-2e522efb117a" jdAppKey = "1dba76d40cac446ca500c0391a0b6c9d" jdSecret = "a88d031a1e7b462cb1579f12e97fe7f4" +jd2OrgCode = "349454" +jd2Token = "29e0e567-c475-433a-aff0-37176ee8d8a7" +jd2AppKey = "7fb947624ff847ae94ff2f068cc99652" +jd2Secret = "1097abd7ef09427099b4922784af123a" + elmIsProd = false elmToken = "2d2b583447b04b6bba5a6f3faed3559b" elmAppKey = "RwT214gAsS" @@ -137,6 +144,11 @@ jdToken = "77e703b7-7997-441b-a12a-2e522efb117a" jdAppKey = "1dba76d40cac446ca500c0391a0b6c9d" jdSecret = "a88d031a1e7b462cb1579f12e97fe7f4" +jd2OrgCode = "" +jd2Token = "29e0e567-c475-433a-aff0-37176ee8d8a7" +jd2AppKey = "7fb947624ff847ae94ff2f068cc99652" +jd2Secret = "1097abd7ef09427099b4922784af123a" + elmIsProd = true elmToken = "" elmAppKey = "KLRDcOZGrk" @@ -307,6 +319,11 @@ jdToken = "77e703b7-7997-441b-a12a-2e522efb117a" jdAppKey = "1dba76d40cac446ca500c0391a0b6c9d" jdSecret = "a88d031a1e7b462cb1579f12e97fe7f4" +jd2OrgCode = "349454" +jd2Token = "29e0e567-c475-433a-aff0-37176ee8d8a7" +jd2AppKey = "7fb947624ff847ae94ff2f068cc99652" +jd2Secret = "1097abd7ef09427099b4922784af123a" + elmIsProd = true elmToken = "" elmAppKey = "KLRDcOZGrk" diff --git a/controllers/cms_sync.go b/controllers/cms_sync.go index 77f08bbb7..fd0dd2524 100644 --- a/controllers/cms_sync.go +++ b/controllers/cms_sync.go @@ -4,7 +4,9 @@ import ( "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxstore/cms" "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/globals" "github.com/astaxie/beego" ) @@ -142,21 +144,61 @@ func (c *SyncController) DeleteRemoteStoreSkus() { }) } -// @Title 同步SkuName(多门店平台) -// @Description 同步SkuName(多门店平台) +// @Title 同步商家分类(多门店平台) +// @Description 同步商家分类(多门店平台) // @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 isAsync formData bool false "是否异步" // @Param isContinueWhenError formData bool false "单个同步失败是否继续,缺省false" // @Success 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() { c.callSyncSkuNames(func(params *tSyncSyncSkuNamesParams) (retVal interface{}, errCode string, err error) { var nameIDs []int 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 }) diff --git a/globals/api/api.go b/globals/api/api.go index 10a651d4f..9ab7e5b4c 100644 --- a/globals/api/api.go +++ b/globals/api/api.go @@ -32,8 +32,11 @@ import ( ) var ( - JdAPI *jdapi.API - JdPageAPI *jdapi.API + JdAPI *jdapi.API + JdPageAPI *jdapi.API + + Jd2API *jdapi.API + ElmAPI *elmapi.API EbaiAPI *ebaiapi.API MtwmAPI *mtwmapi.API @@ -79,6 +82,11 @@ func Init() { conf := platformapi.NewDefAPIConfig() conf.MaxSleepSecondWhenExceedLimit = 60 * 30 // 最大重试间隙30分钟 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 { JdAPI = nil } diff --git a/globals/api/apimanager/apimanager.go b/globals/api/apimanager/apimanager.go index 89a0b71ef..5091e46ac 100644 --- a/globals/api/apimanager/apimanager.go +++ b/globals/api/apimanager/apimanager.go @@ -43,7 +43,7 @@ func (a *APIManager) GetAPI(vendorID int, appOrgCode string) (pfAPI interface{}) func (a *APIManager) GetAppOrgCodeList(vendorID int) (appOrgCodeList []string) { switch vendorID { case model.VendorIDJD: - appOrgCodeList = []string{globals.JdOrgCode} + appOrgCodeList = jxutils.BatchString2Slice(globals.JdOrgCode, globals.Jd2OrgCode) case model.VendorIDMTWM: appOrgCodeList = []string{api.MtwmAPI.GetAppID()} case model.VendorIDEBAI: diff --git a/globals/globals.go b/globals/globals.go index b0909ff04..17727ac4f 100644 --- a/globals/globals.go +++ b/globals/globals.go @@ -50,7 +50,8 @@ var ( WxpayNotifyURL string - JdOrgCode string + JdOrgCode string + Jd2OrgCode string IsUseThingMap bool ) @@ -101,6 +102,7 @@ func Init() { WxpayNotifyURL = beego.AppConfig.DefaultString("wxpayNotifyURL", "") JdOrgCode = beego.AppConfig.DefaultString("jdOrgCode", "") + Jd2OrgCode = beego.AppConfig.DefaultString("jd2OrgCode", "") IsUseThingMap = beego.AppConfig.DefaultBool("useThingMap", false) }