Commit c6734c4bbcdd8909985a20bdb376318d462610de

Authored by YunaiV
1 parent 0678fb7c

调整 API 访问日志,从 system 归到 infra 更合适

Showing 24 changed files with 360 additions and 179 deletions
ruoyi-common/src/main/java/com/ruoyi/common/config/ThreadPoolConfig.java deleted
1 -package com.ruoyi.framework.config;  
2 -  
3 -import java.util.concurrent.ScheduledExecutorService;  
4 -import java.util.concurrent.ScheduledThreadPoolExecutor;  
5 -import java.util.concurrent.ThreadPoolExecutor;  
6 -  
7 -import org.apache.commons.lang3.concurrent.BasicThreadFactory;  
8 -import org.springframework.context.annotation.Bean;  
9 -import org.springframework.context.annotation.Configuration;  
10 -import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;  
11 -import com.ruoyi.common.utils.Threads;  
12 -  
13 -/**  
14 - * 线程池配置  
15 - *  
16 - * @author ruoyi  
17 - **/  
18 -@Configuration  
19 -public class ThreadPoolConfig {  
20 - // 核心线程池大小  
21 - private int corePoolSize = 50;  
22 -  
23 - // 最大可创建的线程数  
24 - private int maxPoolSize = 200;  
25 -  
26 - // 队列最大长度  
27 - private int queueCapacity = 1000;  
28 -  
29 - // 线程池维护线程所允许的空闲时间  
30 - private int keepAliveSeconds = 300;  
31 -  
32 - @Bean(name = "threadPoolTaskExecutor")  
33 - public ThreadPoolTaskExecutor threadPoolTaskExecutor() {  
34 - ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();  
35 - executor.setMaxPoolSize(maxPoolSize);  
36 - executor.setCorePoolSize(corePoolSize);  
37 - executor.setQueueCapacity(queueCapacity);  
38 - executor.setKeepAliveSeconds(keepAliveSeconds);  
39 - // 线程池对拒绝任务(无线程可用)的处理策略  
40 - executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());  
41 - return executor;  
42 - }  
43 -  
44 - /**  
45 - * 执行周期性或定时任务  
46 - */  
47 - @Bean(name = "scheduledExecutorService")  
48 - protected ScheduledExecutorService scheduledExecutorService() {  
49 - return new ScheduledThreadPoolExecutor(corePoolSize,  
50 - new BasicThreadFactory.Builder().namingPattern("schedule-pool-%d").daemon(true).build()) {  
51 - @Override  
52 - protected void afterExecute(Runnable r, Throwable t) {  
53 - super.afterExecute(r, t);  
54 - Threads.printException(r, t);  
55 - }  
56 - };  
57 - }  
58 -}  
ruoyi-common/src/main/resources/application.yml deleted
1 -# 项目相关配置  
2 -ruoyi:  
3 - # 名称  
4 - name: RuoYi  
5 - # 版本  
6 - version: 3.3.0  
7 - # 版权年份  
8 - copyrightYear: 2020  
9 - # 实例演示开关  
10 - demoEnabled: true  
11 - # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)  
12 - profile: D:/ruoyi/uploadPath  
13 - # 获取ip地址开关  
14 - addressEnabled: false  
15 -  
16 -# 开发环境配置  
17 -server:  
18 - # 服务器的HTTP端口,默认为8080  
19 - port: 8080  
20 - servlet:  
21 - # 应用的访问路径  
22 - context-path: /  
23 - tomcat:  
24 - # tomcat的URI编码  
25 - uri-encoding: UTF-8  
26 - # tomcat最大线程数,默认为200  
27 - max-threads: 800  
28 - # Tomcat启动初始化的线程数,默认值25  
29 - min-spare-threads: 30  
30 -  
31 -# 日志配置  
32 -logging:  
33 - level:  
34 - com.ruoyi: debug  
35 - org.springframework: warn  
ruoyi-ui/src/api/infra/apiAccessLog.js 0 → 100644
  1 +import request from '@/utils/request'
  2 +
  3 +// 创建API 访问日志
  4 +export function createApiAccessLog(data) {
  5 + return request({
  6 + url: '/infra/api-access-log/create',
  7 + method: 'post',
  8 + data: data
  9 + })
  10 +}
  11 +
  12 +// 更新API 访问日志
  13 +export function updateApiAccessLog(data) {
  14 + return request({
  15 + url: '/infra/api-access-log/update',
  16 + method: 'put',
  17 + data: data
  18 + })
  19 +}
  20 +
  21 +
  22 +// 删除API 访问日志
  23 +export function deleteApiAccessLog(id) {
  24 + return request({
  25 + url: '/infra/api-access-log/delete?id=' + id,
  26 + method: 'delete'
  27 + })
  28 +}
  29 +
  30 +// 获得API 访问日志
  31 +export function getApiAccessLog(id) {
  32 + return request({
  33 + url: '/infra/api-access-log/get?id=' + id,
  34 + method: 'get'
  35 + })
  36 +}
  37 +
  38 +// 获得API 访问日志分页
  39 +export function getApiAccessLogPage(query) {
  40 + return request({
  41 + url: '/infra/api-access-log/page',
  42 + method: 'get',
  43 + params: query
  44 + })
  45 +}
  46 +
  47 +// 导出API 访问日志 Excel
  48 +export function exportApiAccessLogExcel(query) {
  49 + return request({
  50 + url: '/infra/api-access-log/export-excel',
  51 + method: 'get',
  52 + params: query,
  53 + responseType: 'blob'
  54 + })
  55 +}
