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/WxLoginController.java | 2
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserServiceImpl.java | 49 +++++-
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/wx/tools/WxAppletTools.java | 6
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserService.java | 17 ++
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/Constant/AliConstant.java | 5
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AliLoginController.java | 38 +----
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/query/ChangeUserQuery.java | 15 ++
/dev/null | 122 -----------------
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java | 10 +
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml | 17 ++
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/tools/AliAppletTools.java | 64 ++++++++
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java | 2
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java | 9 +
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java | 7 +
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java | 8 +
ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml | 3
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java | 2
17 files changed, 198 insertions(+), 178 deletions(-)
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/query/ChangeUserQuery.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/query/ChangeUserQuery.java
new file mode 100644
index 0000000..0135ce7
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/query/ChangeUserQuery.java
@@ -0,0 +1,15 @@
+package com.ruoyi.system.api.query;
+
+import com.ruoyi.common.core.web.page.BasePage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "用户选择列表Query")
+public class ChangeUserQuery extends BasePage {
+
+ @ApiModelProperty(value = "用户名称")
+ private String nickName;
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java
index bc9e7b5..8ca54af 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java
@@ -16,6 +16,7 @@
import com.ruoyi.other.api.domain.TUserSite;
import com.ruoyi.other.api.feignClient.RoleSiteClient;
import com.ruoyi.other.api.feignClient.UserSiteClient;
+import com.ruoyi.system.api.query.ChangeUserQuery;
import com.ruoyi.system.domain.dto.IndexDto;
import com.ruoyi.system.domain.vo.UserRoleVO;
import com.ruoyi.system.api.model.*;
@@ -110,6 +111,15 @@
}
/**
+ * 获取用户选择列表
+ */
+ @PostMapping("/getChangeUserList")
+ @ApiOperation(value = "获取用户选择列表", tags = {"管理后台-获取用户选择列表"})
+ public AjaxResult<PageInfo<SysUser>> getChangeUserList(@RequestBody ChangeUserQuery query) {
+ return AjaxResult.success(userService.getChangeUserList(query));
+ }
+
+ /**
* 新增用户
*/
@Log(title = "用户管理", businessType = BusinessType.INSERT)
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
index 74b10ed..3851999 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
@@ -5,6 +5,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.system.api.query.ChangeUserQuery;
import com.ruoyi.system.query.GetSysUserList;
import org.apache.ibatis.annotations.Param;
import com.ruoyi.system.api.domain.SysUser;
@@ -139,4 +140,12 @@
List<Long> getSysUserFromPhone(@Param("phoneNumber") String phoneNumber);
void deleteSysUser(@Param("userIds") ArrayList<Integer> userIds);
+
+ /**
+ * 获取用户选择列表
+ * @param pageInfo
+ * @param query
+ * @return
+ */
+ List<SysUser> getChangeUserList(@Param("pageInfo")PageInfo<SysUser> pageInfo,@Param("query") ChangeUserQuery query);
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
index c215705..0b89db9 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
@@ -6,6 +6,7 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.system.api.domain.SysUser;
+import com.ruoyi.system.api.query.ChangeUserQuery;
import com.ruoyi.system.query.GetSysUserList;
/**
@@ -218,4 +219,10 @@
void deleteSysUser(ArrayList<Integer> userIds);
+ /**
+ * 获取用户选择列表
+ * @param query
+ * @return
+ */
+ PageInfo<SysUser> getChangeUserList(ChangeUserQuery query);
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
index 6b7e40e..3f42081 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -15,6 +15,7 @@
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.other.api.feignClient.RoleSiteClient;
import com.ruoyi.other.api.feignClient.UserSiteClient;
+import com.ruoyi.system.api.query.ChangeUserQuery;
import com.ruoyi.system.domain.SysPost;
import com.ruoyi.system.domain.SysUserPost;
import com.ruoyi.system.domain.SysUserRole;
@@ -609,4 +610,11 @@
this.baseMapper.deleteSysUser(userIds);
}
+ @Override
+ public PageInfo<SysUser> getChangeUserList(ChangeUserQuery query) {
+ PageInfo<SysUser> pageInfo = new PageInfo<>(query.getPageCurr(), query.getPageSize());
+ List<SysUser> list = this.baseMapper.getChangeUserList(pageInfo, query);
+ return pageInfo.setRecords(list);
+ }
+
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
index 4446573..6ea45fd 100644
--- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -155,8 +155,23 @@
<select id="getSysUserFromPhone" resultType="java.lang.Long">
select user_id from sys_user where phonenumber =#{phoneNumber}
</select>
+ <select id="getChangeUserList" resultType="com.ruoyi.system.api.domain.SysUser">
+ select
+ user_id AS userId,
+ nick_name AS nickName,
+ create_time AS createTime,
+ remark AS remark
+ from sys_user
+ <where>
+ <if test="query.nickName != null and query.nickName != ''">
+ AND nick_name LIKE concat('%',#{query.nickName},'%')
+ </if>
+ AND del_flag = '0'
+ </where>
+ ORDER BY create_time DESC
+ </select>
- <insert id="insertUser" parameterType="com.ruoyi.system.api.domain.SysUser" useGeneratedKeys="true" keyProperty="userId">
+ <insert id="insertUser" parameterType="com.ruoyi.system.api.domain.SysUser" useGeneratedKeys="true" keyProperty="userId">
insert into sys_user(
<if test="userId != null and userId != 0">user_id,</if>
<if test="deptId != null and deptId != 0">dept_id,</if>
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/Constant/AliConstant.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/Constant/AliConstant.java
index 8cb6198..5cfc7c7 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/Constant/AliConstant.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/Constant/AliConstant.java
@@ -6,5 +6,8 @@
* 支付宝配置
*/
public static final String GRANT_TYPE = "authorization_code";
-
+ /**
+ * 获取token接口地址
+ */
+ public static final String LOGIN_SERVER_URL = "https://openapi.alipay.com/gateway.do";
}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/tools/AliAppletTools.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/tools/AliAppletTools.java
index 52d54d7..8a60f08 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/tools/AliAppletTools.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/tools/AliAppletTools.java
@@ -1,6 +1,14 @@
package com.ruoyi.account.ali.tools;
+import com.alipay.api.AlipayApiException;
+import com.alipay.api.AlipayClient;
import com.alipay.api.AlipayConfig;
+import com.alipay.api.DefaultAlipayClient;
+import com.alipay.api.request.AlipaySystemOauthTokenRequest;
+import com.alipay.api.request.AlipayUserUserinfoShareRequest;
+import com.alipay.api.response.AlipaySystemOauthTokenResponse;
+import com.alipay.api.response.AlipayUserUserinfoShareResponse;
+import com.ruoyi.account.ali.Constant.AliConstant;
import com.ruoyi.account.ali.model.AliProperties;
import lombok.extern.slf4j.Slf4j;
@@ -13,8 +21,14 @@
@Slf4j
public class AliAppletTools {
- private static final String SERVER_URL = "https://openapi.alipay.com/gateway.do";
-
+ //设置连接池中的最大可缓存的空闲连接数
+ private static final Integer MaxIdleConnections = 5;
+ //连接超时,单位:毫秒,默认3000
+ private static final Integer ConnectTimeout = 3000;
+ //读取超时,单位:毫秒,默认15000
+ private static final Integer ReadTimeout = 15000;
+ //空闲连接存活时间,单位:毫秒,默认10000L
+ private static final Long KeepAliveDuration = 10000L;
private AliProperties aliProperties;
public AliAppletTools(AliProperties aliProperties) {
@@ -22,15 +36,57 @@
}
/**
+ * 支付宝小程序授权登录接口
+ * @param code
+ * @return
+ */
+ public AlipaySystemOauthTokenResponse login(String code) {
+ try {
+ // 初始化SDK
+ AlipayClient alipayClient = new DefaultAlipayClient(new AliAppletTools(aliProperties).getAlipayConfig(AliConstant.LOGIN_SERVER_URL));
+ // 构造请求参数以调用接口
+ AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
+ // 设置授权码
+ request.setCode(code);
+ // 设置授权方式
+ request.setGrantType(AliConstant.GRANT_TYPE);
+ return alipayClient.execute(request);
+ } catch (AlipayApiException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ /**
+ * 支付宝小程序授权获取手机号
+ * @return
+ */
+ public AlipayUserUserinfoShareResponse getUserInfo(String accessToken) {
+ try {
+ // 初始化SDK
+ AlipayClient alipayClient = new DefaultAlipayClient(new AliAppletTools(aliProperties).getAlipayConfig(AliConstant.LOGIN_SERVER_URL));
+ //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.user.userinfo.share
+ AlipayUserUserinfoShareRequest request = new AlipayUserUserinfoShareRequest();
+ //授权类接口执行API调用时需要带上accessToken
+ return alipayClient.execute(request,accessToken);
+ } catch (AlipayApiException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ /**
* 初始化支付宝配置
* @return
*/
- public AlipayConfig getAlipayConfig() {
+ public AlipayConfig getAlipayConfig(String serverUrl) {
AlipayConfig alipayConfig = new AlipayConfig();
- alipayConfig.setServerUrl(SERVER_URL);
+ alipayConfig.setServerUrl(serverUrl);
alipayConfig.setAppId(aliProperties.getAppId());
alipayConfig.setPrivateKey(aliProperties.getPrivateKey());
alipayConfig.setAlipayPublicKey(aliProperties.getAlipayPublicKey());
+ alipayConfig.setMaxIdleConnections(MaxIdleConnections);
+ alipayConfig.setConnectTimeout(ConnectTimeout);
+ alipayConfig.setReadTimeout(ReadTimeout);
+ alipayConfig.setKeepAliveDuration(KeepAliveDuration);
return alipayConfig;
}
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);
}
}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java
index 2bf8d35..9504465 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java
@@ -71,7 +71,7 @@
public AjaxResult<List<TAppUserCar>> carList() {
// todo 用户id
List<TAppUserCar> appUserId = appUserCarService.list(new QueryWrapper<TAppUserCar>()
- .eq("app_user_id",tokenService.getLoginUserApplet().getUserid() ));
+ .eq("app_user_id",tokenService.getLoginUserApplet().getUserId()));
return AjaxResult.ok(appUserId);
}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java
index e3444f7..58cc16d 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java
@@ -62,6 +62,6 @@
}
AppletUserDecodeData appletUserDecodeData = WxUtils.encryptedData(data.getEncryptedData(), sessionKey, data.getIv());
appletUserDecodeData.setOpenId(openid);
- return AjaxResult.ok(appUserService.login(appletUserDecodeData));
+ return AjaxResult.ok(appUserService.wxLogin(appletUserDecodeData));
}
}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserService.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserService.java
index 11fec43..0a9a179 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserService.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserService.java
@@ -1,5 +1,7 @@
package com.ruoyi.account.service;
+import com.alipay.api.response.AlipaySystemOauthTokenResponse;
+import com.alipay.api.response.AlipayUserUserinfoShareResponse;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.account.api.model.TAppUser;
import com.ruoyi.account.wx.pojo.AppletUserDecodeData;
@@ -21,6 +23,19 @@
* @param appletUserDecodeData
* @return
*/
- Map<String, Object> login(AppletUserDecodeData appletUserDecodeData);
+ Map<String, Object> wxLogin(AppletUserDecodeData appletUserDecodeData);
+ /**
+ * 支付宝小程序登录用户封装
+ * @param userInfo
+ * @return
+ */
+ Map<String, Object> aliLogin(AlipaySystemOauthTokenResponse response,AlipayUserUserinfoShareResponse userInfo);
+
+ /**
+ * 封装用户信息和token
+ * @param appUser
+ * @return
+ */
+ Map<String, Object> getUserInfo(TAppUser appUser);
}
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());
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/wx/tools/JsonUtils.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/wx/tools/JsonUtils.java
deleted file mode 100644
index 0b9fe63..0000000
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/wx/tools/JsonUtils.java
+++ /dev/null
@@ -1,110 +0,0 @@
-package com.ruoyi.account.wx.tools;
-
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.JsonSerializer;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializerProvider;
-import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
-import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
-import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
-import com.hotel.config.JacksonConfig;
-import com.hotel.exception.ServiceException;
-import lombok.extern.slf4j.Slf4j;
-
-import java.io.IOException;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-
-/**
- * Json转换工具类
- * 参考:https://blog.csdn.net/weixin_38413579/article/details/82562634
- * @author madman
- */
-@Slf4j
-public final class JsonUtils {
-
- private static final ObjectMapper OM = new ObjectMapper();
- private static final JavaTimeModule timeModule = new JavaTimeModule();
-
- /**
- * 转换LocalDateTime
- */
- static class LocalDateTimeSerializer extends JsonSerializer<LocalDateTime> {
- @Override
- public void serialize(LocalDateTime localDateTime, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
- jsonGenerator.writeString(localDateTime.format(DateTimeFormatter.ofPattern(JacksonConfig.dateTimeFormat)));
- }
- }
-
- /**
- * 转换LocalDate
- */
- static class LocalDateSerializer extends JsonSerializer<LocalDate> {
- @Override
- public void serialize(LocalDate localDate, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
- jsonGenerator.writeString(localDate.format(DateTimeFormatter.ofPattern(JacksonConfig.dateFormat)));
- }
- }
-
- /**
- * 设置 ObjectMapper
- *
- * @return
- */
- private static ObjectMapper getObjectMapper() {
- // 序列化
- timeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer());
- timeModule.addSerializer(LocalDate.class, new LocalDateSerializer());
- // 反序列化
- timeModule.addDeserializer(LocalDateTime.class,
- new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(JacksonConfig.dateTimeFormat)));
- timeModule.addDeserializer(LocalDate.class,
- new LocalDateDeserializer(DateTimeFormatter.ofPattern(JacksonConfig.dateFormat)));
- // 允许对象忽略json中不存在的属性
- OM.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
- OM.registerModule(timeModule);
- return OM;
- }
-
- /**
- * 将对象序列化
- */
- public static <T> String toJsonString(T obj) {
- try {
- ObjectMapper om = getObjectMapper();
- return om.writeValueAsString(obj);
- } catch (JsonProcessingException e) {
- log.error("转json字符串失败:{}", obj);
- return null;
- }
- }
-
- /**
- * 反序列化对象字符串
- */
- public static <T> T parseObject(String json, Class<T> clazz) {
- try {
- ObjectMapper om = getObjectMapper();
- return om.readValue(json, clazz);
- } catch (JsonProcessingException e) {
- throw new ServiceException("反序列化对象字符串失败");
- }
- }
-
- /**
- * 反序列化字符串成为对象
- */
- public static <T> T parseObject(String json, TypeReference<T> valueTypeRef) {
- try {
- ObjectMapper om = getObjectMapper();
- return om.readValue(json, valueTypeRef);
- } catch (JsonProcessingException e) {
- throw new ServiceException("反序列化字符串成为对象失败");
- }
- }
-
-}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/wx/tools/WxAppletTools.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/wx/tools/WxAppletTools.java
index 01feebf..2dd2f67 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/wx/tools/WxAppletTools.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/wx/tools/WxAppletTools.java
@@ -58,12 +58,6 @@
private RestTemplate wxRestTemplate;
private WxCacheTemplate<String> wxCacheTemplate;
- public WxAppletTools(RestTemplate wxRestTemplate, WeixinProperties wxConfig, WxCaffineCache wxCacheTemplate) {
- this.wxRestTemplate = wxRestTemplate;
- this.wxCacheTemplate = wxCacheTemplate;
- this.wxConfig = wxConfig;
- }
-
public WxAppletTools(RestTemplate wxRestTemplate, WeixinProperties wxConfig) {
this.wxRestTemplate = wxRestTemplate;
this.wxConfig = wxConfig;
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/wx/tools/WxCaffineCache.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/wx/tools/WxCaffineCache.java
deleted file mode 100644
index 5c40a14..0000000
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/wx/tools/WxCaffineCache.java
+++ /dev/null
@@ -1,122 +0,0 @@
-package com.ruoyi.account.wx.tools;
-
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.util.StringUtils;
-
-import java.util.Objects;
-import java.util.concurrent.TimeUnit;
-
-/**
- * @author xiaochen
- * @ClassName AbstractCaffineCache
- * @Description
- * @date 2021-01-11 11:27
- */
-@Slf4j
-class WxCaffineCache<T> implements WxCacheTemplate<T> {
- /**
- * 缓存环境
- */
- private String env = "wx";
-
- /**
- * 本地缓存实例
- */
- private LoadingCache<String, Object> loadingCache;
-
- /**
- * 构造函数
- *
- */
- public WxCaffineCache() {
- WxCache cache = WxCache.options().setTimeUnit(TimeUnit.SECONDS).build();
- // 构建本地缓存实例
- this.loadingCache = caffineCacheManage(cache);
- }
-
-
- @Override
- public boolean setKey(String key, T value) {
- if (Objects.isNull(this.loadingCache)) {
- return Boolean.FALSE;
- }
- if (StringUtils.hasLength(this.env)) {
- this.loadingCache.put(this.env + ":" + key, value);
- } else {
- this.loadingCache.put(key, value);
- }
- return Boolean.TRUE;
- }
-
- @Override
- public T getKey(String key) {
- if (Objects.isNull(this.loadingCache)) {
- return null;
- }
- try {
- if (StringUtils.hasLength(this.env)) {
- return (T) this.loadingCache.get(this.env + ":" + key);
- } else {
- return (T) this.loadingCache.get(key);
- }
- } catch (Exception e) {
- return null;
- }
- }
-
- @Override
- public boolean delKey(String key) {
- if (Objects.isNull(this.loadingCache)) {
- return Boolean.FALSE;
- }
- if (StringUtils.hasLength(this.env)) {
- this.loadingCache.invalidate(this.env + ":" + key);
- } else {
- this.loadingCache.invalidate(key);
- }
- return Boolean.TRUE;
- }
-
- /**
- * 缓存管理
- *
- * @param cache
- * @param <T>
- * @return
- */
- private static <T> LoadingCache<String, T> caffineCacheManage(WxCache cache) {
- log.info("初始化缓存的实体数据:{}", cache);
- if (Objects.isNull(cache)) {
- throw new NullPointerException("请实例化一个Cache对象!");
- }
- LoadingCache<String, T> localcache =
- // 构建本地缓存,调用链的方式
- // ,1000是设置缓存的初始化容量,maximumSize是设置缓存最大容量,当超过了最大容量,guava将使用LRU算法(最少使用算法),来移除缓存项
- // expireAfterAccess(12,TimeUnit.HOURS)设置缓存有效期为12个小时
- Caffeine.newBuilder().initialCapacity(cache.getInitialCapacity()).maximumSize(cache.getMaximumSize())
- // 设置写缓存后n秒钟过期
- // .expireAfterWrite(30, TimeUnit.SECONDS)
- .expireAfterWrite(cache.getDuration(), cache.getTimeunit())
- // 设置读写缓存后n秒钟过期,实际很少用到,类似于expireAfterWrite
- //.expireAfterAccess(googleCache.getDuration(), googleCache.getTimeunit())
- // 只阻塞当前数据加载线程,其他线程返回旧值
- //.refreshAfterWrite(10, TimeUnit.SECONDS)
- // 设置缓存的移除通知//用户手动移除EXPLICIT,
- // //用户手动替换REPLACED,//被垃圾回收COLLECTED,//超时过期EXPIRED,//SIZE由于缓存大小限制
- .removalListener(new RemovalListener<String, T>() {
- @Override
- public void onRemoval(String key, Object value, RemovalCause cause) {
- log.info(key + ":" + value + ":" + cause.name());
- }
- })
- // build里面要实现一个匿名抽象类
- .build(new CacheLoader<String, T>() {
- // 这个方法是默认的数据加载实现,get的时候,如果key没有对应的值,就调用这个方法进行加载。此处是没有默认值则返回null
- @Override
- public T load(String key) throws Exception {
- return null;
- }
- });
- return localcache;
- }
-}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml
index 78f3e47..cb53cae 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml
@@ -30,8 +30,9 @@
FROM t_accounting_strategy
<where>
<if test="query.name != null and query.name != ''">
- AND `name` LIKE concat('%',#{query.name}, '%')
+ AND `name` LIKE concat('%',#{query.name}, '%')
</if>
+ AND site_id IS NULL
AND del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()}
</where>
ORDER BY create_time DESC
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
index 9b405c1..b2dffa9 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -47,7 +47,7 @@
@PostMapping(value = "/getCar")
public R<Long> getCar() {
List<TChargingOrder> list = chargingOrderService.list(new LambdaQueryWrapper<TChargingOrder>()
- .eq(TChargingOrder::getAppUserId, tokenService.getLoginUserApplet().getUserid())
+ .eq(TChargingOrder::getAppUserId, tokenService.getLoginUserApplet().getUserId())
.isNotNull(TChargingOrder::getAppUserCarId));
if (!list.isEmpty()){
// 最近使用的车辆id
--
Gitblit v1.7.1