Commit b557251b6f3e0040679409af8d289c8e3ed3e97a

Authored by YunaiV
1 parent 46706eb0

增加在线用户表

Showing 14 changed files with 107 additions and 215 deletions
ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/ISysUserOnlineService.java deleted
1 -package com.ruoyi.system.service;  
2 -  
3 -import com.ruoyi.common.core.domain.model.LoginUser;  
4 -import com.ruoyi.system.domain.SysUserOnline;  
5 -  
6 -/**  
7 - * 在线用户 服务层  
8 - *  
9 - * @author ruoyi  
10 - */  
11 -public interface ISysUserOnlineService  
12 -{  
13 - /**  
14 - * 通过登录地址查询信息  
15 - *  
16 - * @param ipaddr 登录地址  
17 - * @param user 用户信息  
18 - * @return 在线用户信息  
19 - */  
20 - public SysUserOnline selectOnlineByIpaddr(String ipaddr, LoginUser user);  
21 -  
22 - /**  
23 - * 通过用户名称查询信息  
24 - *  
25 - * @param userName 用户名称  
26 - * @param user 用户信息  
27 - * @return 在线用户信息  
28 - */  
29 - public SysUserOnline selectOnlineByUserName(String userName, LoginUser user);  
30 -  
31 - /**  
32 - * 通过登录地址/用户名称查询信息  
33 - *  
34 - * @param ipaddr 登录地址  
35 - * @param userName 用户名称  
36 - * @param user 用户信息  
37 - * @return 在线用户信息  
38 - */  
39 - public SysUserOnline selectOnlineByInfo(String ipaddr, String userName, LoginUser user);  
40 -  
41 - /**  
42 - * 设置在线用户信息  
43 - *  
44 - * @param user 用户信息  
45 - * @return 在线用户  
46 - */  
47 - public SysUserOnline loginUserToUserOnline(LoginUser user);  
48 -}  
ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnline.java deleted
1 -package com.ruoyi.system.domain;  
2 -  
3 -/**  
4 - * 当前在线会话  
5 - *  
6 - * @author ruoyi  
7 - */  
8 -public class SysUserOnline {  
9 - /**  
10 - * 会话编号  
11 - */  
12 - private String tokenId;  
13 -  
14 - /**  
15 - * 部门名称  
16 - */  
17 - private String deptName;  
18 -  
19 - /**  
20 - * 用户名称  
21 - */  
22 - private String userName;  
23 -  
24 - /**  
25 - * 登录IP地址  
26 - */  
27 - private String ipaddr;  
28 -  
29 - /**  
30 - * 登录地址  
31 - */  
32 - private String loginLocation;  
33 -  
34 - /**  
35 - * 浏览器类型  
36 - */  
37 - private String browser;  
38 -  
39 - /**  
40 - * 操作系统  
41 - */  
42 - private String os;  
43 -  
44 - /**  
45 - * 登录时间  
46 - */  
47 - private Long loginTime;  
48 -  
49 -}  
ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineServiceImpl.java deleted
1 -package com.ruoyi.system.service.impl;  
2 -  
3 -import org.springframework.stereotype.Service;  
4 -import com.ruoyi.common.core.domain.model.LoginUser;  
5 -import com.ruoyi.common.utils.StringUtils;  
6 -import com.ruoyi.system.domain.SysUserOnline;  
7 -import com.ruoyi.system.service.ISysUserOnlineService;  
8 -  
9 -/**  
10 - * 在线用户 服务层处理  
11 - *  
12 - * @author ruoyi  
13 - */  
14 -@Service  
15 -public class SysUserOnlineServiceImpl implements ISysUserOnlineService {  
16 - /**  
17 - * 通过登录地址查询信息  
18 - *  
19 - * @param ipaddr 登录地址  
20 - * @param user 用户信息  
21 - * @return 在线用户信息  
22 - */  
23 - @Override  
24 - public SysUserOnline selectOnlineByIpaddr(String ipaddr, LoginUser user) {  
25 - if (StringUtils.equals(ipaddr, user.getIpaddr())) {  
26 - return loginUserToUserOnline(user);  
27 - }  
28 - return null;  
29 - }  
30 -  
31 - /**  
32 - * 通过用户名称查询信息  
33 - *  
34 - * @param userName 用户名称  
35 - * @param user 用户信息  
36 - * @return 在线用户信息  
37 - */  
38 - @Override  
39 - public SysUserOnline selectOnlineByUserName(String userName, LoginUser user) {  
40 - if (StringUtils.equals(userName, user.getUsername())) {  
41 - return loginUserToUserOnline(user);  
42 - }  
43 - return null;  
44 - }  
45 -  
46 - /**  
47 - * 通过登录地址/用户名称查询信息  
48 - *  
49 - * @param ipaddr 登录地址  
50 - * @param userName 用户名称  
51 - * @param user 用户信息  
52 - * @return 在线用户信息  
53 - */  
54 - @Override  
55 - public SysUserOnline selectOnlineByInfo(String ipaddr, String userName, LoginUser user) {  
56 - if (StringUtils.equals(ipaddr, user.getIpaddr()) && StringUtils.equals(userName, user.getUsername())) {  
57 - return loginUserToUserOnline(user);  
58 - }  
59 - return null;  
60 - }  
61 -  
62 - /**  
63 - * 设置在线用户信息  
64 - *  
65 - * @param user 用户信息  
66 - * @return 在线用户  
67 - */  
68 - @Override  
69 - public SysUserOnline loginUserToUserOnline(LoginUser user) {  
70 - if (StringUtils.isNull(user) || StringUtils.isNull(user.getUser())) {  
71 - return null;  
72 - }  
73 - SysUserOnline sysUserOnline = new SysUserOnline();  
74 - sysUserOnline.setTokenId(user.getToken());  
75 - sysUserOnline.setUserName(user.getUsername());  
76 - sysUserOnline.setIpaddr(user.getIpaddr());  
77 - sysUserOnline.setLoginLocation(user.getLoginLocation());  
78 - sysUserOnline.setBrowser(user.getBrowser());  
79 - sysUserOnline.setOs(user.getOs());  
80 - sysUserOnline.setLoginTime(user.getLoginTime());  
81 - if (StringUtils.isNotNull(user.getUser().getDept())) {  
82 - sysUserOnline.setDeptName(user.getUser().getDept().getDeptName());  
83 - }  
84 - return sysUserOnline;  
85 - }  
86 -}  
ruoyi-admin/src/main/resources/application.yml
@@ -47,28 +47,6 @@ spring: @@ -47,28 +47,6 @@ spring:
47 restart: 47 restart:
48 # 热部署开关 48 # 热部署开关
49 enabled: true 49 enabled: true
50 - # redis 配置  
51 - redis:  
52 - # 地址  
53 - host: 127.0.0.1  
54 - # 端口,默认为6379  
55 - port: 6379  
56 - # 数据库索引  
57 - database: 0  
58 - # 密码  
59 - password:  
60 - # 连接超时时间  
61 - timeout: 10s  
62 - lettuce:  
63 - pool:  
64 - # 连接池中的最小空闲连接  
65 - min-idle: 0  
66 - # 连接池中的最大空闲连接  
67 - max-idle: 8  
68 - # 连接池的最大数据库连接数  
69 - max-active: 8  
70 - # #连接池最大阻塞等待时间(使用负值表示没有限制)  
71 - max-wait: -1ms  
72 50
73 # 防止XSS攻击 51 # 防止XSS攻击
74 xss: 52 xss:
src/main/java/cn/iocoder/dashboard/modules/system/controller/auth/SysAuthController.java
@@ -3,10 +3,10 @@ package cn.iocoder.dashboard.modules.system.controller.auth; @@ -3,10 +3,10 @@ package cn.iocoder.dashboard.modules.system.controller.auth;
3 import cn.iocoder.dashboard.common.enums.CommonStatusEnum; 3 import cn.iocoder.dashboard.common.enums.CommonStatusEnum;
4 import cn.iocoder.dashboard.common.pojo.CommonResult; 4 import cn.iocoder.dashboard.common.pojo.CommonResult;
5 import cn.iocoder.dashboard.framework.logger.operatelog.core.annotations.OperateLog; 5 import cn.iocoder.dashboard.framework.logger.operatelog.core.annotations.OperateLog;
6 -import cn.iocoder.dashboard.modules.system.controller.auth.vo.SysAuthLoginReqVO;  
7 -import cn.iocoder.dashboard.modules.system.controller.auth.vo.SysAuthLoginRespVO;  
8 -import cn.iocoder.dashboard.modules.system.controller.auth.vo.SysAuthMenuRespVO;  
9 -import cn.iocoder.dashboard.modules.system.controller.auth.vo.SysAuthPermissionInfoRespVO; 6 +import cn.iocoder.dashboard.modules.system.controller.auth.vo.auth.SysAuthLoginReqVO;
  7 +import cn.iocoder.dashboard.modules.system.controller.auth.vo.auth.SysAuthLoginRespVO;
  8 +import cn.iocoder.dashboard.modules.system.controller.auth.vo.auth.SysAuthMenuRespVO;
  9 +import cn.iocoder.dashboard.modules.system.controller.auth.vo.auth.SysAuthPermissionInfoRespVO;
