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