From 3244b550596e0330031b3f4547356927df83b0ad Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期一, 19 五月 2025 11:48:35 +0800
Subject: [PATCH] 修改bug

---
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AliLoginController.java |   53 +++++++++++++++++++----------------------------------
 1 files changed, 19 insertions(+), 34 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..6db885e 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,14 +7,18 @@
 import com.alipay.api.diagnosis.DiagnosisUtils;
 import com.alipay.api.request.AlipaySystemOauthTokenRequest;
 import com.alipay.api.response.AlipaySystemOauthTokenResponse;
+import com.alipay.api.response.AlipayUserInfoShareResponse;
+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;
 import com.ruoyi.account.ali.model.AliProperties;
+import com.ruoyi.account.ali.pojo.AppletUserLogin;
 import com.ruoyi.account.ali.tools.AliAppletTools;
 import com.ruoyi.account.api.model.TAppUser;
 import com.ruoyi.account.service.TAppUserService;
 import com.ruoyi.common.core.exception.ServiceException;
+import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.security.service.TokenService;
 import com.ruoyi.system.api.model.LoginUserApplet;
@@ -22,10 +26,7 @@
 import io.swagger.annotations.ApiParam;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -48,44 +49,28 @@
     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 {
-        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;
+    @PostMapping("/openIdByJsCode")
+    public AjaxResult<Map<String, Object>> openIdByJsCode(@RequestBody AppletUserLogin appletUserLogin){
+        log.info("<<<<<<<<换取openid开始<<<<<<<<:{}", appletUserLogin.getCode());
+        // 登录
+        AlipaySystemOauthTokenResponse response = new AliAppletTools(aliProperties).login(appletUserLogin.getCode());
         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);
+            // 获取用户信息
+//            AlipayUserInfoShareResponse userInfo = new AliAppletTools(aliProperties).getUserInfo(response.getAccessToken());
+            if(StringUtils.isEmpty(appletUserLogin.getToken())){
+                return AjaxResult.success("已拒绝授权");
             }
-            log.info("支付宝小程序登录调用成功");
+            // 获取用户手机号
+            String phoneNumber = new AliAppletTools(aliProperties).getPhoneNumber(appletUserLogin.getToken());
+            log.info("获取支付宝用户信息:{}", phoneNumber);
+            // 用户信息封装
+            return AjaxResult.success(appUserService.aliLogin(response,phoneNumber,appletUserLogin.getInviteUserId()));
         } 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