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 } case model.VendorIDMTWM: pfAPI = api.MtwmAPI case model.VendorIDEBAI: pfAPI = api.EbaiAPI } return pfAPI } // TODO func (a *APIManager) GetAppOrgCodeList(vendorID int) (appOrgCodeList []string) { switch vendorID { case model.VendorIDJD: appOrgCodeList = jxutils.BatchString2Slice(globals.JdOrgCode, globals.Jd2OrgCode) case model.VendorIDMTWM: appOrgCodeList = []string{api.MtwmAPI.GetAppID()} case model.VendorIDEBAI: appOrgCodeList = []string{api.EbaiAPI.GetSource()} } 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 }