优化学员导入

This commit is contained in:
none 2023-04-09 14:40:58 +08:00
parent feed55eda3
commit 003a243ced
3 changed files with 278 additions and 175 deletions

View File

@ -17,154 +17,223 @@ import java.util.*;
/** /**
* @Author 杭州白书科技有限公司 * @Author 杭州白书科技有限公司
*
* @create 2023/2/20 14:31 * @create 2023/2/20 14:31
*/ */
@Component @Component
public class AdminPermissionCheck implements ApplicationRunner { public class AdminPermissionCheck implements ApplicationRunner {
private final Map<String, Map<String, AdminPermission[]>> permissions = new HashMap<>() { private final Map<String, Map<String, AdminPermission[]>> permissions =
new HashMap<>() {
{ {
put(BPermissionConstant.TYPE_ACTION, new HashMap<>() { put(
BPermissionConstant.TYPE_ACTION,
new HashMap<>() {
{ {
// 管理员 // 管理员
put("管理员", new AdminPermission[]{new AdminPermission() { put(
"管理员",
new AdminPermission[] {
new AdminPermission() {
{ {
setSort(0); setSort(0);
setName("列表"); setName("列表");
setSlug(BPermissionConstant.ADMIN_USER_INDEX); setSlug(
BPermissionConstant
.ADMIN_USER_INDEX);
} }
}, new AdminPermission() { },
new AdminPermission() {
{ {
setSort(10); setSort(10);
setName("新增|编辑|删除"); setName("新增|编辑|删除");
setSlug(BPermissionConstant.ADMIN_USER_CUD); setSlug(BPermissionConstant.ADMIN_USER_CUD);
} }
},}); },
});
// 管理员角色 // 管理员角色
put("管理员角色", new AdminPermission[]{new AdminPermission() { put(
"管理员角色",
new AdminPermission[] {
new AdminPermission() {
{ {
setSort(0); setSort(0);
setName("新增|编辑|删除"); setName("新增|编辑|删除");
setSlug(BPermissionConstant.ADMIN_ROLE); setSlug(BPermissionConstant.ADMIN_ROLE);
} }
},}); },
});
// 部门 // 部门
put("部门", new AdminPermission[]{new AdminPermission() { put(
"部门",
new AdminPermission[] {
new AdminPermission() {
{ {
setSort(0); setSort(0);
setName("新增|编辑|删除"); setName("新增|编辑|删除");
setSlug(BPermissionConstant.DEPARTMENT_CUD); setSlug(BPermissionConstant.DEPARTMENT_CUD);
} }
},}); },
});
// 资源分类 // 资源分类
put("资源分类", new AdminPermission[]{new AdminPermission() { put(
"资源分类",
new AdminPermission[] {
new AdminPermission() {
{ {
setSort(0); setSort(0);
setName("新增|编辑|删除"); setName("新增|编辑|删除");
setSlug(BPermissionConstant.RESOURCE_CATEGORY); setSlug(
BPermissionConstant
.RESOURCE_CATEGORY);
} }
},}); },
});
// 资源 // 资源
put("资源", new AdminPermission[]{new AdminPermission() { put(
"资源",
new AdminPermission[] {
new AdminPermission() {
{ {
setSort(0); setSort(0);
setName("删除"); setName("删除");
setSlug(BPermissionConstant.RESOURCE_DESTROY); setSlug(
BPermissionConstant
.RESOURCE_DESTROY);
} }
},}); },
});
// 学员 // 学员
put("学员", new AdminPermission[]{new AdminPermission() { put(
"学员",
new AdminPermission[] {
new AdminPermission() {
{ {
setSort(0); setSort(0);
setName("列表"); setName("列表");
setSlug(BPermissionConstant.USER_INDEX); setSlug(BPermissionConstant.USER_INDEX);
} }
}, new AdminPermission() { },
new AdminPermission() {
{ {
setSort(10); setSort(10);
setName("新增"); setName("新增");
setSlug(BPermissionConstant.USER_STORE); setSlug(BPermissionConstant.USER_STORE);
} }
}, new AdminPermission() { },
new AdminPermission() {
{ {
setSort(20); setSort(20);
setName("编辑"); setName("编辑");
setSlug(BPermissionConstant.USER_UPDATE); setSlug(BPermissionConstant.USER_UPDATE);
} }
}, new AdminPermission() { },
new AdminPermission() {
{ {
setSort(30); setSort(30);
setName("删除"); setName("删除");
setSlug(BPermissionConstant.USER_DESTROY); setSlug(BPermissionConstant.USER_DESTROY);
} }
},}); },
});
// 线上课 // 线上课
put("线上课", new AdminPermission[]{new AdminPermission() { put(
"线上课",
new AdminPermission[] {
new AdminPermission() {
{ {
setSort(0); setSort(0);
setName("新增|编辑|删除"); setName("新增|编辑|删除");
setSlug(BPermissionConstant.COURSE); setSlug(BPermissionConstant.COURSE);
} }
}, new AdminPermission() { },
new AdminPermission() {
{ {
setSort(10); setSort(10);
setName("学员学习记录-列表"); setName("学员学习记录-列表");
setSlug(BPermissionConstant.COURSE_USER); setSlug(BPermissionConstant.COURSE_USER);
} }
}, new AdminPermission() { },
new AdminPermission() {
{ {
setSort(20); setSort(20);
setName("学员学习记录-删除"); setName("学员学习记录-删除");
setSlug(BPermissionConstant.COURSE_USER_DESTROY); setSlug(
BPermissionConstant
.COURSE_USER_DESTROY);
} }
},}); },
});
// 其它 // 其它
put("其它", new AdminPermission[]{new AdminPermission() { put(
"其它",
new AdminPermission[] {
new AdminPermission() {
{ {
setSort(0); setSort(0);
setName("修改登录密码"); setName("修改登录密码");
setSlug(BPermissionConstant.PASSWORD_CHANGE); setSlug(
BPermissionConstant
.PASSWORD_CHANGE);
} }
},}); },
});
} }
}); });
put(BPermissionConstant.TYPE_DATA, new HashMap<>() { put(
BPermissionConstant.TYPE_DATA,
new HashMap<>() {
{ {
// 管理员 // 管理员
put("管理员", new AdminPermission[]{new AdminPermission() { put(
"管理员",
new AdminPermission[] {
new AdminPermission() {
{ {
setSort(0); setSort(0);
setName("邮箱"); setName("邮箱");
setSlug(BPermissionConstant.DATA_ADMIN_EMAIL); setSlug(
BPermissionConstant
.DATA_ADMIN_EMAIL);
} }
},}); },
});
// 学员 // 学员
put("学员", new AdminPermission[]{new AdminPermission() { put(
"学员",
new AdminPermission[] {
new AdminPermission() {
{ {
setSort(0); setSort(0);
setName("邮箱"); setName("邮箱");
setSlug(BPermissionConstant.DATA_USER_EMAIL); setSlug(
BPermissionConstant
.DATA_USER_EMAIL);
} }
}, new AdminPermission() { },
new AdminPermission() {
{ {
setSort(10); setSort(10);
setName("姓名"); setName("姓名");
setSlug(BPermissionConstant.DATA_USER_NAME); setSlug(BPermissionConstant.DATA_USER_NAME);
} }
}, new AdminPermission() { },
new AdminPermission() {
{ {
setSort(20); setSort(20);
setName("身份证号"); setName("身份证号");
setSlug(BPermissionConstant.DATA_USER_ID_CARD); setSlug(
BPermissionConstant
.DATA_USER_ID_CARD);
} }
},}); },
});
} }
}); });
} }
}; };
@Autowired @Autowired private AdminPermissionService permissionService;
private AdminPermissionService permissionService;
@Override @Override
public void run(ApplicationArguments args) throws Exception { public void run(ApplicationArguments args) throws Exception {
@ -172,8 +241,10 @@ public class AdminPermissionCheck implements ApplicationRunner {
List<AdminPermission> list = new ArrayList<>(); List<AdminPermission> list = new ArrayList<>();
Date now = new Date(); Date now = new Date();
permissions.forEach((typeValue, group) -> { permissions.forEach(
group.forEach((groupNameValue, item) -> { (typeValue, group) -> {
group.forEach(
(groupNameValue, item) -> {
for (int i = 0; i < item.length; i++) { for (int i = 0; i < item.length; i++) {
AdminPermission permissionItem = item[i]; AdminPermission permissionItem = item[i];
@ -182,7 +253,8 @@ public class AdminPermissionCheck implements ApplicationRunner {
} }
// 不存在 // 不存在
list.add(new AdminPermission() { list.add(
new AdminPermission() {
{ {
setType(typeValue); setType(typeValue);
setGroupName(groupNameValue); setGroupName(groupNameValue);

View File

@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.*;
import xyz.playedu.api.constant.BPermissionConstant; import xyz.playedu.api.constant.BPermissionConstant;
import xyz.playedu.api.constant.SystemConstant; import xyz.playedu.api.constant.SystemConstant;
import xyz.playedu.api.domain.Department;
import xyz.playedu.api.domain.User; import xyz.playedu.api.domain.User;
import xyz.playedu.api.domain.UserDepartment; import xyz.playedu.api.domain.UserDepartment;
import xyz.playedu.api.event.UserDestroyEvent; import xyz.playedu.api.event.UserDestroyEvent;
@ -31,6 +32,7 @@ import xyz.playedu.api.types.paginate.UserPaginateFilter;
import xyz.playedu.api.util.HelperUtil; import xyz.playedu.api.util.HelperUtil;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
/** /**
* @Author 杭州白书科技有限公司 * @Author 杭州白书科技有限公司
@ -192,14 +194,39 @@ public class UserController {
errorLines.add(new String[] {"错误行", "错误信息"}); // 错误表-表头 errorLines.add(new String[] {"错误行", "错误信息"}); // 错误表-表头
// 读取存在的部门 // 读取存在的部门
List<Integer> depIds = departmentService.allIds(); List<Department> departments = departmentService.all();
Map<Integer, String> depId2Name =
departments.stream()
.collect(Collectors.toMap(Department::getId, Department::getName));
HashMap<String, Integer> 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<String> 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<String, Integer> emailRepeat = new HashMap<>(); HashMap<String, Integer> emailRepeat = new HashMap<>();
HashMap<String, String[]> depMap = new HashMap<>(); HashMap<String, Integer[]> depMap = new HashMap<>();
List<String> emails = new ArrayList<>(); List<String> emails = new ArrayList<>();
List<User> insertUsers = new ArrayList<>(); List<User> insertUsers = new ArrayList<>();
int i = -1; int i = -1;
for (UserImportRequest.UserItem userItem : users) { for (UserImportRequest.UserItem userItem : users) {
i++; // 索引值 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) + "", "未选择部门"}); errorLines.add(new String[] {"" + (i + startLine) + "", "未选择部门"});
} else { } else {
String[] tmpDepIds = userItem.getDepIds().trim().split(","); String[] tmpDepList = userItem.getDeps().trim().split("\\|");
for (int j = 0; j < tmpDepIds.length; j++) { Integer[] tmpDepIds = new Integer[tmpDepList.length];
if (!depIds.contains(Integer.valueOf(tmpDepIds[j]))) { for (int j = 0; j < tmpDepList.length; j++) {
// 获取部门id
Integer tmpDepId = depChainNameMap.get(tmpDepList[j]);
// 判断部门id是否存在
if (tmpDepId == null || tmpDepId == 0) {
errorLines.add( errorLines.add(
new String[] { new String[] {
"" + (i + startLine) + "", "部门id[" + tmpDepIds[j] + "]不存在" "" + (i + startLine) + "", "部门" + tmpDepList[j] + "不存在"
}); });
continue;
} }
tmpDepIds[j] = tmpDepId;
} }
depMap.put(userItem.getEmail(), tmpDepIds); depMap.put(userItem.getEmail(), tmpDepIds);
} }
// 昵称为空检测 // 姓名为空检测
String tmpName = userItem.getName(); String tmpName = userItem.getName();
if (tmpName == null || tmpName.trim().length() == 0) { if (tmpName == null || tmpName.trim().length() == 0) {
errorLines.add(new String[] {"" + (i + startLine) + "", "昵称为空"}); errorLines.add(new String[] {"" + (i + startLine) + "", "昵称为空"});
@ -283,16 +316,16 @@ public class UserController {
// 部门关联 // 部门关联
List<UserDepartment> insertUserDepartments = new ArrayList<>(); List<UserDepartment> insertUserDepartments = new ArrayList<>();
for (User tmpUser : insertUsers) { for (User tmpUser : insertUsers) {
String[] tmpDepIds = depMap.get(tmpUser.getEmail()); Integer[] tmpDepIds = depMap.get(tmpUser.getEmail());
if (tmpDepIds == null) { if (tmpDepIds == null) {
continue; continue;
} }
for (String tmpDepId : tmpDepIds) { for (Integer tmpDepId : tmpDepIds) {
insertUserDepartments.add( insertUserDepartments.add(
new UserDepartment() { new UserDepartment() {
{ {
setUserId(tmpUser.getId()); setUserId(tmpUser.getId());
setDepId(Integer.valueOf(tmpDepId)); setDepId(tmpDepId);
} }
}); });
} }

View File

@ -22,15 +22,13 @@ public class UserImportRequest {
@Data @Data
public static class UserItem { public static class UserItem {
private String deps;
private String email; private String email;
private String name; private String name;
private String password; private String password;
@JsonProperty("id_card") @JsonProperty("id_card")
private String idCard; private String idCard;
@JsonProperty("dep_ids")
private String depIds;
} }
@NotNull(message = "请导入数据") @NotNull(message = "请导入数据")