RoleServiceImpl.java 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. package com.huaxu.service.impl;
  2. import com.baomidou.mybatisplus.core.metadata.IPage;
  3. import com.baomidou.mybatisplus.extension.api.R;
  4. import com.huaxu.dao.RoleMapper;
  5. import com.huaxu.dao.RoleMenuMapper;
  6. import com.huaxu.dao.RoleOrgMapper;
  7. import com.huaxu.dto.RoleDto;
  8. import com.huaxu.dto.RoleRequestDto;
  9. import com.huaxu.entity.*;
  10. import com.huaxu.model.LoginUser;
  11. import com.huaxu.service.RoleService;
  12. import com.huaxu.util.ByteArrayUtils;
  13. import com.huaxu.util.RedisUtil;
  14. import com.huaxu.util.UserUtil;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.stereotype.Service;
  17. import org.springframework.transaction.annotation.Transactional;
  18. import java.util.ArrayList;
  19. import java.util.List;
  20. /**
  21. * 角色(Role表)服务实现类
  22. *
  23. * @author makejava
  24. * @since 2020-10-27 09:13:27
  25. */
  26. @Service("roleService")
  27. public class RoleServiceImpl implements RoleService {
  28. @Autowired
  29. private RoleMapper roleMapper;
  30. @Autowired
  31. private RoleOrgMapper roleOrgMapper;
  32. @Autowired
  33. private RoleMenuMapper roleMenuMapper;
  34. @Autowired
  35. private RedisUtil redisUtil;
  36. /**
  37. * 通过ID查询单条数据
  38. *
  39. * @param id 主键
  40. * @return 实例对象
  41. */
  42. @Override
  43. public Role selectById(Integer id) {
  44. return this.roleMapper.selectById(id);
  45. }
  46. /**
  47. * 查询所有
  48. *
  49. * @return 实例对象的集合
  50. */
  51. @Override
  52. public List<Role> selectAll() {
  53. return this.roleMapper.selectAll();
  54. }
  55. /**
  56. * 根据条件查询
  57. *
  58. * @return 实例对象的集合
  59. */
  60. @Override
  61. public List<Role> selectList(Role role) {
  62. return this.roleMapper.selectList(role);
  63. }
  64. /**
  65. * 新增数据
  66. *
  67. * @param roleRequestDto 实例对象
  68. * @return 实例对象
  69. */
  70. @Override
  71. @Transactional
  72. public int insert(RoleRequestDto roleRequestDto) {
  73. configDataPermission(roleRequestDto);
  74. Role role = roleRequestDto.getRole();
  75. LoginUser currentUser = UserUtil.getCurrentUser();
  76. role.setTenantId(currentUser.getTenantId());
  77. role.setCreateBy(currentUser.getUsername());
  78. return this.roleMapper.insert(role);
  79. }
  80. /**
  81. * 批量新增
  82. *
  83. * @param roles 实例对象的集合
  84. * @return 生效的条数
  85. */
  86. @Override
  87. public int batchInsert(List<Role> roles) {
  88. return this.roleMapper.batchInsert(roles);
  89. }
  90. /**
  91. * 修改数据
  92. *
  93. * @param roleRequestDto 实例对象
  94. * @return 实例对象
  95. */
  96. @Override
  97. @Transactional
  98. public int update(RoleRequestDto roleRequestDto) {
  99. Role role=roleRequestDto.getRole();
  100. if(role.getStatus()==-1){
  101. Role roleUser = roleMapper.findRoleUser(role);
  102. if(roleUser!=null){
  103. return -1;
  104. }
  105. //删除用户与角色的关系
  106. roleMapper.deleteRoleUser(role);
  107. //删除用户与菜单关系
  108. roleMapper.deleteRoleMenu(role);
  109. }
  110. //將禁用的角色放入redis,作为登出判断
  111. if(role.getRoleState()==-1){
  112. String roleKey="disableRole:"+role.getId();
  113. redisUtil.setExpire(roleKey.getBytes(), ByteArrayUtils.objectToBytes("1").get(), 60*60*24);//15分钟过期
  114. } if(role.getRoleState()==0){
  115. String roleKey="disableRole:"+role.getId();
  116. redisUtil.del(roleKey.getBytes());
  117. }
  118. LoginUser currentUser = UserUtil.getCurrentUser();
  119. role.setUpdateBy(currentUser.getUsername());
  120. configDataPermission(roleRequestDto);
  121. return this.roleMapper.update(role);
  122. }
  123. private void configDataPermission(RoleRequestDto roleRequestDto){
  124. if(roleRequestDto.getRole().getPermissionType()==5){
  125. RoleOrg roleOrgDelete=new RoleOrg();
  126. Integer roleId=roleRequestDto.getRole().getId();
  127. roleOrgDelete.setRoleId(roleId);
  128. roleOrgMapper.update(roleOrgDelete);
  129. List<Integer> orgIds = roleRequestDto.getIds();
  130. List<RoleOrg>roleOrgs=new ArrayList<>();
  131. orgIds.forEach(id->{
  132. RoleOrg roleOrg = new RoleOrg();
  133. roleOrg.setRoleId(roleId);
  134. roleOrg.setOrgId(id);
  135. roleOrgs.add(roleOrg);
  136. });
  137. roleOrgMapper.batchInsert(roleOrgs);
  138. }
  139. }
  140. /**
  141. * 通过主键删除数据
  142. *
  143. * @param id 主键
  144. * @return 是否成功
  145. */
  146. @Override
  147. public int deleteById(Integer id) {
  148. return this.roleMapper.deleteById(id);
  149. }
  150. /**
  151. * 查询总数据数
  152. *
  153. * @return 数据总数
  154. */
  155. @Override
  156. public int count() {
  157. return this.roleMapper.count();
  158. }
  159. /**
  160. * 分页查询
  161. *
  162. * @return 对象列表
  163. */
  164. @Override
  165. public IPage<RoleDto> selectPage(Role role, IPage<RoleDto> page) {
  166. LoginUser currentUser = UserUtil.getCurrentUser();
  167. role.setTenantId(currentUser.getTenantId());
  168. return this.roleMapper.selectPage(page, role);
  169. }
  170. @Override
  171. public List<UserEntity> findUsersByRole(Role role) {
  172. return roleMapper.findUsersByRole(role);
  173. }
  174. @Override
  175. @Transactional
  176. public int updateRoleMenuRelations(RoleRequestDto dto) {
  177. Integer roleId =dto.getRole().getId();
  178. List<Integer> menuIds = dto.getIds();
  179. List<RoleMenu>menus=new ArrayList<>();
  180. roleMapper.deleteRoleMenu(dto.getRole());
  181. menuIds.forEach(id->{
  182. RoleMenu roleMenu=new RoleMenu();
  183. roleMenu.setRoleId(roleId);
  184. roleMenu.setMenuId(id);
  185. menus.add(roleMenu);
  186. });
  187. roleMenuMapper.batchInsert(menus);
  188. return 0;
  189. }
  190. }