|
@@ -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));
|
|
|
}
|
|
|
|
|
|
/**
|