diff --git a/src/main/java/com/ycwl/basic/controller/mobile/AppGoodsController.java b/src/main/java/com/ycwl/basic/controller/mobile/AppGoodsController.java index 7daeb94..6c387c4 100644 --- a/src/main/java/com/ycwl/basic/controller/mobile/AppGoodsController.java +++ b/src/main/java/com/ycwl/basic/controller/mobile/AppGoodsController.java @@ -74,17 +74,6 @@ public class AppGoodsController { return goodsService.getAllTaskStatus(worker.getUserId()); } - @GetMapping("/task/face/{faceId}") - public ApiResponse getTaskStatusByFaceId(@PathVariable("faceId") Long faceId) { - JwtInfo worker = JwtTokenUtil.getWorker(); - return goodsService.getTaskStatusByFaceId(worker.getUserId(), faceId); - } - @GetMapping("/task/scenic/{scenicId}") - public ApiResponse getAllTaskStatusByScenicId(@PathVariable("scenicId") Long scenicId) { - JwtInfo worker = JwtTokenUtil.getWorker(); - return goodsService.getTaskStatusByScenicId(worker.getUserId(), scenicId); - } - /** * 查询用户当前景区的具体模版视频合成任务状态 * diff --git a/src/main/java/com/ycwl/basic/mapper/OrderMapper.java b/src/main/java/com/ycwl/basic/mapper/OrderMapper.java index af63c8c..8ee9c32 100644 --- a/src/main/java/com/ycwl/basic/mapper/OrderMapper.java +++ b/src/main/java/com/ycwl/basic/mapper/OrderMapper.java @@ -1,6 +1,7 @@ package com.ycwl.basic.mapper; import com.ycwl.basic.model.mobile.order.OrderAppPageReq; +import com.ycwl.basic.model.pc.order.entity.OrderEntity; import com.ycwl.basic.model.pc.order.entity.OrderItemEntity; import com.ycwl.basic.model.pc.order.req.OrderUpdateReq; import com.ycwl.basic.model.pc.order.req.OrderAddReq; @@ -40,4 +41,6 @@ public interface OrderMapper { List refundList(OrderReqQuery query); List listOrderItemByOrderId(Long orderId); + + OrderEntity getUserBuyItem(Long userId, int goodsType, Long goodsId); } diff --git a/src/main/java/com/ycwl/basic/mapper/TaskMapper.java b/src/main/java/com/ycwl/basic/mapper/TaskMapper.java index 9e91034..817ef02 100644 --- a/src/main/java/com/ycwl/basic/mapper/TaskMapper.java +++ b/src/main/java/com/ycwl/basic/mapper/TaskMapper.java @@ -27,15 +27,6 @@ public interface TaskMapper { int update(TaskEntity task); int updateStatus(Long id, Integer status); - - /** - * 用户制作中的视频数量 - * - * @param userId - * @return - */ - int countByMemberIdStau(String userId); - /** * 用户合成的视频 * diff --git a/src/main/java/com/ycwl/basic/model/mobile/index/TopStateResp.java b/src/main/java/com/ycwl/basic/model/mobile/index/TopStateResp.java index 7f21cdb..3955536 100644 --- a/src/main/java/com/ycwl/basic/model/mobile/index/TopStateResp.java +++ b/src/main/java/com/ycwl/basic/model/mobile/index/TopStateResp.java @@ -16,10 +16,6 @@ import lombok.Data; public class TopStateResp { @ApiModelProperty("是否录入有效人脸") private Boolean isFace = false; - @ApiModelProperty("是否有专属视频待制作") - private Boolean madeVideos = false; - @ApiModelProperty("是否有专属视频合成中") - private Boolean compositingVideo = false; @ApiModelProperty("AI合成了多少个视频,null时没有合成的视频") private Integer aiVideoNum; } diff --git a/src/main/java/com/ycwl/basic/repository/OrderRepository.java b/src/main/java/com/ycwl/basic/repository/OrderRepository.java new file mode 100644 index 0000000..88283b6 --- /dev/null +++ b/src/main/java/com/ycwl/basic/repository/OrderRepository.java @@ -0,0 +1,41 @@ +package com.ycwl.basic.repository; + +import com.ycwl.basic.mapper.OrderMapper; +import com.ycwl.basic.model.pc.order.entity.OrderEntity; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Component; + +@Component +public class OrderRepository { + @Autowired + private OrderMapper orderMapper; + @Autowired + private RedisTemplate redisTemplate; + + public static final String ORDER_ITEM_CACHE_KEY = "order:user:%s:type:%s:id:%s"; + + public boolean checkUserBuyItem(Long userId, int goodsType, Long goodsId) { + if (redisTemplate.hasKey(String.format(ORDER_ITEM_CACHE_KEY, userId, goodsType, goodsId))) { + return true; + } + OrderEntity orderEntity = orderMapper.getUserBuyItem(userId, goodsType, goodsId); + if (orderEntity == null) { + return false; + } + redisTemplate.opsForValue().set(String.format(ORDER_ITEM_CACHE_KEY, userId, goodsType, goodsId), "1"); + return true; + } + + public boolean checkUserBuyFaceSourceImage(Long userId, Long faceId) { + return checkUserBuyItem(userId, 2, faceId); + } + + public boolean checkUserBuyFaceSourceVideo(Long userId, Long faceId) { + return checkUserBuyItem(userId, 1, faceId); + } + + public boolean checkUserBuyVideo(Long userId, Long videoId) { + return checkUserBuyItem(userId, 0, videoId); + } +} diff --git a/src/main/java/com/ycwl/basic/repository/VideoTaskRepository.java b/src/main/java/com/ycwl/basic/repository/VideoTaskRepository.java index 9535a32..8fdf9df 100644 --- a/src/main/java/com/ycwl/basic/repository/VideoTaskRepository.java +++ b/src/main/java/com/ycwl/basic/repository/VideoTaskRepository.java @@ -17,7 +17,6 @@ public class VideoTaskRepository { @Autowired private VideoMapper videoMapper; - public static final String USER_TASK_CACHE_KEY = "task:user:%s"; public static final String TASK_CACHE_KEY = "task:byId:%s"; public TaskEntity getTaskById(Long taskId) { @@ -25,10 +24,14 @@ public class VideoTaskRepository { return JSONObject.parseObject(redisTemplate.opsForValue().get(String.format(TASK_CACHE_KEY, taskId)), TaskEntity.class); } else { TaskEntity task = taskMapper.get(taskId); - if (task != null) { + if (task != null && 1 == task.getStatus()) { redisTemplate.opsForValue().set(String.format(TASK_CACHE_KEY, taskId), JSONObject.toJSONString(task)); } return task; } } + + public void clearTaskCache(Long taskId) { + redisTemplate.delete(String.format(TASK_CACHE_KEY, taskId)); + } } diff --git a/src/main/java/com/ycwl/basic/service/impl/mobile/AppScenicServiceImpl.java b/src/main/java/com/ycwl/basic/service/impl/mobile/AppScenicServiceImpl.java index 2d30134..24e894f 100644 --- a/src/main/java/com/ycwl/basic/service/impl/mobile/AppScenicServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/impl/mobile/AppScenicServiceImpl.java @@ -97,38 +97,6 @@ public class AppScenicServiceImpl implements AppScenicService { return ApiResponse.success(dataList); } - @Override - public ApiResponse topState() { - TopStateResp topStateResp = new TopStateResp(); - String userId = BaseContextHandler.getUserId(); - if (StringUtils.isBlank(userId)) { - return ApiResponse.success(topStateResp); - } - // 查询是否有人脸 - FaceReqQuery faceReqQuery = new FaceReqQuery(); - faceReqQuery.setMemberId(Long.parseLong(userId)); - List list = faceMapper.list(faceReqQuery); - for (FaceRespVO faceRespVO : list) { - if (faceRespVO.getScore().compareTo(faceScore) >= NumberConstant.ZERO) { - topStateResp.setIsFace(true); - } - } - - // 查询是否有专属视频待制作 - int sourceNum = sourceMapper.countByMemberId(userId); - topStateResp.setMadeVideos(sourceNum > 0); - - // 是否有专属视频合成中 - int taskSynthesizingNum = taskMapper.countByMemberIdStau(userId); - topStateResp.setCompositingVideo(taskSynthesizingNum > 0); - - // AI合成了多少个视频 完成 - int taskFinishNum = taskMapper.countByMemberIdStauFinish(userId); - topStateResp.setAiVideoNum(taskFinishNum); - - return ApiResponse.success(topStateResp); - } - @Override public ApiResponse> contentList(Long faceId) { JwtInfo worker = JwtTokenUtil.getWorker(); diff --git a/src/main/java/com/ycwl/basic/service/impl/task/TaskTaskServiceImpl.java b/src/main/java/com/ycwl/basic/service/impl/task/TaskTaskServiceImpl.java index 1639686..e91af22 100644 --- a/src/main/java/com/ycwl/basic/service/impl/task/TaskTaskServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/impl/task/TaskTaskServiceImpl.java @@ -26,6 +26,7 @@ import com.ycwl.basic.model.task.req.ClientStatusReqVo; import com.ycwl.basic.model.task.req.TaskReqVo; import com.ycwl.basic.model.task.req.WorkerAuthReqVo; import com.ycwl.basic.model.task.resp.TaskSyncRespVo; +import com.ycwl.basic.repository.VideoTaskRepository; import com.ycwl.basic.service.task.TaskService; import com.ycwl.basic.storage.StorageFactory; import com.ycwl.basic.storage.adapters.IStorageAdapter; @@ -68,6 +69,8 @@ public class TaskTaskServiceImpl implements TaskService { private VideoMapper videoMapper; @Autowired private TemplateRepository templateRepository; + @Autowired + private VideoTaskRepository videoTaskRepository; private RenderWorkerEntity getWorker(@NonNull WorkerAuthReqVo req) { String accessKey = req.getAccessKey(); @@ -110,7 +113,10 @@ public class TaskTaskServiceImpl implements TaskService { // Template List taskList = taskMapper.selectNotRunning(); resp.setTasks(taskList); - taskList.forEach(task -> taskMapper.assignToWorker(task.getId(), worker.getId())); + taskList.forEach(task -> { + taskMapper.assignToWorker(task.getId(), worker.getId()); + videoTaskRepository.clearTaskCache(task.getId()); + }); // return Task return resp; } @@ -174,6 +180,7 @@ public class TaskTaskServiceImpl implements TaskService { taskUpdate.setId(taskId); taskUpdate.setWorkerId(worker.getId()); taskMapper.setStart(taskUpdate); + videoTaskRepository.clearTaskCache(taskUpdate.getId()); } @Override @@ -284,6 +291,7 @@ public class TaskTaskServiceImpl implements TaskService { taskUpdate.setStatus(1); taskUpdate.setWorkerId(worker.getId()); taskMapper.setSuccess(taskUpdate); + videoTaskRepository.clearTaskCache(taskUpdate.getId()); VideoEntity video = videoMapper.findByTaskId(taskId); if (video != null) { video.setVideoUrl(task.getVideoUrl()); @@ -319,6 +327,7 @@ public class TaskTaskServiceImpl implements TaskService { taskUpdate.setWorkerId(worker.getId()); taskMapper.setFail(taskUpdate); taskMapper.deassign(taskId); + videoTaskRepository.clearTaskCache(taskUpdate.getId()); } @Override @@ -336,6 +345,7 @@ public class TaskTaskServiceImpl implements TaskService { updateTask.setId(taskId); updateTask.setVideoUrl(url); taskMapper.update(updateTask); + videoTaskRepository.clearTaskCache(updateTask.getId()); } return adapter.getUrlForUpload(filename); } diff --git a/src/main/java/com/ycwl/basic/service/mobile/AppScenicService.java b/src/main/java/com/ycwl/basic/service/mobile/AppScenicService.java index 7d1e3bb..742c716 100644 --- a/src/main/java/com/ycwl/basic/service/mobile/AppScenicService.java +++ b/src/main/java/com/ycwl/basic/service/mobile/AppScenicService.java @@ -33,12 +33,6 @@ public interface AppScenicService { */ ApiResponse> scenicList(ScenicIndexVO scenicIndexVO); - /** - * 首页顶部状态 - * - * @return - */ - ApiResponse topState(); ApiResponse> contentList(Long scenicId); ApiResponse> faceContentList(Long userId, Long faceId); diff --git a/src/main/resources/mapper/OrderMapper.xml b/src/main/resources/mapper/OrderMapper.xml index 1d3a62b..3f6abf3 100644 --- a/src/main/resources/mapper/OrderMapper.xml +++ b/src/main/resources/mapper/OrderMapper.xml @@ -87,8 +87,8 @@ oi.goods_type, CASE oi.goods_type WHEN '0' THEN mvd.name - WHEN '1' THEN '原片' - WHEN '2' THEN '照片' + WHEN '1' THEN '原片包' + WHEN '2' THEN '照片包' ELSE '其他' END AS goods_name, CASE oi.goods_type @@ -344,4 +344,13 @@ + \ No newline at end of file diff --git a/src/main/resources/mapper/TaskMapper.xml b/src/main/resources/mapper/TaskMapper.xml index 08c9a28..5f634a8 100644 --- a/src/main/resources/mapper/TaskMapper.xml +++ b/src/main/resources/mapper/TaskMapper.xml @@ -72,10 +72,6 @@ from task from task where id = #{id} -