yml2213
984433f866
feat(invitation): 实现邀请返利系统、专属注册落地页与分成管理
...
- 数据库与数据模型:新增 migration 000081,支持用户专属邀请码、被邀请人绑定与实名时间戳;新增邀请返利配置表与结算明细表
- 业务与结算逻辑:实现首月 60%、次月 30%、往后 15% 阶梯返利算法;买卖双向独立寻源并根据订单平台利润 50% 单边基准核算;与终态订单结算和钱包可用余额强幂等联动
- 分销站点支持:支持主站与加盟分站独立配置返利比例;跨站交易按照收号端与售卖端独立出资,资金互不侵蚀
- 前端交互与入口:
- 新增专属短链注册落地页 /i/:code,自动带入并锁定邀请码,引导实名认证
- 个人中心与移动端新增邀请返利看板(专属码、推广链接、统计面板、好友记录与返利流水明细)
- 管理后台新增邀请返利管理(比例配置、邀请关系与返利流水审计)
- 验证方式:
- 通过 repository_test.go 单元测试(阶梯区间、实名激活、跨站多方分流验证)
- 通过 npm run format、npm run check 与 scripts/check.sh 全量门禁校验
2026-10-10 12:48:59 +08:00
yml2213 and Cursor
170e279e71
fix(distribution): 分站挂牌的号主收入记入对应分站钱包
...
结账和仲裁不再把分销站号主收入写入主站钱包,用户列表也只展示主站余额。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-25 17:25:33 +08:00
yml2213
cbd5412315
test: 后端测试从 SQLite 全面切换到 MySQL,与生产环境对齐
...
测试库不再使用 SQLite 内存库,改为每个测试包独立的 MySQL 库,
表结构由 backend/migrations 的真实迁移建立。
基础设施
- 新增 internal/database/testdb.go:NewTestDB() 保持原签名(28 处调用零改动),
内部连接 MySQL 测试库,首次调用重建库并执行全部真实迁移,之后每次调用清空全表
- 库名 = 测试库基础名 + 包目录名,同包共享、跨包隔离,使 go test ./... 可并发执行
(共用一库时各包会互相 DROP/CREATE 导致 database exists)
- 新增 NewDryRunDB():MySQL 方言 + DryRun,供断言 SQL 形态的 5 处测试使用
- 新增 AutoMigrateIfMissing():只对不存在的表 AutoMigrate,
避免改动迁移定义的索引与约束
- 新增 scripts/prepare-test-db.sh:建库与通配授权,可重复执行
- 33 处 sqlite.Open 全部替换,26 个测试文件改用 MySQL
- 删除 46 处手写 SQLite 方言 DDL(AUTOINCREMENT / INTEGER PRIMARY KEY / TEXT),
表统一由真实迁移建立
- go.mod 移除 gorm.io/driver/sqlite 与 mattn/go-sqlite3
- 删除生产代码里 distribution/repository.go 的 sqlite 方言分支(strftime)
对齐环境后暴露并修复的真实问题
- DATE(col) 在 MySQL 返回 DATE 类型,使 Date string 字段变成 RFC3339 时间串,
大盘日期会带出时间部分;28 处改为 DATE_FORMAT(col, '%Y-%m-%d')
- 系统自动创建分销结算批次时 created_by 写入 0,违反指向 admin_users 的外键,
生产会直接插入失败;改为写 NULL(新增 adminRef helper)
- MySQL DATETIME 仅到秒,静默截断 Go 侧写入的时间,
导致租用时长计算与结算时点回读比对偏差;
rental_orders 的 9 个业务时间列提到 DATETIME(6)
- 测试数据补齐严格模式要求的 NOT NULL 列、修正超出列长的取值、补齐外键父记录
迁移
- 000065 的 ALTER TABLE rental_orders 一并完成业务时间列精度调整,
feature 侧不再单开迁移文件
脚本与文档
- check.sh / check-backend-coverage.sh 去掉 -p 1 串行与 SQLite 相关注释
- 更新 docs/Repository层测试补充总结.md 的测试运行说明
2026-09-10 14:34:01 +08:00
yml2213
369b0647bb
合并 main 分支并融合订单列表最小化与 SQL 治理
...
- Auth/权限中间件取 main 演进版(错误细分、token 来源),保留 dev 的用户 cookie 与登出撤销语义
- 后台订单列表:融合 main 的首页免 COUNT 优化与关键词索引路由,保留 dev 的最小化 AdminOrderListItemDTO(结账明细仍由详情接口返回,同步调整对应集成测试)
- 保留 dev 的 token_version 冻结/解冻递增与 main 的状态变化判断及通知
- 前端:保留 dev 登出接口与 main 的 fetchMe silent 参数、SSE 登录跳转;后台订单表按 dev 最小化 DTO 移除号主到手列
2026-09-05 11:43:13 +08:00
yml2213
a9125b1939
perf(query): 全面治理后台跨表模糊查询慢SQL并升级SQL门禁守护
...
- 解决 MySQL 8.4 无法跨表 Index Merge 导致的索引失效与全表扫描问题
- 订单/提号/纠纷/用户/商品/会话列表实现智能意图路由分流直达单表唯一索引
- 剥离 COUNT(*) 阶段无关多表关联及标量子查询,实现首页条数快速短路
- check-sql-guard.sh 增加 forbid_pattern 拦截器与核心路由强校验防线
2026-09-05 10:37:04 +08:00
yml2213
c91423a19b
修复冻结用户强制下线
2026-08-18 20:02:21 +08:00
yml2213
85332df2bd
订单接口最小化与私有文件访问加固
...
- 订单列表使用独立最小 DTO 并分页,号主待办提供独立接口与统计
- 用户 token 增加版本控制,冻结/改密/退出即时撤销会话
- 移除 URL token 传参,SSE 与接口统一使用 HttpOnly Cookie
- 私有文件按上传归属与业务关联授权,收款凭证转私有访问并校验归属
- 公开商品接口返回最小字段,隐藏号主身份与内部状态
- 每日清理超过 30 天未关联业务的上传归属,上传归属失败时补偿删除对象
2026-08-16 21:47:46 +08:00
yml2213
88d74aca7d
重构日志与可观测性体系
...
新增单行文本编码器与结构化 GORM 日志,统一错误记录与请求日志策略,收紧日志文件权限并修复按天切分与压缩,支付回调参数脱敏,生产强制阿里云短信,RequestID 校验防注入,日志文案中文化。
2026-07-29 16:19:35 +08:00
yml2213
c594b543d1
完善租客等级免押与积分管理
2026-07-26 18:07:10 +08:00
yml2213
321f0781cf
实现租客成长等级并优化展示
2026-07-26 11:25:25 +08:00
yml2213
b96d6141f5
用户管理增加余额调账功能
...
支持后台加减可用余额并写入资金流水与审计,优化操作列按钮样式。
2026-07-13 21:30:38 +08:00
yml2213
18eba36ef9
后台用户管理新增“人工实名
2026-06-28 01:06:35 +08:00
yml2213
378b7a0b79
增加用户免押额度筛选
2026-06-27 09:12:15 +08:00
yml2213 and Claude Opus 4.8
4d54f1b03a
后台增加撤销用户实名功能
...
实名姓名与收款账户不一致会导致收款码登记失败,新增后台撤销实名能力:
- 新增 user:revoke_realname 权限,授予超级管理员与运营角色
- 撤销时重置用户实名状态为未认证并删除实名记录,使其可重新认证,写入审计日志
- 用户管理页新增实名状态列与"撤销实名"操作(含原因弹窗)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-17 07:03:52 +08:00
yml2213 and Claude Opus 4.8
a88008f783
用户管理增加查找筛选
...
后台用户列表此前仅分页,数据量大时无法定位用户。
- 后端:List 新增 ListQuery(关键词 + 状态),抽出 applyUserFilter
对总数与列表查询统一加筛选;关键词为纯数字时同时按用户 ID 精确匹配,
否则按手机号/昵称模糊匹配
- 前端:AdminUsersView 新增筛选栏(关键词:手机号/昵称/用户ID,
状态:正常/已冻结/已禁用),回车/清空/选择即查,查询重置到第 1 页
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-17 00:58:14 +08:00
yml2213
b377f8350b
为 9 个模块添加 Context 超时控制
...
完成模块:
- auth: 3 个 Repository 方法 + Service + Handler + Middleware
- wallet: 已有 context 支持,修复依赖调用
- payment: 已有 context 支持,修复 wallet 调用
- adminaudit: 1 个方法
- notification: 2 个方法
- realname: 2 个方法
- systemconfig: 4 个方法
- adminauth: 7 个方法
- adminuser: 6 个方法
所有数据库调用已改为 r.db.WithContext(ctx),完整传递 context 链路。
待完成模块: order, listing, chat 等 12 个模块(约 157 个方法)
2026-06-10 09:12:27 +08:00
yml
5cd3ead4bd
统一金额分制重构
2026-06-09 19:04:11 +08:00
yml
62b898d7cc
[Snow Team] backend-fixer: auto-commit work
2026-06-09 17:04:40 +08:00
yml
d803089890
Order模块:完成分字段重构
...
核心改造:
1. DTO层全部改为*Cent int64字段(OrderDTO/CheckoutDTO/RefundStatusDTO)
2. 内部结构体orderPricing和checkoutSettlement改为分字段
3. calculateCheckoutSettlement函数改为返回分单位
4. 所有wallet.AppendEntries调用改为AmountCent
5. toAdminDTO/toCheckoutAdminDTO转换函数使用*Cent字段
6. applyOrderPriceView/applyCheckoutPriceView使用分字段
7. buildOrderPricing返回分单位
8. 订单取消/关闭/退款使用分字段计算
技术细节:
- 删除了3处float64金额相加后转分的逻辑
- calculateCheckoutSettlement内部仍用元计算保持兼容性,最后转为分
- 新增effectiveDepositOriginalAmountCent辅助函数
- buildRefundStatusDTO使用TotalAmountCent
- 编译验证通过 ✅
2026-06-09 13:54:04 +08:00
yml
0b419f5084
修复仲裁退款并新增免押额度
2026-06-08 21:00:39 +08:00
yml
6dcea2d56c
完善日志和审计链路
2026-06-02 21:40:23 +08:00
yml
abc4447401
完善后台分页与令牌刷新
2026-05-24 17:56:26 +08:00
yml
c9e6ea2b71
后台“资金流水
2026-05-22 17:43:45 +08:00