Explorar o código

system基础服务模块更新

linfutong %!s(int64=2) %!d(string=hai) anos
pai
achega
9fb1bb3d83
Modificáronse 20 ficheiros con 633 adicións e 335 borrados
  1. 1 1
      zd-api/zd-system-api/src/main/java/com/zd/system/api/entity/SysUserStudent.java
  2. 15 10
      zd-auth/src/main/java/com/zd/auth/controller/TokenController.java
  3. 54 13
      zd-modules/zd-modules-system/src/main/java/com/zd/system/controller/SysStudentController.java
  4. 34 5
      zd-modules/zd-modules-system/src/main/java/com/zd/system/controller/SysTeacherController.java
  5. 16 1
      zd-modules/zd-modules-system/src/main/java/com/zd/system/controller/SysUserController.java
  6. 44 4
      zd-modules/zd-modules-system/src/main/java/com/zd/system/mapper/SysUserMapper.java
  7. 16 0
      zd-modules/zd-modules-system/src/main/java/com/zd/system/service/ISysTeacherService.java
  8. 9 1
      zd-modules/zd-modules-system/src/main/java/com/zd/system/service/ISysUserService.java
  9. 1 9
      zd-modules/zd-modules-system/src/main/java/com/zd/system/service/impl/SysDeptManager.java
  10. 0 7
      zd-modules/zd-modules-system/src/main/java/com/zd/system/service/impl/SysDeptServiceImpl.java
  11. 3 5
      zd-modules/zd-modules-system/src/main/java/com/zd/system/service/impl/SysPermissionServiceImpl.java
  12. 25 36
      zd-modules/zd-modules-system/src/main/java/com/zd/system/service/impl/SysPermitMenuServiceImpl.java
  13. 1 5
      zd-modules/zd-modules-system/src/main/java/com/zd/system/service/impl/SysPermitServiceImpl.java
  14. 9 11
      zd-modules/zd-modules-system/src/main/java/com/zd/system/service/impl/SysRoleServiceImpl.java
  15. 69 61
      zd-modules/zd-modules-system/src/main/java/com/zd/system/service/impl/SysStudentServiceImpl.java
  16. 174 55
      zd-modules/zd-modules-system/src/main/java/com/zd/system/service/impl/SysTeacherServiceImpl.java
  17. 2 4
      zd-modules/zd-modules-system/src/main/java/com/zd/system/service/impl/SysUrlConfigServiceImpl.java
  18. 99 89
      zd-modules/zd-modules-system/src/main/java/com/zd/system/service/impl/SysUserServiceImpl.java
  19. 1 13
      zd-modules/zd-modules-system/src/main/java/com/zd/system/service/impl/TeacherServiceImpl.java
  20. 60 5
      zd-modules/zd-modules-system/src/main/resources/mapper/system/SysUserMapper.xml

+ 1 - 1
zd-api/zd-system-api/src/main/java/com/zd/system/api/entity/SysUserStudent.java

@@ -176,7 +176,7 @@ public class SysUserStudent extends BaseEntity {
         this.deptId = deptId;
     }
 
-    @Size(min = 0, max = 30, message = "用户昵称长度不能超过30个字符")
+    @Size(min = 0, max = 50, message = "用户昵称长度不能超过50个字符")
     public String getNickName() {
         return nickName;
     }

+ 15 - 10
zd-auth/src/main/java/com/zd/auth/controller/TokenController.java

@@ -8,6 +8,7 @@ import com.zd.chemical.api.fegin.RemoteStockService;
 import com.zd.common.core.exception.ServiceException;
 import com.zd.common.core.redis.RedisService;
 import com.zd.common.core.security.TokenService;
+import com.zd.common.core.utils.DESUtils;
 import com.zd.common.core.utils.IdUtils;
 import com.zd.common.core.utils.StringUtils;
 import com.zd.model.constant.*;
