区分用户平台
This commit is contained in:
		
							parent
							
								
									149c5ca4c4
								
							
						
					
					
						commit
						68c33f753b
					
				|  | @ -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; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 查询城市列表 | ||||
|      */ | ||||
|  |  | |||
|  | @ -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); | ||||
|  |  | |||
|  | @ -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; | ||||
|     } | ||||
|  |  | |||
|  | @ -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; | ||||
|     } | ||||
|  |  | |||
|  | @ -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(); | ||||
|  |  | |||
|  | @ -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); | ||||
|  |  | |||
|  | @ -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中获取 | ||||
|  |  | |||
|  | @ -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())){ | ||||
|  |  | |||
|  | @ -52,9 +52,4 @@ public class RlUserExt extends BaseEntity | |||
|     /** 代理商id */ | ||||
|     private Long agentId; | ||||
| 
 | ||||
| //    /** 提现手续费类型:1-按比例,2-按每笔 */ | ||||
| //    private String handlingChargeType; | ||||
| 
 | ||||
| //    /** 服务费 */ | ||||
| //    private BigDecimal withdrawHandlingCharge; | ||||
| } | ||||
|  |  | |||
|  | @ -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查询用户 | ||||
|  |  | |||
|  | @ -49,7 +49,7 @@ public interface IRlUserService | |||
|      * @param userName 用户名 | ||||
|      * @return 用户对象信息 | ||||
|      */ | ||||
|     public RlUser selectUserByUserName(String userName); | ||||
|     public RlUser selectUserByUserName(String userName,String appletType); | ||||
| 
 | ||||
|     /** | ||||
|      * 通过用户ID查询用户 | ||||
|  |  | |||
|  | @ -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); | ||||
|  |  | |||
|  | @ -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(); | ||||
|  |  | |||
|  | @ -20,7 +20,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||
| 	<sql id="selectUserVo"> | ||||
|         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" | |||
| 
 | ||||
|     <select id="selectUserList" parameterType="RlUser" resultMap="EUserResult"> | ||||
| 		select u.user_id, u.nick_name, u.user_name, u.real_name,u.email, u.avatar, u.phonenumber,u.user_type, | ||||
| 		       u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,u.is_authentication,a.city_id,c.name cityName, | ||||
| 		       u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,u.is_authentication,u.applet_type, a.city_id,c.name cityName, | ||||
| 		       ex.balance,ex.dividend_proportion dividendProportion,ex.cooperation_time cooperationTime,ex.dividend_status dividendStatus,ex.agent_id, s.name storeName,s.store_id, | ||||
| 		       u.wxopenid from rl_user u | ||||
| 		left join rl_user_ext ex on u.user_id = ex.user_id | ||||
|  | @ -101,14 +101,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||
| 
 | ||||
| 	<select id="selectUserByUserName" parameterType="String" resultMap="EUserResult"> | ||||
| 	    <include refid="selectUserVo"/> | ||||
| 		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> | ||||
| 
 | ||||
| 	<select id="selectUserById" parameterType="Long" resultMap="EUserResult"> | ||||
| 		select u.user_id, u.user_name, u.real_name, u.id_card, u.nick_name, u.email, u.avatar,a.city_id,c.name cityName, | ||||
| 			   ex.balance,ex.dividend_proportion dividendProportion,ex.cooperation_time cooperationTime,ex.dividend_status dividendStatus,ex.agent_id, | ||||
| 			   u.phonenumber, u.password, u.sex, u.status,u.user_type,r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.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 | ||||
| 		from rl_user u | ||||
| 		left join sys_user_role ur on u.user_id = ur.user_id | ||||
| 		left join sys_role r on r.role_id = ur.role_id | ||||
|  | @ -121,7 +121,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||
| 	<select id="myAccountInfoByUserId" parameterType="Long" resultMap="EUserResult"> | ||||
| 		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" | |||
|  			<if test="createBy != null and createBy != ''">create_by,</if> | ||||
|  			<if test="remark != null and remark != ''">remark,</if> | ||||
|  			<if test="wxopenid != null and wxopenid != ''">wxopenid,</if> | ||||
|  			<if test="appletType != null and appletType != ''">applet_type,</if> | ||||
|  			create_time | ||||
|  		)values( | ||||
|  			<if test="userId != null and userId != ''">#{userId},</if> | ||||
|  | @ -247,6 +248,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||
|  			<if test="createBy != null and createBy != ''">#{createBy},</if> | ||||
|  			<if test="remark != null and remark != ''">#{remark},</if> | ||||
|  			<if test="wxopenid != null and wxopenid != ''">#{wxopenid},</if> | ||||
|  		    <if test="appletType != null and appletType != ''">#{appletType},</if> | ||||
|  			sysdate() | ||||
|  		) | ||||
| 	</insert> | ||||
|  | @ -271,6 +273,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||
|  			<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if> | ||||
|  			<if test="remark != null">remark = #{remark},</if> | ||||
|  			<if test="wxopenid != null">wxopenid = #{wxopenid},</if> | ||||
|  		    <if test="appletType != null">applet_type = #{appletType},</if> | ||||
|  			update_time = sysdate() | ||||
|  		</set> | ||||
|  		where user_id = #{userId} | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user