From b265ff9c3dbcee12196985c17cda59191e2fd348 Mon Sep 17 00:00:00 2001 From: 13405411873 <1994398261@qq.com> Date: Mon, 21 Apr 2025 12:26:34 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E5=B8=83=E9=80=9A=E5=91=8A=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ruoyi/api/WxApi.java | 61 +++++++++++++++++++ .../com/ruoyi/busi/utils/WeChatUtils.java | 4 +- .../member/service/IMemberUserService.java | 10 +++ .../service/impl/MemberUserServiceImpl.java | 52 ++++++++++++++++ .../controller/system/SysLoginController.java | 13 ++-- .../src/main/resources/application.yml | 25 +++++++- .../core/domain/model/GzhLoginBody.java | 16 +++++ .../common/core/domain/model/LoginUser.java | 17 ++++-- 8 files changed, 186 insertions(+), 12 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/api/WxApi.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/GzhLoginBody.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/WxApi.java b/ruoyi-admin/src/main/java/com/ruoyi/api/WxApi.java new file mode 100644 index 0000000..2b1134f --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/WxApi.java @@ -0,0 +1,61 @@ +package com.ruoyi.api; + + +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import com.ruoyi.busi.utils.WeChatUtils; +import com.ruoyi.common.annotation.Anonymous; +import com.ruoyi.common.constant.Constants; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.model.GzhLoginBody; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.member.service.IMemberUserService; +import com.wechat.pay.contrib.apache.httpclient.util.AesUtil; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.security.GeneralSecurityException; +import java.util.HashMap; +import java.util.Map; + +@RestController +@RequestMapping("/wxApi") +public class WxApi { + @Autowired + private WeChatUtils weChatUtils; + @Autowired + private IMemberUserService memberUserService; + + + + @GetMapping("/getCodeUrl") + @Anonymous + public Map getCodeUrl(String userType) { + Map res = new HashMap<>(); + res.put("codeUrl", weChatUtils.getCodeUrl("https://www.nuoyunr.com/#/pages/mine/member/member-card", userType)); + return res; + } + + @GetMapping("/getWebAccessTokenAndOpenid") + @Anonymous + public JSONObject getWebAccessTokenAndOpenid(String code) { + return weChatUtils.getWebAccessTokenAndOpenid(code); + } + + @PostMapping("/gzhLogin") + @Anonymous + public AjaxResult gzhLogin(@RequestBody GzhLoginBody gzhLoginBody) + { + JSONObject userInfo = weChatUtils.getUserInfo(gzhLoginBody.getAccess_token(), gzhLoginBody.getOpenid()); + //如果解析成功,获取token + String token = memberUserService.gzhLogin(gzhLoginBody.getOpenid(),userInfo); + AjaxResult ajax = AjaxResult.success(); + ajax.put(Constants.TOKEN, token); + return ajax; + + } + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/utils/WeChatUtils.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/utils/WeChatUtils.java index c1ffe68..b9ef4be 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/busi/utils/WeChatUtils.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/utils/WeChatUtils.java @@ -66,7 +66,7 @@ public class WeChatUtils { */ public JSONObject getWebAccessTokenAndOpenid(String code) { String requestUrl = WEB_ACCESS_TOKEN_URL.replace("APPID", wechatPayConfig.getAppId()) - .replace("APPSECRET", wechatPayConfig.getAppSecret()) + .replace("APPSECRET", wechatPayConfig.getWxAppSecret()) .replace("CODE", code); String response = HttpUtil.get(requestUrl); return JSONUtil.parseObj(response); @@ -105,7 +105,7 @@ public class WeChatUtils { // 如果Redis中没有或者强制刷新,则从微信获取 String requestUrl = ACCESS_TOKEN_URL.replace("APPID", wechatPayConfig.getAppId()) - .replace("APPSECRET", wechatPayConfig.getAppSecret()); + .replace("APPSECRET", wechatPayConfig.getWxAppSecret()); String response = HttpUtil.get(requestUrl); JSONObject jsonObject = JSONUtil.parseObj(response); accessToken = jsonObject.getStr("access_token"); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/member/service/IMemberUserService.java b/ruoyi-admin/src/main/java/com/ruoyi/member/service/IMemberUserService.java index 7c641ec..12129c0 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/member/service/IMemberUserService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/member/service/IMemberUserService.java @@ -2,6 +2,7 @@ package com.ruoyi.member.service; import java.util.List; +import cn.hutool.json.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; @@ -76,4 +77,13 @@ public interface IMemberUserService extends IService { **/ void uniSaveMember(MemberUserVO memberUser); + /** + * 微信授权登陆 + * + * @return java.lang.String + * @author vinjor-M + * @date 15:55 2025/3/26 + **/ + String gzhLogin(String wxOpenId, JSONObject userInfo); + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/member/service/impl/MemberUserServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/member/service/impl/MemberUserServiceImpl.java index 21bc757..afd64f6 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/member/service/impl/MemberUserServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/member/service/impl/MemberUserServiceImpl.java @@ -16,6 +16,7 @@ import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.common.utils.StringUtils; import com.ruoyi.constant.DictConstants; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.member.domain.MemberUser; @@ -234,4 +235,55 @@ public class MemberUserServiceImpl extends ServiceImpl