diff --git a/src/main/java/xyz/playedu/api/checks/AdminPermissionCheck.java b/src/main/java/xyz/playedu/api/checks/AdminPermissionCheck.java index 0b734a8..d325bd2 100644 --- a/src/main/java/xyz/playedu/api/checks/AdminPermissionCheck.java +++ b/src/main/java/xyz/playedu/api/checks/AdminPermissionCheck.java @@ -17,154 +17,223 @@ import java.util.*; /** * @Author 杭州白书科技有限公司 + * * @create 2023/2/20 14:31 */ @Component public class AdminPermissionCheck implements ApplicationRunner { - private final Map> permissions = new HashMap<>() { - { - put(BPermissionConstant.TYPE_ACTION, new HashMap<>() { + private final Map> permissions = + new HashMap<>() { { - // 管理员 - put("管理员", new AdminPermission[]{new AdminPermission() { - { - setSort(0); - setName("列表"); - setSlug(BPermissionConstant.ADMIN_USER_INDEX); - } - }, new AdminPermission() { - { - setSort(10); - setName("新增|编辑|删除"); - setSlug(BPermissionConstant.ADMIN_USER_CUD); - } - },}); - // 管理员角色 - put("管理员角色", new AdminPermission[]{new AdminPermission() { - { - setSort(0); - setName("新增|编辑|删除"); - setSlug(BPermissionConstant.ADMIN_ROLE); - } - },}); - // 部门 - put("部门", new AdminPermission[]{new AdminPermission() { - { - setSort(0); - setName("新增|编辑|删除"); - setSlug(BPermissionConstant.DEPARTMENT_CUD); - } - },}); - // 资源分类 - put("资源分类", new AdminPermission[]{new AdminPermission() { - { - setSort(0); - setName("新增|编辑|删除"); - setSlug(BPermissionConstant.RESOURCE_CATEGORY); - } - },}); - // 资源 - put("资源", new AdminPermission[]{new AdminPermission() { - { - setSort(0); - setName("删除"); - setSlug(BPermissionConstant.RESOURCE_DESTROY); - } - },}); - // 学员 - put("学员", new AdminPermission[]{new AdminPermission() { - { - setSort(0); - setName("列表"); - setSlug(BPermissionConstant.USER_INDEX); - } - }, new AdminPermission() { - { - setSort(10); - setName("新增"); - setSlug(BPermissionConstant.USER_STORE); - } - }, new AdminPermission() { - { - setSort(20); - setName("编辑"); - setSlug(BPermissionConstant.USER_UPDATE); - } - }, new AdminPermission() { - { - setSort(30); - setName("删除"); - setSlug(BPermissionConstant.USER_DESTROY); - } - },}); - // 线上课 - put("线上课", new AdminPermission[]{new AdminPermission() { - { - setSort(0); - setName("新增|编辑|删除"); - setSlug(BPermissionConstant.COURSE); - } - }, new AdminPermission() { - { - setSort(10); - setName("学员学习记录-列表"); - setSlug(BPermissionConstant.COURSE_USER); - } - }, new AdminPermission() { - { - setSort(20); - setName("学员学习记录-删除"); - setSlug(BPermissionConstant.COURSE_USER_DESTROY); - } - },}); - // 其它 - put("其它", new AdminPermission[]{new AdminPermission() { - { - setSort(0); - setName("修改登录密码"); - setSlug(BPermissionConstant.PASSWORD_CHANGE); - } - },}); + put( + BPermissionConstant.TYPE_ACTION, + new HashMap<>() { + { + // 管理员 + put( + "管理员", + new AdminPermission[] { + new AdminPermission() { + { + setSort(0); + setName("列表"); + setSlug( + BPermissionConstant + .ADMIN_USER_INDEX); + } + }, + new AdminPermission() { + { + setSort(10); + setName("新增|编辑|删除"); + setSlug(BPermissionConstant.ADMIN_USER_CUD); + } + }, + }); + // 管理员角色 + put( + "管理员角色", + new AdminPermission[] { + new AdminPermission() { + { + setSort(0); + setName("新增|编辑|删除"); + setSlug(BPermissionConstant.ADMIN_ROLE); + } + }, + }); + // 部门 + put( + "部门", + new AdminPermission[] { + new AdminPermission() { + { + setSort(0); + setName("新增|编辑|删除"); + setSlug(BPermissionConstant.DEPARTMENT_CUD); + } + }, + }); + // 资源分类 + put( + "资源分类", + new AdminPermission[] { + new AdminPermission() { + { + setSort(0); + setName("新增|编辑|删除"); + setSlug( + BPermissionConstant + .RESOURCE_CATEGORY); + } + }, + }); + // 资源 + put( + "资源", + new AdminPermission[] { + new AdminPermission() { + { + setSort(0); + setName("删除"); + setSlug( + BPermissionConstant + .RESOURCE_DESTROY); + } + }, + }); + // 学员 + put( + "学员", + new AdminPermission[] { + new AdminPermission() { + { + setSort(0); + setName("列表"); + setSlug(BPermissionConstant.USER_INDEX); + } + }, + new AdminPermission() { + { + setSort(10); + setName("新增"); + setSlug(BPermissionConstant.USER_STORE); + } + }, + new AdminPermission() { + { + setSort(20); + setName("编辑"); + setSlug(BPermissionConstant.USER_UPDATE); + } + }, + new AdminPermission() { + { + setSort(30); + setName("删除"); + setSlug(BPermissionConstant.USER_DESTROY); + } + }, + }); + // 线上课 + put( + "线上课", + new AdminPermission[] { + new AdminPermission() { + { + setSort(0); + setName("新增|编辑|删除"); + setSlug(BPermissionConstant.COURSE); + } + }, + new AdminPermission() { + { + setSort(10); + setName("学员学习记录-列表"); + setSlug(BPermissionConstant.COURSE_USER); + } + }, + new AdminPermission() { + { + setSort(20); + setName("学员学习记录-删除"); + setSlug( + BPermissionConstant + .COURSE_USER_DESTROY); + } + }, + }); + // 其它 + put( + "其它", + new AdminPermission[] { + new AdminPermission() { + { + setSort(0); + setName("修改登录密码"); + setSlug( + BPermissionConstant + .PASSWORD_CHANGE); + } + }, + }); + } + }); + put( + BPermissionConstant.TYPE_DATA, + new HashMap<>() { + { + // 管理员 + put( + "管理员", + new AdminPermission[] { + new AdminPermission() { + { + setSort(0); + setName("邮箱"); + setSlug( + BPermissionConstant + .DATA_ADMIN_EMAIL); + } + }, + }); + // 学员 + put( + "学员", + new AdminPermission[] { + new AdminPermission() { + { + setSort(0); + setName("邮箱"); + setSlug( + BPermissionConstant + .DATA_USER_EMAIL); + } + }, + new AdminPermission() { + { + setSort(10); + setName("姓名"); + setSlug(BPermissionConstant.DATA_USER_NAME); + } + }, + new AdminPermission() { + { + setSort(20); + setName("身份证号"); + setSlug( + BPermissionConstant + .DATA_USER_ID_CARD); + } + }, + }); + } + }); } - }); - put(BPermissionConstant.TYPE_DATA, new HashMap<>() { - { - // 管理员 - put("管理员", new AdminPermission[]{new AdminPermission() { - { - setSort(0); - setName("邮箱"); - setSlug(BPermissionConstant.DATA_ADMIN_EMAIL); - } - },}); - // 学员 - put("学员", new AdminPermission[]{new AdminPermission() { - { - setSort(0); - setName("邮箱"); - setSlug(BPermissionConstant.DATA_USER_EMAIL); - } - }, new AdminPermission() { - { - setSort(10); - setName("姓名"); - setSlug(BPermissionConstant.DATA_USER_NAME); - } - }, new AdminPermission() { - { - setSort(20); - setName("身份证号"); - setSlug(BPermissionConstant.DATA_USER_ID_CARD); - } - },}); - } - }); - } - }; + }; - @Autowired - private AdminPermissionService permissionService; + @Autowired private AdminPermissionService permissionService; @Override public void run(ApplicationArguments args) throws Exception { @@ -172,29 +241,32 @@ public class AdminPermissionCheck implements ApplicationRunner { List list = new ArrayList<>(); Date now = new Date(); - permissions.forEach((typeValue, group) -> { - group.forEach((groupNameValue, item) -> { - for (int i = 0; i < item.length; i++) { - AdminPermission permissionItem = item[i]; + permissions.forEach( + (typeValue, group) -> { + group.forEach( + (groupNameValue, item) -> { + for (int i = 0; i < item.length; i++) { + AdminPermission permissionItem = item[i]; - if (slugs.get(permissionItem.getSlug()) != null) { - continue; - } + if (slugs.get(permissionItem.getSlug()) != null) { + continue; + } - // 不存在 - list.add(new AdminPermission() { - { - setType(typeValue); - setGroupName(groupNameValue); - setSort(permissionItem.getSort()); - setName(permissionItem.getName()); - setSlug(permissionItem.getSlug()); - setCreatedAt(now); - } - }); - } - }); - }); + // 不存在 + list.add( + new AdminPermission() { + { + setType(typeValue); + setGroupName(groupNameValue); + setSort(permissionItem.getSort()); + setName(permissionItem.getName()); + setSlug(permissionItem.getSlug()); + setCreatedAt(now); + } + }); + } + }); + }); if (list.size() > 0) { permissionService.saveBatch(list); diff --git a/src/main/java/xyz/playedu/api/controller/backend/UserController.java b/src/main/java/xyz/playedu/api/controller/backend/UserController.java index ab621fa..7973a3c 100644 --- a/src/main/java/xyz/playedu/api/controller/backend/UserController.java +++ b/src/main/java/xyz/playedu/api/controller/backend/UserController.java @@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.*; import xyz.playedu.api.constant.BPermissionConstant; import xyz.playedu.api.constant.SystemConstant; +import xyz.playedu.api.domain.Department; import xyz.playedu.api.domain.User; import xyz.playedu.api.domain.UserDepartment; import xyz.playedu.api.event.UserDestroyEvent; @@ -31,6 +32,7 @@ import xyz.playedu.api.types.paginate.UserPaginateFilter; import xyz.playedu.api.util.HelperUtil; import java.util.*; +import java.util.stream.Collectors; /** * @Author 杭州白书科技有限公司 @@ -192,14 +194,39 @@ public class UserController { errorLines.add(new String[] {"错误行", "错误信息"}); // 错误表-表头 // 读取存在的部门 - List depIds = departmentService.allIds(); + List departments = departmentService.all(); + Map depId2Name = + departments.stream() + .collect(Collectors.toMap(Department::getId, Department::getName)); + HashMap depChainNameMap = new HashMap<>(); + for (Department tmpDepItem : departments) { + // 一级部门 + if (tmpDepItem.getParentChain() == null || tmpDepItem.getParentChain().length() == 0) { + depChainNameMap.put(tmpDepItem.getName(), tmpDepItem.getId()); + continue; + } + + // 多级部门 + String[] tmpChainIds = tmpDepItem.getParentChain().split(","); + List tmpChainNames = new ArrayList<>(); + for (int i = 0; i < tmpChainIds.length; i++) { + String tmpName = depId2Name.get(Integer.valueOf(tmpChainIds[i])); + if (tmpName == null) { + continue; + } + tmpChainNames.add(tmpName); + } + tmpChainNames.add(tmpDepItem.getName()); + depChainNameMap.put(String.join("-", tmpChainNames), tmpDepItem.getId()); + } // 邮箱输入重复检测 || 部门存在检测 HashMap emailRepeat = new HashMap<>(); - HashMap depMap = new HashMap<>(); + HashMap depMap = new HashMap<>(); List emails = new ArrayList<>(); List insertUsers = new ArrayList<>(); int i = -1; + for (UserImportRequest.UserItem userItem : users) { i++; // 索引值 @@ -220,22 +247,28 @@ public class UserController { } // 部门数据检测 - if (userItem.getDepIds() == null || userItem.getDepIds().trim().length() == 0) { + if (userItem.getDeps() == null || userItem.getDeps().trim().length() == 0) { errorLines.add(new String[] {"第" + (i + startLine) + "行", "未选择部门"}); } else { - String[] tmpDepIds = userItem.getDepIds().trim().split(","); - for (int j = 0; j < tmpDepIds.length; j++) { - if (!depIds.contains(Integer.valueOf(tmpDepIds[j]))) { + String[] tmpDepList = userItem.getDeps().trim().split("\\|"); + Integer[] tmpDepIds = new Integer[tmpDepList.length]; + for (int j = 0; j < tmpDepList.length; j++) { + // 获取部门id + Integer tmpDepId = depChainNameMap.get(tmpDepList[j]); + // 判断部门id是否存在 + if (tmpDepId == null || tmpDepId == 0) { errorLines.add( new String[] { - "第" + (i + startLine) + "行", "部门id[" + tmpDepIds[j] + "]不存在" + "第" + (i + startLine) + "行", "部门『" + tmpDepList[j] + "』不存在" }); + continue; } + tmpDepIds[j] = tmpDepId; } depMap.put(userItem.getEmail(), tmpDepIds); } - // 昵称为空检测 + // 姓名为空检测 String tmpName = userItem.getName(); if (tmpName == null || tmpName.trim().length() == 0) { errorLines.add(new String[] {"第" + (i + startLine) + "行", "昵称为空"}); @@ -283,16 +316,16 @@ public class UserController { // 部门关联 List insertUserDepartments = new ArrayList<>(); for (User tmpUser : insertUsers) { - String[] tmpDepIds = depMap.get(tmpUser.getEmail()); + Integer[] tmpDepIds = depMap.get(tmpUser.getEmail()); if (tmpDepIds == null) { continue; } - for (String tmpDepId : tmpDepIds) { + for (Integer tmpDepId : tmpDepIds) { insertUserDepartments.add( new UserDepartment() { { setUserId(tmpUser.getId()); - setDepId(Integer.valueOf(tmpDepId)); + setDepId(tmpDepId); } }); } diff --git a/src/main/java/xyz/playedu/api/request/backend/UserImportRequest.java b/src/main/java/xyz/playedu/api/request/backend/UserImportRequest.java index b007de9..865c70f 100644 --- a/src/main/java/xyz/playedu/api/request/backend/UserImportRequest.java +++ b/src/main/java/xyz/playedu/api/request/backend/UserImportRequest.java @@ -22,15 +22,13 @@ public class UserImportRequest { @Data public static class UserItem { + private String deps; private String email; private String name; private String password; @JsonProperty("id_card") private String idCard; - - @JsonProperty("dep_ids") - private String depIds; } @NotNull(message = "请导入数据")