From 6ec88da28636c0f1e859a0cb698e2969bcb25f1e Mon Sep 17 00:00:00 2001 From: "wei.peng" Date: Fri, 28 Dec 2018 16:56:25 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E9=87=8D=E7=BD=AE=E5=AF=86?= =?UTF-8?q?=E7=A0=81=E6=AC=A1=E6=95=B0=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/api/iservice/busi/IPersonnelService.java | 3 ++ .../controller/busi/SysUserController.java | 9 ++++-- .../serviceimpl/base/SystemLoginService.java | 2 +- .../serviceimpl/busi/PersonnelServiceService.java | 32 +++++++++++++++++++++- 4 files changed, 42 insertions(+), 4 deletions(-) diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/IPersonnelService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/IPersonnelService.java index 237697d..e4293e8 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/IPersonnelService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/IPersonnelService.java @@ -95,6 +95,9 @@ public interface IPersonnelService { @ApiOperation(value = "账号唯一检查") void checkSysUserOnly(SysUser user); + @ApiOperation(value = "重置密码检查") + Integer checkSysUserResetPassword(SysUser user); + @ApiOperation(value = "刷新组织冗余") void refreshRefSysUserOrganizeRdd(Long organizeIds); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java index f84d41f..cb91230 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java @@ -355,6 +355,10 @@ public class SysUserController extends CoreBaseController{ try { SysUser user = sysUserService.getSysUserById(Long.parseLong(id)); if(user != null){ + Integer num = personnelService.checkSysUserResetPassword(user); + num = CommonConstWords.LOCK_USER_RESET_PASSWORD - num; + + String password = RandomStringUtils.random(6, true, false); user.setUserLoginPassword(EncryptTool.hexMD5(password)); sysUserService.updateSysUser(user); @@ -377,7 +381,9 @@ public class SysUserController extends CoreBaseController{ LOGGER.info("系统提示:{} 使用密码重置功能帮{}重置了{}账号的密码,新密码是:{}", getSessionUser().getUserName(),user.getUserName(),user.getUserLoginName(),password); - return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + + String result = "操作成功,【"+user.getUserName()+"】账号今日重置密码次数剩余" +num+ "次"; + return ResultBean.success(result).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); }else{ return ResultBean.success("操作失败") .setCode(ResourceEnumUtil.MESSAGE.FAIL.getCode()) @@ -396,7 +402,6 @@ public class SysUserController extends CoreBaseController{ @ApiOperation(value = "发送验证码",notes = "发送邮件验证码") public ResultBean getEmailVerification(String email){ try { - SysUser user = sysUserService.getSysUserByEmail(email); if(user != null){ String verification = RandomStringUtils.random(6, true, false); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemLoginService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemLoginService.java index 3d967f8..b661388 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemLoginService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemLoginService.java @@ -109,7 +109,7 @@ public class SystemLoginService implements ISystemLoginService { redisCore.deleteKey(redisKey); sysUserRDao.update(user); }else{ - redisCore.putObject(redisKey,num,24 * 60 * 60); + redisCore.putObject(redisKey,num,CommonConstWords.REDIS_TIME_DAY_ONE); } return num; } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java index 077041e..3eb604b 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java @@ -2,7 +2,7 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; import cn.estsh.i3plus.core.api.iservice.busi.IPersonnelService; import cn.estsh.i3plus.core.apiservice.util.HqlModelPack; -import cn.estsh.i3plus.platform.common.tool.TimeTool; +import cn.estsh.i3plus.platform.common.util.CommonConstWords; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; @@ -15,14 +15,18 @@ import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.exception.ImppExceptionEnum; +import cn.estsh.impp.framework.boot.util.ImppRedis; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.time.DateFormatUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.ArrayList; +import java.util.Date; import java.util.List; /** @@ -67,6 +71,8 @@ public class PersonnelServiceService implements IPersonnelService { @Autowired private SysPositionRepository positionRDao; + @Resource(name="redisCore") + protected ImppRedis redisCore; @Override public SysUser saveSysUser(SysUser user) { @@ -334,6 +340,30 @@ public class PersonnelServiceService implements IPersonnelService { } } + @Override + @ApiOperation(value = "重置密码检查") + public Integer checkSysUserResetPassword(SysUser user) { + LOGGER.debug("平台用户岗位 SysUser user:{}", user); + Integer num = 0; + if(user != null){ + String day = DateFormatUtils.ISO_8601_EXTENDED_DATE_FORMAT.format(new Date()); + String redisKey = CommonConstWords.REDIS_PREFIX_USER_RESET_PASSWORD + "-" + day + "-" + user.getId(); + Object redisValue = redisCore.getObject(redisKey); + num = redisValue == null ? 1 : Integer.parseInt(redisValue.toString()) + 1; + + if(num > CommonConstWords.LOCK_USER_RESET_PASSWORD){ + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.USER_PERMISSION_RUN_OUT.getCode()) + .setErrorDetail("重置密码次数已使用完毕") + .setErrorSolution("请明日再次使用") + .build(); + } + redisCore.putObject(redisKey,num,CommonConstWords.REDIS_TIME_DAY_ONE); + } + return num; + } + /************************************ 用户唯一检查 ****************************************/ /**