SysUserService.java 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. package com.iden.bms.service;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import cn.hutool.core.collection.CollUtil;
  4. import cn.hutool.core.util.StrUtil;
  5. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  6. import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
  7. import com.baomidou.mybatisplus.core.metadata.IPage;
  8. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  9. import com.iden.bms.params.ModifyPasswordParams;
  10. import com.iden.common.cache.RedisKeyConstant;
  11. import com.iden.common.cache.RedisUtil;
  12. import com.iden.common.entity.*;
  13. import com.iden.common.enums.UserRoleEnum;
  14. import com.iden.common.enums.ValidStatusEnum;
  15. import com.iden.common.exception.BDException;
  16. import com.iden.common.service.*;
  17. import com.iden.common.util.MyBeanUtils;
  18. import com.iden.common.vo.PageReqVO;
  19. import com.iden.common.vo.UserLoginedConvertVO;
  20. import com.iden.common.vo.SysUserVO;
  21. import org.apache.commons.codec.digest.DigestUtils;
  22. import org.apache.commons.lang3.StringUtils;
  23. import org.springframework.beans.BeanUtils;
  24. import org.springframework.stereotype.Service;
  25. import org.springframework.transaction.annotation.Transactional;
  26. import javax.annotation.Resource;
  27. import java.util.ArrayList;
  28. import java.util.Date;
  29. import java.util.List;
  30. /**
  31. *
  32. * @author makejava
  33. * @since 2021-05-21 00:08:38
  34. */
  35. @Service
  36. public class SysUserService {
  37. @Resource
  38. private IdenSysUserService idenSysUserService;
  39. @Resource
  40. RedisUtil redisUtil;
  41. public UserLoginedConvertVO getLoginUser(String username, String password, String securityCode) throws BDException {
  42. if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password) || StringUtils.isEmpty(securityCode)) {
  43. throw new BDException("登录参数不能为空");
  44. }
  45. String securityCodeRedis = (String)redisUtil.hget(RedisKeyConstant.LOGIN_VALIDATE_CODE,username);
  46. if (!securityCode.equalsIgnoreCase(securityCodeRedis)){
  47. throw new BDException("验证码不正确");
  48. }
  49. UserLoginedConvertVO userLoginedConvertVO = null;
  50. QueryWrapper<IdenSysUser> userQueryWrapper = new QueryWrapper<>();
  51. userQueryWrapper.lambda().eq(IdenSysUser::getUsername,username);
  52. IdenSysUser user = this.idenSysUserService.getOne(userQueryWrapper);
  53. if (user != null) {
  54. userLoginedConvertVO = new UserLoginedConvertVO();
  55. BeanUtil.copyProperties(user, userLoginedConvertVO);
  56. String md5Password = DigestUtils.md5Hex(password);
  57. if (!md5Password.equalsIgnoreCase(user.getPassword())) {
  58. throw new BDException("用户名或密码错误");
  59. }
  60. if (ValidStatusEnum.INVALID.getValue().equals(user.getValidStatus())) {
  61. throw new BDException("用户已经停用");
  62. }
  63. }
  64. return userLoginedConvertVO;
  65. }
  66. /**
  67. * 查询系统用户列表
  68. * @return
  69. */
  70. public IPage<SysUserVO> listSysUser(String nickname, String username, UserLoginedConvertVO loginUser, PageReqVO pageReqVo) {
  71. IPage<IdenSysUser> page = new Page<>(pageReqVo.getCurrent(), pageReqVo.getPageSize());
  72. QueryWrapper<IdenSysUser> queryWrapper = new QueryWrapper<>();
  73. queryWrapper.lambda().like(StrUtil.isNotEmpty(nickname),IdenSysUser::getNickname,nickname)
  74. .eq(StrUtil.isNotEmpty(username),IdenSysUser::getUsername,username)
  75. .orderByAsc(IdenSysUser::getUsername);
  76. IPage<IdenSysUser> pageRes = this.idenSysUserService.page(page, queryWrapper);
  77. IPage<SysUserVO> results = new Page<>(pageRes.getCurrent(),pageRes.getSize(),pageRes.getTotal());
  78. if(CollUtil.isNotEmpty(pageRes.getRecords())){
  79. List<SysUserVO> list = new ArrayList<>();
  80. pageRes.getRecords().forEach(item -> {
  81. SysUserVO resVO = new SysUserVO();
  82. BeanUtils.copyProperties(item,resVO);
  83. resVO.setValidStatusName(ValidStatusEnum.getValueToName(resVO.getValidStatus()));
  84. list.add(resVO);
  85. });
  86. results.setRecords(list);
  87. }
  88. return results;
  89. }
  90. /**
  91. * 删除系统用户
  92. * @param id
  93. * @return
  94. */
  95. public boolean deleteById(Long id){
  96. return this.idenSysUserService.removeById(id);
  97. }
  98. /**
  99. * 详情
  100. * @param id
  101. * @return
  102. */
  103. public SysUserVO getSysUserById(Long id){
  104. IdenSysUser idenSysUser = this.idenSysUserService.getById(id);
  105. if (idenSysUser!=null){
  106. SysUserVO resVO = new SysUserVO();
  107. BeanUtil.copyProperties(idenSysUser,resVO);
  108. resVO.setValidStatusName(ValidStatusEnum.getValueToName(resVO.getValidStatus()));
  109. return resVO;
  110. }
  111. return null;
  112. }
  113. /**
  114. * 保存系统用户
  115. * @param vo
  116. */
  117. @Transactional(rollbackFor = Exception.class)
  118. public int createSysUser(SysUserVO vo, UserLoginedConvertVO loginUser){
  119. QueryWrapper<IdenSysUser> queryWrapper = new QueryWrapper<>();
  120. queryWrapper.lambda().eq(IdenSysUser::getUsername,vo.getUsername());
  121. if(idenSysUserService.count(queryWrapper) > 0){
  122. return 1;
  123. }
  124. //保存系统用户
  125. IdenSysUser idenSysUser = new IdenSysUser();
  126. BeanUtil.copyProperties(vo,idenSysUser);
  127. idenSysUser.setCreateTime(new Date());
  128. idenSysUser.setRole(UserRoleEnum.HIGH.getValue());
  129. this.idenSysUserService.save(idenSysUser);
  130. return 0;
  131. }
  132. /**
  133. * 修改系统用户
  134. * @param vo
  135. */
  136. @Transactional(rollbackFor = Exception.class)
  137. public void updateSysUser(SysUserVO vo){
  138. //保存系统用户
  139. IdenSysUser idenSysUser = this.idenSysUserService.getById(vo.getId());
  140. MyBeanUtils.copyProperties(vo,idenSysUser);
  141. idenSysUser.setModifyTime(new Date());
  142. this.idenSysUserService.updateById(idenSysUser);
  143. }
  144. /**
  145. * 启用停用角色
  146. * @param vo
  147. */
  148. @Transactional(rollbackFor = Exception.class)
  149. public void invalidSysUser(SysUserVO vo) throws BDException {
  150. IdenSysUser idenSysUser = new IdenSysUser();
  151. BeanUtil.copyProperties(vo, idenSysUser);
  152. if(!this.idenSysUserService.updateById(idenSysUser)){
  153. throw new BDException("操作失败!");
  154. }
  155. }
  156. /**
  157. * 重置用户密码
  158. * @param
  159. */
  160. @Transactional(rollbackFor = Exception.class)
  161. public boolean resetPassword(Long id){
  162. UpdateWrapper<IdenSysUser> updateWrapper = new UpdateWrapper<>();
  163. updateWrapper.lambda().eq(IdenSysUser::getId,id)
  164. .set(IdenSysUser::getPassword, DigestUtils.md5Hex("123456"))
  165. .set(IdenSysUser::getModifyTime, new Date());
  166. return idenSysUserService.update(updateWrapper);
  167. }
  168. /**
  169. * 修改密码
  170. * @param parmas
  171. */
  172. @Transactional(rollbackFor = Exception.class)
  173. public boolean modifyPassword(Long id, ModifyPasswordParams parmas){
  174. IdenSysUser idenSysUser = this.idenSysUserService.getById(id);
  175. if(!idenSysUser.getPassword().equals(DigestUtils.md5Hex(parmas.getCurrPassword()))){
  176. return false;
  177. }
  178. UpdateWrapper<IdenSysUser> updateWrapper = new UpdateWrapper<>();
  179. updateWrapper.lambda().eq(IdenSysUser::getId,id)
  180. .set(IdenSysUser::getPassword, DigestUtils.md5Hex(parmas.getNewPassword()))
  181. .set(IdenSysUser::getModifyTime, new Date());
  182. return this.idenSysUserService.update(updateWrapper);
  183. }
  184. }