Files
assets/consts/public/sync_platform.go

146 lines
5.0 KiB
Go
Raw Normal View History

2026-03-18 10:18:03 +08:00
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)
}
}