Merge remote-tracking branch 'origin/group2-log-loginlog'

# Conflicts:
#	src/main/java/cn/stylefeng/guns/modular/log/LogViewController.java
#	src/main/java/cn/stylefeng/guns/modular/log/LoginLogViewController.java
#	src/main/webapp/assets/modular/system/log/log.js
#	src/main/webapp/pages/modular/system/log/log_detail.html
pull/65/head
fengshuonan 2021-01-13 20:06:48 +08:00
commit ca192ef935
8 changed files with 217 additions and 206 deletions

View File

@ -108,6 +108,12 @@
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>message-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>

View File

@ -6,36 +6,43 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
/**
*
*
*
* @author TSQ
* @date 2021/1/5 14:44
* @author chenjinlong
* @date 2021/1/13 19:45
*/
@Controller
@Slf4j
@ApiResource(name = "操作日志管理相关的界面渲染")
@ApiResource(name = "操作日志管理相关的界面渲染", path = "/view/log")
public class LogViewController {
/**
*
*
* @author TSQ
* @date 2021/1/5 15:18
*/
@GetResource(name = "操作日志管理列表", path = "/view/log")
public String indexView() {
return "/modular/system/log/log.html";
}
private String PREFIX = "/modular/system/log";
/**
*
*
* @param
* @return
* @author TSQ
* @date 2021/1/5 15:18
*/
@GetResource(name = "日志详情页", path = "/view/logDetail")
@GetResource(name = "操作日志管理列表", path = "")
public String indexView() {
return PREFIX + "/log.html";
}
/**
* -
*
* @param
* @return
* @author chenjinlong
* @date 2021/1/13 19:45
*/
@GetResource(name = "业务日志详情-视图", path = "detailView")
public String detailView() {
return "/modular/system/log/log_detail.html";
return PREFIX + "/log_detail.html";
}
}

View File

