提交 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 {
/** 苹果组织官网地址 */
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;
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.EncryptEntity;
import com.pica.cloud.account.account.server.enums.AccountExceptionEnum;
......@@ -107,6 +108,13 @@ public class AutoCodeController extends AccountBaseController {
@ApiOperation("获取短信验证码,无需图形验证码,如h5端")
@PostMapping(value = "/H5/authCode")
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修改手机
// 4重置密码 5忘记密码 7患者招募提交问卷(效验) 8Appe登录绑定手机
BaseRequest request = CryptoUtil.decrypt(entity, BaseRequest.class);
......@@ -131,7 +139,7 @@ public class AutoCodeController extends AccountBaseController {
}
/**
* @Description web获取效验码-老版,记录风控行为 todo joy
* @Description web获取效验码-老版,记录风控行为
* @Author peijun.zhao
* @Date 2020/2/28 9:52
* @ModifyDate 2020/2/28 9:52
......
......@@ -100,7 +100,9 @@ public class PasswordController extends AccountBaseController {
return PicaResponse.toResponse(result);
} else {
// 新版-已注册了的则找回密码
return reSetPwd(request, account);
reSetPwd(request, account);
// 后台生成token返回
return PicaResponse.toResponse(passwordService.findPwdLogin(request, account));
}
} else {
// 老版
......
......@@ -47,6 +47,7 @@ public enum AccountExceptionEnum {
PICA_RC_BLACKLIST("216538", "发送成功"),
PICA_RC_DAY_LIMIT("216539", "今日获取验证码次数已超过上限,请使用账户密码登录"),
PICA_RC_60_SECOND_LIMIT("216540", "验证码发送频率过高,请{remainTime}秒后再试"),
PICA_H5_AUTH_CODE_INTERFACE_OFFED("216541", "该功能已关闭"),
xxx_xxx("","");
......
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.LoginResult;
import com.pica.cloud.account.account.server.req.BaseRequest;
public interface PasswordService {
......@@ -20,4 +21,6 @@ public interface PasswordService {
* @param request 参数模型
*/
void forgetPassword(BaseRequest request, AccountInfoEntity entity);
LoginResult findPwdLogin(BaseRequest request, AccountInfoEntity accountInfo);
}
......@@ -224,6 +224,11 @@ public class LoginServiceImpl implements LoginService {
AccountTypeEnum.LOG_TYPE_LOGIN.getCode());
picaLogUtils.info(entity);
// 密码登录成功以后,清除错误次数记录
String pwdErrorNum = Constants.PWD_ERROR_NUM_KEY.replace("{mobile}", mobile);
if (redisClient.exists(pwdErrorNum)) {
redisClient.del(pwdErrorNum);
}
return result;
}
......
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.Doctor;
import com.pica.cloud.account.account.server.entity.LogPWDModifyEntity;
import com.pica.cloud.account.account.server.entity.*;
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.exception.AccountException;
......@@ -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.service.PasswordService;
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.Value;
import org.springframework.stereotype.Service;
......@@ -35,6 +37,16 @@ public class PasswordServiceImpl implements PasswordService {
@Value("${doubleWritingMode}")
private boolean doubleWritingMode;
@Autowired
private AccountUtils accountUtils;
@Autowired
private TokenUtils tokenUtils;
@Autowired
private DoctorMapper doctorInfoMapper;
@Override
@Transactional
public void modifyPassword(String mobile, String oldPwd, String pwd) {
......@@ -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表
*
......
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.foundation.redis.ICacheClient;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
......@@ -21,6 +23,9 @@ public class AccountWeChatInfoMapperTest {
@Autowired
private AccountWeChatInfoMapper weChatInfoMapper;
@Autowired
private ICacheClient cacheClient;
@org.junit.Test
public void test1(){
/* AccountWeChatInfoEntity record = new AccountWeChatInfoEntity();
......@@ -30,5 +35,8 @@ public class AccountWeChatInfoMapperTest {
record.setCity("邵阳");
int count = weChatInfoMapper.insertSelective(record);
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 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册