优化学员导入

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

View File

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