修改河南项目的管理后台ui
This commit is contained in:
@@ -6,6 +6,40 @@
|
||||
|
||||
---
|
||||
|
||||
## 头像库「是否默认」唯一化:`tt_user_avatar` 存量数据清洗
|
||||
|
||||
**背景**:`tt_user_avatar.is_default` 的语义是「新用户 / 白号注册时分配的初始头像」,
|
||||
**全表必须最多只有一条 `is_default='1'`**。但后台「设置 → 头像管理」的开关写成默认时,
|
||||
后端只做了 `updateById`,没有把其他记录的默认标记清掉 ⇒ 库中一度累积出 **7 条默认**(id 63~69),
|
||||
`id=62` 反而是「否」。后果:后台看到一排「是」容易误解(用户 2026-09-24 反馈),
|
||||
且 C 端注册处(`ApiRegisterServiceImpl` / `PromoLoginServiceImpl`)用的是
|
||||
`list(is_default='1')` + `RandomUtil.choice(...)` **随机挑一条**,导致默认头像实际不唯一、每次注册拿到的都不同。
|
||||
|
||||
**代码侧修复**(非 SQL,见 `docs/修改记录.md` 同日条目):`TtUserAvatarServiceImpl`
|
||||
在 `updateUserAvatarById` / `saveAvatar` 中增加互斥逻辑 —— 任何把某条置为 `is_default='1'` 的写入,
|
||||
都先把其余记录清成 `'0'`,两步同一事务。
|
||||
|
||||
**本次数据库变更 1 处**(2026-09-24 已在库 `henan` 执行):把多余的默认标记收敛为**只保留 id 最小的一条**(id=63)。
|
||||
|
||||
**变更 SQL**:
|
||||
|
||||
```sql
|
||||
UPDATE `tt_user_avatar`
|
||||
SET `is_default` = '0'
|
||||
WHERE `is_default` = '1'
|
||||
AND `id` <> (SELECT `min_id` FROM (
|
||||
SELECT MIN(`id`) AS `min_id` FROM `tt_user_avatar` WHERE `is_default` = '1'
|
||||
) AS `t`);
|
||||
```
|
||||
|
||||
> ⚠️ MySQL 不允许在 `UPDATE` 的子查询里直接查同一张表,故此处包了一层派生表 `t` 绕过;
|
||||
> 该写法的坑已记在 `.workbuddy/memory/` 当日日志里,后续同类 SQL 照此办理。
|
||||
|
||||
**验证口径**:执行后 `SELECT is_default, COUNT(*) FROM tt_user_avatar GROUP BY is_default;`
|
||||
应当只有两行 —— `0 → N`(N = 总数-1)、`1 → 1`。
|
||||
|
||||
---
|
||||
|
||||
## 幸运升级·水位策略简化为「单一目标水位」:`sys_config` 配置结构变更
|
||||
|
||||
**背景**:上一版把水位策略做成了 **4 档波段表**(每档 = 水位下界/上界 + 随机数下界/上界),
|
||||
|
||||
Reference in New Issue
Block a user