Prechádzať zdrojové kódy

!1374 日志筛选条件添加
Merge pull request !1374 from 冰魄少年/next

zuohuaijun 1 rok pred
rodič
commit
cdb8a3148d

+ 42 - 0
Admin.NET/Admin.NET.Core/Service/Logging/Dto/LogInput.cs

@@ -6,6 +6,28 @@
 
 namespace Admin.NET.Core.Service;
 
+public class PageExLogInput : PageOpLogInput
+{
+    /// <summary>
+    /// 模块名称
+    /// </summary>
+    public string? ControllerName { get; set; }
+}
+
+public class PageOpLogInput : PageVisLogInput
+{
+    /// <summary>
+    /// 模块名称
+    /// </summary>
+    public string? ControllerName { get; set; }
+}
+public class PageVisLogInput : PageLogInput
+{
+    /// <summary>
+    /// 方法名称
+    ///</summary>
+    public string? ActionName { get; set; }
+}
 public class PageLogInput : BasePageInput
 {
     /// <summary>
@@ -17,6 +39,26 @@ public class PageLogInput : BasePageInput
     /// 结束时间
     /// </summary>
     public DateTime? EndTime { get; set; }
+
+    /// <summary>
+    /// 账号
+    /// </summary>
+    public string? Account { get; set; }
+
+    /// <summary>
+    /// 操作用时
+    /// </summary>
+    public long? Elapsed { get; set; }
+
+    /// <summary>
+    /// 状态
+    /// </summary>
+    public string Status { get; set; }
+
+    /// <summary>
+    /// IP地址
+    /// </summary>
+    public string? RemoteIp { get; set; }
 }
 
 public class LogInput

+ 8 - 1
Admin.NET/Admin.NET.Core/Service/Logging/SysLogExService.cs

@@ -25,11 +25,18 @@ public class SysLogExService : IDynamicApiController, ITransient
     /// <returns></returns>
     [SuppressMonitor]
     [DisplayName("获取异常日志分页列表")]
