Browse Source

用户相关

sqg 3 năm trước cách đây
mục cha
commit
b806ddf343

+ 86 - 26
tianhu-system/src/main/java/com/tianhu/system/controller/SysUserController.java

@@ -107,7 +107,7 @@ public class SysUserController extends BaseController
     @Autowired
     private ISysUserCompanyRelService iSysUserCompanyRelService;
     @Autowired
-    private ISysCompanyService sysCompanyService;
+    private ISysLogininforService iSysLogininforService;
     @Autowired
     private RemoteSystemService remoteSystemService;
     @Autowired
@@ -173,6 +173,28 @@ public class SysUserController extends BaseController
         SysUser sysUser = userService.selectUserByUserName(username);
         // 短信验证码登陆 或者 验证码注册
         if ("1".equals(type) || "2".equals(type)) {
+            //当前时间
+            Date nowDate = DateUtils.getNowDate();
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+            String dateTime = simpleDateFormat.format(nowDate);
+            //冻结时间
+            Date time = sysUser.getFrozen_date();
+            if(time != null) {
+                Calendar c = Calendar.getInstance();
+                c.setTime(time);
+                c.add(Calendar.DAY_OF_MONTH, 1);
+                Date nomalDate = c.getTime();
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+                String endDate = sdf.format(time);
+                //冻结结束时间
+                String nomalDates = sdf.format(nomalDate);
+                //时间比较
+                int compareTo = endDate.compareTo(dateTime);
+                if (compareTo == 0 && UserStatus.DELETED.getCode().equals(sysUser.getStatus())) {
+                    remoteLogService.saveLogininfor(username, Constants.LOGIN_FAIL, "对不起,您的账号已冻结,请" + nomalDates + "尝试登陆", sysUser.getCompanyId());
+                    return R.fail("对不起,您的账号:" + username + " 已冻结,请" + nomalDates + "尝试登陆");
+                }
+            }
             // 验证短信验证码
             if(CommonUtil.isNotEmpty(shortMessageCode)){
                 LambdaQueryWrapper<PubVerifyCode> pubVerifyCode = new LambdaQueryWrapper<>();
@@ -269,9 +291,9 @@ public class SysUserController extends BaseController
             int compareTo = 0;
             //冻结开始时间
             Date frozenDate = sysUser.getFrozen_date();
-            String startDate = "";
             //到期时间
             String endDate = "";
+            String nomalDates = "";
             //当前时间
             Date nowDate = DateUtils.getNowDate();
             SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
@@ -279,8 +301,6 @@ public class SysUserController extends BaseController
             //登录错误次数
             String frozenSecond = sysUser.getFrozen_second();
             if(frozenDate != null) {
-                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-                startDate = sdf.format(frozenDate);
                 //解冻时间
                 SysUser endUser = userService.selectUserByUserName(username);
                 Date time = endUser.getFrozen_date();
@@ -288,29 +308,28 @@ public class SysUserController extends BaseController
                 c.setTime(time);
                 c.add(Calendar.DAY_OF_MONTH, 1);
                 Date nomalDate = c.getTime();
-                SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
-                endDate = sdf1.format(nomalDate);
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+                endDate = sdf.format(time);
+                nomalDates = sdf.format(nomalDate);
                 //时间比较
-                compareTo = dateTime.compareTo(endDate);
-                //冻结时间的第二天
-                if(compareTo == 0 || compareTo == 1){
-                    Nullable dtiTime = null;
+                compareTo = endDate.compareTo(dateTime);
+                //如果冻结时间比当前时间早
+                if(compareTo == -1 ){
                     SysUser suser = new SysUser();
                     suser.setUserId(sysUser.getUserId());
                     suser.setStatus("0");
                     suser.setFrozen_second("0");
-                    suser.setFrozen_date((Date)dtiTime);
+                    frozenSecond = "0";
+                    suser.setFrozen_date(DateUtils.getNowDate());
                     userService.updateUserLogin(suser);
-                }
-                //如果当前时间比冻结结束时间早
-                if (compareTo == -1 && UserStatus.DELETED.getCode().equals(sysUser.getStatus())) {
-                    remoteLogService.saveLogininfor(username, Constants.LOGIN_FAIL, "对不起,您的账号已冻结,请"+ endDate +"尝试登陆",sysUser.getCompanyId());
-                    return R.fail("对不起,您的账号:" + username + " 已冻结,请"+ endDate +"尝试登陆");
+                }else if (compareTo == 0 && UserStatus.DELETED.getCode().equals(sysUser.getStatus())) {
+                    remoteLogService.saveLogininfor(username, Constants.LOGIN_FAIL, "对不起,您的账号已冻结,请"+ nomalDates +"尝试登陆",sysUser.getCompanyId());
+                    return R.fail("对不起,您的账号:" + username + " 已冻结,请"+ nomalDates +"尝试登陆");
                 }
             }
             //登录错误到达五次就转为冻结
             BigDecimal bigDecimal = new BigDecimal(frozenSecond);
-            BigDecimal decimal = new BigDecimal("4");
+            BigDecimal decimal = new BigDecimal("5");
             if (decimal.compareTo(bigDecimal) == 0) {
                 SysUser user = new SysUser();
                 user.setUserId(sysUser.getUserId());
@@ -324,10 +343,10 @@ public class SysUserController extends BaseController
                 c.setTime(time);
                 c.add(Calendar.DAY_OF_MONTH, 1);
                 Date nomalDate = c.getTime();
-                SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
-                endDate = sdf1.format(nomalDate);
-                remoteLogService.saveLogininfor(username, Constants.LOGIN_FAIL, "对不起,您的账号已冻结,请"+ endDate +"尝试登陆",sysUser.getCompanyId());
-                return R.fail("对不起,您的账号:" + username + " 已冻结,请"+ endDate +"尝试登陆");
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+                nomalDates = sdf.format(nomalDate);
+                remoteLogService.saveLogininfor(username, Constants.LOGIN_FAIL, "对不起,您的账号已冻结,请"+ nomalDates +"尝试登陆",sysUser.getCompanyId());
+                return R.fail("对不起,您的账号:" + username + " 已冻结,请"+ nomalDates +"尝试登陆");
             }
             if (StringUtils.isAnyBlank(username, password))
             {
@@ -355,6 +374,7 @@ public class SysUserController extends BaseController
                 SysUser user = new SysUser();
                 user.setUserId(sysUser.getUserId());
                 user.setFrozen_second(result.toString());
+                user.setFrozen_date(DateUtils.getNowDate());
                 userService.updateUserLogin(user);
                 //算出剩余次数
                 BigDecimal threeDecimal = new BigDecimal("5");
@@ -373,6 +393,7 @@ public class SysUserController extends BaseController
                 SysUser user = new SysUser();
                 user.setUserId(sysUser.getUserId());
                 user.setFrozen_second(result.toString());
+                user.setFrozen_date(DateUtils.getNowDate());
                 userService.updateUserLogin(user);
                 //算出剩余次数
                 BigDecimal threeDecimal = new BigDecimal("5");
@@ -391,6 +412,7 @@ public class SysUserController extends BaseController
                 SysUser user = new SysUser();
                 user.setUserId(sysUser.getUserId());
                 user.setFrozen_second(result.toString());
+                user.setFrozen_date(DateUtils.getNowDate());
                 userService.updateUserLogin(user);
                 //算出剩余次数
                 BigDecimal threeDecimal = new BigDecimal("5");
@@ -399,13 +421,12 @@ public class SysUserController extends BaseController
                 remoteLogService.saveLogininfor(username, Constants.LOGIN_FAIL, "密码或账号错误,请重新输入,当日还有"+ surplus +"次试错机会!!",sysUser.getCompanyId());
                 return R.fail("密码或账号错误,请重新输入,当日还有"+ surplus +"次试错机会!!!");
             }
-            //正常登录,冻结时间清空,错误次数归零
-            Nullable dtiTime = null;
+            //正常登录,错误次数归零
             SysUser suser = new SysUser();
             suser.setUserId(sysUser.getUserId());
             suser.setStatus("0");
             suser.setFrozen_second("0");
-            suser.setFrozen_date((Date) dtiTime);
+            suser.setFrozen_date(DateUtils.getNowDate());
             userService.updateUserLogin(suser);
             remoteLogService.saveLogininfor(username, Constants.LOGIN_SUCCESS, "登录成功",sysUser.getCompanyId());
         }
@@ -474,6 +495,13 @@ public class SysUserController extends BaseController
             resMap.put("message", "用户已绑定" + userCompanyRelList.size() + "家企业");
             resMap.put("companyList", companyList);
         }
+        //正常登录,错误次数归零
+        SysUser suser = new SysUser();
+        suser.setUserId(sysUser.getUserId());
+        suser.setStatus("0");
+        suser.setFrozen_second("0");
+        suser.setFrozen_date(DateUtils.getNowDate());
+        userService.updateUserLogin(suser);
         return R.ok(resMap);
     }
 
