From 858f515995fd1dca7cf825069ce38c32703298d0 Mon Sep 17 00:00:00 2001
From: peng <peng.com>
Date: 星期五, 07 十一月 2025 14:14:50 +0800
Subject: [PATCH] 报名人员导出
---
backend/src/main/java/com/rongyichuang/player/api/PlayerExportController.java | 63 +++++++++++++++++++++++++++++++
1 files changed, 63 insertions(+), 0 deletions(-)
diff --git a/backend/src/main/java/com/rongyichuang/player/api/PlayerExportController.java b/backend/src/main/java/com/rongyichuang/player/api/PlayerExportController.java
new file mode 100644
index 0000000..146273c
--- /dev/null
+++ b/backend/src/main/java/com/rongyichuang/player/api/PlayerExportController.java
@@ -0,0 +1,63 @@
+package com.rongyichuang.player.api;
+
+import com.rongyichuang.player.service.PlayerApplicationService;
+import jakarta.servlet.http.HttpServletResponse;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+
+@RestController
+@RequestMapping("/player/export")
+public class PlayerExportController {
+
+ private static final Logger log = LoggerFactory.getLogger(PlayerExportController.class);
+
+ private final PlayerApplicationService playerApplicationService;
+
+ public PlayerExportController(PlayerApplicationService playerApplicationService) {
+ this.playerApplicationService = playerApplicationService;
+ }
+
+ /**
+ * 瀵煎嚭姣旇禌鎶ュ悕浜哄憳Excel
+ */
+ @GetMapping("/applications")
+ public void exportApplications(
+ @RequestParam(required = false) String name,
+ @RequestParam(required = false) Long activityId,
+ @RequestParam(required = false) Integer state,
+ HttpServletResponse response) {
+ try {
+ log.info("瀵煎嚭姣旇禌鎶ュ悕浜哄憳Excel, name: {}, activityId: {}, state: {}", name, activityId, state);
+
+ // 鑾峰彇Excel鏁版嵁
+ byte[] excelData = playerApplicationService.exportApplicationsToExcel(name, activityId, state);
+
+ // 璁剧疆鍝嶅簲澶�
+ response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
+ String fileName = "鎶ュ悕浜哄憳_" + System.currentTimeMillis() + ".xlsx";
+ String encodedFileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8.toString());
+ response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + encodedFileName);
+ response.setHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, HttpHeaders.CONTENT_DISPOSITION);
+ response.setContentLength(excelData.length);
+
+ // 鍐欏叆鍝嶅簲
+ response.getOutputStream().write(excelData);
+ response.getOutputStream().flush();
+ } catch (Exception e) {
+ log.error("瀵煎嚭姣旇禌鎶ュ悕浜哄憳Excel澶辫触", e);
+ try {
+ response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ response.getWriter().write("瀵煎嚭澶辫触: " + e.getMessage());
+ } catch (IOException ioException) {
+ log.error("鍐欏叆閿欒鍝嶅簲澶辫触", ioException);
+ }
+ }
+ }
+}
\ No newline at end of file
--
Gitblit v1.8.0