10 import cn.iocoder.dashboard.modules.system.convert.auth.SysAuthConvert; 10 import cn.iocoder.dashboard.modules.system.convert.auth.SysAuthConvert;
11 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.permission.SysMenuDO; 11 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.permission.SysMenuDO;
12 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.permission.SysRoleDO; 12 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.permission.SysRoleDO;
src/main/java/cn/iocoder/dashboard/modules/system/controller/auth/vo/SysAuthLoginReqVO.java renamed to src/main/java/cn/iocoder/dashboard/modules/system/controller/auth/vo/auth/SysAuthLoginReqVO.java
1 -package cn.iocoder.dashboard.modules.system.controller.auth.vo; 1 +package cn.iocoder.dashboard.modules.system.controller.auth.vo.auth;
2 2
3 import io.swagger.annotations.ApiModel; 3 import io.swagger.annotations.ApiModel;
4 import io.swagger.annotations.ApiModelProperty; 4 import io.swagger.annotations.ApiModelProperty;
src/main/java/cn/iocoder/dashboard/modules/system/controller/auth/vo/SysAuthLoginRespVO.java renamed to src/main/java/cn/iocoder/dashboard/modules/system/controller/auth/vo/auth/SysAuthLoginRespVO.java
1 -package cn.iocoder.dashboard.modules.system.controller.auth.vo; 1 +package cn.iocoder.dashboard.modules.system.controller.auth.vo.auth;
2 2
3 import io.swagger.annotations.ApiModel; 3 import io.swagger.annotations.ApiModel;
4 import io.swagger.annotations.ApiModelProperty; 4 import io.swagger.annotations.ApiModelProperty;
src/main/java/cn/iocoder/dashboard/modules/system/controller/auth/vo/SysAuthMenuRespVO.java renamed to src/main/java/cn/iocoder/dashboard/modules/system/controller/auth/vo/auth/SysAuthMenuRespVO.java
1 -package cn.iocoder.dashboard.modules.system.controller.auth.vo; 1 +package cn.iocoder.dashboard.modules.system.controller.auth.vo.auth;
2 2
3 import io.swagger.annotations.ApiModel; 3 import io.swagger.annotations.ApiModel;
4 import io.swagger.annotations.ApiModelProperty; 4 import io.swagger.annotations.ApiModelProperty;
src/main/java/cn/iocoder/dashboard/modules/system/controller/auth/vo/SysAuthPermissionInfoRespVO.java renamed to src/main/java/cn/iocoder/dashboard/modules/system/controller/auth/vo/auth/SysAuthPermissionInfoRespVO.java
1 -package cn.iocoder.dashboard.modules.system.controller.auth.vo; 1 +package cn.iocoder.dashboard.modules.system.controller.auth.vo.auth;
2 2
3 import io.swagger.annotations.ApiModel; 3 import io.swagger.annotations.ApiModel;
4 import io.swagger.annotations.ApiModelProperty; 4 import io.swagger.annotations.ApiModelProperty;
src/main/java/cn/iocoder/dashboard/modules/system/controller/auth/vo/session/SysUserSessionPageReqVO.java 0 → 100644
  1 +package cn.iocoder.dashboard.modules.system.controller.auth.vo.session;
  2 +
  3 +import cn.iocoder.dashboard.common.pojo.PageParam;
  4 +import io.swagger.annotations.ApiModel;
  5 +import lombok.Data;
  6 +import lombok.EqualsAndHashCode;
  7 +
  8 +@ApiModel("在线用户 Session 分页 Request VO")
  9 +@Data
  10 +@EqualsAndHashCode(callSuper = true)
  11 +public class SysUserSessionPageReqVO extends PageParam {
  12 +}
