diff --git a/src/main/java/com/ycwl/basic/controller/mobile/AppFaceController.java b/src/main/java/com/ycwl/basic/controller/mobile/AppFaceController.java index 34b1cba..93ccfb8 100644 --- a/src/main/java/com/ycwl/basic/controller/mobile/AppFaceController.java +++ b/src/main/java/com/ycwl/basic/controller/mobile/AppFaceController.java @@ -59,6 +59,11 @@ AppFaceController { return faceService.getById(faceId); } + @DeleteMapping("/{faceId}") + public ApiResponse deleteFace(@PathVariable("faceId") Long faceId) { + return faceService.deleteFace(faceId); + } + @PostMapping("/{faceId}/match") public ApiResponse match(@PathVariable("faceId") Long faceId) { faceService.matchFaceId(faceId); diff --git a/src/main/java/com/ycwl/basic/controller/wvp/WvpController.java b/src/main/java/com/ycwl/basic/controller/wvp/WvpController.java index 4dfea9d..39f8603 100644 --- a/src/main/java/com/ycwl/basic/controller/wvp/WvpController.java +++ b/src/main/java/com/ycwl/basic/controller/wvp/WvpController.java @@ -8,6 +8,7 @@ import com.ycwl.basic.model.wvp.WvpSyncReqVo; import com.ycwl.basic.service.pc.DeviceService; import com.ycwl.basic.storage.StorageFactory; import com.ycwl.basic.storage.adapters.IStorageAdapter; +import com.ycwl.basic.storage.utils.StorageUtil; import com.ycwl.basic.utils.ApiResponse; import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; @@ -42,7 +43,7 @@ public class WvpController { @PostMapping("/scenic/{scenicId}/{taskId}/uploadUrl") public String uploadUrl(@PathVariable("scenicId") Long scenicId, @PathVariable("taskId") Long taskId) { IStorageAdapter adapter = StorageFactory.use("assets-ext"); - return adapter.getUrlForUpload(WvpPassiveStorageOperator.getUrlForTask(taskId)); + return adapter.getUrlForUpload(new Date(System.currentTimeMillis() + 1000 * 60 * 60), "video/mp4", StorageUtil.joinPath("video-source", taskId.toString() + ".mp4")); } @PostMapping("/scenic/{scenicId}/{taskId}/success") public ApiResponse success(@PathVariable("scenicId") Long scenicId, @PathVariable("taskId") Long taskId, @RequestBody FileObject fileObject) { diff --git a/src/main/java/com/ycwl/basic/mapper/SourceMapper.java b/src/main/java/com/ycwl/basic/mapper/SourceMapper.java index a8b3e1c..d4fb399 100644 --- a/src/main/java/com/ycwl/basic/mapper/SourceMapper.java +++ b/src/main/java/com/ycwl/basic/mapper/SourceMapper.java @@ -72,4 +72,6 @@ public interface SourceMapper { int deleteNotRelateSource(int type, Date endDate); int deleteNotBuyRelations(Long scenicId, Date endDate); + + int deleteNotBuyFaceRelation(Long userId, Long faceId); } diff --git a/src/main/java/com/ycwl/basic/mapper/VideoMapper.java b/src/main/java/com/ycwl/basic/mapper/VideoMapper.java index 9b48ed1..cd96259 100644 --- a/src/main/java/com/ycwl/basic/mapper/VideoMapper.java +++ b/src/main/java/com/ycwl/basic/mapper/VideoMapper.java @@ -52,4 +52,6 @@ public interface VideoMapper { VideoEntity getEntity(Long videoId); int deleteNotBuyRelations(Long scenicId, Date endDate); + + int deleteNotBuyFaceRelations(Long userId, Long faceId); } diff --git a/src/main/java/com/ycwl/basic/service/impl/pc/FaceServiceImpl.java b/src/main/java/com/ycwl/basic/service/impl/pc/FaceServiceImpl.java index 4671565..bd3727d 100644 --- a/src/main/java/com/ycwl/basic/service/impl/pc/FaceServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/impl/pc/FaceServiceImpl.java @@ -8,6 +8,7 @@ import com.ycwl.basic.mapper.FaceSampleMapper; import com.ycwl.basic.mapper.SourceMapper; import com.ycwl.basic.mapper.StatisticsMapper; import com.ycwl.basic.mapper.FaceMapper; +import com.ycwl.basic.mapper.VideoMapper; import com.ycwl.basic.model.mobile.face.FaceRecognizeResp; import com.ycwl.basic.model.mobile.order.IsBuyRespVO; import com.ycwl.basic.model.mobile.statistic.req.StatisticsRecordAddReq; @@ -64,6 +65,8 @@ public class FaceServiceImpl implements FaceService { private OrderBiz orderBiz; @Autowired private FaceRepository faceRepository; + @Autowired + private VideoMapper videoMapper; @Override public ApiResponse> pageQuery(FaceReqQuery faceReqQuery) { @@ -274,4 +277,17 @@ public class FaceServiceImpl implements FaceService { return scenicDbSearchResult; } + @Override + public ApiResponse deleteFace(Long faceId) { + FaceEntity face = faceRepository.getFace(faceId); + faceMapper.deleteById(faceId); + faceRepository.clearFaceCache(faceId); + new Thread(() -> { + sourceMapper.deleteNotBuyFaceRelation(face.getMemberId(), faceId); + videoMapper.deleteNotBuyFaceRelations(face.getMemberId(), faceId); + faceService.deleteFaceSample(USER_FACE_DB_NAME+face.getScenicId().toString(), faceId.toString()); + }).start(); + return ApiResponse.success("删除成功"); + } + } diff --git a/src/main/java/com/ycwl/basic/service/pc/FaceService.java b/src/main/java/com/ycwl/basic/service/pc/FaceService.java index 94678e8..d2eb502 100644 --- a/src/main/java/com/ycwl/basic/service/pc/FaceService.java +++ b/src/main/java/com/ycwl/basic/service/pc/FaceService.java @@ -29,4 +29,6 @@ public interface FaceService { SearchFaceRespVo matchFaceId(Long faceId); SearchFaceRespVo matchFaceId(Long faceId, boolean isNew); + + ApiResponse deleteFace(Long faceId); } diff --git a/src/main/resources/mapper/SourceMapper.xml b/src/main/resources/mapper/SourceMapper.xml index 7441c0e..1cf8538 100644 --- a/src/main/resources/mapper/SourceMapper.xml +++ b/src/main/resources/mapper/SourceMapper.xml @@ -51,6 +51,10 @@ delete from member_source where scenic_id = #{scenicId} and is_buy = 0 and create_time <= #{endDate} + + delete from member_source + where member_id = #{userId} and face_id = #{faceId} and is_buy = 0 + select v.id, v.scenic_id, template_id, task_id, worker_id, video_url, v.create_time, v.update_time, s.name scenicName, s.latitude, s.longitude, t.name templateName, t.price templatePrice,t.cover_url templateCoverUrl