SysUserServiceImpl.java 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. package com.fdkankan.manage.service.impl;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  5. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  6. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  7. import com.fdkankan.manage.common.ResultCode;
  8. import com.fdkankan.manage.exception.BusinessException;
  9. import com.fdkankan.manage.common.PageInfo;
  10. import com.fdkankan.common.util.Base64Converter;
  11. import com.fdkankan.common.util.DateUtil;
  12. import com.fdkankan.common.util.SecurityUtil;
  13. import com.fdkankan.manage.entity.SysMenu;
  14. import com.fdkankan.manage.entity.SysRole;
  15. import com.fdkankan.manage.entity.SysUser;
  16. import com.fdkankan.manage.mapper.ISysUserMapper;
  17. import com.fdkankan.manage.service.ISysMenuService;
  18. import com.fdkankan.manage.service.ISysRoleService;
  19. import com.fdkankan.manage.service.ISysUserService;
  20. import com.fdkankan.manage.vo.request.SysUserParam;
  21. import com.fdkankan.manage.vo.response.ManageLoginResponse;
  22. import com.fdkankan.manage.vo.response.SysRoleVo;
  23. import com.fdkankan.manage.vo.response.SysUserVo;
  24. import com.fdkankan.redis.constant.RedisKey;
  25. import com.fdkankan.redis.util.RedisUtil;
  26. import org.springframework.beans.BeanUtils;
  27. import org.springframework.beans.factory.annotation.Autowired;
  28. import org.springframework.stereotype.Service;
  29. import org.springframework.util.StringUtils;
  30. import java.util.*;
  31. import java.util.stream.Collectors;
  32. /**
  33. * <p>
  34. * 服务实现类
  35. * </p>
  36. *
  37. * @author
  38. * @since 2022-06-09
  39. */
  40. @Service
  41. public class SysUserServiceImpl extends ServiceImpl<ISysUserMapper, SysUser> implements ISysUserService {
  42. @Autowired
  43. private ISysRoleService roleService;
  44. @Autowired
  45. private ISysMenuService menuService;
  46. @Autowired
  47. private RedisUtil redisUtil;
  48. @Autowired
  49. private ISysMenuService sysMenuService;
  50. @Override
  51. public SysUser getByUserName(String userName) {
  52. LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>();
  53. wrapper.eq(SysUser::getUserName,userName);
  54. List<SysUser> list = this.list(wrapper);
  55. if(list == null || list.size() <=0){
  56. return null;
  57. }
  58. return list.get(0);
  59. }
  60. @Override
  61. public ManageLoginResponse getUserByUserNameAndPassword(String userName, String password) {
  62. LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>();
  63. wrapper.eq(SysUser::getUserName,userName)
  64. .eq(SysUser::getPassword,password);
  65. List<SysUser> list = this.list(wrapper);
  66. if(list == null || list.size() <=0){
  67. return null;
  68. }
  69. SysUser sysUser = list.get(0);
  70. SysRole role = roleService.getById(sysUser.getRoleId());
  71. ManageLoginResponse loginVO = new ManageLoginResponse();
  72. BeanUtils.copyProperties(sysUser,loginVO);
  73. loginVO.setRoleId(role.getId());
  74. loginVO.setRoleName(role.getRoleName());
  75. sysMenuService.setRoleAndMenuCache(role,sysUser);
  76. return loginVO;
  77. }
  78. @Override
  79. public void addOrUpdate(SysUserParam param) {
  80. if(param.getId() == null){
  81. SysUser user = this.getByUserName(param.getUserName());
  82. if(user !=null){
  83. throw new BusinessException(ResultCode.USER_EXIST);
  84. }
  85. }
  86. SysUser sysUser = new SysUser();
  87. BeanUtils.copyProperties(param,sysUser);
  88. if(!StringUtils.isEmpty(param.getPassword())){
  89. String passwordMd5 = SecurityUtil.MD52(Base64Converter.decode(Base64Converter.subText(param.getPassword())));
  90. sysUser.setPassword(passwordMd5);
  91. }
  92. if(!StringUtils.isEmpty(param.getNewPassword())){
  93. String passwordMd5 = SecurityUtil.MD52(Base64Converter.decode(Base64Converter.subText(param.getNewPassword())));
  94. sysUser.setPassword(passwordMd5);
  95. }
  96. if(!StringUtils.isEmpty(param.getOldPassword()) && param.getId() != null){
  97. String passwordMd5 = SecurityUtil.MD52(Base64Converter.decode(Base64Converter.subText(param.getOldPassword())));
  98. SysUser byId = this.getById(param.getId());
  99. if(!byId.getPassword().equals(passwordMd5)){
  100. throw new BusinessException(ResultCode.OLD_PASSWORD_ERROR);
  101. }
  102. }
  103. this.saveOrUpdate(sysUser);
  104. }
  105. @Override
  106. public PageInfo pageList(SysUserParam param) {
  107. Page<SysUserVo> page = this.getBaseMapper().pageList(new Page<>(param.getPageNum(),param.getPageSize()),param);
  108. return PageInfo.PageInfo(page);
  109. }
  110. @Override
  111. public HashMap<Long, Long> groupByRoleId() {
  112. HashMap<Long, Long> map = new HashMap<>();
  113. List<SysRoleVo> roleVos = this.getBaseMapper().groupByRoleId();
  114. for (SysRoleVo roleVo : roleVos) {
  115. map.put(roleVo.getId(),roleVo.getAdminCount());
  116. }
  117. return map;
  118. }
  119. @Override
  120. public HashMap<Long, SysUser> getByIds(Set<Long> sysUserIds) {
  121. HashMap<Long, SysUser> map = new HashMap<>();
  122. if(sysUserIds.size() >0){
  123. List<SysUser> sysUsers = this.listByIds(sysUserIds);
  124. sysUsers.forEach(entity-> map.put(entity.getId(),entity));
  125. }
  126. return map;
  127. }
  128. @Override
  129. public void updateRoleId(Long sysUserId, Integer roleId) {
  130. LambdaUpdateWrapper<SysUser> wrapper = new LambdaUpdateWrapper<>();
  131. wrapper.eq(SysUser::getId,sysUserId);
  132. wrapper.set(SysUser::getRoleId,roleId);
  133. this.update(wrapper);
  134. }
  135. @Override
  136. public void del(Long sysUserId) {
  137. LambdaUpdateWrapper<SysUser> wrapper = new LambdaUpdateWrapper<>();
  138. wrapper.eq(SysUser::getId,sysUserId);
  139. wrapper.set(SysUser::getRecStatus,sysUserId);
  140. this.update(wrapper);
  141. }
  142. }