task缓存
This commit is contained in:
parent
8e95d1b390
commit
5d9f3aae41
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询用户当前景区的具体模版视频合成任务状态
|
||||
*
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -27,15 +27,6 @@ public interface TaskMapper {
|
||||
int update(TaskEntity task);
|
||||
|
||||
int updateStatus(Long id, Integer status);
|
||||
|
||||
/**
|
||||
* 用户制作中的视频数量
|
||||
*
|
||||
* @param userId
|
||||
* @return
|
||||
*/
|
||||
int countByMemberIdStau(String userId);
|
||||
|
||||
/**
|
||||
* 用户合成的视频
|
||||
*
|
||||
|
@ -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;
|
||||
}
|
||||
|
41
src/main/java/com/ycwl/basic/repository/OrderRepository.java
Normal file
41
src/main/java/com/ycwl/basic/repository/OrderRepository.java
Normal 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);
|
||||
}
|
||||
}
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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>
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user