|
|
@@ -1,26 +1,11 @@
|
|
|
package com.uas.platform.b2b.service.impl;
|
|
|
|
|
|
import com.uas.message.mail.service.MailService;
|
|
|
-import com.uas.platform.b2b.dao.DistributeDao;
|
|
|
-import com.uas.platform.b2b.dao.EnterpriseDao;
|
|
|
-import com.uas.platform.b2b.dao.RoleDao;
|
|
|
-import com.uas.platform.b2b.dao.UserDao;
|
|
|
-import com.uas.platform.b2b.dao.VendorDao;
|
|
|
-import com.uas.platform.b2b.model.Distribute;
|
|
|
-import com.uas.platform.b2b.model.Enterprise;
|
|
|
-import com.uas.platform.b2b.model.Role;
|
|
|
-import com.uas.platform.b2b.model.SearchFilter;
|
|
|
-import com.uas.platform.b2b.model.User;
|
|
|
-import com.uas.platform.b2b.model.UserInfo;
|
|
|
-import com.uas.platform.b2b.model.Vendor;
|
|
|
+import com.uas.platform.b2b.dao.*;
|
|
|
+import com.uas.platform.b2b.model.*;
|
|
|
import com.uas.platform.b2b.service.UserService;
|
|
|
import com.uas.platform.b2b.service.VendorService;
|
|
|
-import com.uas.platform.b2b.support.MessageConf;
|
|
|
-import com.uas.platform.b2b.support.SPageUtils;
|
|
|
-import com.uas.platform.b2b.support.SendMailService;
|
|
|
-import com.uas.platform.b2b.support.SystemSession;
|
|
|
-import com.uas.platform.b2b.support.TokenService;
|
|
|
-import com.uas.platform.b2b.support.UsageBufferedLogger;
|
|
|
+import com.uas.platform.b2b.support.*;
|
|
|
import com.uas.platform.core.exception.IllegalOperatorException;
|
|
|
import com.uas.platform.core.exception.SystemException;
|
|
|
import com.uas.platform.core.logging.BufferedLoggerManager;
|
|
|
@@ -41,14 +26,7 @@ import org.springframework.util.StringUtils;
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.HashSet;
|
|
|
-import java.util.Iterator;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Set;
|
|
|
+import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* @author US50
|
|
|
@@ -852,34 +830,63 @@ public class UserServiceImpl implements UserService {
|
|
|
public boolean addUserToVendor(Long custUU, List<User> users) {
|
|
|
List<Vendor> vendors = vendorDao.findByMyEnUUAndVendUU(custUU, SystemSession.getUser().getEnterprise().getUu());
|
|
|
if (!CollectionUtils.isEmpty(users)) {
|
|
|
+ List<Distribute> saveList = new ArrayList<>();
|
|
|
for (User u : users) {
|
|
|
- Distribute distribute = new Distribute();
|
|
|
- List<Distribute> butes = distributeDao.findByUserUUAndVendorId(u.getUserUU(), vendors.get(0).getId());
|
|
|
- if (u.getDistribute()) {
|
|
|
- if (CollectionUtils.isEmpty(butes)) {
|
|
|
- distribute.setUserUU(u.getUserUU());
|
|
|
- distribute.setVendorId(vendors.get(0).getId());
|
|
|
- distribute.setLeaderUU(SystemSession.getUser().getUserUU());
|
|
|
- distributeDao.save(distribute);
|
|
|
- }
|
|
|
- } else {
|
|
|
- if (!CollectionUtils.isEmpty(butes)) {
|
|
|
- List<Distribute> deleteList = new ArrayList<>();
|
|
|
- // 删除时,同时删除其绑定权限的其他用户
|
|
|
- List<Distribute> distributes = distributeDao.findByVendorIdAndLeaderUU(vendors.get(0).getId(), u.getUserUU());
|
|
|
- if (!CollectionUtils.isEmpty(distributes)) {
|
|
|
- deleteList.addAll(distributes);
|
|
|
- }
|
|
|
- deleteList.add(butes.get(0));
|
|
|
- distributeDao.delete(deleteList);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ List<Distribute> deleteList = new ArrayList<>();
|
|
|
+ if (null != u.getUserUU()) {
|
|
|
+ Distribute distribute = new Distribute();
|
|
|
+ List<Distribute> butes = distributeDao.findByUserUUAndVendorId(u.getUserUU(), vendors.get(0).getId());
|
|
|
+ if (u.getDistribute()) {
|
|
|
+ if (CollectionUtils.isEmpty(butes)) {
|
|
|
+ distribute.setUserUU(u.getUserUU());
|
|
|
+ distribute.setVendorId(vendors.get(0).getId());
|
|
|
+ distribute.setLeaderUU(SystemSession.getUser().getUserUU());
|
|
|
+ saveList.add(distribute);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 删除当前用户的权限子节点用户
|
|
|
+ if (!CollectionUtils.isEmpty(butes)) {
|
|
|
+ // 当前用户
|
|
|
+ deleteList.add(butes.get(0));
|
|
|
+ Long vendorId = vendors.get(0).getId();
|
|
|
+ Long userUU = u.getUserUU();
|
|
|
+ if (null != butes.get(0).getIsTransfer() && 1 == butes.get(0).getIsTransfer()) {
|
|
|
+ deleteList = deleteChildrenDistributes(vendorId, userUU, deleteList);
|
|
|
+ }
|
|
|
+ // 防止出现作为参数的用户之间存在权限父子节点关系,导致重复查询,所以每次递归完成,执行一次删除
|
|
|
+ distributeDao.delete(deleteList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ distributeDao.save(saveList);
|
|
|
return true;
|
|
|
}
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 删除用户的所有关联节点
|
|
|
+ * @param vendorId 供应商关系id
|
|
|
+ * @param userUU 用户UU
|
|
|
+ * @param deleteList 删除idList
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<Distribute> deleteChildrenDistributes(Long vendorId, Long userUU, List<Distribute> deleteList) {
|
|
|
+ // 删除时,同时删除被其分配权限的其他用户
|
|
|
+ List<Distribute> distributes = distributeDao.findByVendorIdAndLeaderUU(vendorId, userUU);
|
|
|
+ if (!CollectionUtils.isEmpty(distributes)) {
|
|
|
+ deleteList.addAll(distributes);
|
|
|
+ // 被删除用户拥有转移权限时,继续删除其子节点
|
|
|
+ for (Distribute distribute : distributes) {
|
|
|
+ if (null != distribute.getIsTransfer() && 1 == distribute.getIsTransfer()) {
|
|
|
+ return deleteChildrenDistributes(vendorId, distribute.getUserUU(), deleteList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return deleteList;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public boolean transferUserToVendor(Long custUU, List<User> users) {
|
|
|
List<Vendor> vendors = vendorDao.findByMyEnUUAndVendUU(custUU, SystemSession.getUser().getEnterprise().getUu());
|