yml2213 and Cursor
768902f2f7
feat(distribution): 补齐退款加价回退、本站自卖与开通默认规则
...
退款时压缩卖方加价,人工/自动批次仅完结单可入账,号主收入进主站钱包;仲裁后重算释放并支持作废未入账 DS。开通时四种模式按默认生效,对外口径合并为 35/40/25,不再单独展示通道费。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-10 18:13:46 +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
7ffc3822f5
Merge branch 'main' into feature/distribution-system
...
合入 main 的推广追踪(adtracking)模块,并解决与分销业务的 8 处冲突。
冲突解决原则:两边的字段、菜单与路由全部保留,不删任何一方。
后端:
- model/order.go:保留分销字段注释块,追加 SourceTrackCode
- model/user.go:追加 RegisterTrackCode;TokenVersion 默认值保持 1
(与本库 users.token_version 列默认值一致)
- auth/repository.go:两处建号结构体同时写入 RegisterTrackCode 与 TokenVersion
- order/dto.go:OrderDTO 同时暴露 distribution_site_id 与 source_track_code;
CreateRequest 同时接受 distribution_site_code 与 track_code
- order/presenter.go:同时映射 DistributionSiteID 与 SourceTrackCode
前端:
- orders/api/orders.ts:createOrder 同时携带 distribution_site_code 与 track_code
- layouts/AdminLayout.vue:分销管理菜单组与推广追踪菜单组并列保留
- router/adminRoutes.ts:分销 4 条路由与 tracking-links 路由并列保留
迁移:feature 侧 000064-000067 已在前一提交顺延为 000065-000068,
为 main 的 000064_ad_tracking 让号,合并后编号 000063→000068 连续无重复。
2026-09-10 13:06:18 +08:00
yml2213 and Cursor
ee0e70ccad
fix(adtracking): 收紧成交口径、点击去重与生产落地页白名单
...
成交 GMV 排除已关闭订单,避免未支付关单被计入;点击按访客 5 秒、IP 1 秒双重去重;生产禁止 localhost 落地页,失效短码改用 QueryEscape。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-10 11:27:43 +08:00
yml2213
2b11d70ebe
feat(adtracking): 新增推广链接追踪与数据大盘,支持自定义短码、注册与下单归因及二维码物料生成
...
1. 数据库新增 000064_ad_tracking.sql 迁移,创建 ad_tracking_links 和 ad_tracking_clicks 表,并在 users、rental_orders 增加归因字段
2. 后端新增 adtracking 模块,挂载 GET /r/:code 302 智能重定向、点击流水异步记录、转化率/GMV聚合统计及管理接口
3. 用户认证 (auth) 与订单创建 (order) 链路贯通,实现注册用户与订单成交推广短码全链路归因
4. 前端管理后台左侧新增【推广追踪】目录,支持大盘指标总览、推广链接 CRUD、状态启停、一键复制短链及二维码下载 (PNG)
2026-09-10 11:05:47 +08:00
yml2213
d762b33f54
refactor(distribution): 重写分销迁移并落地利润百分比分成与货架比例
...
将 000064-000078 合并为 064/065/066,默认规则改为收号 35%、卖出 40%、服务费 25%。
货架调价改为增加分站 1 元兑换哈夫币比例。sql-guard 仅保护 main 已发布迁移。
2026-09-08 19:02:58 +08:00
yml2213
2c4e87475a
feat(distribution): 完善分销收号资产双视图、商户提现、自主加价、品牌装修与数据大盘
2026-09-08 16:05:30 +08:00
yml2213
044b141e95
merge(main): 同步主站稳定性修复与优化
2026-09-08 13:16:40 +08:00
yml2213
33ee8408e9
fix(stability): 修复慢查询雪崩隐患、系统配置死锁与提号翻页错误
...
- 消除 system_configs 写锁争抢:使用读写锁与启动预热将默认配置初始化收敛为单例,杜绝读请求开事务导致的 Lock wait timeout exceeded
- 强化财务看板缓存:将 Redis 缓存有效期由 1 分钟延长为 5 分钟,接入 singleflight.Group 防并发击穿
- 修复提号列表 GORM 翻页 Bug:分离 Count 查询与列表查询构建,避免重复 Join 导致的 Error 1066
- 生产环境资源加固:docker-compose.prod.yml 中 MySQL 资源限制提升至 2.0 核 CPU、2G 内存
- 补充 systemconfig 并发测试与 pickup 分页 Count 回归测试
2026-09-07 19:45:11 +08:00
yml2213
cdb236cc29
merge(main): 同步主站最新 UI 与审核优化代码并保持分销多租户隔离
2026-09-07 17:37:31 +08:00
yml2213
ecaf15417b
feat(distribution): 独立分销前台商城多租户体系、货源与订单数据严格隔离
2026-09-07 17:18:14 +08:00
yml2213
550b42eb22
feat(distribution): 独立分销后台账号体系、多租户隔离与主站后台分销管理GUI
...
- 独立账号鉴权:分销后台支持独立登录页面、Bearer+Cookie 双模鉴权与租户资料接口
- 多租户隔离:分销商成员强制锁定自身站点数据范围,防止横向越权;平台超管享有全局视界
- 一键开通分销商:平台端支持一键录入站点、管理员账号、分配角色并原子化初始化佣金规则
- 主后台分销分组:在主站后台增加「分销管理」导航分组,提供站点管理、规则配置、订单监控与结算管理 GUI
- 门禁与联调:补充完整单测,全量代码门禁 check.sh 100% 通过,dev.sh 支持前后端与分销后台一键同启
2026-09-07 15:45:53 +08:00
yml2213
3f86dd85ad
feat(admin): 优化商品审核工作台界面、截图凭证核验与按住速览体验
...
- 深度优化商品审核工作台:指标概览卡片、风险边条队列、标价管道联动、核心资产高密度展示、底部决策浮动 Dock、全套键盘快捷键
- 重构截图大图查看体验:移除旧版底部溢出的全局画廊,封装全屏居中弹窗 AdminListingReviewPreviewDialog,支持「按住速览(松手即关闭)」与「常驻弹窗(缩放/翻页/打码/原图)」双模交互
- 新增在线截图编辑器 ImageEditorDialog:支持平滑马赛克打码、自由裁剪与旋转保存
- 弹窗组件解耦:抽离审核拒绝、调价、全量核验、快捷键速查等子组件,严格控制单文件行数
- 后端支持:新增商品审核调整价格接口与配套单元测试
2026-09-07 13:29: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
3162d15425
分销后台前端对接与结算明细接口
...
- 新增 GET /admin/distribution/settlement-batches/:id/items 明细查询
- distribution-admin 重构为 react-router 多页面:仪表盘/网站/规则(启停)/订单(筛选分页)/结算(创建/明细/结算)/支付通道(绑定解绑)/账号展示(上下架)
- axios 统一 401 提示,引导回主站后台登录;金额统一整数分格式化
- npm run build(tsc 严格模式) 通过
2026-09-05 11:17:43 +08:00
yml2213
576cadcafa
适配 dev 基线:迁移改号 000064/65 并移除 backupmonitor 残留
2026-09-05 10:54:07 +08:00
yml2213
2ffa7a89b1
实现分销网后台基础功能与独立前端
2026-09-05 10:52:36 +08:00
yml2213
208f12ddb4
完善本地质量门禁与资金链路测试
2026-09-02 13:50:19 +08:00
yml2213
327a03672a
修复冻结用户即时下线
2026-08-30 21:19:47 +08:00
yml2213
c156c478d8
优化后台高频查询性能
2026-08-29 00:16:16 +08:00
yml2213
c87883cc65
完善订单交接结账流程留痕
2026-08-28 23:48:32 +08:00
yml2213
a9a9127076
新增退款待审核角标提醒
2026-08-28 23:10:07 +08:00
yml2213
16237dcefc
fix(chat): 修复一键清理未读失败
2026-08-25 19:32:04 +08:00
yml2213
52dcb18c96
perf(chat): 分页客服会话并拆分统计查询
2026-08-25 19:21:38 +08:00
yml2213
d95b95211c
fix(chat): 提升二维码 OCR 稳定性
2026-08-25 16:59:05 +08:00
yml2213
8f6356a3d7
fix(chat): 优化后台限流与 SSE 日志
2026-08-25 16:20:58 +08:00
yml2213
80e329a604
增加 运营开支
2026-08-20 16:06:05 +08:00
yml2213
c91423a19b
修复冻结用户强制下线
2026-08-18 20:02:21 +08:00
yml2213
f67ee12d72
新增备份监控与定时配置
2026-08-16 23:53:50 +08:00
yml2213
85332df2bd
订单接口最小化与私有文件访问加固
...
- 订单列表使用独立最小 DTO 并分页,号主待办提供独立接口与统计
- 用户 token 增加版本控制,冻结/改密/退出即时撤销会话
- 移除 URL token 传参,SSE 与接口统一使用 HttpOnly Cookie
- 私有文件按上传归属与业务关联授权,收款凭证转私有访问并校验归属
- 公开商品接口返回最小字段,隐藏号主身份与内部状态
- 每日清理超过 30 天未关联业务的上传归属,上传归属失败时补偿删除对象
2026-08-16 21:47:46 +08:00
yml2213
80e55ba281
支持提号完成后财务调整
2026-08-16 19:52:12 +08:00
yml2213
d2429618f4
支持迁移对象存储到 OSS
2026-08-16 12:19:51 +08:00
yml2213
4c1fe7439d
新增客服一键交接功能
2026-08-15 17:27:35 +08:00
yml2213
8fb7d3bac0
feat(pickup): support platform managed offline settlement
2026-08-09 20:20:39 +08:00
yml2213
9511b580e4
新增撞车订单人工退款
2026-07-31 21:57:35 +08:00
yml2213
88d74aca7d
重构日志与可观测性体系
...
新增单行文本编码器与结构化 GORM 日志,统一错误记录与请求日志策略,收紧日志文件权限并修复按天切分与压缩,支付回调参数脱敏,生产强制阿里云短信,RequestID 校验防注入,日志文案中文化。
2026-07-29 16:19:35 +08:00
yml2213
99e8eb28af
实现外部商品调价
2026-07-26 19:17:09 +08:00
yml2213
6b44ab599d
增加线下提号店铺管理
2026-07-26 18:19:12 +08:00
yml2213
c594b543d1
完善租客等级免押与积分管理
2026-07-26 18:07:10 +08:00
yml2213
379536e5c5
新增其他线下出款记账
2026-07-26 17:13:08 +08:00
yml2213
dbe0cda2c6
新增资金出款查询与财务统计
2026-07-26 16:18:31 +08:00
yml2213
9ccc16e068
支持客服主动发起申诉
2026-07-26 09:54:27 +08:00
yml2213
4bc25b87d8
修复平台代管订单流程
2026-07-25 19:17:19 +08:00
yml2213
9bb57b7094
优化线下提号利润修改
2026-07-25 14:53:11 +08:00
yml2213
6450b31129
撞车订单新增「接待中」状态,支持后台接待标记
...
已支付订单可标记为接待中,避免重复跟进;完成/取消覆盖接待中状态,前后台同步展示与筛选。
2026-07-19 16:08:41 +08:00
yml2213
a4189db4ca
业务更名为撞车并切换crash路由
...
用户可见文案与页面/API路径改为撞车与crash,保留mohong表与权限码兼容;移动端入口去掉租/撞图标。
2026-07-16 21:19:35 +08:00
yml2213
e07532a188
移除摸大红支付后建群逻辑,仅保留扫码与复制
...
支付成功只固化客服二维码与订单文案;同步清理迁移、配置与前后端相关字段。
2026-07-16 19:52:40 +08:00
yml2213
6d61027318
新增摸大红业务并修复后台链接按钮白字
...
支持分类筛选、搜索、下单支付建群与固定二维码;合并迁移种子数据;后台表格编辑/详情链接恢复主题色可见。
2026-07-16 18:08:18 +08:00
yml2213
b96d6141f5
用户管理增加余额调账功能
...
支持后台加减可用余额并写入资金流水与审计,优化操作列按钮样式。
2026-07-13 21:30:38 +08:00
yml2213
090a90a268
添加订单押金暂扣与归还
2026-07-05 19:35:57 +08:00