初始化

This commit is contained in:
zg
2026-07-15 16:13:27 +08:00
parent 6d6f559793
commit c4023c1623
276 changed files with 42622 additions and 0 deletions

View 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 账号登录,确认统计数据只显示绑定系统范围内