Browse Source

bug
1.教研分析启动时为没有学校管理员的学校自动创建一个学校管理员
2.知学知考导入学生任课教师信息,如果教师在系统用户中已存在则校验用户姓名和excel中的是否一致并报错提示

caozixuan 2 years ago
parent
commit
6e936d019f

+ 5 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/GradeBatchServiceImpl.java

@@ -489,6 +489,11 @@ public class GradeBatchServiceImpl extends ServiceImpl<GradeBatchMapper, GradeBa
             } else {
                 //修改
                 sysUser = sysUserList.get(0);
+                String dbRealName = sysUser.getRealName();
+                if (!dbRealName.equals(key[1])){
+                    throw ExceptionResultEnum.ERROR.exception("导入的excel中,工号为【" + key[0] + "】的用户姓名【" + key[1] +
+                            "】,与系统用户姓名【 + " + dbRealName + "】不一致 请检查excel数据");
+                }
                 sysUser.setRealName(key[1]);
                 sysUser.setEnable(true);
                 sysUser.setOrgId(orgIds.get(0));

+ 9 - 6
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java

@@ -593,15 +593,18 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         SysUserService sysUserService = SpringContextHolder.getBean(SysUserService.class);
         boolean isSuccess = true;
         try {
-            Long schoolId = Objects.nonNull(ServletUtil.getRequestHeaderSchoolIdByNotVaild()) ? Long.valueOf(ServletUtil.getRequestHeaderSchoolIdByNotVaild().toString()) : null;
+            Long schoolId = userSaveParams.getSchoolId();
             if (schoolId == null) {
-                schoolId = userSaveParams.getSchoolId();
+                schoolId = Objects.nonNull(ServletUtil.getRequestHeaderSchoolIdByNotVaild()) ? Long.valueOf(ServletUtil.getRequestHeaderSchoolIdByNotVaild().toString()) : null;
             }
             List<SysUser> requestUserList = this.list(new QueryWrapper<SysUser>().lambda().eq(SysUser::getSchoolId, schoolId).like(SysUser::getLoginName, "admin"));
-            if (requestUserList.size() == 0) {
+            if (requestUserList.size() == 0 && !Objects.equals(userSaveParams.getRealName(), "学校管理员")) {
                 throw ExceptionResultEnum.ERROR.exception("该学校没有内置的学校管理员");
             }
-            SysUser requestUser = requestUserList.get(0);
+            Long requestUserId = 1L;
+            if (requestUserList.size() > 0) {
+                requestUserId = requestUserList.get(0).getId();
+            }
             Gson gson = new Gson();
             userSaveParams.setSchoolId(schoolId);
             SysUser sysUser = gson.fromJson(gson.toJson(userSaveParams), SysUser.class);
@@ -619,7 +622,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
                     throw ExceptionResultEnum.ERROR.exception("用户名已存在");
                 }
 
-                sysUser.insertInfo(requestUser.getId());
+                sysUser.insertInfo(requestUserId);
                 sysUserService.save(sysUser);
                 for (Long roleId : userSaveParams.getRoleIds()) {
                     commonService.addUserRolePrivilege(sysUser, roleId);
@@ -630,7 +633,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
                 Set<Long> dbUserRolesList = sysUserRoleList.stream().map(SysUserRole::getRoleId).collect(Collectors.toSet());
                 int count = (int) dbUserRolesList.stream().filter(userRolesList::contains).count();
                 SysUser dbUser = sysUserService.getById(sysUser.getId());
-                sysUser.updateInfo(requestUser.getId());
+                sysUser.updateInfo(requestUserId);
                 sysUserService.updateById(sysUser);
                 List<SysRole> list = sysUserRoleService.listRoleByUserId(sysUser.getId());
                 boolean containsQuestionTeacher = list.stream().anyMatch(m -> RoleTypeEnum.SCHOOL_ADMIN.equals(m.getType()));

+ 62 - 2
teachcloud-report/src/main/java/com/qmth/teachcloud/report/start/StartRunning.java

@@ -1,13 +1,23 @@
 package com.qmth.teachcloud.report.start;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.qmth.teachcloud.common.bean.params.UserSaveParams;
 import com.qmth.teachcloud.common.contant.SystemConstant;
-import com.qmth.teachcloud.common.service.AuthInfoService;
+import com.qmth.teachcloud.common.entity.*;
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.enums.OrgTypeEnum;
+import com.qmth.teachcloud.common.enums.RoleTypeEnum;
+import com.qmth.teachcloud.common.service.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.boot.CommandLineRunner;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * @Description: 服务启动时初始化运行,哪个微服务模块需要则拿此模版去用
@@ -22,11 +32,61 @@ public class StartRunning implements CommandLineRunner {
 
     @Resource
     AuthInfoService authInfoService;
+    @Resource
+    BasicSchoolService basicSchoolService;
+    @Resource
+    SysRoleService sysRoleService;
+    @Resource
+    SysOrgService sysOrgService;
+    @Resource
+    SysUserService sysUserService;
+    @Resource
+    SysUserRoleService sysUserRoleService;
 
     @Override
-    public void run(String... args) throws Exception {
+    public void run(String... args) throws IllegalAccessException {
         log.info("服务器启动时执行 start");
         authInfoService.appInfoInit();
+
+        // 为没有学校管理员的学校自动创建一个学校管理员
+        List<BasicSchool> basicSchoolList = basicSchoolService.list();
+        SysRole role = sysRoleService.list(new QueryWrapper<SysRole>().lambda().eq(SysRole::getType, RoleTypeEnum.SCHOOL_ADMIN)).get(0);
+        List<Long> roleIds = new ArrayList<>();
+        roleIds.add(role.getId());
+        for (BasicSchool basicSchool : basicSchoolList) {
+            Long schoolId = basicSchool.getId();
+            SysOrg schoolOrg = sysOrgService.getOne(new QueryWrapper<SysOrg>().lambda()
+                    .eq(SysOrg::getSchoolId, schoolId)
+                    .eq(SysOrg::getType, OrgTypeEnum.SCHOOL));
+            if (Objects.isNull(schoolOrg)) {
+                throw ExceptionResultEnum.ERROR.exception("未找到学校对应的顶级机构");
+            }
+            // 用户id集合
+            List<Long> adminUserIdList = sysUserRoleService.list(new QueryWrapper<SysUserRole>().lambda()
+                    .in(SysUserRole::getRoleId,roleIds))
+                    .stream()
+                    .map(SysUserRole::getUserId)
+                    .distinct().collect(Collectors.toList());
+            if (adminUserIdList.size() > 0){
+                List<SysUser> adminUserList = sysUserService.list(new QueryWrapper<SysUser>().lambda()
+                        .eq(SysUser::getSchoolId,schoolId)
+                        .in(SysUser::getId,adminUserIdList));
+                if (adminUserList.size() > 0){
+                    // 存在管理员
+                    continue;
+                }
+            }
+            UserSaveParams userSaveParams = new UserSaveParams();
+            userSaveParams.setSchoolId(schoolId);
+            userSaveParams.setLoginName("admin");
+            userSaveParams.setRealName("学校管理员");
+            userSaveParams.setPassword(SystemConstant.DEFAULT_PASSWORD);
+
+            userSaveParams.setOrgId(schoolOrg.getId());
+            userSaveParams.setEnable(true);
+            userSaveParams.setRoleIds(roleIds.toArray(new Long[0]));
+            sysUserService.saveUserNoAuth(userSaveParams);
+        }
         log.info("服务器启动时执行 end");
     }
 }