From 8444084e6aa11efa23287e7f82474ac22378a5c4 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期二, 01 四月 2025 16:03:19 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java | 220 +++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 196 insertions(+), 24 deletions(-) diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java index 1d4a931..5337b8f 100644 --- a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java +++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java @@ -1,10 +1,5 @@ package com.ruoyi.auth.service; -import com.ruoyi.system.api.RemoteMemberService; -import com.ruoyi.system.api.model.AppMiniLoginDto; -import com.ruoyi.system.api.model.AppMiniLoginVo; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; import com.ruoyi.common.core.constant.CacheConstants; import com.ruoyi.common.core.constant.Constants; import com.ruoyi.common.core.constant.SecurityConstants; @@ -17,13 +12,23 @@ import com.ruoyi.common.core.utils.ip.IpUtils; import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.security.utils.SecurityUtils; -import com.ruoyi.system.api.RemoteUserService; +import com.ruoyi.system.api.constant.AppErrorConstant; +import com.ruoyi.system.api.domain.dto.AppMiniRegisterDto; +import com.ruoyi.system.api.domain.poji.shop.Shop; import com.ruoyi.system.api.domain.poji.sys.SysUser; -import com.ruoyi.system.api.model.LoginUser; +import com.ruoyi.system.api.domain.vo.AppMiniRegisterVo; +import com.ruoyi.system.api.domain.vo.ShopRelUserVo; +import com.ruoyi.system.api.model.*; +import com.ruoyi.system.api.service.RemoteConfigService; +import com.ruoyi.system.api.service.RemoteMemberService; +import com.ruoyi.system.api.service.RemoteShopService; +import com.ruoyi.system.api.service.RemoteUserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; /** * 登录校验方法 - * + * * @author jqs */ @Component @@ -36,6 +41,9 @@ private RemoteMemberService remoteMemberService; @Autowired + private RemoteShopService remoteShopService; + + @Autowired private SysPasswordService passwordService; @Autowired @@ -44,6 +52,8 @@ @Autowired private RedisService redisService; + @Autowired + private RemoteConfigService remoteConfigService; /** * 登录 */ @@ -52,28 +62,28 @@ // 用户名或密码为空 错误 if (StringUtils.isAnyBlank(username, password)) { - recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户/密码必须填写"); + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户/密码必须填写",Constants.FROM_SYSTEM); throw new ServiceException("用户/密码必须填写"); } // 密码如果不在指定范围内 错误 if (password.length() < UserConstants.PASSWORD_MIN_LENGTH || password.length() > UserConstants.PASSWORD_MAX_LENGTH) { - recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户密码不在指定范围"); + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户密码不在指定范围",Constants.FROM_SYSTEM); throw new ServiceException("用户密码不在指定范围"); } // 用户名不在指定范围内 错误 if (username.length() < UserConstants.USERNAME_MIN_LENGTH || username.length() > UserConstants.USERNAME_MAX_LENGTH) { - recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户名不在指定范围"); + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户名不在指定范围",Constants.FROM_SYSTEM); throw new ServiceException("用户名不在指定范围"); } // IP黑名单校验 String blackStr = Convert.toStr(redisService.getCacheObject(CacheConstants.SYS_LOGIN_BLACKIPLIST)); if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr())) { - recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "很遗憾,访问IP已被列入系统黑名单"); + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "很遗憾,访问IP已被列入系统黑名单",Constants.FROM_SYSTEM); throw new ServiceException("很遗憾,访问IP已被列入系统黑名单"); } // 查询用户信息 @@ -81,7 +91,7 @@ if (StringUtils.isNull(userResult) || StringUtils.isNull(userResult.getData())) { - recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "登录用户不存在"); + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "登录用户不存在",Constants.FROM_SYSTEM); throw new ServiceException("登录用户:" + username + " 不存在"); } @@ -89,21 +99,21 @@ { throw new ServiceException(userResult.getMsg()); } - + LoginUser userInfo = userResult.getData(); SysUser user = userResult.getData().getSysUser(); if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) { - recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "对不起,您的账号已被删除"); + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "对不起,您的账号已被删除",Constants.FROM_SYSTEM); throw new ServiceException("对不起,您的账号:" + username + " 已被删除"); } if (UserStatus.DISABLE.getCode().equals(user.getStatus())) { - recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户已停用,请联系管理员"); + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户已停用,请联系管理员",Constants.FROM_SYSTEM); throw new ServiceException("对不起,您的账号:" + username + " 已停用"); } passwordService.validate(user, password); - recordLogService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "登录成功"); + recordLogService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "登录成功",Constants.FROM_SYSTEM); return userInfo; } @@ -119,32 +129,193 @@ throw new ServiceException(userResult.getMsg()); } AppMiniLoginVo userInfo = userResult.getData(); - SysUser user = userResult.getData().getSysUser(); + SysUser user = userInfo.getSysUser(); + if(user!=null){ + String username = user.getUserName(); + // IP黑名单校验 + String blackStr = Convert.toStr(redisService.getCacheObject(CacheConstants.SYS_LOGIN_BLACKIPLIST)); + if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr())) + { + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "很遗憾,访问IP已被列入系统黑名单",Constants.FROM_MINI_APP); + throw new ServiceException("很遗憾,访问IP已被列入系统黑名单"); + } + String servicePhone = remoteConfigService.getServicePhone().getData(); + if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) + { + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "对不起,您的账号已被删除",Constants.FROM_MINI_APP); + throw new ServiceException(servicePhone,501); + } + if (UserStatus.DISABLE.getCode().equals(user.getStatus())) + { + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户已停用,请联系管理员",Constants.FROM_MINI_APP); + throw new ServiceException(servicePhone,501); + } + recordLogService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "登录成功",Constants.FROM_MINI_APP); + } + return userInfo; + } + + public AppMiniLoginVo miniRegister(AppMiniRegisterDto appUserRegisterDto) + { + // 查询用户信息 + R<AppMiniRegisterVo> userResult = remoteMemberService.miniRegister(appUserRegisterDto); + if (R.FAIL == userResult.getCode()) + { + throw new ServiceException(userResult.getMsg()); + } + AppMiniRegisterVo appMiniRegisterVo = userResult.getData(); + AppMiniLoginVo userInfo = new AppMiniLoginVo(); + userInfo.setMiniOpenid(appMiniRegisterVo.getOpenid()); + userInfo.setWxUnionid(appMiniRegisterVo.getUnionid()); + userInfo.setMobile(appMiniRegisterVo.getMobile()); + SysUser user = appMiniRegisterVo.getSysUser(); + userInfo.setSysUser(user); + if(user!=null){ + String username = user.getUserName(); + // IP黑名单校验 + String blackStr = Convert.toStr(redisService.getCacheObject(CacheConstants.SYS_LOGIN_BLACKIPLIST)); + if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr())) + { + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "很遗憾,访问IP已被列入系统黑名单",Constants.FROM_MINI_APP); + throw new ServiceException("很遗憾,访问IP已被列入系统黑名单"); + } + if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) + { + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "对不起,您的账号已被删除",Constants.FROM_MINI_APP); + throw new ServiceException("对不起,您的账号: 已被删除"); + } + if (UserStatus.DISABLE.getCode().equals(user.getStatus())) + { + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户已停用,请联系管理员",Constants.FROM_MINI_APP); + throw new ServiceException("对不起,您的账号: 已停用"); + } + recordLogService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "登录成功",Constants.FROM_MINI_APP); + } + return userInfo; + } + + /** + * 企业微信H5登录 + */ + public QwH5LoginVo qwH5Login(QwUserDetailDto qwUserDetail) + { + // 查询用户信息 + R<QwH5LoginVo> userResult = remoteShopService.qwH5Login(qwUserDetail); + if(userResult==null){ + throw new ServiceException(AppErrorConstant.USER_NO_SHOP); + } + if (R.FAIL == userResult.getCode()) + { + throw new ServiceException(userResult.getMsg()); + } + if (401 == userResult.getCode()) + { + throw new ServiceException("商户已被冻结,请联系管理员",401); + } + QwH5LoginVo userInfo = userResult.getData(); + SysUser user = userInfo.getSysUser(); String username = user.getUserName(); // IP黑名单校验 String blackStr = Convert.toStr(redisService.getCacheObject(CacheConstants.SYS_LOGIN_BLACKIPLIST)); if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr())) { - recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "很遗憾,访问IP已被列入系统黑名单"); + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "很遗憾,访问IP已被列入系统黑名单",Constants.FROM_SHOP); throw new ServiceException("很遗憾,访问IP已被列入系统黑名单"); } if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) { - recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "对不起,您的账号已被删除"); + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "对不起,您的账号已被删除",Constants.FROM_SHOP); throw new ServiceException("对不起,您的账号:" + username + " 已被删除"); } if (UserStatus.DISABLE.getCode().equals(user.getStatus())) { - recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户已停用,请联系管理员"); + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户已停用,请联系管理员",Constants.FROM_SHOP); throw new ServiceException("对不起,您的账号:" + username + " 已停用"); } - recordLogService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "登录成功"); + // 查询用户商户 + R<ShopRelUserVo> shopResult = remoteShopService.getShopByUserId(user.getUserId()); + if (R.FAIL == userResult.getCode()) { + throw new ServiceException(userResult.getMsg()); + } + ShopRelUserVo shopInfo = shopResult.getData(); + if(null == shopInfo){ + throw new ServiceException("未查询到商户信息"); + } + Long shopId = shopInfo.getShopId(); + Shop shop = remoteShopService.getShop(shopId).getData(); + if(-1 == shop.getShopStatus()){ + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "对应商户已删除,请联系管理员",Constants.FROM_SHOP); + throw new ServiceException("对应商户已删除,请联系管理员"); + } + if(0 == shop.getShopStatus()){ + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "对应商户已冻结,请联系管理员",Constants.FROM_SHOP); + throw new ServiceException("对应商户已冻结,请联系管理员"); + } + if(2 == shop.getShopStatus()){ + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "对应商户已终止合作,请联系管理员",Constants.FROM_SHOP); + throw new ServiceException("对应商户已终止合作,请联系管理员"); + } + + userInfo.setShopId(shopInfo.getShopId()); + recordLogService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "登录成功",Constants.FROM_SHOP); + return userInfo; + } + + /** + * 企业微信H5登录 + */ + public QwH5LoginVo qwH5StaffLogin(QwUserDetailDto qwUserDetail) + { + // 查询用户信息 + R<QwH5LoginVo> userResult = remoteUserService.qwH5StaffLogin(qwUserDetail); + if(userResult==null){ + throw new ServiceException(AppErrorConstant.USER_NO_SHOP); + } + if (R.FAIL == userResult.getCode()) + { + throw new ServiceException(userResult.getMsg()); + } + QwH5LoginVo userInfo = userResult.getData(); + SysUser user = userInfo.getSysUser(); + String username = user.getUserName(); + // IP黑名单校验 + String blackStr = Convert.toStr(redisService.getCacheObject(CacheConstants.SYS_LOGIN_BLACKIPLIST)); + if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr())) + { + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "很遗憾,访问IP已被列入系统黑名单",Constants.FROM_SHOP); + throw new ServiceException("很遗憾,访问IP已被列入系统黑名单"); + } + if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) + { + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "对不起,您的账号已被删除",Constants.FROM_SHOP); + throw new ServiceException("对不起,您的账号:" + username + " 已被删除"); + } + if (UserStatus.DISABLE.getCode().equals(user.getStatus())) + { + recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户已停用,请联系管理员",Constants.FROM_SHOP); + throw new ServiceException("对不起,您的账号:" + username + " 已停用"); + } + // 查询用户商户 + R<ShopRelUserVo> shopResult = remoteShopService.getShopByBelongUserId(user.getUserId()); + if (R.FAIL == userResult.getCode()) { + throw new ServiceException(userResult.getMsg()); + } +// ShopRelUserVo shopInfo = shopResult.getData(); +// if(null == shopInfo){ +// throw new ServiceException("未查询到商户信息"); +// } +// userInfo.setShopId(shopInfo.getShopId()); + ShopRelUserVo shopInfo = shopResult.getData(); + if(null != shopInfo){ + userInfo.setShopId(shopInfo.getShopId()); + } + recordLogService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "登录成功",Constants.FROM_SHOP); return userInfo; } public void logout(String loginName) { - recordLogService.recordLogininfor(loginName, Constants.LOGOUT, "退出成功"); + recordLogService.recordLogininfor(loginName, Constants.LOGOUT, "退出成功",Constants.FROM_SYSTEM); } /** @@ -172,6 +343,7 @@ SysUser sysUser = new SysUser(); sysUser.setUserName(username); sysUser.setNickName(username); + sysUser.setUserType("00"); sysUser.setPassword(SecurityUtils.encryptPassword(password)); R<?> registerResult = remoteUserService.registerUserInfo(sysUser, SecurityConstants.INNER); @@ -179,6 +351,6 @@ { throw new ServiceException(registerResult.getMsg()); } - recordLogService.recordLogininfor(username, Constants.REGISTER, "注册成功"); + recordLogService.recordLogininfor(username, Constants.REGISTER, "注册成功",Constants.FROM_SYSTEM); } } -- Gitblit v1.7.1