yml2213
|
0dff9d892e
|
feat(merchant-products): 开放商品编辑功能,支持超级管理员与商户修改售价积分、成本价与库存模式
1. 后端 Handler 新增 UpdateProduct 方法,并在 /api/merchant/products/:id 注册 PATCH 路由,支持修改商品显示名称、对外售价积分、成本价与库存;
2. 前端商户中心 merchantApi 扩充 updateProduct 接口对接;
3. 商品列表(ProductsTab)操作列新增【编辑】按钮与模态框,提供商品名称、对外售价(积分)、成本价(积分)、无限库存/指定限量模式及上架状态编辑功能;
4. 修复超级管理员在自营或商户商品列表中无法自由调价与调整库存的交互缺失问题。
|
2026-10-05 15:10:21 +08:00 |
|
yml2213
|
ef7f67dd0c
|
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配置与连通测试、库存监控、一键补货及错单解冻重置。
|
2026-10-05 14:56:11 +08:00 |
|
yml2213
|
46ec3574ae
|
fix(delivery): 治理上游 BFF 单 IP 频控限流与高频轮询雪崩问题
1. 透传分布式客户端 IP(X-Forwarded-For):signProxy 发包自动透传客户端 IP 与订单散列 IP,穿透上游 Nginx 限流层,避免生产服务器单出口 IP(124.223.12.34)被全盘限流(HTTP 429);
2. 频控限流立即避让禁止盲目重试:429 与“请求过于频繁”明确判定为不可重试错误,signProxy 立即返回,消除 8.2 秒长挂与 3 倍放大重试流量;
3. 优化轮询频次与频控冷却:accountBound 未扫码缓存 TTL 提升至 5 秒(削减 60% 轮询 QPS),遭遇频控时拉长缓存避让至 15 秒并由前端平滑等待,给上游充分恢复窗口。
|
2026-09-18 19:52:53 +08:00 |
|
yml2213
|
af0822949d
|
fix(delivery): 修复 DLC 正式下单重复提交与发货并发冲突问题
1. DLC 正式下单接口禁用传输层自动重试:/public/users/orders 属于非幂等状态变更接口,发生频控或抖动时由上层回调与状态同步接管,严禁盲目原单号重试导致上游抛出“该子订单已处理,请勿重复提交”;
2. 扩充队列防重与已有记录识别:识别上游“该订单已有发货记录/已处理”错误,重新建队时自动追加独立重试单号(_xxxx)并透传至正式下单,避免单号污染冲突;
3. 上游回调支持重试单号兼容:HandleShipNotify 在精准匹配未命中时,自动按下划线前缀匹配主订单号(FO..._xxxx -> FO...),保障重试单回调正常交付;
4. 加强提交并发锁防护:在 35 秒活跃执行窗口内对 in_progress 阶段实行严格并发互斥,避免上游 Webhook 提前推回失败状态导致后续重试穿透产生并发打架;提单失败时显式重置 provider_order_stage 释放锁。
|
2026-09-18 16:19:37 +08:00 |
|
yml2213
|
40194fa7e5
|
fix(delivery): 增加绑定缓存防频控、发货队列防重试死锁、终止无效回调重试
|
2026-09-18 15:26:09 +08:00 |
|
yml2213
|
ec76844da8
|
feat(log): 全面重构日志系统,支持日志级别、去除ANSI乱码并抑制高频轮询
|
2026-09-18 15:04:38 +08:00 |
|
yml2213
|
20bde97d7a
|
fix(delivery): add transient retry, fix queue deadlock, and gate delivery submit by scan auth
|
2026-09-18 14:49:54 +08:00 |
|
 yml2213andCursor
|
848d3da809
|
fix(delivery): 绑定失败回退 DLC,并补齐乐玩角色名展示
乐玩写接口失败时清除渠道锁定改试 DLC;免扫码/查绑/提交路径回传 role_name 与 game_channel。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-09-15 12:39:53 +08:00 |
|
 yml2213andCursor
|
6c41834274
|
fix(delivery): 乐玩不可用时回退 DLC,避免提交 UID 绑定失败
legacy 双渠道配置升为 priority;显式 lewan 且具备 DLC 时允许回退,缓解 LEWAN_* 未注入导致的 bind 失败。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-09-15 11:51:32 +08:00 |
|
 yml2213andCursor
