支持系统访问记录

This commit is contained in:
RuoYi 2018-03-02 12:44:48 +08:00
parent 64fe58211d
commit 9e2e65e69f
99 changed files with 374 additions and 241 deletions

View File

@ -110,10 +110,10 @@ insert into sys_menu values('3', '用户管理', '1', '1', '/system/user/userLis
insert into sys_menu values('4', '角色管理', '1', '2', '/system/role/roleList', 'C', '0', 'system:role:list', '#', '2018-01-01', '', 'admin', '角色管理菜单'); insert into sys_menu values('4', '角色管理', '1', '2', '/system/role/roleList', 'C', '0', 'system:role:list', '#', '2018-01-01', '', 'admin', '角色管理菜单');
insert into sys_menu values('5', '菜单管理', '1', '3', '/system/menu/menuList', 'C', '0', 'system:menu:list', '#', '2018-01-01', '', 'admin', '菜单管理菜单'); insert into sys_menu values('5', '菜单管理', '1', '3', '/system/menu/menuList', 'C', '0', 'system:menu:list', '#', '2018-01-01', '', 'admin', '菜单管理菜单');
insert into sys_menu values('6', '部门管理', '1', '3', '/system/dept/deptList', 'C', '0', 'system:dept:list', '#', '2018-01-01', '', 'admin', '部门管理菜单'); insert into sys_menu values('6', '部门管理', '1', '3', '/system/dept/deptList', 'C', '0', 'system:dept:list', '#', '2018-01-01', '', 'admin', '部门管理菜单');
insert into sys_menu values('7', '操作日志', '2', '1', '/system/operlog/operlogList', 'C', '0', 'system:operlog:list', '#', '2018-01-01', '', 'admin', '操作日志菜单'); insert into sys_menu values('7', '操作日志', '2', '1', '/monitor/operlog', 'C', '0', 'monitor:operlog', '#', '2018-01-01', '', 'admin', '操作日志菜单');
insert into sys_menu values('8', '登录日志', '2', '2', '/system/userlog/userlogList', 'C', '0', 'system:userlog:list', '#', '2018-01-01', '', 'admin', '登录日志菜单'); insert into sys_menu values('8', '登录日志', '2', '2', '/monitor/logininfor', 'C', '0', 'monitor:logininfor', '#', '2018-01-01', '', 'admin', '登录日志菜单');
insert into sys_menu values('9', '在线用户', '2', '3', '/monitor/online', 'C', '0', 'monitor:online', '#', '2018-01-01', '', 'admin', '在线用户菜单'); insert into sys_menu values('9', '在线用户', '2', '3', '/monitor/online', 'C', '0', 'monitor:online', '#', '2018-01-01', '', 'admin', '在线用户菜单');
insert into sys_menu values('10', '数据监控', '2', '4', '/monitor/druid/index.html', 'C', '0', 'monitor:druid:list', '#', '2018-01-01', '', 'admin', '数据监控菜单'); insert into sys_menu values('10', '数据监控', '2', '4', '/monitor/druid/index.html', 'C', '0', 'monitor:druid', '#', '2018-01-01', '', 'admin', '数据监控菜单');
--- 三级用户按钮 --- 三级用户按钮
insert into sys_menu values('11', '用户新增', '3', '1', '/system/user/add', 'F', '0', 'sys:user:add', '#', '2018-01-01', '', 'admin', '用户管理新增按钮'); insert into sys_menu values('11', '用户新增', '3', '1', '/system/user/add', 'F', '0', 'sys:user:add', '#', '2018-01-01', '', 'admin', '用户管理新增按钮');
insert into sys_menu values('12', '用户修改', '3', '2', '/system/user/update', 'F', '0', 'sys:user:update', '#', '2018-01-01', '', 'admin', '用户管理修改按钮'); insert into sys_menu values('12', '用户修改', '3', '2', '/system/user/update', 'F', '0', 'sys:user:update', '#', '2018-01-01', '', 'admin', '用户管理修改按钮');
@ -131,10 +131,6 @@ insert into sys_menu values('21', '菜单新增', '5', '1', '/system/menu/add',
insert into sys_menu values('22', '菜单修改', '5', '2', '/system/menu/update', 'F', '0', 'sys:menu:update', '#', '2018-01-01', '', 'admin', '菜单管理修改按钮'); insert into sys_menu values('22', '菜单修改', '5', '2', '/system/menu/update', 'F', '0', 'sys:menu:update', '#', '2018-01-01', '', 'admin', '菜单管理修改按钮');
insert into sys_menu values('23', '菜单删除', '5', '3', '/system/menu/delete', 'F', '0', 'sys:menu:delete', '#', '2018-01-01', '', 'admin', '菜单管理删除按钮'); insert into sys_menu values('23', '菜单删除', '5', '3', '/system/menu/delete', 'F', '0', 'sys:menu:delete', '#', '2018-01-01', '', 'admin', '菜单管理删除按钮');
insert into sys_menu values('24', '菜单查询', '5', '4', '/system/menu/select', 'F', '0', 'sys:menu:select', '#', '2018-01-01', '', 'system', '菜单管理查询按钮'); insert into sys_menu values('24', '菜单查询', '5', '4', '/system/menu/select', 'F', '0', 'sys:menu:select', '#', '2018-01-01', '', 'system', '菜单管理查询按钮');
--- 三级日志按钮
insert into sys_menu values('25', '操作日志查询', '4', '5', '/system/operlog/auth', 'F', '0', 'sys:operlog:select', '#', '2018-01-01', '', 'admin', '操作日志查询按钮');
insert into sys_menu values('26', '登录日志查询', '4', '5', '/system/userlog/auth', 'F', '0', 'sys:userlog:select', '#', '2018-01-01', '', 'admin', '登录日志查询按钮');
-- ---------------------------- -- ----------------------------
-- 5、用户和角色关联表 用户N-1角色 -- 5、用户和角色关联表 用户N-1角色
@ -244,16 +240,16 @@ drop table if exists sys_logininfor;
create table sys_logininfor ( create table sys_logininfor (
info_id int(11) not null auto_increment comment '访问ID', info_id int(11) not null auto_increment comment '访问ID',
login_name varchar(50) default '' comment '登录名', login_name varchar(50) default '' comment '登录名',
status int(1) default 0 comment '登录状态 0成功 1失败',
ipaddr varchar(50) default '' comment '登录IP地址', ipaddr varchar(50) default '' comment '登录IP地址',
browser varchar(50) default '' comment '浏览器类型', browser varchar(50) default '' comment '浏览器类型',
os varchar(50) default '' comment '操作系统', os varchar(50) default '' comment '操作系统',
status int(1) default 0 comment '登录状态 0成功 1失败',
msg varchar(255) default '' comment '提示消息', msg varchar(255) default '' comment '提示消息',
logondate timestamp default current_timestamp comment '访问时间', login_time timestamp default current_timestamp comment '访问时间',
primary key (info_id) primary key (info_id)
) engine=innodb auto_increment=100 default charset=utf8; ) engine=innodb auto_increment=100 default charset=utf8;
insert into sys_logininfor values(1, 'admin', 0 , '127.0.0.1', 'Chrome 45', 'Windows 7', '登录成功' ,'2018-01-01'); insert into sys_logininfor values(1, 'admin', '127.0.0.1', 'Chrome 45', 'Windows 7', 0, '登录成功' ,'2018-01-01');
-- ---------------------------- -- ----------------------------
-- 10、在线用户记录 -- 10、在线用户记录
@ -269,7 +265,7 @@ create table sys_user_online (
status varchar(10) default '' comment '在线状态on_line在线off_line离线', status varchar(10) default '' comment '在线状态on_line在线off_line离线',
start_timestsamp timestamp default current_timestamp comment 'session创建时间', start_timestsamp timestamp default current_timestamp comment 'session创建时间',
last_access_time timestamp default current_timestamp comment 'session最后访问时间', last_access_time timestamp default current_timestamp comment 'session最后访问时间',
expireTime int(5) default 0 comment '超时时间,单位为分钟', expire_time int(5) default 0 comment '超时时间,单位为分钟',
primary key (sessionId) primary key (sessionId)
) engine=innodb default charset=utf8; ) engine=innodb default charset=utf8;

View File

@ -8,7 +8,7 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
/** /**
* 启动程序 * 启动程序
* *
* @author yangzz * @author ruoyi
*/ */
@SpringBootApplication @SpringBootApplication
@EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class }) @EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class })

