yml2213
|
e56a5ea469
|
refactor(time): 不再全局改写 time.Local,业务时间统一走显式时区
main.go 原本在启动时执行 time.Local = timeutil.Location(),靠隐式改写进程全局
状态把时间钉在 +08:00。副作用是任何跑在这行之前的代码都处于另一个时区,且依赖
关系完全不可见。
- 移除该全局赋值,业务时间全部走 timeutil 的显式时区
- rock_snapshot.parseRockTime 是唯一真实依赖,且是会出事的那一处:上游返回不带
偏移的北京时间墙面时间,用 time.Local 解析会在 TZ≠+08:00 时整体偏移 8 小时,
把「本次新绑定」误判为「历史残留」而放回库存,直接造成重复发货。
改为 timeutil.Location() 并补回归测试
- 有一点无法绕开:pgx 会把 timestamptz 解码到 time.Local,所以接口 JSON 的时间
偏移仍由进程时区决定。新增 timeutil.LocalZoneNotice(),启动时把不一致显式告警,
交由运维用 TZ=Asia/Shanghai 声明(Docker 部署已内置),而不是靠代码偷偷改全局
- 测试时间基线改用业务时区,避免随宿主机 TZ 漂移
验证:全量测试在默认时区、TZ=UTC、TZ=America/New_York 三种环境下均通过;
实测 TZ=UTC 启动打印时区提示,业务时区下静默。
|
2026-10-06 19:58:34 +08:00 |
|
yml2213
|
a47b61a98d
|
refactor(sign): 抽取公共签名原语 signutil,三套签名串格式保持不变
商户侧 /api/client/v1、源头侧 /api/open/v1 与乐玩开放平台各有一套签名实现,
其中语义完全一致的部分重复了多份,任一处修复都容易漏改另外两处。
- 新增 internal/pkg/signutil,只收敛四类一致性原语:HMAC-SHA256→hex、
body SHA256 摘要、时间戳偏差校验、常数时间比较
- 中间件与 lewan 改为调用该包,删除 middleware 里重复的 hmacSHA256Hex 与 abs64
- 刻意不统一「签名串构造」:三者拼接方式是对外契约且互不相同
(商户:字典序 & + body 摘要;源头:字典序 & + body 原文;乐玩:换行 6 行),
强行合并会直接改变握手结果
- 保留各处原有细节语义:商户侧十六进制签名大小写不敏感、乐玩签名原样比较、
VerifyWebhook 在 allowedSkew<=0 时仍要求时间戳可解析
验证:三套方案既有端到端测试全部通过(含乐玩官方测试向量、大写签名、重放拒绝);
新增 signutil 已知向量与偏差/比较边界测试,以及 VerifyWebhook 边界语义测试。
|
2026-10-06 19:53:55 +08:00 |
|
yml2213
|
44ec142395
|
style: 清理 gofmt 偏差
纯对齐与行尾空行调整,无逻辑变更。gofmt -l 现输出为空,
配合 make fmt 可将格式检查直接纳入 CI。
|
2026-10-06 19:43:43 +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
|
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
|
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
|
949a0eb8f7
|
统一时间格式和时区
|
2026-07-31 12:57:17 +08:00 |
|
yml2213
|
761522e808
|
补商户发货API
|
2026-07-31 12:24:54 +08:00 |
|
yml2213
|
a16e518b6c
|
优化开放接口日志分类
|
2026-07-30 21:07:10 +08:00 |
|
yml2213
|
47b0dd5a49
|
开放接口增加详细调试日志,并支持控制台与文件双写
- OPEN_API_DEBUG 记录鉴权、查单、推送业务字段与 req_id
- LOG_FILE 默认 logs/app.log,标准日志/Gin/GORM 同时输出控制台与文件
|
2026-07-20 21:48:52 +08:00 |
|
yml2213
|
45db0aa4b9
|
init
|
2026-07-20 14:58:57 +08:00 |
|