task缓存

This commit is contained in:
Jerry Yan 2025-01-03 17:38:15 +08:00
parent 8e95d1b390
commit 5d9f3aae41
11 changed files with 71 additions and 71 deletions

View File

@ -74,17 +74,6 @@ public class AppGoodsController {
return goodsService.getAllTaskStatus(worker.getUserId());
}
@GetMapping("/task/face/{faceId}")
public ApiResponse<VideoTaskStatusVO> getTaskStatusByFaceId(@PathVariable("faceId") Long faceId) {
JwtInfo worker = JwtTokenUtil.getWorker();
return goodsService.getTaskStatusByFaceId(worker.getUserId(), faceId);
}
@GetMapping("/task/scenic/{scenicId}")
public ApiResponse<VideoTaskStatusVO> getAllTaskStatusByScenicId(@PathVariable("scenicId") Long scenicId) {
JwtInfo worker = JwtTokenUtil.getWorker();
return goodsService.getTaskStatusByScenicId(worker.getUserId(), scenicId);
}
/**
* 查询用户当前景区的具体模版视频合成任务状态
*

View File

@ -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<OrderRespVO> refundList(OrderReqQuery query);
List<OrderItemEntity> listOrderItemByOrderId(Long orderId);
OrderEntity getUserBuyItem(Long userId, int goodsType, Long goodsId);
}

View File

@ -27,15 +27,6 @@ public interface TaskMapper {
int update(TaskEntity task);
int updateStatus(Long id, Integer status);
/**
* 用户制作中的视频数量
*
* @param userId
* @return
*/
int countByMemberIdStau(String userId);
/**
* 用户合成的视频
*

View File

@ -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;
}

View File

@ -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<String, String> 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);
}
}

View File

@ -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));
}
}

View File

@ -97,38 +97,6 @@ public class AppScenicServiceImpl implements AppScenicService {
return ApiResponse.success(dataList);
}
@Override
public ApiResponse<TopStateResp> 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<FaceRespVO> 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<List<ContentPageVO>> contentList(Long faceId) {
JwtInfo worker = JwtTokenUtil.getWorker();

View File

@ -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<TaskRespVO> 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);
}

View File

@ -33,12 +33,6 @@ public interface AppScenicService {
*/
ApiResponse<List<ScenicAppVO>> scenicList(ScenicIndexVO scenicIndexVO);
/**
* 首页顶部状态
*
* @return
*/
ApiResponse<TopStateResp> topState();
ApiResponse<List<ContentPageVO>> contentList(Long scenicId);
ApiResponse<List<ContentPageVO>> faceContentList(Long userId, Long faceId);

View File

@ -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 @@
<select id="listOrderItemByOrderId" resultType="com.ycwl.basic.model.pc.order.entity.OrderItemEntity">
select * from order_item where order_id = #{orderId}
</select>
<select id="getUserBuyItem" resultType="com.ycwl.basic.model.pc.order.entity.OrderEntity">
select o.*
from order_item oi
left join `order` o on o.id = oi.order_id
where o.member_id = #{userId}
and oi.goods_id = #{goodsId}
and oi.goods_type = #{goodsType}
and o.status = 1
</select>
</mapper>

View File

@ -72,10 +72,6 @@ from task
from task
where id = #{id}
</select>
<select id="countByMemberIdStau" resultType="java.lang.Integer">
select count(1) from task
where member_id = #{userId} and status IN (0,2)
</select>
<select id="countByMemberIdStauFinish" resultType="java.lang.Integer">
select count(1)
from task