From 7f5aba5012c1753392279f27db3dcf043f5d1318 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期二, 12 五月 2026 21:10:51 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/1.0' into 1.0
---
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpAdminOperationLogController.java | 79 +++++++++++++++++++++++++++++++++++++--
1 files changed, 74 insertions(+), 5 deletions(-)
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpAdminOperationLogController.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpAdminOperationLogController.java
index 1c16a4c..c8bfc18 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpAdminOperationLogController.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpAdminOperationLogController.java
@@ -1,17 +1,25 @@
package com.xiaopeng.operation.controller;
+import cn.afterturn.easypoi.excel.ExcelExportUtil;
+import cn.afterturn.easypoi.excel.entity.ExportParams;
import com.xiaopeng.api.model.operation.XpAdminOperationLog;
import com.xiaopeng.common.core.domain.R;
+import com.xiaopeng.common.core.exception.ServiceException;
+import com.xiaopeng.common.core.utils.WebUtils;
import com.xiaopeng.common.core.web.domain.AjaxResult;
import com.xiaopeng.common.core.web.page.PageInfo;
+import com.xiaopeng.common.log.annotation.AdminOperationLog;
import com.xiaopeng.common.log.enums.AdminBusinessType;
+import com.xiaopeng.common.log.enums.AdminOperationType;
import com.xiaopeng.common.security.annotation.InnerAuth;
import com.xiaopeng.common.security.annotation.Logical;
import com.xiaopeng.common.security.annotation.RequiresPermissions;
+import com.xiaopeng.operation.exportExcle.XpAdminOperationLogExportExcel;
import com.xiaopeng.operation.query.AdminOperationLogPageQuery;
import com.xiaopeng.operation.service.IXpAdminOperationLogService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
+import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -19,7 +27,13 @@
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.time.format.DateTimeFormatter;
import java.time.LocalDateTime;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.LinkedHashMap;
@@ -31,18 +45,51 @@
* 管理后台操作记录
*/
@RestController
-@RequestMapping({"/api/v1/adminOperationLog"})
+@RequestMapping({""})
@Api(tags = "管理后台-操作记录")
public class XpAdminOperationLogController {
+
+ private static final DateTimeFormatter EXPORT_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
@Resource
private IXpAdminOperationLogService adminOperationLogService;
- @RequiresPermissions(value = {"/adminOperationLog/list", "/operationLog/list"}, logical = Logical.OR)
- @GetMapping("/list")
+// @RequiresPermissions(value = {"/adminOperationLog/list", "/operationLog/list"}, logical = Logical.OR)
+ @GetMapping("/api/v1/adminOperationLog/list")
@ApiOperation(value = "管理后台操作记录分页列表", tags = {"管理后台-操作记录"})
public AjaxResult<PageInfo<XpAdminOperationLog>> list(AdminOperationLogPageQuery query) {
return AjaxResult.success(adminOperationLogService.pageList(query));
+ }
+
+ @PostMapping("/api/v1/adminOperationLog/exportExcel")
+ @ApiOperation(value = "管理后台操作记录导出", tags = {"管理后台-操作记录"})
+ @AdminOperationLog(
+ businessType = AdminBusinessType.SYSTEM,
+ operationType = AdminOperationType.EXPORT,
+ content = "导出管理后台操作记录",
+ appendRequestData = true
+ )
+ public void exportExcel(@RequestBody AdminOperationLogPageQuery query) {
+ List<XpAdminOperationLog> list = adminOperationLogService.exportList(query);
+ List<XpAdminOperationLogExportExcel> exportList = list == null ? new ArrayList<>() : list.stream()
+ .map(this::toExportRow)
+ .collect(Collectors.toList());
+ HttpServletResponse response = WebUtils.response();
+ if (response == null) {
+ throw new ServiceException("导出失败:未获取到响应对象");
+ }
+ response.setContentType("application/vnd.ms-excel");
+ response.setCharacterEncoding("utf-8");
+ try {
+ String fileName = URLEncoder.encode("管理后台操作记录.xls", "utf-8");
+ response.setHeader("Content-dispodition", "attachment;filename=" + fileName);
+ try (Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), XpAdminOperationLogExportExcel.class, exportList);
+ ServletOutputStream outputStream = response.getOutputStream()) {
+ workbook.write(outputStream);
+ }
+ } catch (IOException e) {
+ throw new ServiceException("管理后台操作记录导出失败");
+ }
}
@RequiresPermissions(value = {"/adminOperationLog/list", "/operationLog/list"}, logical = Logical.OR)
@@ -50,6 +97,7 @@
@ApiOperation(value = "管理后台操作记录业务类型列表", tags = {"管理后台-操作记录"})
public AjaxResult<List<Map<String, Object>>> businessTypeList() {
List<Map<String, Object>> list = Arrays.stream(AdminBusinessType.values())
+ .filter(type -> type != AdminBusinessType.OTHER)
.sorted(Comparator.comparingInt(AdminBusinessType::getCode))
.map(type -> {
Map<String, Object> item = new LinkedHashMap<>();
@@ -62,13 +110,34 @@
return AjaxResult.success(list);
}
- @InnerAuth
- @PostMapping("/saveLog")
+// @InnerAuth
+ @PostMapping("/logan/adminOperationLog/saveLog")
public R<Boolean> saveLog(@RequestBody XpAdminOperationLog adminOperationLog) {
+ if (adminOperationLog == null
+ || Integer.valueOf(AdminBusinessType.OTHER.getCode()).equals(adminOperationLog.getBusinessType())
+ || Integer.valueOf(AdminOperationType.OTHER.getCode()).equals(adminOperationLog.getOperationType())) {
+ return R.ok(false);
+ }
if (adminOperationLog.getOperationTime() == null) {
adminOperationLog.setOperationTime(LocalDateTime.now());
}
adminOperationLog.setCreateTime(LocalDateTime.now());
return R.ok(adminOperationLogService.save(adminOperationLog));
}
+
+ private XpAdminOperationLogExportExcel toExportRow(XpAdminOperationLog log) {
+ XpAdminOperationLogExportExcel row = new XpAdminOperationLogExportExcel();
+ row.setBusinessTypeName(log.getBusinessTypeName());
+ row.setOperationTypeName(log.getOperationTypeName());
+ row.setOperatorName(log.getOperatorName());
+ row.setOperatorAccount(log.getOperatorAccount());
+ row.setOperationContent(log.getOperationContent());
+ row.setOperationIp(log.getOperationIp());
+ row.setRequestUri(log.getRequestUri());
+ row.setRequestMethod(log.getRequestMethod());
+ row.setStatusName(Integer.valueOf(0).equals(log.getStatus()) ? "成功" : "失败");
+ row.setErrorMsg(log.getErrorMsg());
+ row.setOperationTime(log.getOperationTime() == null ? null : EXPORT_TIME_FORMATTER.format(log.getOperationTime()));
+ return row;
+ }
}
--
Gitblit v1.7.1