RoleServiceImpl.java 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. package com.usky.service.sys;
  2. import com.sun.org.apache.xpath.internal.operations.Gte;
  3. import com.usky.annotion.DataScope;
  4. import com.usky.dao.impl.BaseDaoImpl;
  5. import com.usky.entity.BaseEntity;
  6. import com.usky.entity.sys.SysDeptDTO;
  7. import com.usky.entity.sys.SysRoleDTO;
  8. import com.usky.entity.sys.SysRoleDeptDTO;
  9. import com.usky.entity.sys.SysRoleMenuDTO;
  10. import com.usky.entity.sys.vo.SysDeptVO;
  11. import com.usky.entity.sys.vo.SysRoleVO;
  12. import com.usky.utils.BeanHelp;
  13. import com.usky.utils.Page;
  14. import com.usky.utils.ShiroUtils;
  15. import io.swagger.models.auth.In;
  16. import org.apache.commons.lang3.StringUtils;
  17. import org.hibernate.query.NativeQuery;
  18. import org.hibernate.transform.Transformers;
  19. import org.springframework.stereotype.Service;
  20. import org.springframework.transaction.annotation.Transactional;
  21. import java.sql.Timestamp;
  22. import java.util.ArrayList;
  23. import java.util.List;
  24. /**
  25. * @author laowo
  26. * @version v1.0
  27. * @date 2021/8/27 15:30
  28. * @description TODO
  29. **/
  30. @Service
  31. public class RoleServiceImpl extends BaseDaoImpl implements RoleService {
  32. @Override
  33. @DataScope(deptAlias = "d")
  34. public Page<SysRoleVO> list(SysDeptVO sysDeptVO, String roleName, String status, String startTime, String endTime, Integer pageSize, Integer pageNo) {
  35. String dataScope = (String) sysDeptVO.getParams().get("dataScope");
  36. StringBuilder sb = new StringBuilder();
  37. sb.append("SELECT DISTINCT\n" +
  38. "\tr.role_id AS roleId,\n" +
  39. "\tr.role_name AS roleName,\n" +
  40. "\tr.role_key AS roleKey,\n" +
  41. "\tr.role_sort AS roleSort,\n" +
  42. "\tr.data_scope AS dataScope ,\n" +
  43. "\tr.STATUS as status,\n" +
  44. "\tr.del_flag AS delFlag,\n" +
  45. "\tr.create_time AS createTime,\n" +
  46. "\tr.remark \n" +
  47. "FROM\n" +
  48. "\tsys_role r\n" +
  49. "\tLEFT JOIN sys_user_role ur ON ur.role_id = r.role_id\n" +
  50. "\tLEFT JOIN sys_user u ON u.user_id = ur.user_id\n" +
  51. "\tLEFT JOIN sys_dept d ON u.dept_id = d.dept_id where r.del_flag = '0' ");
  52. if (StringUtils.isNotBlank(status)) {
  53. sb.append(" and r.status = '" + startTime + "'");
  54. }
  55. if (StringUtils.isNotBlank(roleName)) {
  56. sb.append(" and r.role_name like '%" + roleName + "%'");
  57. }
  58. if (StringUtils.isNotBlank(startTime)) {
  59. sb.append(" and r.create_time >='" + startTime + "'");
  60. }
  61. if (StringUtils.isNotBlank(endTime)) {
  62. sb.append(" and r.create_time <='" + endTime + "'");
  63. }
  64. if (StringUtils.isNotBlank(dataScope)) {
  65. sb.append(dataScope);
  66. }
  67. List totalCount = getSession().createSQLQuery(sb.toString()).list();
  68. Page<SysRoleVO> result = new Page<>(totalCount.size(), pageSize);
  69. NativeQuery query = getSession().createSQLQuery(sb.toString());
  70. query.setFirstResult((pageNo - 1) * pageSize);
  71. query.setMaxResults(pageSize);
  72. List<SysRoleVO> list = query.setResultTransformer(Transformers.aliasToBean(SysRoleVO.class)).list();
  73. result.setPageList(list);
  74. return result;
  75. }
  76. @Override
  77. @DataScope(deptAlias = "d")
  78. public List<SysRoleVO> querRoleList(SysRoleVO sysRoleVO) {
  79. String dataScope = (String) sysRoleVO.getParams().get("dataScope");
  80. StringBuilder sb = new StringBuilder();
  81. sb.append("SELECT DISTINCT\n" +
  82. "\tr.role_id AS roleId,\n" +
  83. "\tr.role_name AS roleName,\n" +
  84. "\tr.role_key AS roleKey,\n" +
  85. "\tr.role_sort AS roleSort,\n" +
  86. "\tr.data_scope AS dataScope,\n" +
  87. "\tr.STATUS AS status,\n" +
  88. "\tr.del_flag AS delFlag,\n" +
  89. "\tr.create_time AS createTime,\n" +
  90. "\tr.remark \n" +
  91. "FROM\n" +
  92. "\tsys_role r\n" +
  93. "\tLEFT JOIN sys_user_role ur ON ur.role_id = r.role_id\n" +
  94. "\tLEFT JOIN sys_user u ON u.user_id = ur.user_id\n" +
  95. "\tLEFT JOIN sys_dept d ON u.dept_id = d.dept_id WHERE r.del_flag = '0'");
  96. if (StringUtils.isNotBlank(dataScope)) {
  97. sb.append(dataScope);
  98. }
  99. return (List<SysRoleVO>) getSession().createSQLQuery(sb.toString()).setResultTransformer(Transformers.aliasToBean(SysRoleVO.class)).list();
  100. }
  101. @Override
  102. public SysRoleDTO queryRoleByName(SysRoleVO role) {
  103. return (SysRoleDTO) getSession().createQuery("from SysRoleDTO t where t.roleName='" + role.getRoleName() + "'").uniqueResult();
  104. }
  105. @Override
  106. public SysRoleDTO queryRoleByKey(SysRoleVO role) {
  107. return (SysRoleDTO) getSession().createQuery("from SysRoleDTO t where t.roleKey='" + role.getRoleKey() + "'").uniqueResult();
  108. }
  109. @Override
  110. @Transactional
  111. public void addRole(SysRoleVO roleVO) {
  112. SysRoleDTO roleDTO = BeanHelp.copyProperties(roleVO, SysRoleDTO.class);
  113. roleDTO.setCreateBy(ShiroUtils.getLoginName());
  114. roleDTO.setCreateTime(new Timestamp(System.currentTimeMillis()));
  115. getSession().save(roleDTO);
  116. Integer roleId = roleDTO.getRoleId();
  117. insertRoleMenu(roleVO, roleId);
  118. roleVO.setRoleId(roleId);
  119. insertRoleDept(roleVO);
  120. }
  121. /**
  122. * 角色修改
  123. *
  124. * @param roleVO
  125. */
  126. @Override
  127. @Transactional
  128. public void edit(SysRoleVO roleVO) {
  129. SysRoleDTO roleDTO = (SysRoleDTO) getSession().createQuery("from SysRoleDTO t where t.roleId=" + roleVO.getRoleId() + "").uniqueResult();
  130. if (StringUtils.isNotBlank(roleVO.getRoleKey())) {
  131. roleDTO.setRoleKey(roleVO.getRoleKey());
  132. }
  133. if (StringUtils.isNotBlank(roleVO.getRemark())) {
  134. roleDTO.setRemark(roleVO.getRemark());
  135. }
  136. if (StringUtils.isNotBlank(roleVO.getRoleName())) {
  137. roleDTO.setRoleKey(roleVO.getRoleKey());
  138. }
  139. if (StringUtils.isNotBlank(roleVO.getStatus())) {
  140. roleDTO.setStatus(roleVO.getStatus());
  141. }
  142. roleDTO.setRoleSort(roleVO.getRoleSort());
  143. roleDTO.setUpdateBy(ShiroUtils.getLoginName());
  144. roleDTO.setUpdateTime(new Timestamp(System.currentTimeMillis()));
  145. getSession().saveOrUpdate(roleDTO);
  146. delRoleMenuByRoleId(roleVO.getRoleId());
  147. insertRoleMenu(roleVO, roleVO.getRoleId());
  148. //删除角色和部门关联
  149. delRoleDept(roleVO.getRoleId());
  150. insertRoleDept(roleVO);
  151. }
  152. /**
  153. * 删除角色菜单关联
  154. *
  155. * @param roleId
  156. */
  157. public void delRoleMenuByRoleId(Integer roleId) {
  158. getSession().createSQLQuery("delete from sys_role_menu where role_id=" + roleId + "").executeUpdate();
  159. }
  160. public void insertRoleMenu(SysRoleVO role, Integer roleId) {
  161. if (null != role.getMenuIds() && role.getMenuIds().length != 0) {
  162. List<SysRoleMenuDTO> list = new ArrayList<SysRoleMenuDTO>();
  163. for (Integer menuId : role.getMenuIds()) {
  164. SysRoleMenuDTO rm = new SysRoleMenuDTO();
  165. rm.setRoleId(roleId);
  166. rm.setMenuId(menuId);
  167. getSession().save(rm);
  168. getSession().flush();
  169. getSession().clear();
  170. }
  171. }
  172. }
  173. public void insertRoleDept(SysRoleVO role) {
  174. // 新增角色与部门(数据权限)管理
  175. if (null != role.getMenuIds() && role.getMenuIds().length != 0) {
  176. for (Integer deptId : role.getDeptIds()) {
  177. SysRoleDeptDTO rd = new SysRoleDeptDTO();
  178. rd.setRoleId(role.getRoleId());
  179. rd.setDeptId(deptId);
  180. getSession().save(rd);
  181. getSession().flush();
  182. getSession().clear();
  183. }
  184. }
  185. }
  186. public void delRoleDept(Integer roleId) {
  187. getSession().createSQLQuery("delete from sys_role_dept where role_id=" + roleId + "").executeUpdate();
  188. }
  189. }