RoleServiceImpl.java 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. package com.huaxu.service.impl;
  2. import com.baomidou.mybatisplus.core.metadata.IPage;
  3. import com.huaxu.dao.MenuMapper;
  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.Date;
  20. import java.util.List;
  21. /**
  22. * 角色(Role表)服务实现类
  23. *
  24. * @author makejava
  25. * @since 2020-10-27 09:13:27
  26. */
  27. @Service("roleService")
  28. public class RoleServiceImpl implements RoleService {
  29. @Autowired
  30. private RoleMapper roleMapper;
  31. @Autowired
  32. private RoleOrgMapper roleOrgMapper;
  33. @Autowired
  34. private RoleMenuMapper roleMenuMapper;
  35. @Autowired
  36. private RedisUtil redisUtil;
  37. @Autowired
  38. private MenuMapper menuMapper;
  39. /**
  40. * 通过ID查询单条数据
  41. *
  42. * @param id 主键
  43. * @return 实例对象
  44. */
  45. @Override
  46. public Role selectById(Integer id) {
  47. return this.roleMapper.selectById(id);
  48. }
  49. /**
  50. * 查询所有
  51. *
  52. * @return 实例对象的集合
  53. */
  54. @Override
  55. public List<Role> selectAll() {
  56. return this.roleMapper.selectAll();
  57. }
  58. /**
  59. * 根据条件查询
  60. *
  61. * @return 实例对象的集合
  62. */
  63. @Override
  64. public List<Role> selectList(Role role) {
  65. LoginUser currentUser = UserUtil.getCurrentUser();
  66. role.setTenantId(currentUser.getTenantId());
  67. return this.roleMapper.selectList(role);
  68. }
  69. /**
  70. * 新增数据
  71. *
  72. * @param roleRequestDto 实例对象
  73. * @return 实例对象
  74. */
  75. @Override
  76. @Transactional
  77. public int insert(RoleRequestDto roleRequestDto) {
  78. Role role = roleRequestDto.getRole();
  79. LoginUser currentUser = UserUtil.getCurrentUser();
  80. role.setTenantId(currentUser.getTenantId());
  81. role.setCreateBy(currentUser.getUsername());
  82. role.setDateCreate(new Date());
  83. role.setStatus(1);
  84. int insert = this.roleMapper.insert(role);
  85. roleRequestDto.getRole().setId(role.getId());
  86. configDataPermission(roleRequestDto);
  87. return insert;
  88. }
  89. /**
  90. * 批量新增
  91. *
  92. * @param roles 实例对象的集合
  93. * @return 生效的条数
  94. */
  95. @Override
  96. public int batchInsert(List<Role> roles) {
  97. return this.roleMapper.batchInsert(roles);
  98. }
  99. /**
  100. * 修改数据
  101. *
  102. * @param roleRequestDto 实例对象
  103. * @return 实例对象
  104. */
  105. @Override
  106. @Transactional
  107. public int update(RoleRequestDto roleRequestDto) {
  108. Role role=roleRequestDto.getRole();
  109. //將禁用的角色放入redis,作为登出判断
  110. if(role.getRoleState()==0){
  111. String roleKey="disableRole:"+role.getId();
  112. redisUtil.setExpire(roleKey.getBytes(), ByteArrayUtils.objectToBytes("1").get(), 60*60*24);//15分钟过期
  113. } if(role.getRoleState()==1){
  114. String roleKey="disableRole:"+role.getId();
  115. redisUtil.del(roleKey.getBytes());
  116. }
  117. LoginUser currentUser = UserUtil.getCurrentUser();
  118. role.setUpdateBy(currentUser.getUsername());
  119. configDataPermission(roleRequestDto);
  120. return this.roleMapper.update(role);
  121. }
  122. private void configDataPermission(RoleRequestDto roleRequestDto){
  123. if(roleRequestDto.getRole().getPermissionType()==5){
  124. Integer roleId=roleRequestDto.getRole().getId();
  125. roleOrgMapper.deleteOrgRole(roleId);
  126. List<Integer> orgIds = roleRequestDto.getIds();
  127. List<RoleOrg>roleOrgs=new ArrayList<>();
  128. orgIds.forEach(id->{
  129. RoleOrg roleOrg = new RoleOrg();
  130. roleOrg.setRoleId(roleId);
  131. roleOrg.setOrgId(id);
  132. roleOrg.setStatus(0);
  133. roleOrgs.add(roleOrg);
  134. });
  135. roleOrgMapper.batchInsert(roleOrgs);
  136. }
  137. }
  138. /**
  139. * 通过主键删除数据
  140. *
  141. * @param id 主键
  142. * @return 是否成功
  143. */
  144. @Override
  145. public int deleteById(Integer id) {
  146. return this.roleMapper.deleteById(id);
  147. }
  148. @Override
  149. public List<String> deleteAll(List<Integer> ids) {
  150. List<String>fail=new ArrayList<>();
  151. ids.forEach(id->{
  152. Role role=new Role();
  153. role.setId(id);
  154. Role roleUser = roleMapper.findRoleUser(role);
  155. if (roleUser==null){
  156. role.setStatus(0);
  157. roleMapper.update(role);
  158. //删除用户与角色的关系
  159. roleMapper.deleteRoleUser(role);
  160. //删除用户与菜单关系
  161. // roleMapper.deleteRoleMenu(role);
  162. }else {
  163. fail.add(roleUser.getRoleName());
  164. }
  165. });
  166. return fail;
  167. }
  168. /**
  169. * 查询总数据数
  170. *
  171. * @return 数据总数
  172. */
  173. @Override
  174. public int count() {
  175. return this.roleMapper.count();
  176. }
  177. /**
  178. * 分页查询
  179. *
  180. * @return 对象列表
  181. */
  182. @Override
  183. public IPage<RoleDto> selectPage(Role role, IPage<RoleDto> page) {
  184. LoginUser currentUser = UserUtil.getCurrentUser();
  185. role.setTenantId(currentUser.getTenantId());
  186. return this.roleMapper.selectPage(page, role);
  187. }
  188. @Override
  189. public IPage<UserEntity> findUsersByRole(Role role, IPage<UserEntity> iPage) {
  190. return roleMapper.findUsersByRole(iPage,role);
  191. }
  192. @Override
  193. @Transactional
  194. public int updateRoleMenuRelations(RoleRequestDto dto) {
  195. Integer roleId =dto.getRole().getId();
  196. List<Integer> menuIds = dto.getIds();
  197. List<RoleMenu>menus=new ArrayList<>();
  198. roleMapper.deleteRoleMenu(dto.getRole());
  199. menuIds.forEach(id->{
  200. RoleMenu roleMenu=new RoleMenu();
  201. roleMenu.setRoleId(roleId);
  202. roleMenu.setMenuId(id);
  203. roleMenu.setStatus(1);
  204. menus.add(roleMenu);
  205. });
  206. if(menus.size()>0){
  207. roleMenuMapper.batchInsert(menus);
  208. }
  209. return 0;
  210. }
  211. @Override
  212. public List<RoleOrg> getRoleOrgs(RoleOrg roleOrg) {
  213. return roleOrgMapper.selectList(roleOrg);
  214. }
  215. @Override
  216. public Role getRoleMenuByRoleId(Integer id) {
  217. Role role = roleMapper.selectById(id);
  218. RoleMenu roleMenu = new RoleMenu();
  219. roleMenu.setRoleId(id);
  220. roleMenu.setStatus(1);
  221. List<RoleMenu> roleMenus = roleMenuMapper.selectList(roleMenu);
  222. List<Long> menuIds = new ArrayList<>();
  223. for (RoleMenu item : roleMenus)
  224. {
  225. menuIds.add(Long.valueOf(item.getMenuId()));
  226. }
  227. role.setMenuIds(menuIds);
  228. return role;
  229. }
  230. }