|
1 | 1 | package top.cadecode.sra.system.serviceimpl; |
2 | 2 |
|
3 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| 4 | +import lombok.RequiredArgsConstructor; |
| 5 | +import org.springframework.security.core.userdetails.UserDetails; |
4 | 6 | import org.springframework.stereotype.Service; |
| 7 | +import top.cadecode.sra.common.exception.ApiException; |
| 8 | +import top.cadecode.sra.system.bean.dto.SysUserDto; |
| 9 | +import top.cadecode.sra.system.bean.po.SysRole; |
5 | 10 | import top.cadecode.sra.system.bean.po.SysUser; |
| 11 | +import top.cadecode.sra.system.convert.SysUserConvert; |
| 12 | +import top.cadecode.sra.system.mapper.SysRoleMapper; |
6 | 13 | import top.cadecode.sra.system.mapper.SysUserMapper; |
7 | 14 | import top.cadecode.sra.system.service.SysUserService; |
8 | 15 |
|
| 16 | +import java.util.List; |
| 17 | +import java.util.Optional; |
| 18 | +import java.util.stream.Collectors; |
| 19 | + |
9 | 20 | /** |
10 | 21 | * @author Cade Li |
11 | 22 | * @date 2022/5/27 |
12 | 23 | * @description 系统用户服务实现 |
13 | 24 | */ |
14 | 25 | @Service |
| 26 | +@RequiredArgsConstructor |
15 | 27 | public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements SysUserService { |
| 28 | + |
| 29 | + private final SysRoleMapper sysRoleMapper; |
| 30 | + |
| 31 | + /** |
| 32 | + * UserDetailsService 实现 |
| 33 | + */ |
| 34 | + @Override |
| 35 | + public UserDetails loadUserByUsername(String username) { |
| 36 | + Optional<SysUser> sysUserOpt = lambdaQuery().eq(SysUser::getUsername, username).oneOpt(); |
| 37 | + // 用户账户不存在 |
| 38 | + sysUserOpt.orElseThrow(() -> ApiException.of("该用户不存在")); |
| 39 | + // 用户账号被关闭 |
| 40 | + if (!sysUserOpt.get().isEnableFlag()) { |
| 41 | + throw ApiException.of("账号已被关闭"); |
| 42 | + } |
| 43 | + SysUserDto sysUserDto = SysUserConvert.INSTANCE.poToDto(sysUserOpt.get()); |
| 44 | + List<SysRole> sysRoles = sysRoleMapper.listByUserId(sysUserDto.getId()); |
| 45 | + sysUserDto.setRoles(sysRoles.stream().map(SysRole::getCode).collect(Collectors.toList())); |
| 46 | + return sysUserDto; |
| 47 | + } |
16 | 48 | } |
0 commit comments