@@ -613,6 +641,15 @@ public class SysUserController extends BaseController
     @PostMapping
     @Transactional(rollbackFor=Exception.class)
     public AjaxResult add(@Validated @RequestBody SysUser user) throws Exception {
+        String nickName = user.getNickName();
+        //用户姓名正则校验
+        String checkNickName = "^[A-Za-z\\u4e00-\\u9fa5]+$";
+        Pattern regeNickName = Pattern.compile(checkNickName);
+        Matcher matcherNickName = regeNickName.matcher(nickName);
+        boolean isMatNickName = matcherNickName.matches();
+        if(!isMatNickName){
+            throw new Exception("用户姓名格式错误,不能含有特殊字符");
+        }
         LoginUser userInfo = tokenService.getLoginUser();
         SysUser use = userInfo.getSysUser();
         String companyId = use.getCompanyId();
@@ -713,6 +750,15 @@ public class SysUserController extends BaseController
     @PutMapping
     public AjaxResult edit(@Validated @RequestBody SysUser user)throws Exception
     {
+        String nickName = user.getNickName();
+        //用户姓名正则校验
+        String checkNickName = "^[A-Za-z\\u4e00-\\u9fa5]+$";
+        Pattern regeNickName = Pattern.compile(checkNickName);
+        Matcher matcherNickName = regeNickName.matcher(nickName);
+        boolean isMatNickName = matcherNickName.matches();
+        if(!isMatNickName){
+            throw new Exception("用户姓名格式错误,不能含有特殊字符");
+        }
         LoginUser userInfo = tokenService.getLoginUser();
         SysUser use = userInfo.getSysUser();
         String companyId = use.getCompanyId();
@@ -792,6 +838,18 @@ public class SysUserController extends BaseController
             if (!"200".equals(flowableRes.get("code"))) {
                 throw new Exception("审批数据删除部门分组失败!");
             }
+            //删除企业角色用户关联表数据
+            SysRole role = new SysRole();
+            role.setCompanyId(companyId);
+            role.setIsAuto("0");
+            List<SysRole> sysRoleList = roleService.selectRoleList(role);
+            for (SysRole sysRole : sysRoleList){
+                Long roleId = sysRole.getRoleId();
+                Map map = new HashMap();
+                map.put("userId", userId);
+                map.put("roleId", roleId);
+                iSysUserRoleService.deleteSysUserRoleByURId(map);
+            }
         }
         return AjaxResult.success();
     }
