From 14002e7331b6bfd9e67458b80f3f2c9abe587fce Mon Sep 17 00:00:00 2001 From: litianxiang Date: Mon, 13 Apr 2026 10:22:43 +0800 Subject: [PATCH] =?UTF-8?q?GlobalAward=E4=B8=8B=E8=BD=BD=E8=A1=A5=E5=85=85?= =?UTF-8?q?=E5=92=8C=E6=95=B0=E9=87=8F=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../da/controller/GlobalAwardController.java | 6 +++ .../com/ai/da/service/GlobalAwardService.java | 6 +++ .../service/impl/GlobalAwardServiceImpl.java | 52 ++++++++++++++++--- 3 files changed, 56 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/ai/da/controller/GlobalAwardController.java b/src/main/java/com/ai/da/controller/GlobalAwardController.java index e36a7b77..9d1171cc 100644 --- a/src/main/java/com/ai/da/controller/GlobalAwardController.java +++ b/src/main/java/com/ai/da/controller/GlobalAwardController.java @@ -182,6 +182,12 @@ public class GlobalAwardController { return Response.success(exportedCount); } + @GetMapping("/contestants/count") + @ApiOperation(value = "查询参赛者总数", notes = "查询数据库中参赛者的总数量") + public Response getContestantCount() { + return Response.success(globalAwardService.getContestantCount()); + } + } diff --git a/src/main/java/com/ai/da/service/GlobalAwardService.java b/src/main/java/com/ai/da/service/GlobalAwardService.java index 5dcde74f..16091a9b 100644 --- a/src/main/java/com/ai/da/service/GlobalAwardService.java +++ b/src/main/java/com/ai/da/service/GlobalAwardService.java @@ -39,6 +39,12 @@ public interface GlobalAwardService { * @return 导出的参赛者数量 */ int exportContestantFiles(Integer minContestantNumber, Integer maxContestantNumber) throws Exception; + + /** + * 查询参赛者总数 + * @return 参赛者数量 + */ + long getContestantCount(); } diff --git a/src/main/java/com/ai/da/service/impl/GlobalAwardServiceImpl.java b/src/main/java/com/ai/da/service/impl/GlobalAwardServiceImpl.java index 210da7de..ffb84c07 100644 --- a/src/main/java/com/ai/da/service/impl/GlobalAwardServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/GlobalAwardServiceImpl.java @@ -265,11 +265,9 @@ public class GlobalAwardServiceImpl implements GlobalAwardService { r.createCell(ci++).setCellValue(cst.getPhoneNumber() == null ? "" : cst.getPhoneNumber()); r.createCell(ci++).setCellValue(cst.getDesignTitle() == null ? "" : cst.getDesignTitle()); r.createCell(ci++).setCellValue(cst.getDesignDescription() == null ? "" : cst.getDesignDescription()); -// r.createCell(ci++).setCellValue(cst.getPdfPath() == null ? "" : cst.getPdfPath()); -// r.createCell(ci++).setCellValue(cst.getVideoPath() == null ? "" : cst.getVideoPath()); - // 视频时长(秒) + r.createCell(ci++).setCellValue(cst.getPdfPath() == null ? "" : cst.getPdfPath()); + r.createCell(ci++).setCellValue(cst.getVideoPath() == null ? "" : cst.getVideoPath()); r.createCell(ci++).setCellValue(cst.getVideoDuration() == null ? "" : cst.getVideoDuration().toString()); - // 视频大小、PDF 大小:以 MB 导出,保留两位小数 if (cst.getVideoSize() == null) { r.createCell(ci++).setCellValue(""); } else { @@ -332,11 +330,9 @@ public class GlobalAwardServiceImpl implements GlobalAwardService { r.createCell(ci++).setCellValue(cst.getPhoneNumber() == null ? "" : cst.getPhoneNumber()); r.createCell(ci++).setCellValue(cst.getDesignTitle() == null ? "" : cst.getDesignTitle()); r.createCell(ci++).setCellValue(cst.getDesignDescription() == null ? "" : cst.getDesignDescription()); -// r.createCell(ci++).setCellValue(cst.getPdfPath() == null ? "" : cst.getPdfPath()); -// r.createCell(ci++).setCellValue(cst.getVideoPath() == null ? "" : cst.getVideoPath()); - // 视频时长(秒) + r.createCell(ci++).setCellValue(cst.getPdfPath() == null ? "" : cst.getPdfPath()); + r.createCell(ci++).setCellValue(cst.getVideoPath() == null ? "" : cst.getVideoPath()); r.createCell(ci++).setCellValue(cst.getVideoDuration() == null ? "" : cst.getVideoDuration().toString()); - // 视频大小、PDF 大小:以 MB 导出,保留两位小数 if (cst.getVideoSize() == null) { r.createCell(ci++).setCellValue(""); } else { @@ -549,6 +545,37 @@ public class GlobalAwardServiceImpl implements GlobalAwardService { } } + // 生成参赛者信息 txt 文件 + try { + StringBuilder sb = new StringBuilder(); + sb.append("=== Contestant Information ===\n\n"); + sb.append("ID: ").append(nullSafe(contestant.getId())).append("\n"); + sb.append("Email: ").append(nullSafe(contestant.getEmail())).append("\n"); + sb.append("Contestant Number: ").append(contestantNumber).append("\n"); + sb.append("First Name: ").append(nullSafe(contestant.getFirstName())).append("\n"); + sb.append("Last Name: ").append(nullSafe(contestant.getLastName())).append("\n"); + sb.append("Gender: ").append(nullSafe(contestant.getGender())).append("\n"); + sb.append("Occupation: ").append(nullSafe(contestant.getOccupation())).append("\n"); + sb.append("Age: ").append(contestant.getAge() != null ? contestant.getAge() : "N/A").append("\n"); + sb.append("Country/Region/City: ").append(nullSafe(contestant.getCountryRegionCity())).append("\n"); + sb.append("Phone Number: ").append(nullSafe(contestant.getPhoneNumber())).append("\n"); + sb.append("Design Title: ").append(nullSafe(contestant.getDesignTitle())).append("\n"); + sb.append("Design Description: ").append(nullSafe(contestant.getDesignDescription())).append("\n"); + sb.append("PDF Path: ").append(nullSafe(contestant.getPdfPath())).append("\n"); + sb.append("PDF Size (bytes): ").append(contestant.getPdfSize() != null ? contestant.getPdfSize() : "N/A").append("\n"); + sb.append("Video Path: ").append(nullSafe(contestant.getVideoPath())).append("\n"); + sb.append("Video Duration (seconds): ").append(contestant.getVideoDuration() != null ? contestant.getVideoDuration() : "N/A").append("\n"); + sb.append("Video Size (bytes): ").append(contestant.getVideoSize() != null ? contestant.getVideoSize() : "N/A").append("\n"); + sb.append("Created At: ").append(contestant.getCreatedAt() != null ? contestant.getCreatedAt() : "N/A").append("\n"); + sb.append("Updated At: ").append(contestant.getUpdatedAt() != null ? contestant.getUpdatedAt() : "N/A").append("\n"); + + String infoFilePath = contestantPath.resolve("contestant_info.txt").toString(); + Files.write(Paths.get(infoFilePath), sb.toString().getBytes(java.nio.charset.StandardCharsets.UTF_8)); + log.info("Generated info file for contestant {}", contestantNumber); + } catch (Exception e) { + log.error("Failed to generate info file for contestant {}: {}", contestantNumber, e.getMessage()); + } + exportedCount++; } @@ -583,6 +610,15 @@ public class GlobalAwardServiceImpl implements GlobalAwardService { // 下载文件 minioUtil.downloadMinioObjectToLocal(bucketName, objectName, localFilePath.toString()); } + + @Override + public long getContestantCount() { + return contestantMapper.selectCount(null); + } + + private String nullSafe(String value) { + return value != null ? value : "N/A"; + } }