b5e510daca4bd9806100d1d304951da86455aa7d.svn-base 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package org.jeecg.modules.system.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import org.jeecg.common.util.oConvertUtils;
  4. import org.jeecg.modules.system.entity.SysDepartRole;
  5. import org.jeecg.modules.system.entity.SysDepartRoleUser;
  6. import org.jeecg.modules.system.mapper.SysDepartRoleMapper;
  7. import org.jeecg.modules.system.mapper.SysDepartRoleUserMapper;
  8. import org.jeecg.modules.system.service.ISysDepartRoleUserService;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.stereotype.Service;
  11. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  12. import org.springframework.transaction.annotation.Transactional;
  13. import java.util.*;
  14. import java.util.stream.Collectors;
  15. /**
  16. * @Description: 部门角色人员信息
  17. * @Author: jeecg-boot
  18. * @Date: 2020-02-13
  19. * @Version: V1.0
  20. */
  21. @Service
  22. public class SysDepartRoleUserServiceImpl extends ServiceImpl<SysDepartRoleUserMapper, SysDepartRoleUser> implements ISysDepartRoleUserService {
  23. @Autowired
  24. private SysDepartRoleMapper sysDepartRoleMapper;
  25. @Override
  26. public void deptRoleUserAdd(String userId, String newRoleId, String oldRoleId) {
  27. List<String> add = getDiff(oldRoleId,newRoleId);
  28. if(add!=null && add.size()>0) {
  29. List<SysDepartRoleUser> list = new ArrayList<>();
  30. for (String roleId : add) {
  31. if(oConvertUtils.isNotEmpty(roleId)) {
  32. SysDepartRoleUser rolepms = new SysDepartRoleUser(userId, roleId);
  33. list.add(rolepms);
  34. }
  35. }
  36. this.saveBatch(list);
  37. }
  38. List<String> remove = getDiff(newRoleId,oldRoleId);
  39. if(remove!=null && remove.size()>0) {
  40. for (String roleId : remove) {
  41. this.remove(new QueryWrapper<SysDepartRoleUser>().lambda().eq(SysDepartRoleUser::getUserId, userId).eq(SysDepartRoleUser::getDroleId, roleId));
  42. }
  43. }
  44. }
  45. @Override
  46. @Transactional(rollbackFor = Exception.class)
  47. public void removeDeptRoleUser(List<String> userIds, String depId) {
  48. for(String userId : userIds){
  49. List<SysDepartRole> sysDepartRoleList = sysDepartRoleMapper.selectList(new QueryWrapper<SysDepartRole>().eq("depart_id",depId));
  50. List<String> roleIds = sysDepartRoleList.stream().map(SysDepartRole::getId).collect(Collectors.toList());
  51. if(roleIds != null && roleIds.size()>0){
  52. QueryWrapper<SysDepartRoleUser> query = new QueryWrapper<>();
  53. query.eq("user_id",userId).in("drole_id",roleIds);
  54. this.remove(query);
  55. }
  56. }
  57. }
  58. /**
  59. * 从diff中找出main中没有的元素
  60. * @param main
  61. * @param diff
  62. * @return
  63. */
  64. private List<String> getDiff(String main, String diff){
  65. if(oConvertUtils.isEmpty(diff)) {
  66. return null;
  67. }
  68. if(oConvertUtils.isEmpty(main)) {
  69. return Arrays.asList(diff.split(","));
  70. }
  71. String[] mainArr = main.split(",");
  72. String[] diffArr = diff.split(",");
  73. Map<String, Integer> map = new HashMap<>();
  74. for (String string : mainArr) {
  75. map.put(string, 1);
  76. }
  77. List<String> res = new ArrayList<String>();
  78. for (String key : diffArr) {
  79. if(oConvertUtils.isNotEmpty(key) && !map.containsKey(key)) {
  80. res.add(key);
  81. }
  82. }
  83. return res;
  84. }
  85. }