优化学员导入

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(
put("管理员", new AdminPermission[]{new AdminPermission() { BPermissionConstant.TYPE_ACTION,
{ new HashMap<>() {
setSort(0); {
setName("列表"); // 管理员
setSlug(BPermissionConstant.ADMIN_USER_INDEX); put(
} "管理员",
}, new AdminPermission() { new AdminPermission[] {
{ new AdminPermission() {
setSort(10); {
setName("新增|编辑|删除"); setSort(0);
setSlug(BPermissionConstant.ADMIN_USER_CUD); setName("列表");
} setSlug(
},}); BPermissionConstant
// 管理员角色 .ADMIN_USER_INDEX);
put("管理员角色", new AdminPermission[]{new AdminPermission() { }
{ },
setSort(0); new AdminPermission() {
setName("新增|编辑|删除"); {
setSlug(BPermissionConstant.ADMIN_ROLE); setSort(10);
} setName("新增|编辑|删除");
},}); setSlug(BPermissionConstant.ADMIN_USER_CUD);
// 部门 }
put("部门", new AdminPermission[]{new AdminPermission() { },
{ });
setSort(0); // 管理员角色
setName("新增|编辑|删除"); put(
setSlug(BPermissionConstant.DEPARTMENT_CUD); "管理员角色",
} new AdminPermission[] {
},}); new AdminPermission() {
// 资源分类 {
put("资源分类", new AdminPermission[]{new AdminPermission() { setSort(0);
{ setName("新增|编辑|删除");
setSort(0); setSlug(BPermissionConstant.ADMIN_ROLE);
setName("新增|编辑|删除"); }
setSlug(BPermissionConstant.RESOURCE_CATEGORY); },
} });
},}); // 部门
// 资源 put(
put("资源", new AdminPermission[]{new AdminPermission() { "部门",
{ new AdminPermission[] {
setSort(0); new AdminPermission() {
setName("删除"); {
setSlug(BPermissionConstant.RESOURCE_DESTROY); setSort(0);
} setName("新增|编辑|删除");
},}); setSlug(BPermissionConstant.DEPARTMENT_CUD);
// 学员 }
put("学员", new AdminPermission[]{new AdminPermission() { },
{ });
setSort(0); // 资源分类
setName("列表"); put(
setSlug(BPermissionConstant.USER_INDEX); "资源分类",
} new AdminPermission[] {
}, new AdminPermission() { new AdminPermission() {
{ {
setSort(10); setSort(0);
setName("新增"); setName("新增|编辑|删除");
setSlug(BPermissionConstant.USER_STORE); setSlug(
} BPermissionConstant
}, new AdminPermission() { .RESOURCE_CATEGORY);
{ }
setSort(20); },
setName("编辑"); });
setSlug(BPermissionConstant.USER_UPDATE); // 资源
} put(
}, new AdminPermission() { "资源",
{ new AdminPermission[] {
setSort(30); new AdminPermission() {
setName("删除"); {
setSlug(BPermissionConstant.USER_DESTROY); setSort(0);
} setName("删除");
},}); setSlug(
// 线上课 BPermissionConstant
put("线上课", new AdminPermission[]{new AdminPermission() { .RESOURCE_DESTROY);
{ }
setSort(0); },
setName("新增|编辑|删除"); });
setSlug(BPermissionConstant.COURSE); // 学员
} put(
}, new AdminPermission() { "学员",
{ new AdminPermission[] {
setSort(10); new AdminPermission() {
setName("学员学习记录-列表"); {
setSlug(BPermissionConstant.COURSE_USER); setSort(0);
} setName("列表");
}, new AdminPermission() { setSlug(BPermissionConstant.USER_INDEX);
{ }
setSort(20); },
setName("学员学习记录-删除"); new AdminPermission() {
setSlug(BPermissionConstant.COURSE_USER_DESTROY); {
} setSort(10);
},}); setName("新增");
// 其它 setSlug(BPermissionConstant.USER_STORE);
put("其它", new AdminPermission[]{new AdminPermission() { }
{ },
setSort(0); new AdminPermission() {
setName("修改登录密码"); {
setSlug(BPermissionConstant.PASSWORD_CHANGE); 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 @Autowired private AdminPermissionService permissionService;
private AdminPermissionService permissionService;
@Override @Override
public void run(ApplicationArguments args) throws Exception { public void run(ApplicationArguments args) throws Exception {
@ -172,29 +241,32 @@ 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) -> {
for (int i = 0; i < item.length; i++) { group.forEach(
AdminPermission permissionItem = item[i]; (groupNameValue, item) -> {
for (int i = 0; i < item.length; i++) {
AdminPermission permissionItem = item[i];
if (slugs.get(permissionItem.getSlug()) != null) { if (slugs.get(permissionItem.getSlug()) != null) {
continue; continue;
} }
// 不存在 // 不存在
list.add(new AdminPermission() { list.add(
{ new AdminPermission() {
setType(typeValue); {
setGroupName(groupNameValue); setType(typeValue);
setSort(permissionItem.getSort()); setGroupName(groupNameValue);
setName(permissionItem.getName()); setSort(permissionItem.getSort());
setSlug(permissionItem.getSlug()); setName(permissionItem.getName());
setCreatedAt(now); setSlug(permissionItem.getSlug());
} setCreatedAt(now);
}); }
} });
}); }
}); });
});
if (list.size() > 0) { if (list.size() > 0) {
permissionService.saveBatch(list); permissionService.saveBatch(list);

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 = "请导入数据")