fix(person): 子账号继承主账号 role_type + Login 不再硬编 leader

问题: sponsor 主账号新建的子账号 role_type 没写入,
      被 sys_user.role_type DEFAULT 'executor' 覆盖,
      导致子账号进入 executor 视角;另外 Login.vue
      autoRole/短信登录都硬编 'leader' 兜底, getInfo
      失败时静默跳 /leader/home。

修复:
- BizPersonServiceImpl.insert 读主账号 SysUser,
  把 mainUser.getRoleType() 写到新子账号
  (SysUserMapper.xml insertUser 已支持 role_type 列)
- Login.vue: 短信登录 fallbackRole 改 '',
  autoRole 不匹配返回 '', afterLogin 无 role 跳 /login
  (不再 fallback /leader/home)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
郭庆泰
2026-08-18 21:35:51 +08:00
co-authored by Claude
parent 40f296b59d
commit e59b512e4b
3 changed files with 391 additions and 4 deletions
@@ -73,6 +73,9 @@ public class BizPersonServiceImpl implements IBizPersonService
}
// 1. 创建 sys_user 子账号
// 继承主账号 role_type, 避免子账号被 sys_user.role_type DEFAULT 'executor' 覆盖
// (之前不写 roleType 时, sponsor 主账号的子账号会被 DEFAULT 错位成 executor)
SysUser mainUser = mainUserId == null ? null : sysUserMapper.selectUserById(mainUserId);
SysUser newUser = new SysUser();
newUser.setUserName(entity.getLoginUsername());
newUser.setNickName(entity.getName());
@@ -82,6 +85,9 @@ public class BizPersonServiceImpl implements IBizPersonService
newUser.setParentUserId(mainUserId);
newUser.setStatus("0");
newUser.setDelFlag("0");
if (mainUser != null && mainUser.getRoleType() != null) {
newUser.setRoleType(mainUser.getRoleType());
}
newUser.setCreateBy(SecurityUtils.getUsername());
// mybatis useGeneratedKeys 自动回填 userId
sysUserMapper.insertUser(newUser);