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