From 50bcc9e479b99564e84c29679e02fea3d6bcc898 Mon Sep 17 00:00:00 2001 From: wqy <1191068887@qq.com> Date: Fri, 23 Feb 2024 17:22:43 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cyl/h5/controller/WechatController2.java | 9 ++++++--- .../com/cyl/h5/service/H5MemberService.java | 15 ++++++++++++++- .../ums/service/MemberWechatService.java | 17 +++++++++++++++++ .../com/cyl/wechat/response/WechatUserAuth.java | 2 ++ 4 files changed, 39 insertions(+), 4 deletions(-) diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/controller/WechatController2.java b/ruoyi-mall/src/main/java/com/cyl/h5/controller/WechatController2.java index 7260f59..acf67d6 100644 --- a/ruoyi-mall/src/main/java/com/cyl/h5/controller/WechatController2.java +++ b/ruoyi-mall/src/main/java/com/cyl/h5/controller/WechatController2.java @@ -55,10 +55,13 @@ public class WechatController2 { if (object != null) { String openId = object.getString("openid"); String sessionId = object.getString("session_key"); + JSONObject obj = new JSONObject(); + obj.put("openId", openId); + obj.put("sessionId", sessionId); Map map = new HashMap(); - map.put("openId", openId); - map.put("sessionId", sessionId); - return AjaxResult.successData(Base64Utils.encodeToString(JSON.toJSONString(map).getBytes())); + map.put("data", Base64Utils.encodeToString(JSON.toJSONString(obj).getBytes())); + map.put("token", memberWechatService.getToken(openId)); + return AjaxResult.successData(map); } return AjaxResult.success(null); } diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/service/H5MemberService.java b/ruoyi-mall/src/main/java/com/cyl/h5/service/H5MemberService.java index b8f8b83..5a8eafb 100644 --- a/ruoyi-mall/src/main/java/com/cyl/h5/service/H5MemberService.java +++ b/ruoyi-mall/src/main/java/com/cyl/h5/service/H5MemberService.java @@ -266,7 +266,7 @@ public class H5MemberService { * @param memberId 登录会员id * @return 结果 */ - private H5LoginResponse getLoginResponse(Long memberId){ + public H5LoginResponse getLoginResponse(Long memberId){ LoginMember loginMember = new LoginMember(); loginMember.setMemberId(memberId); String token = tokenService.createMemberToken(loginMember); @@ -296,6 +296,15 @@ public class H5MemberService { log.error("微信授权失败"); throw new RuntimeException("授权失败,请重试"); } + //判断openid是否存在 + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("openid", userToken.getOpenid()); + MemberWechat memberWechat = memberWechatMapper.selectOne(qw); + if (memberWechat == null) { + return userToken; + } + Member member = memberMapper.selectById(memberWechat.getMemberId()); + userToken.setToken(getLoginResponse(member.getId()).getToken()); return userToken; } @@ -392,4 +401,8 @@ public class H5MemberService { } return null; } + + public Member selectById(Long memberId) { + return memberMapper.selectById(memberId); + } } diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/ums/service/MemberWechatService.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/service/MemberWechatService.java index 31d0168..0ab0a16 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/ums/service/MemberWechatService.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/service/MemberWechatService.java @@ -14,7 +14,10 @@ import com.cyl.external.WechatUtil; import com.cyl.external.resp.AccessTokenResp; import com.cyl.external.resp.UserInfoResp; import com.cyl.h5.pojo.vo.form.WechatLoginForm; +import com.cyl.h5.service.H5MemberService; import com.cyl.manager.ums.convert.MemberWechatConvert; +import com.cyl.manager.ums.domain.Member; +import com.cyl.manager.ums.mapper.MemberMapper; import com.cyl.wechat.WechatPayData; import com.github.pagehelper.PageHelper; import com.ruoyi.common.core.domain.entity.SysUser; @@ -54,6 +57,8 @@ public class MemberWechatService { private SysLoginService loginService; @Autowired private RestTemplate restTemplate; + @Autowired + private H5MemberService memberService; private static String LOGIN_URL = "https://api.weixin.qq.com/sns/jscode2session?appid=#{APPID}&secret=#{SECRET}&js_code=#{JSCODE}&grant_type=authorization_code"; @@ -230,4 +235,16 @@ public class MemberWechatService { return null; } } + + public String getToken(String openId) { + //判断openid是否存在 + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("routine_openid", openId); + MemberWechat memberWechat = memberWechatMapper.selectOne(qw); + if (memberWechat == null) { + return null; + } + Member member = memberService.selectById(memberWechat.getMemberId()); + return memberService.getLoginResponse(member.getId()).getToken(); + } } diff --git a/ruoyi-mall/src/main/java/com/cyl/wechat/response/WechatUserAuth.java b/ruoyi-mall/src/main/java/com/cyl/wechat/response/WechatUserAuth.java index b659482..9256205 100644 --- a/ruoyi-mall/src/main/java/com/cyl/wechat/response/WechatUserAuth.java +++ b/ruoyi-mall/src/main/java/com/cyl/wechat/response/WechatUserAuth.java @@ -10,4 +10,6 @@ public class WechatUserAuth { private String refresh_token; private String openid; private String scope; + //登录的token + private String token; } \ No newline at end of file