提交 ba221d96 编写于 作者:  Peijun.zhao's avatar Peijun.zhao

Merge branch 'dev-1223' into 'release'

Dev 1223



See merge request !67
流水线 #33746 已失败 于阶段
in 1 second
......@@ -226,7 +226,7 @@
<dependency>
<groupId>com.pica.cloud.foundation</groupId>
<artifactId>pica-cloud-proof-client</artifactId>
<version>1.0.1</version>
<version>1.0.2</version>
<exclusions>
<exclusion>
<groupId>io.swagger</groupId>
......@@ -253,6 +253,11 @@
<!-- </exclusions>-->
<!-- </dependency>-->
<dependency>
<groupId>com.pica.cloud.foundation</groupId>
<artifactId>pica-cloud-message-client</artifactId>
<version>1.0.6-SNAPSHOT</version>
</dependency>
</dependencies>
<dependencyManagement>
......
......@@ -225,7 +225,7 @@ public class AutoCodeController extends AccountBaseController {
public PicaResponse getJigsawCode(@RequestBody EncryptEntity entity,
HttpServletRequest req) throws Exception {
BaseRequest request = CryptoUtil.decrypt(entity, BaseRequest.class);
return PicaResponse.toResponse(authCodeService.getJigsawCode(req, super.getSourceType(), request.getMobile()));
return PicaResponse.toResponse(authCodeService.getJigsawCode(req, super.getSourceType(), request.getMobile(), request.getJigsawVersion()));
}
@ApiOperation("微信获取验证码")
......
......@@ -4,6 +4,7 @@ import com.pica.cloud.account.account.server.entity.AccountUser;
import com.pica.cloud.account.account.server.entity.Doctor;
import com.pica.cloud.account.account.server.enums.AccountExceptionEnum;
import com.pica.cloud.account.account.server.exception.AccountException;
import com.pica.cloud.account.account.server.req.DoctorReq;
import com.pica.cloud.account.account.server.req.RevertAcctsReq;
import com.pica.cloud.account.account.server.service.DoctorService;
import com.pica.cloud.account.account.server.util.AccountUtils;
......@@ -60,6 +61,15 @@ public class DoctorController extends AccountBaseController {
return PicaResponse.toResponse();
}
@ApiOperation("注册完新用户 完善信息接口")
@PutMapping(value = "/register/welcome", produces = "application/json;charset=utf-8")
@EnabledLoginValidate
public PicaResponse registerWelcome(@RequestBody DoctorReq doctorReq) {
doctorReq.setId(fetchPicaUser().getId());
doctorService.registerWelcome(doctorReq);
return PicaResponse.toResponse();
}
/**
* 当前医生是哪个admin账户添加的
*
......
package com.pica.cloud.account.account.server.controller;
import com.alibaba.fastjson.JSONObject;
import com.pica.cloud.account.account.server.entity.AesBean.AesAuthCodeReq;
import com.pica.cloud.account.account.server.entity.EncryptEntity;
import com.pica.cloud.account.account.server.entity.LogLoginAes;
import com.pica.cloud.account.account.server.entity.LoginResult;
import com.pica.cloud.account.account.server.enums.SourceTypeEnum;
import com.pica.cloud.account.account.server.req.BaseRequest;
import com.pica.cloud.account.account.server.req.OneClickLoginReq;
import com.pica.cloud.account.account.server.service.LoginService;
import com.pica.cloud.account.account.server.service.LoginV1Service;
import com.pica.cloud.account.account.server.util.AccountUtils;
import com.pica.cloud.account.account.server.util.CryptoUtil;
import com.pica.cloud.account.account.server.util.RSAUtil;
import com.pica.cloud.foundation.entity.PicaResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Api(description = "登录注册相关接口 v1.0")
@RestController
@RequestMapping("v1/login")
public class LoginV1Controller extends AccountBaseController {
private Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
private LoginV1Service loginV1Service;
@Autowired
private LoginService loginService;
@ApiOperation(value = "app端手机号码一键登录 v1")
@PostMapping("one_click")
public PicaResponse<LoginResult> oneClickLogin(@RequestBody AesAuthCodeReq aesReq) throws Exception {
EncryptEntity entity = new EncryptEntity();
entity.setKey(aesReq.getKey());
entity.setContent(aesReq.getContent());
OneClickLoginReq req = CryptoUtil.decrypt(entity, OneClickLoginReq.class);
req.setProductType(super.getProductType());
req.setSourceType(super.getSourceType());
req.setLoginIp(super.getIpAddr());
req.setUserTokenTourist(super.getUserTokenTourist());
logger.info("one-click req:{}", JSONObject.toJSONString(req));
LoginResult oneClickLoginResultVo = loginV1Service.oneClickLoginV1(req);
return PicaResponse.toResponse(oneClickLoginResultVo);
}
@ApiOperation(value = "手机号统一校验")
@PostMapping("/unifiedVerification")
public PicaResponse unifiedVerification(@RequestBody AesAuthCodeReq req) throws Exception {
EncryptEntity entity = new EncryptEntity();
entity.setKey(req.getKey());
entity.setContent(req.getContent());
BaseRequest request = CryptoUtil.decrypt(entity, BaseRequest.class);
request.setSourceType(super.getSourceType());
logger.info("v1/login/unifiedVerification:{}", JSONObject.toJSONString(request));
loginV1Service.mobileValidate(request);
return PicaResponse.toResponse();
}
/**
* 密码登录接口(app、H5、web --> v1)
*
* @param authCodeReq
* @return
* @throws Exception
*/
@ApiOperation("密码登录接口")
@PostMapping("/password")
public PicaResponse<LoginResult> v1LoginPassword(@RequestBody AesAuthCodeReq authCodeReq) throws Exception {
EncryptEntity entity = new EncryptEntity();
entity.setKey(authCodeReq.getKey());
entity.setContent(authCodeReq.getContent());
BaseRequest request = CryptoUtil.decrypt(entity, BaseRequest.class);
request.setProductType(super.getProductType());
Integer sourceType = super.getSourceType();
request.setSourceType(sourceType == null ? 0 : sourceType);
request.setLoginIp(super.getIpAddr());
request.setUserTokenTourist(super.getUserTokenTourist());
AccountUtils.checkMobilePhone(request.getMobile());
AccountUtils.checkPassword(request.getPassword());
LoginResult login = loginV1Service.v1LoginPassword(request);
if (SourceTypeEnum.SAAS.getCode().equals(sourceType)) {
login.setDoctorId("");
} else {
login.setUserId(null);
}
return PicaResponse.toResponse(login);
}
}
......@@ -34,6 +34,17 @@ public class AesAuthCodeReq {
*/
private String content;
// 是否需要校验该设备登录的手机号
private Boolean checkFlag = false;
public Boolean getCheckFlag() {
return checkFlag;
}
public void setCheckFlag(Boolean checkFlag) {
this.checkFlag = checkFlag;
}
public Integer getBizType() {
return bizType;
}
......
package com.pica.cloud.account.account.server.entity;
import java.util.Date;
public class LogOneChlickCheck {
private Integer id;
private String deviceToken;
private String lastMobilePhone;
private String currMobilePhone;
private Boolean usedShanyan;
private String keepBack;
private Byte deleteFlag;
private Integer createdId;
private Date createdTime;
private Integer modifiedId;
private Date modifiedTime;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getDeviceToken() {
return deviceToken;
}
public void setDeviceToken(String deviceToken) {
this.deviceToken = deviceToken == null ? null : deviceToken.trim();
}
public String getLastMobilePhone() {
return lastMobilePhone;
}
public void setLastMobilePhone(String lastMobilePhone) {
this.lastMobilePhone = lastMobilePhone == null ? null : lastMobilePhone.trim();
}
public String getCurrMobilePhone() {
return currMobilePhone;
}
public void setCurrMobilePhone(String currMobilePhone) {
this.currMobilePhone = currMobilePhone == null ? null : currMobilePhone.trim();
}
public Boolean getUsedShanyan() {
return usedShanyan;
}
public void setUsedShanyan(Boolean usedShanyan) {
this.usedShanyan = usedShanyan;
}
public String getKeepBack() {
return keepBack;
}
public void setKeepBack(String keepBack) {
this.keepBack = keepBack == null ? null : keepBack.trim();
}
public Byte getDeleteFlag() {
return deleteFlag;
}
public void setDeleteFlag(Byte deleteFlag) {
this.deleteFlag = deleteFlag;
}
public Integer getCreatedId() {
return createdId;
}
public void setCreatedId(Integer createdId) {
this.createdId = createdId;
}
public Date getCreatedTime() {
return createdTime;
}
public void setCreatedTime(Date createdTime) {
this.createdTime = createdTime;
}
public Integer getModifiedId() {
return modifiedId;
}
public void setModifiedId(Integer modifiedId) {
this.modifiedId = modifiedId;
}
public Date getModifiedTime() {
return modifiedTime;
}
public void setModifiedTime(Date modifiedTime) {
this.modifiedTime = modifiedTime;
}
}
\ No newline at end of file
......@@ -30,6 +30,35 @@ public class LoginResult {
@ApiModelProperty("accountinfo表主键id")
private Integer acctId;
private Boolean checkStatus = true;
private String suggestMessage;
private String differentMessage;
public Boolean getCheckStatus() {
return checkStatus;
}
public void setCheckStatus(Boolean checkStatus) {
this.checkStatus = checkStatus;
}
public String getSuggestMessage() {
return suggestMessage;
}
public void setSuggestMessage(String suggestMessage) {
this.suggestMessage = suggestMessage;
}
public String getDifferentMessage() {
return differentMessage;
}
public void setDifferentMessage(String differentMessage) {
this.differentMessage = differentMessage;
}
public String getToken() {
return token;
......
......@@ -67,6 +67,9 @@ public enum AccountExceptionEnum {
PAT_QUERY_MAX("216558","查询参数过多"),
PICA_PASSWORD_RESET("216559", "您尚未设置密码,请退出登录后使用密码方式登录进行密码设置"),
MOBILE_NOT_REGISTER("216560", "手机号{mobile}尚未注册"),
PARAMS_BIZ_TYPE_EMPTY("216561", "参数bizType不能为空"),
xxx_xxx("","");
......
package com.pica.cloud.account.account.server.mapper;
import com.pica.cloud.account.account.server.entity.LogOneChlickCheck;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface LogOneChlickCheckMapper {
int deleteByPrimaryKey(Integer id);
int insert(LogOneChlickCheck record);
int insertSelective(LogOneChlickCheck record);
LogOneChlickCheck selectByPrimaryKey(Integer id);
int updateByPrimaryKeySelective(LogOneChlickCheck record);
int updateByPrimaryKey(LogOneChlickCheck record);
int insertOne(LogOneChlickCheck record);
}
\ No newline at end of file
......@@ -54,6 +54,16 @@ public class BaseRequest {
private Integer imageW;
@ApiModelProperty("用户本地token")
private String userTokenTourist;
@ApiModelProperty("拼图version")
private String jigsawVersion;
public String getJigsawVersion() {
return jigsawVersion;
}
public void setJigsawVersion(String jigsawVersion) {
this.jigsawVersion = jigsawVersion;
}
public String getUserTokenTourist() {
return userTokenTourist;
......
package com.pica.cloud.account.account.server.req;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ApiModel
public class DoctorReq {
private Integer id;
@ApiModelProperty("姓名")
private String name;
@ApiModelProperty("科室")
private String department;
@ApiModelProperty("职称")
private String title;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
......@@ -17,6 +17,27 @@ public class OneClickLoginReq {
private String userTokenTourist;
// 是否需要校验该设备登录的手机号
private Boolean checkFlag = false;
private String deviceToken;
public String getDeviceToken() {
return deviceToken;
}
public void setDeviceToken(String deviceToken) {
this.deviceToken = deviceToken;
}
public Boolean getCheckFlag() {
return checkFlag;
}
public void setCheckFlag(Boolean checkFlag) {
this.checkFlag = checkFlag;
}
public String getLoginIp() {
return loginIp;
}
......
......@@ -22,7 +22,7 @@ public interface AuthCodeService {
int validateJigsawCode(HttpServletRequest request, BaseRequest req);
JigsawCodeModel getJigsawCode(HttpServletRequest request, Integer sourceType, String mobile);
JigsawCodeModel getJigsawCode(HttpServletRequest request, Integer sourceType, String mobile, String jigsawVersion);
}
package com.pica.cloud.account.account.server.service;
import com.pica.cloud.account.account.server.entity.Doctor;
import com.pica.cloud.account.account.server.req.DoctorReq;
import java.util.List;
......@@ -26,6 +27,8 @@ public interface DoctorService {
*/
void modifyDoctorInfo(Doctor doctor,Long doctorId);
int registerWelcome(DoctorReq doctorReq);
/**
* 修改医生信息
*
......
......@@ -100,4 +100,5 @@ public interface LoginService {
int insertLoginAesLog(LogLoginAes aes);
LoginResult loginQRCode(BaseRequest request);
}
package com.pica.cloud.account.account.server.service;
import com.pica.cloud.account.account.server.entity.LoginResult;
import com.pica.cloud.account.account.server.req.OneClickLoginReq;
import com.pica.cloud.account.account.server.req.BaseRequest;
public interface LoginV1Service {
LoginResult oneClickLoginV1(OneClickLoginReq req);
void mobileValidate(BaseRequest request);
LoginResult v1LoginPassword(BaseRequest request);
void insertLog(Integer userId, String currMobilePhone, String deviceToken, String keepBack);
}
......@@ -287,7 +287,7 @@ public class AuthCodeServiceImpl implements AuthCodeService {
* @Return com.pica.cloud.account.account.server.model.JigsawCodeModel
*/
@Override
public JigsawCodeModel getJigsawCode(HttpServletRequest request, Integer sourceType, String mobile) {
public JigsawCodeModel getJigsawCode(HttpServletRequest request, Integer sourceType, String mobile, String jigsawVersion) {
if(!SourceTypeEnum.H5.getCode().equals(sourceType)) {
logger.error("getJigsawCode-h5 sourceType error");
throw new PicaWarnException(PicaResultCode.PARAM_IS_INVALID.code(), PicaResultCode.PARAM_IS_INVALID.message());
......@@ -304,7 +304,12 @@ public class AuthCodeServiceImpl implements AuthCodeService {
String key = Constants.JIGSAW_CODE_KEY.replace("{mobile}", mobile);
if (needCheck > 0) {
try {
picResp = sliderImageService.getPic();
if(null != jigsawVersion && jigsawVersion.equals("v1")){
// 新版获取 拼图(指定公司背景图)
picResp = sliderImageService.getPicV1();
}else {
picResp = sliderImageService.getPic();
}
logger.info("getJigsawCode-getPic-code:{}", picResp.getCode());
} catch (Exception e) {
logger.error("getJigsawCode-sliderImageService.getPic invoke exception", e.getMessage());
......
......@@ -8,11 +8,13 @@ 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;
import com.pica.cloud.account.account.server.mapper.*;
import com.pica.cloud.account.account.server.req.DoctorReq;
import com.pica.cloud.account.account.server.service.DoctorService;
import com.pica.cloud.account.account.server.util.AESUtil;
import com.pica.cloud.account.account.server.util.AccountUtils;
import com.pica.cloud.foundation.encryption.common.constants.EncryptConstants;
import com.pica.cloud.foundation.encryption.util.EncryptUtils;
import com.pica.cloud.foundation.entity.PicaWarnException;
import com.pica.cloud.foundation.redis.ICacheClient;
import com.pica.cloud.foundation.utils.utils.StringUtil;
import org.apache.commons.lang3.StringUtils;
......@@ -91,6 +93,30 @@ public class DoctorServiceImpl implements DoctorService {
accountInfoDetailMapper.updateByPrimaryKeySelective(accountInfoEntity);
}
@Override
public int registerWelcome(DoctorReq doctorReq) {
logger.info("registerWelcome req:{}", JSONObject.toJSONString(doctorReq));
Doctor doctor = doctorMapper.selectByPrimaryKey(doctorReq.getId());
if (null == doctor) {
throw new PicaWarnException(AccountExceptionEnum.PICA_PARAMS_ERROR.getCode(),
AccountExceptionEnum.PICA_PARAMS_ERROR.getMessage());
}
/*if(StringUtil.isNotNull(doctorReq.getDepartment())){
doctor.setDepartment(doctorReq.getDepartment());
}
if(StringUtil.isNotNull(doctorReq.getTitle())){
doctor.setTitle(doctorReq.getTitle());
}*/
if (StringUtil.isNotNull(doctorReq.getName())) {
doctor.setName(doctorReq.getName());
doctor.setModifyTime(new Date());
doctor.setModifyId(doctorReq.getId());
return doctorMapper.updateByPrimaryKeySelective(doctor);
}
return 0;
}
@Transactional
@Override
public void deleteDoctorInfo(Integer id, Long modifyId) {
......@@ -211,15 +237,15 @@ public class DoctorServiceImpl implements DoctorService {
@Override
public List<Integer> getDoctorsByInnerOrg() {
String ids = cacheClient.get(Constants.INNER_ORG_IDS);
if(StringUtil.isEmpty(ids)){
if (StringUtil.isEmpty(ids)) {
List<Integer> dbIds = doctorMapper.getDoctorsByInnerOrg(null);
String arrStr = "";
for(Integer i : dbIds){
for (Integer i : dbIds) {
arrStr = arrStr + i + ",";
}
cacheClient.setex(Constants.INNER_ORG_IDS,arrStr,3600);
cacheClient.setex(Constants.INNER_ORG_IDS, arrStr, 3600);
return dbIds;
}else {
} else {
List<Integer> rtnIds = Arrays.asList(ids.split(",")).stream().filter(s -> !"".equals(s)).map(s -> Integer.parseInt(s)).collect(Collectors.toList());
return rtnIds;
}
......
package com.pica.cloud.account.account.server.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.pica.cloud.account.account.server.constants.Constants;
import com.pica.cloud.account.account.server.entity.*;
import com.pica.cloud.account.account.server.enums.AccountTypeEnum;
import com.pica.cloud.account.account.server.enums.SourceTypeEnum;
import com.pica.cloud.account.account.server.enums.AccountExceptionEnum;
import com.pica.cloud.account.account.server.log.AccountLogEntityUtils;
import com.pica.cloud.account.account.server.log.AccountLogUtils;
import com.pica.cloud.account.account.server.mapper.AccountInfoDetailMapper;
import com.pica.cloud.account.account.server.mapper.DoctorMapper;
import com.pica.cloud.account.account.server.mapper.LogOneChlickCheckMapper;
import com.pica.cloud.account.account.server.model.OneClickProcessor;
import com.pica.cloud.account.account.server.req.BaseRequest;
import com.pica.cloud.account.account.server.req.OneClickLoginReq;
import com.pica.cloud.account.account.server.service.LoginV1Service;
import com.pica.cloud.account.account.server.service.RegisterService;
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.IntactUtil;
import com.pica.cloud.account.account.server.util.TokenUtils;
import com.pica.cloud.foundation.completeness.client.utils.IntactUtils;
import com.pica.cloud.foundation.completeness.contract.constants.CommonConstants;
import com.pica.cloud.foundation.encryption.common.constants.EncryptConstants;
import com.pica.cloud.foundation.encryption.util.EncryptUtils;
import com.pica.cloud.foundation.entity.PicaException;
import com.pica.cloud.foundation.entity.PicaResponse;
import com.pica.cloud.foundation.entity.PicaResultCode;
import com.pica.cloud.foundation.entity.PicaWarnException;
import com.pica.cloud.foundation.message.client.EquipmentService;
import com.pica.cloud.foundation.message.common.req.DeviceReq;
import com.pica.cloud.foundation.redis.ICacheClient;
import com.pica.cloud.foundation.utils.utils.ValidateUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@Service
public class LoginV1ServiceImpl implements LoginV1Service {
private Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
private RegisterService registerService;
@Autowired
private OneClickProcessor oneClickProcessor;
@Autowired
private IntactUtil intactUtil;
@Autowired
private AccountUtils accountUtils;
@Autowired
private TokenUtils tokenUtils;
@Autowired
private DoctorMapper doctorInfoMapper;
@Autowired
private AccountLogUtils picaLogUtils;
@Autowired
private AccountInfoDetailMapper accountInfoMapper;
@Autowired
private ICacheClient cacheClient;
@Autowired
private AccountInfoDetailMapper accountInfoDetailMapper;
@Qualifier("accountThreadPool")
@Autowired
private ThreadPoolTaskExecutor poolTaskExecutor;
@Autowired
private LogOneChlickCheckMapper logOneChlickCheckMapper;
@Autowired
private EquipmentService equipmentService;
/**
* 新版一键登录
*
* @param req
* @return
*/
@Override
public LoginResult oneClickLoginV1(OneClickLoginReq req) {
QueryMobileEntity queryMobileEntity = oneClickProcessor.tokenExchangeMobile(req.getToken(), req.getSourceType());
if (queryMobileEntity == null || StringUtils.isBlank(queryMobileEntity.getMobile()) || !ValidateUtils.isMobile(queryMobileEntity.getMobile())) {
logger.error("oneClickLoginV1 闪验获取出错-queryMobileEntity:{}", JSONObject.toJSONString(queryMobileEntity));
throw new PicaException(PicaResultCode.INTERFACE_INVOKE_EXCEPTION.code(), "获取手机号失败!");
}
queryMobileEntity.setSourceType(req.getSourceType());
AccountInfoEntity accountInfoEntity = accountInfoDetailMapper.selectByMobile(AESUtil.encryptV0(queryMobileEntity.getMobile()));
BaseRequest baseRequest = new BaseRequest();
baseRequest.setMobile(queryMobileEntity.getMobile());
baseRequest.setSourceType(req.getSourceType());
baseRequest.setProductType(req.getProductType());
baseRequest.setLoginIp(req.getLoginIp());
baseRequest.setUserTokenTourist(req.getUserTokenTourist());
LoginResult result;
if (accountInfoEntity == null) {
//说明是注册功能
result = registerService.register(baseRequest, queryMobileEntity);
} else {
String deviceToken = req.getDeviceToken();
logger.info("oneClickLoginV1-用户传入的deviceToken为{}", JSONObject.toJSONString(baseRequest));
if (StringUtils.isEmpty(deviceToken)) {
throw new PicaException(PicaResultCode.PARAM_IS_BLANK.code(), PicaResultCode.PARAM_IS_BLANK.message());
}
// 根据deviceToken获取该设备上一次登录的手机号
Integer userId = getUserId(deviceToken);
logger.info("oneClickLoginV1-该设备上次登录的用户id为:{}", userId);
logger.info("oneClickLoginV1-accountInfoEntity, {}", JSONObject.toJSONString(accountInfoEntity));
if (req.getCheckFlag()) {
// 直接登录,不需要校验手机号(点击了继续一键登录)
logger.info("oneClickLoginV1-用户直接登录, {}", JSONObject.toJSONString(baseRequest));
result = processLoginV1(baseRequest, accountInfoEntity.getId(), AccountTypeEnum.LOGIN_ONE_CLICK.getCode(), queryMobileEntity);
// 记录继续一键登录日志
Map<String, String> param = new HashMap();
param.put("req", JSONObject.toJSONString(req));
param.put("queryMobileEntity", JSONObject.toJSONString(queryMobileEntity));
param.put("accountInfoEntity", JSONObject.toJSONString(accountInfoEntity));
param.put("baseRequest", JSONObject.toJSONString(baseRequest));
poolTaskExecutor.execute(() -> insertLog(userId, queryMobileEntity.getMobile(), deviceToken, param.toString()));
} else {
// 第一次点"一键登录"接口,需要比对上次登录的手机号与这次是否一样
if (userId == null) {
// 直接登录
result = processLoginV1(baseRequest, accountInfoEntity.getId(), AccountTypeEnum.LOGIN_ONE_CLICK.getCode(), queryMobileEntity);
} else {
// 根据userId获取手机号
PICAPDoctor doctor = doctorInfoMapper.queryDoctor(userId);
if (doctor == null) {
// 医生被删掉了,直接登录
result = processLoginV1(baseRequest, accountInfoEntity.getId(), AccountTypeEnum.LOGIN_ONE_CLICK.getCode(), queryMobileEntity);
} else {
String mobilePhone = doctor.getMobile_phone();
mobilePhone = EncryptUtils.decryptContent(mobilePhone, EncryptConstants.ENCRYPT_TYPE_MOBILE, EncryptConstants.ENCRYPT_DECRYPT_KEY);
if (queryMobileEntity.getMobile().equals(mobilePhone)) {
// 手机号匹配,直接登录
result = processLoginV1(baseRequest, accountInfoEntity.getId(), AccountTypeEnum.LOGIN_ONE_CLICK.getCode(), queryMobileEntity);
} else {
// 该设备本次登录手机号与上次登录手机号不是同一手机号,需用户进行确认
result = new LoginResult();
result.setCheckStatus(false);
result.setSuggestMessage("为保证学习记录完整,建议使用同一手机号进行登录");
String begin = mobilePhone.substring(0, 3);
String end = mobilePhone.substring(7, 11);
String last = begin + "****" + end;
String differentMessage = "当前设备上次使用" + last + "登录";
result.setDifferentMessage(differentMessage);
}
}
}
}
}
return result;
}
@Override
public void insertLog(Integer userId, String currMobilePhone, String deviceToken, String keepBack) {
logger.info("oneClickLoginV1-继续一键登录日志入库");
// 获取上一次登录的手机号
String lastMobilePhone = "";
PICAPDoctor doctor = doctorInfoMapper.queryDoctor(userId);
if (doctor != null) {
lastMobilePhone = doctor.getMobile_phone();
}
// 加密当前手机号
currMobilePhone = EncryptUtils.encryptContent(currMobilePhone, EncryptConstants.ENCRYPT_TYPE_MOBILE);
LogOneChlickCheck logOneChlickCheck = new LogOneChlickCheck();
logOneChlickCheck.setCreatedId(99999999);
logOneChlickCheck.setModifiedId(99999999);
Date now = new Date();
logOneChlickCheck.setCreatedTime(now);
logOneChlickCheck.setModifiedTime(now);
logOneChlickCheck.setCurrMobilePhone(currMobilePhone);
logOneChlickCheck.setLastMobilePhone(lastMobilePhone);
logOneChlickCheck.setDeleteFlag((byte) 1);
logOneChlickCheck.setUsedShanyan(true);
logOneChlickCheck.setDeviceToken(deviceToken);
logOneChlickCheck.setKeepBack(keepBack);
logger.info("oneClickLoginV1-继续一键登录日志入库,{}", JSONObject.toJSONString(logOneChlickCheck));
logOneChlickCheckMapper.insertOne(logOneChlickCheck);
logger.info("oneClickLoginV1-继续一键登录日志入库完成");
}
private Integer getUserId(String deviceToken) {
Integer userId = null;
try {
DeviceReq req = new DeviceReq();
req.setDeviceToken(deviceToken);
PicaResponse<Integer> response= equipmentService.getUserIdByDeviceToken(req);
userId = response.getData();
} catch (Exception e) {
// 防止message服务出问题影响一键登录流程
logger.error("getUserId-调用message服务出错!");
e.printStackTrace();
}
return userId;
}
private LoginResult processLoginV1(BaseRequest baseRequest, Integer acctId, Integer loginType, QueryMobileEntity queryMobileEntity) {
//接入新旭事务一致性
String batchNo = IntactUtils.getUUID();
intactUtil.sendIntact(batchNo, "processLoginV1", com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_1, "baseRequest:" + JSON.toJSONString(baseRequest) + ",+acctId:" + acctId + ",loginType:" + loginType + ",queryMobileEntity:" + JSON.toJSONString(queryMobileEntity));
Date currentTime = new Date();
Long userId = accountUtils.getUserIdByAcctId(baseRequest.getProductType(), acctId);
Account account = new Account();
account.setId(userId);
account.setAcctId(acctId);
account.setCreatTime(currentTime);
account.setMobilePhone(baseRequest.getMobile());
account.setRegisterSource(baseRequest.getSourceType());
String newToken = tokenUtils.generateToken(account);
LoginResult result = new LoginResult();
result.setToken(newToken);
result.setUserId(userId);
result.setMobile(baseRequest.getMobile());
result.setDoctorId(EncryptUtils.encryptContent(userId + "", EncryptConstants.ENCRYPT_TYPE_ID));
//是否完善过个人信息(云鹊医app才需要)
if (baseRequest.getProductType() != AccountTypeEnum.PRODUCT_TYPE_HEALTH.getCode()) {
Doctor doctorEntity = doctorInfoMapper.selectByPrimaryKey(userId.intValue());
result.setEntireFlag(doctorEntity.getEntireFlag());
}
//记录登录日志
LogLoginEntity entity = AccountLogEntityUtils.getLogLoginEntity(acctId, baseRequest.getProductType(), baseRequest.getSourceType(),
loginType, baseRequest.getLoginIp(), AccountTypeEnum.LOGIN_STATUS_SUCCESS.getCode(), AccountTypeEnum.LOG_TYPE_LOGIN.getCode(), newToken, 1, baseRequest.getUserTokenTourist());
if (queryMobileEntity != null) {
entity.setQueryMobileEntity(queryMobileEntity);
}
picaLogUtils.info(entity);
intactUtil.sendIntact(batchNo, "processLoginV1", com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3, "baseRequest:" + JSON.toJSONString(baseRequest) + ",+acctId:" + acctId + ",loginType:" + loginType + ",queryMobileEntity:" + JSON.toJSONString(queryMobileEntity));
return result;
}
/**
* 手机号 统一check
*
* @param request
*/
@Override
public void mobileValidate(BaseRequest request) {
Integer bizType = request.getBizType();
String mobile = request.getMobile();
Integer sourceType = request.getSourceType();
if (null == bizType) {
logger.info("bizType is null");
throw new PicaWarnException(AccountExceptionEnum.PARAMS_BIZ_TYPE_EMPTY.getCode(),
AccountExceptionEnum.PARAMS_BIZ_TYPE_EMPTY.getMessage());
}
// 手机号规则校验
if (StringUtils.isNotEmpty(mobile) &&
!ValidateUtils.isMobile(mobile)) {
throw new PicaWarnException(AccountExceptionEnum.PICA_MOBILE_REG_FALSE.getCode(),
AccountExceptionEnum.PICA_MOBILE_REG_FALSE.getMessage());
}
if (bizType.equals(3)) {
// 账户密码登录-step1-check mobile
// 手机号是否注册
AccountInfoEntity accountInfo = accountInfoMapper.selectByMobile(AESUtil.encryptV0(mobile));
if (accountInfo == null) {
throw new PicaWarnException(AccountExceptionEnum.MOBILE_NOT_REGISTER.getCode(),
AccountExceptionEnum.MOBILE_NOT_REGISTER.getMessage().replace("{mobile}", mobile));
}
// 手机号是否设置了密码
if (StringUtils.isEmpty(accountInfo.getPassword())) {
if (sourceType != null && SourceTypeEnum.H5.getCode().equals(sourceType)) {
throw new PicaWarnException(AccountExceptionEnum.PICA_MOBILE_NOT_SETED_PASSWORD_H5.getCode(),
AccountExceptionEnum.PICA_MOBILE_NOT_SETED_PASSWORD_H5.getMessage());
} else {
throw new PicaWarnException(AccountExceptionEnum.PICA_MOBILE_NOT_SETED_PASSWORD.getCode(),
AccountExceptionEnum.PICA_MOBILE_NOT_SETED_PASSWORD.getMessage().replace("{mobile}", mobile));
}
}
}
}
/**
* v1 账户密码登录
*
* @param request
* @return
*/
@Override
public LoginResult v1LoginPassword(BaseRequest request) {
String batchNo = IntactUtils.getUUID();
intactUtil.sendIntact(batchNo, "v1LoginPassword", CommonConstants.INTACT_CONTENT_LOG_STATUS_1, "request:" + JSON.toJSONString(request));
String mobile = request.getMobile();
Integer sourceType = request.getSourceType();
String encrypt = AESUtil.encryptV0(mobile);
AccountInfoEntity accountInfoEntity = accountInfoMapper.selectByMobile(encrypt);
Doctor doctorInfo = doctorInfoMapper.getDoctorInfoByMobile(encrypt);
if (null == accountInfoEntity || null == doctorInfo) {
intactUtil.sendIntact(batchNo, "v1LoginPassword", CommonConstants.INTACT_CONTENT_LOG_STATUS_3, "手机号" + mobile + "尚未注册");
throw new PicaWarnException(AccountExceptionEnum.MOBILE_NOT_REGISTER.getCode(),
AccountExceptionEnum.MOBILE_NOT_REGISTER.getMessage().replace("{mobile}", mobile));
} else {
String oldPwd = accountInfoEntity.getPassword();
String password = request.getPassword();
// db中账户 未设置密码
if (StringUtils.isEmpty(oldPwd)) {
if (sourceType != null && SourceTypeEnum.H5.getCode().equals(sourceType)) {
intactUtil.sendIntact(batchNo, "v1LoginPassword", CommonConstants.INTACT_CONTENT_LOG_STATUS_3,
AccountExceptionEnum.PICA_MOBILE_NOT_SETED_PASSWORD_H5.getMessage());
throw new PicaWarnException(AccountExceptionEnum.PICA_MOBILE_NOT_SETED_PASSWORD_H5.getCode(),
AccountExceptionEnum.PICA_MOBILE_NOT_SETED_PASSWORD_H5.getMessage());
} else {
intactUtil.sendIntact(batchNo, "v1LoginPassword", com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,
AccountExceptionEnum.PICA_MOBILE_NOT_SETED_PASSWORD.getMessage().replace("{mobile}", mobile));
throw new PicaException(AccountExceptionEnum.PICA_MOBILE_NOT_SETED_PASSWORD.getCode(),
AccountExceptionEnum.PICA_MOBILE_NOT_SETED_PASSWORD.getMessage()
.replace("{mobile}", mobile));
}
}
// 判断账号是否已锁
checkMobileIsLocked(mobile, sourceType, batchNo, "v1LoginPassword");
if (!password.equals(oldPwd)) {
//登录密码错误,次数计数、存cache
checkMobileErrorPasswordLogin(mobile, sourceType, batchNo, "v1LoginPassword");
} else {
intactUtil.sendIntact(batchNo, "v1LoginPassword", CommonConstants.INTACT_CONTENT_LOG_STATUS_3, "接下来调用pwdLoginCorrect");
//密码登录-密码正确逻辑
return v1PwdLoginCorrect(request,mobile,doctorInfo);
}
}
return null;
}
/**
* ------------------- private -------------------
*/
/**
* 判断账号是否已锁
*
* @param mobile
*/
private void checkMobileIsLocked(String mobile, Integer sourceType, String batchNo, String batchMethod) {
String lockKey = Constants.ACCOUNT_LOCK_KEY.replace("{mobile}", mobile);
if (cacheClient.exists(lockKey)) {
if (sourceType != null && SourceTypeEnum.H5.getCode().equals(sourceType)) {
intactUtil.sendIntact(batchNo, batchMethod, CommonConstants.INTACT_CONTENT_LOG_STATUS_3,
AccountExceptionEnum.PICA_PWD_MISMATCH_5_H5.getMessage());
throw new PicaException(AccountExceptionEnum.PICA_PWD_MISMATCH_5_H5.getCode(),
AccountExceptionEnum.PICA_PWD_MISMATCH_5_H5.getMessage());
} else {
intactUtil.sendIntact(batchNo, batchMethod, CommonConstants.INTACT_CONTENT_LOG_STATUS_3,
AccountExceptionEnum.PICA_PWD_MISMATCH_5.getMessage().replace("{mobile}", mobile));
throw new PicaException(AccountExceptionEnum.PICA_PWD_MISMATCH_5.getCode(),
AccountExceptionEnum.PICA_PWD_MISMATCH_5.getMessage().replace("{mobile}", mobile));
}
}
}
/**
* @param mobile
* @param sourceType
* @param batchNo
* @param batchMethod
*/
private void checkMobileErrorPasswordLogin(String mobile, Integer sourceType, String batchNo, String batchMethod) {
String lockKey = Constants.ACCOUNT_LOCK_KEY.replace("{mobile}", mobile);
String errorKey = Constants.PWD_ERROR_NUM_KEY.replace("{mobile}", mobile);
if (cacheClient.exists(errorKey)) {
int errorCount = Integer.parseInt(cacheClient.get(errorKey));
errorCount = errorCount + 1;
cacheClient.set(errorKey, errorCount, Constants.PWD_ERROR_NUM_SECONDS);
if (errorCount <= 4) {
intactUtil.sendIntact(batchNo, batchMethod, CommonConstants.INTACT_CONTENT_LOG_STATUS_3,
AccountExceptionEnum.PICA_PWD_MISMATCH_4.getMessage());
throw new PicaException(AccountExceptionEnum.PICA_PWD_MISMATCH_4.getCode(),
AccountExceptionEnum.PICA_PWD_MISMATCH_4.getMessage());
} else {
// 设置账号锁定24h
cacheClient.set(lockKey, mobile, Constants.PWD_ERROR_NUM_SECONDS);
if (sourceType != null && SourceTypeEnum.H5.getCode().equals(sourceType)) {
intactUtil.sendIntact(batchNo, batchMethod, CommonConstants.INTACT_CONTENT_LOG_STATUS_3,
AccountExceptionEnum.PICA_PWD_MISMATCH_5_H5.getMessage());
throw new PicaException(AccountExceptionEnum.PICA_PWD_MISMATCH_5_H5.getCode(),
AccountExceptionEnum.PICA_PWD_MISMATCH_5_H5.getMessage());
} else {
intactUtil.sendIntact(batchNo, batchMethod, CommonConstants.INTACT_CONTENT_LOG_STATUS_3,
AccountExceptionEnum.PICA_PWD_MISMATCH_5.getMessage().replace("{mobile}", mobile));
throw new PicaException(AccountExceptionEnum.PICA_PWD_MISMATCH_5.getCode(),
AccountExceptionEnum.PICA_PWD_MISMATCH_5.getMessage().replace("{mobile}", mobile));
}
}
} else {
cacheClient.set(errorKey, 1, Constants.PWD_ERROR_NUM_SECONDS);
intactUtil.sendIntact(batchNo, batchMethod, CommonConstants.INTACT_CONTENT_LOG_STATUS_3,
AccountExceptionEnum.PICA_PWD_MISMATCH_4.getMessage());
throw new PicaException(AccountExceptionEnum.PICA_PWD_MISMATCH_4.getCode(),
AccountExceptionEnum.PICA_PWD_MISMATCH_4.getMessage());
}
}
/**
* @Description 密码登录-密码正确逻辑
*/
private LoginResult v1PwdLoginCorrect(BaseRequest request, String mobile, Doctor doctor) {
//接入新旭事务一致性
String batchNo = IntactUtils.getUUID();
intactUtil.sendIntact(batchNo, "v1PwdLoginCorrect", CommonConstants.INTACT_CONTENT_LOG_STATUS_1, "baseRequest:" + JSON.toJSONString(request));
Date currentTime = new Date();
Integer acctId = doctor.getAcctId();
int productType = request.getProductType();
int sourceType = request.getSourceType();
Integer userId = doctor.getId();
Account account = new Account();
account.setId(userId.longValue());
account.setAcctId(acctId);
account.setCreatTime(currentTime);
account.setMobilePhone(mobile);
account.setRegisterSource(sourceType);
String newToken = tokenUtils.generateToken(account);
LoginResult result = new LoginResult();
result.setToken(newToken);
result.setUserId(userId.longValue());
result.setMobile(mobile);
result.setDoctorId(EncryptUtils.encryptContent(userId + "", EncryptConstants.ENCRYPT_TYPE_ID));
result.setEntireFlag(doctor.getEntireFlag());
LogLoginEntity entity = AccountLogEntityUtils.getLogLoginEntity(acctId, productType, sourceType,
AccountTypeEnum.LOGIN_PWD.getCode(), request.getLoginIp(), AccountTypeEnum.LOGIN_STATUS_SUCCESS.getCode(),
AccountTypeEnum.LOG_TYPE_LOGIN.getCode(), newToken, 1, request.getUserTokenTourist());
picaLogUtils.info(entity);
// 密码登录成功以后,清除错误次数记录
String pwdErrorNum = Constants.PWD_ERROR_NUM_KEY.replace("{mobile}", mobile);
if (cacheClient.exists(pwdErrorNum)) {
cacheClient.del(pwdErrorNum);
}
intactUtil.sendIntact(batchNo, "v1PwdLoginCorrect", CommonConstants.INTACT_CONTENT_LOG_STATUS_3, "baseRequest:" + JSON.toJSONString(request));
return result;
}
}
......@@ -9,6 +9,7 @@
<!-- <classPathEntry location="/Users/wangyongbo/Downloads/software/mysql-connector-java-5.1.39.jar"/>-->
<!-- <classPathEntry location="D:\programer\reponsitory\maven\mysql\mysql-connector-java\5.1.39\mysql-connector-java-5.1.39.jar"/>-->
<!--<classPathEntry location="E:\mysql_jar/mysql-connector-java-5.1.39.jar"/>-->
<classPathEntry location="/Users/zhoupengcheng/mysql_jar/mysql-connector-java-5.1.49.jar"/>
<context id="tableEntity" targetRuntime="MyBatis3">
<commentGenerator>
......@@ -43,6 +44,7 @@
<!-- <table tableName="account_apple_info" domainObjectName="AccountAppleInfo" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>-->
<!-- <table tableName="account_pat_family_record" domainObjectName="AccountPatFamilyRecord" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>-->
<table tableName="log_one_chlick_check" domainObjectName="LogOneChlickCheck" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
</context>
</generatorConfiguration>
......
......@@ -126,7 +126,7 @@
select
<include refid="Base_Column_List"/>
from p_doctor
where id = #{id} and delete_flag=1
where id = #{id} and delete_flag = 1
</select>
<!--删除用户-->
......
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.pica.cloud.account.account.server.mapper.LogOneChlickCheckMapper" >
<resultMap id="BaseResultMap" type="com.pica.cloud.account.account.server.entity.LogOneChlickCheck" >
<id column="id" property="id" jdbcType="INTEGER" />
<result column="device_token" property="deviceToken" jdbcType="VARCHAR" />
<result column="last_mobile_phone" property="lastMobilePhone" jdbcType="VARCHAR" />
<result column="curr_mobile_phone" property="currMobilePhone" jdbcType="VARCHAR" />
<result column="used_shanyan" property="usedShanyan" jdbcType="BIT" />
<result column="keep_back" property="keepBack" jdbcType="VARCHAR" />
<result column="delete_flag" property="deleteFlag" jdbcType="TINYINT" />
<result column="created_id" property="createdId" jdbcType="INTEGER" />
<result column="created_time" property="createdTime" jdbcType="TIMESTAMP" />
<result column="modified_id" property="modifiedId" jdbcType="INTEGER" />
<result column="modified_time" property="modifiedTime" jdbcType="TIMESTAMP" />
</resultMap>
<sql id="Base_Column_List" >
id, device_token, last_mobile_phone, curr_mobile_phone, used_shanyan, keep_back,
delete_flag, created_id, created_time, modified_id, modified_time
</sql>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
select
<include refid="Base_Column_List" />
from log_one_chlick_check
where id = #{id,jdbcType=INTEGER}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
delete from log_one_chlick_check
where id = #{id,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="com.pica.cloud.account.account.server.entity.LogOneChlickCheck" >
insert into log_one_chlick_check (id, device_token, last_mobile_phone,
curr_mobile_phone, used_shanyan, keep_back,
delete_flag, created_id, created_time,
modified_id, modified_time)
values (#{id,jdbcType=INTEGER}, #{deviceToken,jdbcType=VARCHAR}, #{lastMobilePhone,jdbcType=VARCHAR},
#{currMobilePhone,jdbcType=VARCHAR}, #{usedShanyan,jdbcType=BIT}, #{keepBack,jdbcType=VARCHAR},
#{deleteFlag,jdbcType=TINYINT}, #{createdId,jdbcType=INTEGER}, #{createdTime,jdbcType=TIMESTAMP},
#{modifiedId,jdbcType=INTEGER}, #{modifiedTime,jdbcType=TIMESTAMP})
</insert>
<insert id="insertSelective" parameterType="com.pica.cloud.account.account.server.entity.LogOneChlickCheck" >
insert into log_one_chlick_check
<trim prefix="(" suffix=")" suffixOverrides="," >
<if test="id != null" >
id,
</if>
<if test="deviceToken != null" >
device_token,
</if>
<if test="lastMobilePhone != null" >
last_mobile_phone,
</if>
<if test="currMobilePhone != null" >
curr_mobile_phone,
</if>
<if test="usedShanyan != null" >
used_shanyan,
</if>
<if test="keepBack != null" >
keep_back,
</if>
<if test="deleteFlag != null" >
delete_flag,
</if>
<if test="createdId != null" >
created_id,
</if>
<if test="createdTime != null" >
created_time,
</if>
<if test="modifiedId != null" >
modified_id,
</if>
<if test="modifiedTime != null" >
modified_time,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," >
<if test="id != null" >
#{id,jdbcType=INTEGER},
</if>
<if test="deviceToken != null" >
#{deviceToken,jdbcType=VARCHAR},
</if>
<if test="lastMobilePhone != null" >
#{lastMobilePhone,jdbcType=VARCHAR},
</if>
<if test="currMobilePhone != null" >
#{currMobilePhone,jdbcType=VARCHAR},
</if>
<if test="usedShanyan != null" >
#{usedShanyan,jdbcType=BIT},
</if>
<if test="keepBack != null" >
#{keepBack,jdbcType=VARCHAR},
</if>
<if test="deleteFlag != null" >
#{deleteFlag,jdbcType=TINYINT},
</if>
<if test="createdId != null" >
#{createdId,jdbcType=INTEGER},
</if>
<if test="createdTime != null" >
#{createdTime,jdbcType=TIMESTAMP},
</if>
<if test="modifiedId != null" >
#{modifiedId,jdbcType=INTEGER},
</if>
<if test="modifiedTime != null" >
#{modifiedTime,jdbcType=TIMESTAMP},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.pica.cloud.account.account.server.entity.LogOneChlickCheck" >
update log_one_chlick_check
<set >
<if test="deviceToken != null" >
device_token = #{deviceToken,jdbcType=VARCHAR},
</if>
<if test="lastMobilePhone != null" >
last_mobile_phone = #{lastMobilePhone,jdbcType=VARCHAR},
</if>
<if test="currMobilePhone != null" >
curr_mobile_phone = #{currMobilePhone,jdbcType=VARCHAR},
</if>
<if test="usedShanyan != null" >
used_shanyan = #{usedShanyan,jdbcType=BIT},
</if>
<if test="keepBack != null" >
keep_back = #{keepBack,jdbcType=VARCHAR},
</if>
<if test="deleteFlag != null" >
delete_flag = #{deleteFlag,jdbcType=TINYINT},
</if>
<if test="createdId != null" >
created_id = #{createdId,jdbcType=INTEGER},
</if>
<if test="createdTime != null" >
created_time = #{createdTime,jdbcType=TIMESTAMP},
</if>
<if test="modifiedId != null" >
modified_id = #{modifiedId,jdbcType=INTEGER},
</if>
<if test="modifiedTime != null" >
modified_time = #{modifiedTime,jdbcType=TIMESTAMP},
</if>
</set>
where id = #{id,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="com.pica.cloud.account.account.server.entity.LogOneChlickCheck" >
update log_one_chlick_check
set device_token = #{deviceToken,jdbcType=VARCHAR},
last_mobile_phone = #{lastMobilePhone,jdbcType=VARCHAR},
curr_mobile_phone = #{currMobilePhone,jdbcType=VARCHAR},
used_shanyan = #{usedShanyan,jdbcType=BIT},
keep_back = #{keepBack,jdbcType=VARCHAR},
delete_flag = #{deleteFlag,jdbcType=TINYINT},
created_id = #{createdId,jdbcType=INTEGER},
created_time = #{createdTime,jdbcType=TIMESTAMP},
modified_id = #{modifiedId,jdbcType=INTEGER},
modified_time = #{modifiedTime,jdbcType=TIMESTAMP}
where id = #{id,jdbcType=INTEGER}
</update>
<insert id="insertOne" parameterType="com.pica.cloud.account.account.server.entity.LogOneChlickCheck" >
insert into log_one_chlick_check (device_token, last_mobile_phone,
curr_mobile_phone, used_shanyan, keep_back,
delete_flag, created_id, created_time,
modified_id, modified_time)
values (#{deviceToken,jdbcType=VARCHAR}, #{lastMobilePhone,jdbcType=VARCHAR},
#{currMobilePhone,jdbcType=VARCHAR}, #{usedShanyan,jdbcType=BIT}, #{keepBack,jdbcType=VARCHAR},
#{deleteFlag,jdbcType=TINYINT}, #{createdId,jdbcType=INTEGER}, #{createdTime,jdbcType=TIMESTAMP},
#{modifiedId,jdbcType=INTEGER}, #{modifiedTime,jdbcType=TIMESTAMP})
</insert>
</mapper>
\ No newline at end of file
// Copyright 2016-2101 Pica.
package pica.cloud.account.account.server.mapper;
import com.pica.cloud.account.account.server.App;
import com.pica.cloud.account.account.server.service.LoginV1Service;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
/**
* @ClassName AutoCodeControllerTest
* @Description
* @Author Chongwen.jiang
* @Date 2020/4/3 14:31
* @ModifyDate 2020/4/3 14:31
* @Version 1.0
*/
@RunWith(SpringRunner.class)
@SpringBootTest (classes = App.class)
public class OneClickTest {
@Autowired
LoginV1Service loginV1Service;
@Test
public void test() {
loginV1Service.insertLog(1000005511, "13073690113", "161a397c8bc807ed97",
"{baseRequest={\\\"flag\\\":0,\\\"loginIp\\\":\\\"172.25.36.64\\\",\\\"mobile\\\":\\\"13073690113\\\",\\\"productType\\\":1,\\\"sourceType\\\":2,\\\"userTokenTourist\\\":\\\"06388870914559557010\\\"}, accountInfoEntity={\\\"age\\\":0,\\\"createdId\\\":49,\\\"createdTime\\\":1586336527000,\\\"deleteFlag\\\":1,\\\"id\\\":49,\\\"mobilePhone\\\":\\\"N/rge2EqV+KgL+li6YBfag==\\\",\\\"modifiedId\\\":49,\\\"modifiedTime\\\":1606982710000,\\\"name\\\":\\\"\\\",\\\"password\\\":\\\"F6127053CB61F3A162F79C031302EAA9\\\",\\\"regTime\\\":1586336527000,\\\"registerProduct\\\":1,\\\"registerSource\\\":1,\\\"sex\\\":0}, queryMobileEntity={\\\"chargeStatus\\\":1,\\\"code\\\":\\\"200000\\\",\\\"data\\\":{\\\"mobileName\\\":\\\"8A7285AA29407E465B2E89053D32FB2E\\\",\\\"tradeNo\\\":\\\"790607755953070080\\\"},\\\"message\\\":\\\"成功\\\",\\\"mobile\\\":\\\"13073690113\\\",\\\"sourceType\\\":2}, req={\\\"checkFlag\\\":true,\\\"deviceToken\\\":\\\"161a3797c8bc807ed97\\\",\\\"loginIp\\\":\\\"172.25.36.64\\\",\\\"productType\\\":1,\\\"sourceType\\\":2,\\\"token\\\":\\\"A4-PAYG_0uR5Q3IeSPcQaN9mPZs20iUJPGDxQWMcNiipcrrsuN-fkr0R3dZad4_c_o5vMRFIfQo0oJiE5owd6-xN8f71byCQ8FIFuWKnxj_1AvoGrrmXBmYNu4bwA4Cinw247d_42lC6bxPxB9d-Bnl8SqBNdqX3HHWYTCtswZaT9Ig2H-9R6j9vaa4yMo9DX5mAUVJMNMQi58NcbfpcSnxPw==\\\",\\\"userTokenTourist\\\":\\\"06388870914559557010\\\"}}");
}
}
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册