Files
Friendship-and-chat-api/AGENTS.md
T
2026-11-11 19:39:10 +08:00

52 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 项目协作与记忆
本文件记录用户已确认的需求和有来源的项目事实。业务数据与运行配置可能变化,后续任务应核对当前源码、运行环境及数据库。
## 项目入口
- 当前目录为 Java 后端,采用 Maven 多模块,服务入口为 `yudao-server`。
- PC 管理端位于相邻的 `Friendship-and-chat-pc`。会员列表入口为 `src/views/member/user/index.vue`,会员详情为 `src/views/member/user/detail/index.vue`。
- 当前 H5 源码位于相邻的 `Friendship-and-chat-uniapp`。福利中心为 `src/pages/wechat-tabbar/index.vue`,我的团队为 `src/pages/wechat/pages/inviter/index.vue`。
- 分销业务主要位于 `yudao-module-mall/yudao-module-trade-biz`。会员管理通过 `trade-api` 复用分销查询。
- 数据库连接与实际启用的 profile 从项目配置和运行进程核对。H5 的开发 API 地址可能使用隧道,需确认其最终服务。
## 已确认的分销口径
- `member_user.id` 是内部会员编号,`user_code` 是 App 展示 ID。关联和贡献查询使用内部编号。
- `trade_brokerage_record.user_id` 是佣金收益人,`source_user_id` 是产生佣金的来源会员,`source_user_level` 保存当时的推广层级。
- 管理端“分销收益”累计已结算的有效推广佣金和会员佣金。提现操作保留累计收益金额,待结算金额单独展示。
- “为当前会员贡献”按该来源会员本人给详情根会员产生的佣金计算。多层展开时 `contributionUserId` 固定为详情根会员编号。
- 累计收益统一复用 `BrokerageIncomeSql` 的有效佣金条件。当前条件包含类型 1、2,正金额,以及标题和说明中的提现文本过滤。
- 状态 0 为待结算,1 为已结算,2 为已取消。历史数据曾使用不同的业务类型映射,核账时同时检查金额方向、标题、说明和时间。
- `trade_brokerage_user.brokerage_price` 是独立维护的可用佣金余额,`frozen_price` 是冻结余额。余额与累计收益分别核账。
- `trade_brokerage_record.total_price` 是构建流水时读取的余额快照,应结合实际写入顺序核对其时点。
- 后台累计金额使用 `Long`,单位为分。前端需支持超出 JavaScript 安全整数后返回的字符串金额,使用 `brokeragePriceToYuan` 精确显示。
## 团队与页面行为
- 一级关系来自 `trade_brokerage_user.bind_user_id`,二级为一级会员的直属下级。
- 后台关系树每个分支每次加载 20 人,接口的 `total` 表示该分支完整人数。已加载节点数随展开及“加载更多”变化。
- H5 团队汇总、H5 团队分页和后台关系树应分别核对。资料缺失处理、昵称搜索、排序和分页可能影响当前展示的列表。
- 会员列表的分销收益金额可点击,进入对应会员的 `?tab=brokerage` 详情页。详情使用 `onActivated` 处理缓存页再次进入。
- 金额区间筛选在数据库分页前完成,列表和导出共用 `MemberUserMapper.buildUserQuery`。
- 新查询复用现有租户组件,并核对实际开关。相关子查询使用 `(SELECT COALESCE(SUM(...), 0) FROM ...)` 结构,已有测试验证该结构可被租户插件正确处理。
## 协作与验证
- 数据库操作遵循用户当次授权。本次用户 300 的金额与团队排查采用只读事务。
- 从配置读取连接凭据时避免在输出、文档和记忆中保存密码或令牌。
- 工作区经常存在并行任务,编辑前查看当前差异并保留其他任务的修改。
- Maven 验证可使用 `-Dflatten.skip=true`,避免构建过程改写项目 POM。
- 现有回归入口包括 `BrokerageIncomeQueryTest`、`MemberUserMapperTest`、`MemberUserBrokerageControllerTest`,以及 PC 端的 `tests/member-user-brokerage.test.cjs` 和 `tests/brokerage-record-list.test.cjs`。
- 测试、构建、页面核验及部署分别记录实际结果。数据库历史余额的来源需要对应流水、迁移记录或备份证据。
## 2026-11-11 用户 300 的只读对账快照
- 运行 `dev` 数据库中,会员内部编号 300,展示 ID 999827。H5 福利中心实际展示同一展示 ID。
- 可用佣金为 20841 分,冻结为 0。现存佣金流水含已删除记录一起核查后,只有一笔 3510 分的已结算会员佣金,流水编号 15,来源会员 465,创建于 2026-11-02 18:39:32。提现表无该会员记录。
- 流水 15 的 `total_price` 为 17331 分,结合转换器及先写流水后更新余额的顺序,表示这笔佣金写入前的余额。17331 + 3510 = 20841,历史底数的原始入账流水尚未在当前库中找到。
- 会员资料创建于 2026-11-01,`tenant_id=0`。分销余额及绑定关系创建于 2025-09-30,`tenant_id=1`。本次运行配置关闭租户隔离,历史数据归属及导入过程需要单独核实。
- 该会员一级 43 人、二级 13 人,全部会员资料有效。后台初次加载一级 20 人,加载完整后为 43 人。13 个二级会员均挂在一级会员 374 下,该一级节点按后台 ID 倒序位于第 30 位,需要加载更多后展开。
- H5 福利中心“累计收益”当时绑定提现合计 `withdrawPrice`。团队页的金额当时直接显示分值为元,单数字段读取 `orderCount`,接口实际返回 `brokerageOrderCount`。团队行金额查询当时仅统计该下级自身的已结算订单佣金。
- 上述为带日期的排查事实,后续修复与数据变化以当前实现及重新核账为准。