feat(fulfillment): 接入Rock发货平台(0666.pro)代理履约、通用库存池与UID强一致风控
1. 数据库新增 012_rock_fulfillment 迁移,创建 rock_configs 配置表与 rock_tokens 通用库存表,补齐黑色ROCK长袖T恤与蓝色运动服上衣商品目录; 2. 封装 RockClient 与 RockService,实现 0666.pro 平台 Bearer Token 极简连通校验、批量采购50个入库、水位监控巡检与自动补货; 3. 新增 RockProvider 实现标准履约路由,引入 Anti-Ghost 旧绑定基线比对与 UID 强一致门禁,扫错号硬阻断并记录为 mismatch 状态; 4. 针对黑色ROCK与蓝色运动服实现动态发货(绑定后发货前动态选择 skin),并提取腾讯官方发货流水号 fulfillId 对账; 5. 新增全局自动发货总开关(Kill Switch),支持一键软熔断降级转人工接单处理; 6. 前端新增 PlatformRock 管理大屏,提供总开关切换、Token配置与连通测试、库存监控、一键补货及错单解冻重置。
This commit is contained in:
@@ -96,6 +96,13 @@ func main() {
|
||||
}, nil)
|
||||
lewanProvider := service.NewLewanProvider(lewanClient)
|
||||
deliverySvc.RegisterProvider(lewanProvider)
|
||||
|
||||
// Rock 平台 (0666.pro) 客户端、服务与履约提供商注册
|
||||
rockClient := service.NewRockClient("https://0666.pro")
|
||||
rockSvc := service.NewRockService(db, rockClient)
|
||||
rockProvider := service.NewRockProvider(rockSvc)
|
||||
deliverySvc.RegisterProvider(rockProvider)
|
||||
|
||||
fulfillmentSvc.SetUpstreamCancel(deliverySvc.CancelUpstream)
|
||||
fulfillmentSvc.SetUpstreamSync(deliverySvc.SyncDeliveringOrder)
|
||||
|
||||
@@ -122,6 +129,7 @@ func main() {
|
||||
CORSAllowedOrigins: cfg.CORSAllowedOrigins,
|
||||
LewanWebhook: handler.NewLewanWebhookHandler(fulfillmentSvc, db, cfg.LewanWebhookSecret, cfg.LewanApplicationID),
|
||||
PlatformLewan: handler.NewPlatformLewanHandler(merchantSvc, lewanClient),
|
||||
Rock: handler.NewRockHandler(rockSvc),
|
||||
}
|
||||
|
||||
go callbackSvc.Run(context.Background())
|
||||
@@ -131,6 +139,15 @@ func main() {
|
||||
time.Duration(cfg.FulfillmentTimeoutScanIntervalSeconds)*time.Second,
|
||||
)
|
||||
|
||||
// 定时巡检 Rock 库存低水位与自动补货(每5分钟)
|
||||
go func() {
|
||||
ticker := time.NewTicker(5 * time.Minute)
|
||||
defer ticker.Stop()
|
||||
for range ticker.C {
|
||||
rockSvc.CheckStockAndAutoPurchase(context.Background())
|
||||
}
|
||||
}()
|
||||
|
||||
r := router.Setup(h)
|
||||
addr := ":" + cfg.Port
|
||||
applog.Infof("游戏皮肤供货平台 API 启动: http://localhost%s (日志级别: %s)", addr, applog.GetLevel())
|
||||
|
||||
Reference in New Issue
Block a user