src/main/java/cn/iocoder/dashboard/modules/system/convert/auth/SysAuthConvert.java
1 package cn.iocoder.dashboard.modules.system.convert.auth; 1 package cn.iocoder.dashboard.modules.system.convert.auth;
2 2
3 import cn.iocoder.dashboard.framework.security.core.LoginUser; 3 import cn.iocoder.dashboard.framework.security.core.LoginUser;
4 -import cn.iocoder.dashboard.modules.system.controller.auth.vo.SysAuthMenuRespVO;  
5 -import cn.iocoder.dashboard.modules.system.controller.auth.vo.SysAuthPermissionInfoRespVO; 4 +import cn.iocoder.dashboard.modules.system.controller.auth.vo.auth.SysAuthMenuRespVO;
  5 +import cn.iocoder.dashboard.modules.system.controller.auth.vo.auth.SysAuthPermissionInfoRespVO;
6 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.permission.SysMenuDO; 6 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.permission.SysMenuDO;
7 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.permission.SysRoleDO; 7 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.permission.SysRoleDO;
8 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.user.SysUserDO; 8 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.user.SysUserDO;
src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/dao/auth/SysUserOnlineMapper.java 0 → 100644
  1 +package cn.iocoder.dashboard.modules.system.dal.mysql.dao.auth;
  2 +
  3 +import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.auth.SysUserSessionDO;
  4 +import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  5 +
  6 +public interface SysUserOnlineMapper extends BaseMapper<SysUserSessionDO> {
  7 +}
