视频模板代码框架

This commit is contained in:
spllzh
2025-10-09 16:15:39 +08:00
parent 6dff49fcc1
commit b047a3be90
38 changed files with 971 additions and 116 deletions

View File

@@ -0,0 +1,211 @@
package com.rj.controller;
import com.rj.service.IDetectVideoTemplateService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.HashMap;
import java.util.Map;
/**
* 检测视频模板控制器
*/
@Slf4j
@RestController
@RequestMapping("/api/detect-video-template")
@Tag(name = "检测视频模板", description = "检测视频模板相关接口")
public class DetectVideoTemplateController {
@Autowired
private IDetectVideoTemplateService detectVideoTemplateService;
/**
* 视频模板检测接口
*/
@PostMapping("/uploadAndDetect")
@Operation(summary = "视频模板检测", description = "检测视频模板信息")
public ResponseEntity<Map<String, Object>> detectVideoTemplate(
@Parameter(description = "头像文件", required = true)
@RequestParam("file") MultipartFile file,
@Parameter(description = "用户ID", required = false)
@RequestParam(value = "userId", required = false) String userId,
@Parameter(description = "所属人姓名", required = false)
@RequestParam(value = "ownerName", required = false) String ownerName,
@Parameter(description = "所属人电话", required = false)
@RequestParam(value = "ownerPhone", required = false) String ownerPhone,
@Parameter(description = "头像名称", required = false)
@RequestParam(value = "avatarName", required = false) String avatarName,
@Parameter(description = "模型名称", required = false)
@RequestParam(value = "model", required = false) String model,
@Parameter(description = "短链接有效期默认1小时", required = false)
@RequestParam(value = "expiresInSeconds", defaultValue = "360000") int expiresInSeconds ){
Map<String, Object> result = new HashMap<>();
try {
// 执行视频模板检测
com.rj.entity.DetectVideoTemplate detectLog = detectVideoTemplateService.detectVideoTemplateAndSave("", ownerName, ownerPhone, avatarName, model);
result.put("success", detectLog.getSuccess());
result.put("message", detectLog.getSuccess() ? "视频模板检测成功" : "视频模板检测失败");
result.put("videoUrl", "");
result.put("requestId", detectLog.getRequestId());
result.put("templateId", detectLog.getTemplateId());
result.put("processingTimeMs", detectLog.getProcessingTimeMs());
result.put("ownerName", detectLog.getOwnerName());
result.put("ownerPhone", detectLog.getOwnerPhone());
result.put("avatarName", detectLog.getAvatarName());
result.put("model", detectLog.getModel());
if (!detectLog.getSuccess()) {
result.put("errorMessage", detectLog.getErrorMessage());
return ResponseEntity.badRequest().body(result);
}
return ResponseEntity.ok(result);
} catch (Exception e) {
log.error("视频模板检测失败: {}", e.getMessage(), e);
result.put("success", false);
result.put("message", "视频模板检测失败: " + e.getMessage());
return ResponseEntity.internalServerError().body(result);
}
}
/**
* 视频模板检测接口JSON格式
*/
@PostMapping("/detect-json")
@Operation(summary = "视频模板检测(JSON)", description = "检测视频模板信息支持JSON请求体")
public ResponseEntity<Map<String, Object>> detectVideoTemplateJson(@RequestBody Map<String, String> requestBody) {
Map<String, Object> result = new HashMap<>();
try {
String videoUrl = requestBody.get("videoUrl");
String ownerName = requestBody.get("ownerName");
String ownerPhone = requestBody.get("ownerPhone");
String model = requestBody.get("model");
String avatarName = requestBody.get("avatarName");
if (videoUrl == null || videoUrl.trim().isEmpty()) {
result.put("success", false);
result.put("message", "视频URL不能为空");
return ResponseEntity.badRequest().body(result);
}
log.info("开始视频模板检测JSON视频URL: {}", videoUrl);
// 执行视频模板检测
com.rj.entity.DetectVideoTemplate detectLog = detectVideoTemplateService.detectVideoTemplateAndSave(videoUrl, ownerName, ownerPhone, avatarName, model);
result.put("success", detectLog.getSuccess());
result.put("message", detectLog.getSuccess() ? "视频模板检测成功" : "视频模板检测失败");
result.put("videoUrl", videoUrl);
result.put("requestId", detectLog.getRequestId());
result.put("templateId", detectLog.getTemplateId());
result.put("processingTimeMs", detectLog.getProcessingTimeMs());
result.put("ownerName", detectLog.getOwnerName());
result.put("ownerPhone", detectLog.getOwnerPhone());
result.put("avatarName", detectLog.getAvatarName());
result.put("model", detectLog.getModel());
if (!detectLog.getSuccess()) {
result.put("errorMessage", detectLog.getErrorMessage());
return ResponseEntity.badRequest().body(result);
}
return ResponseEntity.ok(result);
} catch (Exception e) {
log.error("视频模板检测失败: {}", e.getMessage(), e);
result.put("success", false);
result.put("message", "视频模板检测失败: " + e.getMessage());
return ResponseEntity.internalServerError().body(result);
}
}
/**
* 分页查询检测视频模板日志
*/
@GetMapping("/logs")
@Operation(summary = "查询检测日志", description = "分页查询检测视频模板日志")
public ResponseEntity<Map<String, Object>> getLogs(
@Parameter(description = "当前页", required = true)
@RequestParam(defaultValue = "1") Integer current,
@Parameter(description = "每页大小", required = true)
@RequestParam(defaultValue = "10") Integer size,
@Parameter(description = "是否成功", required = false)
@RequestParam(required = false) Boolean success,
@Parameter(description = "开始时间", required = false)
@RequestParam(required = false) String startTime,
@Parameter(description = "结束时间", required = false)
@RequestParam(required = false) String endTime,
@Parameter(description = "所属人姓名", required = false)
@RequestParam(required = false) String ownerName,
@Parameter(description = "所属人电话", required = false)
@RequestParam(required = false) String ownerPhone,
@Parameter(description = "头像名称", required = false)
@RequestParam(required = false) String avatarName) {
Map<String, Object> result = new HashMap<>();
try {
com.baomidou.mybatisplus.extension.plugins.pagination.Page<com.rj.entity.DetectVideoTemplate> page =
detectVideoTemplateService.getPageList(current, size, success, startTime, endTime, ownerName, ownerPhone, avatarName);
result.put("success", true);
result.put("message", "查询成功");
result.put("data", page.getRecords());
result.put("total", page.getTotal());
result.put("current", page.getCurrent());
result.put("size", page.getSize());
result.put("pages", page.getPages());
return ResponseEntity.ok(result);
} catch (Exception e) {
log.error("查询检测日志失败: {}", e.getMessage(), e);
result.put("success", false);
result.put("message", "查询失败: " + e.getMessage());
return ResponseEntity.internalServerError().body(result);
}
}
/**
* 获取统计信息
*/
@GetMapping("/statistics")
@Operation(summary = "获取统计信息", description = "获取检测视频模板的统计信息")
public ResponseEntity<Map<String, Object>> getStatistics(
@Parameter(description = "开始时间", required = false)
@RequestParam(required = false) String startTime,
@Parameter(description = "结束时间", required = false)
@RequestParam(required = false) String endTime) {
Map<String, Object> result = new HashMap<>();
try {
Map<String, Object> statistics = detectVideoTemplateService.getStatistics(startTime, endTime);
result.put("success", true);
result.put("message", "统计信息获取成功");
result.put("data", statistics);
return ResponseEntity.ok(result);
} catch (Exception e) {
log.error("获取统计信息失败: {}", e.getMessage(), e);
result.put("success", false);
result.put("message", "获取统计信息失败: " + e.getMessage());
return ResponseEntity.internalServerError().body(result);
}
}
}