@@ -71,7 +72,7 @@ public class TokenController {
                 if (userR.getCode() == HttpStatus.SUCCESS && userR.getData() != null) {
                     userInfo = userR.getData();
                 } else {
-                    throw new ServiceException("系统异常");
+                    throw new ServiceException("服务未知异常,请稍后重试");
                 }
             } else {
                 throw new ServiceException("验证码不正确", 503);
@@ -208,6 +209,9 @@ public class TokenController {
         logger.error("学习机登录,加密前:" + username + ",设备编码:" + machineCode);
         if (UserConstants.USER_LOGIN_HXP == aioType) {
             // TODO 终端传参数据有问题,暂临时后端处理
+            //通过des生成对称加密卡号
+            username = DESUtils.encrypt(DESUtils.completeMissing(username));
+
 //            username = username.replaceAll("%00", "")
 //                    .replaceAll("%02", "")
 //                    .replaceAll("%03", "")
@@ -216,20 +220,21 @@ public class TokenController {
 //                    .trim();
         } else {
             // 查询用户信息
-            if (StringUtils.isNumeric(username)) {
-                username = Long.toHexString(Long.parseLong(username)).toUpperCase();
+//            if (StringUtils.isNumeric(username)) {
+//                username = Long.toHexString(Long.parseLong(username)).toUpperCase();
+                username =DESUtils.encrypt(username+"");
                 logger.error("学习机登录,加密后:" + username);
-            } else {
-                logger.error("通过卡号未找到用户");
-                return R.fail("无效卡号或未绑定用户,请联系管理员!");
-            }
+//            } else {
+//                logger.error("通过卡号未找到用户");
+//                return R.fail("无效卡号或未绑定用户,请联系管理员!");
+//            }
         }
         R<SysUser> user = remoteUserService.getUserInfoByCardNum(username, SecurityConstants.INNER);
         if (R.FAIL == user.getCode()) {
             throw new ServiceException(user.getMsg());
         }
         if (StringUtils.isNull(user.getData())) {
-            return R.fail("登录用户不存在!");
+            return R.fail("账号信息不存在");
         }
         R<LoginUser> userResult = remoteUserService.getUserInfo(user.getData().getUserName(), aioType, SecurityConstants.INNER);
         if (R.FAIL == userResult.getCode() || 503 == userResult.getCode()) {
@@ -240,7 +245,7 @@ public class TokenController {
             userInfo.setLoginType(aioType);
             userInfo.setMachineCode(machineCode);
             if (userInfo.getSysUser() == null) {
-                return R.fail("登录用户不存在!");
+                return R.fail("账号信息不存在");
             }
             Map<String, Object> map = null;
             if (type == 1) {
@@ -271,7 +276,7 @@ public class TokenController {
             }
             return R.ok(map);
         } else {
-            return R.fail("登录用户不存在!");
+            return R.fail("账号信息不存在");
         }
     }
 

+ 54 - 13
zd-modules/zd-modules-system/src/main/java/com/zd/system/controller/SysStudentController.java

@@ -5,6 +5,7 @@ import com.zd.common.core.annotation.Log;
 import com.zd.common.core.annotation.PreAuthorize;
 import com.zd.common.core.log.BusinessType;
 import com.zd.common.core.redis.RedisService;
+import com.zd.common.core.utils.DESUtils;
 import com.zd.common.core.utils.ExcelUtil;
 import com.zd.common.core.utils.SecurityUtils;
 import com.zd.common.core.utils.StringUtils;
@@ -22,6 +23,7 @@ import com.zd.system.api.entity.SysUserStudentByExcel;
 import com.zd.system.api.entity.SysUserStudentByExport;
 import com.zd.system.domain.SysPost;
 import com.zd.system.service.*;
+import com.zd.system.service.impl.SysTeacherServiceImpl;
 import io.swagger.annotations.Api;
 import org.apache.commons.lang3.ArrayUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -32,10 +34,7 @@ import org.springframework.web.multipart.MultipartFile;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.time.LocalDate;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
@@ -67,6 +66,8 @@ public class SysStudentController extends BaseController {
     RedisService redisService;
     @Autowired
     private ISysUserService userService;
+    @Autowired
+    private SysTeacherServiceImpl sysTeacherService;
 
     private static String USER_TYPE = UserConstants.USER_TYPE_STUDENT;
 
@@ -183,12 +184,14 @@ public class SysStudentController extends BaseController {
         ajax.put("posts", postService.selectPostAll(new SysPost()));
         if (StringUtils.isNotNull(userId)) {
             SysUser sysUser = sysStudentService.selectUserById(userId);
-            if(StringUtils.isNotNull(sysUser.getCardNum())){
+            if(StringUtils.isNotNull(sysUser.getCardNumSimple())){
                 try{
-                    long num = Long.parseLong(sysUser.getCardNum(),16);
-                    sysUser.setCardNum(num+"");
+//                    long num = Long.parseLong(sysUser.getCardNum(),16);
+//                    sysUser.setCardNum(num+"");
+                    String num = DESUtils.decrypt(sysUser.getCardNumSimple());
+                    sysUser.setCardNum(num);
                 }catch (Exception e){
-                    logger.info("卡号解密失败===="+sysUser.getCardNum());
+                    logger.info("卡号解密失败===="+sysUser.getCardNumSimple());
                 }
             }
             ajax.put(AjaxResult.DATA_TAG, sysUser);
@@ -237,13 +240,18 @@ public class SysStudentController extends BaseController {
         } else if (StringUtils.isNotEmpty(user.getEmail())
                 && UserConstants.NOT_UNIQUE.equals(sysStudentService.checkEmailUnique(user))) {
             return AjaxResult.error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在");
+        }else if (UserConstants.NOT_UNIQUE.equals(sysTeacherService.checkUserNameUniqueNotOwn(user.getUserId(),user.getUserName()))) {
+            return AjaxResult.error("修改用户'" + user.getUserName() + "'失败,账号已存在");
         }
         if(StringUtils.isNotEmpty(user.getCardNum())){
-            Long carNum10 = Long.parseLong(user.getCardNum());
-            String carNum16 = carNum10.toHexString(carNum10).toUpperCase();
-            SysUser sysUser= userService.selectUserInfoByCardNum(carNum16);
-            if(null!=sysUser && user.getUserId().intValue()!=sysUser.getUserId().intValue()){
-                return AjaxResult.error(user.getCardNum()+"已与"+sysUser.getNickName()+"绑定,无法提交");
+//            Long carNum10 = Long.parseLong(user.getCardNum());
+//            String carNum16 = carNum10.toHexString(carNum10).toUpperCase();
+            String num = DESUtils.encrypt(user.getCardNum());
+
+            SysUser sysUser= userService.selectUserInfoByCardNum(user.getUserId(),num);
+            if(null!=sysUser){
+                return AjaxResult.error("卡号重复,请重新录入!");
+//                return AjaxResult.error(user.getCardNum()+"已与"+sysUser.getNickName()+"绑定,无法提交");
             }
         }
         user.setUpdateBy(SecurityUtils.getUsername());
@@ -260,6 +268,15 @@ public class SysStudentController extends BaseController {
         } else if (StringUtils.isNotEmpty(user.getEmail())
                 && UserConstants.NOT_UNIQUE.equals(sysStudentService.checkEmailUnique(user))) {
             return AjaxResult.error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在");
+        }else if(StringUtils.isNotEmpty(user.getCardNum())){
+            String num = DESUtils.encrypt(user.getCardNum());
+            SysUser sysUser= userService.selectUserInfoByCardNum(user.getUserId(),num);
+            if(null!=sysUser){
+                return AjaxResult.error("卡号重复,请重新录入!");
+            }else{
+                //处理卡号加密
+                sysTeacherService.passCardNum(user,1);
+            }
         }
         user.setUpdateBy(SecurityUtils.getUsername());
         return toAjax(sysStudentService.updateUserStatus(user));
@@ -365,4 +382,28 @@ public class SysStudentController extends BaseController {
         return AjaxResult.success(collect);
 
     }
+
+    @PreAuthorize(hasPermi = PerPrefix.SYSTEM_USER_STUDENT+ PerFun.CHECK)
+    @PostMapping("/batchSelect/{ids}")
+    public AjaxResult batchSelect(SysUser user,@PathVariable(value = "ids",required = false) Long... ids){
+        if(ids!=null&&ids.length>0)
+        {
+            user = new SysUser();
+            user.setIds(Arrays.asList(ids));
+        }
+        user.setUserType(USER_TYPE);
+        List<SysUser> list = sysStudentService.selectUserList(user);
+        Optional.ofNullable(list).orElseGet(Collections::emptyList)
+                .stream()
+                .forEach(a->{
+                    a.setCardNum(DESUtils.decrypt(a.getCardNumSimple()));
+                });
+        return AjaxResult.success(list);
+    }
+
+    @PreAuthorize(hasPermi = PerPrefix.SYSTEM_USER_STUDENT+ PerFun.CHECK)
+    @PutMapping({"/updateCardNum"})
+    public AjaxResult updateCardNum(@RequestBody List<SysUser> userList) {
+        return AjaxResult.success(sysTeacherService.updateCardNum(userList));
+    }
 }

+ 34 - 5
zd-modules/zd-modules-system/src/main/java/com/zd/system/controller/SysTeacherController.java

@@ -4,6 +4,7 @@ import com.zd.common.core.annotation.Log;
 import com.zd.common.core.annotation.PreAuthorize;
 import com.zd.common.core.log.BusinessType;
 import com.zd.common.core.redis.RedisService;
+import com.zd.common.core.utils.DESUtils;
 import com.zd.common.core.utils.ExcelUtil;
 import com.zd.common.core.web.controller.BaseController;
 import com.zd.model.constant.BaseConstants;
@@ -97,7 +98,7 @@ public class SysTeacherController extends BaseController {
         }
         user.setUserType(USER_TYPE);
         List<SysUser> list = sysTeacherService.selectUserList(user);
-        teacherService.queryTeacherSuBCount(list);
+//        teacherService.queryTeacherSuBCount(list);
 
         List<SysUserTeaCherByExport> teacherList = new ArrayList<>();
         for (SysUser sysUser : list) {
@@ -203,6 +204,8 @@ public class SysTeacherController extends BaseController {
         } else if (StringUtils.isNotEmpty(user.getEmail())
                 && UserConstants.NOT_UNIQUE.equals(sysTeacherService.checkEmailUnique(user))) {
             return AjaxResult.error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在");
+        }else if (UserConstants.NOT_UNIQUE.equals(sysTeacherService.checkUserNameUniqueNotOwn(user.getUserId(),user.getUserName()))) {
+            return AjaxResult.error("修改用户'" + user.getUserName() + "'失败,账号已存在");
         }
         user.setUpdateBy(SecurityUtils.getUsername());
         return toAjax(sysTeacherService.update(user));
@@ -285,12 +288,14 @@ public class SysTeacherController extends BaseController {
         if (StringUtils.isNotNull(userId)) {
             SysUser sysUser = sysTeacherService.selectUserById(userId);
             if(StringUtils.isNotNull(sysUser)){
-                if(StringUtils.isNotEmpty(sysUser.getCardNum())){
+                if(StringUtils.isNotEmpty(sysUser.getCardNumSimple())){
                     try{
-                        long num = Long.parseLong(sysUser.getCardNum(),16);
-                        sysUser.setCardNum(num+"");
+//                        long num = Long.parseLong(sysUser.getCardNum(),16);
+//                        sysUser.setCardNum(num+"");
+                        String num = DESUtils.decrypt(sysUser.getCardNumSimple());
+                        sysUser.setCardNum(num);
                     }catch (Exception e){
-                        logger.info("卡号解密失败===="+sysUser.getCardNum());
+                        logger.info("卡号解密失败===="+sysUser.getCardNumSimple());
                     }
                 }
             }
@@ -301,4 +306,28 @@ public class SysTeacherController extends BaseController {
         }
         return ajax;
     }
+
+    @PreAuthorize(hasPermi = PerPrefix.SYSTEM_USER_TEACHER+ PerFun.CHECK)
+    @PostMapping({"/batchSelect/{ids}"})
+    public AjaxResult batchSelect(SysUser user,@PathVariable(value = "ids",required = false) Long... ids) {
+        if(ids!=null&&ids.length>0)
+        {
+            user = new SysUser();
+            user.setIds(Arrays.asList(ids));
+        }
+        user.setUserType(USER_TYPE);
+        List<SysUser> list = sysTeacherService.selectUserList(user);
+        Optional.ofNullable(list).orElseGet(Collections::emptyList)
+                .stream()
+                .forEach(a->{
+                    a.setCardNum(DESUtils.decrypt(a.getCardNumSimple()));
+                });
+        return AjaxResult.success(list);
+    }
+
+    @PreAuthorize(hasPermi = PerPrefix.SYSTEM_USER_TEACHER+ PerFun.CHECK)
+    @PutMapping({"/updateCardNum"})
+    public AjaxResult updateCardNum(@RequestBody List<SysUser> userList) {
+        return AjaxResult.success(sysTeacherService.updateCardNum(userList));
+    }
 }

+ 16 - 1
zd-modules/zd-modules-system/src/main/java/com/zd/system/controller/SysUserController.java

@@ -138,10 +138,13 @@ public class SysUserController extends BaseController {
      */
 //    @PreAuthorize(hasPermi = PerPrefix.SYSTEM_USER+ PerFun.LIST)
     @GetMapping("/selectlist")
-    public ResultData selectlist(String nickName) {
+    public ResultData selectlist(String nickName,String userType) {
         if (StrUtil.isBlank(nickName)) return ResultData.success(new ArrayList<>());
         SysUser user = new SysUser();
         user.setNickName(nickName);
+        if(StringUtils.isNotNull(userType)){
+            user.setUserType(userType);
+        }
         List<SysUser> list = userService.selectUserList(user);
         List<SelectUserVO> collect = null;
         //转化
@@ -823,4 +826,16 @@ public class SysUserController extends BaseController {
         logger.info("========================>{}:{}<=========================", code, temp);
         return temp.equals(code);
     }
+
+
+
+    /**
+     * 获取用户列表 "system:user:list"
+     */
+    @ApiOperation("查询用户列表旧的卡号加密修改成新卡号加密")
+    @GetMapping("/oldCheckNewCard")
+    public R<?> oldCheckNewCard() {
+        userService.oldCheckNewCard();
+        return R.ok();
+    }
 }

+ 44 - 4
zd-modules/zd-modules-system/src/main/java/com/zd/system/mapper/SysUserMapper.java

@@ -72,19 +72,19 @@ public interface SysUserMapper {
     /**
      * 通过用户卡号查询用户
      *
-     * @param cardNum 卡号
+     * @param cardNumSimple 真实卡号
      * @return 用户对象信息
      */
-    public SysUser selectUserByCardNum(String cardNum);
+    public SysUser selectUserByCardNum(String cardNumSimple);
 
 
     /**
      * 通过用户卡号查询用户id,用户姓名
      *
-     * @param cardNum 卡号
+     * @param checkUser 卡号,用户id
      * @return 用户对象信息
      */
-    public SysUser selectUserInfoByCardNum(String cardNum);
+    public SysUser selectUserInfoByCardNum(SysUser checkUser);
 
     /**
      * 通过用户ID查询用户
@@ -168,6 +168,14 @@ public interface SysUserMapper {
      * @return
      */
     public List<String> queryPhoneByIds(Long... ids);
+
+    /**
+     * 根据ID查询电话号码
+     * @param cardNums
+     * @return
+     */
+    public List<SysUser> queryCardNumByIds(String[] cardNums);
+
     /**
      * 查询人数通过部门ID
      *
@@ -185,6 +193,30 @@ public interface SysUserMapper {
     public int checkUserNameUnique(String userName);
 
     /**
+     * 校验用户名称是否唯一
+     *
+     * @param user 用户实体对象
+     * @return 结果
+     */
+    public int checkUserNameUniqueNotOwn(SysUser user);
+
+    /**
+     * 校验卡号是否唯一
+     *
+     * @param user 用户实体对象
+     * @return 结果
+     */
+    public int checkCardUnique(SysUser user);
+
+    /**
+     * 校验卡号是否唯一
+     *
+     * @param user 用户实体对象
+     * @return 结果
+     */
+    public int checkCardSimpleUnique(SysUser user);
+
+    /**
      * 校验手机号码是否唯一
      *
      * @param phonenumber 手机号码
@@ -248,4 +280,12 @@ public interface SysUserMapper {
      * @return 用户信息集合信息
      */
     public List<SysUser> getSafeUserList(SysUser sysUser);
+
+
+    /**
+     * 根据条件分页查询用户列表
+     *
+     * @return 用户信息集合信息
+     */
+    public List<SysUser> oldCheckNewCard();
 }

+ 16 - 0
zd-modules/zd-modules-system/src/main/java/com/zd/system/service/ISysTeacherService.java

@@ -93,6 +93,14 @@ public interface ISysTeacherService {
     public String checkUserNameUnique(String userName);
 
     /**
+     * 校验用户名称是否唯一
+     *
+     * @param userId 用户id,userName 用户名称
+     * @return 结果
+     */
+    public String checkUserNameUniqueNotOwn(Long userId,String userName);
+
+    /**
      * 校验手机号码是否唯一
      *
      * @param user 用户信息
@@ -310,4 +318,12 @@ public interface ISysTeacherService {
      * @return 结果
      */
     int editUserByDept(List <SysUser> userList);
+
+
+    /**
+     * 修改用户信息
+     * @param userList 用户信息列表
+     * @return 结果
+     */
+    Map <String, Object> updateCardNum(List<SysUser> userList);
 }

+ 9 - 1
zd-modules/zd-modules-system/src/main/java/com/zd/system/service/ISysUserService.java

@@ -76,7 +76,7 @@ public interface ISysUserService {
      * @param cardNum 用户名
      * @return 用户对象信息
      */
-    public SysUser selectUserInfoByCardNum(String cardNum);
+    public SysUser selectUserInfoByCardNum(Long userId,String cardNum);
 
     /**
      * 通过用户ID查询用户
@@ -349,4 +349,12 @@ public interface ISysUserService {
      * @return
      */
     public SysUser selectUserIdByPhone(String  phone);
+
+
+    /**
+     * 查询用户列表旧的卡号加密修改成新卡号加密
+     *
+     * @return 用户信息集合信息
+     */
+    public void oldCheckNewCard();
 }

+ 1 - 9
zd-modules/zd-modules-system/src/main/java/com/zd/system/service/impl/SysDeptManager.java

@@ -36,14 +36,11 @@ public class SysDeptManager {
     @Autowired
     RemoteLaboratoryService remoteLaboratoryService;
 
-//    @DataScope(deptAlias = "d")
+    //@DataScope(deptAlias = "d")
     @Deprecated
     public List<SysDeptListVO> querySysDeptListVO(SysDept dept) {
-
         List<SysDept> depts = deptMapper.selectDeptList(dept);
-
         //组合人数、实验室数量信息
-
         return joinDetailCount(depts);
     }
 
@@ -64,15 +61,11 @@ public class SysDeptManager {
         //因为现在楼栋和组织机构没有分开,并且在实验室使用两个字段存储(组织机构中院系和楼栋关系的改变会导致,实验室中院系与楼栋关系的不一致)
         //所以获取也分两种
         //2.1 查楼栋下的实验是
-
         //2.2 查院系下的实验室
-
         //3 组合对应数量到楼栋和院系
         //4 计算根节点的数量 , 根节点的数量是院系数量之和
         //4.1 人员之和和实验室之和计算不一样 ,人员是下级加上自己的等于自己总的
         //4.2 实验室里院系不能加下级,因为下级是楼,院系的数量已经包括楼了,但是楼之上的节点需要求总
-
-
         //5 算球 ,直接交给前端计算 ,我只给出每个节点的数据(院系不找实验室数量,只要楼栋的实验室就可以解决这个问题) 这样最简单
         //存在的问题,如果数据权限不可见”楼栋“则没有实验室数量
         //5.1 查询本级人数
@@ -102,5 +95,4 @@ public class SysDeptManager {
         }).collect(Collectors.toList());
 
     }
-
 }

+ 0 - 7
zd-modules/zd-modules-system/src/main/java/com/zd/system/service/impl/SysDeptServiceImpl.java

@@ -67,7 +67,6 @@ public class SysDeptServiceImpl implements ISysDeptService {
         }else{
             dept.setParentId(sysDept.getParentId());
         }
-
         List<SysDept> depts = deptMapper.treeselectByUser(dept);
         return depts;
     }
@@ -412,9 +411,6 @@ public class SysDeptServiceImpl implements ISysDeptService {
                 lineCompletion = true;
             }
         }
-//        if(lineCompletion){
-//
-//        }
         return 1;
     }
 
@@ -437,7 +433,6 @@ public class SysDeptServiceImpl implements ISysDeptService {
 
     @Override
     public SysDept updateDeptSign(SysDept dept) {
-
         SysDept sysDept = new SysDept();
         sysDept.setDeptId(dept.getDeptId());
         sysDept.setDeptSign(dept.getDeptSign());
@@ -451,10 +446,8 @@ public class SysDeptServiceImpl implements ISysDeptService {
      */
     @Override
     public Map<String, Object> queryDeptSignByUserId(Long userId) {
-
         String deptSignUrl = deptMapper.queryDeptSignByUserId(userId);
         Map<String, Object> map = new HashMap<>();
-
         map.put("isUpload", StringUtils.isNotBlank(deptSignUrl) ? true : false);
         map.put("deptSignUrl", deptSignUrl);
         return map;

+ 3 - 5
zd-modules/zd-modules-system/src/main/java/com/zd/system/service/impl/SysPermissionServiceImpl.java

@@ -50,18 +50,16 @@ public class SysPermissionServiceImpl implements ISysPermissionService {
         if (SysUser.isAdmin(sysUser.getUserId())) {
             perms.add("*:*:*");
         } else {
-            if(UserConstants.USER_TYPE_STUDENT.equals(sysUser.getUserType())){
+            if (UserConstants.USER_TYPE_STUDENT.equals(sysUser.getUserType())) {
                 // TODO 学生权限暂处理,项目拆分之后需要删除
                 perms.addAll(menuService.selectMenuByStudent());
-            }else {
+            } else {
                 Set<String> data = menuService.selectNewMenuPermsByUserId(sysUser.getUserId());
 
-                if(data.size() == 0 && UserConstants.USER_TYPE_TEACHER.equals(sysUser.getUserType())){
+                if (data.size() == 0 && UserConstants.USER_TYPE_TEACHER.equals(sysUser.getUserType())) {
                     data = menuService.selectMenuByTeacher();
                 }
                 perms.addAll(data);
-                //perms.addAll(menuService.selectMenuPermsByUserId(userId));
-
             }
         }
         return perms;

+ 25 - 36
zd-modules/zd-modules-system/src/main/java/com/zd/system/service/impl/SysPermitMenuServiceImpl.java

@@ -99,25 +99,22 @@ public class SysPermitMenuServiceImpl implements ISysPermitMenuService {
     @Override
     public List<SysPermitInfo> selectPerMitByUserId(SysUser sysUser) {
         List<SysPermitInfo> list;
-        if(UserConstants.USER_TYPE_SUPPLIER.equals(sysUser.getUserType())){
+        if (UserConstants.USER_TYPE_SUPPLIER.equals(sysUser.getUserType())) {
             return null;
-        }else if(UserConstants.USER_TYPE_STUDENT.equals(sysUser.getUserType())){
+        } else if (UserConstants.USER_TYPE_STUDENT.equals(sysUser.getUserType())) {
             list = sysPermitMenuMapper.selectPerMitByStudent();
-        }else {
+        } else {
             list = sysPermitMenuMapper.selectPerMitByUserId(sysUser.getUserId());
 
-            if(list.size() == 0 && UserConstants.USER_TYPE_TEACHER.equals(sysUser.getUserType())){
+            if (list.size() == 0 && UserConstants.USER_TYPE_TEACHER.equals(sysUser.getUserType())) {
                 list = sysPermitMenuMapper.selectPerMitByTeacher();
             }
         }
-
-        if(CollectionUtils.isEmpty(list) && !sysUser.isAdmin()){
-//            throw new PreAuthorizeException();
-            throw new ServiceException("用户未配置菜单权限,请联系管理员!", 530);
+        if (CollectionUtils.isEmpty(list) && !sysUser.isAdmin()) {
+            throw new ServiceException("无操作权限,请联系管理员", 530);
         }
-
         for (SysPermitInfo sysPermitInfo : list) {
-            if(sysPermitInfo.getDataScope() == 3 && sysUser.getDept().getDeptId() != null){
+            if (sysPermitInfo.getDataScope() == 3 && sysUser.getDept().getDeptId() != null) {
                 sysPermitInfo.getDeptIds().add(sysUser.getDept().getDeptId());
             }
         }
@@ -134,57 +131,50 @@ public class SysPermitMenuServiceImpl implements ISysPermitMenuService {
     @Override
     public void insertSysPermitMenuList(Long permitId, Long userId, List<SysPermitMenu> permitMenus) {
         List<Long> permitMenuIds;
-        if(permitId != null){
+        if (permitId != null) {
             permitMenuIds = sysPermitMenuMapper.selectIdByRelation(permitId, null);
             sysPermitMenuMapper.deleteSysPermitMenuByMenuId(null, permitId, null);
-            if(CollectionUtils.isNotEmpty(permitMenus)){
+            if (CollectionUtils.isNotEmpty(permitMenus)) {
                 permitMenus.forEach(p -> {
-                    if(p.getMenuId() == null || p.getDataScope() == null){
-                        throw new ServiceException("数据异常,菜单ID或者权限类型错误!");
+                    if (p.getMenuId() == null || p.getDataScope() == null) {
+                        throw new ServiceException("数据异常,菜单权限有误");
                     }
-                    if(p.getDataScope() == 3 && CollectionUtils.isEmpty(p.getDeptIds())){
-                        throw new ServiceException("权限数据异常,未选择指定部门");
+                    if (p.getDataScope() == 3 && CollectionUtils.isEmpty(p.getDeptIds())) {
+                        throw new ServiceException("数据异常,未指定部门");
                     }
-
                     p.setType(1);
                     p.setPermitId(permitId);
-
                     p.setUserId(0L);
                 });
             }
-        }else if(userId != null){
+        } else if (userId != null) {
             permitMenuIds = sysPermitMenuMapper.selectIdByRelation(null, userId);
             sysPermitMenuMapper.deleteSysPermitMenuByMenuId(null, null, userId);
-            if(CollectionUtils.isNotEmpty(permitMenus)){
+            if (CollectionUtils.isNotEmpty(permitMenus)) {
                 permitMenus.forEach(p -> {
-                    if(p.getMenuId() == null || p.getDataScope() == null){
-                        throw new ServiceException("数据异常,菜单ID或者权限类型错误!");
+                    if (p.getMenuId() == null || p.getDataScope() == null) {
+                        throw new ServiceException("数据异常,菜单权限有误");
                     }
-
-                    if(p.getDataScope() == 3 && CollectionUtils.isEmpty(p.getDeptIds())){
-                        throw new ServiceException("权限数据异常,未选择指定部门!");
+                    if (p.getDataScope() == 3 && CollectionUtils.isEmpty(p.getDeptIds())) {
+                        throw new ServiceException("数据异常,未指定部门");
                     }
-
                     p.setType(2);
                     p.setUserId(userId);
-
                     p.setPermitId(0L);
-
                 });
             }
-        }else {
-            throw new ServiceException("参数异常:数据来源不明确!");
+        } else {
+            throw new ServiceException("未知的源数据");
         }
-
-        if(permitMenuIds.size() > 0){
+        if (permitMenuIds.size() > 0) {
             sysPermitMenuDeptMapper.deleteSysPermitMenuDeptByPermitMenuIds(permitMenuIds.toArray(new Long[permitMenuIds.size()]));
         }
-        if(CollectionUtils.isNotEmpty(permitMenus)){
+        if (CollectionUtils.isNotEmpty(permitMenus)) {
             sysPermitMenuMapper.insertBatch(permitMenus);
 
             List<SysPermitMenuDept> permitMenuDeptList = new ArrayList<>();
             for (SysPermitMenu permitMenu : permitMenus) {
-                if(permitMenu.getDataScope() == 3){
+                if (permitMenu.getDataScope() == 3) {
                     for (Long deptId : permitMenu.getDeptIds()) {
                         SysPermitMenuDept permitMenuDept = new SysPermitMenuDept();
                         permitMenuDept.setPermitMenuId(permitMenu.getId());
@@ -193,10 +183,9 @@ public class SysPermitMenuServiceImpl implements ISysPermitMenuService {
                     }
                 }
             }
-            if(permitMenuDeptList.size() > 0){
+            if (permitMenuDeptList.size() > 0) {
                 sysPermitMenuDeptMapper.insertBatch(permitMenuDeptList);
             }
         }
-
     }
 }

+ 1 - 5
zd-modules/zd-modules-system/src/main/java/com/zd/system/service/impl/SysPermitServiceImpl.java

@@ -38,9 +38,8 @@ public class SysPermitServiceImpl implements ISysPermitService {
     public SysPermit selectSysPermitById(Long id) {
         SysPermit permit = sysPermitMapper.selectSysPermitById(id);
         if(permit == null){
-            throw new ServiceException("数据不存在,或者参数无效,请刷新重试!");
+            throw new ServiceException("数据不存在");
         }
-
         SysPermitMenu sysPermitMenu = new SysPermitMenu();
         sysPermitMenu.setPermitId(permit.getId());
         sysPermitMenu.setType(1);
@@ -79,9 +78,7 @@ public class SysPermitServiceImpl implements ISysPermitService {
         //设置其他公共字段
         SaveUtil.setCommonAttr(sysPermit);
         sysPermitMapper.insertSysPermit(sysPermit);
-
         sysPermitMenuService.insertSysPermitMenuList(sysPermit.getId(), null, sysPermit.getPermitMenus());
-
         return sysPermit;
     }
 
@@ -96,7 +93,6 @@ public class SysPermitServiceImpl implements ISysPermitService {
     public SysPermit updateSysPermit(SysPermit sysPermit) {
         sysPermit.setUpdateTime(DateUtils.getNowDate());
         sysPermit.setUpdateBy(SecurityUtils.getUsername());
-
         sysPermitMapper.updateSysPermit(sysPermit);
         sysPermitMenuService.insertSysPermitMenuList(sysPermit.getId(), null, sysPermit.getPermitMenus());
         return sysPermit;

+ 9 - 11
zd-modules/zd-modules-system/src/main/java/com/zd/system/service/impl/SysRoleServiceImpl.java

@@ -169,13 +169,11 @@ public class SysRoleServiceImpl implements ISysRoleService {
      */
     @Override
     public void checkRoleAllowed(SysRole role) {
-        if (StringUtils.isNotNull(role.getRoleId())) {
-
-            if (SecurityUtils.getUserId() != 1 && role.getRoleId() == 2) {
-                throw new ServiceException("不允许操作管理员角色");
-            }
-            if (role.isAdmin()) {
-                throw new ServiceException("不允许操作超级管理员角色");
+        if (role.getRoleId() != null) {
+            if ((SecurityUtils.getUserId() != 1 && role.getRoleId() == 2)
+                    || role.isAdmin()) {
+                //不允许操作管理员角色  或  不允许操作超级管理员角色
+                throw new ServiceException("不允许操作");
             }
         }
     }
@@ -379,14 +377,14 @@ public class SysRoleServiceImpl implements ISysRoleService {
     @Override
     public Map<String, Object> selectAuthUserPower(Long userId) {
         // 1.0 需求
-//        userRoleMapper.selectAuthUserPower(SecurityUtils.getUserId());
-//        List<SysRole> role = roleMapper.selectRolePermissionByUserId(SecurityUtils.getUserId());
+        //userRoleMapper.selectAuthUserPower(SecurityUtils.getUserId());
+        //List<SysRole> role = roleMapper.selectRolePermissionByUserId(SecurityUtils.getUserId());
 
         // 2.0 需求
-//         List<Map<String, Object>> map = deptMapper.selectLayoutOrderByUserId(SecurityUtils.getUserId());
+        //List<Map<String, Object>> map = deptMapper.selectLayoutOrderByUserId(SecurityUtils.getUserId());
 
         // 2.4 需求 查询是校级1 还是院级 2
-//        Integer type = userId == 1 ? 1: userRoleMapper.selectLevelByUserId(userId);
+        //Integer type = userId == 1 ? 1: userRoleMapper.selectLevelByUserId(userId);
 
         // 2.6 权限变更 属于校级权限,其他则院级权限 必须是教职工
         Integer type = deptMapper.selectLevelByUserId(userId) > 0 ? 1 : 2;

+ 69 - 61
zd-modules/zd-modules-system/src/main/java/com/zd/system/service/impl/SysStudentServiceImpl.java

@@ -2,8 +2,10 @@ package com.zd.system.service.impl;
 
 import com.alibaba.fastjson.JSONArray;
 import com.zd.common.core.annotation.DataScope;
+import com.zd.common.core.exception.NoRollException;
 import com.zd.common.core.exception.ServiceException;
 import com.zd.common.core.security.TokenService;
+import com.zd.common.core.utils.DESUtils;
 import com.zd.common.core.utils.DictUtils;
 import com.zd.common.core.utils.SecurityUtils;
 import com.zd.common.core.utils.StringUtils;
@@ -67,6 +69,8 @@ public class SysStudentServiceImpl implements ISysStudentService {
 
     @Autowired
     private ISysPermitMenuService sysPermitMenuService;
+    @Autowired
+    private SysTeacherServiceImpl sysTeacherService;
 
     /**
      * 根据条件分页查询用户列表
@@ -85,29 +89,29 @@ public class SysStudentServiceImpl implements ISysStudentService {
 
         List<SysMajor> sysMajorList = sysMajorMapper.selectSysMajorList(new SysMajor());
         Optional.ofNullable(sysUserList).orElseGet(Collections::emptyList)
-                .stream().forEach(a->{
+                .stream().forEach(a -> {
             Optional.ofNullable(proDictDatas).orElseGet(Collections::emptyList)
-                    .stream().forEach(b->{
-                    if(b.getDictValue().equals(a.getCategory())){
-                        a.setCategory(b.getDictLabel());
-                    }
+                    .stream().forEach(b -> {
+                if (b.getDictValue().equals(a.getCategory())) {
+                    a.setCategory(b.getDictLabel());
+                }
             });
             Optional.ofNullable(edDictDatas).orElseGet(Collections::emptyList)
-                    .stream().forEach(b->{
-                if(b.getDictValue().equals(a.getEducation())){
+                    .stream().forEach(b -> {
+                if (b.getDictValue().equals(a.getEducation())) {
                     a.setEducation(b.getDictLabel());
                 }
             });
             Optional.ofNullable(stDictDatas).orElseGet(Collections::emptyList)
-                    .stream().forEach(b->{
-                if(b.getDictValue().equals(a.getWorkStatus())){
+                    .stream().forEach(b -> {
+                if (b.getDictValue().equals(a.getWorkStatus())) {
                     a.setWorkStatus(b.getDictLabel());
                 }
             });
 
             Optional.ofNullable(sysMajorList).orElseGet(Collections::emptyList)
-                    .stream().forEach(b->{
-                if(b.getId()==a.getMajorId()){
+                    .stream().forEach(b -> {
+                if (b.getId() == a.getMajorId()) {
                     a.setMajor(b.getMajorName());
                 }
             });
@@ -276,14 +280,10 @@ public class SysStudentServiceImpl implements ISysStudentService {
      */
     @Override
     public void checkUserAllowed(SysUser user) {
-        if (StringUtils.isNotNull(user.getUserId())) {
-
-            if (SecurityUtils.getUserId() != 1 && user.getUserId() == 2) {
-                throw new ServiceException("不允许操作管理员用户");
-            }
-
-            if (user.isAdmin()) {
-                throw new ServiceException("不允许操作超级管理员用户");
+        if (user.getUserId() != null) {
+            if ((SecurityUtils.getUserId() != 1 && user.getUserId() == 2) || user.isAdmin()) {
+                //不允许操作管理员用户 或 不允许操作超级管理员用户
+                throw new ServiceException("不允许操作");
             }
         }
     }
@@ -297,32 +297,34 @@ public class SysStudentServiceImpl implements ISysStudentService {
     @Override
     @Transactional
     public int insertUser(SysUser user) {
-        //将10进制卡号转换至16进制
-        if(StringUtils.isNotEmpty(user.getCardNum())){
-            if(StringUtils.isNumeric(user.getCardNum())){
-                Long carNum10 = Long.parseLong(user.getCardNum());
-                String carNum16 = carNum10.toHexString(carNum10).toUpperCase();
-                user.setCardNum(carNum16);
-            }else{
-                throw new ServiceException("卡号只能是数字,不能包含字母!");
-            }
-
-        }else{
-            user.setCardNum(null);
-        }
+//        //将10进制卡号转换至16进制
+//        if(StringUtils.isNotEmpty(user.getCardNum())){
+//            if(StringUtils.isNumeric(user.getCardNum())){
+//                Long carNum10 = Long.parseLong(user.getCardNum());
+//                String carNum16 = carNum10.toHexString(carNum10).toUpperCase();
+//                user.setCardNum(carNum16);
+//            }else{
+//                throw new ServiceException("卡号只能是数字,不能包含字母!");
+//            }
+//
+//        }else{
+//            user.setCardNum(null);
+//        }
+        //处理卡号加密
+        sysTeacherService.passCardNum(user,1);
 
         // 新增用户信息
         int rows = userMapper.insertUser(user);
         //处理Object 转换实体类
-        List <Object> permitMenus = user.getPermitMenus();
+        List<Object> permitMenus = user.getPermitMenus();
         List<SysPermitMenu> newPermitMenus = new ArrayList<>();
-        for(Object obj:permitMenus){
-            SysPermitMenu sysPermitMenu = JSONArray.parseObject(JSONArray.toJSONString(obj),SysPermitMenu.class);
+        for (Object obj : permitMenus) {
+            SysPermitMenu sysPermitMenu = JSONArray.parseObject(JSONArray.toJSONString(obj), SysPermitMenu.class);
             newPermitMenus.add(sysPermitMenu);
         }
-        if(newPermitMenus.size()>0){
+        if (newPermitMenus.size() > 0) {
             // 插入最新用户绑定的权限数据
-            sysPermitMenuService.insertSysPermitMenuList(null,user.getUserId(),newPermitMenus);
+            sysPermitMenuService.insertSysPermitMenuList(null, user.getUserId(), newPermitMenus);
         }
         // 新增用户岗位关联
         insertUserPost(user);
@@ -363,13 +365,15 @@ public class SysStudentServiceImpl implements ISysStudentService {
         try {
             //将10进制卡号转换至16进制
             if(StringUtils.isNotEmpty(user.getCardNum())){
-                if(StringUtils.isNumeric(user.getCardNum())){
-                    Long carNum10 = Long.parseLong(user.getCardNum());
-                    String carNum16 = carNum10.toHexString(carNum10).toUpperCase();
-                    user.setCardNum(carNum16);
-                }else{
-                    throw new ServiceException("卡号只能是数字,不能包含字母!");
-                }
+                //处理卡号加密
+                sysTeacherService.passCardNum(user,0);
+//                if(StringUtils.isNumeric(user.getCardNum())){
+//                    Long carNum10 = Long.parseLong(user.getCardNum());
+//                    String carNum16 = carNum10.toHexString(carNum10).toUpperCase();
+//                    user.setCardNum(carNum16);
+//                }else{
+//                    throw new ServiceException("卡号只能是数字,不能包含字母!");
+//                }
             }else{
                 user.setCardNum(null);
             }
@@ -387,18 +391,21 @@ public class SysStudentServiceImpl implements ISysStudentService {
      */
     @Override
     public int update(SysUser user) {
-        //将10进制卡号转换至16进制
-        if(StringUtils.isNotEmpty(user.getCardNum())){
-            if(StringUtils.isNumeric(user.getCardNum())){
-                Long carNum10 = Long.parseLong(user.getCardNum());
-                String carNum16 = carNum10.toHexString(carNum10).toUpperCase();
-                user.setCardNum(carNum16);
-            }else{
-                throw new ServiceException("卡号只能是数字,不能包含字母!");
-            }
-        }else{
-            user.setCardNum(null);
-        }
+//        //将10进制卡号转换至16进制
+//        if(StringUtils.isNotEmpty(user.getCardNum())){
+//            if(StringUtils.isNumeric(user.getCardNum())){
+//                Long carNum10 = Long.parseLong(user.getCardNum());
+//                String carNum16 = carNum10.toHexString(carNum10).toUpperCase();
+//                user.setCardNum(carNum16);
+//            }else{
+//                throw new ServiceException("卡号只能是数字,不能包含字母!");
+//            }
+//        }else{
+//            user.setCardNum(null);
+//        }
+
+        //处理卡号加密
+        sysTeacherService.passCardNum(user,0);
         //处理Object 转换实体类
         List <Object> permitMenus = user.getPermitMenus();
         List<SysPermitMenu> newPermitMenus = new ArrayList<>();
@@ -889,13 +896,13 @@ public class SysStudentServiceImpl implements ISysStudentService {
             }
             user.getFailRemark().append("姓名不能为空、");
         }else{
-            if(user.getNickName().length()>8){
+            if(user.getNickName().length()>50){
                 if(checkBox){
                     user.getFailRemark().append("失败:");
                     failSysUserList.add(user);
                     checkBox = false;
                 }
-                user.getFailRemark().append("姓名最多个字符、");
+                user.getFailRemark().append("姓名最多五十个字符、");
             }
         }
 
@@ -945,9 +952,10 @@ public class SysStudentServiceImpl implements ISysStudentService {
         }
 
         if(StringUtils.isNotEmpty(user.getCardNum())){
-            Long carNum10 = Long.parseLong(user.getCardNum());
-            String carNum16 = carNum10.toHexString(carNum10).toUpperCase();
-            SysUser sysUser = userMapper.selectUserByCardNum(carNum16);
+//            Long carNum10 = Long.parseLong(user.getCardNum());
+//            String carNum16 = carNum10.toHexString(carNum10).toUpperCase();
+            String desCardNum = DESUtils.encrypt(user.getCardNum());
+            SysUser sysUser = userMapper.selectUserByCardNum(desCardNum);
             if(StringUtils.isNotNull(sysUser)){
                 if(checkBox){
                     user.getFailRemark().append("失败:");

+ 174 - 55
zd-modules/zd-modules-system/src/main/java/com/zd/system/service/impl/SysTeacherServiceImpl.java

@@ -2,8 +2,10 @@ package com.zd.system.service.impl;
 
 import com.alibaba.fastjson.JSONArray;
 import com.zd.common.core.annotation.DataScope;
+import com.zd.common.core.exception.NoRollException;
 import com.zd.common.core.exception.ServiceException;
 import com.zd.common.core.security.TokenService;
+import com.zd.common.core.utils.DESUtils;
 import com.zd.common.core.utils.SecurityUtils;
 import com.zd.common.core.utils.StringUtils;
 import com.zd.model.constant.UserConstants;
@@ -27,6 +29,8 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.concurrent.atomic.LongAdder;
+import java.util.function.Consumer;
 
 /**
  * 用户 业务层处理
@@ -204,6 +208,24 @@ public class SysTeacherServiceImpl implements ISysTeacherService {
     /**
      * 校验用户名称是否唯一
      *
+     * @param userId 用户id,userName 用户名称
+     * @return 结果
+     */
+    @Override
+    public String checkUserNameUniqueNotOwn(Long userId,String userName) {
+        SysUser user = new SysUser();
+        user.setUserId(userId);
+        user.setUserName(userName);
+        int count = userMapper.checkUserNameUniqueNotOwn(user);
+        if (count > 0) {
+            return UserConstants.NOT_UNIQUE;
+        }
+        return UserConstants.UNIQUE;
+    }
+
+    /**
+     * 校验用户名称是否唯一
+     *
      * @param user 用户信息
      * @return
      */
@@ -240,14 +262,10 @@ public class SysTeacherServiceImpl implements ISysTeacherService {
      */
     @Override
     public void checkUserAllowed(SysUser user) {
-        if (StringUtils.isNotNull(user.getUserId())) {
-
-            if (SecurityUtils.getUserId() != 1 && user.getUserId() == 2) {
-                throw new ServiceException("不允许操作管理员用户");
-            }
-
-            if (user.isAdmin()) {
-                throw new ServiceException("不允许操作超级管理员用户");
+        if (user.getUserId() != null) {
+            if ((SecurityUtils.getUserId() != 1 && user.getUserId() == 2) || user.isAdmin()) {
+                //不允许操作管理员用户 或 不允许操作超级管理员用户
+                throw new ServiceException("不允许操作");
             }
         }
     }
@@ -261,20 +279,23 @@ public class SysTeacherServiceImpl implements ISysTeacherService {
     @Override
     @Transactional(rollbackFor = Exception.class)
     public int insertUser(SysUser user) {
-        //将10进制卡号转换至16进制
-        if(StringUtils.isNotEmpty(user.getCardNum())){
-            if(StringUtils.isNumeric(user.getCardNum())){
-                Long carNum10 = Long.parseLong(user.getCardNum());
-                String carNum16 = carNum10.toHexString(carNum10).toUpperCase();
-                user.setCardNum(carNum16);
-            }else{
-                throw new ServiceException("卡号只能是数字,不能包含字母!");
-            }
-
-        }else{
-            user.setCardNum(null);
-        }
-
+//        //将10进制卡号转换至16进制
+//        if(StringUtils.isNotEmpty(user.getCardNum())){
+//            if(StringUtils.isNumeric(user.getCardNum())){
+//                Long carNum10 = Long.parseLong(user.getCardNum());
+//                String carNum16 = carNum10.toHexString(carNum10).toUpperCase();
+//                user.setCardNum(carNum16);
+//            }else{
+//                throw new ServiceException("卡号只能是数字,不能包含字母!");
+//            }
+//
+//        }else{
+//            user.setCardNum(null);
+//        }
+
+
+        //处理卡号加密
+        passCardNum(user,1);
         // 新增用户信息
         int rows = userMapper.insertUser(user);
         //处理Object 转换实体类
@@ -327,13 +348,15 @@ public class SysTeacherServiceImpl implements ISysTeacherService {
         try {
             //将10进制卡号转换至16进制
             if(StringUtils.isNotEmpty(user.getCardNum())){
-                if(StringUtils.isNumeric(user.getCardNum())){
-                    Long carNum10 = Long.parseLong(user.getCardNum());
-                    String carNum16 = carNum10.toHexString(carNum10).toUpperCase();
-                    user.setCardNum(carNum16);
-                }else{
-                    throw new ServiceException("卡号只能是数字,不能包含字母!");
-                }
+                //处理卡号加密
+                passCardNum(user,0);
+//                if(StringUtils.isNumeric(user.getCardNum())){
+//                    Long carNum10 = Long.parseLong(user.getCardNum());
+//                    String carNum16 = carNum10.toHexString(carNum10).toUpperCase();
+//                    user.setCardNum(carNum16);
+//                }else{
+//                    throw new ServiceException("卡号只能是数字,不能包含字母!");
+//                }
             }else{
                 user.setCardNum(null);
             }
@@ -352,18 +375,20 @@ public class SysTeacherServiceImpl implements ISysTeacherService {
     @Override
     @Transactional(rollbackFor = Exception.class)
     public int update(SysUser user) {
-        //将10进制卡号转换至16进制
-        if(StringUtils.isNotEmpty(user.getCardNum())){
-            if(StringUtils.isNumeric(user.getCardNum())){
-                Long carNum10 = Long.parseLong(user.getCardNum());
-                String carNum16 = carNum10.toHexString(carNum10).toUpperCase();
-                user.setCardNum(carNum16);
-            }else{
-                throw new ServiceException("卡号只能是数字,不能包含字母!");
-            }
-        }else{
-            user.setCardNum(null);
-        }
+//        //将10进制卡号转换至16进制
+//        if(StringUtils.isNotEmpty(user.getCardNum())){
+//            if(StringUtils.isNumeric(user.getCardNum())){
+//                Long carNum10 = Long.parseLong(user.getCardNum());
+//                String carNum16 = carNum10.toHexString(carNum10).toUpperCase();
+//                user.setCardNum(carNum16);
+//            }else{
+//                throw new ServiceException("卡号只能是数字,不能包含字母!");
+//            }
+//        }else{
+//            user.setCardNum(null);
+//        }
+        //处理卡号加密
+        passCardNum(user,0);
         //处理Object 转换实体类
         List <Object> permitMenus = user.getPermitMenus();
         List<SysPermitMenu> newPermitMenus = new ArrayList<>();
@@ -375,7 +400,10 @@ public class SysTeacherServiceImpl implements ISysTeacherService {
             // 插入最新用户绑定的权限数据
             sysPermitMenuService.insertSysPermitMenuList(null,user.getUserId(),newPermitMenus);
         }
-        return userMapper.updateUser(user);
+        if (userMapper.checkCardSimpleUnique(user)>0) {
+            throw new ServiceException("卡号重复,请重新录入!");
+        }
+        return userMapper.updateTeacherUser(user);
     }
 
 
@@ -392,6 +420,54 @@ public class SysTeacherServiceImpl implements ISysTeacherService {
         return 1;
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Map <String, Object> updateCardNum(List <SysUser> userList) {
+        LongAdder count = new LongAdder();
+        String[] cardNums = new String[userList.size()];
+        //todo 将所有的卡号转换成加密后的卡号
+        Optional.ofNullable(userList).orElseGet(Collections::emptyList)
+                .stream()
+                .forEach(a->{
+                    //处理卡号加密
+                    passCardNum(a,0);
+                    cardNums[count.intValue()] = a.getCardNumSimple();
+                    count.increment();
+                });
+        //todo 将所有的加密后卡号,查询校验是否有除自己以外的卡号重复
+        List<SysUser> resutUserList = userMapper.queryCardNumByIds(cardNums);
+
+        List<String> repeatList = new ArrayList <>();
+
+        Consumer<SysUser> consumer = a->Optional.ofNullable(userList).orElseGet(Collections::emptyList)
+                .stream()
+                .filter(b->b.getCardNumSimple().equals(a.getCardNumSimple())&&b.getUserId().longValue()!=a.getUserId().longValue())
+                .forEach(b->{
+                    repeatList.add(DESUtils.decrypt(a.getCardNumSimple()));
+                });
+
+        Optional.ofNullable(resutUserList).orElseGet(Collections::emptyList)
+                .stream()
+                .forEach(a->{
+                    consumer.accept(a);
+                });
+
+        Map<String,Object> allMap = new HashMap <>();
+        if(repeatList.size()>0){
+            allMap.put("repeatCard",-1);
+            allMap.put("repeatList",repeatList);
+        }else{
+            //todo 批量修改卡号
+            Optional.ofNullable(userList).orElseGet(Collections::emptyList)
+                    .stream()
+                    .forEach(a->{
+                        userMapper.updateTeacherUser(a);
+                    });
+            allMap.put("repeatCard",0);
+        }
+
+        return allMap;
+    }
 
 
     /**
@@ -671,13 +747,13 @@ public class SysTeacherServiceImpl implements ISysTeacherService {
             }
             user.getFailRemark().append("姓名不能为空、");
         }else{
-            if(user.getNickName().length()>8){
+            if(user.getNickName().length()>50){
                 if(checkBox){
                     user.getFailRemark().append("失败:");
                     failSysUserList.add(user);
                     checkBox = false;
                 }
-                user.getFailRemark().append("姓名最多个字符、");
+                user.getFailRemark().append("姓名最多五十个字符、");
             }
         }
 
@@ -717,19 +793,20 @@ public class SysTeacherServiceImpl implements ISysTeacherService {
             user.getFailRemark().append("身份不能为空、");
         }
 
-        if(StringUtils.isNotEmpty(user.getCardNum()) && !StringUtils.isNumeric(user.getCardNum())){
-            if(checkBox){
-                user.getFailRemark().append("失败:");
-                failSysUserList.add(user);
-                checkBox = false;
-            }
-            user.getFailRemark().append("卡号只能为数字、");
-        }
+//        if(StringUtils.isNotEmpty(user.getCardNum()) && !StringUtils.isNumeric(user.getCardNum())){
+//            if(checkBox){
+//                user.getFailRemark().append("失败:");
+//                failSysUserList.add(user);
+//                checkBox = false;
+//            }
+//            user.getFailRemark().append("卡号只能为数字、");
+//        }
 
         if(StringUtils.isNotEmpty(user.getCardNum())){
-            Long carNum10 = Long.parseLong(user.getCardNum());
-            String carNum16 = carNum10.toHexString(carNum10).toUpperCase();
-            SysUser sysUser = userMapper.selectUserByCardNum(carNum16);
+//            Long carNum10 = Long.parseLong(user.getCardNum());
+//            String carNum16 = carNum10.toHexString(carNum10).toUpperCase();
+            String desCardNum = DESUtils.encrypt(user.getCardNum());
+            SysUser sysUser = userMapper.selectUserByCardNum(desCardNum);
             if(StringUtils.isNotNull(sysUser)){
                 if(checkBox){
                     user.getFailRemark().append("失败:");
@@ -1158,4 +1235,46 @@ public class SysTeacherServiceImpl implements ISysTeacherService {
         }
         return 1;
     }
+
+
+    /**
+     * 处理卡号加密
+     *
+     * @param user 用户信息,type 1需要生成八位加密编号,0不需要
+     * @return 结果
+     */
+    public void passCardNum(SysUser user,int type){
+        if(StringUtils.isNotEmpty(user.getCardNum())){
+            //通过des生成对称加密卡号
+            String desCardNum = DESUtils.encrypt(user.getCardNum());
+            user.setCardNumSimple(desCardNum);
+            //随机生成八位加密卡号
+            if(type==1){
+                checkCardNum(user);
+
+            }else{
+                SysUser newUser = selectUserById(user.getUserId());
+                if(StringUtils.isNotEmpty(newUser.getCardNum())){
+                    user.setCardNum(newUser.getCardNum());
+                }else{
+                    checkCardNum(user);
+                }
+            }
+        }else{
+            user.setCardNum(null);
+            user.setCardNumSimple(null);
+        }
+    }
+
+    private void checkCardNum(SysUser user){
+        user.setCardNum(DESUtils.getRandomNum());
+        //用死循环来校验卡号重复后,重新生成
+        while(true){
+            if (userMapper.checkCardUnique(user)>0) {
+                user.setCardNum(DESUtils.getRandomNum());
+            }else{
+                break;
+            }
+        }
+    }
 }

+ 2 - 4
zd-modules/zd-modules-system/src/main/java/com/zd/system/service/impl/SysUrlConfigServiceImpl.java

@@ -45,7 +45,6 @@ public class SysUrlConfigServiceImpl implements SysUrlConfigService {
         if(list.size() > 0){
             return list.get(0);
         }
-
         return new SysUrlConfig();
     }
 
@@ -69,11 +68,10 @@ public class SysUrlConfigServiceImpl implements SysUrlConfigService {
      */
     @Override
     public SysUrlConfig update(SysUrlConfig sysUrlConfig) {
-
-        if(sysUrlConfig.getId() == null){
+        if (sysUrlConfig.getId() == null) {
             SaveUtil.setCommonAttr(sysUrlConfig);
             this.sysUrlConfigDao.insert(sysUrlConfig);
-        }else {
+        } else {
             sysUrlConfig.setUpdateBy(SecurityUtils.getUsername());
             sysUrlConfig.setUpdateTime(DateUtils.getNowDate());
             this.sysUrlConfigDao.update(sysUrlConfig);

+ 99 - 89
zd-modules/zd-modules-system/src/main/java/com/zd/system/service/impl/SysUserServiceImpl.java

@@ -66,6 +66,9 @@ public class SysUserServiceImpl implements ISysUserService {
     @Autowired
     private ISysPermitMenuService sysPermitMenuService;
 
+    @Autowired
+    private SysTeacherServiceImpl sysTeacherService;
+
     /**
      * 根据条件分页查询用户列表
      *
@@ -154,8 +157,11 @@ public class SysUserServiceImpl implements ISysUserService {
      * @return 用户对象信息
      */
     @Override
-    public SysUser selectUserInfoByCardNum(String cardNum) {
-        return userMapper.selectUserInfoByCardNum(cardNum);
+    public SysUser selectUserInfoByCardNum(Long userId,String cardNum) {
+        SysUser checkUser = new SysUser();
+        checkUser.setCardNumSimple(cardNum);
+        checkUser.setUserId(userId);
+        return userMapper.selectUserInfoByCardNum(checkUser);
     }
     /**
      * 通过用户ID查询用户
@@ -260,14 +266,10 @@ public class SysUserServiceImpl implements ISysUserService {
      */
     @Override
     public void checkUserAllowed(SysUser user) {
-        if (StringUtils.isNotNull(user.getUserId())) {
-
-            if (SecurityUtils.getUserId() != 1 && user.getUserId() == 2) {
-                throw new ServiceException("不允许操作管理员用户");
-            }
-
-            if (user.isAdmin()) {
-                throw new ServiceException("不允许操作超级管理员用户");
+        if (user.getUserId() != null) {
+            if ((SecurityUtils.getUserId() != 1 && user.getUserId() == 2) || user.isAdmin()) {
+                //不允许操作管理员用户 或 不允许操作超级管理员用户
+                throw new ServiceException("不允许操作");
             }
         }
     }
@@ -282,19 +284,17 @@ public class SysUserServiceImpl implements ISysUserService {
     @Transactional
     public int insertUser(SysUser user) {
         //将10进制卡号转换至16进制
-        if(StringUtils.isNotEmpty(user.getCardNum())){
-            if(StringUtils.isNumeric(user.getCardNum())){
+        if (StringUtils.isNotEmpty(user.getCardNum())) {
+            if (StringUtils.isNumeric(user.getCardNum())) {
                 Long carNum10 = Long.parseLong(user.getCardNum());
                 String carNum16 = carNum10.toHexString(carNum10).toUpperCase();
                 user.setCardNum(carNum16);
-            }else{
+            } else {
                 throw new ServiceException("卡号只能是数字,不能包含字母!");
             }
-
-        }else{
+        } else {
             user.setCardNum(null);
         }
-
         // 新增用户信息
         int rows = userMapper.insertUser(user);
         //处理Object 转换实体类
@@ -678,22 +678,21 @@ public class SysUserServiceImpl implements ISysUserService {
         return failSysUserList;
     }
 
-    private void flowLineCheck(SysUserTeaCherByExcel user, List<SysUserTeaCherByExcel> failSysUserList, String password, SysUserTeaCherByExcel sysUserTeaCherByExcel){
+    private void flowLineCheck(SysUserTeaCherByExcel user, List<SysUserTeaCherByExcel> failSysUserList, String password, SysUserTeaCherByExcel sysUserTeaCherByExcel) {
         // 校验是否装入错误数据
         boolean checkBox = true;
 
         //验证必填字段是否为空
-        if(StringUtils.isEmpty(user.getNickName())){
-            if(checkBox){
+        if (StringUtils.isEmpty(user.getNickName())) {
+            if (checkBox) {
                 user.getFailRemark().append("失败:");
                 failSysUserList.add(user);
                 checkBox = false;
             }
             user.getFailRemark().append("姓名不能为空,");
         }
-
-        if(StringUtils.isEmpty(user.getUserName())){
-            if(checkBox){
+        if (StringUtils.isEmpty(user.getUserName())) {
+            if (checkBox) {
                 user.getFailRemark().append("失败:");
                 failSysUserList.add(user);
                 checkBox = false;
@@ -701,8 +700,8 @@ public class SysUserServiceImpl implements ISysUserService {
             user.getFailRemark().append("工号不能为空,");
         }
 
-        if(StringUtils.isEmpty(user.getDeptName())){
-            if(checkBox){
+        if (StringUtils.isEmpty(user.getDeptName())) {
+            if (checkBox) {
                 user.getFailRemark().append("失败:");
                 failSysUserList.add(user);
                 checkBox = false;
@@ -710,8 +709,8 @@ public class SysUserServiceImpl implements ISysUserService {
             user.getFailRemark().append("所在部门不能为空,");
         }
 
-        if(StringUtils.isEmpty(user.getPistionName())){
-            if(checkBox){
+        if (StringUtils.isEmpty(user.getPistionName())) {
+            if (checkBox) {
                 user.getFailRemark().append("失败:");
                 failSysUserList.add(user);
                 checkBox = false;
@@ -719,21 +718,19 @@ public class SysUserServiceImpl implements ISysUserService {
             user.getFailRemark().append("身份不能为空,");
         }
 
-        if(StringUtils.isNotEmpty(user.getCardNum()) && !StringUtils.isNumeric(user.getCardNum())){
-            if(checkBox){
+        if (StringUtils.isNotEmpty(user.getCardNum()) && !StringUtils.isNumeric(user.getCardNum())) {
+            if (checkBox) {
                 user.getFailRemark().append("失败:");
                 failSysUserList.add(user);
                 checkBox = false;
             }
             user.getFailRemark().append("卡号只能为数字,");
         }
-
-
         // 验证是否存在这个用户
         SysUser checkUser = userMapper.selectUserByUserName(user.getUserName());
         if (StringUtils.isNotNull(user.getUserName()) && StringUtils.isNotNull(checkUser)) {
-            if(!sysUserTeaCherByExcel.getUpDate()){
-                if(checkBox){
+            if (!sysUserTeaCherByExcel.getUpDate()) {
+                if (checkBox) {
                     user.getFailRemark().append("失败:");
                     failSysUserList.add(user);
                     checkBox = false;
@@ -744,7 +741,7 @@ public class SysUserServiceImpl implements ISysUserService {
         // 验证部门是否存在
         SysDept checkDept = deptMapper.getDeptNameUnique(user.getDeptName());
         if (StringUtils.isNotEmpty(user.getDeptName()) && StringUtils.isNull(checkDept)) {
-            if(checkBox){
+            if (checkBox) {
                 user.getFailRemark().append("失败:");
                 failSysUserList.add(user);
                 checkBox = false;
@@ -753,20 +750,20 @@ public class SysUserServiceImpl implements ISysUserService {
         }
         //联系电话重复
         SysUser info = null;
-        if(StringUtils.isNotNull(checkUser) && sysUserTeaCherByExcel.getUpDate()){
-            if(StringUtils.isNotEmpty(user.getPhonenumber())){
+        if (StringUtils.isNotNull(checkUser) && sysUserTeaCherByExcel.getUpDate()) {
+            if (StringUtils.isNotEmpty(user.getPhonenumber())) {
                 SysUser userInfo = new SysUser();
                 userInfo.setUserName(checkUser.getUserName());
                 userInfo.setPhonenumber(user.getPhonenumber());
                 info = userMapper.checkPhoneUniqueNotOwn(userInfo);
             }
-        }else{
-            if(StringUtils.isNull(checkUser) && StringUtils.isNotEmpty(user.getPhonenumber())){
+        } else {
+            if (StringUtils.isNull(checkUser) && StringUtils.isNotEmpty(user.getPhonenumber())) {
                 info = userMapper.checkPhoneUnique(user.getPhonenumber());
             }
         }
-        if(StringUtils.isNotNull(info)){
-            if(checkBox){
+        if (StringUtils.isNotNull(info)) {
+            if (checkBox) {
                 user.getFailRemark().append("失败:");
                 failSysUserList.add(user);
                 checkBox = false;
@@ -777,7 +774,7 @@ public class SysUserServiceImpl implements ISysUserService {
         //身份是否存在
         SysPost sysPost = postMapper.checkPostNameUnique(user.getPistionName());
         if (StringUtils.isNotEmpty(user.getPistionName()) && StringUtils.isNull(sysPost)) {
-            if(checkBox){
+            if (checkBox) {
                 user.getFailRemark().append("失败:");
                 failSysUserList.add(user);
                 checkBox = false;
@@ -785,14 +782,14 @@ public class SysUserServiceImpl implements ISysUserService {
             user.getFailRemark().append("身份不存在,");
         }
         //日期格式转换
-        if(StringUtils.isNotNull(user.getDateBirth())){
+        if (StringUtils.isNotNull(user.getDateBirth())) {
             Date time = user.getDateBirth();
             SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
-            try{
+            try {
                 int year = time.getYear();
                 int month = time.getMonth();
                 int date = time.getDate();
-                if(year > new Date().getYear()-15) {
+                if (year > new Date().getYear() - 15) {
                     if (checkBox) {
                         user.getFailRemark().append("失败:");
                         failSysUserList.add(user);
@@ -800,7 +797,7 @@ public class SysUserServiceImpl implements ISysUserService {
                     }
                     user.getFailRemark().append("出生日期异常最少应大于15岁,");
                 }
-            }catch (Exception e){
+            } catch (Exception e) {
                 if (checkBox) {
                     user.getFailRemark().append("失败:");
                     failSysUserList.add(user);
@@ -810,29 +807,28 @@ public class SysUserServiceImpl implements ISysUserService {
                 log.error("日期格式错误");
             }
         }
-
         //插入正确数据
-        if(StringUtils.isEmpty(user.getFailRemark())){
+        if (StringUtils.isEmpty(user.getFailRemark())) {
             SysUser newSysUser = new SysUser();
             newSysUser.setNickName(user.getNickName());
             newSysUser.setUserName(user.getUserName());
             newSysUser.setDeptId(checkDept.getDeptId());
-            newSysUser.setPosition(sysPost.getPostId()+"");
+            newSysUser.setPosition(sysPost.getPostId() + "");
             newSysUser.setPhonenumber(user.getPhonenumber());
             newSysUser.setEmail(user.getEmail());
             newSysUser.setUserType("11");
             newSysUser.setSex(user.getSex());
             newSysUser.setDateBirth(user.getDateBirth());
             newSysUser.setCardNum(user.getCardNum());
-            if(!sysUserTeaCherByExcel.getSysUserEnable()){
-                newSysUser.setStatus(1+"");
+            if (!sysUserTeaCherByExcel.getSysUserEnable()) {
+                newSysUser.setStatus(1 + "");
             }
             newSysUser.setPassword(SecurityUtils.encryptPassword(password));
             newSysUser.setCreateBy(tokenService.getLoginUser().getNickName());
-            if(StringUtils.isNotNull(checkUser)){
+            if (StringUtils.isNotNull(checkUser)) {
                 newSysUser.setUserId(checkUser.getUserId());
                 this.updateUser(newSysUser);
-            }else{
+            } else {
                 this.insertUser(newSysUser);
             }
         }
@@ -855,19 +851,19 @@ public class SysUserServiceImpl implements ISysUserService {
         String password = configService.selectConfigByKey("sys.user.initPassword");
         for (SysUserStudentByExcel user : userList) {
             //流水线验证
-            flowLineCheckByStudent(user,failSysUserList,password, sysUserStudentByExcel);
+            flowLineCheckByStudent(user, failSysUserList, password, sysUserStudentByExcel);
         }
         return failSysUserList;
     }
 
 
-    private void flowLineCheckByStudent(SysUserStudentByExcel user, List<SysUserStudentByExcel> failSysUserList, String password, SysUserStudentByExcel sysUserStudentByExcel){
+    private void flowLineCheckByStudent(SysUserStudentByExcel user, List<SysUserStudentByExcel> failSysUserList, String password, SysUserStudentByExcel sysUserStudentByExcel) {
         // 校验是否装入错误数据
         Boolean checkBox = true;
 
         //验证必填字段是否为空
-        if(StringUtils.isEmpty(user.getNickName())){
-            if(checkBox){
+        if (StringUtils.isEmpty(user.getNickName())) {
+            if (checkBox) {
                 user.getFailRemark().append("失败:");
                 failSysUserList.add(user);
                 checkBox = false;
@@ -875,8 +871,8 @@ public class SysUserServiceImpl implements ISysUserService {
             user.getFailRemark().append("姓名不能为空,");
         }
 
-        if(StringUtils.isEmpty(user.getUserName())){
-            if(checkBox){
+        if (StringUtils.isEmpty(user.getUserName())) {
+            if (checkBox) {
                 user.getFailRemark().append("失败:");
                 failSysUserList.add(user);
                 checkBox = false;
@@ -884,8 +880,8 @@ public class SysUserServiceImpl implements ISysUserService {
             user.getFailRemark().append("学号不能为空,");
         }
 
-        if(StringUtils.isEmpty(user.getDeptName())){
-            if(checkBox){
+        if (StringUtils.isEmpty(user.getDeptName())) {
+            if (checkBox) {
                 user.getFailRemark().append("失败:");
                 failSysUserList.add(user);
                 checkBox = false;
@@ -893,8 +889,8 @@ public class SysUserServiceImpl implements ISysUserService {
             user.getFailRemark().append("所属学院不能为空,");
         }
 
-        if(StringUtils.isEmpty(user.getMajor())){
-            if(checkBox){
+        if (StringUtils.isEmpty(user.getMajor())) {
+            if (checkBox) {
                 user.getFailRemark().append("失败:");
                 failSysUserList.add(user);
                 checkBox = false;
@@ -902,8 +898,8 @@ public class SysUserServiceImpl implements ISysUserService {
             user.getFailRemark().append("专业不能为空,");
         }
 
-        if(StringUtils.isNotEmpty(user.getCardNum()) && !StringUtils.isNumeric(user.getCardNum())){
-            if(checkBox){
+        if (StringUtils.isNotEmpty(user.getCardNum()) && !StringUtils.isNumeric(user.getCardNum())) {
+            if (checkBox) {
                 user.getFailRemark().append("失败:");
                 failSysUserList.add(user);
                 checkBox = false;
@@ -914,8 +910,8 @@ public class SysUserServiceImpl implements ISysUserService {
         // 验证是否存在这个用户
         SysUser checkUser = userMapper.selectUserByUserName(user.getUserName());
         if (StringUtils.isNotEmpty(user.getUserName()) && StringUtils.isNotNull(checkUser)) {
-            if(!sysUserStudentByExcel.getUpDate()){
-                if(checkBox){
+            if (!sysUserStudentByExcel.getUpDate()) {
+                if (checkBox) {
                     user.getFailRemark().append("失败:");
                     failSysUserList.add(user);
                     checkBox = false;
@@ -926,7 +922,7 @@ public class SysUserServiceImpl implements ISysUserService {
         // 验证部门是否存在
         SysDept checkDept = deptMapper.getDeptNameUnique(user.getDeptName());
         if (StringUtils.isNotEmpty(user.getDeptName()) && StringUtils.isNull(checkDept)) {
-            if(checkBox){
+            if (checkBox) {
                 user.getFailRemark().append("失败:");
                 failSysUserList.add(user);
                 checkBox = false;
@@ -935,31 +931,30 @@ public class SysUserServiceImpl implements ISysUserService {
         }
         //联系电话重复
         SysUser info = null;
-        if(StringUtils.isNotNull(checkUser) && sysUserStudentByExcel.getUpDate()){
+        if (StringUtils.isNotNull(checkUser) && sysUserStudentByExcel.getUpDate()) {
             SysUser userInfo = new SysUser();
             userInfo.setUserName(checkUser.getUserName());
             userInfo.setPhonenumber(user.getPhonenumber());
             info = userMapper.checkPhoneUniqueNotOwn(userInfo);
-        }else{
-            if(StringUtils.isNull(checkUser) && StringUtils.isNotEmpty(user.getPhonenumber())){
+        } else {
+            if (StringUtils.isNull(checkUser) && StringUtils.isNotEmpty(user.getPhonenumber())) {
                 info = userMapper.checkPhoneUnique(user.getPhonenumber());
             }
         }
-        if(StringUtils.isNotNull(info)){
-            if(checkBox){
+        if (StringUtils.isNotNull(info)) {
+            if (checkBox) {
                 user.getFailRemark().append("失败:");
                 failSysUserList.add(user);
                 checkBox = false;
             }
             user.getFailRemark().append("联系电话重复,");
         }
-
         //专业是否存在
         SysMajor sysMajor = new SysMajor();
         sysMajor.setMajorName(user.getMajor());
         List<SysMajor> sysMajorList = sysMajorMapper.selectSysMajorList(sysMajor);
-        if (sysMajorList.size()==0) {
-            if(checkBox){
+        if (sysMajorList.size() == 0) {
+            if (checkBox) {
                 user.getFailRemark().append("失败:");
                 failSysUserList.add(user);
                 checkBox = false;
@@ -967,15 +962,15 @@ public class SysUserServiceImpl implements ISysUserService {
             user.getFailRemark().append("专业不存在,");
         }
         //日期格式转换
-        if(StringUtils.isNotNull(user.getDateBirth())){
+        if (StringUtils.isNotNull(user.getDateBirth())) {
             Date time = user.getDateBirth();
-            if(StringUtils.isNotNull(time)){
+            if (StringUtils.isNotNull(time)) {
                 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
-                try{
+                try {
                     int year = time.getYear();
                     int month = time.getMonth();
                     int date = time.getDate();
-                    if(year > new Date().getYear()-15) {
+                    if (year > new Date().getYear() - 15) {
                         if (checkBox) {
                             user.getFailRemark().append("失败:");
                             failSysUserList.add(user);
@@ -983,7 +978,7 @@ public class SysUserServiceImpl implements ISysUserService {
                         }
                         user.getFailRemark().append("出生日期异常最少应大于15岁,");
                     }
-                }catch (Exception e){
+                } catch (Exception e) {
                     if (checkBox) {
                         user.getFailRemark().append("失败:");
                         failSysUserList.add(user);
@@ -994,15 +989,13 @@ public class SysUserServiceImpl implements ISysUserService {
                 }
             }
         }
-
         // 验证是否存在这个导师,如果通过名字查出两个或以上的,则不绑定老师
         List<SysUser> sysUserByTeacherList = userMapper.selectUserByNickName(user.getTutorUserName());
-        if(sysUserByTeacherList.size()==1){
+        if (sysUserByTeacherList.size() == 1) {
             user.setTutorUserId(sysUserByTeacherList.get(0).getUserId());
         }
-
         //插入正确数据
-        if(StringUtils.isEmpty(user.getFailRemark())){
+        if (StringUtils.isEmpty(user.getFailRemark())) {
             SysUser newSysUser = new SysUser();
             newSysUser.setNickName(user.getNickName());
             newSysUser.setUserName(user.getUserName());
@@ -1014,18 +1007,18 @@ public class SysUserServiceImpl implements ISysUserService {
             newSysUser.setSex(user.getSex());
             newSysUser.setDateBirth(user.getDateBirth());
             newSysUser.setCardNum(user.getCardNum());
-            if(!sysUserStudentByExcel.getSysUserEnable()){
-                newSysUser.setStatus(1+"");
+            if (!sysUserStudentByExcel.getSysUserEnable()) {
+                newSysUser.setStatus(1 + "");
             }
             newSysUser.setPassword(SecurityUtils.encryptPassword(password));
             newSysUser.setCreateBy(tokenService.getLoginUser().getNickName());
-            if(StringUtils.isNotNull(user.getTutorUserId())){
-                newSysUser.setTutorUserId(Integer.parseInt(user.getTutorUserId()+""));
+            if (StringUtils.isNotNull(user.getTutorUserId())) {
+                newSysUser.setTutorUserId(Integer.parseInt(user.getTutorUserId() + ""));
             }
-            if(StringUtils.isNotNull(checkUser)){
+            if (StringUtils.isNotNull(checkUser)) {
                 newSysUser.setUserId(checkUser.getUserId());
                 this.updateUser(newSysUser);
-            }else{
+            } else {
                 this.insertUser(newSysUser);
             }
         }
@@ -1176,4 +1169,21 @@ public class SysUserServiceImpl implements ISysUserService {
     public SysUser selectUserIdByPhone(String phone) {
         return userMapper.checkPhoneUnique(phone);
     }
+
+    @Override
+    public void oldCheckNewCard() {
+        List<SysUser> sysUserList = userMapper.oldCheckNewCard();
+        for(SysUser sysUser : sysUserList){
+            try{
+                long num = Long.parseLong(sysUser.getCardNum(),16);
+                sysUser.setCardNum(num+"");
+                //处理卡号加密
+                sysTeacherService.passCardNum(sysUser,1);
+                userMapper.updateUser(sysUser);
+            }catch (Exception e){
+                log.info("卡号解密失败===="+sysUser.getCardNum());
+            }
+        }
+
+    }
 }

+ 1 - 13
zd-modules/zd-modules-system/src/main/java/com/zd/system/service/impl/TeacherServiceImpl.java

@@ -33,7 +33,7 @@ public class TeacherServiceImpl {
      * @return
      */
     public void queryTeacherSuBCount(List<SysUser> list) {
-        if (CollUtil.isEmpty(list)) return ;
+        if (CollUtil.isEmpty(list)) return;
         final Map<Long, List<LabSubjectEntityVO>> collect = new HashMap<>();
         if (CollUtil.isNotEmpty(list)) {
             //得到ids
@@ -44,17 +44,5 @@ public class TeacherServiceImpl {
                 collect.putAll(infoByUserIds.getData().stream().collect(Collectors.groupingBy(LabSubjectEntityVO::getAdminId)));
             }
         }
-        /*list.stream().forEach(a -> {
-            if (collect.containsKey(a.getUserId())) {
-                a.setManageSubCount(collect.get(a.getUserId()).size());
-            } else {
-                a.setManageSubCount(0);
-            }
-        });*/
-
-
-
     }
-
-
 }

+ 60 - 5
zd-modules/zd-modules-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -34,6 +34,7 @@
         <result property="deptName" column="dept_name"/>
         <result property="tutorUserName" column="tutorUserName"/>
         <result property="cardNum" column="card_num"/>
+        <result property="cardNumSimple" column="card_num_simple"/>
         <result property="wechatId" column="wechat_id"/>
         <result property="education" column="education"/>
         <result property="nationality" column="nationality"/>
@@ -89,7 +90,7 @@
         select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,u.user_type,
                d.dept_id, d.parent_id, d.dept_name, d.order_num, d.leader, d.status as dept_status,
                sm.`major_name` major, u.grade, u.category, u.tutor_user_id, u.position, u.nature, u.signature,
-               u.card_num,u.wechat_id,u.education,u.nationality,u.addr,u.work_status,u.date_birth,
+               u.card_num,u.card_num_simple,u.wechat_id,u.education,u.nationality,u.addr,u.work_status,u.date_birth,
                ut.nick_name tutorUserName,u.is_check,
                uf.face_img,sc.class_name,u.major_id,u.signature,pt.`post_name` positionName
         from sys_user u
@@ -106,7 +107,7 @@
         u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
         u.major_id, u.grade, u.tutor_user_id, u.position, p.post_name as positionName,
         u.nature,(select sc.class_name from sys_class sc where sc.id = u.grade) gradeName,
-        u.card_num,u.wechat_id,u.nationality,u.addr,u.work_status,
+        u.card_num,u.card_num_simple,u.wechat_id,u.nationality,u.addr,u.work_status,
         u.date_birth,d.dept_name, d.leader,u.department,
         u.education, u.user_type,sm.`major_name` major,
         ut.nick_name tutorUserName,u.is_check,date_format(u.create_time, '%Y-%m-%d') createTimeStr
@@ -132,6 +133,14 @@
         <if test="cardNum != null and cardNum != ''">
             AND u.card_num = #{cardNum}
         </if>
+        <if test="cardNumSimple != null and cardNumSimple != ''">
+            <if test="cardNumSimple == 1">
+                AND u.card_num_simple is not null
+            </if>
+            <if test="cardNumSimple == 0">
+                AND u.card_num_simple is null
+            </if>
+        </if>
         <if test="userType != null and userType != ''">
             AND u.user_type = #{userType}
         </if>
@@ -322,7 +331,7 @@
 
     <select id="selectUserByCardNum" parameterType="String" resultMap="SysUserResult">
         <include refid="selectUserNewVo"/>
-        where u.card_num = #{cardNum} and u.del_flag = 0
+        where u.card_num_simple = #{cardNumSimple} and u.del_flag = 0
     </select>
 
     <select id="selectUserById" parameterType="Long" resultMap="SysUserResult">
@@ -334,6 +343,18 @@
 		select count(1) from sys_user where user_name = #{userName} and del_flag=0 limit 1
 	</select>
 
+    <select id="checkUserNameUniqueNotOwn" parameterType="com.zd.model.entity.SysUser" resultType="int">
+		select count(1) from sys_user where user_name = #{userName} and del_flag=0 and user_id != #{userId} limit 1
+	</select>
+
+    <select id="checkCardUnique" parameterType="com.zd.model.entity.SysUser" resultType="int">
+		select count(1) from sys_user where card_num = #{cardNum} and del_flag=0 limit 1
+	</select>
+
+    <select id="checkCardSimpleUnique" parameterType="com.zd.model.entity.SysUser" resultType="int">
+		select count(1) from sys_user where card_num_simple = #{cardNumSimple} and del_flag=0 and user_id != #{userId} limit 1
+	</select>
+
     <select id="checkPhoneUnique" parameterType="String" resultMap="SysUserResult">
 		select user_id, phonenumber from sys_user where phonenumber = #{phonenumber} limit 1
 	</select>
@@ -455,6 +476,7 @@
         <if test="department != null and department != ''">department,</if>
         <if test="nature != null and nature != ''">nature,</if>
         <if test="cardNum != null and cardNum != ''">card_num,</if>
+        <if test="cardNumSimple != null and cardNumSimple != ''">card_num_simple,</if>
         <if test="education != null and education != ''">education,</if>
         <if test="nationality != null and nationality != ''">nationality,</if>
         <if test="addr != null and addr != ''">addr,</if>
@@ -485,6 +507,7 @@
         <if test="department != null and department != ''">#{department},</if>
         <if test="nature != null and nature != ''">#{nature},</if>
         <if test="cardNum != null and cardNum != ''">#{cardNum},</if>
+        <if test="cardNumSimple != null and cardNumSimple != ''">#{cardNumSimple},</if>
         <if test="education != null and education != ''">#{education},</if>
         <if test="nationality != null and nationality != ''">#{nationality},</if>
         <if test="addr != null and addr != ''">#{addr},</if>
@@ -520,7 +543,8 @@
             <if test="position != null ">position = #{position},</if>
             <if test="department != null ">department = #{department},</if>
             <if test="nature != null and nature!=''">nature = #{nature},</if>
-            <if test="cardNum != null ">card_num = #{cardNum},</if>
+            <if test="cardNum != null and cardNum!=''">card_num = #{cardNum},</if>
+            <if test="cardNumSimple != null and cardNumSimple!=''">card_num_simple = #{cardNumSimple},</if>
             <if test="education != null and education!=''">education = #{education},</if>
             <if test="nationality != null and nationality!=''">nationality = #{nationality},</if>
             <if test="addr != null and addr != ''">addr = #{addr},</if>
@@ -560,6 +584,7 @@
             <if test="department != null ">department = #{department},</if>
             <if test="nature != null and nature!=''">nature = #{nature},</if>
             card_num = #{cardNum},
+            card_num_simple = #{cardNumSimple},
             <if test="education != null and education!=''">education = #{education},</if>
             <if test="nationality != null and nationality!=''">nationality = #{nationality},</if>
             <if test="addr != null and addr != ''">addr = #{addr},</if>
@@ -598,6 +623,7 @@
             <if test="department != null ">department = #{department},</if>
             <if test="nature != null and nature!=''">nature = #{nature},</if>
             card_num = #{cardNum},
+            card_num_simple = #{cardNumSimple},
             <if test="education != null and education!=''">education = #{education},</if>
             <if test="nationality != null and nationality!=''">nationality = #{nationality},</if>
             <if test="addr != null and addr != ''">addr = #{addr},</if>
@@ -642,6 +668,15 @@
         </foreach>
         and length(phonenumber)=11
     </select>
+
+    <select id="queryCardNumByIds" resultType="com.zd.model.entity.SysUser">
+        select  * from sys_user
+        where card_num_simple in
+        <foreach collection="array" item="cardNums" open="(" separator="," close=")">
+            #{cardNums}
+        </foreach>
+    </select>
+
     <select id="queryCountByDeptIds" resultType="com.zd.model.entity.TotalByID">
 
         select dept_id as id, count(dept_id ) as total from sys_user
@@ -787,7 +822,7 @@
     </select>
 
     <select id="selectUserInfoByCardNum" resultType="com.zd.model.entity.SysUser">
-        SELECT user_id,nick_name,card_num FROM sys_user u WHERE u.card_num = #{cardNum}
+        SELECT user_id,nick_name,card_num,card_num_simple FROM sys_user u WHERE u.card_num_simple = #{cardNumSimple} and u.user_id != #{userId}
     </select>
 
     <select id="getSafeUserList" parameterType="com.zd.model.entity.SysUser" resultMap="SysUserResult">
@@ -799,4 +834,24 @@
             AND FIND_IN_SET(u.user_id, #{safeUserId})
         </if>
     </select>
+
+
+    <select id="oldCheckNewCard" resultMap="SysUserResult">
+        select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.password, u.sex,
+        u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
+        u.major_id, u.grade, u.tutor_user_id, u.position, p.post_name as positionName,
+        u.nature,(select sc.class_name from sys_class sc where sc.id = u.grade) gradeName,
+        u.card_num,u.wechat_id,u.nationality,u.addr,u.work_status,
+        u.date_birth,d.dept_name, d.leader,u.department,
+        u.education, u.user_type,sm.`major_name` major,
+        ut.nick_name tutorUserName,u.is_check,date_format(u.create_time, '%Y-%m-%d') createTimeStr
+        from
+        sys_user u
+        left join sys_dept d on u.dept_id = d.dept_id
+        left join sys_user ut on ut.user_id = u.tutor_user_id
+        left join sys_post p on u.position = p.post_id
+        LEFT JOIN sys_major sm ON sm.id = u.major_id
+        where u.del_flag = '0'
+        AND u.card_num IS NOT NULL AND u.`card_num_simple` IS NULL
+    </select>
 </mapper>