视频模板代码框架
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -16,12 +16,12 @@ import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 人脸检测控制器
|
||||
* 图像检测控制器
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/api/face-detect")
|
||||
@Tag(name = "人脸检测", description = "人脸检测相关接口")
|
||||
@Tag(name = "图像检测", description = "图像检测相关接口")
|
||||
public class FaceDetectController {
|
||||
|
||||
@Autowired
|
||||
@@ -34,10 +34,10 @@ public class FaceDetectController {
|
||||
private MinIOUrlGenerator urlGenerator;
|
||||
|
||||
/**
|
||||
* 人脸检测接口
|
||||
* 图像检测接口
|
||||
*/
|
||||
@PostMapping("/detect")
|
||||
@Operation(summary = "人脸检测", description = "检测图片中的人脸信息")
|
||||
@Operation(summary = "图像检测", description = "检测图片中的图像信息")
|
||||
public ResponseEntity<Map<String, Object>> detectFace(
|
||||
@Parameter(description = "图片URL", required = true)
|
||||
@RequestParam String imageUrl,
|
||||
@@ -53,13 +53,13 @@ public class FaceDetectController {
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
|
||||
try {
|
||||
log.info("开始人脸检测,图片URL: {}", imageUrl);
|
||||
log.info("开始图像检测,图片URL: {}", imageUrl);
|
||||
|
||||
// 执行人脸检测
|
||||
// 执行图像检测
|
||||
com.rj.entity.FaceDetectLog detectLog = faceDetectLogService.detectFaceAndSave(imageUrl, ownerName, ownerPhone, avatarName);
|
||||
|
||||
result.put("success", detectLog.getSuccess());
|
||||
result.put("message", detectLog.getSuccess() ? "人脸检测成功" : "人脸检测失败");
|
||||
result.put("message", detectLog.getSuccess() ? "图像检测成功" : "图像检测失败");
|
||||
result.put("imageUrl", imageUrl);
|
||||
result.put("requestId", detectLog.getRequestId());
|
||||
result.put("faceCount", detectLog.getFaceCount());
|
||||
@@ -76,19 +76,71 @@ public class FaceDetectController {
|
||||
return ResponseEntity.ok(result);
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("人脸检测失败: {}", e.getMessage(), e);
|
||||
log.error("图像检测失败: {}", e.getMessage(), e);
|
||||
result.put("success", false);
|
||||
result.put("message", "人脸检测失败: " + e.getMessage());
|
||||
result.put("message", "图像检测失败: " + e.getMessage());
|
||||
return ResponseEntity.internalServerError().body(result);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 图像检测接口(JSON格式)
|
||||
*/
|
||||
@PostMapping("/detect-json")
|
||||
@Operation(summary = "图像检测(JSON)", description = "检测图片中的图像信息,支持JSON请求体")
|
||||
public ResponseEntity<Map<String, Object>> detectFaceJson(@RequestBody Map<String, String> requestBody) {
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
|
||||
try {
|
||||
String imageUrl = requestBody.get("imageUrl");
|
||||
String ownerName = requestBody.get("ownerName");
|
||||
String ownerPhone = requestBody.get("ownerPhone");
|
||||
String model = requestBody.get("model");
|
||||
String avatarName = requestBody.get("avatarName");
|
||||
|
||||
if (imageUrl == null || imageUrl.trim().isEmpty()) {
|
||||
result.put("success", false);
|
||||
result.put("message", "图片URL不能为空");
|
||||
return ResponseEntity.badRequest().body(result);
|
||||
}
|
||||
|
||||
log.info("开始图像检测(JSON),图片URL: {}", imageUrl);
|
||||
|
||||
// 执行图像检测
|
||||
com.rj.entity.FaceDetectLog detectLog = faceDetectLogService.detectFaceAndSave(imageUrl, ownerName, ownerPhone, avatarName, model);
|
||||
|
||||
result.put("success", detectLog.getSuccess());
|
||||
result.put("message", detectLog.getSuccess() ? "图像检测成功" : "图像检测失败");
|
||||
result.put("imageUrl", imageUrl);
|
||||
result.put("requestId", detectLog.getRequestId());
|
||||
result.put("faceCount", detectLog.getFaceCount());
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 头衔上传接口
|
||||
* 实现:文件上传 -> 生成短链接 -> 人脸检测
|
||||
* 实现:文件上传 -> 生成短链接 -> 图像检测
|
||||
*/
|
||||
@PostMapping("/avatar/upload")
|
||||
@Operation(summary = "头衔上传", description = "上传头像文件,生成短链接并进行人脸检测")
|
||||
@Operation(summary = "头衔上传", description = "上传头像文件,生成短链接并进行图像检测")
|
||||
public ResponseEntity<Map<String, Object>> uploadAvatar(
|
||||
@Parameter(description = "头像文件", required = true)
|
||||
@RequestParam("file") MultipartFile file,
|
||||
@@ -152,8 +204,8 @@ public class FaceDetectController {
|
||||
String shortUrl = urlInfo.getUrl();
|
||||
log.info("短链接生成成功: {}", shortUrl);
|
||||
|
||||
// 4. 进行人脸检测
|
||||
log.info("开始进行人脸检测,使用模型: {}", model != null ? model : "默认模型");
|
||||
// 4. 进行图像检测
|
||||
log.info("开始进行图像检测,使用模型: {}", model != null ? model : "默认模型");
|
||||
com.rj.entity.FaceDetectLog detectLog = faceDetectLogService.detectFaceAndSave(shortUrl, ownerName, ownerPhone, avatarName, model);
|
||||
|
||||
// 5. 构建响应结果
|
||||
@@ -171,14 +223,14 @@ public class FaceDetectController {
|
||||
result.put("avatarName", avatarName);
|
||||
result.put("model", model);
|
||||
|
||||
// 人脸检测结果
|
||||
// 图像检测结果
|
||||
result.put("faceDetection", detectLog.toString());
|
||||
|
||||
if (!detectLog.getSuccess()) {
|
||||
result.put("faceDetectionError", detectLog.getErrorMessage());
|
||||
log.warn("人脸检测失败: {}", detectLog.getErrorMessage());
|
||||
log.warn("图像检测失败: {}", detectLog.getErrorMessage());
|
||||
} else {
|
||||
log.info("人脸检测成功,检测到 {} 张人脸", detectLog.getFaceCount());
|
||||
log.info("图像检测成功,检测到 {} 张图像", detectLog.getFaceCount());
|
||||
}
|
||||
|
||||
log.info("头衔上传处理完成,文件URL: {}, 短链接: {}", fileUrl, shortUrl);
|
||||
@@ -211,10 +263,10 @@ public class FaceDetectController {
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询人脸检测日志
|
||||
* 分页查询图像检测日志
|
||||
*/
|
||||
@GetMapping("/logs")
|
||||
@Operation(summary = "分页查询人脸检测日志", description = "分页查询人脸检测日志列表")
|
||||
@Operation(summary = "分页查询图像检测日志", description = "分页查询图像检测日志列表")
|
||||
public ResponseEntity<Map<String, Object>> getLogs(
|
||||
@Parameter(description = "页码", example = "1")
|
||||
@RequestParam(defaultValue = "1") Integer current,
|
||||
@@ -249,7 +301,7 @@ public class FaceDetectController {
|
||||
return ResponseEntity.ok(result);
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("查询人脸检测日志失败: {}", e.getMessage(), e);
|
||||
log.error("查询图像检测日志失败: {}", e.getMessage(), e);
|
||||
result.put("success", false);
|
||||
result.put("message", "查询失败: " + e.getMessage());
|
||||
return ResponseEntity.internalServerError().body(result);
|
||||
@@ -257,10 +309,10 @@ public class FaceDetectController {
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据ID查询人脸检测日志详情
|
||||
* 根据ID查询图像检测日志详情
|
||||
*/
|
||||
@GetMapping("/logs/{id}")
|
||||
@Operation(summary = "查询日志详情", description = "根据ID查询人脸检测日志详情")
|
||||
@Operation(summary = "查询日志详情", description = "根据ID查询图像检测日志详情")
|
||||
public ResponseEntity<Map<String, Object>> getLogById(
|
||||
@Parameter(description = "日志ID", required = true)
|
||||
@PathVariable Long id) {
|
||||
@@ -268,7 +320,7 @@ public class FaceDetectController {
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
|
||||
try {
|
||||
log.info("查询人脸检测日志详情,ID: {}", id);
|
||||
log.info("查询图像检测日志详情,ID: {}", id);
|
||||
|
||||
com.rj.entity.FaceDetectLog log = faceDetectLogService.getById(id);
|
||||
|
||||
@@ -292,10 +344,10 @@ public class FaceDetectController {
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询人脸检测统计信息
|
||||
* 查询图像检测统计信息
|
||||
*/
|
||||
@GetMapping("/statistics")
|
||||
@Operation(summary = "查询统计信息", description = "查询人脸检测统计信息")
|
||||
@Operation(summary = "查询统计信息", description = "查询图像检测统计信息")
|
||||
public ResponseEntity<Map<String, Object>> getStatistics(
|
||||
@Parameter(description = "开始时间")
|
||||
@RequestParam(required = false) String startTime,
|
||||
|
||||
@@ -367,6 +367,8 @@ public class MenuController {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -337,6 +337,8 @@ public class RoleController {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -343,6 +343,8 @@ public class UserRoleController {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user