View File

@ -3,7 +3,7 @@ package com.ruoyi.common.constant;
/** /**
* 通用常量信息 * 通用常量信息
* *
* @author yangzz * @author ruoyi
*/ */
public class CommonConstant public class CommonConstant
{ {

View File

@ -3,7 +3,7 @@ package com.ruoyi.common.constant;
/** /**
* Shiro通用常量 * Shiro通用常量
* *
* @author yangzz * @author ruoyi
*/ */
public interface ShiroConstants public interface ShiroConstants
{ {
@ -17,11 +17,6 @@ public interface ShiroConstants
*/ */
public static final String CURRENT_USERNAME = "username"; public static final String CURRENT_USERNAME = "username";
/**
* 验证码
*/
public static final String CURRENT_JCAPTCHA = "jcaptcha";
/** /**
* 消息key * 消息key
*/ */
@ -32,11 +27,6 @@ public interface ShiroConstants
*/ */
public static String ERROR = "errorMsg"; public static String ERROR = "errorMsg";
/**
* 验证码错误
*/
public static final String JCAPTCHA_ERROR = "jcaptchaError";
/** /**
* 编码格式 * 编码格式
*/ */

View File

@ -3,7 +3,7 @@ package com.ruoyi.common.constant;
/** /**
* 用户常量信息 * 用户常量信息
* *
* @author yangzz * @author ruoyi
*/ */
public class UserConstants public class UserConstants
{ {
@ -23,8 +23,6 @@ public class UserConstants
/** 名称是否唯一的返回结果码 */ /** 名称是否唯一的返回结果码 */
public final static String NAME_UNIQUE = "0"; public final static String NAME_UNIQUE = "0";
public final static String NAME_NOT_UNIQUE = "1";
/** /**
* 用户名长度限制 * 用户名长度限制
*/ */

View File

@ -1,18 +0,0 @@
package com.ruoyi.common.exception;
import com.ruoyi.common.exception.user.UserException;
/**
* 验证码错误异常类
*
* @author yangzz
*/
public class CaptchaException extends UserException
{
private static final long serialVersionUID = 1L;
public CaptchaException()
{
super("user.jcaptcha.error", null);
}
}

View File

@ -7,7 +7,7 @@ import com.ruoyi.common.utils.MessageUtils;
/** /**
* 基础异常 * 基础异常
* *
* @author yangzz * @author ruoyi
*/ */
public class BaseException extends RuntimeException public class BaseException extends RuntimeException
{ {

View File

@ -3,7 +3,7 @@ package com.ruoyi.common.exception.base;
/** /**
* Dao异常 * Dao异常
* *
* @author yangzz * @author ruoyi
*/ */
public class DaoException extends RuntimeException public class DaoException extends RuntimeException
{ {

View File

@ -3,7 +3,7 @@ package com.ruoyi.common.exception.user;
/** /**
* 角色锁定异常类 * 角色锁定异常类
* *
* @author yangzz * @author ruoyi
*/ */
public class RoleBlockedException extends UserException public class RoleBlockedException extends UserException
{ {

View File

@ -3,7 +3,7 @@ package com.ruoyi.common.exception.user;
/** /**
* 用户锁定异常类 * 用户锁定异常类
* *
* @author yangzz * @author ruoyi
*/ */
public class UserBlockedException extends UserException public class UserBlockedException extends UserException
{ {

View File

@ -5,7 +5,7 @@ import com.ruoyi.common.exception.base.BaseException;
/** /**
* 用户信息异常类 * 用户信息异常类
* *
* @author yangzz * @author ruoyi
*/ */
public class UserException extends BaseException public class UserException extends BaseException
{ {

View File

@ -3,7 +3,7 @@ package com.ruoyi.common.exception.user;
/** /**
* 用户不存在异常类 * 用户不存在异常类
* *
* @author yangzz * @author ruoyi
*/ */
public class UserNotExistsException extends UserException public class UserNotExistsException extends UserException
{ {

View File

@ -3,7 +3,7 @@ package com.ruoyi.common.exception.user;
/** /**
* 用户密码不正确或不符合规范异常类 * 用户密码不正确或不符合规范异常类
* *
* @author yangzz * @author ruoyi
*/ */
public class UserPasswordNotMatchException extends UserException public class UserPasswordNotMatchException extends UserException
{ {

View File

@ -3,7 +3,7 @@ package com.ruoyi.common.exception.user;
/** /**
* 用户错误记数异常类 * 用户错误记数异常类
* *
* @author yangzz * @author ruoyi
*/ */
public class UserPasswordRetryLimitCountException extends UserException public class UserPasswordRetryLimitCountException extends UserException
{ {

View File

@ -3,7 +3,7 @@ package com.ruoyi.common.exception.user;
/** /**
* 用户错误最大次数异常类 * 用户错误最大次数异常类
* *
* @author yangzz * @author ruoyi
*/ */
public class UserPasswordRetryLimitExceedException extends UserException public class UserPasswordRetryLimitExceedException extends UserException
{ {

View File

@ -7,7 +7,7 @@ import java.util.Date;
/** /**
* 时间工具类 * 时间工具类
* *
* @author yangzz * @author ruoyi
*/ */
public class DateUtils public class DateUtils
{ {

View File

@ -7,7 +7,7 @@ import org.springframework.web.context.request.ServletRequestAttributes;
/** /**
* 客户端工具类 * 客户端工具类
* *
* @author yangzz * @author ruoyi
*/ */
public class HttpContextUtils public class HttpContextUtils
{ {

View File

@ -5,7 +5,7 @@ import javax.servlet.http.HttpServletRequest;
/** /**
* 获取IP方法 * 获取IP方法
* *
* @author yangzz * @author ruoyi
*/ */
public class IpUtils public class IpUtils
{ {

View File

@ -12,7 +12,7 @@ import java.util.Map;
/** /**
* 处理并记录日志文件 * 处理并记录日志文件
* *
* @author yangzz * @author ruoyi
*/ */
public class LogUtils public class LogUtils
{ {

View File

@ -6,7 +6,7 @@ import java.security.MessageDigest;
/** /**
* Md5加密方法 * Md5加密方法
* *
* @author yangzz * @author ruoyi
*/ */
@Slf4j @Slf4j
public class Md5Utils public class Md5Utils

View File

@ -6,7 +6,7 @@ import com.ruoyi.common.utils.spring.SpringUtils;
/** /**
* 获取i18n资源文件 * 获取i18n资源文件
* *
* @author yangzz * @author ruoyi
*/ */
public class MessageUtils public class MessageUtils
{ {

View File

@ -6,7 +6,7 @@ import java.util.Map;
/** /**
* 字符串工具类 * 字符串工具类
* *
* @author yangzz * @author ruoyi
*/ */
public class StringUtils public class StringUtils
{ {

View File

@ -6,14 +6,15 @@ import org.slf4j.LoggerFactory;
import com.ruoyi.common.constant.CommonConstant; import com.ruoyi.common.constant.CommonConstant;
import com.ruoyi.common.utils.security.ShiroUtils; import com.ruoyi.common.utils.security.ShiroUtils;
import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.project.system.logininfor.domain.Logininfor; import com.ruoyi.project.monitor.logininfor.domain.Logininfor;
import com.ruoyi.project.system.logininfor.service.LogininforServiceImpl; import com.ruoyi.project.monitor.logininfor.service.LogininforServiceImpl;
import eu.bitwalker.useragentutils.UserAgent; import eu.bitwalker.useragentutils.UserAgent;
/** /**
* 记录用户日志信息 * 记录用户日志信息
* *
* @author yangzz * @author ruoyi
*/ */
public class SystemLogUtils public class SystemLogUtils
{ {

View File

@ -9,7 +9,7 @@ import com.ruoyi.project.system.menu.domain.Menu;
/** /**
* 权限数据处理 * 权限数据处理
* *
* @author y * @author ruoyi
*/ */
public class TreeUtils public class TreeUtils
{ {

View File

@ -8,7 +8,7 @@ import com.ruoyi.project.system.user.domain.User;
/** /**
* shiro 工具类 * shiro 工具类
* *
* @author yangzz * @author ruoyi
*/ */
public class ShiroUtils public class ShiroUtils
{ {

View File

@ -9,7 +9,7 @@ import org.springframework.stereotype.Component;
/** /**
* spring工具类 方便在非spring管理环境中获取bean * spring工具类 方便在非spring管理环境中获取bean
* *
* @author yangzz * @author ruoyi
*/ */
@Component @Component
public final class SpringUtils implements BeanFactoryPostProcessor public final class SpringUtils implements BeanFactoryPostProcessor

View File

@ -24,7 +24,7 @@ import lombok.extern.slf4j.Slf4j;
/** /**
* 操作日志记录处理 * 操作日志记录处理
* *
* @author yangzz * @author ruoyi
*/ */
@Aspect @Aspect

View File

@ -9,7 +9,7 @@ import java.lang.annotation.Target;
/** /**
* 自定义操作日志记录注解 * 自定义操作日志记录注解
* *
* @author yangzz * @author ruoyi
* *
*/ */
@Target({ ElementType.PARAMETER, ElementType.METHOD }) @Target({ ElementType.PARAMETER, ElementType.METHOD })

View File

@ -9,7 +9,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter
/** /**
* 通用配置 * 通用配置
* *
* @author yangzz * @author ruoyi
*/ */
@Configuration @Configuration
public class BaseConfig extends WebMvcConfigurerAdapter public class BaseConfig extends WebMvcConfigurerAdapter

View File

@ -6,7 +6,7 @@ import org.springframework.stereotype.Component;
/** /**
* 配置信息 * 配置信息
* *
* @author yangzz * @author ruoyi
*/ */
@Component @Component
@ConfigurationProperties(prefix = "ruoyi") @ConfigurationProperties(prefix = "ruoyi")

View File

@ -16,7 +16,7 @@ import lombok.extern.slf4j.Slf4j;
/** /**
* Druid数据库信息配置加载 * Druid数据库信息配置加载
* *
* @author yangzz * @author ruoyi
*/ */
@Configuration @Configuration
@Slf4j @Slf4j

View File

@ -14,7 +14,7 @@ import org.springframework.web.servlet.i18n.SessionLocaleResolver;
/** /**
* 资源文件配置加载 * 资源文件配置加载
* *
* @author yangzz * @author ruoyi
*/ */
@Configuration @Configuration
@Component @Component

View File

@ -29,7 +29,7 @@ import at.pollux.thymeleaf.shiro.dialect.ShiroDialect;
/** /**
* 权限配置加载 * 权限配置加载
* *
* @author yangzz * @author ruoyi
*/ */
@Configuration @Configuration
public class ShiroConfig public class ShiroConfig

View File

@ -34,7 +34,7 @@ import com.ruoyi.framework.web.page.PageUtilEntity;
/** /**
* 拦截需要分页SQL * 拦截需要分页SQL
* *
* @author yangzz * @author ruoyi
*/ */
@Intercepts({ @Signature(type = StatementHandler.class, method = "prepare", args = { Connection.class, Integer.class }) }) @Intercepts({ @Signature(type = StatementHandler.class, method = "prepare", args = { Connection.class, Integer.class }) })
public class ExecutorPageMethodInterceptor implements Interceptor public class ExecutorPageMethodInterceptor implements Interceptor

View File

@ -5,7 +5,7 @@ import java.lang.reflect.Field;
/** /**
* 拦截需要分页SQL 反射工具 * 拦截需要分页SQL 反射工具
* *
* @author yangzz * @author ruoyi
*/ */
public class ReflectHelper public class ReflectHelper
{ {

View File

@ -14,8 +14,6 @@ import org.apache.shiro.authz.SimpleAuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm; import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection; import org.apache.shiro.subject.PrincipalCollection;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import com.ruoyi.common.exception.CaptchaException;
import com.ruoyi.common.exception.user.RoleBlockedException; import com.ruoyi.common.exception.user.RoleBlockedException;
import com.ruoyi.common.exception.user.UserBlockedException; import com.ruoyi.common.exception.user.UserBlockedException;
import com.ruoyi.common.exception.user.UserNotExistsException; import com.ruoyi.common.exception.user.UserNotExistsException;
@ -26,13 +24,12 @@ import com.ruoyi.framework.shiro.service.LoginService;
import com.ruoyi.project.system.menu.service.IMenuService; import com.ruoyi.project.system.menu.service.IMenuService;
import com.ruoyi.project.system.role.service.IRoleService; import com.ruoyi.project.system.role.service.IRoleService;
import com.ruoyi.project.system.user.domain.User; import com.ruoyi.project.system.user.domain.User;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
/** /**
* 自定义Realm 处理登录 权限 * 自定义Realm 处理登录 权限
* *
* @author yangzz * @author ruoyi
*/ */
@Slf4j @Slf4j
public class UserRealm extends AuthorizingRealm public class UserRealm extends AuthorizingRealm
@ -81,11 +78,6 @@ public class UserRealm extends AuthorizingRealm
{ {
user = loginService.login(username, password); user = loginService.login(username, password);
} }
catch (CaptchaException e)
{
throw new AuthenticationException(e.getMessage(), e);
}
catch (UserNotExistsException e) catch (UserNotExistsException e)
{ {
throw new UnknownAccountException(e.getMessage(), e); throw new UnknownAccountException(e.getMessage(), e);

View File

@ -16,7 +16,7 @@ import com.ruoyi.project.system.user.service.IUserService;
/** /**
* 登录校验方法 * 登录校验方法
* *
* @author yangzz * @author ruoyi
*/ */
@Component @Component
public class LoginService public class LoginService

View File

@ -19,7 +19,7 @@ import com.ruoyi.project.system.user.domain.User;
/** /**
* 登录密码方法 * 登录密码方法
* *
* @author yangzz * @author ruoyi
*/ */
@Component @Component
public class PasswordService public class PasswordService

View File

@ -13,7 +13,7 @@ import com.ruoyi.project.monitor.online.service.IUserOnlineService;
/** /**
* 针对自定义的ShiroSession的db操作 * 针对自定义的ShiroSession的db操作
* *
* @author yangzz * @author ruoyi
*/ */
public class OnlineSessionDAO extends EnterpriseCacheSessionDAO public class OnlineSessionDAO extends EnterpriseCacheSessionDAO
{ {

View File

@ -17,7 +17,7 @@ import eu.bitwalker.useragentutils.UserAgent;
/** /**
* 自定义sessionFactory会话 * 自定义sessionFactory会话
* *
* @author yangzz * @author ruoyi
*/ */
@Component @Component
public class OnlineSessionFactory implements SessionFactory public class OnlineSessionFactory implements SessionFactory

View File

@ -18,8 +18,8 @@ import com.ruoyi.project.system.user.domain.User;
/** /**
* 自定义访问控制 * 自定义访问控制
* @author yangzz
* *
* @author ruoyi
*/ */
public class OnlineSessionFilter extends AccessControlFilter public class OnlineSessionFilter extends AccessControlFilter
{ {

View File

@ -12,7 +12,7 @@ import com.ruoyi.project.monitor.online.domain.OnlineSession;
/** /**
* 同步Session数据到Db * 同步Session数据到Db
* *
* @author yangzz * @author ruoyi
*/ */
public class SyncOnlineSessionFilter extends PathMatchingFilter public class SyncOnlineSessionFilter extends PathMatchingFilter
{ {

View File

@ -23,7 +23,7 @@ import lombok.extern.slf4j.Slf4j;
/** /**
* 主要是在此如果会话的属性修改了 就标识下其修改了 然后方便 OnlineSessionDao同步 * 主要是在此如果会话的属性修改了 就标识下其修改了 然后方便 OnlineSessionDao同步
* *
* @author yangzz * @author ruoyi
*/ */
@Slf4j @Slf4j
public class OnlineWebSessionManager extends DefaultWebSessionManager public class OnlineWebSessionManager extends DefaultWebSessionManager

View File

@ -11,7 +11,7 @@ import lombok.extern.slf4j.Slf4j;
/** /**
* 自定义任务调度器完成 * 自定义任务调度器完成
* *
* @author yangzz * @author ruoyi
*/ */
@Slf4j @Slf4j
public class SpringSessionValidationScheduler implements SessionValidationScheduler public class SpringSessionValidationScheduler implements SessionValidationScheduler

View File

@ -8,7 +8,7 @@ import com.ruoyi.project.system.user.domain.User;
/** /**
* web层通用数据处理 * web层通用数据处理
* *
* @author yangzz * @author ruoyi
*/ */
public class BaseController public class BaseController
{ {

View File

@ -6,15 +6,13 @@ import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.SqlSessionTemplate;
import com.ruoyi.common.exception.base.DaoException; import com.ruoyi.common.exception.base.DaoException;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
/** /**
* 数据DAO层通用数据处理 * 数据DAO层通用数据处理
* *
* @author yangzz * @author ruoyi
*/ */
@Slf4j @Slf4j
public class DynamicObjectBaseDao public class DynamicObjectBaseDao

View File

@ -6,7 +6,7 @@ import java.util.Map;
/** /**
* 返回数据通用处理 * 返回数据通用处理
* *
* @author yangzz * @author ruoyi
*/ */
public class JSON extends HashMap<String, Object> public class JSON extends HashMap<String, Object>
{ {

View File

@ -10,8 +10,7 @@ import lombok.extern.slf4j.Slf4j;
/** /**
* 自定义异常处理器 * 自定义异常处理器
* *
* @author yangzz * @author ruoyi
*
*/ */
@Slf4j @Slf4j
@RestControllerAdvice @RestControllerAdvice

View File

@ -5,7 +5,7 @@ import lombok.Data;
/** /**
* 表格请求参数封装 * 表格请求参数封装
* *
* @author yangzz * @author ruoyi
*/ */
@Data @Data
public class PageUtilEntity public class PageUtilEntity

View File

@ -6,7 +6,7 @@ import java.util.List;
/** /**
* 表格分页数据对象 * 表格分页数据对象
* *
* @author yangzz * @author ruoyi
*/ */
public class TableDataInfo implements Serializable public class TableDataInfo implements Serializable
{ {

View File

@ -7,7 +7,7 @@ import com.ruoyi.framework.web.page.PageUtilEntity;
/** /**
* 表格数据处理 * 表格数据处理
* *
* @author yangzz * @author ruoyi
*/ */
public class TableSupport public class TableSupport
{ {

View File

@ -0,0 +1,44 @@
package com.ruoyi.project.monitor.logininfor.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.page.PageUtilEntity;
import com.ruoyi.framework.web.page.TableDataInfo;
import com.ruoyi.project.monitor.logininfor.domain.Logininfor;
import com.ruoyi.project.monitor.logininfor.service.ILogininforService;
/**
* 系统访问记录
*
* @author ruoyi
*/
@Controller
@RequestMapping("/monitor/logininfor")
public class LogininforController extends BaseController
{
private String prefix = "monitor/logininfor";
@Autowired
private ILogininforService logininforService;
@GetMapping()
public String logininfor()
{
return prefix + "/logininfor";
}
@GetMapping("/list")
@ResponseBody
public TableDataInfo list()
{
PageUtilEntity pageUtilEntity = this.getPageUtilEntity();
List<Logininfor> list = logininforService.pageInfoQueryLogininfor(pageUtilEntity);
TableDataInfo tableDataInfo = new TableDataInfo(list, pageUtilEntity.getTotalResult());
return tableDataInfo;
}
}

View File

@ -0,0 +1,28 @@
package com.ruoyi.project.monitor.logininfor.dao;
import java.util.List;
import com.ruoyi.framework.web.page.PageUtilEntity;
import com.ruoyi.project.monitor.logininfor.domain.Logininfor;
/**
* 系统访问日志情况信息 数据层
*
* @author ruoyi
*/
public interface ILogininforDao
{
/**
* 新增系统登录日志
*
* @param logininfor 访问日志对象
*/
public void insertLogininfor(Logininfor logininfor);
/**
* 查询系统登录日志集合
*
* @param pageUtilEntity 分页参数
* @return 登录记录集合
*/
public List<Logininfor> pageInfoQuery(PageUtilEntity pageUtilEntity);
}

View File

@ -0,0 +1,49 @@
package com.ruoyi.project.monitor.logininfor.dao;
import java.util.List;
import org.springframework.stereotype.Repository;
import com.ruoyi.framework.web.dao.DynamicObjectBaseDao;
import com.ruoyi.framework.web.page.PageUtilEntity;
import com.ruoyi.project.monitor.logininfor.domain.Logininfor;
/**
* 登录日志记录 数据层
*
* @author ruoyi
*/
@Repository("logininforDao")
public class LogininforDaoImpl extends DynamicObjectBaseDao implements ILogininforDao
{
/**
* 新增系统登录日志
*
* @param logininfor 访问日志对象
*/
@Override
public void insertLogininfor(Logininfor logininfor)
{
this.save("SystemLogininforMapper.insertLogininfor", logininfor);
}
/**
* 查询系统登录日志集合
*
* @param pageUtilEntity 分页参数
* @return 登录记录集合
*/
@Override
public List<Logininfor> pageInfoQuery(PageUtilEntity pageUtilEntity)
{
List<Logininfor> logininforList = null;
try
{
logininforList = this.findForList("SystemLogininforMapper.pageInfoQueryLogininfor", pageUtilEntity);
}
catch (Exception e)
{
e.printStackTrace();
}
return logininforList;
}
}

View File

@ -1,11 +1,13 @@
package com.ruoyi.project.system.logininfor.domain; package com.ruoyi.project.monitor.logininfor.domain;
import java.util.Date;
import lombok.Data; import lombok.Data;
/** /**
* 系统访问日志情况信息 sys_logininfor * 系统访问日志情况信息 sys_logininfor
* *
* @author yangzz * @author ruoyi
*/ */
@Data @Data
public class Logininfor public class Logininfor
@ -25,6 +27,6 @@ public class Logininfor
/** 提示消息 */ /** 提示消息 */
private String msg; private String msg;
/** 访问时间 */ /** 访问时间 */
private String loginTime; private Date loginTime;
} }

View File

@ -0,0 +1,29 @@
package com.ruoyi.project.monitor.logininfor.service;
import java.util.List;
import com.ruoyi.framework.web.page.PageUtilEntity;
import com.ruoyi.project.monitor.logininfor.domain.Logininfor;
/**
* 系统访问日志情况信息 服务层
*
* @author ruoyi
*/
public interface ILogininforService
{
/**
* 新增系统登录日志
*
* @param logininfor 访问日志对象
*/
public void insertLogininfor(Logininfor logininfor);
/**
* 查询系统登录日志集合
*
* @param pageUtilEntity 分页参数
* @return 登录记录集合
*/
public List<Logininfor> pageInfoQueryLogininfor(PageUtilEntity pageUtilEntity);
}

View File

@ -0,0 +1,43 @@
package com.ruoyi.project.monitor.logininfor.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.framework.web.page.PageUtilEntity;
import com.ruoyi.project.monitor.logininfor.dao.ILogininforDao;
import com.ruoyi.project.monitor.logininfor.domain.Logininfor;
/**
* 系统访问日志情况信息 服务层处理
*
* @author ruoyi
*/
@Service("logininforService")
public class LogininforServiceImpl implements ILogininforService
{
@Autowired
private ILogininforDao logininforDao;
/**
* 新增系统登录日志
*
* @param logininfor 访问日志对象
*/
@Override
public void insertLogininfor(Logininfor logininfor)
{
logininforDao.insertLogininfor(logininfor);
}
/**
* 查询系统登录日志集合
*
* @param pageUtilEntity 分页参数
* @return 登录记录集合
*/
public List<Logininfor> pageInfoQueryLogininfor(PageUtilEntity pageUtilEntity)
{
return logininforDao.pageInfoQuery(pageUtilEntity);
}
}

View File

@ -24,7 +24,7 @@ import com.ruoyi.project.monitor.online.service.IUserOnlineService;
/** /**
* 在线用户监控 * 在线用户监控
* *
* @author yangzz * @author ruoyi
*/ */
@Controller @Controller
@RequestMapping("/monitor/online") @RequestMapping("/monitor/online")

View File

@ -6,9 +6,9 @@ import com.ruoyi.framework.web.page.PageUtilEntity;
import com.ruoyi.project.monitor.online.domain.UserOnline; import com.ruoyi.project.monitor.online.domain.UserOnline;
/** /**
* 在线用户 服务 * 在线用户 数据
* *
* @author yangzz * @author ruoyi
*/ */
public interface IUserOnlineDao public interface IUserOnlineDao
{ {

View File

@ -9,7 +9,7 @@ import com.ruoyi.project.monitor.online.domain.UserOnline;
/** /**
* 在线用户数据层 * 在线用户数据层
* *
* @author yangzz * @author ruoyi
*/ */
@Repository("userOnlineDao") @Repository("userOnlineDao")
public class UserOnlineDaoImpl extends DynamicObjectBaseDao implements IUserOnlineDao public class UserOnlineDaoImpl extends DynamicObjectBaseDao implements IUserOnlineDao

View File

@ -5,7 +5,7 @@ import org.apache.shiro.session.mgt.SimpleSession;
/** /**
* 在线用户会话属性 * 在线用户会话属性
* *
* @author yangzz * @author ruoyi
*/ */
public class OnlineSession extends SimpleSession public class OnlineSession extends SimpleSession
{ {

View File

@ -9,7 +9,7 @@ import lombok.Data;
/** /**
* 当前在线会话 sys_user_online * 当前在线会话 sys_user_online
* *
* @author yangzz * @author ruoyi
*/ */
@Data @Data
public class UserOnline public class UserOnline

View File

@ -9,7 +9,7 @@ import com.ruoyi.project.monitor.online.domain.UserOnline;
/** /**
* 在线用户 服务层 * 在线用户 服务层
* *
* @author yangzz * @author ruoyi
*/ */
public interface IUserOnlineService public interface IUserOnlineService
{ {

View File

@ -14,9 +14,9 @@ import com.ruoyi.project.monitor.online.dao.IUserOnlineDao;
import com.ruoyi.project.monitor.online.domain.UserOnline; import com.ruoyi.project.monitor.online.domain.UserOnline;
/** /**
* 在线用户 服务层 * 在线用户 服务层处理
* *
* @author yangzz * @author ruoyi
*/ */
@Service("userOnlineService") @Service("userOnlineService")
public class UserOnlineServiceImpl implements IUserOnlineService public class UserOnlineServiceImpl implements IUserOnlineService

View File

@ -5,7 +5,7 @@ import com.ruoyi.project.monitor.operlog.domain.OperLog;
/** /**
* 操作日志 数据层 * 操作日志 数据层
* *
* @author yangzz * @author ruoyi
*/ */
public interface IOperLogDao public interface IOperLogDao
{ {

View File

@ -8,7 +8,7 @@ import com.ruoyi.project.monitor.operlog.domain.OperLog;
/** /**
* 操作日志记录 数据层 * 操作日志记录 数据层
* *
* @author yangzz * @author ruoyi
*/ */
@Repository("operLogDao") @Repository("operLogDao")
public class OperLogDaoImpl extends DynamicObjectBaseDao implements IOperLogDao public class OperLogDaoImpl extends DynamicObjectBaseDao implements IOperLogDao

View File

@ -6,7 +6,7 @@ import lombok.Data;
/** /**
* 操作日志记录 oper_log * 操作日志记录 oper_log
* *
* @author yangzz * @author ruoyi
*/ */
@Data @Data
public class OperLog public class OperLog

View File

@ -5,7 +5,7 @@ import com.ruoyi.project.monitor.operlog.domain.OperLog;
/** /**
* 操作日志 服务层 * 操作日志 服务层
* *
* @author yangzz * @author ruoyi
*/ */
public interface IOperLogService public interface IOperLogService
{ {

View File

@ -8,7 +8,7 @@ import com.ruoyi.project.monitor.operlog.domain.OperLog;
/** /**
* 操作日志 服务层处理 * 操作日志 服务层处理
* *
* @author yangzz * @author ruoyi
*/ */
@Service("operLogService") @Service("operLogService")
public class OperLogServiceImpl implements IOperLogService public class OperLogServiceImpl implements IOperLogService

View File

@ -5,7 +5,7 @@ import lombok.Data;
/** /**
* 部门对象 sys_dept * 部门对象 sys_dept
* *
* @author yangzz * @author ruoyi
*/ */
@Data @Data
public class Dept public class Dept

View File

@ -1,18 +0,0 @@
package com.ruoyi.project.system.logininfor.dao;
import com.ruoyi.project.system.logininfor.domain.Logininfor;
/**
* 系统访问日志情况信息 数据层
*
* @author y
*/
public interface ILogininforDao
{
/**
* 新增系统登录日志
*
* @param logininfor 访问日志对象
*/
public void insertLogininfor(Logininfor logininfor);
}

View File

@ -1,23 +0,0 @@
package com.ruoyi.project.system.logininfor.dao;
import org.springframework.stereotype.Repository;
import com.ruoyi.framework.web.dao.DynamicObjectBaseDao;
import com.ruoyi.project.system.logininfor.domain.Logininfor;
/**
* 登录日志记录 数据层
*
* @author yangzz
*/
@Repository("logininforDao")
public class LogininforDaoImpl extends DynamicObjectBaseDao implements ILogininforDao
{
@Override
public void insertLogininfor(Logininfor logininfor)
{
this.save("SystemLogininforMapper.insertLogininfor", logininfor);
}
}

View File

@ -1,19 +0,0 @@
package com.ruoyi.project.system.logininfor.service;
import com.ruoyi.project.system.logininfor.domain.Logininfor;
/**
* 系统访问日志情况信息 服务层
*
* @author yangzz
*/
public interface ILogininforService
{
/**
* 新增系统登录日志
*
* @param logininfor 访问日志对象
*/
public void insertLogininfor(Logininfor logininfor);
}

View File

@ -1,30 +0,0 @@
package com.ruoyi.project.system.logininfor.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.project.system.logininfor.dao.ILogininforDao;
import com.ruoyi.project.system.logininfor.domain.Logininfor;
/**
* 系统访问日志情况信息 服务层处理
*
* @author yangzz
*/
@Service("logininforService")
public class LogininforServiceImpl implements ILogininforService
{
@Autowired
private ILogininforDao logininforDao;
/**
* 新增系统登录日志
*
* @param logininfor 访问日志对象
*/
@Override
public void insertLogininfor(Logininfor logininfor)
{
logininforDao.insertLogininfor(logininfor);
}
}

View File

@ -6,7 +6,7 @@ import com.ruoyi.project.system.menu.domain.Menu;
/** /**
* 菜单表 数据层 * 菜单表 数据层
* *
* @author yangzz * @author ruoyi
*/ */
public interface IMenuDao public interface IMenuDao
{ {

View File

@ -9,7 +9,7 @@ import com.ruoyi.project.system.menu.domain.Menu;
/** /**
* 菜单 数据层处理 * 菜单 数据层处理
* *
* @author yangzz * @author ruoyi
*/ */
@Repository("menuDao") @Repository("menuDao")
public class MenuDaoImpl extends DynamicObjectBaseDao implements IMenuDao public class MenuDaoImpl extends DynamicObjectBaseDao implements IMenuDao

View File

@ -7,7 +7,7 @@ import lombok.Data;
/** /**
* 角色对象 sys_menu * 角色对象 sys_menu
* *
* @author yangzz * @author ruoyi
*/ */
@Data @Data
public class Menu public class Menu

View File

@ -8,7 +8,7 @@ import com.ruoyi.project.system.menu.domain.Menu;
/** /**
* 菜单 业务层 * 菜单 业务层
* *
* @author yangzz * @author ruoyi
*/ */
public interface IMenuService public interface IMenuService
{ {

View File

@ -16,7 +16,7 @@ import com.ruoyi.project.system.menu.domain.Menu;
/** /**
* 菜单 业务层处理 * 菜单 业务层处理
* *
* @author yangzz * @author ruoyi
*/ */
@Service("menuService") @Service("menuService")
public class MenuServiceImpl implements IMenuService public class MenuServiceImpl implements IMenuService

View File

@ -5,7 +5,7 @@ import java.util.List;
/** /**
* 角色表 数据层 * 角色表 数据层
* *
* @author yangzz * @author ruoyi
*/ */
public interface IRoleDao public interface IRoleDao
{ {

View File

@ -9,7 +9,7 @@ import com.ruoyi.framework.web.dao.DynamicObjectBaseDao;
/** /**
* 角色 数据层处理 * 角色 数据层处理
* *
* @author yangzz * @author ruoyi
*/ */
@Repository("roleDao") @Repository("roleDao")
public class RoleDaoImpl extends DynamicObjectBaseDao implements IRoleDao public class RoleDaoImpl extends DynamicObjectBaseDao implements IRoleDao

View File

@ -5,7 +5,7 @@ import lombok.Data;
/** /**
* 角色对象 sys_role * 角色对象 sys_role
* *
* @author yangzz * @author ruoyi
*/ */
@Data @Data
public class Role public class Role

View File

@ -5,7 +5,7 @@ import java.util.Set;
/** /**
* 角色业务层 * 角色业务层
* *
* @author yangzz * @author ruoyi
*/ */
public interface IRoleService public interface IRoleService
{ {

View File

@ -12,7 +12,7 @@ import com.ruoyi.project.system.role.dao.IRoleDao;
/** /**
* 角色 业务层处理 * 角色 业务层处理
* *
* @author yangzz * @author ruoyi
*/ */
@Service("roleService") @Service("roleService")
public class RoleServiceImpl implements IRoleService public class RoleServiceImpl implements IRoleService

View File

@ -14,7 +14,7 @@ import com.ruoyi.project.system.user.domain.User;
/** /**
* 首页 业务处理 * 首页 业务处理
* *
* @author yangzz * @author ruoyi
*/ */
@Controller @Controller
public class IndexController extends BaseController public class IndexController extends BaseController

View File

@ -15,7 +15,7 @@ import com.ruoyi.framework.web.domain.JSON;
/** /**
* 登录验证 * 登录验证
* *
* @author yangzz * @author ruoyi
*/ */
// @RestController // @RestController
@Controller @Controller

View File

@ -18,7 +18,7 @@ import com.ruoyi.project.system.user.service.IUserService;
/** /**
* 用户信息 * 用户信息
* *
* @author yangzz * @author ruoyi
*/ */
@Controller @Controller
@RequestMapping("/system/user") @RequestMapping("/system/user")

View File

@ -8,7 +8,7 @@ import com.ruoyi.project.system.user.domain.User;
/** /**
* 用户表 数据层 * 用户表 数据层
* *
* @author yangzz * @author ruoyi
*/ */
public interface IUserDao public interface IUserDao
{ {

View File

@ -11,7 +11,7 @@ import com.ruoyi.project.system.user.domain.User;
/** /**
* 用户 数据层处理 * 用户 数据层处理
* *
* @author yangzz * @author ruoyi
*/ */
@Repository("userDao") @Repository("userDao")
public class UserDaoImpl extends DynamicObjectBaseDao implements IUserDao public class UserDaoImpl extends DynamicObjectBaseDao implements IUserDao

View File

@ -6,7 +6,7 @@ import lombok.Data;
/** /**
* 用户对象 sys_user * 用户对象 sys_user
* *
* @author yangzz * @author ruoyi
*/ */
@Data @Data
public class User public class User

View File

@ -8,7 +8,7 @@ import com.ruoyi.project.system.user.domain.User;
/** /**
* 用户 业务层 * 用户 业务层
* *
* @author yangzz * @author ruoyi
*/ */
public interface IUserService public interface IUserService
{ {

View File

@ -11,7 +11,7 @@ import com.ruoyi.project.system.user.domain.User;
/** /**
* 用户 业务层处理 * 用户 业务层处理
* *
* @author yangzz * @author ruoyi
*/ */
@Service("userService") @Service("userService")
public class UserServiceImpl implements IUserService public class UserServiceImpl implements IUserService

View File

@ -7,8 +7,8 @@ spring:
datasource: datasource:
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.jdbc.Driver driverClassName: com.mysql.jdbc.Driver
#url: jdbc:mysql://10.213.24.45:3306/ry?useUnicode=true&characterEncoding=utf8 url: jdbc:mysql://10.213.24.45:3306/ry?useUnicode=true&characterEncoding=utf8
url: jdbc:mysql://localhost:3306/ry?useUnicode=true&characterEncoding=utf8 #url: jdbc:mysql://localhost:3306/ry?useUnicode=true&characterEncoding=utf8
username: root username: root
password: password password: password
# 初始化大小,最小,最大 # 初始化大小,最小,最大

View File

@ -12,7 +12,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="browser" column="browser" /> <result property="browser" column="browser" />
<result property="os" column="os" /> <result property="os" column="os" />
<result property="msg" column="msg" /> <result property="msg" column="msg" />
<result property="logondate" column="logondate" /> <result property="loginTime" column="login_time" />
</resultMap> </resultMap>
<insert id="insertLogininfor" parameterType="Logininfor"> <insert id="insertLogininfor" parameterType="Logininfor">
@ -20,4 +20,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
values (#{loginName}, #{status}, #{ipaddr}, #{browser}, #{os}, #{msg}) values (#{loginName}, #{status}, #{ipaddr}, #{browser}, #{os}, #{msg})
</insert> </insert>
<select id="pageInfoQueryLogininfor" parameterType="PageUtilEntity" resultMap="LogininforResult">
select * from sys_logininfor
<where>
<if test="searchValue != null">
AND login_name = #{searchValue}
</if>
</where>
</select>
</mapper> </mapper>

View File

@ -14,7 +14,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="status" column="status" /> <result property="status" column="status" />
<result property="startTimestamp" column="start_timestsamp" /> <result property="startTimestamp" column="start_timestsamp" />
<result property="lastAccessTime" column="last_access_time" /> <result property="lastAccessTime" column="last_access_time" />
<result property="expireTime" column="expireTime" /> <result property="expireTime" column="expire_time" />
<association property="session" javaType="OnlineSession" resultMap="OnlineSessionResult" /> <association property="session" javaType="OnlineSession" resultMap="OnlineSessionResult" />
</resultMap> </resultMap>
@ -32,7 +32,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select> </select>
<insert id="saveByOnline" parameterType="UserOnline"> <insert id="saveByOnline" parameterType="UserOnline">
replace into sys_user_online(sessionId, login_name, dept_name, ipaddr, browser, os, status, start_timestsamp, last_access_time, expireTime) replace into sys_user_online(sessionId, login_name, dept_name, ipaddr, browser, os, status, start_timestsamp, last_access_time, expire_time)
values (#{sessionId}, #{loginName}, #{deptName}, #{ipaddr}, #{browser}, #{os}, #{status}, #{startTimestamp}, #{lastAccessTime}, #{expireTime}) values (#{sessionId}, #{loginName}, #{deptName}, #{ipaddr}, #{browser}, #{os}, #{status}, #{startTimestamp}, #{lastAccessTime}, #{expireTime})
</insert> </insert>

View File

@ -1,4 +1,8 @@
// 自定义分页处理 ruoyi /**
* 自定义分页处理
*
* @author ruoyi
*/
// 初始化表格 // 初始化表格
function initTable(_columns, _url) { function initTable(_columns, _url) {

View File

@ -0,0 +1,43 @@
var prefix = "/monitor/logininfor"
$(function() {
var columns = [{
field: 'infoId',
// 列字段名
title: '访问编号' // 列标题
},
{
field: 'loginName',
title: '登录名称'
},
{
field: 'ipaddr',
title: '主机'
},
{
field: 'browser',
title: '浏览器'
},
{
field: 'os',
title: '操作系统'
},
{
field: 'status',
title: '状态',
align: 'center',
formatter: function(value, row, index) {
if (value == 0) {
return '<span class="label label-success">成功</span>';
} else if (value == 1) {
return '<span class="label label-primary">失败</span>';
}
}
},
{
field: 'loginTime',
title: '登录时间'
}];
var url = prefix + "/list";
initTable(columns, url);
});

View File

@ -104,6 +104,7 @@
<div class="panel-body"> <div class="panel-body">
<ol> <ol>
<li>支持在线用户管理</li> <li>支持在线用户管理</li>
<li>支持系统访问记录</li>
</ol> </ol>
</div> </div>
</div> </div>

View File

@ -0,0 +1,15 @@
<!DOCTYPE html>
<html lang="zh_CN" xmlns:th="http://www.thymeleaf.org"
xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="wrapper wrapper-content">
<table class="bootstrap-table" data-mobile-responsive="true"
data-sort-name="login_time" data-sort-order="desc">
</table>
</div>
<div th:include="include :: footer"></div>
<script type="text/javascript" src="/ruoyi/monitor/logininfor/logininfor.js"></script>
</body>
</html>