mirror of
https://github.com/PlayEdu/PlayEdu
synced 2025-06-28 16:22:45 +08:00
优化学员导入
This commit is contained in:
parent
feed55eda3
commit
003a243ced
@ -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);
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -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 = "请导入数据")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user