157 lines
4.9 KiB
Go
157 lines
4.9 KiB
Go
package service
|
|
|
|
import (
|
|
consts "assets/consts/public"
|
|
"assets/dao/sync"
|
|
"context"
|
|
)
|
|
|
|
// DefaultPlatformFactory 默认平台服务工厂实现
|
|
type DefaultPlatformFactory struct{}
|
|
|
|
// NewPlatformServiceFactory 创建平台服务工厂
|
|
func NewPlatformServiceFactory() PlatformFactory {
|
|
return &DefaultPlatformFactory{}
|
|
}
|
|
|
|
// CreateAssetService 创建资产平台服务
|
|
func (f *DefaultPlatformFactory) CreateAssetService(platform consts.SyncPlatform) AssetPlatformService {
|
|
config, err := dao.SyncConfig.GetByPlatform(context.Background(), platform)
|
|
if err != nil || config == nil {
|
|
// 如果没有配置,创建默认配置
|
|
//config = &entity.SyncConfig{
|
|
// Platform: platform,
|
|
// IsEnabled: true,
|
|
// APIEndpoint: f.getAPIEndpoint(platform),
|
|
// SyncInterval: 300,
|
|
// BatchSize: 100,
|
|
// MaxRetries: 3,
|
|
//}
|
|
}
|
|
|
|
switch platform {
|
|
case consts.SyncPlatformTaobao:
|
|
return NewTaobaoAssetService(config)
|
|
case consts.SyncPlatformJD:
|
|
return NewJDAssetService(config)
|
|
case consts.SyncPlatformDouyin:
|
|
return NewDouyinAssetService(config)
|
|
case consts.SyncPlatformKuaishou:
|
|
return NewKuaishouAssetService(config)
|
|
case consts.SyncPlatformXiaohongshu:
|
|
return NewXiaohongshuAssetService(config)
|
|
case consts.SyncPlatformPinduoduo:
|
|
return NewPinduoduoAssetService(config)
|
|
case consts.SyncPlatformXianyu:
|
|
return NewXianyuAssetService(config)
|
|
case consts.SyncPlatformBlockchain:
|
|
return NewBlockchainAssetService(config)
|
|
case consts.SyncPlatformInternal:
|
|
return NewInternalAssetService(config)
|
|
default:
|
|
return NewDefaultAssetService(platform, config)
|
|
}
|
|
}
|
|
|
|
// CreateAssetSkuService 创建资产SKU平台服务
|
|
func (f *DefaultPlatformFactory) CreateAssetSkuService(platform consts.SyncPlatform) AssetSkuPlatformService {
|
|
config, err := dao.SyncConfig.GetByPlatform(context.Background(), platform)
|
|
if err != nil || config == nil {
|
|
//config = &entity.ChannelConfig{
|
|
// Platform: platform,
|
|
// IsEnabled: true,
|
|
// APIEndpoint: f.getAPIEndpoint(platform),
|
|
// SyncInterval: 300,
|
|
// BatchSize: 100,
|
|
// MaxRetries: 3,
|
|
//}
|
|
}
|
|
|
|
switch platform {
|
|
case consts.SyncPlatformTaobao:
|
|
return NewTaobaoAssetSkuService(config)
|
|
case consts.SyncPlatformJD:
|
|
return NewJDAssetSkuService(config)
|
|
case consts.SyncPlatformDouyin:
|
|
return NewDouyinAssetSkuService(config)
|
|
case consts.SyncPlatformKuaishou:
|
|
return NewKuaishouAssetSkuService(config)
|
|
case consts.SyncPlatformXiaohongshu:
|
|
return NewXiaohongshuAssetSkuService(config)
|
|
case consts.SyncPlatformPinduoduo:
|
|
return NewPinduoduoAssetSkuService(config)
|
|
case consts.SyncPlatformXianyu:
|
|
return NewXianyuAssetSkuService(config)
|
|
case consts.SyncPlatformBlockchain:
|
|
return NewBlockchainAssetSkuService(config)
|
|
case consts.SyncPlatformInternal:
|
|
return NewInternalAssetSkuService(config)
|
|
default:
|
|
return NewDefaultAssetSkuService(platform, config)
|
|
}
|
|
}
|
|
|
|
// CreateStockService 创建库存平台服务
|
|
func (f *DefaultPlatformFactory) CreateStockService(platform consts.SyncPlatform) StockPlatformService {
|
|
config, err := dao.SyncConfig.GetByPlatform(context.Background(), platform)
|
|
if err != nil || config == nil {
|
|
//config = &entity.SyncConfig{
|
|
// Platform: platform,
|
|
// IsEnabled: true,
|
|
// APIEndpoint: f.getAPIEndpoint(platform),
|
|
// SyncInterval: 300,
|
|
// BatchSize: 100,
|
|
// MaxRetries: 3,
|
|
//}
|
|
}
|
|
|
|
switch platform {
|
|
case consts.SyncPlatformTaobao:
|
|
return NewTaobaoStockService(config)
|
|
case consts.SyncPlatformJD:
|
|
return NewJDStockService(config)
|
|
case consts.SyncPlatformDouyin:
|
|
return NewDouyinStockService(config)
|
|
case consts.SyncPlatformKuaishou:
|
|
return NewKuaishouStockService(config)
|
|
case consts.SyncPlatformXiaohongshu:
|
|
return NewXiaohongshuStockService(config)
|
|
case consts.SyncPlatformPinduoduo:
|
|
return NewPinduoduoStockService(config)
|
|
case consts.SyncPlatformXianyu:
|
|
return NewXianyuStockService(config)
|
|
case consts.SyncPlatformBlockchain:
|
|
return NewBlockchainStockService(config)
|
|
case consts.SyncPlatformInternal:
|
|
return NewInternalStockService(config)
|
|
default:
|
|
return NewDefaultStockService(platform, config)
|
|
}
|
|
}
|
|
|
|
// getAPIEndpoint 根据平台获取API端点
|
|
func (f *DefaultPlatformFactory) getAPIEndpoint(platform consts.SyncPlatform) string {
|
|
switch platform {
|
|
case consts.SyncPlatformTaobao:
|
|
return "https://eco.taobao.com/router/rest"
|
|
case consts.SyncPlatformJD:
|
|
return "https://api.jd.com/routerjson"
|
|
case consts.SyncPlatformDouyin:
|
|
return "https://open.douyin.com/api"
|
|
case consts.SyncPlatformKuaishou:
|
|
return "https://open.kuaishou.com/api"
|
|
case consts.SyncPlatformXiaohongshu:
|
|
return "https://open.xiaohongshu.com/api"
|
|
case consts.SyncPlatformPinduoduo:
|
|
return "https://open.pinduoduo.com/api"
|
|
case consts.SyncPlatformXianyu:
|
|
return "https://api.xianyu.com/api"
|
|
case consts.SyncPlatformBlockchain:
|
|
return "https://api.blockchain.com/api"
|
|
case consts.SyncPlatformInternal:
|
|
return "http://localhost:3004/api"
|
|
default:
|
|
return ""
|
|
}
|
|
}
|