mirror of
https://github.com/PlayEdu/PlayEdu
synced 2025-06-28 08:17:30 +08:00
优化学员导入
This commit is contained in:
parent
feed55eda3
commit
003a243ced
@ -17,154 +17,223 @@ import java.util.*;
|
||||
|
||||
/**
|
||||
* @Author 杭州白书科技有限公司
|
||||
*
|
||||
* @create 2023/2/20 14:31
|
||||
*/
|
||||
@Component
|
||||
public class AdminPermissionCheck implements ApplicationRunner {
|
||||
|
||||
private final Map<String, Map<String, AdminPermission[]>> permissions = new HashMap<>() {
|
||||
{
|
||||
put(BPermissionConstant.TYPE_ACTION, new HashMap<>() {
|
||||
private final Map<String, Map<String, AdminPermission[]>> 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<AdminPermission> 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);
|
||||
|
@ -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<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, String[]> depMap = new HashMap<>();
|
||||
HashMap<String, Integer[]> depMap = new HashMap<>();
|
||||
List<String> emails = new ArrayList<>();
|
||||
List<User> 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<UserDepartment> 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);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -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 = "请导入数据")
|
||||
|
Loading…
x
Reference in New Issue
Block a user