Merge #49 into master from cc_20260302_login_password
验证码登录 * cc_20260302_login_password: (3 commits squashed) - fix:新增验证码登录,发送验证码,修改密码接口 - fix - fix Signed-off-by: 王非凡 <accounts_67eba0c5fee9c49c80c8e2b4@mail.teambition.com> Merged-by: 正新 <accounts_6964c7bcd2a2c377c5bbd01b@mail.teambition.com> CR-link: https://codeup.aliyun.com/692ea314dec569489f6f167c/hangzhou/java/custom_zxjp/change/49
This commit is contained in:
@@ -55,7 +55,10 @@ public class TokenValidateFilter implements Filter {
|
||||
"/zxjp/**/api/license",
|
||||
"/zxjp/pc/v3/login/accountLogin",
|
||||
"/zxjp/pc/v3/login/refreshLogin",
|
||||
"/zxjp/ws/**"
|
||||
"/zxjp/ws/**",
|
||||
"/zxjp/pc/v3/login/sendSmsCode",
|
||||
"/zxjp/pc/v3/login/sendSmsCode/test",
|
||||
"/zxjp/pc/v3/login/modifyPassword"
|
||||
|
||||
|
||||
);
|
||||
|
||||
@@ -1,17 +1,30 @@
|
||||
package com.cool.store.controller.webb;
|
||||
|
||||
import com.cool.store.dto.login.ModifyPasswordDTO;
|
||||
import com.cool.store.dto.login.UserLoginDTO;
|
||||
import com.cool.store.dto.login.UserRefreshLoginDTO;
|
||||
import com.cool.store.dto.sms.SendSmsCodeDTO;
|
||||
import com.cool.store.enums.ErrorCodeEnum;
|
||||
import com.cool.store.response.ResponseResult;
|
||||
import com.cool.store.service.enterprise.EnterpriseUserService;
|
||||
import com.cool.store.service.login.LoginBaseService;
|
||||
import com.cool.store.service.login.LoginStrategy;
|
||||
import com.cool.store.service.sms.AliyunSmsService;
|
||||
import com.cool.store.utils.HttpHelper;
|
||||
import com.cool.store.utils.RedisUtilPool;
|
||||
import com.cool.store.utils.SpringContextUtil;
|
||||
import com.cool.store.vo.login.UserLoginVO;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.time.LocalDate;
|
||||
|
||||
import static com.cool.store.service.sms.impl.AliyunSmsServiceImpl.getRandNum;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 登录 前端控制器
|
||||
@@ -25,17 +38,24 @@ import org.springframework.web.bind.annotation.*;
|
||||
@RequestMapping("/pc/v3/login")
|
||||
@RequiredArgsConstructor
|
||||
public class LoginController {
|
||||
private final LoginBaseService loginBaseService;
|
||||
@Resource(name = "passwordLoginServiceImpl")
|
||||
private LoginBaseService loginBaseService;
|
||||
private final EnterpriseUserService enterpriseUserService;
|
||||
private final RedisUtilPool redisUtilPool;
|
||||
private final AliyunSmsService aliyunSmsService;
|
||||
|
||||
@ApiOperation("账号密码登录")
|
||||
private final int SEND_SMS_LIMIT_COUNT = 10;
|
||||
private final int SEND_SMS_IP_LIMIT_COUNT = 100;
|
||||
|
||||
@ApiOperation("登录")
|
||||
@PostMapping("/accountLogin")
|
||||
public ResponseResult<UserLoginVO> accountLogin(@RequestBody UserLoginDTO param) {
|
||||
public ResponseResult accountLogin(@RequestBody UserLoginDTO param) {
|
||||
return SpringContextUtil.getBean(param.getLoginType().getClazzName(), LoginStrategy.class).login(param);
|
||||
}
|
||||
|
||||
@ApiOperation("refresh登录")
|
||||
@PostMapping("/refreshLogin")
|
||||
public ResponseResult<UserLoginVO> refreshLogin(@RequestBody UserRefreshLoginDTO param) {
|
||||
public ResponseResult refreshLogin(@RequestBody UserRefreshLoginDTO param) {
|
||||
return loginBaseService.refreshLogin(param);
|
||||
}
|
||||
|
||||
@@ -44,4 +64,36 @@ public class LoginController {
|
||||
public ResponseResult logout() {
|
||||
return loginBaseService.logout();
|
||||
}
|
||||
|
||||
@ApiOperation("修改密码")
|
||||
@PostMapping("/modifyPassword")
|
||||
public ResponseResult modifyPassword(@Validated @RequestBody ModifyPasswordDTO param) {
|
||||
return enterpriseUserService.modifyPassword(param);
|
||||
}
|
||||
|
||||
@ApiOperation("发送验证码")
|
||||
@PostMapping("/sendSmsCode")
|
||||
public ResponseResult sendSmsCode(@Validated @RequestBody SendSmsCodeDTO param, HttpServletRequest request) {
|
||||
//一天同一个手机号限制发送10条短信
|
||||
String codeKey = "sendSmsCode_" + LocalDate.now() + ":" + param.getMobile();
|
||||
Long sendCount = redisUtilPool.incrby(codeKey, 1, 24 * 60 * 60);
|
||||
if (sendCount > SEND_SMS_LIMIT_COUNT) {
|
||||
return ResponseResult.fail(ErrorCodeEnum.SEND_SMS_LIMIT_COUNT);
|
||||
}
|
||||
String ip = HttpHelper.getIpAddr(request);
|
||||
String ipCacheKey = "sendSmsCode_IP_" + LocalDate.now() + ":" + ip;
|
||||
Long ipSendCount = redisUtilPool.incrby(ipCacheKey, 1, 24 * 60 * 60);
|
||||
if (ipSendCount > SEND_SMS_IP_LIMIT_COUNT) {
|
||||
return ResponseResult.fail(ErrorCodeEnum.SEND_SMS_LIMIT_COUNT);
|
||||
}
|
||||
return aliyunSmsService.sendSmsCode(param.getMobile(), param.getCodeType());
|
||||
}
|
||||
|
||||
@ApiOperation("测试发送验证码")
|
||||
@PostMapping("/sendSmsCode/test")
|
||||
public ResponseResult sendSmsCodeTest(@Validated @RequestBody SendSmsCodeDTO param){
|
||||
String smsCode = getRandNum();
|
||||
redisUtilPool.setString(param.getCodeType() + ":" + param.getMobile(), smsCode, param.getCodeType().getCacheSeconds());
|
||||
return ResponseResult.success(smsCode);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user