|
6dc2375a79
|
chore(catalog): 清理 LEWAN_ 列表过滤与商品图 UUID 历史回退
商品列表不再过滤镜像 SKU;图片只按英文 SKU 解析,修正 DLC 预设文案。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-09-14 20:33:42 +08:00 |
|
 yml2213andCursor
|
c2d8228512
|
fix(delivery): 硬化自动发货可靠性,避免双发与无限 Webhook 重试
恢复 ship_failed 可重试 UI;DLC 断点续传 queue;乐玩未绑定禁止进 delivering;Webhook 原子 nonce 与业务拒绝回 200。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-09-14 20:13:29 +08:00 |
|
 yml2213andCursor
|
df1a170d44
|
refactor(catalog): 废弃 LEWAN_ 镜像,统一英文 SKU 与积分价,商品图按 SKU 缓存
对外目录只保留英文主 sku;迁移硬删镜像并校准 1元=100积分;发货页/凭证优先使用 local {sku}.webp。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-09-14 20:00:26 +08:00 |
|
yml2213
|
bf9614569e
|
feat: 优化发货凭证与字段兼容,隐藏内部积分展示并增强DLC角色解析
|
2026-09-14 17:37:53 +08:00 |
|
yml2213
|
5f642eb7a6
|
feat: 优化发货交付页面与凭据生成,支持一键复制结果图片及官方商品图片本地缓存
- 交付界面重构:隐藏内部订单号、流水号与发货渠道,展示聚焦于买家游戏UID、角色名与交付时间
- 发货结果凭据生成:采用 Canvas 生成高清发货存证图,优化存证说明文案与自适应排版
- 一键复制图片:支持直接将结果凭证图片写入系统剪贴板,方便客服在聊天窗口快捷粘贴
- 官方图片本地化缓存:全量下载乐玩商品官方主图并建立本地持久化路由,规避外部源站跨域及破损问题
- 修复乐玩渠道角色UID提取与履约状态幂等回填逻辑
|
2026-09-14 17:19:12 +08:00 |
|
 yml2213andCursor
