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 47 restart:
48 48 # 热部署开关
49 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 51 # 防止XSS攻击
74 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 3 import cn.iocoder.dashboard.common.enums.CommonStatusEnum;
4 4 import cn.iocoder.dashboard.common.pojo.CommonResult;
5 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 10 import cn.iocoder.dashboard.modules.system.convert.auth.SysAuthConvert;
11 11 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.permission.SysMenuDO;
12 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 3 import io.swagger.annotations.ApiModel;
4 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 3 import io.swagger.annotations.ApiModel;
4 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 3 import io.swagger.annotations.ApiModel;
4 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 3 import io.swagger.annotations.ApiModel;
4 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 1 package cn.iocoder.dashboard.modules.system.convert.auth;
2 2  
3 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 6 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.permission.SysMenuDO;
7 7 import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.permission.SysRoleDO;
8 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 +}
... ...