package cc.mrbird.febs.auth.manager; import cc.mrbird.febs.auth.mapper.MenuMapper; import cc.mrbird.febs.auth.mapper.UserMapper; import cc.mrbird.febs.auth.mapper.UserRoleMapper; import cc.mrbird.febs.common.core.entity.constant.FebsConstant; import cc.mrbird.febs.common.core.entity.constant.StringConstant; import cc.mrbird.febs.common.core.entity.system.Menu; import cc.mrbird.febs.common.core.entity.system.SystemUser; import cc.mrbird.febs.common.core.entity.system.UserDataPermission; import cc.mrbird.febs.common.core.entity.system.UserRole; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** * 用户业务逻辑 * * @author MrBird */ @Service @RequiredArgsConstructor @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) public class UserManager { private final UserMapper userMapper; private final MenuMapper menuMapper; private final UserRoleMapper userRoleMapper; /** * 通过用户名查询用户信息 * * @param username 用户名 * @return 用户 */ public SystemUser findByName(String username) { SystemUser user = userMapper.findByName(username); if (user != null) { List permissions = userMapper.findUserDataPermissions(user.getUserId()); String deptIds = permissions.stream().map(p -> String.valueOf(p.getDeptId())).collect(Collectors.joining(StringConstant.COMMA)); user.setDeptIds(deptIds); } return user; } /** * 通过用户名查询用户权限串 * * @param username 用户名 * @return 权限 */ public String findUserPermissions(String username) { List userPermissions = menuMapper.findUserPermissions(username); return userPermissions.stream().map(Menu::getPerms).collect(Collectors.joining(StringConstant.COMMA)); } /** * 注册用户 * * @param username username * @param password password * @return SystemUser SystemUser */ @Transactional(rollbackFor = Exception.class) public SystemUser registUser(String username, String password) { SystemUser systemUser = new SystemUser(); systemUser.setUsername(username); systemUser.setPassword(password); systemUser.setCreateTime(new Date()); systemUser.setStatus(SystemUser.STATUS_VALID); systemUser.setSex(SystemUser.SEX_UNKNOW); systemUser.setAvatar(SystemUser.DEFAULT_AVATAR); systemUser.setDescription("注册用户"); this.userMapper.insert(systemUser); UserRole userRole = new UserRole(); userRole.setUserId(systemUser.getUserId()); // 注册用户角色 ID userRole.setRoleId(FebsConstant.REGISTER_ROLE_ID); this.userRoleMapper.insert(userRole); return systemUser; } }