Browse Source

进行权限转移时判断该用户是否是当前用户,如果不是,去掉当前用户的转移状态

hejq 7 years ago
parent
commit
1f62ab9529
1 changed files with 16 additions and 11 deletions
  1. 16 11
      src/main/java/com/uas/platform/b2b/service/impl/VendorsServiceImpl.java

+ 16 - 11
src/main/java/com/uas/platform/b2b/service/impl/VendorsServiceImpl.java

@@ -575,7 +575,6 @@ public class VendorsServiceImpl implements VendorService {
         if (!CollectionUtils.isEmpty(users)) {
             List<VendorDistribute> saveList = new ArrayList<>();
             for (User u : users) {
-                List<VendorDistribute> deleteList = new ArrayList<>();
                 if (null != u.getUserUU()) {
                     VendorDistribute distribute = new VendorDistribute();
                     List<VendorDistribute> distributes = vendorDistributeDao.findByUserUUAndVendorId(u.getUserUU(), vendor.getId());
@@ -592,18 +591,22 @@ public class VendorsServiceImpl implements VendorService {
                             distribute.setIsTransfer(Constant.YES);
                             saveList.add(distribute);
                         }
+                        // 进行权限转移时判断该用户是否是当前用户,如果不是,去掉当前用户的转移状态
+                        if (!Objects.equals(u.getUserUU(), SystemSession.getUser().getUserUU())) {
+                            List<VendorDistribute> currentDistributes = vendorDistributeDao.findByUserUUAndVendorId(u.getUserUU(), vendor.getId());
+                            if (!CollectionUtil.isEmpty(currentDistributes)) {
+                                distribute = distributes.get(0);
+                                distribute.setIsTransfer(Constant.NO);
+                                saveList.add(distribute);
+                            }
+                        }
                     } else {
                         // 删除当前用户的权限子节点用户
                         if (!CollectionUtils.isEmpty(distributes)) {
-                            // 当前用户
-                            deleteList.add(distributes.get(0));
-                            Long vendorId = vendor.getId();
-                            Long userUU = u.getUserUU();
-                            if (null != distributes.get(0).getIsTransfer() && 1 == distributes.get(0).getIsTransfer()) {
-                                deleteList = deleteChildrenDistributes(vendorId, userUU, deleteList);
-                            }
-                            // 防止出现作为参数的用户之间存在权限父子节点关系,导致重复查询,所以每次递归完成,执行一次删除
-                            vendorDistributeDao.delete(deleteList);
+                            distribute = distributes.get(0);
+                            distribute.setLeaderUU(SystemSession.getUser().getUserUU());
+                            distribute.setIsTransfer(Constant.NO);
+                            saveList.add(distribute);
                         }
                     }
                 }
@@ -653,12 +656,14 @@ public class VendorsServiceImpl implements VendorService {
     private List<VendorDistribute> deleteChildrenDistributes(Long vendorId, Long userUU, List<VendorDistribute> deleteList) {
         // 删除时,同时删除被其分配权限的其他用户
         List<VendorDistribute> distributes = vendorDistributeDao.findByVendorIdAndLeaderUU(vendorId, userUU);
+        List<VendorDistribute> vendorDistributes = new ArrayList<>();
         if (!CollectionUtils.isEmpty(distributes)) {
             deleteList.addAll(distributes);
             // 被删除用户拥有转移权限时,继续删除其子节点
             for (VendorDistribute distribute : distributes) {
                 if (null != distribute.getIsTransfer() && 1 == distribute.getIsTransfer()) {
-                    return deleteChildrenDistributes(vendorId, distribute.getUserUU(), deleteList);
+                    distribute.setIsTransfer(Constant.NO);
+                    vendorDistributes.add(distribute);
                 }
             }
         }