@@ -1,7 +1,6 @@ | |||
package cn.com.taiji.core.model.comm.protocol.ias.portal; | |||
import cn.com.taiji.core.entity.dict.basic.SourceType; | |||
import cn.com.taiji.core.model.comm.protocol.constraint.IntegerConstant; | |||
import cn.com.taiji.core.model.comm.protocol.valid.ErrorMsgBuilder; | |||
import cn.com.taiji.core.model.comm.protocol.valid.RegexConstant; | |||
import lombok.Getter; | |||
@@ -23,13 +22,10 @@ public class LoginByCodeRequest extends AbstractPortalRequest<LoginByCodeRespons | |||
@Pattern(regexp = RegexConstant.SMS_CODE, message = "请传入正确格式的手机验证码") | |||
@NotBlank(message = "手机验证码不能为空") | |||
private String code; | |||
@IntegerConstant(values = "1,2,99") | |||
@NotNull(message = "业务类型不能为空") | |||
private Integer businessType;//1-ETC用户登录 2-业务员登录 99-用户注册 | |||
@NotNull(message = "来源不能为空") | |||
private SourceType loginSource; | |||
protected LoginByCodeRequest() { | |||
public LoginByCodeRequest() { | |||
super(PortalServiceCmd.LOGINBYCODE); | |||
} | |||
@@ -1,4 +1,19 @@ | |||
package cn.com.taiji.core.model.comm.protocol.ias.portal; | |||
import lombok.Getter; | |||
import lombok.Setter; | |||
import lombok.experimental.Accessors; | |||
@Getter | |||
@Setter | |||
@Accessors(chain = true) | |||
public class LoginByCodeResponse extends AbstractPortalResponse { | |||
private String code; | |||
public LoginByCodeResponse(String code) { | |||
this.code = code; | |||
} | |||
public LoginByCodeResponse() { | |||
} | |||
} |
@@ -1,4 +0,0 @@ | |||
package cn.com.taiji.core.model.comm.protocol.ias.portal; | |||
public class LoginCodeResponse extends AbstractPortalResponse { | |||
} |
@@ -2,9 +2,11 @@ package cn.com.taiji.core.model.comm.protocol.ias.portal; | |||
import lombok.Getter; | |||
import lombok.Setter; | |||
import lombok.experimental.Accessors; | |||
@Getter | |||
@Setter | |||
@Accessors(chain = true) | |||
public class LoginConfirmResponse extends AbstractPortalResponse{ | |||
private String accessToken; | |||
private String openId; |
@@ -13,7 +13,7 @@ public enum PortalServiceCmd implements SignServiceCommand { | |||
/** | |||
* 如下接口同时给渠道提供 | |||
*/ | |||
LOGINCODE("发送登录短信验证码", LoginCodeRequest.class),// | |||
SENDCODE("发送登录短信验证码", SendCodeRequest.class),// | |||
LOGINBYCODE("手机验证码登录", LoginByCodeRequest.class),// | |||
LOGINCONFIRM("登录确认", LoginConfirmRequest.class), | |||
LOGOUT("退出登录", LogoutRequest.class),// |
@@ -1,5 +1,6 @@ | |||
package cn.com.taiji.core.model.comm.protocol.ias.portal; | |||
import cn.com.taiji.core.entity.dict.basic.SourceType; | |||
import cn.com.taiji.core.model.comm.protocol.constraint.IntegerConstant; | |||
import cn.com.taiji.core.model.comm.protocol.valid.ErrorMsgBuilder; | |||
import cn.com.taiji.core.model.comm.protocol.valid.RegexConstant; | |||
@@ -14,18 +15,20 @@ import javax.validation.constraints.Pattern; | |||
@Getter | |||
@Setter | |||
@Accessors(chain = true) | |||
public class LoginCodeRequest extends AbstractPortalRequest<LoginCodeResponse> { | |||
public class SendCodeRequest extends AbstractPortalRequest<SendCodeResponse> { | |||
@Pattern(regexp = RegexConstant.REGEX_MOBILE, message = "请传入正确格式的11位手机号码") | |||
@NotBlank(message = "手机号不能为空") | |||
private String mobile; | |||
@IntegerConstant(values = "1,2,99") | |||
@IntegerConstant(values = "0,1,2") | |||
@NotNull(message = "业务类型不能为空") | |||
private Integer businessType;//1-ETC用户登录 2-业务员登录 99-用户注册 | |||
private Integer businessType;//0-登录 1-注册 2-忘记密码 | |||
@NotNull(message = "来源不能为空") | |||
private SourceType loginSource; | |||
protected LoginCodeRequest() { | |||
super(PortalServiceCmd.LOGINCODE); | |||
public SendCodeRequest() { | |||
super(PortalServiceCmd.SENDCODE); | |||
} | |||
@Override |
@@ -0,0 +1,4 @@ | |||
package cn.com.taiji.core.model.comm.protocol.ias.portal; | |||
public class SendCodeResponse extends AbstractPortalResponse { | |||
} |
@@ -2,16 +2,10 @@ package cn.com.taiji.iaw.api.portal; | |||
import cn.com.taiji.common.manager.ManagerException; | |||
import cn.com.taiji.common.web.ApiResponse; | |||
import cn.com.taiji.core.model.comm.protocol.ias.portal.AccessTokenCheckResponse; | |||
import cn.com.taiji.core.model.comm.protocol.ias.portal.LoginConfirmResponse; | |||
import cn.com.taiji.core.model.comm.protocol.ias.portal.LoginResponse; | |||
import cn.com.taiji.core.model.comm.protocol.ias.portal.LogoutResponse; | |||
import cn.com.taiji.core.model.comm.protocol.ias.portal.*; | |||
import cn.com.taiji.iaw.api.MyValidController; | |||
import cn.com.taiji.iaw.manager.portal.PortalManager; | |||
import cn.com.taiji.iaw.model.portal.AccessTokenCheckDto; | |||
import cn.com.taiji.iaw.model.portal.LoginConfirmDto; | |||
import cn.com.taiji.iaw.model.portal.LoginDto; | |||
import cn.com.taiji.iaw.model.portal.LogoutDto; | |||
import cn.com.taiji.iaw.model.portal.*; | |||
import io.swagger.annotations.Api; | |||
import io.swagger.annotations.ApiOperation; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
@@ -20,6 +14,7 @@ import org.springframework.web.bind.annotation.RequestBody; | |||
import org.springframework.web.bind.annotation.RequestMapping; | |||
import org.springframework.web.bind.annotation.RestController; | |||
import javax.servlet.http.HttpServletRequest; | |||
import javax.validation.Valid; | |||
@Api(tags = {"IAS-门户接口:PORTAL"}) | |||
@@ -56,6 +51,13 @@ public class PortalController extends MyValidController { | |||
// return ApiResponse.of(res).setMessage("操作成功"); | |||
// } | |||
@ApiOperation(value = "获取短信验证码") | |||
@PostMapping(value = "/sendCode") | |||
public ApiResponse<SendCodeResponse> sendCode(@Valid @RequestBody SendCodeDto dto) throws ManagerException { | |||
SendCodeResponse res = portalManager.sendCode(dto); | |||
return ApiResponse.of(res).setMessage("操作成功"); | |||
} | |||
@ApiOperation(value = "密码登录") | |||
@PostMapping(value = "/login") | |||
public ApiResponse<LoginResponse> login(@Valid @RequestBody LoginDto dto) throws ManagerException { | |||
@@ -63,15 +65,15 @@ public class PortalController extends MyValidController { | |||
return ApiResponse.of(res).setMessage("操作成功"); | |||
} | |||
// @ApiOperation(value = "验证码登录") | |||
// @PostMapping(value = "/loginByCode") | |||
// public ApiResponse<LoginByCodeResponseDto> loginByCode(@Valid @RequestBody LoginByCodeRequestDto req, | |||
// HttpServletRequest request) throws ManagerException { | |||
// LoginByCodeResponseDto res = portalManager.loginByCode(req); | |||
// logger.info("request url:{},port:{}", request.getRequestURL(), request.getRemotePort()); | |||
// return ApiResponse.of(res).setMessage("操作成功"); | |||
// } | |||
// | |||
@ApiOperation(value = "验证码登录") | |||
@PostMapping(value = "/loginByCode") | |||
public ApiResponse<LoginByCodeResponse> loginByCode(@Valid @RequestBody LoginByCodeDto dto, | |||
HttpServletRequest request) throws ManagerException { | |||
LoginByCodeResponse res = portalManager.loginByCode(dto); | |||
logger.info("request url:{},port:{}", request.getRequestURL(), request.getRemotePort()); | |||
return ApiResponse.of(res).setMessage("操作成功"); | |||
} | |||
@ApiOperation(value = "原1006-登录确认") | |||
@PostMapping(value = "/loginConfirm") | |||
public ApiResponse<LoginConfirmResponse> loginConfirm(@Valid @RequestBody LoginConfirmDto dto) |
@@ -1,14 +1,8 @@ | |||
package cn.com.taiji.iaw.manager.portal; | |||
import cn.com.taiji.common.manager.ManagerException; | |||
import cn.com.taiji.core.model.comm.protocol.ias.portal.AccessTokenCheckResponse; | |||
import cn.com.taiji.core.model.comm.protocol.ias.portal.LoginConfirmResponse; | |||
import cn.com.taiji.core.model.comm.protocol.ias.portal.LoginResponse; | |||
import cn.com.taiji.core.model.comm.protocol.ias.portal.LogoutResponse; | |||
import cn.com.taiji.iaw.model.portal.AccessTokenCheckDto; | |||
import cn.com.taiji.iaw.model.portal.LoginConfirmDto; | |||
import cn.com.taiji.iaw.model.portal.LoginDto; | |||
import cn.com.taiji.iaw.model.portal.LogoutDto; | |||
import cn.com.taiji.core.model.comm.protocol.ias.portal.*; | |||
import cn.com.taiji.iaw.model.portal.*; | |||
import javax.validation.Valid; | |||
@@ -25,9 +19,11 @@ public interface PortalManager { | |||
// | |||
// RegisterFullResponse registerFull(@Valid RegisterFullRequest req) throws ManagerException; | |||
SendCodeResponse sendCode(@Valid SendCodeDto dto) throws ManagerException; | |||
LoginResponse login(@Valid LoginDto dto) throws ManagerException; | |||
// LoginByCodeResponseDto loginByCode(@Valid LoginByCodeRequestDto req) throws ManagerException; | |||
LoginByCodeResponse loginByCode(@Valid LoginByCodeDto dto) throws ManagerException; | |||
LoginConfirmResponse loginConfirm(LoginConfirmDto dto) throws ManagerException; | |||
@@ -2,26 +2,15 @@ package cn.com.taiji.iaw.manager.portal; | |||
import cn.com.taiji.common.manager.ManagerException; | |||
import cn.com.taiji.core.manager.tools.encryption.SM4Util; | |||
import cn.com.taiji.core.model.comm.protocol.ias.portal.AccessTokenCheckResponse; | |||
import cn.com.taiji.core.model.comm.protocol.ias.portal.LoginConfirmResponse; | |||
import cn.com.taiji.core.model.comm.protocol.ias.portal.LoginResponse; | |||
import cn.com.taiji.core.model.comm.protocol.ias.portal.LogoutResponse; | |||
import cn.com.taiji.core.model.comm.protocol.ias.portal.*; | |||
import cn.com.taiji.iaw.manager.AbstractCommManager; | |||
import cn.com.taiji.iaw.model.portal.AccessTokenCheckDto; | |||
import cn.com.taiji.iaw.model.portal.LoginConfirmDto; | |||
import cn.com.taiji.iaw.model.portal.LoginDto; | |||
import cn.com.taiji.iaw.model.portal.LogoutDto; | |||
import cn.com.taiji.iaw.model.portal.*; | |||
import org.springframework.stereotype.Service; | |||
/** | |||
* @Author weicailin | |||
* @Date 2023/3/14 16:34 | |||
* @Email 13079168756@163.com | |||
*/ | |||
@Service | |||
public class PortalManagerImpl extends AbstractCommManager implements PortalManager { | |||
// @Override | |||
// @Override | |||
// public RegisterResponse register(RegisterRequest req) throws ManagerException { | |||
// return jsonPostRepeat(req); | |||
// } | |||
@@ -35,23 +24,21 @@ public class PortalManagerImpl extends AbstractCommManager implements PortalMana | |||
// public RegisterFullResponse registerFull(RegisterFullRequest req) throws ManagerException { | |||
// return jsonPostRepeat(req); | |||
// } | |||
@Override | |||
public SendCodeResponse sendCode(SendCodeDto dto) throws ManagerException { | |||
return jsonPostRepeat(dto.toRequest()); | |||
} | |||
@Override | |||
public LoginResponse login(LoginDto dto) throws ManagerException { | |||
return jsonPostRepeat(dto.toRequest()); | |||
} | |||
// @Override | |||
// public LoginByCodeResponseDto loginByCode(LoginByCodeRequestDto reqDto) throws ManagerException { | |||
// reqDto.validate(); | |||
// LoginByCodeRequest loginByCodeRequest = new LoginByCodeRequest(); | |||
// BeanTools.copyProperties(reqDto,loginByCodeRequest); | |||
// LoginByCodeResponse loginByCodeResponse = jsonPostRepeat(loginByCodeRequest); | |||
// LoginByCodeResponseDto responseDto = new LoginByCodeResponseDto(); | |||
// BeanTools.copyProperties(loginByCodeResponse,responseDto); | |||
// return responseDto; | |||
// } | |||
// | |||
@Override | |||
public LoginByCodeResponse loginByCode(LoginByCodeDto dto) throws ManagerException { | |||
return jsonPostRepeat(dto.toRequest()); | |||
} | |||
@Override | |||
public LoginConfirmResponse loginConfirm(LoginConfirmDto dto) throws ManagerException { | |||
return jsonPostRepeat(dto.toRequest()); |
@@ -0,0 +1,36 @@ | |||
package cn.com.taiji.iaw.model.portal; | |||
import cn.com.taiji.common.manager.ManagerException; | |||
import cn.com.taiji.common.model.BaseModel; | |||
import cn.com.taiji.core.entity.dict.basic.SourceType; | |||
import cn.com.taiji.core.model.comm.protocol.ias.portal.LoginByCodeRequest; | |||
import cn.com.taiji.core.model.comm.protocol.valid.RegexConstant; | |||
import lombok.Getter; | |||
import lombok.Setter; | |||
import lombok.experimental.Accessors; | |||
import javax.validation.constraints.NotBlank; | |||
import javax.validation.constraints.Pattern; | |||
@Getter | |||
@Setter | |||
@Accessors(chain = true) | |||
public class LoginByCodeDto extends BaseModel { | |||
@Pattern(regexp = RegexConstant.REGEX_MOBILE, message = "手机号格式不正确") | |||
@NotBlank(message = "手机号不能为空") | |||
private String mobile; | |||
@Pattern(regexp = RegexConstant.SMS_CODE, message = "请传入正确格式的手机验证码") | |||
@NotBlank(message = "手机验证码不能为空") | |||
private String code; | |||
@NotBlank(message = "来源不能为空") | |||
private String loginSource; | |||
public LoginByCodeRequest toRequest() throws ManagerException { | |||
LoginByCodeRequest request = new LoginByCodeRequest(); | |||
request.setMobile(mobile); | |||
request.setCode(code); | |||
if (SourceType.findByCode(loginSource) == null) throw new ManagerException("未知的登录来源方"); | |||
request.setLoginSource(SourceType.findByCode(loginSource)); | |||
return request; | |||
} | |||
} |
@@ -0,0 +1,38 @@ | |||
package cn.com.taiji.iaw.model.portal; | |||
import cn.com.taiji.common.manager.ManagerException; | |||
import cn.com.taiji.common.model.BaseModel; | |||
import cn.com.taiji.core.entity.dict.basic.SourceType; | |||
import cn.com.taiji.core.model.comm.protocol.constraint.IntegerConstant; | |||
import cn.com.taiji.core.model.comm.protocol.ias.portal.SendCodeRequest; | |||
import cn.com.taiji.core.model.comm.protocol.valid.RegexConstant; | |||
import lombok.Getter; | |||
import lombok.Setter; | |||
import lombok.experimental.Accessors; | |||
import javax.validation.constraints.NotBlank; | |||
import javax.validation.constraints.NotNull; | |||
import javax.validation.constraints.Pattern; | |||
@Getter | |||
@Setter | |||
@Accessors(chain = true) | |||
public class SendCodeDto extends BaseModel { | |||
@Pattern(regexp = RegexConstant.REGEX_MOBILE, message = "请传入正确格式的11位手机号码") | |||
@NotBlank(message = "手机号不能为空") | |||
private String mobile; | |||
@IntegerConstant(values = "0,1,2") | |||
@NotNull(message = "业务类型不能为空") | |||
private Integer businessType;//0-登录 1-注册 2-忘记密码 | |||
@NotBlank(message = "来源不能为空") | |||
private String loginSource; | |||
public SendCodeRequest toRequest() throws ManagerException { | |||
SendCodeRequest request = new SendCodeRequest(); | |||
request.setMobile(mobile); | |||
request.setBusinessType(businessType); | |||
if (SourceType.findByCode(loginSource) == null) throw new ManagerException("未知的登录来源方"); | |||
request.setLoginSource(SourceType.findByCode(loginSource)); | |||
return request; | |||
} | |||
} |
@@ -7,10 +7,7 @@ import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeResponse; | |||
import cn.com.taiji.core.model.comm.protocol.SignJsonRequest; | |||
import cn.com.taiji.core.model.comm.protocol.ias.IasServiceType; | |||
import cn.com.taiji.core.model.comm.protocol.ias.portal.*; | |||
import cn.com.taiji.ias.manager.portal.AccessTokenCheckManager; | |||
import cn.com.taiji.ias.manager.portal.LoginConfirmManager; | |||
import cn.com.taiji.ias.manager.portal.LoginManager; | |||
import cn.com.taiji.ias.manager.portal.LogoutManager; | |||
import cn.com.taiji.ias.manager.portal.*; | |||
import com.zgglyun.common.model.AbstractHttpRequestInfo; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.stereotype.Service; | |||
@@ -25,6 +22,8 @@ public class PortalServiceHandler extends AbstractIasServiceHandler<PortalServic | |||
private LoginConfirmManager loginConfirmManager; | |||
@Autowired | |||
private AccessTokenCheckManager accessTokenCheckManager; | |||
@Autowired | |||
private SendCodeManager sendCodeManager; | |||
public PortalServiceHandler() { | |||
super(IasServiceType.PORTAL); | |||
@@ -42,6 +41,8 @@ public class PortalServiceHandler extends AbstractIasServiceHandler<PortalServic | |||
return loginConfirmManager.serviceHandle((LoginConfirmRequest) request); | |||
case ACCESSTOKENCHECK: | |||
return accessTokenCheckManager.serviceHandle((AccessTokenCheckRequest) request); | |||
case SENDCODE: | |||
return sendCodeManager.serviceHandle((SendCodeRequest) request); | |||
default: | |||
throw FileProtocolSystemError.NOT_SUPPORT.toHandleException(jsonReq.getIfCode()); | |||
} |
@@ -24,7 +24,7 @@ public abstract class AbstractLoginManager extends AbstractManager { | |||
@Autowired | |||
private StaffRepo staffRepo; | |||
@Autowired | |||
private RedisWrapManager redisManager; | |||
protected RedisWrapManager redisManager; | |||
protected Staff findAndValidStaff(String openId, SourceType loginSource) throws ServiceHandleException { | |||
if (loginSource != SourceType.SERVICE_HALL && loginSource != SourceType.WEB) return null; |
@@ -0,0 +1,38 @@ | |||
package cn.com.taiji.ias.manager.portal; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.core.entity.user.AccountInfo; | |||
import cn.com.taiji.core.model.comm.protocol.ias.portal.LoginByCodeRequest; | |||
import cn.com.taiji.core.model.comm.protocol.ias.portal.LoginByCodeResponse; | |||
import cn.com.taiji.core.model.comm.protocol.valid.GlyServiceError; | |||
import cn.com.taiji.core.repo.jpa.user.AccountInfoRepo; | |||
import cn.com.taiji.ias.model.LoginFinals; | |||
import cn.com.taiji.ias.model.RedisKeyGenerator; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.stereotype.Service; | |||
import java.util.UUID; | |||
import java.util.concurrent.TimeUnit; | |||
@Service | |||
public class LoginByCodeManager extends AbstractLoginManager { | |||
@Autowired | |||
private AccountInfoRepo accountInfoRepo; | |||
public LoginByCodeResponse serviceHandle(LoginByCodeRequest request) throws ServiceHandleException { | |||
String smsCode = redisManager.get(RedisKeyGenerator.getSmsCodeKey(request.getMobile(), request.getLoginSource().name(), 1)); | |||
if (!hasText(smsCode)) | |||
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("短信验证码已过期,请重新发送"); | |||
if (!smsCode.equals(request.getCode())) | |||
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("短信验证码错误!"); | |||
AccountInfo accountInfo = accountInfoRepo.findByAccount(request.getMobile()); | |||
if (accountInfo == null) throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("手机号输入错误"); | |||
findAndValidStaff(accountInfo.getOpenId(), request.getLoginSource()); | |||
String code = UUID.randomUUID().toString().replaceAll("-", "");// code用于换Token,还完Token就没用了 | |||
redisManager.set(RedisKeyGenerator.getLoginOpenIdByCodeKey(code, request.getLoginSource().name()), accountInfo.getOpenId(), LoginFinals.LOGIN_CODE_EXPIRED, TimeUnit.MINUTES); | |||
LoginByCodeResponse response = new LoginByCodeResponse(); | |||
response.setInfo("登录成功"); | |||
return response; | |||
} | |||
} |
@@ -9,8 +9,14 @@ import org.springframework.stereotype.Service; | |||
@Service | |||
public class LogoutManager extends AbstractLoginManager { | |||
public LogoutResponse serviceHandle(LogoutRequest request) throws ServiceHandleException { | |||
checkTokenCache(request.getAccessToken(), request.getOpenId(), request.getLoginSource()); | |||
public LogoutResponse serviceHandle(LogoutRequest request) { | |||
try { | |||
checkTokenCache(request.getAccessToken(), request.getOpenId(), request.getLoginSource()); | |||
} catch (ServiceHandleException e) { | |||
LogoutResponse response = new LogoutResponse(); | |||
response.setInfo("退出成功"); | |||
return response; | |||
} | |||
deleteTokenCache(request.getAccessToken(), request.getOpenId()); | |||
LogoutResponse response = new LogoutResponse(); | |||
response.setInfo("退出成功"); |
@@ -0,0 +1,28 @@ | |||
package cn.com.taiji.ias.manager.portal; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.core.model.comm.protocol.ias.portal.SendCodeRequest; | |||
import cn.com.taiji.core.model.comm.protocol.ias.portal.SendCodeResponse; | |||
import cn.com.taiji.core.model.comm.protocol.valid.GlyServiceError; | |||
import cn.com.taiji.ias.model.LoginFinals; | |||
import cn.com.taiji.ias.model.RedisKeyGenerator; | |||
import org.springframework.stereotype.Service; | |||
import java.util.concurrent.TimeUnit; | |||
@Service | |||
public class SendCodeManager extends AbstractLoginManager { | |||
public SendCodeResponse serviceHandle(SendCodeRequest request) throws ServiceHandleException { | |||
String code = redisManager.get(RedisKeyGenerator.getSmsCodeKey(request.getMobile(), request.getLoginSource().name(), request.getBusinessType())); | |||
if (hasText(code)) | |||
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("短信验证码在有效期内,请勿重复发送"); | |||
code = (Math.random() * 1000000 + "").substring(0, 6); | |||
logger.info("短信验证码:{}", code); | |||
//TODO 短信接口 | |||
redisManager.set(RedisKeyGenerator.getSmsCodeKey(request.getMobile(), request.getLoginSource().name(), request.getBusinessType()), code, LoginFinals.LOGIN_SMS_CODE_EXPIRED, TimeUnit.MINUTES); | |||
SendCodeResponse response = new SendCodeResponse(); | |||
response.setInfo("短信验证码发送成功"); | |||
return response; | |||
} | |||
} |
@@ -8,5 +8,7 @@ public class LoginFinals extends SysFinals { | |||
public final static int LOGIN_FAILED_EXPIRE = 5;// 分钟 | |||
public final static int LOGIN_CODE_EXPIRED = 5 * 60;// 分钟 | |||
public final static int LOGIN_TOKEN_EXPIRED = 24 * 60;// 分钟 | |||
public final static int LOGIN_SMS_CODE_EXPIRED = 1;// 分钟 | |||
} |
@@ -39,4 +39,8 @@ public class RedisKeyGenerator extends AbstractManager { | |||
return LOGIN_KEY_PREFIX + COLON + "gettoken" + COLON + openId; | |||
} | |||
public static String getSmsCodeKey(String mobile, String loginSource, Integer businessType) { | |||
return LOGIN_KEY_PREFIX + COLON + "getsmscode" + COLON + mobile + COLON + loginSource + COLON + businessType; | |||
} | |||
} |