From 68c33f753b2905a007204492f7c4b45761fc3571 Mon Sep 17 00:00:00 2001 From: 18650502300 <18650502300@163.com> Date: Tue, 22 Oct 2024 21:55:14 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8C=BA=E5=88=86=E7=94=A8=E6=88=B7=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/app/AppController.java | 21 +++++++++++++++++++ .../appAgent/AppAgentController.java | 2 +- .../appadmin/AppAdminController.java | 2 +- .../controller/system/SysLoginController.java | 2 +- .../controller/system/SysRoleController.java | 3 ++- .../common/core/domain/entity/RlUser.java | 3 +++ .../web/service/SysLoginService.java | 16 +++++++------- .../web/service/UserDetailsServiceImpl.java | 10 +++++++-- .../system/domain/userExt/RlUserExt.java | 5 ----- .../com/ruoyi/system/mapper/RlUserMapper.java | 3 ++- .../ruoyi/system/service/IRlUserService.java | 2 +- .../impl/RlChangeBalanceServiceImpl.java | 6 +++++- .../service/impl/RlUserServiceImpl.java | 9 ++++---- .../resources/mapper/system/RlUserMapper.xml | 13 +++++++----- 14 files changed, 67 insertions(+), 30 deletions(-) diff --git a/ridelease-admin/src/main/java/com/ruoyi/web/controller/app/AppController.java b/ridelease-admin/src/main/java/com/ruoyi/web/controller/app/AppController.java index 356514a..37f3c2f 100644 --- a/ridelease-admin/src/main/java/com/ruoyi/web/controller/app/AppController.java +++ b/ridelease-admin/src/main/java/com/ruoyi/web/controller/app/AppController.java @@ -3,13 +3,17 @@ package com.ruoyi.web.controller.app; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson2.JSON; import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.constant.Constants; +import com.ruoyi.common.constant.ServiceConstants; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.AsArticleClassify; import com.ruoyi.common.core.domain.entity.RlUser; import com.ruoyi.common.core.domain.entity.SysDictData; +import com.ruoyi.common.core.domain.model.LoginBody; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.framework.web.service.SysLoginService; import com.ruoyi.system.domain.EtArticle; import com.ruoyi.system.domain.RlFunction; import com.ruoyi.system.domain.agent.RlAgent; @@ -72,6 +76,23 @@ public class AppController extends BaseController @Resource private IRlUserService userService; + @Autowired + private SysLoginService loginService; + + /** + * 验证码登录 + */ + @PostMapping("/appCodeLogin") + public AjaxResult appCodeLogin(@RequestBody LoginBody loginBody) { + AjaxResult ajax = AjaxResult.success(); + /**通过手机号找到用户名*/ + String phone = loginBody.getPhone(); + // 生成令牌 + String token = loginService.appCodeLogin(phone, loginBody.getPhoneCode(),loginBody.getPassword(), loginBody.getUuid(), ServiceConstants.APPLET_TYPE_USER); + ajax.put(Constants.TOKEN, token); + return ajax; + } + /** * 查询城市列表 */ diff --git a/ridelease-admin/src/main/java/com/ruoyi/web/controller/appAgent/AppAgentController.java b/ridelease-admin/src/main/java/com/ruoyi/web/controller/appAgent/AppAgentController.java index e427057..94a0e8a 100644 --- a/ridelease-admin/src/main/java/com/ruoyi/web/controller/appAgent/AppAgentController.java +++ b/ridelease-admin/src/main/java/com/ruoyi/web/controller/appAgent/AppAgentController.java @@ -286,7 +286,7 @@ public class AppAgentController extends BaseController { logger.info("上传收款码:【collectionCode="+collectionCode+",用户提现渠道id[userWithdrawChannelId]="+userWithdrawChannelId+"】"); RlUserWithdraw userWithdraw = new RlUserWithdraw(); - userWithdraw.setChannelId(userWithdrawChannelId); + userWithdraw.setUserChannelId(userWithdrawChannelId); userWithdraw.setCollectionCode(collectionCode); int i = userWithdrawService.updateRlUserWithdraw(userWithdraw); return toAjax(i); diff --git a/ridelease-admin/src/main/java/com/ruoyi/web/controller/appadmin/AppAdminController.java b/ridelease-admin/src/main/java/com/ruoyi/web/controller/appadmin/AppAdminController.java index b437e9d..e44124a 100644 --- a/ridelease-admin/src/main/java/com/ruoyi/web/controller/appadmin/AppAdminController.java +++ b/ridelease-admin/src/main/java/com/ruoyi/web/controller/appadmin/AppAdminController.java @@ -117,7 +117,7 @@ public class AppAdminController extends BaseController /**通过手机号找到用户名*/ String phone = loginBody.getPhone(); // 生成令牌 - String token = loginService.appCodeLogin(phone, loginBody.getPhoneCode(),loginBody.getPassword(), loginBody.getUuid()); + String token = loginService.appCodeLogin(phone, loginBody.getPhoneCode(),loginBody.getPassword(), loginBody.getUuid(),ServiceConstants.APPLET_TYPE_MERCHANT); ajax.put(Constants.TOKEN, token); return ajax; } diff --git a/ridelease-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ridelease-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java index 45f3600..64428e7 100644 --- a/ridelease-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java +++ b/ridelease-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java @@ -118,7 +118,7 @@ public class SysLoginController /**通过手机号找到用户名*/ String phone = loginBody.getPhone(); // 生成令牌 - String token = loginService.appCodeLogin(phone, loginBody.getPhoneCode(),loginBody.getPassword(), loginBody.getUuid()); + String token = loginService.appCodeLogin(phone, loginBody.getPhoneCode(),loginBody.getPassword(), loginBody.getUuid(),ServiceConstants.APPLET_TYPE_MERCHANT); ajax.put(Constants.TOKEN, token); return ajax; } diff --git a/ridelease-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java b/ridelease-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java index 77714b1..c1c1f7a 100644 --- a/ridelease-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java +++ b/ridelease-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java @@ -1,6 +1,7 @@ package com.ruoyi.web.controller.system; import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.constant.ServiceConstants; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.RlUser; @@ -127,7 +128,7 @@ public class SysRoleController extends BaseController if (StringUtils.isNotNull(loginUser.getUser()) && !loginUser.getUser().isAdmin()) { loginUser.setPermissions(permissionService.getMenuPermission(loginUser.getUser())); - loginUser.setUser(userService.selectUserByUserName(loginUser.getUser().getUserName())); + loginUser.setUser(userService.selectUserByUserName(loginUser.getUser().getUserName(), ServiceConstants.APPLET_TYPE_MERCHANT)); tokenService.setLoginUser(loginUser); } return success(); diff --git a/ridelease-common/src/main/java/com/ruoyi/common/core/domain/entity/RlUser.java b/ridelease-common/src/main/java/com/ruoyi/common/core/domain/entity/RlUser.java index 98392ee..0aa3e72 100644 --- a/ridelease-common/src/main/java/com/ruoyi/common/core/domain/entity/RlUser.java +++ b/ridelease-common/src/main/java/com/ruoyi/common/core/domain/entity/RlUser.java @@ -105,6 +105,9 @@ public class RlUser extends BaseEntity /** 是否认证:0-未认证;1-已认证 */ public Boolean isAuthentication; + /** 小程序类型:1-用户端;2-商家端 */ + private String appletType; + public boolean isAdmin() { return isAdmin(this.userId); diff --git a/ridelease-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java b/ridelease-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java index 1f97b10..eb8ad9f 100644 --- a/ridelease-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java +++ b/ridelease-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java @@ -115,7 +115,7 @@ public class SysLoginService Authentication authentication = null; try { - UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, password); + UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username+"@2", password); AuthenticationContextHolder.setContext(authenticationToken); authenticationToken.setDetails(Constants.USER_TYPE_PC); // 该方法会去调用UserDetailsServiceImpl.loadUserByUsername @@ -157,7 +157,7 @@ public class SysLoginService Authentication authentication = null; try { - UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, password); + UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username+"@"+user.getAppletType(), password); AuthenticationContextHolder.setContext(authenticationToken); authenticationToken.setDetails(Constants.USER_TYPE_PC); // 该方法会去调用UserDetailsServiceImpl.loadUserByUsername @@ -312,10 +312,11 @@ public class SysLoginService asUser.setCreateTime(DateUtils.getNowDate()); asUser.setWxopenid(openId); asUser.setUserType(ServiceConstants.USER_TYPE_SYSTEM); + asUser.setAppletType(appletType); log.info("【微信登录/wxlogin】用户不存在,自动注册用户:【{}】", JSON.toJSON(asUser)); int i = userService.insertUser(asUser); - if(i>0 && ServiceConstants.APPLET_TYPE_USER.equals(appletType)){ + if(i>0 && ServiceConstants.APPLET_TYPE_MERCHANT.equals(appletType)){ /** 创建用户扩展表内容,默认的用户角色是00(未分配)*/ int i1= insertUserExt(asUser); } @@ -443,8 +444,8 @@ public class SysLoginService return openId; } - public String appCodeLogin(String username, String code, String password, String uuid) { - RlUser user = userService.selectUserByUserName(username); + public String appCodeLogin(String username, String code, String password, String uuid,String appletType) { + RlUser user = userService.selectUserByUserName(username,appletType); if(ObjectUtils.isEmpty(user)){ RlUser asUser = new RlUser(); asUser.setUserName(username); @@ -452,6 +453,7 @@ public class SysLoginService asUser.setLoginIp(IpUtils.getIpAddr()); asUser.setLoginDate(DateUtils.getNowDate()); asUser.setCreateTime(DateUtils.getNowDate()); + asUser.setAppletType(appletType); log.info("【微信登录/wxlogin】用户不存在,自动注册用户:【{}】", JSON.toJSON(asUser)); int i = userService.insertUser(asUser); user = asUser; @@ -474,13 +476,13 @@ public class SysLoginService try { UsernamePasswordAuthenticationToken authenticationToken; if(StrUtil.isBlank(code)){ - authenticationToken = new UsernamePasswordAuthenticationToken(user.getUserName(), password); + authenticationToken = new UsernamePasswordAuthenticationToken(user.getUserName()+"@"+appletType, password); // 用户名和密码等信息保存在一个上下文中,只要是同一线程等会就能拿到用户名和密码,也就是能在loadUserByUsername(String username)方法中进行密码验证等 AuthenticationContextHolder.setContext(authenticationToken); // 把用户类型放在上下文中的details属性中,在UserDetailsServiceImpl.loadUserByUsername中获取 authenticationToken.setDetails(Constants.USER_TYPE_PASSWORD); }else{ - authenticationToken = new UsernamePasswordAuthenticationToken(user.getUserName(), Constants.CUSTOM_LOGIN_SMS); + authenticationToken = new UsernamePasswordAuthenticationToken(user.getUserName()+"@"+appletType, Constants.CUSTOM_LOGIN_SMS); // 用户名和密码等信息保存在一个上下文中,只要是同一线程等会就能拿到用户名和密码,也就是能在loadUserByUsername(String username)方法中进行密码验证等 AuthenticationContextHolder.setContext(authenticationToken); // 把用户类型放在上下文中的details属性中,在UserDetailsServiceImpl.loadUserByUsername中获取 diff --git a/ridelease-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java b/ridelease-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java index 66938e7..2785c4a 100644 --- a/ridelease-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java +++ b/ridelease-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java @@ -54,15 +54,21 @@ public class UserDetailsServiceImpl implements UserDetailsService if (authentication != null && authentication.getDetails() != null) { String userType = (String) authentication.getDetails(); RlUser user; + String appletType = ""; + if(username.contains("@")){ + String[] split = username.split("@"); + username = split[0]; + appletType = split[1]; + } if(Constants.USER_TYPE_PC.equals(userType)){ // PC用户登录 - user = userService.selectUserByUserName(username); + user = userService.selectUserByUserName(username, appletType); }else if(Constants.USER_TYPE_APP.equals(userType)){ // app用户登录 如果是app用户则用openid查询 user = asUserService.selectUserByWxopenid(username); }else{ // app用户登录(短信登录) 如果是app用户则用手机号 - user = userService.selectUserByUserName(username); + user = userService.selectUserByUserName(username, appletType); verifyUser(username, user); if(Constants.USER_TYPE_PASSWORD.equals(userType)){ if(StrUtil.isBlank(user.getPassword())){ diff --git a/ridelease-system/src/main/java/com/ruoyi/system/domain/userExt/RlUserExt.java b/ridelease-system/src/main/java/com/ruoyi/system/domain/userExt/RlUserExt.java index 76e6623..c9cf7f2 100644 --- a/ridelease-system/src/main/java/com/ruoyi/system/domain/userExt/RlUserExt.java +++ b/ridelease-system/src/main/java/com/ruoyi/system/domain/userExt/RlUserExt.java @@ -52,9 +52,4 @@ public class RlUserExt extends BaseEntity /** 代理商id */ private Long agentId; -// /** 提现手续费类型:1-按比例,2-按每笔 */ -// private String handlingChargeType; - -// /** 服务费 */ -// private BigDecimal withdrawHandlingCharge; } diff --git a/ridelease-system/src/main/java/com/ruoyi/system/mapper/RlUserMapper.java b/ridelease-system/src/main/java/com/ruoyi/system/mapper/RlUserMapper.java index c6fe5ab..ecc258f 100644 --- a/ridelease-system/src/main/java/com/ruoyi/system/mapper/RlUserMapper.java +++ b/ridelease-system/src/main/java/com/ruoyi/system/mapper/RlUserMapper.java @@ -44,9 +44,10 @@ public interface RlUserMapper * 通过用户名查询用户 * * @param userName 用户名 + * @param appletType 小程序类型 * @return 用户对象信息 */ - public RlUser selectUserByUserName(String userName); + public RlUser selectUserByUserName(@Param("userName") String userName,@Param("appletType")String appletType); /** * 通过用户ID查询用户 diff --git a/ridelease-system/src/main/java/com/ruoyi/system/service/IRlUserService.java b/ridelease-system/src/main/java/com/ruoyi/system/service/IRlUserService.java index 4aeba7b..3e76c65 100644 --- a/ridelease-system/src/main/java/com/ruoyi/system/service/IRlUserService.java +++ b/ridelease-system/src/main/java/com/ruoyi/system/service/IRlUserService.java @@ -49,7 +49,7 @@ public interface IRlUserService * @param userName 用户名 * @return 用户对象信息 */ - public RlUser selectUserByUserName(String userName); + public RlUser selectUserByUserName(String userName,String appletType); /** * 通过用户ID查询用户 diff --git a/ridelease-system/src/main/java/com/ruoyi/system/service/impl/RlChangeBalanceServiceImpl.java b/ridelease-system/src/main/java/com/ruoyi/system/service/impl/RlChangeBalanceServiceImpl.java index 5ea8337..abcbb73 100644 --- a/ridelease-system/src/main/java/com/ruoyi/system/service/impl/RlChangeBalanceServiceImpl.java +++ b/ridelease-system/src/main/java/com/ruoyi/system/service/impl/RlChangeBalanceServiceImpl.java @@ -141,7 +141,11 @@ public class RlChangeBalanceServiceImpl implements IRlChangeBalanceService rlChangeBalance.setBusType(busType); BigDecimal balance = userService.selectUserBalanceById(userId); rlChangeBalance.setBeforeBalance(balance); - rlChangeBalance.setAfterBalance(balance.add(payFee)); + if(type.equals("1")){ + rlChangeBalance.setAfterBalance(balance.add(payFee)); + }else{ + rlChangeBalance.setAfterBalance(balance.subtract(payFee)); + } rlChangeBalance.setAmount(payFee); rlChangeBalance.setOwnerId(userId); rlChangeBalance.setOwnerName(userName); diff --git a/ridelease-system/src/main/java/com/ruoyi/system/service/impl/RlUserServiceImpl.java b/ridelease-system/src/main/java/com/ruoyi/system/service/impl/RlUserServiceImpl.java index 782d971..5edd5ff 100644 --- a/ridelease-system/src/main/java/com/ruoyi/system/service/impl/RlUserServiceImpl.java +++ b/ridelease-system/src/main/java/com/ruoyi/system/service/impl/RlUserServiceImpl.java @@ -174,12 +174,13 @@ public class RlUserServiceImpl implements IRlUserService{ * 通过用户名查询用户 * * @param userName 用户名 + * @param appletType 小程序类型 * @return 用户对象信息 */ @Override - public RlUser selectUserByUserName(String userName) + public RlUser selectUserByUserName(String userName,String appletType) { - return rlUserMapper.selectUserByUserName(userName); + return rlUserMapper.selectUserByUserName(userName,appletType); } /** @@ -782,7 +783,7 @@ public class RlUserServiceImpl implements IRlUserService{ rlWithdraw.setOwnerId(user.getUserId()); rlWithdraw.setOwnerName(user.getUserName()); rlWithdraw.setOwnerPhone(user.getPhonenumber()); - ChannelWithdrawVO channelWithdrawVO = etChannelWithdrawService.selectChannelWithdrawByChannelId(withdraw.getWithdrawChannelId()); + ChannelWithdrawVO channelWithdrawVO = etChannelWithdrawService.selectChannelWithdrawByChannelId(withdraw.getUserWithdrawChannelId()); if(ObjectUtil.isNull(channelWithdrawVO)){ throw new ServiceException("提现渠道不存在"); } @@ -798,7 +799,7 @@ public class RlUserServiceImpl implements IRlUserService{ RlUserWithdraw rlUserWithdraw = userWithdrawService.selectRlUserWithdrawByUserChannelId(withdraw.getUserWithdrawChannelId()); if(rlUserWithdraw.getHandlingChargeType().equals(ServiceConstants.HANDLING_CHARGE_TYPE_PERCENT)){ BigDecimal handlingCharge1 = rlUserWithdraw.getWithdrawHandlingCharge();// 5.4 - BigDecimal bigDecimal = handlingCharge1.divide(new BigDecimal(100), 6, BigDecimal.ROUND_HALF_UP);// 0.0054 + BigDecimal bigDecimal = handlingCharge1.divide(new BigDecimal(1000), 6, BigDecimal.ROUND_HALF_UP);// 0.0054 handlingCharge = bigDecimal.multiply(withdraw.getAmount()).setScale(2, RoundingMode.HALF_UP);// 0.0054 * 1000 = 0.54 }else{ handlingCharge = rlUserWithdraw.getWithdrawHandlingCharge(); diff --git a/ridelease-system/src/main/resources/mapper/system/RlUserMapper.xml b/ridelease-system/src/main/resources/mapper/system/RlUserMapper.xml index e511672..338693c 100644 --- a/ridelease-system/src/main/resources/mapper/system/RlUserMapper.xml +++ b/ridelease-system/src/main/resources/mapper/system/RlUserMapper.xml @@ -20,7 +20,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select u.user_id, u.user_name, u.real_name, u.id_card, u.nick_name, u.email, u.avatar,u.user_type, u.phonenumber, u.password, u.sex, u.status, - u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,u.wxopenid,u.is_authentication, + u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,u.wxopenid,u.is_authentication,u.applet_type, ex.balance,ex.dividend_proportion dividendProportion,ex.cooperation_time cooperationTime,ex.dividend_status dividendStatus from rl_user u left join rl_user_ext ex on u.user_id = ex.user_id @@ -28,7 +28,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - where u.user_name = #{userName} and u.del_flag = '0' + where u.user_name = #{userName} and u.del_flag = '0' and u.applet_type = #{appletType} select u.user_id, u.user_name, u.real_name, u.id_card, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status,u.user_type, - u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,u.wxopenid,u.is_authentication, + u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,u.wxopenid,u.is_authentication,u.applet_type, ex.balance,ex.dividend_proportion dividendProportion,ex.cooperation_time cooperationTime,ex.dividend_status dividendStatus from rl_user u left join rl_user_ext ex on u.user_id = ex.user_id @@ -230,6 +230,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" create_by, remark, wxopenid, + applet_type, create_time )values( #{userId}, @@ -247,6 +248,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{createBy}, #{remark}, #{wxopenid}, + #{appletType}, sysdate() ) @@ -271,6 +273,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_by = #{updateBy}, remark = #{remark}, wxopenid = #{wxopenid}, + applet_type = #{appletType}, update_time = sysdate() where user_id = #{userId}