src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/dataobject/auth/SysUserSessionDO.java 0 → 100644
  1 +package cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.auth;
  2 +
  3 +import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO;
  4 +import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.user.SysUserDO;
  5 +import com.baomidou.mybatisplus.annotation.TableId;
  6 +import com.baomidou.mybatisplus.annotation.TableName;
  7 +import lombok.Data;
  8 +import lombok.EqualsAndHashCode;
  9 +
  10 +/**
  11 + * 在线用户表
  12 + */
  13 +@TableName(value = "sys_user_session", autoResultMap = true)
  14 +@Data
  15 +@EqualsAndHashCode(callSuper = true)
  16 +public class SysUserSessionDO extends BaseDO {
  17 +
  18 + /**
  19 + * 会话编号, 即 sessionId
  20 + */
  21 + @TableId
  22 + private String id;
  23 + /**
  24 + * 用户编号
  25 + *
  26 + * 外键 {@link SysUserDO#getId()}
  27 + */
  28 + private Long userId;
  29 + /**
  30 + * 用户 IP
  31 + */
  32 + private String userIp;
  33 + /**
  34 + * 浏览器 UA
  35 + */
  36 + private String userAgent;
  37 +
  38 +}
src/main/java/cn/iocoder/dashboard/modules/system/service/auth/SysUserOnlineService.java 0 → 100644
  1 +package cn.iocoder.dashboard.modules.system.service.auth;
  2 +
  3 +import cn.iocoder.dashboard.common.pojo.PageResult;
  4 +import cn.iocoder.dashboard.modules.system.controller.auth.vo.session.SysUserSessionPageReqVO;
  5 +import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.auth.SysUserSessionDO;
  6 +
  7 +import java.util.Date;
  8 +
  9 +/**
  10 + * 在线用户 Session Service 接口
  11 + */
  12 +public interface SysUserOnlineService {
  13 +
  14 + /**
  15 + * 创建在线用户 Session
  16 + *
  17 + * @param sessionId Session 编号
  18 + * @param userId 用户编号
  19 + * @param userIp 用户 IP
  20 + * @param userAgent 用户 UA
  21 + */
  22 + void createUserOnline(String sessionId, Long userId, String userIp, String userAgent);
  23 +
  24 + /**
  25 + * 更新在线用户 Session 的更新时间
  26 + *
  27 + * @param sessionId Session 编号
  28 + * @param updateTime 更新时间
  29 + */
  30 + void updateUserOnlineUpdateTime(String sessionId, Date updateTime);
  31 +
  32 + /**
  33 + * 获得在线用户分页列表
  34 + *
  35 + * @param reqVO 分页条件
  36 + * @return 份额与列表
  37 + */
  38 + PageResult<SysUserSessionDO> getUserSessionPage(SysUserSessionPageReqVO reqVO);
  39 +
  40 +}