|
f7f48d0feb
|
功能:接入乐玩开放平台双渠道路由,并修复渠道锁定与 Webhook 可靠性
在保持 DLC 默认零破坏的前提下,支持 priority/仅乐玩/仅 DLC 履约策略与后台 GUI 配置;同步补齐 Prepare 渠道落库、乐玩订单取消、Webhook 验签与失败重试。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-09-11 15:48:03 +08:00 |
|
yml2213
|
a314f3f51b
|
修复:发货创建队列与补全接口透传 h5_prefix 和商品信息,解决上游报错缺少渠道标识
- 上游 /public/users/orders-queue (POST/PATCH) 补充传递 h5_prefix、goods_no 和 goods_name
- delivery.go submit 流程透传商品 SKU 与商品名称至队列相关方法
- 解决上游创建订单报"缺少渠道标识 h5_prefix,无法校验第三方订单状态"的故障
|
2026-09-08 12:44:45 +08:00 |
|
yml2213
|
b76d8dc257
|
功能:发货链接支持永久有效,默认 TTL=0
- DELIVERY_LINK_TTL_MINUTES 设为 0 或负数时链接永久有效(expires_at 存 NULL),
默认值由 120 改为 0,本地 .env 同步改为永久
- 新增 delivery_link_generated_at 列区分从未生成与永久链接,兼容历史数据
- 永久链接授权仅校验 HMAC 签名、不校验过期(exp=0),作废/恢复语义不变
- 前端链接有效期列对永久链接显示"永久有效"
|
2026-08-14 14:26:06 +08:00 |
|
yml2213
|
11bce9c87e
|
优化:已交付订单保留复制/打开发货链接,去掉作废操作
- 已交付订单仍可复用未过期链接查看兑换结果,但不再生成/续期新链接
- 商户后台已交付订单仅显示复制/打开,已作废/已过期单独标识
- 发货中/已取消订单不展示链接操作,避免无效按钮
|
2026-08-14 13:19:27 +08:00 |
|
yml2213
|
99a33675b0
|
优化商户管理, 增加商户名重置密码等等
|
2026-08-14 13:09:56 +08:00 |
|
yml2213
|
ee3e427ab7
|
作废链接和取消订单
|
2026-08-14 12:58:20 +08:00 |
|
yml2213
|
33a30fcd99
|
修复:软删除账号可复用用户名
|
2026-08-13 14:40:22 +08:00 |
|
yml2213
|
91c055c130
|
功能:平台管理员删除商户账号
|
2026-08-13 14:35:30 +08:00 |
|
yml2213
|
a637101ca8
|
重构:移除环境变量管理员初始化
|
2026-08-13 14:21:22 +08:00 |
|
yml2213
|
538be52636
|
修复:管理员默认商户与账户设置
|
2026-08-13 14:12:25 +08:00 |
|
yml2213
|
6dae7fafa8
|
功能:恢复商户账号分组查看
|
2026-08-13 13:39:37 +08:00 |
|
yml2213
|
cfdc12cf94
|
优化:平台管理员账号独立管理
|
2026-08-13 13:31:06 +08:00 |
|
yml2213
|
c928c5b8e8
|
优化:按商户分组展示员工账号
|
2026-08-13 13:23:12 +08:00 |
|
yml2213
|
1f85add5e0
|
功能:优化账号分层与管理员初始化
|
2026-08-13 13:18:41 +08:00 |
|
yml2213
|
ac44fda08b
|
功能:增加订单搜索与状态筛选
|
2026-08-13 12:58:06 +08:00 |
|
yml2213
|
2b3a1b111b
|
功能:增加平台账号管理与管理员保护
|
2026-08-13 12:52:50 +08:00 |
|
yml2213
|
8c47b961e1
|
功能:完善登录安全与客服手动下单
|
2026-08-13 12:40:04 +08:00 |
|
yml2213
|
aea65a2fd3
|
feat: manage merchant members
|
2026-08-13 11:45:55 +08:00 |
|
yml2213
|
a4791decb0
|
feat: support merchant team roles and permissions
|
2026-08-13 11:41:34 +08:00 |
|
yml2213
|
b686a82e60
|
feat: add manual fulfillment order creation
|
2026-08-11 11:49:58 +08:00 |
|
yml2213
|
2264851d5d
|
拆分 service 与前端大文件,修复 CORS 配置与格式问题
- 后端 internal/service 按职责拆分:
fulfillment.go(1397→527)拆出 wallet/timeout/data/order/query/dashboard/shipnotify
delivery.go(1124→801)拆出 upstream/link/state/helpers
merchant.go(855→251)拆出 member/product/api_client/catalog/helpers
- 前端 MerchantCenter.tsx(1327→606)拆出 merchantCenterTabs/merchantCenterUtils
- docker-compose backend 透传 CORS_ALLOWED_ORIGINS
- CORS 白名单实现(config/router/README/.env.example 配套)
- 修复 gofmt 与文件尾部多余空行
|
2026-08-05 13:32:11 +08:00 |
|
yml2213
|
569109cd92
|
修改常见默认端口
|
2026-08-04 15:34:34 +08:00 |
|
yml2213
|
16b508eb9b
|
商户管理优化, 商户只能上架下架, 管理员可以编辑
|
2026-08-04 14:35:53 +08:00 |
|
yml2213
|
ca58c2bcaa
|
余额告警独立页面与多渠道通知:钉钉/飞书/企业微信/Bark,支持通知频率策略
- 告警设置拆分为独立页面,支持钉钉/飞书/企业微信/Bark/通用Webhook 多渠道
- 通知策略:低于阈值后按间隔重复提醒,达到最大次数停止,余额恢复自动重置
- 旧 webhook 配置自动迁移为通用渠道,渠道支持测试发送
- 优化告警话术:去商户ID展示、数字千分位格式化
|
2026-08-04 13:56:26 +08:00 |
|
yml2213
|
941e7ad79a
|
积分充值全流程落地:申请审核入账、凭证上传压缩转webp、管理员调账收权
- 新增积分充值申请与审核:商户提交充值申请(凭证图片必填,1元=100积分),
管理员审核通过后事务内自动入账,幂等键防重复
- 新增通用图片上传组件 ImageUploader:canvas 压缩转 webp、预览、删除,
后端按魔数校验图片格式并持久化到 data/uploads
- 管理员钱包调整改为按商户维度:移除商户侧调账接口,新增管理员
平台商户积分调整与钱包流水查看
- 低余额 Webhook 告警配置持久化,充值入账/调账后自动检查推送
- 平台商户操作列移除进入/成员,积分充值页接入真实接口并修复金额单位换算
|
2026-08-04 13:03:29 +08:00 |
|
yml2213
|
e6f09eaf14
|
优化商品列表表格列宽与上架配置面板
|
2026-08-04 11:16:54 +08:00 |
|
yml2213
|
ae9804e158
|
访问日志跳过 /health 健康检查,避免每 30 秒刷屏
|
2026-08-04 09:43:39 +08:00 |
|
yml2213
|
5f547546c3
|
日志按天分割并自动清理:app-YYYYMMDD.log,保留天数可配
- dailyFileWriter 按天轮转:跨天自动切换到新文件(app-20260804.log)
- LOG_RETAIN_DAYS 控制保留天数(默认 30),到期自动删除
- docker-compose 透传 LOG_RETAIN_DAYS,README 更新环境变量说明
- 补充轮转/清理单测
|
2026-08-04 09:42:20 +08:00 |
|
yml2213
|
d6b426ab2a
|
查询绑定结果增加预期账号比对:mismatch 提前拦截
- 下单 data 传了 game_account 时,bind-result 返回 expected_game_account 与 mismatch
- 绑定账号与预期不一致时 message 提示,配合 submit 已有的一致性校验提前发现
- 对接文档补充 mismatch 字段与说明
|
2026-08-03 17:47:12 +08:00 |
|
yml2213
|
2e67e2cc3b
|
发货链接返回完整域名:DELIVERY_BASE_URL 未配置时按请求 scheme+Host 推导
- GetOrCreateDeliveryLink/RestoreDeliveryLink 增加 requestBaseURL 参数
- buildDeliveryURL 优先级:DELIVERY_BASE_URL → 请求域名 → 路径
- 支持 X-Forwarded-Proto 与 TLS 判断 https
|
2026-08-03 17:38:11 +08:00 |
|
yml2213
|
19ada1282e
|
新增查询绑定结果接口(自建发货页轮询角色信息)
- GET /api/client/v1/orders/{order_no}/delivery/bind-result?bind_uuid=xxx
- 返回 bound/game_account/role_name/game_channel;未绑定返回 bound=false(不报错,供轮询)
- 对接文档自建发货页模式新增该接口,注明轮询建议间隔
|
2026-08-03 17:10:50 +08:00 |
|
yml2213
|
b7b9132242
|
对接文档重构:两种发货对接方式分开展示
- 左侧目录按分组展示:基础接口 / 发货链接模式 / 自建发货页模式 / 回调 / 附录
- 概述页发货对接方式对比表强化(适用场景/接口顺序/建议)
- 创建订单响应示例 data 统一为约定字段,补充 201/200 状态说明
- 对外响应字段 upstream_order 更名为 delivery(result_data 存储键兼容旧数据)
|
2026-08-03 14:48:30 +08:00 |
|
yml2213
|
4019b657c4
|
对接文档去除上游概念,只展示商户对接平台
- 文档移除所有上游/发货平台/BFF 表述:接口字段说明、示例、推荐流程全部中性化
- 代码用户可见文案同步中性化:提交发货 message、错误提示、发货配置相关措辞
- 概述去掉 /api/open/v1 上游链路提示
|
2026-08-03 14:34:58 +08:00 |
|
yml2213
|
f95075e2e4
|
data 透传闭环:发货数据回显、回调带回,并限制 2KB
- 「查询发货数据」响应新增 data(下单透传原样回显,供自建发货页预填/展示)
- 回调 payload 带回 data(下单传 → 回调收,商户对接免回查)
- 创建订单 data 限制最长 2048 字节
- 文档更新:data 用途(自建页预填/回调/上游查单约定字段)、发货数据与回调示例
- 单测覆盖 data 回显
|
2026-08-03 14:32:08 +08:00 |
|
yml2213
|
fe55585f4d
|
修复发货提交卡死恢复
|
2026-08-03 13:24:47 +08:00 |
|
yml2213
|
6eb05b322c
|
对照生产抓包修复发货链路:BFF 地址、上游单号取值与直判交付
- DELIVERY_BFF_BASE_URL 默认改为 https://www.jxya.top/bff(生产实际路径,非 bff-stg)
- provider_order_no 取值优先级调整为 order_no/_id/id/order_sn:抓包确认 order_sn 为平台单号回显,上游真实单号是 _id
- 上游创建订单响应 status=FINISHED 或 send_status=SUCCESS 时订单直接置为 delivered,无需等待 ship-notify
- 同步更新单测(mock 上游返回 _id/order_sn/FINISHED/SUCCESS)
|
2026-08-03 13:06:43 +08:00 |
|