|
@@ -212,6 +212,13 @@ public class AdminUserLogic {
|
|
|
&& curLoginAmin.getUserName().equals("admin")) {
|
|
|
throw new RemoteServiceException("不允许修改账号");
|
|
|
}
|
|
|
+
|
|
|
+ if (curLoginAmin.getType() == 0 && adminUser.getType() != 0) {
|
|
|
+ if (StringUtils.isBlank(adminUser.getCompanyId()) || StringUtils.isBlank(adminUser.getCompanyName()) ) {
|
|
|
+ throw new RemoteServiceException("管理员创建“非平台账号”账号,必须指定所属公司");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
// 检查账号类型
|
|
|
if (curLoginAmin.getType() == 2 || curLoginAmin.getType() == 4) {
|
|
|
// 如果创建人账号是商家, 所建账号为“商家类型”
|
|
@@ -225,6 +232,8 @@ public class AdminUserLogic {
|
|
|
if (curLoginAmin.getType() == 4 && !adminUser.getType().equals(curLoginAmin.getType())) {
|
|
|
throw new RemoteServiceException("操作者账号类型为“商家账号”, 只能操作选择“商家账号”");
|
|
|
}
|
|
|
+ adminUser.setCompanyId(curLoginAmin.getCompanyId());
|
|
|
+ adminUser.setCompanyName(curLoginAmin.getCompanyName());
|
|
|
} else if (curLoginAmin.getType() == 1 || curLoginAmin.getType() == 3) {
|
|
|
// 如果创建人账号是商户, 所建账号为“商户类型”或“商家类型”
|
|
|
if (adminUser.getType() == 0) {
|
|
@@ -234,7 +243,10 @@ public class AdminUserLogic {
|
|
|
if (CollectionUtil.isEmpty(adminUser.getDeptList()) && CollectionUtil.isEmpty(adminUser.getPermissions())) {
|
|
|
throw new RemoteServiceException("账号类型为“商户账号”, 请选择至少1个部门或者1个商家");
|
|
|
}
|
|
|
+ adminUser.setCompanyId(curLoginAmin.getCompanyId());
|
|
|
+ adminUser.setCompanyName(curLoginAmin.getCompanyName());
|
|
|
}
|
|
|
+
|
|
|
// 检查角色
|
|
|
AdminRole addUserRole;
|
|
|
if (StringUtils.isEmpty(adminUser.getRoleId()) ||
|
|
@@ -352,6 +364,8 @@ public class AdminUserLogic {
|
|
|
.eq(AdminUserPermissionsRela::getAdminUserId, adminUser.getAdminUserId())
|
|
|
.list();
|
|
|
|
|
|
+ Set<String> deptIdList = new HashSet<>();
|
|
|
+
|
|
|
// 商家id集合
|
|
|
Set<String> websitIdList = permissionsRelaList.stream()
|
|
|
.filter(v -> !v.getIsDept())
|
|
@@ -374,18 +388,32 @@ public class AdminUserLogic {
|
|
|
.map(AdminDeptWebsit::getWebsitId)
|
|
|
.collect(Collectors.toList());
|
|
|
websitIdList.addAll(websitIds);
|
|
|
+
|
|
|
+ // 遍历部门递归找出子部门
|
|
|
+ this.querySubDeptId(deptId, deptIdList);
|
|
|
+ deptIdList.add(deptId);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 根据商家id集合查找有关联的账号
|
|
|
- final List<AdminUserPermissionsRela> adminUserPermissionsRelaList = adminUserPermissionsRelaService.lambdaQuery()
|
|
|
+ List<AdminUserPermissionsRela> adminUserPermissionsRelaList = adminUserPermissionsRelaService.lambdaQuery()
|
|
|
.select(AdminUserPermissionsRela::getAdminUserId)
|
|
|
.in(AdminUserPermissionsRela::getAdminUserPermissionsId, websitIdList)
|
|
|
.groupBy(AdminUserPermissionsRela::getAdminUserId)
|
|
|
.list();
|
|
|
|
|
|
+ if (CollectionUtil.isNotEmpty(deptIdList)) {
|
|
|
+ final List<AdminUserPermissionsRela> relaDeptList = adminUserPermissionsRelaService.lambdaQuery()
|
|
|
+ .select(AdminUserPermissionsRela::getAdminUserId)
|
|
|
+ .in(AdminUserPermissionsRela::getAdminUserPermissionsId, deptIdList)
|
|
|
+ .groupBy(AdminUserPermissionsRela::getAdminUserId)
|
|
|
+ .list();
|
|
|
+ adminUserPermissionsRelaList.addAll(relaDeptList);
|
|
|
+ }
|
|
|
+
|
|
|
List<String> queryAdminUserIdList = adminUserPermissionsRelaList.stream()
|
|
|
.map(AdminUserPermissionsRela::getAdminUserId)
|
|
|
+ .distinct()
|
|
|
// .filter(v -> !v.equals(adminUser.getAdminUserId()))
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
@@ -426,6 +454,23 @@ public class AdminUserLogic {
|
|
|
adminUserIdList.addAll(queryAdminUserIdList);
|
|
|
}
|
|
|
|
|
|
+ private void querySubDeptId(String deptId, Set<String> deptIdList) {
|
|
|
+ final List<AdminDept> deptList = adminDeptService.lambdaQuery()
|
|
|
+ .select(AdminDept::getAdminDeptId)
|
|
|
+ .eq(AdminDept::getPId, deptId)
|
|
|
+ .list();
|
|
|
+
|
|
|
+ if (CollectionUtil.isEmpty(deptIdList)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ for (AdminDept adminDept : deptList) {
|
|
|
+ this.querySubDeptId(adminDept.getAdminDeptId(), deptIdList);
|
|
|
+ }
|
|
|
+
|
|
|
+ deptIdList.addAll(deptList.stream().map(AdminDept::getAdminDeptId).collect(Collectors.toSet()));
|
|
|
+ }
|
|
|
+
|
|
|
private void clearNotCanSeeAdminUserId(Map<Integer, List<AdminUser>> userTypeMap, int type, List<String> queryAdminUserIdList) {
|
|
|
final List<String> adminUsers = userTypeMap.get(type).stream().map(AdminUser::getAdminUserId).collect(Collectors.toList());
|
|
|
final List<String> userIdList = queryAdminUserIdList.stream()
|