146 lines
5.0 KiB
Go
146 lines
5.0 KiB
Go
package public
|
||
|
||
import "fmt"
|
||
|
||
// SyncPlatform 同步渠道平台枚举
|
||
type SyncPlatform string
|
||
|
||
const (
|
||
SyncPlatformTaobao SyncPlatform = "taobao" // 淘宝
|
||
SyncPlatformJD SyncPlatform = "jd" // 京东
|
||
SyncPlatformKuaishou SyncPlatform = "kuaishou" // 快手
|
||
SyncPlatformDouyin SyncPlatform = "douyin" // 抖音
|
||
SyncPlatformXiaohongshu SyncPlatform = "xiaohongshu" // 小红书
|
||
SyncPlatformPinduoduo SyncPlatform = "pinduoduo" // 拼多多
|
||
SyncPlatformXianyu SyncPlatform = "xianyu" // 闲鱼
|
||
SyncPlatformBlockchain SyncPlatform = "blockchain" // 区块链平台
|
||
SyncPlatformInternal SyncPlatform = "internal" // 内部平台
|
||
)
|
||
|
||
// SyncStatus 同步状态枚举
|
||
type SyncStatus string
|
||
|
||
const (
|
||
SyncStatusPending SyncStatus = "pending" // 等待同步
|
||
SyncStatusSyncing SyncStatus = "syncing" // 同步中
|
||
SyncStatusSuccess SyncStatus = "success" // 同步成功
|
||
SyncStatusFailed SyncStatus = "failed" // 同步失败
|
||
)
|
||
|
||
// SyncType 同步类型
|
||
type SyncType string
|
||
|
||
const (
|
||
SyncTypeIncremental SyncType = "incremental" // 增量同步
|
||
)
|
||
|
||
// PlatformSyncConfig 平台同步配置结构
|
||
type PlatformSyncConfig struct {
|
||
Platform SyncPlatform // 平台名称
|
||
IsEnabled bool // 是否启用
|
||
SyncInterval int // 同步间隔(秒)
|
||
BatchSize int // 批量同步数量
|
||
MaxRetries int // 最大重试次数
|
||
APIEndpoint string // API端点地址
|
||
Description string // 平台描述
|
||
}
|
||
|
||
// GetPlatformSyncConfig 获取平台默认同步配置
|
||
func GetPlatformSyncConfig(platform SyncPlatform) (PlatformSyncConfig, error) {
|
||
switch platform {
|
||
case SyncPlatformTaobao:
|
||
return PlatformSyncConfig{
|
||
Platform: SyncPlatformTaobao,
|
||
IsEnabled: true,
|
||
SyncInterval: 300, // 5分钟
|
||
BatchSize: 50, // 淘宝API限制较严
|
||
MaxRetries: 3,
|
||
APIEndpoint: "https://eco.taobao.com/router/rest",
|
||
Description: "淘宝电商平台,API限制严格",
|
||
}, nil
|
||
case SyncPlatformJD:
|
||
return PlatformSyncConfig{
|
||
Platform: SyncPlatformJD,
|
||
IsEnabled: true,
|
||
SyncInterval: 240, // 4分钟
|
||
BatchSize: 100, // 京东API支持较大批次
|
||
MaxRetries: 3,
|
||
APIEndpoint: "https://api.jd.com/routerjson",
|
||
Description: "京东电商平台,API相对稳定",
|
||
}, nil
|
||
case SyncPlatformKuaishou:
|
||
return PlatformSyncConfig{
|
||
Platform: SyncPlatformKuaishou,
|
||
IsEnabled: true,
|
||
SyncInterval: 180, // 3分钟,直播数据更新快
|
||
BatchSize: 80,
|
||
MaxRetries: 2, // 快手API相对不稳定
|
||
APIEndpoint: "https://open.kuaishou.com/api",
|
||
Description: "快手直播平台,数据更新频繁",
|
||
}, nil
|
||
case SyncPlatformDouyin:
|
||
return PlatformSyncConfig{
|
||
Platform: SyncPlatformDouyin,
|
||
IsEnabled: true,
|
||
SyncInterval: 120, // 2分钟,内容更新非常频繁
|
||
BatchSize: 60,
|
||
MaxRetries: 3,
|
||
APIEndpoint: "https://open.douyin.com/api",
|
||
Description: "抖音短视频平台,实时性要求高",
|
||
}, nil
|
||
case SyncPlatformXiaohongshu:
|
||
return PlatformSyncConfig{
|
||
Platform: SyncPlatformXiaohongshu,
|
||
IsEnabled: true,
|
||
SyncInterval: 300, // 5分钟
|
||
BatchSize: 40, // 小红书API限制严格
|
||
MaxRetries: 2,
|
||
APIEndpoint: "https://open.xiaohongshu.com/api",
|
||
Description: "小红书内容平台,API调用频率限制严格",
|
||
}, nil
|
||
case SyncPlatformPinduoduo:
|
||
return PlatformSyncConfig{
|
||
Platform: SyncPlatformPinduoduo,
|
||
IsEnabled: true,
|
||
SyncInterval: 360, // 6分钟,避免频率限制
|
||
BatchSize: 120, // 拼多多支持大批次
|
||
MaxRetries: 3,
|
||
APIEndpoint: "https://open.pinduoduo.com/api",
|
||
Description: "拼多多电商平台,需要控制调用频率",
|
||
}, nil
|
||
case SyncPlatformXianyu:
|
||
return PlatformSyncConfig{
|
||
Platform: SyncPlatformXianyu,
|
||
IsEnabled: false, // 默认关闭
|
||
SyncInterval: 600, // 10分钟,闲鱼更新较慢
|
||
BatchSize: 30,
|
||
MaxRetries: 1,
|
||
APIEndpoint: "https://api.xianyu.com/api",
|
||
Description: "闲鱼二手平台,数据更新较慢,谨慎使用",
|
||
}, nil
|
||
case SyncPlatformBlockchain:
|
||
return PlatformSyncConfig{
|
||
Platform: SyncPlatformBlockchain,
|
||
IsEnabled: true,
|
||
SyncInterval: 60, // 1分钟,需要高实时性
|
||
BatchSize: 20, // 区块链数据复杂,减小批次
|
||
MaxRetries: 5, // 区块链网络可能不稳定
|
||
APIEndpoint: "https://api.blockchain.com/api",
|
||
Description: "区块链平台,数据需要高实时性和稳定性",
|
||
}, nil
|
||
case SyncPlatformInternal:
|
||
return PlatformSyncConfig{
|
||
Platform: SyncPlatformInternal,
|
||
IsEnabled: true,
|
||
SyncInterval: 30, // 30秒,内部系统实时性高
|
||
BatchSize: 200, // 内部系统支持大批次
|
||
MaxRetries: 1, // 内部系统稳定
|
||
APIEndpoint: "http://localhost:3004/api",
|
||
Description: "内部系统平台,高实时性和大批次处理能力",
|
||
}, nil
|
||
default:
|
||
// 返回错误,未知平台
|
||
return PlatformSyncConfig{}, fmt.Errorf("unsupported sync platform: %s", platform)
|
||
}
|
||
}
|