liujie
2026-08-11 323764c813a09cd56cdab780155ef659dbe0b364
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -10,6 +10,7 @@
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.BeanValidators;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.system.domain.SysPost;
import com.ruoyi.system.domain.SysUserPost;
import com.ruoyi.system.domain.SysUserRole;
@@ -40,6 +41,10 @@
public class SysUserServiceImpl implements ISysUserService
{
    private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class);
    private static final Long ADMIN_ROLE_ID = 1L;
    private static final String MIDDLE_PLATFORM_CREATE_BY = "middlePlatform";
    @Autowired
    private SysUserMapper userMapper;
@@ -114,6 +119,40 @@
    }
    /**
     * 获取中台账号对应的本地权限载体,本地不存在时创建独立用户并赋予管理员角色。
     */
    @Override
    @Transactional
    public SysUser getOrCreateMiddlePlatformAdmin(String userName)
    {
        String account = StringUtils.trim(userName);
        SysUser user = userMapper.selectUserByUserName(account);
        if (StringUtils.isNotNull(user))
        {
            return user;
        }
        SysUser middlePlatformUser = new SysUser();
        middlePlatformUser.setUserName(account);
        middlePlatformUser.setNickName(account);
        // 使用随机本地密码,避免中台账号绕过中台认证直接从本地登录。
        middlePlatformUser.setPassword(SecurityUtils.encryptPassword(IdUtils.fastSimpleUUID()));
        middlePlatformUser.setStatus(UserConstants.NORMAL);
        middlePlatformUser.setRoleId(ADMIN_ROLE_ID);
        middlePlatformUser.setCreateBy(MIDDLE_PLATFORM_CREATE_BY);
        middlePlatformUser.setRemark("中台认证用户自动创建");
        insertUser(middlePlatformUser);
        SysUser createdUser = userMapper.selectUserByUserName(account);
        if (StringUtils.isNull(createdUser))
        {
            throw new ServiceException("中台用户本地账号创建失败");
        }
        log.info("中台登录用户:{} 本地账号不存在,已自动创建并赋予管理员角色。", account);
        return createdUser;
    }
    /**
     * 通过用户ID查询用户
     * 
     * @param userId 用户ID