Files
jx-callback/globals/api/apimanager/apimanager.go
苏尹岚 5a6dae8d53 jdshop2
2020-11-18 09:48:34 +08:00

100 lines
2.6 KiB
Go

package apimanager
import (
"git.rosy.net.cn/jx-callback/business/jxutils"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/partner"
"git.rosy.net.cn/jx-callback/globals"
"git.rosy.net.cn/jx-callback/globals/api"
)
const (
FakeJdOrgCode = "fakejd"
)
type VendorOrgCodePair struct {
VendorID int
AppOrgCode string
}
type APIManager struct {
}
var (
CurAPIManager *APIManager
)
func init() {
globals.SugarLogger.Debug("init apimanager")
CurAPIManager = &APIManager{}
partner.InitAPIManager(CurAPIManager)
}
func (a *APIManager) GetAPI(vendorID int, appOrgCode string) (pfAPI interface{}) {
switch vendorID {
case model.VendorIDJD:
pfAPI = api.JdAPI
if appOrgCode == FakeJdOrgCode {
pfAPI = api.FakeJdAPI
} else if appOrgCode != "" && appOrgCode == globals.Jd2OrgCode {
pfAPI = api.Jd2API
} else if appOrgCode != "" && appOrgCode == globals.Jd3OrgCode {
pfAPI = api.Jd3API
}
case model.VendorIDMTWM:
pfAPI = api.MtwmAPI
case model.VendorIDEBAI:
pfAPI = api.EbaiAPI
case model.VendorIDJDShop:
if appOrgCode == "1" {
pfAPI = api.JdShopAPI
} else {
pfAPI = api.JdShop2API
}
}
return pfAPI
}
// TODO
func (a *APIManager) GetAppOrgCodeList(vendorID int) (appOrgCodeList []string) {
switch vendorID {
case model.VendorIDJD:
appOrgCodeList = jxutils.BatchString2Slice(globals.JdOrgCode, globals.Jd2OrgCode, globals.Jd3OrgCode)
case model.VendorIDMTWM:
appOrgCodeList = []string{api.MtwmAPI.GetAppID()}
case model.VendorIDEBAI:
appOrgCodeList = []string{api.EbaiAPI.GetSource()}
case model.VendorIDJDShop:
appOrgCodeList = []string{"1", "2"}
}
return appOrgCodeList
}
func (a *APIManager) GetVendorOrgCodeList(vendorIDs []int, appOrgCodes []string) (vendorOrgCodeList []*VendorOrgCodePair) {
if len(vendorIDs) == 0 {
vendorIDs = partner.GetMultiStoreVendorIDs()
}
appOrgCodeMap := jxutils.StringList2Map(appOrgCodes)
for _, vendorID := range vendorIDs {
tmpOrgCodeList := a.GetAppOrgCodeList(vendorID)
for _, v := range tmpOrgCodeList {
if len(appOrgCodes) == 0 || appOrgCodeMap[v] == 1 {
vendorOrgCodeList = append(vendorOrgCodeList, &VendorOrgCodePair{
VendorID: vendorID,
AppOrgCode: v,
})
}
}
}
return vendorOrgCodeList
}
func GetVendorOrgCodeMap(ctx *jxcontext.Context) (vendorOrgCodeMap map[int][]string) {
vendorOrgCodeMap = make(map[int][]string)
for _, vendorID := range partner.GetPurchasePlatformVendorIDs() {
vendorOrgCodeMap[vendorID] = CurAPIManager.GetAppOrgCodeList(vendorID)
}
return vendorOrgCodeMap
}