mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-10-30 01:38:43 +08:00 
			
		
		
		
	调整 API 访问日志,从 system 归到 infra 更合适
This commit is contained in:
		
							
								
								
									
										55
									
								
								ruoyi-ui/src/api/infra/apiAccessLog.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								ruoyi-ui/src/api/infra/apiAccessLog.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,55 @@ | ||||
| import request from '@/utils/request' | ||||
|  | ||||
| // 创建API 访问日志 | ||||
| export function createApiAccessLog(data) { | ||||
|   return request({ | ||||
|     url: '/infra/api-access-log/create', | ||||
|     method: 'post', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 更新API 访问日志 | ||||
| export function updateApiAccessLog(data) { | ||||
|   return request({ | ||||
|     url: '/infra/api-access-log/update', | ||||
|     method: 'put', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|  | ||||
|  | ||||
| // 删除API 访问日志 | ||||
| export function deleteApiAccessLog(id) { | ||||
|   return request({ | ||||
|     url: '/infra/api-access-log/delete?id=' + id, | ||||
|     method: 'delete' | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 获得API 访问日志 | ||||
| export function getApiAccessLog(id) { | ||||
|   return request({ | ||||
|     url: '/infra/api-access-log/get?id=' + id, | ||||
|     method: 'get' | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 获得API 访问日志分页 | ||||
| export function getApiAccessLogPage(query) { | ||||
|   return request({ | ||||
|     url: '/infra/api-access-log/page', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 导出API 访问日志 Excel | ||||
| export function exportApiAccessLogExcel(query) { | ||||
|   return request({ | ||||
|     url: '/infra/api-access-log/export-excel', | ||||
|     method: 'get', | ||||
|     params: query, | ||||
|     responseType: 'blob' | ||||
|   }) | ||||
| } | ||||
| @@ -6,6 +6,8 @@ | ||||
| import store from '@/store' | ||||
|  | ||||
| export const DICT_TYPE = { | ||||
|   USER_TYPE: 'user_type', | ||||
|  | ||||
|   SYS_COMMON_STATUS: 'sys_common_status', | ||||
|   SYS_MENU_TYPE: 'sys_menu_type', | ||||
|   SYS_ROLE_TYPE: 'sys_role_type', | ||||
|   | ||||
							
								
								
									
										204
									
								
								ruoyi-ui/src/views/infra/apiAccessLog/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										204
									
								
								ruoyi-ui/src/views/infra/apiAccessLog/index.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,204 @@ | ||||
| <template> | ||||
|   <div class="app-container"> | ||||
|  | ||||
|     <!-- 搜索工作栏 --> | ||||
|     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> | ||||
|       <el-form-item label="用户编号" prop="userId"> | ||||
|         <el-input v-model="queryParams.userId" placeholder="请输入用户编号" clearable size="small" @keyup.enter.native="handleQuery"/> | ||||
|       </el-form-item> | ||||
|       <el-form-item label="用户类型" prop="userType"> | ||||
|         <el-select v-model="queryParams.userType" placeholder="请选择用户类型" clearable size="small"> | ||||
|           <el-option v-for="dict in this.getDictDatas(DICT_TYPE.USER_TYPE)" | ||||
|                      :key="dict.value" :label="dict.label" :value="dict.value"/> | ||||
|         </el-select> | ||||
|       </el-form-item> | ||||
|       <el-form-item label="应用名" prop="applicationName"> | ||||
|         <el-input v-model="queryParams.applicationName" placeholder="请输入应用名" clearable size="small" @keyup.enter.native="handleQuery"/> | ||||
|       </el-form-item> | ||||
|       <el-form-item label="请求地址" prop="requestUrl"> | ||||
|         <el-input v-model="queryParams.requestUrl" placeholder="请输入请求地址" clearable size="small" @keyup.enter.native="handleQuery"/> | ||||
|       </el-form-item> | ||||
|       <el-form-item label="开始请求时间"> | ||||
|         <el-date-picker v-model="dateRangeBeginTime" size="small" style="width: 240px" value-format="yyyy-MM-dd" | ||||
|                         type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" /> | ||||
|       </el-form-item> | ||||
|       <el-form-item label="执行时长" prop="duration"> | ||||
|         <el-input v-model="queryParams.duration" placeholder="请输入执行时长" clearable size="small" @keyup.enter.native="handleQuery"/> | ||||
|       </el-form-item> | ||||
|       <el-form-item label="结果码" prop="resultCode"> | ||||
|         <el-input v-model="queryParams.resultCode" placeholder="请输入结果码" clearable size="small" @keyup.enter.native="handleQuery"/> | ||||
|       </el-form-item> | ||||
|       <el-form-item> | ||||
|         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> | ||||
|         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> | ||||
|       </el-form-item> | ||||
|     </el-form> | ||||
|  | ||||
|     <!-- 操作工具栏 --> | ||||
|     <el-row :gutter="10" class="mb8"> | ||||
|       <el-col :span="1.5"> | ||||
|         <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" | ||||
|                    v-hasPermi="['infra:api-access-log:export']">导出</el-button> | ||||
|       </el-col> | ||||
|       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> | ||||
|     </el-row> | ||||
|  | ||||
|     <!-- 列表 --> | ||||
|     <el-table v-loading="loading" :data="list"> | ||||
|       <el-table-column label="日志主键" align="center" prop="id" /> | ||||
|       <el-table-column label="链路追踪编号" align="center" prop="traceId" /> | ||||
|       <el-table-column label="用户编号" align="center" prop="userId" /> | ||||
|       <el-table-column label="用户类型" align="center" prop="userType"> | ||||
|         <template slot-scope="scope"> | ||||
|           <span>{{ getDictDataLabel(DICT_TYPE.USER_TYPE, scope.row.userType) }}</span> | ||||
|         </template> | ||||
|       </el-table-column>> | ||||
|       <el-table-column label="应用名" align="center" prop="applicationName" /> | ||||
|       <el-table-column label="请求方法名" align="center" prop="requestMethod" /> | ||||
|       <el-table-column label="请求地址" align="center" prop="requestUrl" /> | ||||
|       <el-table-column label="Java 方法的参数" align="center" prop="requestParams" /> | ||||
|       <el-table-column label="用户 IP" align="center" prop="userIp" /> | ||||
|       <el-table-column label="浏览器 UA" align="center" prop="userAgent" /> | ||||
|       <el-table-column label="开始请求时间" align="center" prop="beginTime" width="180"> | ||||
|         <template slot-scope="scope"> | ||||
|           <span>{{ parseTime(scope.row.beginTime, '{y}-{m}-{d}') }}</span> | ||||
|         </template> | ||||
|       </el-table-column> | ||||
|       <el-table-column label="结束请求时间" align="center" prop="endTime" width="180"> | ||||
|         <template slot-scope="scope"> | ||||
|           <span>{{ parseTime(scope.row.endTime, '{y}-{m}-{d}') }}</span> | ||||
|         </template> | ||||
|       </el-table-column> | ||||
|       <el-table-column label="执行时长" align="center" prop="duration" /> | ||||
|       <el-table-column label="结果码" align="center" prop="resultCode" /> | ||||
|       <el-table-column label="结果提示" align="center" prop="resultMsg" /> | ||||
|       <el-table-column label="创建时间" align="center" prop="createTime" width="180"> | ||||
|         <template slot-scope="scope"> | ||||
|           <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span> | ||||
|         </template> | ||||
|       </el-table-column> | ||||
|       <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> | ||||
|         <template slot-scope="scope"> | ||||
|  | ||||
|         </template> | ||||
|       </el-table-column> | ||||
|     </el-table> | ||||
|     <!-- 分页组件 --> | ||||
|     <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" | ||||
|                 @pagination="getList"/> | ||||
|  | ||||
|   </div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import { getApiAccessLog, getApiAccessLogPage, exportApiAccessLogExcel } from "@/api/infra/apiAccessLog"; | ||||
|  | ||||
| export default { | ||||
|   name: "ApiAccessLog", | ||||
|   components: { | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       // 遮罩层 | ||||
|       loading: true, | ||||
|       // 显示搜索条件 | ||||
|       showSearch: true, | ||||
|       // 总条数 | ||||
|       total: 0, | ||||
|       // API 访问日志列表 | ||||
|       list: [], | ||||
|       // 弹出层标题 | ||||
|       title: "", | ||||
|       // 是否显示弹出层 | ||||
|       open: false, | ||||
|       dateRangeBeginTime: [], | ||||
|       // 查询参数 | ||||
|       queryParams: { | ||||
|         pageNo: 1, | ||||
|         pageSize: 10, | ||||
|         userId: null, | ||||
|         userType: null, | ||||
|         applicationName: null, | ||||
|         requestUrl: null, | ||||
|         duration: null, | ||||
|         resultCode: null, | ||||
|       }, | ||||
|       // 表单参数 | ||||
|       form: {}, | ||||
|     }; | ||||
|   }, | ||||
|   created() { | ||||
|     this.getList(); | ||||
|   }, | ||||
|   methods: { | ||||
|     /** 查询列表 */ | ||||
|     getList() { | ||||
|       this.loading = true; | ||||
|       // 处理查询参数 | ||||
|       let params = {...this.queryParams}; | ||||
|       this.addBeginAndEndTime(params, this.dateRangeBeginTime, 'beginTime'); | ||||
|       // 执行查询 | ||||
|       getApiAccessLogPage(params).then(response => { | ||||
|         this.list = response.data.list; | ||||
|         this.total = response.data.total; | ||||
|         this.loading = false; | ||||
|       }); | ||||
|     }, | ||||
|     /** 取消按钮 */ | ||||
|     cancel() { | ||||
|       this.open = false; | ||||
|       this.reset(); | ||||
|     }, | ||||
|     /** 表单重置 */ | ||||
|     reset() { | ||||
|       this.form = { | ||||
|         id: undefined, | ||||
|         traceId: undefined, | ||||
|         userId: undefined, | ||||
|         userType: undefined, | ||||
|         applicationName: undefined, | ||||
|         requestMethod: undefined, | ||||
|         requestUrl: undefined, | ||||
|         requestParams: undefined, | ||||
|         userIp: undefined, | ||||
|         userAgent: undefined, | ||||
|         beginTime: undefined, | ||||
|         endTime: undefined, | ||||
|         duration: undefined, | ||||
|         resultCode: undefined, | ||||
|         resultMsg: undefined, | ||||
|       }; | ||||
|       this.resetForm("form"); | ||||
|     }, | ||||
|     /** 搜索按钮操作 */ | ||||
|     handleQuery() { | ||||
|       this.queryParams.pageNo = 1; | ||||
|       this.getList(); | ||||
|     }, | ||||
|     /** 重置按钮操作 */ | ||||
|     resetQuery() { | ||||
|       this.dateRangeBeginTime = []; | ||||
|       this.resetForm("queryForm"); | ||||
|       this.handleQuery(); | ||||
|     }, | ||||
|     /** 导出按钮操作 */ | ||||
|     handleExport() { | ||||
|       // 处理查询参数 | ||||
|       let params = {...this.queryParams}; | ||||
|       params.pageNo = undefined; | ||||
|       params.pageSize = undefined; | ||||
|       this.addBeginAndEndTime(params, this.dateRangeBeginTime, 'beginTime'); | ||||
|       // 执行导出 | ||||
|       this.$confirm('是否确认导出所有API 访问日志数据项?', "警告", { | ||||
|         confirmButtonText: "确定", | ||||
|         cancelButtonText: "取消", | ||||
|         type: "warning" | ||||
|       }).then(function() { | ||||
|         return exportApiAccessLogExcel(params); | ||||
|       }).then(response => { | ||||
|         this.downloadExcel(response, 'API 访问日志.xls'); | ||||
|       }) | ||||
|     } | ||||
|   } | ||||
| }; | ||||
| </script> | ||||
		Reference in New Issue
	
	Block a user
	 YunaiV
					YunaiV