ISSUE-003-admin-create-user.md 1.9 KB

ISSUE-003:管理员创建用户500错误(根因已确认)

状态: 待解决 严重度: 中 创建日期: 2026-06-29 模块: 用户管理 测试用例: ADMIN-CREATE-PARENT 根因确认日期: 2026-06-30

问题描述

管理员通过 POST /api/admin/users/create 创建新用户时返回 Spring Boot 默认 500 错误页面(非业务 Result.error)。

错误信息

code=500 status=Internal Server Error path=/api/admin/users/create

即使使用时间戳唯一手机号(如 13930143018)仍500,排除重复手机号问题。

根因分析

文件: cfc-backend/src/main/java/com/etotem/cfc/controller/admin/AdminController.java line 76-104

User user = new User();
user.setPhone(phone);
user.setNickname(nickname);
user.setRole(role);
user.setRealName(realName);
user.setPassword("");      // ← 空字符串可能违反约束
user.setCreatedAt(new Date());
user.setUpdatedAt(new Date());
// ❌ 缺少: user.setFamilyId(...) — family_id 是 NOT NULL 字段!
userMapper.insert(user);

users 表结构(生产库):

family_id BIGINT NOT NULL,   // ← 约束存在

根因: family_id 是 NOT NULL 字段,但 AdminController.createUser() 没有设置 familyId,导致 MySQL 约束违反异常 → 500。

现有用户 familyId 参考

userId phone familyId
1 13910958767 2
8 13701366188 2
9 13701366181 16
10 13800138999 17

影响范围

  • 管理员无法通过管理后台创建新用户
  • 所有新用户创建都失败(NOT NULL 约束)

修复建议

在 AdminController.createUser() 中添加 familyId:

user.setFamilyId(1L); // 或创建新的 family 记录

或者修改表结构允许 NULL(不推荐)。

责任人

待定

修复日期

待定

回归测试

修复后运行:python e2e_issue_tracking.py 验证 ISSUE003-CREATE 通过。