From c0e2849274aa58d8075359ca9a9006c0627aa0e8 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期六, 17 八月 2024 16:14:52 +0800
Subject: [PATCH] 支付宝小程序登录

---
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AliLoginController.java |   38 +++++++++-----------------------------
 1 files changed, 9 insertions(+), 29 deletions(-)

diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AliLoginController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AliLoginController.java
index b574502..408d79a 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AliLoginController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AliLoginController.java
@@ -7,6 +7,7 @@
 import com.alipay.api.diagnosis.DiagnosisUtils;
 import com.alipay.api.request.AlipaySystemOauthTokenRequest;
 import com.alipay.api.response.AlipaySystemOauthTokenResponse;
+import com.alipay.api.response.AlipayUserUserinfoShareResponse;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.ruoyi.account.ali.Constant.AliConstant;
@@ -48,44 +49,23 @@
     private AliProperties aliProperties;
     @Autowired
     private TAppUserService appUserService;
-    @Autowired
-    private TokenService tokenService;
     @ApiOperation(value = "通过code获得openid",tags = {"支付宝小程序登录"})
     @GetMapping("/openIdByJsCode")
-    public AjaxResult<Map<String, Object>> openIdByJsCode(@RequestParam(name = "code")@ApiParam(value = "code", required = true) String code) throws AlipayApiException {
+    public AjaxResult<Map<String, Object>> openIdByJsCode(@RequestParam(name = "code")@ApiParam(value = "code", required = true) String code){
         log.info("<<<<<<<<换取openid开始<<<<<<<<:{}", code);
-        // 初始化SDK
-        AlipayClient alipayClient = new DefaultAlipayClient(new AliAppletTools(aliProperties).getAlipayConfig());
-        // 构造请求参数以调用接口
-        AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
-        // 设置授权码
-        request.setCode(code);
-        // 设置授权方式
-        request.setGrantType(AliConstant.GRANT_TYPE);
-        AlipaySystemOauthTokenResponse response = alipayClient.execute(request);
-        TAppUser appUser = null;
+        // 登录
+        AlipaySystemOauthTokenResponse response = new AliAppletTools(aliProperties).login(code);
         if (response.isSuccess()) {
-            String openId = response.getOpenId();
-            appUser = appUserService.getOne(Wrappers.lambdaQuery(TAppUser.class).eq(TAppUser::getAliOpenid, openId).last("limit 1"));
-            if (Objects.isNull(appUser)) {
-                appUser = new TAppUser();
-                appUser.setWxOpenid(openId);
-                appUserService.save(appUser);
-            }
-            log.info("支付宝小程序登录调用成功");
+            // 获取用户信息
+            AlipayUserUserinfoShareResponse userInfo = new AliAppletTools(aliProperties).getUserInfo(response.getAccessToken());
+            log.info("获取支付宝用户信息:{}", userInfo);
+            // 用户信息封装
+            return AjaxResult.ok(appUserService.aliLogin(response,userInfo));
         } else {
              String diagnosisUrl = DiagnosisUtils.getDiagnosisUrl(response);
              log.warn("诊断结果:{}",diagnosisUrl);
              throw new ServiceException("支付宝小程序登录失败");
         }
-        LoginUserApplet loginUserApplet = new LoginUserApplet();
-        if(ObjectUtils.isNotNull(appUser)){
-            loginUserApplet.setUserId(appUser.getId());
-        }
-        HashMap<String, Object> tokenInfos = new HashMap<>();
-        tokenInfos.put("token",tokenService.createTokenApplet(loginUserApplet));
-        tokenInfos.put("info",loginUserApplet);
-        return AjaxResult.ok(tokenInfos);
     }
 
 }

--
Gitblit v1.7.1