提交 ff1f5409 编写于 作者: Chongwen.jiang's avatar Chongwen.jiang

1、h5发送验证码加入redis开关

2、密码登录成功以后清除reids中错误次数
3、重置密码-找回密码流程加入后台生成token和用户信息返回
上级 07177abf
流水线 #22273 已失败 于阶段
in 0 second
...@@ -55,4 +55,7 @@ public class Constants { ...@@ -55,4 +55,7 @@ public class Constants {
/** 苹果组织官网地址 */ /** 苹果组织官网地址 */
public static final String APPLE_ISSUE_URL = "https://appleid.apple.com"; public static final String APPLE_ISSUE_URL = "https://appleid.apple.com";
/** h5端发送短信验证码接口开关缓存key */
public static final String AUTHCODE_H5_SWITCH_KEY = "AUTH-CODE-H5-SWITCH";
} }
package com.pica.cloud.account.account.server.controller; package com.pica.cloud.account.account.server.controller;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.pica.cloud.account.account.server.constants.Constants;
import com.pica.cloud.account.account.server.entity.AccountUnionEntity; import com.pica.cloud.account.account.server.entity.AccountUnionEntity;
import com.pica.cloud.account.account.server.entity.EncryptEntity; import com.pica.cloud.account.account.server.entity.EncryptEntity;
import com.pica.cloud.account.account.server.enums.AccountExceptionEnum; import com.pica.cloud.account.account.server.enums.AccountExceptionEnum;
...@@ -107,6 +108,13 @@ public class AutoCodeController extends AccountBaseController { ...@@ -107,6 +108,13 @@ public class AutoCodeController extends AccountBaseController {
@ApiOperation("获取短信验证码,无需图形验证码,如h5端") @ApiOperation("获取短信验证码,无需图形验证码,如h5端")
@PostMapping(value = "/H5/authCode") @PostMapping(value = "/H5/authCode")
public PicaResponse getH5AuthCode(@RequestBody EncryptEntity entity, HttpServletRequest req) throws Exception { public PicaResponse getH5AuthCode(@RequestBody EncryptEntity entity, HttpServletRequest req) throws Exception {
// 如果该接口已关闭(缓存key存在),则直接返回
if (cacheClient.exists(Constants.AUTHCODE_H5_SWITCH_KEY)) {
logger.info("getH5AuthCode-interface-return");
throw new PicaWarnException(AccountExceptionEnum.PICA_H5_AUTH_CODE_INTERFACE_OFFED.getCode(),
AccountExceptionEnum.PICA_H5_AUTH_CODE_INTERFACE_OFFED.getMessage());
}
// 验证码类型 0默认 1注册 2微信登录绑定手机 3修改手机 // 验证码类型 0默认 1注册 2微信登录绑定手机 3修改手机
// 4重置密码 5忘记密码 7患者招募提交问卷(效验) 8Appe登录绑定手机 // 4重置密码 5忘记密码 7患者招募提交问卷(效验) 8Appe登录绑定手机
BaseRequest request = CryptoUtil.decrypt(entity, BaseRequest.class); BaseRequest request = CryptoUtil.decrypt(entity, BaseRequest.class);
...@@ -131,7 +139,7 @@ public class AutoCodeController extends AccountBaseController { ...@@ -131,7 +139,7 @@ public class AutoCodeController extends AccountBaseController {
} }
/** /**
* @Description web获取效验码-老版,记录风控行为 todo joy * @Description web获取效验码-老版,记录风控行为
* @Author peijun.zhao * @Author peijun.zhao
* @Date 2020/2/28 9:52 * @Date 2020/2/28 9:52
* @ModifyDate 2020/2/28 9:52 * @ModifyDate 2020/2/28 9:52
......
...@@ -100,7 +100,9 @@ public class PasswordController extends AccountBaseController { ...@@ -100,7 +100,9 @@ public class PasswordController extends AccountBaseController {
return PicaResponse.toResponse(result); return PicaResponse.toResponse(result);
} else { } else {
// 新版-已注册了的则找回密码 // 新版-已注册了的则找回密码
return reSetPwd(request, account); reSetPwd(request, account);
// 后台生成token返回
return PicaResponse.toResponse(passwordService.findPwdLogin(request, account));
} }
} else { } else {
// 老版 // 老版
......
...@@ -47,6 +47,7 @@ public enum AccountExceptionEnum { ...@@ -47,6 +47,7 @@ public enum AccountExceptionEnum {
PICA_RC_BLACKLIST("216538", "发送成功"), PICA_RC_BLACKLIST("216538", "发送成功"),
PICA_RC_DAY_LIMIT("216539", "今日获取验证码次数已超过上限,请使用账户密码登录"), PICA_RC_DAY_LIMIT("216539", "今日获取验证码次数已超过上限,请使用账户密码登录"),
PICA_RC_60_SECOND_LIMIT("216540", "验证码发送频率过高,请{remainTime}秒后再试"), PICA_RC_60_SECOND_LIMIT("216540", "验证码发送频率过高,请{remainTime}秒后再试"),
PICA_H5_AUTH_CODE_INTERFACE_OFFED("216541", "该功能已关闭"),
xxx_xxx("",""); xxx_xxx("","");
......
package com.pica.cloud.account.account.server.service; package com.pica.cloud.account.account.server.service;
import com.pica.cloud.account.account.server.entity.AccountInfoEntity; import com.pica.cloud.account.account.server.entity.AccountInfoEntity;
import com.pica.cloud.account.account.server.entity.LoginResult;
import com.pica.cloud.account.account.server.req.BaseRequest; import com.pica.cloud.account.account.server.req.BaseRequest;
public interface PasswordService { public interface PasswordService {
...@@ -20,4 +21,6 @@ public interface PasswordService { ...@@ -20,4 +21,6 @@ public interface PasswordService {
* @param request 参数模型 * @param request 参数模型
*/ */
void forgetPassword(BaseRequest request, AccountInfoEntity entity); void forgetPassword(BaseRequest request, AccountInfoEntity entity);
LoginResult findPwdLogin(BaseRequest request, AccountInfoEntity accountInfo);
} }
...@@ -224,6 +224,11 @@ public class LoginServiceImpl implements LoginService { ...@@ -224,6 +224,11 @@ public class LoginServiceImpl implements LoginService {
AccountTypeEnum.LOG_TYPE_LOGIN.getCode()); AccountTypeEnum.LOG_TYPE_LOGIN.getCode());
picaLogUtils.info(entity); picaLogUtils.info(entity);
// 密码登录成功以后,清除错误次数记录
String pwdErrorNum = Constants.PWD_ERROR_NUM_KEY.replace("{mobile}", mobile);
if (redisClient.exists(pwdErrorNum)) {
redisClient.del(pwdErrorNum);
}
return result; return result;
} }
......
package com.pica.cloud.account.account.server.service.impl; package com.pica.cloud.account.account.server.service.impl;
import com.pica.cloud.account.account.server.entity.AccountInfoEntity; import com.pica.cloud.account.account.server.entity.*;
import com.pica.cloud.account.account.server.entity.Doctor;
import com.pica.cloud.account.account.server.entity.LogPWDModifyEntity;
import com.pica.cloud.account.account.server.enums.AccountExceptionEnum; import com.pica.cloud.account.account.server.enums.AccountExceptionEnum;
import com.pica.cloud.account.account.server.enums.AccountTypeEnum; import com.pica.cloud.account.account.server.enums.AccountTypeEnum;
import com.pica.cloud.account.account.server.exception.AccountException; import com.pica.cloud.account.account.server.exception.AccountException;
...@@ -13,6 +11,10 @@ import com.pica.cloud.account.account.server.mapper.DoctorMapper; ...@@ -13,6 +11,10 @@ import com.pica.cloud.account.account.server.mapper.DoctorMapper;
import com.pica.cloud.account.account.server.req.BaseRequest; import com.pica.cloud.account.account.server.req.BaseRequest;
import com.pica.cloud.account.account.server.service.PasswordService; import com.pica.cloud.account.account.server.service.PasswordService;
import com.pica.cloud.account.account.server.util.AESUtil; import com.pica.cloud.account.account.server.util.AESUtil;
import com.pica.cloud.account.account.server.util.AccountUtils;
import com.pica.cloud.account.account.server.util.TokenUtils;
import com.pica.cloud.foundation.encryption.common.constants.EncryptConstants;
import com.pica.cloud.foundation.encryption.util.EncryptUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -35,6 +37,16 @@ public class PasswordServiceImpl implements PasswordService { ...@@ -35,6 +37,16 @@ public class PasswordServiceImpl implements PasswordService {
@Value("${doubleWritingMode}") @Value("${doubleWritingMode}")
private boolean doubleWritingMode; private boolean doubleWritingMode;
@Autowired
private AccountUtils accountUtils;
@Autowired
private TokenUtils tokenUtils;
@Autowired
private DoctorMapper doctorInfoMapper;
@Override @Override
@Transactional @Transactional
public void modifyPassword(String mobile, String oldPwd, String pwd) { public void modifyPassword(String mobile, String oldPwd, String pwd) {
...@@ -92,6 +104,38 @@ public class PasswordServiceImpl implements PasswordService { ...@@ -92,6 +104,38 @@ public class PasswordServiceImpl implements PasswordService {
} }
} }
/**
* @Description 重置密码-自动登录(生成token)
* @Author Chongwen.jiang
* @Date 2020/3/3 17:44
* @ModifyDate 2020/3/3 17:44
* @Params [request, accountInfo]
* @Return com.pica.cloud.account.account.server.entity.LoginResult
*/
@Override
public LoginResult findPwdLogin(BaseRequest request, AccountInfoEntity accountInfo) {
Long userId = accountUtils.getUserIdByAcctId(request.getProductType(), accountInfo.getId());
Account account2 = new Account();
account2.setId(userId);
account2.setAcctId(accountInfo.getId());
account2.setCreatTime(new Date());
account2.setMobilePhone(request.getMobile());
account2.setRegisterSource(request.getSourceType());
String newToken = tokenUtils.generateToken(account2);
LoginResult result = new LoginResult();
result.setToken(newToken);
result.setUserId(userId);
result.setMobile(request.getMobile());
result.setDoctorId(EncryptUtils.encryptContent(userId + "", EncryptConstants.ENCRYPT_TYPE_ID));
//是否完善过个人信息(云鹊医app才需要)
if (request.getProductType() == AccountTypeEnum.PRODUCT_TYPE_DOCTOR.getCode()) {
Doctor doctorEntity = doctorInfoMapper.selectByPrimaryKey(userId.intValue());
result.setEntireFlag(doctorEntity.getEntireFlag());
}
return result;
}
/** /**
* 双写模式,把密码存储到p_doctor表 * 双写模式,把密码存储到p_doctor表
* *
......
package com.pica.cloud.account.account.server.mapper;// Copyright 2016-2101 Pica. package com.pica.cloud.account.account.server.mapper;// Copyright 2016-2101 Pica.
import com.pica.cloud.account.account.server.constants.Constants;
import com.pica.cloud.account.account.server.entity.AccountWeChatInfoEntity; import com.pica.cloud.account.account.server.entity.AccountWeChatInfoEntity;
import com.pica.cloud.foundation.redis.ICacheClient;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
...@@ -21,6 +23,9 @@ public class AccountWeChatInfoMapperTest { ...@@ -21,6 +23,9 @@ public class AccountWeChatInfoMapperTest {
@Autowired @Autowired
private AccountWeChatInfoMapper weChatInfoMapper; private AccountWeChatInfoMapper weChatInfoMapper;
@Autowired
private ICacheClient cacheClient;
@org.junit.Test @org.junit.Test
public void test1(){ public void test1(){
/* AccountWeChatInfoEntity record = new AccountWeChatInfoEntity(); /* AccountWeChatInfoEntity record = new AccountWeChatInfoEntity();
...@@ -30,5 +35,8 @@ public class AccountWeChatInfoMapperTest { ...@@ -30,5 +35,8 @@ public class AccountWeChatInfoMapperTest {
record.setCity("邵阳"); record.setCity("邵阳");
int count = weChatInfoMapper.insertSelective(record); int count = weChatInfoMapper.insertSelective(record);
System.out.println(count);*/ System.out.println(count);*/
//System.out.println(cacheClient.set(Constants.AUTHCODE_H5_SWITCH_KEY, Constants.AUTHCODE_H5_SWITCH_KEY+"-/account/H5/authCode"));
//System.out.println(cacheClient.del(Constants.AUTHCODE_H5_SWITCH_KEY));
} }
} }
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册