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 | 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
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
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
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
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 | +} | ... | ... |