diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/company/controller/CompanyLoginController.java b/jero-boot-incoming-payment/src/main/java/com/jero/company/controller/CompanyLoginController.java index 09029dd3..d7179df1 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/company/controller/CompanyLoginController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/company/controller/CompanyLoginController.java @@ -3,7 +3,6 @@ package com.jero.company.controller; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.jero.common.api.vo.Result; -import com.jero.common.constant.CacheConstant; import com.jero.common.constant.CommonConstant; import com.jero.common.exception.JeroBootException; import com.jero.common.system.api.ISysBaseAPI; @@ -199,15 +198,15 @@ public class CompanyLoginController { @ApiOperation(value = "发送手机号验证码") @GetMapping(value = "/sendVerificationCode") - public Result sendVerificationCode(String mobile) { - mobile = PasswordUtil.encrypt(mobile); + public Result sendVerificationCode(String phone) { + phone = PasswordUtil.encrypt(phone); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(PayContactsManagement::getPhone, mobile); + queryWrapper.eq(PayContactsManagement::getPhone, phone); PayContactsManagement contactsManagement = payContactsManagementService.getOne(queryWrapper); if (Objects.isNull(contactsManagement)){ throw new JeroBootException("手机号不是企业联系人"); } - sysBaseAPI.sendVerificationCode(mobile,"2",null,null); + sysBaseAPI.sendVerificationCode(phone,"2",null,null); if (StringUtils.isBlank(contactsManagement.getPassword())){ return Result.error("updatePassword"); } @@ -215,9 +214,9 @@ public class CompanyLoginController { } @ApiOperation(value = "短信验证码修改密码") - @PostMapping(value = "/changePassword") - public Result changePassword(@RequestBody CompanyLoginVO companyLoginVO) { - payContactsManagementService.changePassword(companyLoginVO); + @PostMapping(value = "/verificationChangePassword") + public Result verificationChangePassword(@RequestBody CompanyLoginVO companyLoginVO) { + payContactsManagementService.verificationChangePassword(companyLoginVO); return Result.OK("修改密码成功"); } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/company/service/IPayContactsManagementService.java b/jero-boot-incoming-payment/src/main/java/com/jero/company/service/IPayContactsManagementService.java index 8047fad2..db31ed58 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/company/service/IPayContactsManagementService.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/company/service/IPayContactsManagementService.java @@ -49,5 +49,5 @@ public interface IPayContactsManagementService extends IService listPayContactsManagement(List phoneList); - void changePassword(CompanyLoginVO companyLoginVO); + void verificationChangePassword(CompanyLoginVO companyLoginVO); } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/company/service/impl/PayContactsManagementServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/company/service/impl/PayContactsManagementServiceImpl.java index 14184292..912a25a6 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/company/service/impl/PayContactsManagementServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/company/service/impl/PayContactsManagementServiceImpl.java @@ -14,7 +14,6 @@ import com.jero.company.entity.PayContactsManagement; import com.jero.company.mapper.PayContactsManagementMapper; import com.jero.company.service.IPayContactsManagementService; import com.jero.company.vo.CompanyLoginVO; -import com.jero.modules.system.entity.SysUser; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -64,14 +63,14 @@ public class PayContactsManagementServiceImpl extends ServiceImpl forgetPassword(@RequestBody SysUser user) { - sysUserService.forgetPassword(user); + @ApiOperation(value = "短信验证码修改密码") + @PostMapping(value = "/verificationChangePassword") + public Result verificationChangePassword(@RequestBody SysLoginVO loginVO) { + sysUserService.verificationChangePassword(loginVO); return Result.OK("修改密码成功"); } + + @ApiOperation(value = "发送手机号验证码") + @GetMapping(value = "/sendVerificationCode") + public Result sendVerificationCode(String phone) { + phone = PasswordUtil.encrypt(phone); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SysUser::getPhone, phone); + SysUser sysUser = sysUserService.getOne(queryWrapper); + if (Objects.isNull(sysUser)){ + throw new JeroBootException("手机号不存在"); + } + sysBaseAPI.sendVerificationCode(phone,"2",null,null); + return Result.OK(); + } } \ No newline at end of file diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/model/SysLoginModel.java b/jero-boot-module-system/src/main/java/com/jero/modules/system/model/SysLoginModel.java index 212b43b5..293ae9b3 100644 --- a/jero-boot-module-system/src/main/java/com/jero/modules/system/model/SysLoginModel.java +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/model/SysLoginModel.java @@ -1,7 +1,12 @@ package com.jero.modules.system.model; +import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.Pattern; /** * 登录表单 @@ -9,6 +14,7 @@ import io.swagger.annotations.ApiModelProperty; * @Author scott * @since 2019-01-18 */ +@Data @ApiModel(value="登录对象", description="登录对象") public class SysLoginModel { @ApiModelProperty(value = "账号") @@ -21,44 +27,4 @@ public class SysLoginModel { private String checkKey; @ApiModelProperty(value = "RSA公钥") private String rsaPublicKey; - - public String getUsername() { - return username; - } - - public void setUsername(String username) { - this.username = username; - } - - public String getPassword() { - return password; - } - - public void setPassword(String password) { - this.password = password; - } - - public String getCaptcha() { - return captcha; - } - - public void setCaptcha(String captcha) { - this.captcha = captcha; - } - - public String getCheckKey() { - return checkKey; - } - - public void setCheckKey(String checkKey) { - this.checkKey = checkKey; - } - - public String getRsaPublicKey() { - return rsaPublicKey; - } - - public void setRsaPublicKey(String rsaPublicKey) { - this.rsaPublicKey = rsaPublicKey; - } } \ No newline at end of file diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/model/SysLoginVO.java b/jero-boot-module-system/src/main/java/com/jero/modules/system/model/SysLoginVO.java new file mode 100644 index 00000000..9965b27e --- /dev/null +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/model/SysLoginVO.java @@ -0,0 +1,51 @@ +package com.jero.modules.system.model; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.Pattern; + +/** + * @author liJiaRao + * @date 2021-09-24 10:00 + */ +@Data +public class SysLoginVO { + + @ApiModelProperty(value = "用户名") + private String username; + + /**手机号*/ + @ApiModelProperty(value = "手机号") + @NotEmpty(message = "手机号不能为空!") + @Pattern(regexp = "^((13[0-9])|(14[579])|(15([0-3]|[5-9]))|(17[0135678])|(18[0-9])|(19[8|9])|(16[6]))\\d{8}$",message = "手机号码格式错误") + private String phone; + + /** + * 密码 + */ + @ApiModelProperty(value = "密码") + @NotEmpty(message = "密码不能为空!") + private String password; + + /** + * 确认密码 + */ + @ApiModelProperty(value = "确认密码") + @NotEmpty(message = "确认密码不能为空!") + private String verifyPassword; + + /** + * 验证码 + */ + @ApiModelProperty(value = "验证码") + @NotEmpty(message = "验证码不能为空!") + private String verifyCode; + + @ApiModelProperty(value = "RSA公钥") + @NotEmpty(message = "RSA公钥不能为空!") + private String rsaPublicKey; + +} diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysUserService.java b/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysUserService.java index 7342ee7e..c868d1bf 100644 --- a/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysUserService.java +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysUserService.java @@ -14,6 +14,7 @@ import com.jero.common.system.vo.SysUserCacheInfo; import com.jero.modules.system.entity.SysUser; import com.baomidou.mybatisplus.extension.service.IService; +import com.jero.modules.system.model.SysLoginVO; import com.jero.modules.system.model.SysUserSysDepartModel; import com.jero.modules.system.vo.SysUserVo; import org.springframework.transaction.annotation.Transactional; @@ -241,5 +242,5 @@ public interface ISysUserService extends IService { String resetPassword(String username); - void forgetPassword(SysUser user); + void verificationChangePassword(SysLoginVO loginVO); } diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java b/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java index f3160832..b76d5fef 100644 --- a/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jero.common.exception.JeroBootException; import com.jero.common.util.*; +import com.jero.modules.system.model.SysLoginVO; import com.jero.modules.system.vo.SysUserVo; import lombok.extern.slf4j.Slf4j; import com.jero.common.api.vo.Result; @@ -475,46 +476,46 @@ public class SysUserServiceImpl extends ServiceImpl impl } @Override - public void forgetPassword(SysUser user) { - fPRuleCheck(user); + public void verificationChangePassword(SysLoginVO loginVO) { + fPRuleCheck(loginVO); //前端传入密码解密 - String username = user.getUsername(); - String password = user.getPassword(); - String verifyPassword = user.getVerifyPassword(); - String RSAPublicKey = user.getRsapublickey(); + String phone = loginVO.getPhone(); + String password = loginVO.getPassword(); + String verifyPassword = loginVO.getVerifyPassword(); + String RSAPublicKey = loginVO.getRsaPublicKey(); String RSAPrivateKey = String.valueOf(redisUtil.get(RSAPublicKey)); try { password = CommonUtils.decryptBtRsaPriKey(password, RSAPrivateKey); verifyPassword = CommonUtils.decryptBtRsaPriKey(verifyPassword, RSAPrivateKey); - user.setPassword(password); - user.setVerifyPassword(verifyPassword); + loginVO.setPassword(password); + loginVO.setVerifyPassword(verifyPassword); } catch (Exception e) { e.printStackTrace(); } //处理手机获取验证码的逻辑 - Object obj = redisUtil.get("_verification:_phone:" + user.getPhone()); + Object obj = redisUtil.get("_verification:_phone:" + phone); if (obj == null) { throw new JeroBootException("验证码失效,请重新发送"); } String code = obj.toString(); - if (!user.getVerifyCode().equals(code)) { + if (!loginVO.getVerifyCode().equals(code)) { throw new JeroBootException("验证码错误!"); } if (!password.equals(verifyPassword)) { throw new JeroBootException("新密码和确认密码不一致,请重新输入"); } - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(SysUser::getUsername, username); - SysUser sysUser = userMapper.selectOne(wrapper); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SysUser::getPhone, phone); + SysUser sysUser = this.getOne(queryWrapper); if (ObjectUtils.isEmpty(sysUser)) { throw new JeroBootException("用户不存在"); } String passwordEncode = PasswordUtil.encrypt(sysUser.getUsername(), password, sysUser.getSalt()); - user.setPassword(passwordEncode); - userMapper.forgetPassword(user); - redisUtil.del("_verification:_phone:" + user.getPhone()); + sysUser.setPassword(passwordEncode); + userMapper.forgetPassword(sysUser); + redisUtil.del("_verification:_phone:" + phone); List roles = sysBaseAPI.getRolesByUsername(sysUser.getUsername()); //SysRole sysRole = sysRoleMapper.selectOne(new LambdaQueryWrapper().eq(SysRole::getRoleCode, roles.get(0))); } @@ -523,7 +524,7 @@ public class SysUserServiceImpl extends ServiceImpl impl * 忘记密码校验 * @param user */ - private void fPRuleCheck(SysUser user){ + private void fPRuleCheck(SysLoginVO user){ if(ObjectUtils.isEmpty(user.getUsername())){ throw new JeroBootException("用户名为必填"); }else if(user.getUsername().length()>50){