From b35836ae2db5c3d929769bfc9ccfe8147cafcb7c Mon Sep 17 00:00:00 2001 From: wangxiaopeng <807933401@qq.com> Date: Thu, 21 Mar 2024 15:25:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A4=E6=96=AD=E7=94=A8=E6=88=B7=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E5=AD=98=E5=9C=A8=E7=9A=84=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/cool/store/dao/LineInfoDAO.java | 8 +++++ .../com/cool/store/mapper/LineInfoMapper.java | 2 ++ .../main/resources/mapper/LineInfoMapper.xml | 5 ++++ .../store/service/WechatMiniAppService.java | 2 ++ .../impl/WechatMiniAppServiceImpl.java | 29 +++++++++++++++++-- .../webc/MiniProgramAppController.java | 6 ++++ 6 files changed, 50 insertions(+), 2 deletions(-) diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/LineInfoDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/LineInfoDAO.java index c6168e02d..9618c79c7 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/LineInfoDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/LineInfoDAO.java @@ -37,4 +37,12 @@ public class LineInfoDAO { } return lineInfoMapper.updateByPrimaryKeySelective(param); } + + public LineInfoDO getByPartnerId(String partnerId) { + LineInfoDO lineInfo = lineInfoMapper.getByPartnerId(partnerId); + if(Objects.nonNull(lineInfo) && !lineInfo.getDeleted()){ + return lineInfo; + } + return null; + } } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/LineInfoMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/LineInfoMapper.java index 1ddbe9e3b..b198d45a7 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/LineInfoMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/LineInfoMapper.java @@ -1,7 +1,9 @@ package com.cool.store.mapper; import com.cool.store.entity.LineInfoDO; +import org.apache.ibatis.annotations.Param; import tk.mybatis.mapper.common.Mapper; public interface LineInfoMapper extends Mapper { + LineInfoDO getByPartnerId(@Param("partnerId") String partnerId); } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/LineInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/LineInfoMapper.xml index 4fad29b46..f107d37b1 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/LineInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/LineInfoMapper.xml @@ -30,4 +30,9 @@ + + + \ No newline at end of file diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/WechatMiniAppService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/WechatMiniAppService.java index 6418f1100..ce220417d 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/WechatMiniAppService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/WechatMiniAppService.java @@ -15,6 +15,8 @@ public interface WechatMiniAppService { PartnerUserInfoVO miniProgramLogin(MiniProgramLoginDTO param); + PartnerUserInfoVO getUserInfoByJsCode(String jsCode); + String getUserPhoneNumber(String mobileCode); String updateUserPhoneNumber(MobileUpdateRequest request, PartnerUserInfoVO userInfoVO); diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/WechatMiniAppServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/WechatMiniAppServiceImpl.java index ec7144231..cf18704f3 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/WechatMiniAppServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/WechatMiniAppServiceImpl.java @@ -130,17 +130,42 @@ public class WechatMiniAppServiceImpl implements WechatMiniAppService { } } BeanUtil.copyProperties(hyPartnerUserInfoDO, userInfoVO); - /*LineInfoDO lineInfoDO = lineInfoDAO.getByPartnerId(hyPartnerUserInfoDO.getPartnerId()); + LineInfoDO lineInfoDO = lineInfoDAO.getByPartnerId(hyPartnerUserInfoDO.getPartnerId()); if (lineInfoDO != null){ userInfoVO.setPartnerLineId(lineInfoDO.getId()); userInfoVO.setLineStatus(lineInfoDO.getLineStatus()); - }*/ + } } userInfoVO.setOpenid(openid); userInfoVO.setUnionId(unionId); return userInfoVO; } + @Override + public PartnerUserInfoVO getUserInfoByJsCode(String jsCode) { + PartnerUserInfoVO userInfoVO = null; + String lockKey = "codeSession:" + wxAppId + CommonConstants.MOSAICS + jsCode; + boolean lock = redisUtilPool.lock(lockKey); + if (!lock) { + throw new ServiceException(ErrorCodeEnum.OPERATION_OVER_TIME); + } + CodeSessionDTO codeSession = wechatRest.miniProgramJsCodeSession(wxAppId, wxAppSecret, jsCode); + String openid = codeSession.getOpenid(); + String sessionCacheKey = MessageFormat.format(CommonConstants.MINI_PROGRAM_SESSION_KEY, wxAppId, openid); + redisUtilPool.setString(sessionCacheKey, codeSession.getSessionKey(), CommonConstants.THREE_DAY_SECONDS); + HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByOpenid(openid); + if(hyPartnerUserInfoDO != null){ + userInfoVO = new PartnerUserInfoVO(); + BeanUtil.copyProperties(hyPartnerUserInfoDO, userInfoVO); + LineInfoDO lineInfoDO = lineInfoDAO.getByPartnerId(hyPartnerUserInfoDO.getPartnerId()); + if (lineInfoDO != null){ + userInfoVO.setPartnerLineId(lineInfoDO.getId()); + userInfoVO.setLineStatus(lineInfoDO.getLineStatus()); + } + } + return userInfoVO; + } + @Override public String getUserPhoneNumber(String mobileCode) { diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniProgramAppController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniProgramAppController.java index acb2596c3..2bcb6fb7f 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniProgramAppController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniProgramAppController.java @@ -27,6 +27,12 @@ public class MiniProgramAppController { @Resource private WechatMiniAppService wechatMiniAppService; + @ApiOperation("判断用户是否存在的接口") + @GetMapping("/getUserInfoByJsCode") + public ResponseResult getUserInfoByJsCode(@RequestParam(value = "jsCode",required = true)String jsCode) { + return ResponseResult.success(wechatMiniAppService.getUserInfoByJsCode(jsCode)); + } + @ApiOperation("小程序登录") @PostMapping("/login") public ResponseResult login(@RequestBody @Valid MiniProgramLoginDTO param) {