ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java
@@ -209,6 +209,7 @@ if (l1 - l > 2 * 60 * 1000) { throw new CaptchaException("验证码已失效"); } captcha = split[0]; if (!smsCode.equalsIgnoreCase(captcha)) { throw new CaptchaException("验证码错误"); } ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java
@@ -23,12 +23,14 @@ import com.ruoyi.company.api.model.RegisterUser; import com.ruoyi.system.api.RemoteUserService; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.model.AppUser; import com.ruoyi.system.api.model.LoginUser; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.Collection; import java.util.List; import java.util.Objects; @@ -170,6 +172,7 @@ if (l1 - l > 2 * 60 * 1000) { throw new CaptchaException("验证码已失效"); } captcha = split[0]; if (!smsCode.equalsIgnoreCase(captcha)) { throw new CaptchaException("验证码错误"); } @@ -220,6 +223,20 @@ if (R.isError(r)) { throw new ServiceException(r.getMsg()); } forceLogout(user.getUserId()); } public void forceLogout(Long userId) { Collection<String> keys = redisService.keys(CacheConstants.LOGIN_TOKEN_KEY + "*"); for (String key : keys) { Object user = redisService.getCacheObject(key); if (user instanceof AppUser) { AppUser appUser = (AppUser) user; if (appUser.getUserId().equals(userId)) { redisService.deleteObject(key); } } } } ruoyi-auth/src/main/java/com/ruoyi/auth/utils/SmsUtils.java
@@ -1,12 +1,15 @@ package com.ruoyi.auth.utils; import com.alibaba.fastjson2.JSONObject; import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest; import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.profile.DefaultProfile; import lombok.extern.slf4j.Slf4j; @Slf4j public class SmsUtils { public static String sendSms(String phoneNumber, String code) { // 设置AccessKeyId、AccessKeySecret等信息 @@ -27,6 +30,7 @@ try { // 发送短信并打印结果 SendSmsResponse response = client.getAcsResponse(request); log.info("发送短信结果:{}", JSONObject.toJSONString(response)); return response.getCode(); } catch (ClientException e) { e.printStackTrace(); ruoyi-auth/src/main/resources/bootstrap.yml
@@ -14,11 +14,11 @@ nacos: discovery: # 服务注册地址 server-addr: 192.168.110.111:8848 ip: 192.168.110.111 server-addr: 127.0.0.1:8848 # ip: 192.168.110.111 config: # 配置中心地址 server-addr: 192.168.110.111:8848 server-addr: 127.0.0.1:8848 # 配置文件格式 file-extension: yml # 共享配置 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java
@@ -1,5 +1,6 @@ package com.ruoyi.common.core.utils; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; @@ -534,6 +535,10 @@ return false; } public static void main(String[] args) { List<String> strs = new ArrayList<>(); } /** * 判断url是否与规则配置: * ? 表示单个字符; ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java
@@ -54,6 +54,7 @@ String token = getToken(request); if (StringUtils.isEmpty(token)) { System.out.println(ignoreWhite.getWhites()); return unauthorizedResponse(exchange, "令牌不能为空"); } Claims claims = JwtUtils.parseToken(token); ruoyi-gateway/src/main/resources/bootstrap.yml
@@ -14,11 +14,11 @@ nacos: discovery: # 服务注册地址 server-addr: 192.168.110.111:8848 ip: 192.168.110.111 server-addr: 127.0.0.1:8848 # ip: 192.168.110.111 config: # 配置中心地址 server-addr: 192.168.110.111:8848 server-addr: 127.0.0.1:8848 # 配置文件格式 file-extension: yml # 共享配置 @@ -29,12 +29,12 @@ eager: true transport: # 控制台地址 dashboard: 192.168.110.111:8718 dashboard: 127.0.0.1:8718 # nacos配置持久化 datasource: ds1: nacos: server-addr: 192.168.110.111:8848 server-addr: 127.0.0.1:8848 dataId: sentinel-ruoyi-gateway groupId: DEFAULT_GROUP data-type: json ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/front/CompanyController.java
@@ -70,4 +70,5 @@ companyService.updateById(companyDb); return R.ok(); } } ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/front/UserController.java
@@ -106,15 +106,18 @@ String verifyKey = CacheConstants.PHONE_CODE_KEY + StringUtils.nvl(updatePhone.getNewPhone(), ""); String captcha = redisService.getCacheObject(verifyKey); String[] split = captcha.split(":"); if (captcha == null) { throw new CaptchaException("验证码错误"); } long l = Long.parseLong(split[1]); long l1 = System.currentTimeMillis(); // 判断是否大于两分钟 if (l1 - l > 2 * 60 * 1000) { throw new CaptchaException("验证码已失效"); } if (captcha == null) { throw new CaptchaException("验证码错误"); } captcha = split[0]; if (!updatePhone.getCode().equalsIgnoreCase(captcha)) { throw new CaptchaException("验证码错误"); } @@ -145,4 +148,16 @@ userService.updateById(user); return R.ok(); } /** * 通过公司名称和法人身份证号码查询用户信息 */ @GetMapping("/getUserByCompanyNameAndLegalId") public R<User> getUserByCompanyNameAndLegalId(String companyName, String cardId) { Company company = companyService.getOne(new LambdaQueryWrapper<Company>() .eq(Company::getCompanyName, companyName) .eq(Company::getIdCardNumber, cardId)); User user = userService.getById(company.getUserId()); return R.ok(user); } } ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/service/impl/CompanyServiceImpl.java
@@ -3,10 +3,12 @@ import cn.idev.excel.FastExcel; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.constant.CacheConstants; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.page.BeanUtils; import com.ruoyi.common.core.page.PageDTO; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.company.api.domain.Company; import com.ruoyi.company.api.domain.User; @@ -19,6 +21,7 @@ import com.ruoyi.company.service.CompanyService; import com.ruoyi.company.service.UserService; import com.ruoyi.company.utils.AliyunCloudAuthUtil; import com.ruoyi.system.api.model.AppUser; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @@ -27,6 +30,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLEncoder; import java.util.Collection; import java.util.List; import java.util.Objects; @@ -37,6 +41,8 @@ private final HttpServletResponse response; private final AliyunCloudAuthUtil aliyunCloudAuthUtil; private final RedisService redisService; /** * 获取企业列表 * @@ -205,6 +211,22 @@ //删除企业信息 this.removeById(id); //强退用户 forceLogout(company.getUserId()); } public void forceLogout(Long userId) { Collection<String> keys = redisService.keys(CacheConstants.LOGIN_TOKEN_KEY + "*"); for (String key : keys) { Object user = redisService.getCacheObject(key); if (user instanceof AppUser) { AppUser appUser = (AppUser) user; if (appUser.getUserId().equals(userId)) { redisService.deleteObject(key); } } } } @Override ruoyi-modules/ruoyi-company/src/main/resources/bootstrap.yml
@@ -14,11 +14,11 @@ nacos: discovery: # 服务注册地址 server-addr: 192.168.110.111:8848 ip: 192.168.110.111 server-addr: 127.0.0.1:8848 # ip: 192.168.110.111 config: # 配置中心地址 server-addr: 192.168.110.111:8848 server-addr: 127.0.0.1:8848 # 配置文件格式 file-extension: yml # 共享配置 ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml
@@ -14,10 +14,10 @@ nacos: discovery: # 服务注册地址 server-addr: 192.168.110.111:8848 server-addr: 127.0.0.1:8848 config: # 配置中心地址 server-addr: 192.168.110.111:8848 server-addr: 127.0.0.1:8848 # 配置文件格式 file-extension: yml # 共享配置 ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml
@@ -14,10 +14,10 @@ nacos: discovery: # 服务注册地址 server-addr: 192.168.110.111:8848 server-addr: 127.0.0.1:8848 config: # 配置中心地址 server-addr: 192.168.110.111:8848 server-addr: 127.0.0.1:8848 # 配置文件格式 file-extension: yml # 共享配置 ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml
@@ -14,10 +14,10 @@ nacos: discovery: # 服务注册地址 server-addr: 192.168.110.111:8848 server-addr: 127.0.0.1:8848 config: # 配置中心地址 server-addr: 192.168.110.111:8848 server-addr: 127.0.0.1:8848 # 配置文件格式 file-extension: yml # 共享配置 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/CommonController.java
@@ -34,7 +34,7 @@ inputStream = UrlDownloader.downloadAsStream(url); String jsonStr = OcrUtils.idCard(inputStream,"IdCard"); if (StringUtils.isEmpty(jsonStr)){ return R.fail(); return R.fail("身份证识别失败"); } JSONObject jsonObject = JSONObject.parseObject(jsonStr); ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserOnlineController.java
@@ -46,22 +46,25 @@ List<SysUserOnline> userOnlineList = new ArrayList<SysUserOnline>(); for (String key : keys) { LoginUser user = redisService.getCacheObject(key); if (StringUtils.isNotEmpty(ipaddr) && StringUtils.isNotEmpty(userName)) { userOnlineList.add(userOnlineService.selectOnlineByInfo(ipaddr, userName, user)); } else if (StringUtils.isNotEmpty(ipaddr)) { userOnlineList.add(userOnlineService.selectOnlineByIpaddr(ipaddr, user)); } else if (StringUtils.isNotEmpty(userName)) { userOnlineList.add(userOnlineService.selectOnlineByUserName(userName, user)); } else { userOnlineList.add(userOnlineService.loginUserToUserOnline(user)); Object user = redisService.getCacheObject(key); if (user instanceof LoginUser){ LoginUser loginUser = (LoginUser) user; if (StringUtils.isNotEmpty(ipaddr) && StringUtils.isNotEmpty(userName)) { userOnlineList.add(userOnlineService.selectOnlineByInfo(ipaddr, userName, loginUser)); } else if (StringUtils.isNotEmpty(ipaddr)) { userOnlineList.add(userOnlineService.selectOnlineByIpaddr(ipaddr, loginUser)); } else if (StringUtils.isNotEmpty(userName)) { userOnlineList.add(userOnlineService.selectOnlineByUserName(userName, loginUser)); } else { userOnlineList.add(userOnlineService.loginUserToUserOnline(loginUser)); } } } Collections.reverse(userOnlineList); ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml
@@ -14,11 +14,11 @@ nacos: discovery: # 服务注册地址 server-addr: 192.168.110.111:8848 ip: 192.168.110.111 server-addr: 127.0.0.1:8848 # ip: 192.168.110.111 config: # 配置中心地址 server-addr: 192.168.110.111:8848 server-addr: 127.0.0.1:8848 # 配置文件格式 file-extension: yml # 共享配置 ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml
@@ -14,10 +14,10 @@ nacos: discovery: # 服务注册地址 server-addr: 192.168.110.111:8848 server-addr: 127.0.0.1:8848 config: # 配置中心地址 server-addr: 192.168.110.111:8848 server-addr: 127.0.0.1:8848 # 配置文件格式 file-extension: yml # 共享配置