@@ -0,0 +1,169 @@
package com.rj.controller ;
import com.rj.service.IFaceDetectLogService ;
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 java.util.HashMap ;
import java.util.Map ;
/**
* 人脸检测控制器
*/
@Slf4j
@RestController
@RequestMapping ( " /api/face-detect " )
@Tag ( name = " 人脸检测 " , description = " 人脸检测相关接口 " )
public class FaceDetectController {
@Autowired
private IFaceDetectLogService faceDetectLogService ;
/**
* 人脸检测接口
*/
@PostMapping ( " /detect " )
@Operation ( summary = " 人脸检测 " , description = " 检测图片中的人脸信息 " )
public ResponseEntity < Map < String , Object > > detectFace (
@Parameter ( description = " 图片URL " , required = true )
@RequestParam String imageUrl ) {
Map < String , Object > result = new HashMap < > ( ) ;
try {
log . info ( " 开始人脸检测, 图片URL: {} " , imageUrl ) ;
// 执行人脸检测
com . rj . entity . FaceDetectLog detectLog = faceDetectLogService . detectFaceAndSave ( imageUrl ) ;
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 ( ) ) ;
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 = " 页码 " , example = " 1 " )
@RequestParam ( defaultValue = " 1 " ) Integer current ,
@Parameter ( description = " 每页大小 " , example = " 10 " )
@RequestParam ( defaultValue = " 10 " ) Integer size ,
@Parameter ( description = " 是否成功 " )
@RequestParam ( required = false ) Boolean success ,
@Parameter ( description = " 开始时间 " )
@RequestParam ( required = false ) String startTime ,
@Parameter ( description = " 结束时间 " )
@RequestParam ( required = false ) String endTime ) {
Map < String , Object > result = new HashMap < > ( ) ;
try {
com . baomidou . mybatisplus . extension . plugins . pagination . Page < com . rj . entity . FaceDetectLog > page =
faceDetectLogService . getPageList ( current , size , success , startTime , endTime ) ;
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 ) ;
}
}
/**
* 根据ID查询人脸检测日志详情
*/
@GetMapping ( " /logs/{id} " )
@Operation ( summary = " 查询日志详情 " , description = " 根据ID查询人脸检测日志详情 " )
public ResponseEntity < Map < String , Object > > getLogById (
@Parameter ( description = " 日志ID " , required = true )
@PathVariable Long id ) {
Map < String , Object > result = new HashMap < > ( ) ;
try {
log . info ( " 查询人脸检测日志详情, ID: {} " , id ) ;
com . rj . entity . FaceDetectLog log = faceDetectLogService . getById ( id ) ;
if ( log ! = null ) {
result . put ( " success " , true ) ;
result . put ( " message " , " 查询成功 " ) ;
result . put ( " data " , log ) ;
} else {
result . put ( " success " , false ) ;
result . put ( " message " , " 日志不存在 " ) ;
}
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 = " 开始时间 " )
@RequestParam ( required = false ) String startTime ,
@Parameter ( description = " 结束时间 " )
@RequestParam ( required = false ) String endTime ) {
Map < String , Object > result = new HashMap < > ( ) ;
try {
Map < String , Object > statistics = faceDetectLogService . 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 ) ;
}
}
}