@ -1,4 +1,4 @@
layui.use(['HttpRequest', 'treeTable', 'laydate', 'func' ,'form'], function () {
layui.use(['HttpRequest', 'treeTable', 'laydate', 'func', 'form'], function () {
var $ = layui.$;
var table = layui.table;
var HttpRequest = layui.HttpRequest;
@ -20,12 +20,12 @@ layui.use(['HttpRequest', 'treeTable', 'laydate', 'func' ,'form'], function () {
return [[
{type: 'numbers'},
{field: 'logId', hide: true, sort: true, title: 'id'},
/*{field: 'logType', align: "center", sort: true, title: '日志类型'},*/
{field: 'logName', align: "center", sort: true, title: '日志名称'},
{field: 'createUser', align: "center", sort: true, title: '用户名称'},
{field: 'appName', align: "center", sort: true, title: '服务器名'},
{field: 'clientIp', align: "center", sort: true, title: 'IP'},
{field: 'requestUrl', align: "center", sort: true, title: '请求地址'},
{field: 'createTime', align: "center", sort: true, title: '创建时间'},
{field: 'userId', align: "center", sort: true, title: '用户名称'},
{field: 'appName', align: "center", sort: true, title: '服务名称'},
{field: 'requestUrl', align: "center", sort: true, title: '方法名'},
{field: 'createTime', align: "center", sort: true, title: '时间'},
{field: 'logContent', align: "center", sort: true, title: '具体消息'},
{align: 'center', toolbar: '#tableBar', title: '操作', minWidth: 100}
]];
@ -36,62 +36,69 @@ layui.use(['HttpRequest', 'treeTable', 'laydate', 'func' ,'form'], function () {
*/
Log.search = function () {
var queryData = {};
queryData['beginDateTime'] = $("#beginTime").val();
queryData['endDateTime'] = $("#endTime").val();
queryData['beginDate'] = $("#beginDate").val();
queryData['endDate'] = $("#endDate").val();
queryData['logName'] = $("#logName").val();
queryData['appName'] = $("#appName").val();
// queryData['logType'] = $("#logType").val();
table.reload(Log.tableId, {
where: queryData, page: {curr: 1}
});
};
/**
* 导出excel按钮
*/
// Log.exportExcel = function () {
// var checkRows = table.checkStatus(Log.tableId);
// if (checkRows.data.length === 0) {
// Feng.error("请选择要导出的数据");
// } else {
// table.exportFile(tableResult.config.id, checkRows.data, 'xls');
// }
// };
/**
* 日志详情
*/
Log.logDetail = function (data) {
// 点击详情
Log.openDetailDlg = function (data) {
func.open({
height: 800,
title: '查看日志详情',
content: Feng.ctxPath + '/view/logDetail?logId='+ data.logId,
title: '日志详情',
content: Feng.ctxPath + '/view/log/detailView?logId=' + data.logId,
tableId: Log.tableId
});
};
/**
* 导出excel按钮
*/
Log.exportExcel = function () {
var checkRows = table.checkStatus(Log.tableId);
if (checkRows.data.length === 0) {
Feng.error("请选择要导出的数据");
} else {
table.exportFile(tableResult.config.id, checkRows.data, 'xls');
}
};
/**
* 清空日志
*/
Log.cleanLog = function (data) {
var deleteLog = function () {
var dataList = layui.table.cache["logTable"];
var httpRequest = new HttpRequest(Feng.ctxPath + "/logManager/delete", 'post', function () {
Feng.success("清空日志成功!");
Log.cleanLog = function () {
var queryData = {};
queryData['beginDateTime'] = $("#beginDate").val();
queryData['endDateTime'] = $("#endDate").val();
queryData['appName'] = $("#appName").val();
if (queryData.beginDateTime == "" || queryData.endDateTime == "" || queryData.appName == "") {
Feng.error("请选择开始时间、结束时间和服务名称");
return false;
}
var operation = function () {
new HttpRequest(Feng.ctxPath + '/logManager/delete', 'post', function (data) {
Feng.success("删除日志成功!");
table.reload(Log.tableId);
}, function (data) {
Feng.error("清空日志失败!" + data.responseJSON.message + "!");
});
httpRequest.set("appName",dataList[0].appName);
httpRequest.set("beginDateTime",dataList[dataList.length-1].createTime);
httpRequest.set("endDateTime",dataList[0].createTime);
httpRequest.start(true);
Feng.error("删除日志失败!" + data.message + "!");
}).set(setData).start(true);
};
Feng.confirm("是否删除?", deleteLog);
Feng.confirm("是否删除日志?", operation);
};
// 渲染时间选择框
laydate.render({
elem: '#createTime'
elem: '#beginDate'
});
//渲染时间选择框
laydate.render({
elem: '#endDate'
});
// 渲染表格
@ -111,18 +118,23 @@ layui.use(['HttpRequest', 'treeTable', 'laydate', 'func' ,'form'], function () {
Log.search();
});
//点击清空日志事件
// 清空按钮点击事件
$('#btnClean').click(function () {
Log.cleanLog();
});
// 工具条点击事件
// 导出excel
$('#btnExp').click(function () {
Log.exportExcel();
});
//工具条点击事件
table.on('tool(' + Log.tableId + ')', function (obj) {
var data = obj.data;
var layEvent = obj.event;
if (layEvent === 'detail') {
Log.logDetail(data);
Log.openDetailDlg(data);
}
});
});

View File

@ -0,0 +1,10 @@
layui.use(['form', 'HttpRequest'], function () {
var form = layui.form;
var HttpRequest = layui.HttpRequest;
//获取信息详情填充表单
var request = new HttpRequest(Feng.ctxPath + "/logManager/detail?logId=" + Feng.getUrlParam("logId"), 'get');
var result = request.start();
form.val('logForm', result.data);
});

View File

@ -1,7 +1,6 @@
layui.use(['layer', 'table', 'ax', 'laydate'], function () {
layui.use(['layer', 'table', 'HttpRequest', 'laydate'], function () {
var $ = layui.$;
var $ax = layui.ax;
var layer = layui.layer;
var HttpRequest = layui.HttpRequest;
var table = layui.table;
var laydate = layui.laydate;
@ -18,12 +17,13 @@ layui.use(['layer', 'table', 'ax', 'laydate'], function () {
LoginLog.initColumn = function () {
return [[
{type: 'checkbox'},
{field: 'menuId', hide: true, sort: true, title: 'id'},
{field: 'logName', align: "center", sort: true, title: '日志名称'},
{field: 'userName', align: "center", sort: true, title: '用户名称'},
{field: 'menuId', hide: true, sort: true, title: 'id'},
{field: 'userId', align: "center", sort: true, title: '用户名'},
{field: 'llgName', align: "center", sort: true, title: '日志名称'},
{field: 'llgSucceed', align: "center", sort: true, title: '执行结果'},
{field: 'createTime', align: "center", sort: true, title: '时间'},
{field: 'regularMessage', align: "center", sort: true, title: '具体消息'},
{field: 'ipAddress', align: "center", sort: true, title: 'ip'}
{field: 'llgMessage', align: "center", sort: true, title: '具体消息'},
{field: 'llgIpAddress', align: "center", sort: true, title: 'IP'}
]];
};
@ -34,7 +34,9 @@ layui.use(['layer', 'table', 'ax', 'laydate'], function () {
var queryData = {};
queryData['beginTime'] = $("#beginTime").val();
queryData['endTime'] = $("#endTime").val();
queryData['logName'] = $("#logName").val();
queryData['llgName'] = $("#llgName").val();
console.log(queryData);
table.reload(LoginLog.tableId, {
where: queryData, page: {curr: 1}
});
@ -54,15 +56,16 @@ layui.use(['layer', 'table', 'ax', 'laydate'], function () {
//清空日志
LoginLog.cleanLog = function () {
Feng.confirm("是否清空所有日志?", function () {
var ajax = new $ax(Feng.ctxPath + "/loginLog/delLoginLog", function (data) {
var operation = function () {
new HttpRequest(Feng.ctxPath + '/loginLog/deleteAll', 'get', function (data) {
Feng.success("清空日志成功!");
LoginLog.search();
table.reload(LoginLog.tableId);
}, function (data) {
Feng.error("清空日志失败!");
});
ajax.start();
});
Feng.error("清空日志失败!" + data.message + "!");
}).start();
};
Feng.confirm("是否清空所有日志?", operation);
};
//渲染时间选择框
@ -78,11 +81,12 @@ layui.use(['layer', 'table', 'ax', 'laydate'], function () {
// 渲染表格
var tableResult = table.render({
elem: '#' + LoginLog.tableId,
url: Feng.ctxPath + '/loginLog/list',
url: Feng.ctxPath + '/loginLog/page',
page: true,
height: "full-98",
cellMinWidth: 100,
cols: LoginLog.initColumn()
cols: LoginLog.initColumn(),
parseData: Feng.parseData
});
// 搜索按钮点击事件
@ -90,7 +94,7 @@ layui.use(['layer', 'table', 'ax', 'laydate'], function () {
LoginLog.search();
});
// 搜索按钮点击事件
// 清空按钮点击事件
$('#btnClean').click(function () {
LoginLog.cleanLog();
});

View File

@ -12,25 +12,20 @@
<div class="layui-form toolbar">
<div class="layui-form-item">
<div class="layui-inline">
<input id="beginTime" class="layui-input" type="text" placeholder="开始时间"/>
<input id="beginDate" class="layui-input" type="text" placeholder="开始时间"/>
</div>
<div class="layui-inline">
<input id="endTime" class="layui-input" type="text" placeholder="结束时间"/>
<input id="endDate" class="layui-input" type="text" placeholder="结束时间"/>
</div>
<div class="layui-inline">
<input id="appName" class="layui-input" type="text" placeholder="服务名称"/>
</div>
<div class="layui-inline">
<input id="logName" class="layui-input" type="text" placeholder="日志名称"/>
</div>
<!-- <div class="layui-inline">
<select id="logType">
<option value="">类型</option>
<option value="0">全部</option>
<option value="1">业务日志</option>
<option value="2">异常日志</option>
</select>
</div>-->
<div class="layui-inline">
<button id="btnSearch" class="layui-btn icon-btn"><i class="layui-icon">&#xe615;</i>搜索</button>
<button id="btnExp" class="layui-btn icon-btn"><i class="layui-icon">&#xe67d;</i>导出</button>
<button id="btnClean" class="layui-btn icon-btn layui-btn-danger"><i class="layui-icon">&#xe67d;</i>清空日志</button>
</div>
</div>
@ -43,7 +38,7 @@
</div>
<script type="text/html" id="tableBar">
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看详情</a>
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">详情</a>
</script>
@}

View File

@ -1,125 +1,99 @@
@layout("/layout/_container.html",{js:["/assets/modular/system/log/log_deatil.js"]}){
@layout("/layout/_form.html",{js:["/assets/modular/system/log/log_detail.js"]}){
<div class="layui-body-header">
<span class="layui-body-header-title">日志详情</span>
</div>
<form class="layui-form" id="sysLogForm" lay-filter="sysLogForm">
<div class="layui-fluid">
<div class="layui-row layui-col-space15">
<div class="layui-col-sm12 layui-col-md12 layui-col-lg12">
<div class="layui-card">
<div class="layui-card-body">
<div class="layui-form-item layui-row">
<input name="logId" type="hidden" disabled readonly class="layui-input layui-disabled"/>
<div class="layui-inline layui-col-md12">
<label class="layui-form-label">日志名称</label>
<div class="layui-input-block">
<input name="logName" type="text" disabled readonly class="layui-input layui-disabled"/>
</div>
</div>
<div class="layui-inline layui-col-md12">
<label class="layui-form-label">具体内容</label>
<div class="layui-input-block">
<input name="logContent" type="text" disabled readonly class="layui-input layui-disabled"/>
</div>
</div>
<div class="layui-inline layui-col-md12">
<label class="layui-form-label">服务器名称</label>
<div class="layui-input-block">
<input name="appName" placeholder="资源名称" type="text" disabled readonly class="layui-input layui-disabled"/>
</div>
</div>
<div class="layui-inline layui-col-md12">
<label class="layui-form-label">请求地址</label>
<div class="layui-input-block">
<input name="requestUrl" type="text" disabled readonly class="layui-input layui-disabled"/>
</div>
</div>
<div class="layui-inline layui-col-md12">
<label class="layui-form-label">请求参数</label>
<div class="layui-input-block">
<input name="requestParams" type="text" disabled readonly class="layui-input layui-disabled"/>
</div>
</div>
<div class="layui-inline layui-col-md12">
<label class="layui-form-label">返回参数</label>
<div class="layui-input-block">
<input name="requestResult" type="text" disabled readonly class="layui-input layui-disabled"/>
</div>
</div>
<div class="layui-inline layui-col-md12">
<label class="layui-form-label">当前服务IP</label>
<div class="layui-input-block">
<input name="serverIp" type="text" disabled readonly class="layui-input layui-disabled"/>
</div>
</div>
<div class="layui-inline layui-col-md12">
<label class="layui-form-label">请求服务器IP</label>
<div class="layui-input-block">
<input name="clientIp" type="text" disabled readonly class="layui-input layui-disabled"/>
</div>
</div>
<div class="layui-inline layui-col-md12">
<label class="layui-form-label">用户ID</label>
<div class="layui-input-block">
<input name="userId" type="text" disabled readonly class="layui-input layui-disabled"/>
</div>
</div>
<div class="layui-inline layui-col-md12">
<label class="layui-form-label">请求Http方式</label>
<div class="layui-input-block">
<input name="httpMethod" type="text" disabled readonly class="layui-input layui-disabled"/>
</div>
</div>
<div class="layui-inline layui-col-md12">
<label class="layui-form-label">浏览器标识</label>
<div class="layui-input-block">
<input name="clientBrowser" type="text" disabled readonly class="layui-input layui-disabled"/>
</div>
</div>
<div class="layui-inline layui-col-md12">
<label class="layui-form-label">客户操作系统</label>
<div class="layui-input-block">
<input name="clientOs" type="text" disabled readonly class="layui-input layui-disabled"/>
</div>
</div>
<div class="layui-inline layui-col-md12">
<label class="layui-form-label">创建时间</label>
<div class="layui-input-block">
<input name="createTime" type="text" disabled readonly class="layui-input layui-disabled"/>
</div>
</div>
<div class="layui-inline layui-col-md12">
<label class="layui-form-label">创建人</label>
<div class="layui-input-block">
<input name="createUser" type="text" disabled readonly class="layui-input layui-disabled"/>
</div>
</div>
<form class="layui-form" id="organizationForm" lay-filter="logForm">
<div class="layui-fluid" style="padding-bottom: 75px;">
<div class="layui-card">
<div class="layui-card-body">
<div class="layui-form-item layui-row">
<input name="logId" type="hidden"/>
<div class="layui-inline layui-col-md6">
<label class="layui-form-label">服务名称</label>
<div class="layui-input-block">
<input id="appName" name="appName" placeholder="" type="text" class="layui-input"/>
</div>
</div>
<div class="layui-inline layui-col-md6">
<label class="layui-form-label">日志名称</label>
<div class="layui-input-block">
<input id="logName" name="logName" placeholder="" type="text" class="layui-input"/>
</div>
</div>
<div class="layui-inline layui-col-md6">
<label class="layui-form-label">日志内容</label>
<div class="layui-input-block">
<input id="logContent" name="logContent" placeholder="" type="text" class="layui-input"/>
</div>
</div>
<div class="layui-inline layui-col-md6">
<label class="layui-form-label">日志时间</label>
<div class="layui-input-block">
<input id="createTime" name="createTime" placeholder="" type="text" class="layui-input"/>
</div>
</div>
<div class="layui-inline layui-col-md6">
<label class="layui-form-label">请求地址</label>
<div class="layui-input-block">
<input id="requestUrl" name="requestUrl" placeholder="" type="text" class="layui-input"/>
</div>
</div>
<div class="layui-inline layui-col-md6">
<label class="layui-form-label">请求方式</label>
<div class="layui-input-block">
<input id="httpMethod" name="httpMethod" placeholder="" type="text" class="layui-input"/>
</div>
</div>
<div class="layui-inline layui-col-md12">
<label class="layui-form-label">请求参数</label>
<div class="layui-input-block">
<textarea id="requestParams" name="requestParams" placeholder="" class="layui-textarea"></textarea>
</div>
</div>
<div class="layui-inline layui-col-md12">
<label class="layui-form-label">返回结果</label>
<div class="layui-input-block">
<textarea id="requestResult" name="requestResult" placeholder="" class="layui-textarea"></textarea>
</div>
</div>
<div class="layui-inline layui-col-md6">
<label class="layui-form-label">服务IP</label>
<div class="layui-input-block">
<input id="serverIp" name="serverIp" placeholder="" type="text" class="layui-input"/>
</div>
</div>
<div class="layui-inline layui-col-md6">
<label class="layui-form-label">客户端IP</label>
<div class="layui-input-block">
<input id="clientIp" name="clientIp" placeholder="" type="text" class="layui-input"/>
</div>
</div>
<div class="layui-inline layui-col-md6">
<label class="layui-form-label">用户名称</label>
<div class="layui-input-block">
<input id="userId" name="userId" placeholder="" type="text" class="layui-input"/>
</div>
</div>
<div class="layui-inline layui-col-md6">
<label class="layui-form-label">浏览器</label>
<div class="layui-input-block">
<input id="clientBrowser" name="clientBrowser" placeholder="" type="text" class="layui-input"/>
</div>
</div>
<div class="layui-inline layui-col-md6">
<label class="layui-form-label">操作系统</label>
<div class="layui-input-block">
<input id="clientOs" name="clientOs" placeholder="" type="text" class="layui-input"/>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="form-group-bottom text-center">
<button type="reset" class="layui-btn layui-btn-primary" ew-event="closeDialog">&emsp;关闭&emsp;</button>
</div>
</form>
<div class="form-group-bottom text-center" style="z-index: 200">
<button type="reset" class="layui-btn layui-btn-primary" ew-event="closeDialog">&emsp;关闭&emsp;</button>
</div>
@}

View File

@ -18,7 +18,7 @@
<input id="endTime" class="layui-input" type="text" placeholder="结束时间"/>
</div>
<div class="layui-inline">
<input id="logName" class="layui-input" type="text" placeholder="日志名称"/>
<input id="llgName" class="layui-input" type="text" placeholder="日志名称"/>
</div>
<div class="layui-inline">
<button id="btnSearch" class="layui-btn icon-btn"><i class="layui-icon">&#xe615;</i>搜索</button>
@ -32,4 +32,7 @@
</div>
</div>
</div>
<!--<script type="text/html" id="tableBar">-->
<!-- <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">详情</a>-->
<!--</script>-->
@}