diff --git a/sql/mysql/youlai_admin.sql b/sql/mysql/youlai_admin.sql index 7acd325b..30d6c2d2 100644 --- a/sql/mysql/youlai_admin.sql +++ b/sql/mysql/youlai_admin.sql @@ -355,9 +355,9 @@ CREATE TABLE `sys_user` ( -- ---------------------------- -- Records of sys_user -- ---------------------------- -INSERT INTO `sys_user` VALUES (1, 'root', '有来技术', 0, '$2a$10$xVWsNOhHrCxh5UbpCE7/HuJ.PAOKcYAqRxD2CO2nVnJS.IAXkr5aq', NULL, 'https://foruda.gitee.com/images/1723603502796844527/03cdca2a_716974.gif', '18812345677', 1, 'youlaitech@163.com', now(), NULL, now(), NULL, 0,NULL); -INSERT INTO `sys_user` VALUES (2, 'admin', '系统管理员', 1, '$2a$10$xVWsNOhHrCxh5UbpCE7/HuJ.PAOKcYAqRxD2CO2nVnJS.IAXkr5aq', 1, 'https://foruda.gitee.com/images/1723603502796844527/03cdca2a_716974.gif', '18812345678', 1, 'youlaitech@163.com', now(), NULL, now(), NULL, 0,NULL); -INSERT INTO `sys_user` VALUES (3, 'test', '测试小用户', 1, '$2a$10$xVWsNOhHrCxh5UbpCE7/HuJ.PAOKcYAqRxD2CO2nVnJS.IAXkr5aq', 3, 'https://foruda.gitee.com/images/1723603502796844527/03cdca2a_716974.gif', '18812345679', 1, 'youlaitech@163.com', now(), NULL, now(), NULL, 0,NULL); +INSERT INTO `sys_user` VALUES (1, 'root', '有来技术', 0, '$2a$10$xVWsNOhHrCxh5UbpCE7/HuJ.PAOKcYAqRxD2CO2nVnJS.IAXkr5aq', NULL, 'https://foruda.gitee.com/images/1723603502796844527/03cdca2a_716974.gif', '18812345677', 1, 'youlaitech@163.com', now(), NULL, now(), NULL, 0); +INSERT INTO `sys_user` VALUES (2, 'admin', '系统管理员', 1, '$2a$10$xVWsNOhHrCxh5UbpCE7/HuJ.PAOKcYAqRxD2CO2nVnJS.IAXkr5aq', 1, 'https://foruda.gitee.com/images/1723603502796844527/03cdca2a_716974.gif', '18812345678', 1, 'youlaitech@163.com', now(), NULL, now(), NULL, 0); +INSERT INTO `sys_user` VALUES (3, 'test', '测试小用户', 1, '$2a$10$xVWsNOhHrCxh5UbpCE7/HuJ.PAOKcYAqRxD2CO2nVnJS.IAXkr5aq', 3, 'https://foruda.gitee.com/images/1723603502796844527/03cdca2a_716974.gif', '18812345679', 1, 'youlaitech@163.com', now(), NULL, now(), NULL, 0); -- ---------------------------- -- Table structure for sys_user_role diff --git a/src/main/java/com/youlai/boot/platform/websocket/service/WebSocketService.java b/src/main/java/com/youlai/boot/platform/websocket/service/WebSocketService.java index e268b567..1627a4f9 100644 --- a/src/main/java/com/youlai/boot/platform/websocket/service/WebSocketService.java +++ b/src/main/java/com/youlai/boot/platform/websocket/service/WebSocketService.java @@ -1,5 +1,9 @@ package com.youlai.boot.platform.websocket.service; +import com.youlai.boot.platform.websocket.dto.OnlineUserDTO; + +import java.util.List; + /** * WebSocket服务接口 *

@@ -43,4 +47,11 @@ public interface WebSocketService { * @param message 通知消息内容 */ void sendNotification(String username, Object message); -} + + /** + * 获取在线用户列表 + * + * @return 在线用户信息列表 + */ + List getOnlineUsers(); +} diff --git a/src/main/java/com/youlai/boot/plugin/mybatis/MyDataPermissionHandler.java b/src/main/java/com/youlai/boot/plugin/mybatis/MyDataPermissionHandler.java index 53550a50..a05ad624 100644 --- a/src/main/java/com/youlai/boot/plugin/mybatis/MyDataPermissionHandler.java +++ b/src/main/java/com/youlai/boot/plugin/mybatis/MyDataPermissionHandler.java @@ -16,11 +16,11 @@ import net.sf.jsqlparser.expression.operators.conditional.OrExpression; import net.sf.jsqlparser.expression.operators.relational.EqualsTo; import net.sf.jsqlparser.expression.operators.relational.ExpressionList; import net.sf.jsqlparser.expression.operators.relational.InExpression; +import net.sf.jsqlparser.expression.operators.relational.ParenthesedExpressionList; import net.sf.jsqlparser.schema.Column; import net.sf.jsqlparser.schema.Table; import net.sf.jsqlparser.statement.select.PlainSelect; -import net.sf.jsqlparser.statement.select.Select; -import net.sf.jsqlparser.statement.select.SubSelect; +import net.sf.jsqlparser.statement.select.ParenthesedSelect; import java.lang.reflect.Method; import java.util.List; @@ -145,7 +145,7 @@ public class MyDataPermissionHandler implements DataPermissionHandler { } // 用括号包裹并集条件 - Expression finalExpression = new Parenthesis(unionExpression); + Expression finalExpression = new ParenthesedExpressionList<>(unionExpression); if (where == null) { return finalExpression; @@ -250,8 +250,8 @@ public class MyDataPermissionHandler implements DataPermissionHandler { subSelectBody.setWhere(whereClause); // 构建子查询 - SubSelect subSelect = new SubSelect(); - subSelect.setSelectBody(subSelectBody); + ParenthesedSelect subSelect = new ParenthesedSelect(); + subSelect.setSelect(subSelectBody); // 构建 IN 表达式 return new InExpression(deptColumn, subSelect); diff --git a/src/main/java/com/youlai/boot/security/model/SmsAuthenticationToken.java b/src/main/java/com/youlai/boot/security/model/SmsAuthenticationToken.java index f9a3c66f..8e6cdfd9 100644 --- a/src/main/java/com/youlai/boot/security/model/SmsAuthenticationToken.java +++ b/src/main/java/com/youlai/boot/security/model/SmsAuthenticationToken.java @@ -2,6 +2,7 @@ package com.youlai.boot.security.model; import org.springframework.security.authentication.AbstractAuthenticationToken; import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.authority.AuthorityUtils; import java.io.Serial; import java.util.Collection; @@ -48,7 +49,7 @@ public class SmsAuthenticationToken extends AbstractAuthenticationToken { * @param verifyCode 短信验证码 */ public SmsAuthenticationToken(String mobile, String verifyCode) { - super(null); + super(AuthorityUtils.NO_AUTHORITIES); this.principal = mobile; this.credentials = verifyCode; setAuthenticated(false); diff --git a/src/main/java/com/youlai/boot/security/token/JwtTokenManager.java b/src/main/java/com/youlai/boot/security/token/JwtTokenManager.java index 02468bf7..f28ca887 100644 --- a/src/main/java/com/youlai/boot/security/token/JwtTokenManager.java +++ b/src/main/java/com/youlai/boot/security/token/JwtTokenManager.java @@ -29,6 +29,7 @@ import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.stereotype.Service; import java.util.*; +import java.util.concurrent.TimeUnit; // Import TimeUnit import java.util.stream.Collectors; /** diff --git a/src/main/java/com/youlai/boot/system/service/impl/NoticeServiceImpl.java b/src/main/java/com/youlai/boot/system/service/impl/NoticeServiceImpl.java index 52d0f825..2aaceefc 100644 --- a/src/main/java/com/youlai/boot/system/service/impl/NoticeServiceImpl.java +++ b/src/main/java/com/youlai/boot/system/service/impl/NoticeServiceImpl.java @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.youlai.boot.core.exception.BusinessException; +import com.youlai.boot.platform.websocket.dto.OnlineUserDTO; import com.youlai.boot.security.util.SecurityUtils; import com.youlai.boot.system.converter.NoticeConverter; import com.youlai.boot.system.enums.NoticePublishStatusEnum; @@ -213,7 +214,7 @@ public class NoticeServiceImpl extends ServiceImpl impleme // 获取在线用户名集合 Set allOnlineUsers = webSocketService.getOnlineUsers().stream() - .map(dto -> dto.getUsername()) + .map(OnlineUserDTO::getUsername) .collect(Collectors.toSet()); // 找出在线用户的通知接收者 diff --git a/src/main/java/com/youlai/boot/system/service/impl/RoleServiceImpl.java b/src/main/java/com/youlai/boot/system/service/impl/RoleServiceImpl.java index cbeed2c2..3634be94 100644 --- a/src/main/java/com/youlai/boot/system/service/impl/RoleServiceImpl.java +++ b/src/main/java/com/youlai/boot/system/service/impl/RoleServiceImpl.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.youlai.boot.common.enums.DataScopeEnum; import com.youlai.boot.core.exception.BusinessException; +import com.youlai.boot.security.model.RoleDataScope; import com.youlai.boot.system.converter.RoleConverter; import com.youlai.boot.system.mapper.RoleMapper; import com.youlai.boot.system.model.entity.Role; @@ -30,6 +31,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.Arrays; import java.util.List; +import java.util.Map; import java.util.Set; /**