diff --git a/src/main/java/com/ai/da/mapper/primary/entity/Contestant.java b/src/main/java/com/ai/da/mapper/primary/entity/Contestant.java index afa8a803..0e7241bb 100644 --- a/src/main/java/com/ai/da/mapper/primary/entity/Contestant.java +++ b/src/main/java/com/ai/da/mapper/primary/entity/Contestant.java @@ -59,6 +59,15 @@ public class Contestant { @TableField("video_path") private String videoPath; + @TableField("video_duration") + private Integer videoDuration; + + @TableField("video_size") + private Long videoSize; + + @TableField("pdf_size") + private Long pdfSize; + @TableField("created_at") private LocalDateTime createdAt; diff --git a/src/main/java/com/ai/da/model/dto/ContestantDTO.java b/src/main/java/com/ai/da/model/dto/ContestantDTO.java index 57342903..1390c819 100644 --- a/src/main/java/com/ai/da/model/dto/ContestantDTO.java +++ b/src/main/java/com/ai/da/model/dto/ContestantDTO.java @@ -49,6 +49,15 @@ public class ContestantDTO { @ApiModelProperty(value = "视频文件路径", required = false, example = "contestants/user@example.com/2024/01/video_1234567890.mp4") private String videoPath; + + @ApiModelProperty(value = "视频时长(秒)", required = false, example = "120") + private Integer videoDuration; + + @ApiModelProperty(value = "视频大小(字节)", required = false, example = "10485760") + private Long videoSize; + + @ApiModelProperty(value = "PDF 文件大小(字节)", required = false, example = "524288") + private Long pdfSize; // /** // * 是否确认覆盖已存在记录(false 表示发现已有记录时仅返回 existingRecord,不覆盖) @@ -58,6 +67,8 @@ public class ContestantDTO { @NotBlank private String secureToken; + + } 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 307b84e1..948529d6 100644 --- a/src/main/java/com/ai/da/service/impl/GlobalAwardServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/GlobalAwardServiceImpl.java @@ -172,6 +172,9 @@ public class GlobalAwardServiceImpl implements GlobalAwardService { .designDescription(request.getDesignDescription()) .pdfPath(request.getPdfPath()) .videoPath(request.getVideoPath()) + .videoDuration(request.getVideoDuration()) + .videoSize(request.getVideoSize()) + .pdfSize(request.getPdfSize()) .createdAt(now) .updatedAt(now) .build(); @@ -196,6 +199,9 @@ public class GlobalAwardServiceImpl implements GlobalAwardService { existing.setDesignDescription(request.getDesignDescription()); existing.setPdfPath(request.getPdfPath()); existing.setVideoPath(request.getVideoPath()); + existing.setVideoDuration(request.getVideoDuration()); + existing.setVideoSize(request.getVideoSize()); + existing.setPdfSize(request.getPdfSize()); existing.setUpdatedAt(now); contestantMapper.updateById(existing); resp.put("success", true); @@ -214,7 +220,7 @@ public class GlobalAwardServiceImpl implements GlobalAwardService { String[] headers = new String[] { "contestantNumber", "email", "firstName", "lastName", "gender", "occupation", "age", "countryRegionCity", "phoneNumber", "designTitle", "designDescription", - "pdfPath", "videoPath", "createdAt", "updatedAt" + "pdfPath", "videoPath", "videoDuration", "videoSizeMB", "pdfSizeMB", "createdAt", "updatedAt" }; for (int i = 0; i < headers.length; i++) { Cell c = header.createCell(i); @@ -235,8 +241,23 @@ 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 { + double vMb = cst.getVideoSize() / 1024.0 / 1024.0; + r.createCell(ci++).setCellValue(String.format("%.2f", vMb)); + } + if (cst.getPdfSize() == null) { + r.createCell(ci++).setCellValue(""); + } else { + double pMb = cst.getPdfSize() / 1024.0 / 1024.0; + r.createCell(ci++).setCellValue(String.format("%.2f", pMb)); + } r.createCell(ci++).setCellValue(cst.getCreatedAt() == null ? "" : cst.getCreatedAt().toString()); r.createCell(ci++).setCellValue(cst.getUpdatedAt() == null ? "" : cst.getUpdatedAt().toString()); } @@ -266,7 +287,7 @@ public class GlobalAwardServiceImpl implements GlobalAwardService { String[] headers = new String[] { "contestantNumber", "email", "firstName", "lastName", "gender", "occupation", "age", "countryRegionCity", "phoneNumber", "designTitle", "designDescription", - "pdfPath", "videoPath", "createdAt", "updatedAt" + "pdfPath", "videoPath", "videoDuration", "videoSizeMB", "pdfSizeMB", "createdAt", "updatedAt" }; for (int i = 0; i < headers.length; i++) { Cell c = header.createCell(i); @@ -287,8 +308,23 @@ 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 { + double vMb = cst.getVideoSize() / 1024.0 / 1024.0; + r.createCell(ci++).setCellValue(String.format("%.2f", vMb)); + } + if (cst.getPdfSize() == null) { + r.createCell(ci++).setCellValue(""); + } else { + double pMb = cst.getPdfSize() / 1024.0 / 1024.0; + r.createCell(ci++).setCellValue(String.format("%.2f", pMb)); + } r.createCell(ci++).setCellValue(cst.getCreatedAt() == null ? "" : cst.getCreatedAt().toString()); r.createCell(ci++).setCellValue(cst.getUpdatedAt() == null ? "" : cst.getUpdatedAt().toString()); }