From f8c73a38709f7120d11b04bd70c6af3ccc53014d Mon Sep 17 00:00:00 2001
From: zjk <852185829@qq.com>
Date: 星期二, 13 十月 2026 14:51:37 +0800
Subject: [PATCH] feat: 新增用户小程序会员个人中心及资料编辑页面
---
doc/design/用户端_登录注册_20261012.md | 23 ++++++++++++-----------
1 files changed, 12 insertions(+), 11 deletions(-)
diff --git "a/doc/design/\347\224\250\346\210\267\347\253\257_\347\231\273\345\275\225\346\263\250\345\206\214_20261012.md" "b/doc/design/\347\224\250\346\210\267\347\253\257_\347\231\273\345\275\225\346\263\250\345\206\214_20261012.md"
index 872635e..0f68308 100644
--- "a/doc/design/\347\224\250\346\210\267\347\253\257_\347\231\273\345\275\225\346\263\250\345\206\214_20261012.md"
+++ "b/doc/design/\347\224\250\346\210\267\347\253\257_\347\231\273\345\275\225\346\263\250\345\206\214_20261012.md"
@@ -78,7 +78,7 @@
### 2.7 表结构缺口
-`account_user` 无推荐码、无推荐人字段 → 新增 `my_referral_code`、`referrer_user_id`。
+`account_user` 无推荐码字段 → 新增 `my_referral_code`;推荐关系复用既有 `referrer_id`(权威库已存在),不新增重复列。
### 2.8 既有代码缺陷
@@ -212,18 +212,18 @@
```sql
ALTER TABLE `account_user`
- ADD COLUMN `my_referral_code` varchar(20) DEFAULT NULL COMMENT '本人推荐码(注册时生成,全局唯一)' AFTER `remark`,
- ADD COLUMN `referrer_user_id` bigint(20) DEFAULT NULL COMMENT '推荐人会员ID(关联 account_user.user_id)' AFTER `my_referral_code`;
+ ADD COLUMN `my_referral_code` varchar(20) DEFAULT NULL COMMENT '本人推荐码(注册时生成,全局唯一)' AFTER `remark`;
-- 推荐码全局唯一:随机生成且不重复使用,逻辑删除行占用不影响业务
CREATE UNIQUE INDEX `uk_account_user_referral_code` ON `account_user` (`my_referral_code`);
+-- 推荐关系复用既有 referrer_id(权威库已存在),不新增 referrer_user_id
```
回滚:
```sql
DROP INDEX `uk_account_user_referral_code` ON `account_user`;
-ALTER TABLE `account_user` DROP COLUMN `referrer_user_id`, DROP COLUMN `my_referral_code`;
+ALTER TABLE `account_user` DROP COLUMN `my_referral_code`;
```
说明:
@@ -266,7 +266,7 @@
STEP 5: Feign 调 ruoyi-user 注册:
5.1 按推荐码查推荐人,不存在抛「推荐人码无效」;推荐人 status=1 抛「推荐人账号异常」
5.2 生成唯一 my_referral_code(随机 8 位大写字母数字,库内查重,冲突重试 ≤5 次)
- 5.3 组装 AccountUser:userName=phone、phone、nickname=phone、myReferralCode、referrerUserId、status=0、delFlag=0
+ 5.3 组装 AccountUser:userName=phone、phone、nickname=phone、myReferralCode、referrerId、status=0、delFlag=0
5.4 插入(无密码,password 为空)
STEP 6: 删除验证码 key;finally 释放锁
```
@@ -311,8 +311,9 @@
通用推荐码(ruoyi-user)
AccountUserServiceImpl.registerMember 定位推荐人前先判定:
- 命中「配置的通用推荐码」→ 跳过推荐人查询与校验,referrerUserId 留空(不绑定推荐人)
- 否则走原有「按码查推荐人 → 不存在/停用则拒绝」逻辑
+ 命中「配置的通用推荐码」→ 跳过推荐人查询与校验,referrerId 留空(不绑定推荐人);
+ 同时直接发放 L4 会员等级(system_level = L4)
+ 否则走原有「按码查推荐人 → 不存在/停用则拒绝」逻辑,且不设等级(走库默认值 C)
```
命中通用码时打印 WARN 日志留痕(手机号脱敏)。
@@ -320,7 +321,7 @@
| 服务 | 配置项 | 示例值 | 说明 |
| --- | --- | --- | --- |
| ruoyi-auth | `hugray.auth.universal-sms-code` | `999999` | 空 = 关闭;仅 `login` / `register` 场景生效 |
-| ruoyi-user | `hugray.user.universal-referral-code` | `HUGRAY88` | 空 = 关闭;命中则不绑定推荐人 |
+| ruoyi-user | `hugray.user.universal-referral-code` | `HUGRAY88` | 空 = 关闭;命中则不绑定推荐人,且注册用户直接为 L4 等级 |
---
@@ -365,7 +366,7 @@
| 文件 | 改动 |
| --- | --- |
-| ruoyi-user `domain/AccountUser.java` | 新增 `myReferralCode`、`referrerUserId` 字段与注释、toString |
+| ruoyi-user `domain/AccountUser.java` | 新增 `myReferralCode` 字段与注释、toString;推荐关系复用既有 `referrerId`(源 `referrer_id`) |
| ruoyi-user `mapper/AccountUserMapper.java` + `resources/mapper/user/AccountUserMapper.xml` | resultMap/列/insert/update 增列;新增 `selectAccountUserByReferralCode` |
| ruoyi-user `service/impl/AccountUserServiceImpl.insertAccountUser` | 密码为空时跳过加密(当前无条件 `encryptPassword`,C 端无密码会 NPE) |
| `sql/hugray_account_20261012.sql` | 新增 DDL 脚本 |
@@ -497,7 +498,7 @@
| 20 | 验证码登录:手机号未注册 | 下发(scene=login)即拦「该手机号未注册,请先注册」;登录接口再兜底,均**不消费验证码** |
| 21 | 验证码登录:账号停用 / 删除 | 「账号已停用,请联系管理员」/「账号不存在」,校验在消费验证码之前 |
| 22 | 通用验证码命中(`login` / `register` 且 `hugray.auth.universal-sms-code` 已配置) | 直接放行:不读缓存、不计数、不消费;`reset` / `common` 场景不生效;配置为空即关闭 |
-| 23 | 通用推荐码命中(`hugray.user.universal-referral-code` 已配置且有值) | 跳过推荐人查询与校验,`referrerUserId` 留空(不绑定推荐人);命中通用码时不再校验「推荐人码无效 / 推荐人账号异常」 |
+| 23 | 通用推荐码命中(`hugray.user.universal-referral-code` 已配置且有值) | 跳过推荐人查询与校验,`referrerId` 留空(不绑定推荐人),且注册用户等级直接为 `L4`;命中通用码时不再校验「推荐人码无效 / 推荐人账号异常」 |
---
@@ -526,7 +527,7 @@
6. 登录页双按钮(微信一键登录 / 手机验证登录),「手机验证登录」为页内嵌面板;后端 `POST /miniapp/auth/phone/code-login` 与 `SmsSceneEnum.LOGIN` 同步落地。✔
7. 登录页按 `.pen` 设计稿 + `static/` 素材做视觉 1:1 还原(背景装饰、Logo、背书图标、标语卡、按钮尺寸与渐变、协议行、Home 条),规格见 3.5 节。✔
8. 登录页 UI 缺陷修复:微信一键登录恢复通栏;协议行字号 23rpx → 26rpx;展开验证码面板后隐藏「手机验证登录」按钮并在面板内提供「收起」入口。✔
-9. 测试便利:通用验证码 `999999`(`hugray.auth.universal-sms-code`,仅 `login` / `register` 生效)+ 通用推荐码 `HUGRAY88`(`hugray.user.universal-referral-code`,命中不绑定推荐人);均通过 nacos 配置开启,配置为空即关闭,命中打印 WARN 留痕。✔
+9. 测试便利:通用验证码 `999999`(`hugray.auth.universal-sms-code`,仅 `login` / `register` 生效)+ 通用推荐码 `HUGRAY88`(`hugray.user.universal-referral-code`,命中不绑定推荐人且注册用户直接发放 `L4` 等级);均通过 nacos 配置开启,配置为空即关闭,命中打印 WARN 留痕。✔
10. 注册流程:注册页**无需阅读/勾选协议**(提交仅校验手机号 / 验证码 / 推荐码);注册成功页与登录/注册页视觉统一(渐变底 + 装饰层 + 居中结果区 + 渐变胶囊「返回登录」按钮 + Home 条),规格见 3.7 节。✔
> 编码顺序:常量 → DDL → Feign/内部接口 → auth 服务与控制器 → 网关配置 → 前端前缀对齐 → `GetDiagnostics` 校验 → 单测。
--
Gitblit v1.7.1