-    public async Task<SqlSugarPagedList<SysLogEx>> Page(PageLogInput input)
+    public async Task<SqlSugarPagedList<SysLogEx>> Page(PageExLogInput input)
     {
         return await _sysLogExRep.AsQueryable()
             .WhereIF(!string.IsNullOrWhiteSpace(input.StartTime.ToString()), u => u.CreateTime >= input.StartTime)
             .WhereIF(!string.IsNullOrWhiteSpace(input.EndTime.ToString()), u => u.CreateTime <= input.EndTime)
+            .WhereIF(!string.IsNullOrWhiteSpace(input.Account), u => u.Account == input.Account)
+            .WhereIF(!string.IsNullOrWhiteSpace(input.ControllerName), u => u.ControllerName == input.ControllerName)
+            .WhereIF(!string.IsNullOrWhiteSpace(input.ActionName), u => u.ActionName == input.ActionName)
+            .WhereIF(!string.IsNullOrWhiteSpace(input.RemoteIp), u => u.RemoteIp == input.RemoteIp)
+            .WhereIF(!string.IsNullOrWhiteSpace(input.Elapsed.ToString()), u => u.Elapsed >= input.Elapsed)
+            .WhereIF(!string.IsNullOrWhiteSpace(input.Status) && input.Status == "200", u => u.Status == input.Status)
+            .WhereIF(!string.IsNullOrWhiteSpace(input.Status) && input.Status != "200", u => u.Status != input.Status)
             //.OrderBy(u => u.CreateTime, OrderByType.Desc)
             .OrderBuilder(input)
             .ToPagedListAsync(input.Page, input.PageSize);

+ 6 - 1
Admin.NET/Admin.NET.Core/Service/Logging/SysLogOpService.cs

@@ -25,11 +25,16 @@ public class SysLogOpService : IDynamicApiController, ITransient
     /// <returns></returns>
     [SuppressMonitor]
     [DisplayName("获取操作日志分页列表")]
-    public async Task<SqlSugarPagedList<SysLogOp>> Page(PageLogInput input)
+    public async Task<SqlSugarPagedList<SysLogOp>> Page(PageOpLogInput input)
     {
         return await _sysLogOpRep.AsQueryable()
             .WhereIF(!string.IsNullOrWhiteSpace(input.StartTime.ToString()), u => u.CreateTime >= input.StartTime)
             .WhereIF(!string.IsNullOrWhiteSpace(input.EndTime.ToString()), u => u.CreateTime <= input.EndTime)
+            .WhereIF(!string.IsNullOrWhiteSpace(input.Account), u => u.Account == input.Account)
+            .WhereIF(!string.IsNullOrWhiteSpace(input.RemoteIp), u => u.RemoteIp == input.RemoteIp)
+            .WhereIF(!string.IsNullOrWhiteSpace(input.ControllerName), u => u.ControllerName == input.ControllerName)
+            .WhereIF(!string.IsNullOrWhiteSpace(input.ActionName), u => u.ActionName == input.ActionName)
+            .WhereIF(!string.IsNullOrWhiteSpace(input.Elapsed.ToString()), u => u.Elapsed >= input.Elapsed)
             //.OrderBy(u => u.CreateTime, OrderByType.Desc)
             .OrderBuilder(input)
             .ToPagedListAsync(input.Page, input.PageSize);

+ 7 - 1
Admin.NET/Admin.NET.Core/Service/Logging/SysLogVisService.cs

@@ -25,11 +25,17 @@ public class SysLogVisService : IDynamicApiController, ITransient
     /// <returns></returns>
     [SuppressMonitor]
     [DisplayName("获取访问日志分页列表")]
-    public async Task<SqlSugarPagedList<SysLogVis>> Page(PageLogInput input)
+    public async Task<SqlSugarPagedList<SysLogVis>> Page(PageVisLogInput input)
     {
         return await _sysLogVisRep.AsQueryable()
             .WhereIF(!string.IsNullOrWhiteSpace(input.StartTime.ToString()), u => u.CreateTime >= input.StartTime)
             .WhereIF(!string.IsNullOrWhiteSpace(input.EndTime.ToString()), u => u.CreateTime <= input.EndTime)
+            .WhereIF(!string.IsNullOrWhiteSpace(input.Account), u => u.Account == input.Account)
+            .WhereIF(!string.IsNullOrWhiteSpace(input.ActionName), u => u.ActionName == input.ActionName)
+            .WhereIF(!string.IsNullOrWhiteSpace(input.RemoteIp), u => u.RemoteIp == input.RemoteIp)
+            .WhereIF(!string.IsNullOrWhiteSpace(input.Elapsed.ToString()), u => u.Elapsed >= input.Elapsed)
+            .WhereIF(!string.IsNullOrWhiteSpace(input.Status) && input.Status == "200", u => u.Status == input.Status)
+            .WhereIF(!string.IsNullOrWhiteSpace(input.Status) && input.Status != "200", u => u.Status != input.Status)
             .OrderBy(u => u.CreateTime, OrderByType.Desc)
             .ToPagedListAsync(input.Page, input.PageSize);
     }

+ 5 - 0
Admin.NET/Admin.NET.Core/Service/User/Dto/UserInput.cs

@@ -33,6 +33,11 @@ public class PageUserInput : BasePageInput
     /// </summary>
     public string RealName { get; set; }
 
+    /// <summary>
+    /// 职位名称
+    /// </summary>
+    public string PosName { get; set; }
+
     /// <summary>
     /// 手机号
     /// </summary>

+ 1 - 0
Admin.NET/Admin.NET.Core/Service/User/SysUserService.cs

@@ -71,6 +71,7 @@ public class SysUserService : IDynamicApiController, ITransient
             .WhereIF(orgList != null, u => orgList.Contains(u.OrgId))
             .WhereIF(!string.IsNullOrWhiteSpace(input.Account), u => u.Account.Contains(input.Account))
             .WhereIF(!string.IsNullOrWhiteSpace(input.RealName), u => u.RealName.Contains(input.RealName))
+            .WhereIF(!string.IsNullOrWhiteSpace(input.PosName), (u, a, b) => b.Name.Contains(input.PosName))
             .WhereIF(!string.IsNullOrWhiteSpace(input.Phone), u => u.Phone.Contains(input.Phone))
             .OrderBy(u => new { u.OrderNo, u.Id })
             .Select((u, a, b) => new UserOutput

+ 39 - 0
Web/src/views/system/log/exlog/index.vue

@@ -8,6 +8,27 @@
 				<el-form-item label="结束时间">
 					<el-date-picker v-model="state.queryParams.endTime" type="datetime" placeholder="结束时间" value-format="YYYY-MM-DD HH:mm:ss" :shortcuts="shortcuts" />
 				</el-form-item>
+				<el-form-item label="模块名称" >
+					<el-input v-model="state.queryParams.controllerName" placeholder="方法名称" clearable />
+				</el-form-item>
+				<el-form-item label="方法名称" >
+					<el-input v-model="state.queryParams.actionName" placeholder="方法名称" clearable />
+				</el-form-item>
+				<el-form-item label="账号名称" >
+					<el-input v-model="state.queryParams.account" placeholder="账号名称" clearable  />
+				</el-form-item>
+				<el-form-item label="状态" >
+					<el-select v-model="state.queryParams.status" placeholder="状态"  clearable >
+						<el-option label="成功" :value="200" />
+						<el-option label="失败" :value="400" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="耗时" >
+					<el-input v-model="state.queryParams.elapsed" placeholder="耗时>?MS"  clearable  />
+				</el-form-item>
+				<el-form-item label="IP地址" >
+					<el-input v-model="state.queryParams.remoteIp" placeholder="IP地址"  clearable  />
+				</el-form-item>
 				<el-form-item>
 					<el-button-group>
 						<el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'sysExlog:page'"> 查询 </el-button>
@@ -105,6 +126,12 @@ const state = reactive({
 	queryParams: {
 		startTime: undefined,
 		endTime: undefined,
+		status:undefined,
+		controllerName:undefined,
+		actionName:undefined,
+		account:undefined,
+		elapsed:undefined,
+		remoteIp:undefined,
 	},
 	tableParams: {
 		page: 1,
@@ -127,6 +154,12 @@ onMounted(async () => {
 const handleQuery = async () => {
 	if (state.queryParams.startTime == null) state.queryParams.startTime = undefined;
 	if (state.queryParams.endTime == null) state.queryParams.endTime = undefined;
+	if (state.queryParams.status == null) state.queryParams.status = undefined;
+	if (state.queryParams.controllerName == null) state.queryParams.controllerName = undefined;
+	if (state.queryParams.actionName == null) state.queryParams.actionName = undefined;
+	if (state.queryParams.account == null) state.queryParams.account = undefined;
+	if (state.queryParams.elapsed == null) state.queryParams.elapsed = undefined;
+	if (state.queryParams.remoteIp == null) state.queryParams.remoteIp = undefined;
 
 	state.loading = true;
 	let params = Object.assign(state.queryParams, state.tableParams);
@@ -140,6 +173,12 @@ const handleQuery = async () => {
 const resetQuery = () => {
 	state.queryParams.startTime = undefined;
 	state.queryParams.endTime = undefined;
+	state.queryParams.status = undefined;
+	state.queryParams.controllerName = undefined;
+	state.queryParams.actionName = undefined;
+	state.queryParams.account = undefined;
+	state.queryParams.elapsed = undefined;
+	state.queryParams.remoteIp = undefined;
 	handleQuery();
 };
 

+ 33 - 3
Web/src/views/system/log/oplog/index.vue

@@ -2,12 +2,27 @@
 	<div class="sys-oplog-container" v-loading="state.loading">
 		<el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
 			<el-form :model="state.queryParams" ref="queryForm" :inline="true">
-				<el-form-item label="开始时间">
+				<el-form-item label="开始时间" >
 					<el-date-picker v-model="state.queryParams.startTime" type="datetime" placeholder="开始时间" value-format="YYYY-MM-DD HH:mm:ss" :shortcuts="shortcuts" />
 				</el-form-item>
-				<el-form-item label="结束时间">
+				<el-form-item label="结束时间" >
 					<el-date-picker v-model="state.queryParams.endTime" type="datetime" placeholder="结束时间" value-format="YYYY-MM-DD HH:mm:ss" :shortcuts="shortcuts" />
 				</el-form-item>
+				<el-form-item label="模块名称" >
+					<el-input v-model="state.queryParams.controllerName" placeholder="方法名称" clearable />
+				</el-form-item>
+				<el-form-item label="方法名称" >
+					<el-input v-model="state.queryParams.actionName" placeholder="方法名称" clearable />
+				</el-form-item>
+				<el-form-item label="账号名称" >
+					<el-input v-model="state.queryParams.account" placeholder="账号名称" clearable  />
+				</el-form-item>
+				<el-form-item label="耗时" >
+					<el-input v-model="state.queryParams.elapsed" placeholder="耗时>?MS"  clearable  />
+				</el-form-item>
+				<el-form-item label="IP地址" >
+					<el-input v-model="state.queryParams.remoteIp" placeholder="IP地址"  clearable  />
+				</el-form-item>
 				<el-form-item>
 					<el-button-group>
 						<el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'sysOplog:page'"> 查询 </el-button>
@@ -105,6 +120,11 @@ const state = reactive({
 	queryParams: {
 		startTime: undefined,
 		endTime: undefined,
+		controllerName:undefined,
+		actionName:undefined,
+		account:undefined,
+		elapsed:undefined,
+		remoteIp:undefined,
 	},
 	tableParams: {
 		page: 1,
@@ -127,7 +147,12 @@ onMounted(async () => {
 const handleQuery = async () => {
 	if (state.queryParams.startTime == null) state.queryParams.startTime = undefined;
 	if (state.queryParams.endTime == null) state.queryParams.endTime = undefined;
-
+	if (state.queryParams.controllerName == null) state.queryParams.controllerName = undefined;
+	if (state.queryParams.actionName == null) state.queryParams.actionName = undefined;
+	if (state.queryParams.account == null) state.queryParams.account = undefined;
+	if (state.queryParams.elapsed == null) state.queryParams.elapsed = undefined;
+	if (state.queryParams.remoteIp == null) state.queryParams.remoteIp = undefined;
+	
 	state.loading = true;
 	let params = Object.assign(state.queryParams, state.tableParams);
 	var res = await getAPI(SysLogOpApi).apiSysLogOpPagePost(params);
@@ -140,6 +165,11 @@ const handleQuery = async () => {
 const resetQuery = () => {
 	state.queryParams.startTime = undefined;
 	state.queryParams.endTime = undefined;
+	state.queryParams.controllerName = undefined;
+	state.queryParams.actionName = undefined;
+	state.queryParams.account = undefined;
+	state.queryParams.elapsed = undefined;
+	state.queryParams.remoteIp = undefined;
 	handleQuery();
 };
 

+ 36 - 3
Web/src/views/system/log/vislog/index.vue

@@ -2,12 +2,30 @@
 	<div class="sys-vislog-container">
 		<el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
 			<el-form :model="state.queryParams" ref="queryForm" :inline="true">
-				<el-form-item label="开始时间">
+				<el-form-item label="开始时间" >
 					<el-date-picker v-model="state.queryParams.startTime" type="datetime" placeholder="开始时间" value-format="YYYY-MM-DD HH:mm:ss" :shortcuts="shortcuts" />
 				</el-form-item>
-				<el-form-item label="结束时间" prop="code">
+				<el-form-item label="结束时间" prop="code" >
 					<el-date-picker v-model="state.queryParams.endTime" type="datetime" placeholder="结束时间" value-format="YYYY-MM-DD HH:mm:ss" :shortcuts="shortcuts" />
 				</el-form-item>
+				<el-form-item label="方法名称" >
+					<el-input v-model="state.queryParams.actionName" placeholder="方法名称" clearable />
+				</el-form-item>
+				<el-form-item label="账号名称" >
+					<el-input v-model="state.queryParams.account" placeholder="账号名称" clearable  />
+				</el-form-item>
+				<el-form-item label="状态" >
+					<el-select v-model="state.queryParams.status" placeholder="状态"  clearable >
+						<el-option label="成功" :value="200" />
+						<el-option label="失败" :value="400" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="耗时" >
+					<el-input v-model="state.queryParams.elapsed" placeholder="耗时>?MS"  clearable  />
+				</el-form-item>
+				<el-form-item label="IP地址" >
+					<el-input v-model="state.queryParams.remoteIp" placeholder="IP地址"  clearable  />
+				</el-form-item>
 				<el-form-item>
 					<el-button-group>
 						<el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'sysVislog:page'"> 查询 </el-button>
@@ -70,6 +88,11 @@ const state = reactive({
 	queryParams: {
 		startTime: undefined,
 		endTime: undefined,
+		status: undefined,
+		actionName:undefined,
+		account:undefined,
+		elapsed:undefined,
+		remoteIp:undefined,
 	},
 	tableParams: {
 		page: 1,
@@ -87,7 +110,12 @@ onMounted(async () => {
 const handleQuery = async () => {
 	if (state.queryParams.startTime == null) state.queryParams.startTime = undefined;
 	if (state.queryParams.endTime == null) state.queryParams.endTime = undefined;
-
+	if (state.queryParams.status == null) state.queryParams.status = undefined;
+	if (state.queryParams.actionName == null) state.queryParams.actionName = undefined;
+	if (state.queryParams.account == null) state.queryParams.account = undefined;
+	if (state.queryParams.elapsed == null) state.queryParams.elapsed = undefined;
+	if (state.queryParams.remoteIp == null) state.queryParams.remoteIp = undefined;
+	
 	state.loading = true;
 	let params = Object.assign(state.queryParams, state.tableParams);
 	var res = await getAPI(SysLogVisApi).apiSysLogVisPagePost(params);
@@ -100,6 +128,11 @@ const handleQuery = async () => {
 const resetQuery = () => {
 	state.queryParams.startTime = undefined;
 	state.queryParams.endTime = undefined;
+	state.queryParams.status = undefined;
+	state.queryParams.actionName = undefined;
+	state.queryParams.account = undefined;
+	state.queryParams.elapsed = undefined;
+	state.queryParams.remoteIp = undefined;
 	handleQuery();
 };
 

+ 7 - 2
Web/src/views/system/user/index.vue

@@ -11,9 +11,12 @@
 						<el-form-item label="账号">
 							<el-input v-model="state.queryParams.account" placeholder="账号" clearable />
 						</el-form-item>
-						<!-- <el-form-item label="姓名">
+						<el-form-item label="姓名">
 							<el-input v-model="state.queryParams.realName" placeholder="姓名" clearable  />
-						</el-form-item> -->
+						</el-form-item>
+						<el-form-item label="职位名称">
+							<el-input v-model="state.queryParams.posName" placeholder="职位名称" clearable  />
+						</el-form-item>
 						<el-form-item label="手机号码">
 							<el-input v-model="state.queryParams.phone" placeholder="手机号码" clearable />
 						</el-form-item>
@@ -134,6 +137,7 @@ const state = reactive({
 		account: undefined,
 		realName: undefined,
 		phone: undefined,
+		posName:undefined,
 	},
 	tableParams: {
 		page: 1,
@@ -172,6 +176,7 @@ const resetQuery = async () => {
 	state.queryParams.account = undefined;
 	state.queryParams.realName = undefined;
 	state.queryParams.phone = undefined;
+	state.queryParams.posName=undefined;
 	await handleQuery();
 };