fajiao
2 years ago
8 changed files with 822 additions and 0 deletions
@ -0,0 +1,45 @@ |
|||||
|
@{ |
||||
|
ViewBag.Title = "清空日志"; |
||||
|
Layout = "~/Views/Shared/_Form.cshtml"; |
||||
|
} |
||||
|
<div class="lr-form-wrap" id="form"> |
||||
|
<div class="col-xs-12 lr-form-item"> |
||||
|
<div class="lr-form-item-title">日志保留时间</div> |
||||
|
<div id="keepTime"> |
||||
|
<ul> |
||||
|
<li data-value="7">保留近一周</li> |
||||
|
<li data-value="1">保留近一个月</li> |
||||
|
<li data-value="3">保留近三个月</li> |
||||
|
<li data-value="0">不保留,全部删除</li> |
||||
|
</ul> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<script> |
||||
|
var categoryId = request('categoryId'); |
||||
|
var acceptClick; |
||||
|
var bootstrap = function ($, learun) { |
||||
|
"use strict"; |
||||
|
|
||||
|
var page = { |
||||
|
init: function () { |
||||
|
$('#keepTime').lrselect({maxHeight:75,placeholder:false}).lrselectSet(7); |
||||
|
} |
||||
|
}; |
||||
|
// 保存数据 |
||||
|
acceptClick = function (callBack) { |
||||
|
if (!$('#form').lrValidform()) { |
||||
|
return false; |
||||
|
} |
||||
|
var postData = $('#form').lrGetFormData(); |
||||
|
postData['categoryId'] = categoryId; |
||||
|
$.lrSaveForm(top.$.rootUrl + '/LR_SystemModule/Log/SaveRemoveLog', postData, function (res) { |
||||
|
// 保存成功后才回调 |
||||
|
if (!!callBack) { |
||||
|
callBack(); |
||||
|
} |
||||
|
}); |
||||
|
}; |
||||
|
page.init(); |
||||
|
} |
||||
|
</script> |
@ -0,0 +1,196 @@ |
|||||
|
@{ |
||||
|
ViewBag.Title = "日志管理"; |
||||
|
Layout = "~/Views/Shared/_Index.cshtml"; |
||||
|
} |
||||
|
<div id="lr_layout" class="lr-layout lr-layout-left-center"> |
||||
|
<div class="lr-layout-left"> |
||||
|
<div class="lr-layout-wrap lr-layout-wrap-notitle" style="padding-top:10px;"> |
||||
|
<div class="lr-layout-body"> |
||||
|
<ul class="lr-left-list" id="lr_left_list"> |
||||
|
<li class="active lrlg" data-value="1">登录日志</li> |
||||
|
<li data-value="2" class="lrlg" >访问日志</li> |
||||
|
<li data-value="3" class="lrlg" >操作日志</li> |
||||
|
<li data-value="4" class="lrlg" >异常日志</li> |
||||
|
</ul> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="lr-layout-center"> |
||||
|
<div class="lr-layout-wrap lr-layout-wrap-notitle"> |
||||
|
<div class="lr-layout-tool"> |
||||
|
<div class="lr-layout-tool-left"> |
||||
|
<div class="lr-layout-tool-item"> |
||||
|
<div id="datesearch" class="datetime"></div> |
||||
|
</div> |
||||
|
<div class="lr-layout-tool-item"> |
||||
|
<input id="txt_Keyword" type="text" class="form-control" placeholder="请输入要查询关键字" /> |
||||
|
</div> |
||||
|
<div class="lr-layout-tool-item"> |
||||
|
<a id="btn_Search" class="btn btn-primary btn-sm"><i class="fa fa-search"></i> <span class="lrlg">查询</span></a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="lr-layout-tool-right"> |
||||
|
<div class=" btn-group btn-group-sm"> |
||||
|
<a id="lr_refresh" class="btn btn-default"><i class="fa fa-refresh"></i></a> |
||||
|
</div> |
||||
|
<div class=" btn-group btn-group-sm" learun-authorize="yes"> |
||||
|
<a id="lr_removelog" class="btn btn-default"><i class="fa fa-eraser"></i> <span class="lrlg">清空</span></a> |
||||
|
<a id="lr_export" class="btn btn-default"><i class="fa fa-sign-out"></i> <span class="lrlg">导出</span></a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="lr-layout-body" id="gridtable"> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<script> |
||||
|
var bootstrap = function ($, learun) { |
||||
|
"use strict"; |
||||
|
var categoryId = '1'; |
||||
|
var logbegin = ''; |
||||
|
var logend = ''; |
||||
|
|
||||
|
var refreshGirdData = function () { |
||||
|
$('#gridtable').jfGridSet('reload'); |
||||
|
} |
||||
|
|
||||
|
var page = { |
||||
|
init: function () { |
||||
|
page.initleft(); |
||||
|
page.initGrid(); |
||||
|
page.bind(); |
||||
|
}, |
||||
|
bind: function () { |
||||
|
$('.datetime').each(function () { |
||||
|
$(this).lrdate({ |
||||
|
dfdata: [ |
||||
|
{ name: '今天', begin: function () { return learun.getDate('yyyy-MM-dd 00:00:00') }, end: function () { return learun.getDate('yyyy-MM-dd 23:59:59') } }, |
||||
|
{ name: '近7天', begin: function () { return learun.getDate('yyyy-MM-dd 00:00:00', 'd', -6) }, end: function () { return learun.getDate('yyyy-MM-dd 23:59:59') } }, |
||||
|
{ name: '近1个月', begin: function () { return learun.getDate('yyyy-MM-dd 00:00:00', 'm', -1) }, end: function () { return learun.getDate('yyyy-MM-dd 23:59:59') } }, |
||||
|
{ name: '近3个月', begin: function () { return learun.getDate('yyyy-MM-dd 00:00:00', 'm', -3) }, end: function () { return learun.getDate('yyyy-MM-dd 23:59:59') } }, |
||||
|
], |
||||
|
// 月 |
||||
|
mShow: false, |
||||
|
premShow: false, |
||||
|
// 季度 |
||||
|
jShow: false, |
||||
|
prejShow: false, |
||||
|
// 年 |
||||
|
ysShow: false, |
||||
|
yxShow: false, |
||||
|
preyShow: false, |
||||
|
yShow: false, |
||||
|
// 默认 |
||||
|
dfvalue: '1', |
||||
|
selectfn: function (begin, end) { |
||||
|
logbegin = begin; |
||||
|
logend = end; |
||||
|
page.search(); |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
// 查询 |
||||
|
$('#btn_Search').on('click', function () { |
||||
|
var keyword = $('#txt_Keyword').val(); |
||||
|
page.search({ keyword: keyword }); |
||||
|
}); |
||||
|
// 刷新 |
||||
|
$('#lr_refresh').on('click', function () { |
||||
|
location.reload(); |
||||
|
}); |
||||
|
// 清空 |
||||
|
$('#lr_removelog').on('click', function () { |
||||
|
learun.layerForm({ |
||||
|
id: 'form', |
||||
|
title: '清空', |
||||
|
url: top.$.rootUrl + '/LR_SystemModule/Log/Form?categoryId=' + categoryId, |
||||
|
height: 200, |
||||
|
width: 400, |
||||
|
callBack: function (id) { |
||||
|
return top[id].acceptClick(refreshGirdData); |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
// 导出 |
||||
|
$('#lr_export').on('click', function () { |
||||
|
learun.layerForm({ |
||||
|
id: "ExcelExportForm", |
||||
|
title: '导出Excel数据', |
||||
|
url: top.$.rootUrl + '/Utility/ExcelExportForm?gridId=gridtable', |
||||
|
width: 500, |
||||
|
height: 380, |
||||
|
callBack: function (id) { |
||||
|
return top[id].acceptClick(); |
||||
|
}, |
||||
|
btn: ['导出Excel', '关闭'] |
||||
|
}); |
||||
|
}); |
||||
|
}, |
||||
|
initleft: function () { |
||||
|
$('#lr_left_list li').on('click', function () { |
||||
|
var $this = $(this); |
||||
|
var $parent = $this.parent(); |
||||
|
$parent.find('.active').removeClass('active'); |
||||
|
$this.addClass('active'); |
||||
|
|
||||
|
categoryId = $this.attr('data-value'); |
||||
|
page.search(); |
||||
|
}); |
||||
|
}, |
||||
|
initGrid: function () { |
||||
|
$('#gridtable').jfGrid({ |
||||
|
url: top.$.rootUrl + '/LR_SystemModule/Log/GetPageList', |
||||
|
headData: [ |
||||
|
{ |
||||
|
label: "操作时间", name: "F_OperateTime",width: 135, align: "left", |
||||
|
formatter: function (cellvalue) { |
||||
|
return learun.formatDate(cellvalue, 'yyyy-MM-dd hh:mm:ss'); |
||||
|
} |
||||
|
}, |
||||
|
{ label: "操作用户", name: "F_OperateAccount",width: 80, align: "center" }, |
||||
|
{ |
||||
|
label: "IP地址", name: "F_IPAddress", width: 100, align: "left", |
||||
|
formatter: function (cellvalue) { |
||||
|
if (cellvalue == '::1') { |
||||
|
return "本地"; |
||||
|
} else { |
||||
|
return cellvalue; |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
{ label: "系统功能", name: "F_Module", width: 160, align: "left" }, |
||||
|
{ label: "操作类型", name: "F_OperateType", width: 65, align: "center" }, |
||||
|
{ |
||||
|
label: "执行结果", name: "F_ExecuteResult", width: 65, align: "center", |
||||
|
formatter: function (cellvalue) { |
||||
|
if (cellvalue == '1') { |
||||
|
return "<span class=\"label label-success\">成功</span>"; |
||||
|
} else { |
||||
|
return "<span class=\"label label-danger\">失败</span>"; |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
{ label: "执行结果描述", name: "F_ExecuteResultJson", width: 300, align: "left" } |
||||
|
|
||||
|
], |
||||
|
|
||||
|
mainId: 'F_ItemDetailId', |
||||
|
isPage: true, |
||||
|
rows:200, |
||||
|
sidx: 'F_OperateTime DESC' |
||||
|
}); |
||||
|
}, |
||||
|
search: function (param) { |
||||
|
param = param || {}; |
||||
|
param.CategoryId = categoryId; |
||||
|
param.StartTime = logbegin; |
||||
|
param.EndTime = logend; |
||||
|
|
||||
|
$('#gridtable').jfGridSet('reload', { queryJson: JSON.stringify(param) }); |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
page.init(); |
||||
|
} |
||||
|
</script> |
@ -0,0 +1,78 @@ |
|||||
|
using learun.iapplication; |
||||
|
using learun.util; |
||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Text; |
||||
|
using System.Threading.Tasks; |
||||
|
|
||||
|
namespace learun.application |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 版 本 EasyCode EC管理后台
|
||||
|
/// Copyright (c) 2019-present EC管理有限公司
|
||||
|
/// 创建人:tobin
|
||||
|
/// 日 期:2019.09.25
|
||||
|
/// 描 述:系统日志
|
||||
|
/// </summary>
|
||||
|
public class LogBLL : LogIBLL |
||||
|
{ |
||||
|
private readonly LogService service = new LogService(); |
||||
|
|
||||
|
#region 获取数据
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 日志列表
|
||||
|
/// </summary>
|
||||
|
/// <param name="pagination">分页</param>
|
||||
|
/// <param name="queryJson">查询参数</param>
|
||||
|
/// <param name="userId">用户主键</param>
|
||||
|
/// <returns></returns>
|
||||
|
public Task<IEnumerable<LogEntity>> GetPageList(Pagination pagination, string queryJson, string userId) |
||||
|
{ |
||||
|
return service.GetPageList(pagination, queryJson, userId); |
||||
|
} |
||||
|
|
||||
|
#endregion 获取数据
|
||||
|
|
||||
|
#region 提交数据
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 清空日志
|
||||
|
/// </summary>
|
||||
|
/// <param name="categoryId">日志分类Id</param>
|
||||
|
/// <param name="keepTime">保留时间段内</param>
|
||||
|
public async Task Remove(int categoryId, string keepTime) |
||||
|
{ |
||||
|
await service.Remove(categoryId, keepTime); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 写日志
|
||||
|
/// </summary>
|
||||
|
/// <param name="logEntity">对象</param>
|
||||
|
public async Task Write(LogEntity logEntity) |
||||
|
{ |
||||
|
await service.Write(logEntity); |
||||
|
} |
||||
|
|
||||
|
#endregion 提交数据
|
||||
|
|
||||
|
#region 扩展方法
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 生成异常信息
|
||||
|
/// </summary>
|
||||
|
/// <param name="ex">异常对象</param>
|
||||
|
/// <returns></returns>
|
||||
|
public string ExceptionFormat(Exception ex) |
||||
|
{ |
||||
|
StringBuilder strInfo = new StringBuilder(); |
||||
|
strInfo.Append("1. 异常: " + ex.Message + "\r\n"); |
||||
|
strInfo.Append("2. 来源: " + ex.Source + "\r\n"); |
||||
|
strInfo.Append("3. 实例: " + ex.StackTrace + "\r\n"); |
||||
|
return strInfo.ToString(); |
||||
|
} |
||||
|
|
||||
|
#endregion 扩展方法
|
||||
|
} |
||||
|
} |
@ -0,0 +1,146 @@ |
|||||
|
using learun.iapplication; |
||||
|
using learun.util; |
||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Text; |
||||
|
using System.Threading.Tasks; |
||||
|
|
||||
|
namespace learun.application |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 版 本 EasyCode EC管理后台
|
||||
|
/// Copyright (c) 2019-present EC管理有限公司
|
||||
|
/// 创建人:tobin
|
||||
|
/// 日 期:2019.09.25
|
||||
|
/// 描 述:系统日志数据库服务类
|
||||
|
/// </summary>
|
||||
|
public class LogService : ServiceBase |
||||
|
{ |
||||
|
#region 获取数据
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 日志列表
|
||||
|
/// </summary>
|
||||
|
/// <param name="pagination">分页</param>
|
||||
|
/// <param name="queryJson">查询参数</param>
|
||||
|
/// <param name="userId">操作用户Id</param>
|
||||
|
/// <returns></returns>
|
||||
|
public Task<IEnumerable<LogEntity>> GetPageList(Pagination pagination, string queryJson, string userId) |
||||
|
{ |
||||
|
var strSql = new StringBuilder(); |
||||
|
strSql.Append("SELECT * FROM lr_base_log t WHERE 1=1"); |
||||
|
var queryParam = queryJson.ToJObject(); |
||||
|
|
||||
|
int categoryId = 0; |
||||
|
DateTime startTime = DateTime.Now; |
||||
|
DateTime endTime = DateTime.Now; |
||||
|
string operateUserId = null; |
||||
|
string operateAccount = null; |
||||
|
string operateType = null; |
||||
|
string module = null; |
||||
|
string keyword = null; |
||||
|
// 日志分类
|
||||
|
if (!queryParam["CategoryId"].IsEmpty()) |
||||
|
{ |
||||
|
categoryId = queryParam["CategoryId"].ToInt(); |
||||
|
strSql.Append(" AND F_CategoryId = @categoryId "); |
||||
|
} |
||||
|
// 操作时间
|
||||
|
if (!queryParam["StartTime"].IsEmpty() && !queryParam["EndTime"].IsEmpty()) |
||||
|
{ |
||||
|
startTime = queryParam["StartTime"].ToDate(); |
||||
|
endTime = queryParam["EndTime"].ToDate(); |
||||
|
strSql.Append(" AND( F_OperateTime >= @startTime AND F_OperateTime <= @endTime )"); |
||||
|
} |
||||
|
// 操作用户Id
|
||||
|
if (!queryParam["OperateUserId"].IsEmpty()) |
||||
|
{ |
||||
|
operateUserId = queryParam["OperateUserId"].ToString(); |
||||
|
strSql.Append(" AND F_OperateUserId = @operateUserId "); |
||||
|
} |
||||
|
// 操作用户账户
|
||||
|
if (!queryParam["OperateAccount"].IsEmpty()) |
||||
|
{ |
||||
|
operateAccount = "%" + queryParam["OperateAccount"].ToString() + "%"; |
||||
|
strSql.Append(" AND F_OperateAccount like @operateAccount "); |
||||
|
} |
||||
|
// 操作类型
|
||||
|
if (!queryParam["OperateType"].IsEmpty()) |
||||
|
{ |
||||
|
operateType = queryParam["OperateType"].ToString(); |
||||
|
strSql.Append(" AND F_OperateType = @operateType "); |
||||
|
} |
||||
|
// 功能模块
|
||||
|
if (!queryParam["Module"].IsEmpty()) |
||||
|
{ |
||||
|
module = queryParam["Module"].ToString(); |
||||
|
strSql.Append(" AND F_Module = @module "); |
||||
|
} |
||||
|
// 登录用户id
|
||||
|
if (!string.IsNullOrEmpty(userId)) |
||||
|
{ |
||||
|
strSql.Append(" AND F_OperateUserId = @userId "); |
||||
|
} |
||||
|
// 关键字
|
||||
|
if (!queryParam["keyword"].IsEmpty()) |
||||
|
{ |
||||
|
keyword = "%" + queryParam["keyword"] + "%"; |
||||
|
strSql.Append(" AND (F_Module like @keyword || F_OperateType like @keyword || F_IPAddress like @keyword )"); |
||||
|
} |
||||
|
return BaseRepository().FindList<LogEntity>(strSql.ToString(), new { categoryId, startTime, endTime, operateUserId, operateAccount, operateType, module, userId, keyword }, pagination); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 日志实体
|
||||
|
/// </summary>
|
||||
|
/// <param name="keyValue">主键值</param>
|
||||
|
/// <returns></returns>
|
||||
|
public Task<LogEntity> GetEntity(string keyValue) |
||||
|
{ |
||||
|
return BaseRepository().FindEntity<LogEntity>(keyValue); |
||||
|
} |
||||
|
|
||||
|
#endregion 获取数据
|
||||
|
|
||||
|
#region 提交数据
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 清空日志
|
||||
|
/// </summary>
|
||||
|
/// <param name="categoryId">日志分类Id</param>
|
||||
|
/// <param name="keepTime">保留时间段内</param>
|
||||
|
public async Task Remove(int categoryId, string keepTime) |
||||
|
{ |
||||
|
DateTime operateTime = DateTime.Now; |
||||
|
if (keepTime == "7")//保留近一周
|
||||
|
{ |
||||
|
operateTime = DateTime.Now.AddDays(-7); |
||||
|
} |
||||
|
else if (keepTime == "1")//保留近一个月
|
||||
|
{ |
||||
|
operateTime = DateTime.Now.AddMonths(-1); |
||||
|
} |
||||
|
else if (keepTime == "3")//保留近三个月
|
||||
|
{ |
||||
|
operateTime = DateTime.Now.AddMonths(-3); |
||||
|
} |
||||
|
|
||||
|
await BaseRepository().ExecuteSql(" Delete From lr_base_log where F_CategoryId = @categoryId AND F_OperateTime <= @operateTime ", new { categoryId, operateTime }); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 写日志
|
||||
|
/// </summary>
|
||||
|
/// <param name="logEntity">对象</param>
|
||||
|
public async Task Write(LogEntity logEntity) |
||||
|
{ |
||||
|
logEntity.F_LogId = Guid.NewGuid().ToString(); |
||||
|
logEntity.F_OperateTime = DateTime.Now; |
||||
|
logEntity.F_DeleteMark = 0; |
||||
|
logEntity.F_EnabledMark = 1; |
||||
|
await BaseRepository().Insert(logEntity); |
||||
|
} |
||||
|
|
||||
|
#endregion 提交数据
|
||||
|
} |
||||
|
} |
@ -0,0 +1,70 @@ |
|||||
|
using ce.autofac.extension; |
||||
|
using learun.iapplication; |
||||
|
using learun.util; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Threading.Tasks; |
||||
|
|
||||
|
namespace learun.application |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 版 本 EasyCode EC管理后台
|
||||
|
/// Copyright (c) 2019-present EC管理有限公司
|
||||
|
/// 创建人:tobin
|
||||
|
/// 日 期:2019.11.01
|
||||
|
/// 描 述:任务执行日志
|
||||
|
/// </summary>
|
||||
|
public class TSLogBLL : BLLBase, TSLogIBLL, BLL |
||||
|
{ |
||||
|
private readonly TSLogService logService = new TSLogService(); |
||||
|
|
||||
|
#region 获取数据
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 获取页面显示列表数据
|
||||
|
/// </summary>
|
||||
|
/// <param name="pagination">分页参数</param>
|
||||
|
/// <param name="queryJson">查询参数</param>
|
||||
|
/// <returns></returns>
|
||||
|
public Task<IEnumerable<TSLogEntity>> GetPageList(Pagination pagination, string queryJson) |
||||
|
{ |
||||
|
return logService.GetPageList(pagination, queryJson); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 获取LR_TS_Log表实体数据
|
||||
|
/// </summary>
|
||||
|
/// <param name="keyValue">主键</param>
|
||||
|
/// <returns></returns>
|
||||
|
public Task<TSLogEntity> GetLogEntity(string keyValue) |
||||
|
{ |
||||
|
return logService.GetLogEntity(keyValue); |
||||
|
} |
||||
|
|
||||
|
#endregion 获取数据
|
||||
|
|
||||
|
#region 提交数据
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 删除实体数据
|
||||
|
/// </summary>
|
||||
|
/// <param name="keyValue">主键</param>
|
||||
|
/// <returns></returns>
|
||||
|
public async Task DeleteEntity(string keyValue) |
||||
|
{ |
||||
|
await logService.DeleteEntity(keyValue); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 保存实体数据(新增、修改)
|
||||
|
/// </summary>
|
||||
|
/// <param name="keyValue">主键</param>
|
||||
|
/// <param name="entity">实体</param>
|
||||
|
/// <returns></returns>
|
||||
|
public async Task SaveEntity(string keyValue, TSLogEntity entity) |
||||
|
{ |
||||
|
await logService.SaveEntity(keyValue, entity); |
||||
|
} |
||||
|
|
||||
|
#endregion 提交数据
|
||||
|
} |
||||
|
} |
@ -0,0 +1,113 @@ |
|||||
|
using learun.iapplication; |
||||
|
using learun.util; |
||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Text; |
||||
|
using System.Threading.Tasks; |
||||
|
|
||||
|
namespace learun.application |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 版 本 EasyCode EC管理后台
|
||||
|
/// Copyright (c) 2019-present EC管理有限公司
|
||||
|
/// 创建人:tobin
|
||||
|
/// 日 期:2019.11.01
|
||||
|
/// 描 述:任务执行日志
|
||||
|
/// </summary>
|
||||
|
public class TSLogService : ServiceBase |
||||
|
{ |
||||
|
#region 获取数据
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 获取页面显示列表数据
|
||||
|
/// </summary>
|
||||
|
/// <param name="pagination">分页参数</param>
|
||||
|
/// <param name="queryJson">查询参数</param>
|
||||
|
/// <returns></returns>
|
||||
|
public Task<IEnumerable<TSLogEntity>> GetPageList(Pagination pagination, string queryJson) |
||||
|
{ |
||||
|
var strSql = new StringBuilder(); |
||||
|
strSql.Append(@"
|
||||
|
SELECT |
||||
|
t.F_Id, |
||||
|
t.F_Name, |
||||
|
t.F_ExecuteResult, |
||||
|
t.F_CreateDate, |
||||
|
t.F_Des |
||||
|
FROM |
||||
|
LR_TS_Log t |
||||
|
");
|
||||
|
strSql.Append(" WHERE 1=1 "); |
||||
|
var queryParam = queryJson.ToJObject(); |
||||
|
|
||||
|
DateTime startTime = DateTime.Now, endTime = DateTime.Now; |
||||
|
if (!queryParam["StartTime"].IsEmpty() && !queryParam["EndTime"].IsEmpty()) |
||||
|
{ |
||||
|
startTime = queryParam["StartTime"].ToDate(); |
||||
|
endTime = queryParam["EndTime"].ToDate(); |
||||
|
strSql.Append(" AND ( t.F_CreateDate >= @startTime AND t.F_CreateDate <= @endTime ) "); |
||||
|
} |
||||
|
string keyword = ""; |
||||
|
if (!queryParam["keyword"].IsEmpty()) |
||||
|
{ |
||||
|
keyword = "%" + queryParam["keyword"].ToString() + "%"; |
||||
|
strSql.Append(" AND ( t.F_Name like @keyword ) "); |
||||
|
} |
||||
|
int executeResult = 1; |
||||
|
if (!queryParam["executeResult"].IsEmpty()) |
||||
|
{ |
||||
|
executeResult = Convert.ToInt32(queryParam["executeResult"].ToString()); |
||||
|
strSql.Append(" AND t.F_ExecuteResult = @executeResult "); |
||||
|
} |
||||
|
|
||||
|
return this.BaseRepository().FindList<TSLogEntity>(strSql.ToString(), new { startTime, endTime, keyword, executeResult }, pagination); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 获取LR_TS_Log表实体数据
|
||||
|
/// </summary>
|
||||
|
/// <param name="keyValue">主键</param>
|
||||
|
/// <returns></returns>
|
||||
|
public Task<TSLogEntity> GetLogEntity(string keyValue) |
||||
|
{ |
||||
|
return this.BaseRepository().FindEntityByKey<TSLogEntity>(keyValue); |
||||
|
} |
||||
|
|
||||
|
#endregion 获取数据
|
||||
|
|
||||
|
#region 提交数据
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 删除实体数据
|
||||
|
/// </summary>
|
||||
|
/// <param name="keyValue">主键</param>
|
||||
|
/// <returns></returns>
|
||||
|
public async Task DeleteEntity(string keyValue) |
||||
|
{ |
||||
|
await this.BaseRepository().DeleteAny<TSLogEntity>(new { F_Id = keyValue }); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 保存实体数据(新增、修改)
|
||||
|
/// </summary>
|
||||
|
/// <param name="keyValue">主键</param>
|
||||
|
/// <param name="entity">实体</param>
|
||||
|
/// <returns></returns>
|
||||
|
public async Task SaveEntity(string keyValue, TSLogEntity entity) |
||||
|
{ |
||||
|
if (!string.IsNullOrEmpty(keyValue)) |
||||
|
{ |
||||
|
entity.F_Id = keyValue; |
||||
|
await this.BaseRepository().Update(entity); |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
entity.F_Id = Guid.NewGuid().ToString(); |
||||
|
entity.F_CreateDate = DateTime.Now; |
||||
|
await this.BaseRepository().Insert(entity); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
#endregion 提交数据
|
||||
|
} |
||||
|
} |
@ -0,0 +1,116 @@ |
|||||
|
using cd.dapper.extension; |
||||
|
using System; |
||||
|
|
||||
|
namespace learun.iapplication |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 版 本 EasyCode EC管理后台
|
||||
|
/// Copyright (c) 2019-present EC管理有限公司
|
||||
|
/// 创建人:tobin
|
||||
|
/// 日 期:2019.09.25
|
||||
|
/// 描 述:系统日志数据库实体类
|
||||
|
/// </summary>
|
||||
|
[Table("lr_base_log")] |
||||
|
public class LogEntity |
||||
|
{ |
||||
|
#region 实体成员
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 日志主键
|
||||
|
/// </summary>
|
||||
|
[Key] |
||||
|
public string F_LogId { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 分类Id 1-登陆2-访问3-操作4-异常
|
||||
|
/// </summary>
|
||||
|
public int? F_CategoryId { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 来源对象主键
|
||||
|
/// </summary>
|
||||
|
public string F_SourceObjectId { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 来源日志内容
|
||||
|
/// </summary>
|
||||
|
public string F_SourceContentJson { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 操作时间
|
||||
|
/// </summary>
|
||||
|
public DateTime? F_OperateTime { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 操作用户Id
|
||||
|
/// </summary>
|
||||
|
public string F_OperateUserId { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 操作用户
|
||||
|
/// </summary>
|
||||
|
public string F_OperateAccount { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 操作类型Id
|
||||
|
/// </summary>
|
||||
|
public string F_OperateTypeId { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 操作类型
|
||||
|
/// </summary>
|
||||
|
public string F_OperateType { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 系统功能
|
||||
|
/// </summary>
|
||||
|
public string F_Module { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// IP地址
|
||||
|
/// </summary>
|
||||
|
public string F_IPAddress { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// IP地址所在城市
|
||||
|
/// </summary>
|
||||
|
public string F_IPAddressName { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 主机
|
||||
|
/// </summary>
|
||||
|
public string F_Host { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 浏览器
|
||||
|
/// </summary>
|
||||
|
public string F_Browser { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 执行结果状态
|
||||
|
/// </summary>
|
||||
|
public int? F_ExecuteResult { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 执行结果信息
|
||||
|
/// </summary>
|
||||
|
public string F_ExecuteResultJson { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 备注
|
||||
|
/// </summary>
|
||||
|
public string F_Description { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 删除标记
|
||||
|
/// </summary>
|
||||
|
public int? F_DeleteMark { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 有效标志
|
||||
|
/// </summary>
|
||||
|
public int? F_EnabledMark { get; set; } |
||||
|
|
||||
|
#endregion 实体成员
|
||||
|
} |
||||
|
} |
@ -0,0 +1,58 @@ |
|||||
|
using learun.util; |
||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Threading.Tasks; |
||||
|
|
||||
|
namespace learun.iapplication |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 版 本 EasyCode EC管理后台
|
||||
|
/// Copyright (c) 2019-present EC管理有限公司
|
||||
|
/// 创建人:tobin
|
||||
|
/// 日 期:2019.09.25
|
||||
|
/// 描 述:系统日志
|
||||
|
/// </summary>
|
||||
|
public interface LogIBLL |
||||
|
{ |
||||
|
#region 获取数据
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 日志列表
|
||||
|
/// </summary>
|
||||
|
/// <param name="pagination">分页</param>
|
||||
|
/// <param name="queryJson">查询参数</param>
|
||||
|
/// <param name="userId">用户主键</param>
|
||||
|
/// <returns></returns>
|
||||
|
Task<IEnumerable<LogEntity>> GetPageList(Pagination pagination, string queryJson, string userId); |
||||
|
|
||||
|
#endregion 获取数据
|
||||
|
|
||||
|
#region 提交数据
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 清空日志
|
||||
|
/// </summary>
|
||||
|
/// <param name="categoryId">日志分类Id</param>
|
||||
|
/// <param name="keepTime">保留时间段内</param>
|
||||
|
Task Remove(int categoryId, string keepTime); |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 写日志
|
||||
|
/// </summary>
|
||||
|
/// <param name="logEntity">对象</param>
|
||||
|
Task Write(LogEntity logEntity); |
||||
|
|
||||
|
#endregion 提交数据
|
||||
|
|
||||
|
#region 扩展方法
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 生成异常信息
|
||||
|
/// </summary>
|
||||
|
/// <param name="ex">异常对象</param>
|
||||
|
/// <returns></returns>
|
||||
|
string ExceptionFormat(Exception ex); |
||||
|
|
||||
|
#endregion 扩展方法
|
||||
|
} |
||||
|
} |
Loading…
Reference in new issue