diff --git a/buyer-api/src/main/java/cn/lili/controller/passport/MemberBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/passport/MemberBuyerController.java index aa56df9a..5a9e86b5 100644 --- a/buyer-api/src/main/java/cn/lili/controller/passport/MemberBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/passport/MemberBuyerController.java @@ -3,7 +3,6 @@ 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; @@ -58,41 +57,42 @@ public class MemberBuyerController { } - /** * 长轮询:参考nacos + * * @param token - * @param beforeSessionStatus 上次记录的session状态 + * @param beforeSessionStatus 上次记录的session状态 * @return */ @ApiOperation(value = "web-二维码登录") @PostMapping(value = "/session_login/{token}", produces = "application/json;charset=UTF-8") - public Object loginWithSession(@PathVariable("token") String token,Integer beforeSessionStatus) { + public Object loginWithSession(@PathVariable("token") String token, Integer beforeSessionStatus) { log.info("receive login with session key {}", token); - ResponseEntity timeoutResponseEntity = + ResponseEntity> timeoutResponseEntity = new ResponseEntity<>(ResultUtil.error(ResultCode.ERROR), HttpStatus.OK); int timeoutSecond = 20; - DeferredResult deferredResult = new DeferredResult<>(timeoutSecond * 1000L, timeoutResponseEntity); + DeferredResult> deferredResult = new DeferredResult<>(timeoutSecond * 1000L, timeoutResponseEntity); CompletableFuture.runAsync(() -> { try { int i = 0; while (i < timeoutSecond) { QRLoginResultVo queryResult = memberService.loginWithSession(token); int status = queryResult.getStatus(); - if(status==beforeSessionStatus - && (QRCodeLoginSessionStatusEnum.WAIT_SCANNING.getCode()==status - || QRCodeLoginSessionStatusEnum.SCANNING.getCode()==status)){ + if (status == beforeSessionStatus + && (QRCodeLoginSessionStatusEnum.WAIT_SCANNING.getCode() == status + || QRCodeLoginSessionStatusEnum.SCANNING.getCode() == status)) { //睡眠一秒种,继续等待结果 TimeUnit.SECONDS.sleep(1); - }else{ + } else { deferredResult.setResult(new ResponseEntity<>(ResultUtil.data(queryResult), HttpStatus.OK)); break; } - i ++; + i++; } } catch (Exception e) { - log.error("获取登录状态异常,",e); - deferredResult.setResult(new ResponseEntity(ResultUtil.error(ResultCode.ERROR), HttpStatus.OK)); + log.error("获取登录状态异常,", e); + deferredResult.setResult(new ResponseEntity<>(ResultUtil.error(ResultCode.ERROR), HttpStatus.OK)); + Thread.currentThread().interrupt(); } }, Executors.newCachedThreadPool()); return deferredResult; @@ -111,9 +111,9 @@ public class MemberBuyerController { @ApiImplicitParam(name = "code", value = "操作:0拒绝登录,1同意登录", required = true, paramType = "query") }) @PostMapping(value = "/app_confirm", produces = "application/json;charset=UTF-8") - public ResultMessage appSConfirm(String token,Integer code) { - boolean flag = memberService.appSConfirm(token,code); - return flag ? ResultUtil.success():ResultUtil.error(ResultCode.ERROR); + public ResultMessage appSConfirm(String token, Integer code) { + boolean flag = memberService.appSConfirm(token, code); + return flag ? ResultUtil.success() : ResultUtil.error(ResultCode.ERROR); } diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java index 35bb7a2a..76c8c9b9 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java @@ -17,7 +17,10 @@ import cn.lili.common.security.context.UserContext; import cn.lili.common.security.enums.UserEnums; import cn.lili.common.security.token.Token; import cn.lili.common.sensitive.SensitiveWordsFilter; -import cn.lili.common.utils.*; +import cn.lili.common.utils.BeanUtil; +import cn.lili.common.utils.CookieUtil; +import cn.lili.common.utils.SnowFlake; +import cn.lili.common.utils.UuidUtils; import cn.lili.common.vo.PageVO; import cn.lili.modules.connect.config.ConnectAuthEnum; import cn.lili.modules.connect.entity.Connect; @@ -30,8 +33,8 @@ import cn.lili.modules.member.entity.enums.PointTypeEnum; import cn.lili.modules.member.entity.enums.QRCodeLoginSessionStatusEnum; import cn.lili.modules.member.entity.vo.MemberSearchVO; import cn.lili.modules.member.entity.vo.MemberVO; -import cn.lili.modules.member.entity.vo.QRLoginResultVo; import cn.lili.modules.member.entity.vo.QRCodeLoginSessionVo; +import cn.lili.modules.member.entity.vo.QRLoginResultVo; import cn.lili.modules.member.mapper.MemberMapper; import cn.lili.modules.member.service.MemberService; import cn.lili.modules.member.token.MemberTokenGenerate; @@ -53,7 +56,10 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.*; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.Objects; import java.util.concurrent.TimeUnit; /** @@ -210,6 +216,7 @@ public class MemberServiceImpl extends ServiceImpl impleme } @Override + @Transactional public Token autoRegister() { ConnectAuthUser connectAuthUser = this.checkConnectUser(); return this.autoRegister(connectAuthUser); @@ -404,11 +411,11 @@ public class MemberServiceImpl extends ServiceImpl impleme @Override public Member updateMember(ManagerMemberEditDTO managerMemberEditDTO) { //过滤会员昵称敏感词 - if (StringUtils.isNotBlank(managerMemberEditDTO.getNickName())) { + if (CharSequenceUtil.isNotBlank(managerMemberEditDTO.getNickName())) { managerMemberEditDTO.setNickName(SensitiveWordsFilter.filter(managerMemberEditDTO.getNickName())); } //如果密码不为空则加密密码 - if (StringUtils.isNotBlank(managerMemberEditDTO.getPassword())) { + if (CharSequenceUtil.isNotBlank(managerMemberEditDTO.getPassword())) { managerMemberEditDTO.setPassword(new BCryptPasswordEncoder().encode(managerMemberEditDTO.getPassword())); } //查询会员信息 @@ -676,11 +683,11 @@ public class MemberServiceImpl extends ServiceImpl impleme QRCodeLoginSessionVo session = new QRCodeLoginSessionVo(); session.setStatus(QRCodeLoginSessionStatusEnum.WAIT_SCANNING.getCode()); //过期时间,20s - Long duration= 20 * 1000L; + Long duration = 20 * 1000L; session.setDuration(duration); - String token = CachePrefix.QR_CODE_LOGIN_SESSION.name()+SnowFlake.getIdStr(); + String token = CachePrefix.QR_CODE_LOGIN_SESSION.name() + SnowFlake.getIdStr(); session.setToken(token); - cache.put(token,session,duration, TimeUnit.MILLISECONDS); + cache.put(token, session, duration, TimeUnit.MILLISECONDS); return session; } @@ -691,11 +698,11 @@ public class MemberServiceImpl extends ServiceImpl impleme throw new ServiceException(ResultCode.USER_NOT_LOGIN); } QRCodeLoginSessionVo session = (QRCodeLoginSessionVo) cache.get(token); - if(session == null){ + if (session == null) { return QRCodeLoginSessionStatusEnum.NO_EXIST.getCode(); } session.setStatus(QRCodeLoginSessionStatusEnum.SCANNING.getCode()); - cache.put(token,session,session.getDuration(), TimeUnit.MILLISECONDS); + cache.put(token, session, session.getDuration(), TimeUnit.MILLISECONDS); return QRCodeLoginSessionStatusEnum.SCANNING.getCode(); } @@ -706,18 +713,18 @@ public class MemberServiceImpl extends ServiceImpl impleme throw new ServiceException(ResultCode.USER_NOT_LOGIN); } QRCodeLoginSessionVo session = (QRCodeLoginSessionVo) cache.get(token); - if(session == null){ + if (session == null) { return false; } - if(code==1){ + if (code == 1) { //同意 session.setStatus(QRCodeLoginSessionStatusEnum.VERIFIED.getCode()); - session.setUserId(Long.valueOf(tokenUser.getId())); - }else{ + session.setUserId(Long.parseLong(tokenUser.getId())); + } else { //拒绝 session.setStatus(QRCodeLoginSessionStatusEnum.CANCELED.getCode()); } - cache.put(token,session,session.getDuration(), TimeUnit.MILLISECONDS); + cache.put(token, session, session.getDuration(), TimeUnit.MILLISECONDS); return true; } @@ -726,16 +733,16 @@ public class MemberServiceImpl extends ServiceImpl impleme QRLoginResultVo result = new QRLoginResultVo(); result.setStatus(QRCodeLoginSessionStatusEnum.NO_EXIST.getCode()); QRCodeLoginSessionVo session = (QRCodeLoginSessionVo) cache.get(sessionToken); - if(session == null){ + if (session == null) { return result; } result.setStatus(session.getStatus()); - if(QRCodeLoginSessionStatusEnum.VERIFIED.getCode().equals(session.getStatus())){ + if (QRCodeLoginSessionStatusEnum.VERIFIED.getCode().equals(session.getStatus())) { //生成token Member member = this.getById(session.getUserId()); - if(member==null){ + if (member == null) { throw new ServiceException(ResultCode.USER_NOT_EXIST); - }else{ + } else { //生成token Token token = memberTokenGenerate.createToken(member, false); result.setToken(token);