初始化
This commit is contained in:
56
memory/session-20260615-2.md
Normal file
56
memory/session-20260615-2.md
Normal file
@@ -0,0 +1,56 @@
|
||||
---
|
||||
name: session-20260615-2
|
||||
description: 2026-06-15 第2次会话 — sys_user唯一索引删除,修复逻辑删除与uk_username冲突
|
||||
metadata:
|
||||
type: session
|
||||
date: 2026-06-15
|
||||
sessionNumber: 2
|
||||
startTime: 2026-06-15
|
||||
---
|
||||
|
||||
# 2026-06-15 第2次会话
|
||||
|
||||
## 会话摘要
|
||||
修复了 `sys_user` 表逻辑删除(`is_deleted`)与唯一索引 `uk_username`/`uk_email` 冲突的问题。删除了数据库唯一索引,改为应用层代码校验。
|
||||
|
||||
## 问题描述
|
||||
- **现象**:创建用户时报 `Duplicate entry 'nginxadmin' for key 'sys_user.uk_username'`
|
||||
- **根因**:MyBatis-Plus `@TableLogic` 自动在查询时过滤 `is_deleted=1`,但数据库唯一索引不区分逻辑删除标记。已删用户仍占着 username → 新用户无法创建同名 → 插入时索引冲突
|
||||
|
||||
## 关键操作
|
||||
|
||||
### 删除唯一索引,改应用层校验
|
||||
- **做了什么**:从 `sys_user` 表删除 `uk_username` 和 `uk_email` 两个唯一索引,用户名/邮箱唯一性交给 `UserServiceImpl.add()` 中的 `selectCount` 校验
|
||||
- **原因**:唯一索引不区分 `is_deleted`,逻辑删除的记录仍阻塞同名用户创建
|
||||
- **结果**:已删除的用户不再占坑,可创建同名新用户;活跃用户的唯一性由应用层保证
|
||||
|
||||
## 涉及文件
|
||||
|
||||
| 文件 | 改动 |
|
||||
|------|------|
|
||||
| `sql/qa_ddl.sql` | 删除 uk_username、uk_email 索引定义 |
|
||||
| `init_database.py` | 同上 |
|
||||
| `init_qa_database.py` | 同上 |
|
||||
| QA 数据库 `mokeegatewayqa` | DROP INDEX uk_username, uk_email |
|
||||
| PROD 数据库 `mokeegateway` | DROP INDEX uk_username, uk_email |
|
||||
|
||||
## 代码层无需改动
|
||||
`UserServiceImpl.add()` 已有校验:`selectCount` + MyBatis-Plus `@TableLogic` 自动过滤已删除记录,重复用户名会提示"用户名已存在"。
|
||||
|
||||
## 待处理
|
||||
- [ ] 验证:创建一个用户 → 删除 → 再创建同名用户,确认不再报错
|
||||
|
||||
### 2. 首页仪表盘数据权限
|
||||
- **做了什么**:DashboardController.stats() 增加数据权限过滤。非 super_admin 用户首页统计卡片和登录趋势图只看自己绑定系统的数据(排除网关平台)
|
||||
- **原因**:之前首页显示全部系统/全部用户的全局统计数据,业务管理员不应看到平台全局数据
|
||||
- **结果**:
|
||||
- 系统总数 → 用户绑定系统数(拦截器已排除网关)
|
||||
- 用户总数 → JOIN sys_user_system 统计绑定系统下的用户
|
||||
- 今日登录/在线/30天趋势 → system_id IN (用户绑定系统) 过滤
|
||||
- super_admin 行为不变
|
||||
- 复用 UserContextInterceptor 已有的 systemIds(已排除网关),不重复查库
|
||||
- **涉及文件**: `DashboardController.java`
|
||||
|
||||
## 待处理
|
||||
- [ ] 验证:创建一个用户 → 删除 → 再创建同名用户,确认不再报错
|
||||
- [ ] 部署后验证首页数据权限:用非 super_admin 账号登录,确认统计数据只显示绑定系统范围内
|
||||
Reference in New Issue
Block a user