From 428ebc05803402bd04ab3e9a6d770bb9eb9e2f65 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期六, 17 八月 2024 16:25:20 +0800 Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile --- 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-order/src/main/java/com/ruoyi/order/service/impl/TExchangeOrderServiceImpl.java | 4 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-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/CouponFallbackFactory.java | 2 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 | 1 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-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java | 4 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/CouponClient.java | 4 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 20 files changed, 204 insertions(+), 183 deletions(-) diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/CouponFallbackFactory.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/CouponFallbackFactory.java index f5821e7..452dadb 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/CouponFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/CouponFallbackFactory.java @@ -25,7 +25,7 @@ return new CouponClient() { @Override - public R<TCoupon> getCouponById(Integer id) { + public R<TCoupon> getCouponById1(Integer id) { return R.fail("根据id获取优惠券信息失败:" + throwable.getMessage()); } }; diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/CouponClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/CouponClient.java index 7d9affe..c4ede7f 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/CouponClient.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/CouponClient.java @@ -22,6 +22,6 @@ * @param id * @return */ - @PostMapping("/t-coupon/getCouponById/{id}") - R<TCoupon> getCouponById(@PathVariable("id") Integer id); + @PostMapping("/t-coupon/getCouponById1/{id}") + R<TCoupon> getCouponById1(@PathVariable("id") Integer id); } 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 35abfc4..dc848a4 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 2bf740b..54626a4 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 @@ -14,6 +14,7 @@ import com.ruoyi.account.service.TAppUserCarService; import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient; import com.ruoyi.chargingPile.api.vo.SiteInfoVO; +import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.BasePage; 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/service/impl/TExchangeOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TExchangeOrderServiceImpl.java index ab3b9ba..7ae05e6 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TExchangeOrderServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TExchangeOrderServiceImpl.java @@ -82,7 +82,7 @@ name = goods.getName(); imgUrl = goods.getCoverPicture(); }else{ - TCoupon coupon = couponClient.getCouponById(tExchangeOrder.getGoodsId()).getData(); + TCoupon coupon = couponClient.getCouponById1(tExchangeOrder.getGoodsId()).getData(); name = coupon.getName(); imgUrl = coupon.getCoverPicture(); } @@ -118,7 +118,7 @@ name = goods.getName(); imgUrl = goods.getCoverPicture(); }else{ - TCoupon coupon = couponClient.getCouponById(exchangeOrder.getGoodsId()).getData(); + TCoupon coupon = couponClient.getCouponById1(exchangeOrder.getGoodsId()).getData(); info.setCouponType(coupon.getType()); info.setDays(coupon.getDays()); info.setEndTime(coupon.getEndTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java index e47ce7e..eede80e 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java @@ -137,8 +137,8 @@ * @param id * @return */ - @PostMapping(value = "/getCouponById/{id}") - public R<TCoupon> getCouponById(@PathVariable Integer id){ + @PostMapping(value = "/getCouponById1/{id}") + public R<TCoupon> getCouponById1(@PathVariable(value = "id") Integer id){ TCoupon coupon = tCouponService.getById(id); return R.ok(coupon); } -- Gitblit v1.7.1