ruoyi-ui/src/utils/dict.js
@@ -6,6 +6,8 @@ @@ -6,6 +6,8 @@
6 import store from '@/store' 6 import store from '@/store'
7 7
8 export const DICT_TYPE = { 8 export const DICT_TYPE = {
  9 + USER_TYPE: 'user_type',
  10 +
9 SYS_COMMON_STATUS: 'sys_common_status', 11 SYS_COMMON_STATUS: 'sys_common_status',
10 SYS_MENU_TYPE: 'sys_menu_type', 12 SYS_MENU_TYPE: 'sys_menu_type',
11 SYS_ROLE_TYPE: 'sys_role_type', 13 SYS_ROLE_TYPE: 'sys_role_type',
ruoyi-ui/src/views/infra/apiAccessLog/index.vue 0 → 100644
  1 +<template>
  2 + <div class="app-container">
  3 +
  4 + <!-- 搜索工作栏 -->
  5 + <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
  6 + <el-form-item label="用户编号" prop="userId">
  7 + <el-input v-model="queryParams.userId" placeholder="请输入用户编号" clearable size="small" @keyup.enter.native="handleQuery"/>
  8 + </el-form-item>
  9 + <el-form-item label="用户类型" prop="userType">
  10 + <el-select v-model="queryParams.userType" placeholder="请选择用户类型" clearable size="small">
  11 + <el-option v-for="dict in this.getDictDatas(DICT_TYPE.USER_TYPE)"
  12 + :key="dict.value" :label="dict.label" :value="dict.value"/>
  13 + </el-select>
  14 + </el-form-item>
  15 + <el-form-item label="应用名" prop="applicationName">
  16 + <el-input v-model="queryParams.applicationName" placeholder="请输入应用名" clearable size="small" @keyup.enter.native="handleQuery"/>
  17 + </el-form-item>
  18 + <el-form-item label="请求地址" prop="requestUrl">
  19 + <el-input v-model="queryParams.requestUrl" placeholder="请输入请求地址" clearable size="small" @keyup.enter.native="handleQuery"/>
  20 + </el-form-item>
  21 + <el-form-item label="开始请求时间">
  22 + <el-date-picker v-model="dateRangeBeginTime" size="small" style="width: 240px" value-format="yyyy-MM-dd"
  23 + type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" />
  24 + </el-form-item>
  25 + <el-form-item label="执行时长" prop="duration">
  26 + <el-input v-model="queryParams.duration" placeholder="请输入执行时长" clearable size="small" @keyup.enter.native="handleQuery"/>
  27 + </el-form-item>
  28 + <el-form-item label="结果码" prop="resultCode">
  29 + <el-input v-model="queryParams.resultCode" placeholder="请输入结果码" clearable size="small" @keyup.enter.native="handleQuery"/>
  30 + </el-form-item>
  31 + <el-form-item>
  32 + <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  33 + <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  34 + </el-form-item>
  35 + </el-form>
  36 +
  37 + <!-- 操作工具栏 -->
  38 + <el-row :gutter="10" class="mb8">
  39 + <el-col :span="1.5">
  40 + <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
  41 + v-hasPermi="['infra:api-access-log:export']">导出</el-button>
  42 + </el-col>
  43 + <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  44 + </el-row>
  45 +
  46 + <!-- 列表 -->
  47 + <el-table v-loading="loading" :data="list">
  48 + <el-table-column label="日志主键" align="center" prop="id" />
  49 + <el-table-column label="链路追踪编号" align="center" prop="traceId" />
  50 + <el-table-column label="用户编号" align="center" prop="userId" />
  51 + <el-table-column label="用户类型" align="center" prop="userType">
  52 + <template slot-scope="scope">
  53 + <span>{{ getDictDataLabel(DICT_TYPE.USER_TYPE, scope.row.userType) }}</span>
  54 + </template>
  55 + </el-table-column>>
  56 + <el-table-column label="应用名" align="center" prop="applicationName" />
  57 + <el-table-column label="请求方法名" align="center" prop="requestMethod" />
  58 + <el-table-column label="请求地址" align="center" prop="requestUrl" />
  59 + <el-table-column label="Java 方法的参数" align="center" prop="requestParams" />
  60 + <el-table-column label="用户 IP" align="center" prop="userIp" />
  61 + <el-table-column label="浏览器 UA" align="center" prop="userAgent" />
  62 + <el-table-column label="开始请求时间" align="center" prop="beginTime" width="180">
  63 + <template slot-scope="scope">
  64 + <span>{{ parseTime(scope.row.beginTime, '{y}-{m}-{d}') }}</span>
  65 + </template>
  66 + </el-table-column>
  67 + <el-table-column label="结束请求时间" align="center" prop="endTime" width="180">
  68 + <template slot-scope="scope">
  69 + <span>{{ parseTime(scope.row.endTime, '{y}-{m}-{d}') }}</span>
  70 + </template>
  71 + </el-table-column>
  72 + <el-table-column label="执行时长" align="center" prop="duration" />
  73 + <el-table-column label="结果码" align="center" prop="resultCode" />
  74 + <el-table-column label="结果提示" align="center" prop="resultMsg" />
  75 + <el-table-column label="创建时间" align="center" prop="createTime" width="180">
  76 + <template slot-scope="scope">
  77 + <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
  78 + </template>
  79 + </el-table-column>
  80 + <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  81 + <template slot-scope="scope">
  82 +
  83 + </template>
  84 + </el-table-column>
  85 + </el-table>
  86 + <!-- 分页组件 -->
  87 + <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
  88 + @pagination="getList"/>
  89 +
  90 + </div>
  91 +</template>
  92 +
  93 +<script>
  94 +import { getApiAccessLog, getApiAccessLogPage, exportApiAccessLogExcel } from "@/api/infra/apiAccessLog";
  95 +
  96 +export default {
  97 + name: "ApiAccessLog",
  98 + components: {
  99 + },
  100 + data() {
  101 + return {
  102 + // 遮罩层
  103 + loading: true,
  104 + // 显示搜索条件
  105 + showSearch: true,
  106 + // 总条数
  107 + total: 0,
  108 + // API 访问日志列表
  109 + list: [],
  110 + // 弹出层标题
  111 + title: "",
  112 + // 是否显示弹出层
  113 + open: false,
  114 + dateRangeBeginTime: [],
  115 + // 查询参数
  116 + queryParams: {
  117 + pageNo: 1,
  118 + pageSize: 10,
  119 + userId: null,
  120 + userType: null,
  121 + applicationName: null,
  122 + requestUrl: null,
  123 + duration: null,
  124 + resultCode: null,
  125 + },
  126 + // 表单参数
  127 + form: {},
  128 + };
  129 + },
  130 + created() {
  131 + this.getList();
  132 + },
  133 + methods: {
  134 + /** 查询列表 */
  135 + getList() {
  136 + this.loading = true;
  137 + // 处理查询参数
  138 + let params = {...this.queryParams};
  139 + this.addBeginAndEndTime(params, this.dateRangeBeginTime, 'beginTime');
  140 + // 执行查询
  141 + getApiAccessLogPage(params).then(response => {
  142 + this.list = response.data.list;
  143 + this.total = response.data.total;
  144 + this.loading = false;
  145 + });
  146 + },
  147 + /** 取消按钮 */
  148 + cancel() {
  149 + this.open = false;
  150 + this.reset();
  151 + },
  152 + /** 表单重置 */
  153 + reset() {
  154 + this.form = {
  155 + id: undefined,
  156 + traceId: undefined,
  157 + userId: undefined,
  158 + userType: undefined,
  159 + applicationName: undefined,
  160 + requestMethod: undefined,
  161 + requestUrl: undefined,
  162 + requestParams: undefined,
  163 + userIp: undefined,
  164 + userAgent: undefined,
  165 + beginTime: undefined,
  166 + endTime: undefined,
  167 + duration: undefined,
  168 + resultCode: undefined,
  169 + resultMsg: undefined,
  170 + };
  171 + this.resetForm("form");
  172 + },
  173 + /** 搜索按钮操作 */
  174 + handleQuery() {
  175 + this.queryParams.pageNo = 1;
  176 + this.getList();
  177 + },
  178 + /** 重置按钮操作 */
  179 + resetQuery() {
  180 + this.dateRangeBeginTime = [];
  181 + this.resetForm("queryForm");
  182 + this.handleQuery();
  183 + },
  184 + /** 导出按钮操作 */
  185 + handleExport() {
  186 + // 处理查询参数
  187 + let params = {...this.queryParams};
  188 + params.pageNo = undefined;
  189 + params.pageSize = undefined;
  190 + this.addBeginAndEndTime(params, this.dateRangeBeginTime, 'beginTime');
  191 + // 执行导出
  192 + this.$confirm('是否确认导出所有API 访问日志数据项?', "警告", {
  193 + confirmButtonText: "确定",
  194 + cancelButtonText: "取消",
  195 + type: "warning"
  196 + }).then(function() {
  197 + return exportApiAccessLogExcel(params);
  198 + }).then(response => {
  199 + this.downloadExcel(response, 'API 访问日志.xls');
  200 + })
  201 + }
  202 + }
  203 +};
  204 +</script>
src/main/java/cn/iocoder/dashboard/framework/monitor/AdminServerConfiguration.java renamed to src/main/java/cn/iocoder/dashboard/framework/monitor/config/AdminServerConfiguration.java
1 -package cn.iocoder.dashboard.framework.monitor; 1 +package cn.iocoder.dashboard.framework.monitor.config;
2 2
3 import de.codecentric.boot.admin.server.config.EnableAdminServer; 3 import de.codecentric.boot.admin.server.config.EnableAdminServer;
4 import org.springframework.context.annotation.Configuration; 4 import org.springframework.context.annotation.Configuration;
src/main/java/cn/iocoder/dashboard/framework/mybatis/package-info.java
  1 +/**
  2 + * 使用 MyBatis Plus 提升使用 MyBatis 的开发效率
  3 + */
1 package cn.iocoder.dashboard.framework.mybatis; 4 package cn.iocoder.dashboard.framework.mybatis;
src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/SysApiAccessLogController.java renamed to src/main/java/cn/iocoder/dashboard/modules/infra/controller/logger/InfApiAccessLogController.java
1 -package cn.iocoder.dashboard.modules.system.controller.logger; 1 +package cn.iocoder.dashboard.modules.infra.controller.logger;
2 2
3 import cn.iocoder.dashboard.common.pojo.CommonResult; 3 import cn.iocoder.dashboard.common.pojo.CommonResult;
4 import cn.iocoder.dashboard.common.pojo.PageResult; 4 import cn.iocoder.dashboard.common.pojo.PageResult;
5 import cn.iocoder.dashboard.framework.excel.core.util.ExcelUtils; 5 import cn.iocoder.dashboard.framework.excel.core.util.ExcelUtils;
6 import cn.iocoder.dashboard.framework.logger.operatelog.core.annotations.OperateLog; 6 import cn.iocoder.dashboard.framework.logger.operatelog.core.annotations.OperateLog;
7 -import cn.iocoder.dashboard.modules.system.controller.logger.vo.apiaccesslog.SysApiAccessLogExcelVO;  
8 -import cn.iocoder.dashboard.modules.system.controller.logger.vo.apiaccesslog.SysApiAccessLogExportReqVO;  
9 -import cn.iocoder.dashboard.modules.system.controller.logger.vo.apiaccesslog.SysApiAccessLogPageReqVO;  
10 -import cn.iocoder.dashboard.modules.system.controller.logger.vo.apiaccesslog.SysApiAccessLogRespVO;  
11 -import cn.iocoder.dashboard.modules.system.convert.logger.SysApiAccessLogConvert;  
12 -import cn.iocoder.dashboard.modules.system.dal.dataobject.logger.SysApiAccessLogDO;  
13 -import cn.iocoder.dashboard.modules.system.service.logger.SysApiAccessLogService; 7 +import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogExcelVO;
  8 +import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogExportReqVO;
  9 +import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogPageReqVO;
  10 +import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogRespVO;
  11 +import cn.iocoder.dashboard.modules.infra.convert.logger.InfApiAccessLogConvert;
  12 +import cn.iocoder.dashboard.modules.infra.dal.dataobject.logger.InfApiAccessLogDO;
  13 +import cn.iocoder.dashboard.modules.infra.service.logger.InfApiAccessLogService;
14 import io.swagger.annotations.Api; 14 import io.swagger.annotations.Api;
15 import io.swagger.annotations.ApiImplicitParam; 15 import io.swagger.annotations.ApiImplicitParam;
16 import io.swagger.annotations.ApiOperation; 16 import io.swagger.annotations.ApiOperation;
@@ -32,40 +32,40 @@ import static cn.iocoder.dashboard.framework.logger.operatelog.core.enums.Operat @@ -32,40 +32,40 @@ import static cn.iocoder.dashboard.framework.logger.operatelog.core.enums.Operat
32 32
33 @Api(tags = "API 访问日志") 33 @Api(tags = "API 访问日志")
34 @RestController 34 @RestController
35 -@RequestMapping("/system/api-access-log") 35 +@RequestMapping("/infra/api-access-log")
36 @Validated 36 @Validated
37 -public class SysApiAccessLogController { 37 +public class InfApiAccessLogController {
38 38
39 @Resource 39 @Resource
40 - private SysApiAccessLogService apiAccessLogService; 40 + private InfApiAccessLogService apiAccessLogService;
41 41
42 @GetMapping("/get") 42 @GetMapping("/get")
43 @ApiOperation("获得API 访问日志") 43 @ApiOperation("获得API 访问日志")
44 @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class) 44 @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)
45 - @PreAuthorize("@ss.hasPermission('system:api-access-log:query')")  
46 - public CommonResult<SysApiAccessLogRespVO> getApiAccessLog(@RequestParam("id") Long id) {  
47 - SysApiAccessLogDO apiAccessLog = apiAccessLogService.getApiAccessLog(id);  
48 - return success(SysApiAccessLogConvert.INSTANCE.convert(apiAccessLog)); 45 + @PreAuthorize("@ss.hasPermission('infra:api-access-log:query')")
  46 + public CommonResult<InfApiAccessLogRespVO> getApiAccessLog(@RequestParam("id") Long id) {
  47 + InfApiAccessLogDO apiAccessLog = apiAccessLogService.getApiAccessLog(id);
  48 + return success(InfApiAccessLogConvert.INSTANCE.convert(apiAccessLog));
49 } 49 }
50 50
51 @GetMapping("/page") 51 @GetMapping("/page")
52 @ApiOperation("获得API 访问日志分页") 52 @ApiOperation("获得API 访问日志分页")
53 - @PreAuthorize("@ss.hasPermission('system:api-access-log:query')")  
54 - public CommonResult<PageResult<SysApiAccessLogRespVO>> getApiAccessLogPage(@Valid SysApiAccessLogPageReqVO pageVO) {  
55 - PageResult<SysApiAccessLogDO> pageResult = apiAccessLogService.getApiAccessLogPage(pageVO);  
56 - return success(SysApiAccessLogConvert.INSTANCE.convertPage(pageResult)); 53 + @PreAuthorize("@ss.hasPermission('infra:api-access-log:query')")
  54 + public CommonResult<PageResult<InfApiAccessLogRespVO>> getApiAccessLogPage(@Valid InfApiAccessLogPageReqVO pageVO) {
  55 + PageResult<InfApiAccessLogDO> pageResult = apiAccessLogService.getApiAccessLogPage(pageVO);
  56 + return success(InfApiAccessLogConvert.INSTANCE.convertPage(pageResult));
57 } 57 }
58 58
59 @GetMapping("/export-excel") 59 @GetMapping("/export-excel")
60 @ApiOperation("导出API 访问日志 Excel") 60 @ApiOperation("导出API 访问日志 Excel")
61 - @PreAuthorize("@ss.hasPermission('system:api-access-log:export')") 61 + @PreAuthorize("@ss.hasPermission('infra:api-access-log:export')")
62 @OperateLog(type = EXPORT) 62 @OperateLog(type = EXPORT)
63 - public void exportApiAccessLogExcel(@Valid SysApiAccessLogExportReqVO exportReqVO, 63 + public void exportApiAccessLogExcel(@Valid InfApiAccessLogExportReqVO exportReqVO,
64 HttpServletResponse response) throws IOException { 64 HttpServletResponse response) throws IOException {
65 - List<SysApiAccessLogDO> list = apiAccessLogService.getApiAccessLogList(exportReqVO); 65 + List<InfApiAccessLogDO> list = apiAccessLogService.getApiAccessLogList(exportReqVO);
66 // 导出 Excel 66 // 导出 Excel
67 - List<SysApiAccessLogExcelVO> datas = SysApiAccessLogConvert.INSTANCE.convertList02(list);  
68 - ExcelUtils.write(response, "API 访问日志.xls", "数据", SysApiAccessLogExcelVO.class, datas); 67 + List<InfApiAccessLogExcelVO> datas = InfApiAccessLogConvert.INSTANCE.convertList02(list);
  68 + ExcelUtils.write(response, "API 访问日志.xls", "数据", InfApiAccessLogExcelVO.class, datas);
69 } 69 }
70 70
71 } 71 }
src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/vo/apiaccesslog/SysApiAccessLogBaseVO.java renamed to src/main/java/cn/iocoder/dashboard/modules/infra/controller/logger/vo/apiaccesslog/InfApiAccessLogBaseVO.java
1 -package cn.iocoder.dashboard.modules.system.controller.logger.vo.apiaccesslog; 1 +package cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog;
2 2
3 import io.swagger.annotations.ApiModelProperty; 3 import io.swagger.annotations.ApiModelProperty;
4 import lombok.Data; 4 import lombok.Data;
@@ -14,7 +14,7 @@ import static cn.iocoder.dashboard.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOU @@ -14,7 +14,7 @@ import static cn.iocoder.dashboard.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOU
14 * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 14 * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
15 */ 15 */
16 @Data 16 @Data
17 -public class SysApiAccessLogBaseVO { 17 +public class InfApiAccessLogBaseVO {
18 18
19 @ApiModelProperty(value = "链路追踪编号", required = true, example = "66600cb6-7852-11eb-9439-0242ac130002") 19 @ApiModelProperty(value = "链路追踪编号", required = true, example = "66600cb6-7852-11eb-9439-0242ac130002")
20 @NotNull(message = "链路追踪编号不能为空") 20 @NotNull(message = "链路追踪编号不能为空")
src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/vo/apiaccesslog/SysApiAccessLogExcelVO.java renamed to src/main/java/cn/iocoder/dashboard/modules/infra/controller/logger/vo/apiaccesslog/InfApiAccessLogExcelVO.java
1 -package cn.iocoder.dashboard.modules.system.controller.logger.vo.apiaccesslog; 1 +package cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog;
2 2
3 import cn.iocoder.dashboard.framework.excel.core.annotations.DictFormat; 3 import cn.iocoder.dashboard.framework.excel.core.annotations.DictFormat;
4 import cn.iocoder.dashboard.framework.excel.core.convert.DictConvert; 4 import cn.iocoder.dashboard.framework.excel.core.convert.DictConvert;
@@ -15,7 +15,7 @@ import static cn.iocoder.dashboard.modules.system.enums.dict.SysDictTypeEnum.USE @@ -15,7 +15,7 @@ import static cn.iocoder.dashboard.modules.system.enums.dict.SysDictTypeEnum.USE
15 * @author 芋道源码 15 * @author 芋道源码
16 */ 16 */
17 @Data 17 @Data
18 -public class SysApiAccessLogExcelVO { 18 +public class InfApiAccessLogExcelVO {
19 19
20 @ExcelProperty("日志主键") 20 @ExcelProperty("日志主键")
21 private Long id; 21 private Long id;
src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/vo/apiaccesslog/SysApiAccessLogExportReqVO.java renamed to src/main/java/cn/iocoder/dashboard/modules/infra/controller/logger/vo/apiaccesslog/InfApiAccessLogExportReqVO.java
1 -package cn.iocoder.dashboard.modules.system.controller.logger.vo.apiaccesslog; 1 +package cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog;
2 2
3 import io.swagger.annotations.ApiModel; 3 import io.swagger.annotations.ApiModel;
4 import io.swagger.annotations.ApiModelProperty; 4 import io.swagger.annotations.ApiModelProperty;
@@ -9,9 +9,9 @@ import java.util.Date; @@ -9,9 +9,9 @@ import java.util.Date;
9 9
10 import static cn.iocoder.dashboard.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 10 import static cn.iocoder.dashboard.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11 11
12 -@ApiModel(value = "API 访问日志 Excel 导出 Request VO", description = "参数和 SysApiAccessLogPageReqVO 是一致的") 12 +@ApiModel(value = "API 访问日志 Excel 导出 Request VO", description = "参数和 InfApiAccessLogPageReqVO 是一致的")
13 @Data 13 @Data
14 -public class SysApiAccessLogExportReqVO { 14 +public class InfApiAccessLogExportReqVO {
15 15
16 @ApiModelProperty(value = "用户编号", example = "666") 16 @ApiModelProperty(value = "用户编号", example = "666")
17 private Long userId; 17 private Long userId;
src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/vo/apiaccesslog/SysApiAccessLogPageReqVO.java renamed to src/main/java/cn/iocoder/dashboard/modules/infra/controller/logger/vo/apiaccesslog/InfApiAccessLogPageReqVO.java
1 -package cn.iocoder.dashboard.modules.system.controller.logger.vo.apiaccesslog; 1 +package cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog;
2 2
3 import cn.iocoder.dashboard.common.pojo.PageParam; 3 import cn.iocoder.dashboard.common.pojo.PageParam;
4 import io.swagger.annotations.ApiModel; 4 import io.swagger.annotations.ApiModel;
@@ -16,7 +16,7 @@ import static cn.iocoder.dashboard.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOU @@ -16,7 +16,7 @@ import static cn.iocoder.dashboard.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOU
16 @Data 16 @Data
17 @EqualsAndHashCode(callSuper = true) 17 @EqualsAndHashCode(callSuper = true)
18 @ToString(callSuper = true) 18 @ToString(callSuper = true)
19 -public class SysApiAccessLogPageReqVO extends PageParam { 19 +public class InfApiAccessLogPageReqVO extends PageParam {
20 20
21 @ApiModelProperty(value = "用户编号", example = "666") 21 @ApiModelProperty(value = "用户编号", example = "666")
22 private Long userId; 22 private Long userId;
src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/vo/apiaccesslog/SysApiAccessLogRespVO.java renamed to src/main/java/cn/iocoder/dashboard/modules/infra/controller/logger/vo/apiaccesslog/InfApiAccessLogRespVO.java
1 -package cn.iocoder.dashboard.modules.system.controller.logger.vo.apiaccesslog; 1 +package cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog;
2 2
3 import io.swagger.annotations.ApiModel; 3 import io.swagger.annotations.ApiModel;
4 import io.swagger.annotations.ApiModelProperty; 4 import io.swagger.annotations.ApiModelProperty;
@@ -12,7 +12,7 @@ import java.util.Date; @@ -12,7 +12,7 @@ import java.util.Date;
12 @Data 12 @Data
13 @EqualsAndHashCode(callSuper = true) 13 @EqualsAndHashCode(callSuper = true)
14 @ToString(callSuper = true) 14 @ToString(callSuper = true)
15 -public class SysApiAccessLogRespVO extends SysApiAccessLogBaseVO { 15 +public class InfApiAccessLogRespVO extends InfApiAccessLogBaseVO {
16 16
17 @ApiModelProperty(value = "日志主键", required = true, example = "1024") 17 @ApiModelProperty(value = "日志主键", required = true, example = "1024")
18 private Long id; 18 private Long id;
src/main/java/cn/iocoder/dashboard/modules/system/convert/logger/SysApiAccessLogConvert.java renamed to src/main/java/cn/iocoder/dashboard/modules/infra/convert/logger/InfApiAccessLogConvert.java
1 -package cn.iocoder.dashboard.modules.system.convert.logger; 1 +package cn.iocoder.dashboard.modules.infra.convert.logger;
2 2
3 import cn.iocoder.dashboard.common.pojo.PageResult; 3 import cn.iocoder.dashboard.common.pojo.PageResult;
4 import cn.iocoder.dashboard.framework.logger.apilog.core.service.dto.ApiAccessLogCreateDTO; 4 import cn.iocoder.dashboard.framework.logger.apilog.core.service.dto.ApiAccessLogCreateDTO;
5 -import cn.iocoder.dashboard.modules.system.controller.logger.vo.apiaccesslog.SysApiAccessLogExcelVO;  
6 -import cn.iocoder.dashboard.modules.system.controller.logger.vo.apiaccesslog.SysApiAccessLogRespVO;  
7 -import cn.iocoder.dashboard.modules.system.dal.dataobject.logger.SysApiAccessLogDO; 5 +import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogExcelVO;
  6 +import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogRespVO;
  7 +import cn.iocoder.dashboard.modules.infra.dal.dataobject.logger.InfApiAccessLogDO;
8 import org.mapstruct.Mapper; 8 import org.mapstruct.Mapper;
9 import org.mapstruct.factory.Mappers; 9 import org.mapstruct.factory.Mappers;
10 10
@@ -16,18 +16,18 @@ import java.util.List; @@ -16,18 +16,18 @@ import java.util.List;
16 * @author 芋道源码 16 * @author 芋道源码
17 */ 17 */
18 @Mapper 18 @Mapper
19 -public interface SysApiAccessLogConvert { 19 +public interface InfApiAccessLogConvert {
20 20
21 - SysApiAccessLogConvert INSTANCE = Mappers.getMapper(SysApiAccessLogConvert.class); 21 + InfApiAccessLogConvert INSTANCE = Mappers.getMapper(InfApiAccessLogConvert.class);
22 22
23 - SysApiAccessLogDO convert(ApiAccessLogCreateDTO bean); 23 + InfApiAccessLogDO convert(ApiAccessLogCreateDTO bean);
24 24
25 - SysApiAccessLogRespVO convert(SysApiAccessLogDO bean); 25 + InfApiAccessLogRespVO convert(InfApiAccessLogDO bean);
26 26
27 - List<SysApiAccessLogRespVO> convertList(List<SysApiAccessLogDO> list); 27 + List<InfApiAccessLogRespVO> convertList(List<InfApiAccessLogDO> list);
28 28
29 - PageResult<SysApiAccessLogRespVO> convertPage(PageResult<SysApiAccessLogDO> page); 29 + PageResult<InfApiAccessLogRespVO> convertPage(PageResult<InfApiAccessLogDO> page);
30 30
31 - List<SysApiAccessLogExcelVO> convertList02(List<SysApiAccessLogDO> list); 31 + List<InfApiAccessLogExcelVO> convertList02(List<InfApiAccessLogDO> list);
32 32
33 } 33 }
src/main/java/cn/iocoder/dashboard/modules/infra/convert/package-info.java 0 → 100644
  1 +/**
  2 + * 提供 POJO 类的实体转换
  3 + *
  4 + * 目前使用 MapStruct 框架
  5 + */
  6 +package cn.iocoder.dashboard.modules.infra.convert;
src/main/java/cn/iocoder/dashboard/modules/infra/convert/《芋道 Spring Boot 对象转换 MapStruct 入门》.md 0 → 100644
  1 +<http://www.iocoder.cn/Spring-Boot/MapStruct/?yudao>
src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/logger/SysApiAccessLogDO.java renamed to src/main/java/cn/iocoder/dashboard/modules/infra/dal/dataobject/logger/InfApiAccessLogDO.java
1 -package cn.iocoder.dashboard.modules.system.dal.dataobject.logger; 1 +package cn.iocoder.dashboard.modules.infra.dal.dataobject.logger;
2 2
3 import cn.iocoder.dashboard.common.enums.UserTypeEnum; 3 import cn.iocoder.dashboard.common.enums.UserTypeEnum;
4 import cn.iocoder.dashboard.common.pojo.CommonResult; 4 import cn.iocoder.dashboard.common.pojo.CommonResult;
@@ -14,14 +14,14 @@ import java.util.Date; @@ -14,14 +14,14 @@ import java.util.Date;
14 * 14 *
15 * @author 芋道源码 15 * @author 芋道源码
16 */ 16 */
17 -@TableName("sys_api_access_log") 17 +@TableName("inf_api_access_log")
18 @Data 18 @Data
19 @EqualsAndHashCode(callSuper = true) 19 @EqualsAndHashCode(callSuper = true)
20 @ToString(callSuper = true) 20 @ToString(callSuper = true)
21 @Builder 21 @Builder
22 @NoArgsConstructor 22 @NoArgsConstructor
23 @AllArgsConstructor 23 @AllArgsConstructor
24 -public class SysApiAccessLogDO extends BaseDO { 24 +public class InfApiAccessLogDO extends BaseDO {
25 25
26 /** 26 /**
27 * 编号 27 * 编号
src/main/java/cn/iocoder/dashboard/modules/infra/dal/dataobject/logger/InfApiErrorLogDO.java 0 → 100644
  1 +package cn.iocoder.dashboard.modules.infra.dal.dataobject.logger;
  2 +
  3 +public class InfApiErrorLogDO {
  4 +}
src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/logger/SysApiAccessLogMapper.java renamed to src/main/java/cn/iocoder/dashboard/modules/infra/dal/mysql/logger/InfApiAccessLogMapper.java
1 -package cn.iocoder.dashboard.modules.system.dal.mysql.logger; 1 +package cn.iocoder.dashboard.modules.infra.dal.mysql.logger;
2 2
3 import cn.iocoder.dashboard.common.pojo.PageResult; 3 import cn.iocoder.dashboard.common.pojo.PageResult;
4 import cn.iocoder.dashboard.framework.mybatis.core.mapper.BaseMapperX; 4 import cn.iocoder.dashboard.framework.mybatis.core.mapper.BaseMapperX;
5 import cn.iocoder.dashboard.framework.mybatis.core.query.QueryWrapperX; 5 import cn.iocoder.dashboard.framework.mybatis.core.query.QueryWrapperX;
6 -import cn.iocoder.dashboard.modules.system.controller.logger.vo.apiaccesslog.SysApiAccessLogExportReqVO;  
7 -import cn.iocoder.dashboard.modules.system.controller.logger.vo.apiaccesslog.SysApiAccessLogPageReqVO;  
8 -import cn.iocoder.dashboard.modules.system.dal.dataobject.logger.SysApiAccessLogDO; 6 +import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogExportReqVO;
  7 +import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogPageReqVO;
  8 +import cn.iocoder.dashboard.modules.infra.dal.dataobject.logger.InfApiAccessLogDO;
9 import org.apache.ibatis.annotations.Mapper; 9 import org.apache.ibatis.annotations.Mapper;
10 10
11 import java.util.List; 11 import java.util.List;
@@ -16,10 +16,10 @@ import java.util.List; @@ -16,10 +16,10 @@ import java.util.List;
16 * @author 芋道源码 16 * @author 芋道源码
17 */ 17 */
18 @Mapper 18 @Mapper
19 -public interface SysApiAccessLogMapper extends BaseMapperX<SysApiAccessLogDO> { 19 +public interface InfApiAccessLogMapper extends BaseMapperX<InfApiAccessLogDO> {
20 20
21 - default PageResult<SysApiAccessLogDO> selectPage(SysApiAccessLogPageReqVO reqVO) {  
22 - return selectPage(reqVO, new QueryWrapperX<SysApiAccessLogDO>() 21 + default PageResult<InfApiAccessLogDO> selectPage(InfApiAccessLogPageReqVO reqVO) {
  22 + return selectPage(reqVO, new QueryWrapperX<InfApiAccessLogDO>()
23 .eqIfPresent("user_id", reqVO.getUserId()) 23 .eqIfPresent("user_id", reqVO.getUserId())
24 .eqIfPresent("user_type", reqVO.getUserType()) 24 .eqIfPresent("user_type", reqVO.getUserType())
25 .eqIfPresent("application_name", reqVO.getApplicationName()) 25 .eqIfPresent("application_name", reqVO.getApplicationName())
@@ -27,11 +27,12 @@ public interface SysApiAccessLogMapper extends BaseMapperX&lt;SysApiAccessLogDO&gt; { @@ -27,11 +27,12 @@ public interface SysApiAccessLogMapper extends BaseMapperX&lt;SysApiAccessLogDO&gt; {
27 .betweenIfPresent("begin_time", reqVO.getBeginBeginTime(), reqVO.getEndBeginTime()) 27 .betweenIfPresent("begin_time", reqVO.getBeginBeginTime(), reqVO.getEndBeginTime())
28 .geIfPresent("duration", reqVO.getDuration()) 28 .geIfPresent("duration", reqVO.getDuration())
29 .eqIfPresent("result_code", reqVO.getResultCode()) 29 .eqIfPresent("result_code", reqVO.getResultCode())
  30 + .orderByDesc("id")
30 ); 31 );
31 } 32 }
32 33
33 - default List<SysApiAccessLogDO> selectList(SysApiAccessLogExportReqVO reqVO) {  
34 - return selectList(new QueryWrapperX<SysApiAccessLogDO>() 34 + default List<InfApiAccessLogDO> selectList(InfApiAccessLogExportReqVO reqVO) {
  35 + return selectList(new QueryWrapperX<InfApiAccessLogDO>()
35 .eqIfPresent("user_id", reqVO.getUserId()) 36 .eqIfPresent("user_id", reqVO.getUserId())
36 .eqIfPresent("user_type", reqVO.getUserType()) 37 .eqIfPresent("user_type", reqVO.getUserType())
37 .eqIfPresent("application_name", reqVO.getApplicationName()) 38 .eqIfPresent("application_name", reqVO.getApplicationName())
@@ -39,6 +40,7 @@ public interface SysApiAccessLogMapper extends BaseMapperX&lt;SysApiAccessLogDO&gt; { @@ -39,6 +40,7 @@ public interface SysApiAccessLogMapper extends BaseMapperX&lt;SysApiAccessLogDO&gt; {
39 .betweenIfPresent("begin_time", reqVO.getBeginBeginTime(), reqVO.getEndBeginTime()) 40 .betweenIfPresent("begin_time", reqVO.getBeginBeginTime(), reqVO.getEndBeginTime())
40 .geIfPresent("duration", reqVO.getDuration()) 41 .geIfPresent("duration", reqVO.getDuration())
41 .eqIfPresent("result_code", reqVO.getResultCode()) 42 .eqIfPresent("result_code", reqVO.getResultCode())
  43 + .orderByDesc("id")
42 ); 44 );
43 } 45 }
44 46
src/main/java/cn/iocoder/dashboard/modules/system/service/logger/SysApiAccessLogService.java renamed to src/main/java/cn/iocoder/dashboard/modules/infra/service/logger/InfApiAccessLogService.java
1 -package cn.iocoder.dashboard.modules.system.service.logger; 1 +package cn.iocoder.dashboard.modules.infra.service.logger;
2 2
3 import cn.iocoder.dashboard.common.pojo.PageResult; 3 import cn.iocoder.dashboard.common.pojo.PageResult;
4 import cn.iocoder.dashboard.framework.logger.apilog.core.service.ApiAccessLogFrameworkService; 4 import cn.iocoder.dashboard.framework.logger.apilog.core.service.ApiAccessLogFrameworkService;
5 -import cn.iocoder.dashboard.modules.system.controller.logger.vo.apiaccesslog.SysApiAccessLogExportReqVO;  
6 -import cn.iocoder.dashboard.modules.system.controller.logger.vo.apiaccesslog.SysApiAccessLogPageReqVO;  
7 -import cn.iocoder.dashboard.modules.system.dal.dataobject.logger.SysApiAccessLogDO; 5 +import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogExportReqVO;
  6 +import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogPageReqVO;
  7 +import cn.iocoder.dashboard.modules.infra.dal.dataobject.logger.InfApiAccessLogDO;
8 8
9 import java.util.List; 9 import java.util.List;
10 10
@@ -13,7 +13,7 @@ import java.util.List; @@ -13,7 +13,7 @@ import java.util.List;
13 * 13 *
14 * @author 芋道源码 14 * @author 芋道源码
15 */ 15 */
16 -public interface SysApiAccessLogService extends ApiAccessLogFrameworkService { 16 +public interface InfApiAccessLogService extends ApiAccessLogFrameworkService {
17 17
18 /** 18 /**
19 * 获得 API 访问日志 19 * 获得 API 访问日志
@@ -21,7 +21,7 @@ public interface SysApiAccessLogService extends ApiAccessLogFrameworkService { @@ -21,7 +21,7 @@ public interface SysApiAccessLogService extends ApiAccessLogFrameworkService {
21 * @param id 编号 21 * @param id 编号
22 * @return API 访问日志 22 * @return API 访问日志
23 */ 23 */
24 - SysApiAccessLogDO getApiAccessLog(Long id); 24 + InfApiAccessLogDO getApiAccessLog(Long id);
25 25
26 /** 26 /**
27 * 获得 API 访问日志分页 27 * 获得 API 访问日志分页
@@ -29,7 +29,7 @@ public interface SysApiAccessLogService extends ApiAccessLogFrameworkService { @@ -29,7 +29,7 @@ public interface SysApiAccessLogService extends ApiAccessLogFrameworkService {
29 * @param pageReqVO 分页查询 29 * @param pageReqVO 分页查询
30 * @return API 访问日志分页 30 * @return API 访问日志分页
31 */ 31 */
32 - PageResult<SysApiAccessLogDO> getApiAccessLogPage(SysApiAccessLogPageReqVO pageReqVO); 32 + PageResult<InfApiAccessLogDO> getApiAccessLogPage(InfApiAccessLogPageReqVO pageReqVO);
33 33
34 /** 34 /**
35 * 获得 API 访问日志列表, 用于 Excel 导出 35 * 获得 API 访问日志列表, 用于 Excel 导出
@@ -37,6 +37,6 @@ public interface SysApiAccessLogService extends ApiAccessLogFrameworkService { @@ -37,6 +37,6 @@ public interface SysApiAccessLogService extends ApiAccessLogFrameworkService {
37 * @param exportReqVO 查询条件 37 * @param exportReqVO 查询条件
38 * @return API 访问日志分页 38 * @return API 访问日志分页
39 */ 39 */
40 - List<SysApiAccessLogDO> getApiAccessLogList(SysApiAccessLogExportReqVO exportReqVO); 40 + List<InfApiAccessLogDO> getApiAccessLogList(InfApiAccessLogExportReqVO exportReqVO);
41 41
42 } 42 }
src/main/java/cn/iocoder/dashboard/modules/system/service/logger/impl/SysApiAccessLogServiceImpl.java renamed to src/main/java/cn/iocoder/dashboard/modules/infra/service/logger/impl/InfApiAccessLogServiceImpl.java
1 -package cn.iocoder.dashboard.modules.system.service.logger.impl; 1 +package cn.iocoder.dashboard.modules.infra.service.logger.impl;
2 2
3 import cn.iocoder.dashboard.common.pojo.PageResult; 3 import cn.iocoder.dashboard.common.pojo.PageResult;
4 import cn.iocoder.dashboard.framework.logger.apilog.core.service.dto.ApiAccessLogCreateDTO; 4 import cn.iocoder.dashboard.framework.logger.apilog.core.service.dto.ApiAccessLogCreateDTO;
5 -import cn.iocoder.dashboard.modules.system.controller.logger.vo.apiaccesslog.SysApiAccessLogExportReqVO;  
6 -import cn.iocoder.dashboard.modules.system.controller.logger.vo.apiaccesslog.SysApiAccessLogPageReqVO;  
7 -import cn.iocoder.dashboard.modules.system.convert.logger.SysApiAccessLogConvert;  
8 -import cn.iocoder.dashboard.modules.system.dal.dataobject.logger.SysApiAccessLogDO;  
9 -import cn.iocoder.dashboard.modules.system.dal.mysql.logger.SysApiAccessLogMapper;  
10 -import cn.iocoder.dashboard.modules.system.service.logger.SysApiAccessLogService; 5 +import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogExportReqVO;
  6 +import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogPageReqVO;
  7 +import cn.iocoder.dashboard.modules.infra.convert.logger.InfApiAccessLogConvert;
  8 +import cn.iocoder.dashboard.modules.infra.dal.dataobject.logger.InfApiAccessLogDO;
  9 +import cn.iocoder.dashboard.modules.infra.dal.mysql.logger.InfApiAccessLogMapper;
  10 +import cn.iocoder.dashboard.modules.infra.service.logger.InfApiAccessLogService;
11 import org.springframework.scheduling.annotation.Async; 11 import org.springframework.scheduling.annotation.Async;
12 import org.springframework.stereotype.Service; 12 import org.springframework.stereotype.Service;
13 import org.springframework.validation.annotation.Validated; 13 import org.springframework.validation.annotation.Validated;
@@ -23,31 +23,31 @@ import java.util.List; @@ -23,31 +23,31 @@ import java.util.List;
23 */ 23 */
24 @Service 24 @Service
25 @Validated 25 @Validated
26 -public class SysApiAccessLogServiceImpl implements SysApiAccessLogService { 26 +public class InfApiAccessLogServiceImpl implements InfApiAccessLogService {
27 27
28 @Resource 28 @Resource
29 - private SysApiAccessLogMapper apiAccessLogMapper; 29 + private InfApiAccessLogMapper apiAccessLogMapper;
30 30
31 @Override 31 @Override
32 @Async 32 @Async
33 public void createApiAccessLogAsync(@Valid ApiAccessLogCreateDTO createDTO) { 33 public void createApiAccessLogAsync(@Valid ApiAccessLogCreateDTO createDTO) {
34 // 插入 34 // 插入
35 - SysApiAccessLogDO apiAccessLog = SysApiAccessLogConvert.INSTANCE.convert(createDTO); 35 + InfApiAccessLogDO apiAccessLog = InfApiAccessLogConvert.INSTANCE.convert(createDTO);
36 apiAccessLogMapper.insert(apiAccessLog); 36 apiAccessLogMapper.insert(apiAccessLog);
37 } 37 }
38 38
39 @Override 39 @Override
40 - public SysApiAccessLogDO getApiAccessLog(Long id) { 40 + public InfApiAccessLogDO getApiAccessLog(Long id) {
41 return apiAccessLogMapper.selectById(id); 41 return apiAccessLogMapper.selectById(id);
42 } 42 }
43 43
44 @Override 44 @Override
45 - public PageResult<SysApiAccessLogDO> getApiAccessLogPage(SysApiAccessLogPageReqVO pageReqVO) { 45 + public PageResult<InfApiAccessLogDO> getApiAccessLogPage(InfApiAccessLogPageReqVO pageReqVO) {
46 return apiAccessLogMapper.selectPage(pageReqVO); 46 return apiAccessLogMapper.selectPage(pageReqVO);
47 } 47 }
48 48
49 @Override 49 @Override
50 - public List<SysApiAccessLogDO> getApiAccessLogList(SysApiAccessLogExportReqVO exportReqVO) { 50 + public List<InfApiAccessLogDO> getApiAccessLogList(InfApiAccessLogExportReqVO exportReqVO) {
51 return apiAccessLogMapper.selectList(exportReqVO); 51 return apiAccessLogMapper.selectList(exportReqVO);
52 } 52 }
53 53
src/main/java/cn/iocoder/dashboard/modules/system/convert/《芋道 Spring Boot 对象转换 MapStruct 入门》.md
1 -<http://www.iocoder.cn/Spring-Boot/MapStruct/?dashboard> 1 +<http://www.iocoder.cn/Spring-Boot/MapStruct/?yudao>
src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/logger/SysApiErrorLogDO.java deleted
1 -package cn.iocoder.dashboard.modules.system.dal.dataobject.logger;  
2 -  
3 -public class SysApiErrorLogDO {  
4 -}  
src/main/resources/codegen/java/dal/mapper.vm
@@ -52,12 +52,13 @@ public interface ${table.className}Mapper extends BaseMapperX&lt;${table.className} @@ -52,12 +52,13 @@ public interface ${table.className}Mapper extends BaseMapperX&lt;${table.className}
52 default PageResult<${table.className}DO> selectPage(${table.className}PageReqVO reqVO) { 52 default PageResult<${table.className}DO> selectPage(${table.className}PageReqVO reqVO) {
53 return selectPage(reqVO, new QueryWrapperX<${table.className}DO>() 53 return selectPage(reqVO, new QueryWrapperX<${table.className}DO>()
54 #listCondition() 54 #listCondition()
  55 + .orderByDesc("id")# 大多数情况下,id 倒序
55 ); 56 );
56 } 57 }
57 58
58 default List<${table.className}DO> selectList(${table.className}ExportReqVO reqVO) { 59 default List<${table.className}DO> selectList(${table.className}ExportReqVO reqVO) {
59 return selectList(new QueryWrapperX<${table.className}DO>() 60 return selectList(new QueryWrapperX<${table.className}DO>()
60 - #listCondition() 61 + #listCondition()# 大多数情况下,id 倒序
61 ); 62 );
62 } 63 }
63 64