Commit b557251b6f3e0040679409af8d289c8e3ed3e97a
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 | +} |