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/service/impl/TAppUserServiceImpl.java |   49 +++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 39 insertions(+), 10 deletions(-)

diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserServiceImpl.java
index 912a5e0..4f5b66b 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserServiceImpl.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserServiceImpl.java
@@ -1,5 +1,7 @@
 package com.ruoyi.account.service.impl;
 
+import com.alipay.api.response.AlipaySystemOauthTokenResponse;
+import com.alipay.api.response.AlipayUserUserinfoShareResponse;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -32,27 +34,22 @@
     @Autowired
     private TokenService tokenService;
     @Override
-    public Map<String, Object> login(AppletUserDecodeData appletUserDecodeData) {
+    public Map<String, Object> wxLogin(AppletUserDecodeData appletUserDecodeData) {
         // 通过手机号查询用户,是否已存在手动导入用户
         TAppUser appUser = this.getOne(Wrappers.lambdaQuery(TAppUser.class)
                 .eq(TAppUser::getPhone, appletUserDecodeData.getPhoneNumber())
                 .isNull(TAppUser::getWxOpenid)
                 .last("LIMIT 1"));
-        LambdaQueryWrapper<TAppUser> wrapper = Wrappers.lambdaQuery(TAppUser.class)
-                .eq(TAppUser::getWxOpenid, appletUserDecodeData.getOpenId());
         if(Objects.isNull(appUser)){
             // 先使用openId和当前手机号进行查询
-            wrapper.eq(TAppUser::getPhone, appletUserDecodeData.getPhoneNumber())
-                    .last("LIMIT 1");
-            appUser = this.getOne(wrapper);
+            appUser = this.getOne(Wrappers.lambdaQuery(TAppUser.class)
+                    .eq(TAppUser::getWxOpenid, appletUserDecodeData.getOpenId())
+                    .eq(TAppUser::getPhone, appletUserDecodeData.getPhoneNumber())
+                    .last("LIMIT 1"));
             if(Objects.isNull(appUser)){
                 appUser = new TAppUser();
                 appUser.setPhone(appletUserDecodeData.getPhoneNumber());
             }
-        }else {
-            wrapper.last("LIMIT 1");
-            // 删除小程序原有授权用户
-            this.remove(wrapper);
         }
         appUser.setAvatar(appletUserDecodeData.getAvatarUrl());
         appUser.setCity(appletUserDecodeData.getCity());
@@ -60,6 +57,38 @@
         appUser.setProvince(appletUserDecodeData.getProvince());
         appUser.setWxOpenid(appletUserDecodeData.getOpenId());
         this.saveOrUpdate(appUser);
+        return this.getUserInfo(appUser);
+    }
+
+    @Override
+    public Map<String, Object> aliLogin(AlipaySystemOauthTokenResponse response, AlipayUserUserinfoShareResponse userInfo) {
+        // 通过手机号查询用户,是否已存在手动导入用户
+        TAppUser appUser = this.getOne(Wrappers.lambdaQuery(TAppUser.class)
+                .eq(TAppUser::getPhone, userInfo.getMobile())
+                .isNull(TAppUser::getAliOpenid)
+                .last("LIMIT 1"));
+        if(Objects.isNull(appUser)){
+            // 先使用openId和当前手机号进行查询
+            appUser = this.getOne(Wrappers.lambdaQuery(TAppUser.class)
+                    .eq(TAppUser::getAliOpenid, response.getOpenId())
+                    .eq(TAppUser::getPhone, userInfo.getMobile())
+                    .last("LIMIT 1"));
+            if(Objects.isNull(appUser)){
+                appUser = new TAppUser();
+                appUser.setPhone(userInfo.getMobile());
+            }
+        }
+        appUser.setAvatar(userInfo.getAvatar());
+        appUser.setCity(userInfo.getCity());
+        appUser.setName(userInfo.getNickName());
+        appUser.setProvince(userInfo.getProvince());
+        appUser.setAliOpenid(response.getOpenId());
+        this.saveOrUpdate(appUser);
+        return this.getUserInfo(appUser);
+    }
+
+    @Override
+    public Map<String, Object> getUserInfo(TAppUser appUser) {
         LoginUserApplet loginUserApplet = new LoginUserApplet();
         if(ObjectUtils.isNotNull(appUser)){
             loginUserApplet.setUserId(appUser.getId());

--
Gitblit v1.7.1