fix: 修复相关bug

This commit is contained in:
xiaochangbai 2022-08-08 11:11:28 +08:00
parent 15adbf489e
commit 7e596d47a6
2 changed files with 13 additions and 5 deletions

View File

@ -3,6 +3,7 @@ package cn.lili.controller.passport;
import cn.lili.common.enums.ResultCode;
import cn.lili.common.enums.ResultUtil;
import cn.lili.common.exception.ServiceException;
import cn.lili.common.security.context.UserContext;
import cn.lili.common.security.enums.UserEnums;
import cn.lili.common.vo.ResultMessage;
import cn.lili.modules.member.entity.dos.Member;
@ -70,7 +71,7 @@ public class MemberBuyerController {
log.info("receive login with session key {}", token);
ResponseEntity<ResultMessage> timeoutResponseEntity =
new ResponseEntity<>(ResultUtil.error(ResultCode.ERROR), HttpStatus.OK);
int timeoutSecond = 10;
int timeoutSecond = 20;
DeferredResult<ResponseEntity> deferredResult = new DeferredResult<>(timeoutSecond * 1000L, timeoutResponseEntity);
CompletableFuture.runAsync(() -> {
try {

View File

@ -673,8 +673,8 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
public QRCodeLoginSessionVo createPcSession() {
QRCodeLoginSessionVo session = new QRCodeLoginSessionVo();
session.setStatus(QRCodeLoginSessionStatusEnum.WAIT_SCANNING.getCode());
//过期时间10s
Long duration= 10 * 1000L;
//过期时间20s
Long duration= 20 * 1000L;
session.setDuration(duration);
String token = CachePrefix.QR_CODE_LOGIN_SESSION.name()+SnowFlake.getIdStr();
session.setToken(token);
@ -684,6 +684,10 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
@Override
public Object appScanner(String token) {
AuthUser tokenUser = UserContext.getCurrentUser();
if (tokenUser == null) {
throw new ServiceException(ResultCode.USER_NOT_LOGIN);
}
QRCodeLoginSessionVo session = (QRCodeLoginSessionVo) cache.get(token);
if(session == null){
return QRCodeLoginSessionStatusEnum.NO_EXIST.getCode();
@ -695,6 +699,10 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
@Override
public boolean appSConfirm(String token, Integer code) {
AuthUser tokenUser = UserContext.getCurrentUser();
if (tokenUser == null) {
throw new ServiceException(ResultCode.USER_NOT_LOGIN);
}
QRCodeLoginSessionVo session = (QRCodeLoginSessionVo) cache.get(token);
if(session == null){
return false;
@ -702,8 +710,7 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
if(code==1){
//同意
session.setStatus(QRCodeLoginSessionStatusEnum.VERIFIED.getCode());
AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser());
session.setUserId(Long.valueOf(currentUser.getId()));
session.setUserId(Long.valueOf(tokenUser.getId()));
}else{
//拒绝
session.setStatus(QRCodeLoginSessionStatusEnum.CANCELED.getCode());