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) {