@@ -820,14 +878,16 @@ public class SysUserController extends BaseController
     /**
      * 状态修改
      */
-    @PreAuthorize(hasPermi = "system:user:edit")
+    @PreAuthorize(hasPermi = "system:user:statusChange")
     @Log(title = "用户管理", businessType = BusinessType.UPDATE)
     @PutMapping("/changeStatus")
     public AjaxResult changeStatus(@RequestBody SysUser user)
     {
         userService.checkUserAllowed(user);
+        user.setFrozen_date(DateUtils.getNowDate());
+        user.setFrozen_second("0");
         user.setUpdateBy(SecurityUtils.getUsername());
-        return toAjax(userService.updateUserStatus(user));
+        return toAjax(userService.updateUserLogin(user));
     }
 
     /**

+ 7 - 0
tianhu-system/src/main/java/com/tianhu/system/mapper/SysUserRoleMapper.java

@@ -111,6 +111,13 @@ public interface SysUserRoleMapper
     public int deleteSysUserRoleById(Long userId);
 
     /**
+     * 删除用户和角色关联
+     *
+     * @return 结果
+     */
+    public int deleteSysUserRoleByURId(Map map);
+
+    /**
      * 批量删除用户和角色关联
      *
      * @param userIds 需要删除的数据ID

+ 7 - 0
tianhu-system/src/main/java/com/tianhu/system/service/ISysUserRoleService.java

@@ -62,6 +62,13 @@ public interface ISysUserRoleService
     public int deleteSysUserRoleById(Long userId);
 
     /**
+     * 删除用户和角色关联信息
+     *
+     * @return 结果
+     */
+    public int deleteSysUserRoleByURId(Map map);
+
+    /**
      * 查询要删除的数据
      * @param map
      * @return

+ 11 - 0
tianhu-system/src/main/java/com/tianhu/system/service/impl/SysUserRoleServiceImpl.java

@@ -94,6 +94,17 @@ public class SysUserRoleServiceImpl implements ISysUserRoleService
     }
 
     /**
+     * 删除用户和角色关联信息
+     *
+     * @return 结果
+     */
+    @Override
+    public int deleteSysUserRoleByURId(Map map)
+    {
+        return sysUserRoleMapper.deleteSysUserRoleByURId(map);
+    }
+
+    /**
      * 查询要删除的数据
      * @param map
      * @return

+ 3 - 6
tianhu-system/src/main/resources/mapper/system/OwnSysUserMapper.xml

@@ -76,7 +76,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		<if test="deptId != null and deptId != ''">
 			AND d.dept_id = #{deptId}
 		</if>
-		<if test="companyId != '000000'">
+		<if test="companyId != null and companyId != '' and companyId != '000000'">
 			and ucr.sucr_company_id = #{companyId}
 		</if>
 		<if test="userName != null and userName != ''">
@@ -88,11 +88,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		<if test="userId != null and userId != ''">
 			AND u.user_id = #{userId}
 		</if>
-		<if test="status != null and status != '' and status == '1' ">
-			AND (u.status = '1' OR u.status = '2')
-		</if>
-		<if test="status != null and status != '' and status == '0' ">
-			AND u.status = '0'
+		<if test="status != null and status != ''">
+			AND u.status = #{status}
 		</if>
 		<if test="beginTime != null and beginTime != ''"><!-- 开始时间检索 -->
 			AND date_format(u.create_time,'%y%m%d') &gt;= date_format(#{beginTime},'%y%m%d')

+ 4 - 0
tianhu-system/src/main/resources/mapper/system/SysUserRoleMapper.xml

@@ -29,6 +29,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		delete from sys_user_role where user_id=#{userId}
 	</delete>
 
+	<delete id="deleteSysUserRoleByURId" parameterType="map">
+		delete from sys_user_role where user_id=#{userId} and role_id = #{roleId}
+	</delete>
+
 	<insert id="batchUserRole">
 		insert into sys_user_role(user_id, role_id) values
 		<foreach item="item" index="index" collection="list" separator=",">