UserServiceImpl.java 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package com.usky.service.user;
  2. import com.usky.annotion.DataScope;
  3. import com.usky.dao.impl.BaseDaoImpl;
  4. import com.usky.entity.sys.SysRoleDTO;
  5. import com.usky.entity.sys.SysUserDTO;
  6. import com.usky.entity.sys.vo.SysUserVO;
  7. import com.usky.utils.Page;
  8. import org.apache.commons.lang3.RandomStringUtils;
  9. import org.apache.commons.lang3.StringUtils;
  10. import org.apache.shiro.crypto.hash.Md5Hash;
  11. import org.hibernate.query.NativeQuery;
  12. import org.hibernate.transform.Transformers;
  13. import org.springframework.stereotype.Service;
  14. import java.sql.Timestamp;
  15. import java.util.*;
  16. /**
  17. * @author laowo
  18. * @version v1.0
  19. * @date 2021/8/20 15:08
  20. * @description TODO
  21. **/
  22. @Service
  23. public class UserServiceImpl extends BaseDaoImpl implements UserService {
  24. @Override
  25. public void addUser(SysUserDTO user) {
  26. String password = user.getPassword();
  27. String salt = RandomStringUtils.randomNumeric(6, 8);
  28. user.setSalt(salt);
  29. Md5Hash md5Hash = new Md5Hash(password, salt); //模拟md5加密一次
  30. user.setPassword(md5Hash.toString());
  31. user.setStatus("0");
  32. user.setCreateTime(new Timestamp(System.currentTimeMillis()));
  33. getSession().save(user);
  34. }
  35. @Override
  36. @SuppressWarnings("all")
  37. public Set<String> queryRoleKeys(long userId) {
  38. String sql = "SELECT DISTINCT\n" +
  39. "\tr.role_id AS roleId,\n" +
  40. "\tr.role_name AS roleName,\n" +
  41. "\tr.role_key AS roleKey,\n" +
  42. "\tr.role_sort AS roleSort,\n" +
  43. "\tr.data_scope AS dataScope,\n" +
  44. "\tr.STATUS AS `status`,\n" +
  45. "\tr.del_flag AS delFlag,\n" +
  46. "\tr.create_time AS createTime,\n" +
  47. "\tr.remark \n" +
  48. "FROM\n" +
  49. "\tsys_role r\n" +
  50. "\tLEFT JOIN sys_user_role ur ON ur.role_id = r.role_id\n" +
  51. "\tLEFT JOIN sys_user u ON u.user_id = ur.user_id\n" +
  52. "\tLEFT JOIN sys_dept d ON u.dept_id = d.dept_id WHERE r.del_flag = '0' and ur.user_id = " + userId + "";
  53. List<SysRoleDTO> perms = getSession().createSQLQuery(sql)
  54. .setResultTransformer(Transformers.aliasToBean(SysRoleDTO.class)).list();
  55. Set<String> permsSet = new HashSet<>();
  56. for (SysRoleDTO perm : perms) {
  57. if (perm != null) {
  58. permsSet.addAll(Arrays.asList(perm.getRoleKey().trim().split(",")));
  59. }
  60. }
  61. return permsSet;
  62. }
  63. @Override
  64. @DataScope(deptAlias = "d",userAlias = "u")
  65. public Page<SysUserVO> list(SysUserVO sysUserVO, Integer status, String loginName, String phonenumber, String startTime, String endTime, Integer deptId, Integer pageSize, Integer pageNo) {
  66. Map<String, Object> params = sysUserVO.getParams();
  67. String dataScope = (String) params.get("dataScope");
  68. StringBuilder sb = new StringBuilder();
  69. sb.append("select u.user_id as userId, u.dept_id as deptId, u.login_name as loginName, u.user_name as userName, u.user_type as userType, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag as delFlag, u.login_ip as loginIp, u.login_date as loginDate, u.create_by as createBy, u.create_time as createTime, u.remark, d.dept_name as deptName, d.leader from sys_user u left join sys_dept d on u.dept_id = d.dept_id where u.del_flag = '0'");
  70. if (null != status && status != 0) {
  71. sb.append(" AND u.status = " + status + "");
  72. }
  73. if (StringUtils.isNotBlank(loginName)) {
  74. sb.append("AND u.login_name like '%" + loginName + "%'");
  75. }
  76. if (StringUtils.isNotBlank(phonenumber)) {
  77. sb.append(" AND u.phonenumber like '%" + phonenumber + "%'");
  78. }
  79. if (StringUtils.isNotBlank(startTime)) {
  80. sb.append(" AND u.create_time >= " + startTime + "");
  81. }
  82. if (StringUtils.isNotBlank(endTime)) {
  83. sb.append(" AND u.create_time <= " + endTime + "");
  84. }
  85. if (null != deptId && deptId != 0) {
  86. sb.append("AND (u.dept_id = " + deptId + " OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE FIND_IN_SET (" + deptId + ",ancestors) ))");
  87. }
  88. if (StringUtils.isNotBlank(dataScope)){
  89. sb.append(" ").append(dataScope);
  90. }
  91. List list = getSession().createSQLQuery(sb.toString()).list();
  92. Page<SysUserVO> result = new Page<>(list.size(), pageSize);
  93. NativeQuery sqlQuery = getSession().createSQLQuery(sb.toString());
  94. sqlQuery.setFirstResult((pageNo - 1) * pageSize);
  95. sqlQuery.setMaxResults(pageSize);
  96. List<SysUserVO> sysUserVOList = sqlQuery.setResultTransformer(Transformers.aliasToBean(SysUserVO.class)).list();
  97. result.setPageList(sysUserVOList);
  98. result.setPageNo(pageNo);
  99. return result;
  100. }
  101. }