task缓存
This commit is contained in:
parent
8e95d1b390
commit
5d9f3aae41
@ -74,17 +74,6 @@ public class AppGoodsController {
|
|||||||
return goodsService.getAllTaskStatus(worker.getUserId());
|
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;
|
package com.ycwl.basic.mapper;
|
||||||
|
|
||||||
import com.ycwl.basic.model.mobile.order.OrderAppPageReq;
|
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.entity.OrderItemEntity;
|
||||||
import com.ycwl.basic.model.pc.order.req.OrderUpdateReq;
|
import com.ycwl.basic.model.pc.order.req.OrderUpdateReq;
|
||||||
import com.ycwl.basic.model.pc.order.req.OrderAddReq;
|
import com.ycwl.basic.model.pc.order.req.OrderAddReq;
|
||||||
@ -40,4 +41,6 @@ public interface OrderMapper {
|
|||||||
List<OrderRespVO> refundList(OrderReqQuery query);
|
List<OrderRespVO> refundList(OrderReqQuery query);
|
||||||
|
|
||||||
List<OrderItemEntity> listOrderItemByOrderId(Long orderId);
|
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 update(TaskEntity task);
|
||||||
|
|
||||||
int updateStatus(Long id, Integer status);
|
int updateStatus(Long id, Integer status);
|
||||||
|
|
||||||
/**
|
|
||||||
* 用户制作中的视频数量
|
|
||||||
*
|
|
||||||
* @param userId
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
int countByMemberIdStau(String userId);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户合成的视频
|
* 用户合成的视频
|
||||||
*
|
*
|
||||||
|
@ -16,10 +16,6 @@ import lombok.Data;
|
|||||||
public class TopStateResp {
|
public class TopStateResp {
|
||||||
@ApiModelProperty("是否录入有效人脸")
|
@ApiModelProperty("是否录入有效人脸")
|
||||||
private Boolean isFace = false;
|
private Boolean isFace = false;
|
||||||
@ApiModelProperty("是否有专属视频待制作")
|
|
||||||
private Boolean madeVideos = false;
|
|
||||||
@ApiModelProperty("是否有专属视频合成中")
|
|
||||||
private Boolean compositingVideo = false;
|
|
||||||
@ApiModelProperty("AI合成了多少个视频,null时没有合成的视频")
|
@ApiModelProperty("AI合成了多少个视频,null时没有合成的视频")
|
||||||
private Integer aiVideoNum;
|
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
|
@Autowired
|
||||||
private VideoMapper videoMapper;
|
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 static final String TASK_CACHE_KEY = "task:byId:%s";
|
||||||
|
|
||||||
public TaskEntity getTaskById(Long taskId) {
|
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);
|
return JSONObject.parseObject(redisTemplate.opsForValue().get(String.format(TASK_CACHE_KEY, taskId)), TaskEntity.class);
|
||||||
} else {
|
} else {
|
||||||
TaskEntity task = taskMapper.get(taskId);
|
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));
|
redisTemplate.opsForValue().set(String.format(TASK_CACHE_KEY, taskId), JSONObject.toJSONString(task));
|
||||||
}
|
}
|
||||||
return 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);
|
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
|
@Override
|
||||||
public ApiResponse<List<ContentPageVO>> contentList(Long faceId) {
|
public ApiResponse<List<ContentPageVO>> contentList(Long faceId) {
|
||||||
JwtInfo worker = JwtTokenUtil.getWorker();
|
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.TaskReqVo;
|
||||||
import com.ycwl.basic.model.task.req.WorkerAuthReqVo;
|
import com.ycwl.basic.model.task.req.WorkerAuthReqVo;
|
||||||
import com.ycwl.basic.model.task.resp.TaskSyncRespVo;
|
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.service.task.TaskService;
|
||||||
import com.ycwl.basic.storage.StorageFactory;
|
import com.ycwl.basic.storage.StorageFactory;
|
||||||
import com.ycwl.basic.storage.adapters.IStorageAdapter;
|
import com.ycwl.basic.storage.adapters.IStorageAdapter;
|
||||||
@ -68,6 +69,8 @@ public class TaskTaskServiceImpl implements TaskService {
|
|||||||
private VideoMapper videoMapper;
|
private VideoMapper videoMapper;
|
||||||
@Autowired
|
@Autowired
|
||||||
private TemplateRepository templateRepository;
|
private TemplateRepository templateRepository;
|
||||||
|
@Autowired
|
||||||
|
private VideoTaskRepository videoTaskRepository;
|
||||||
|
|
||||||
private RenderWorkerEntity getWorker(@NonNull WorkerAuthReqVo req) {
|
private RenderWorkerEntity getWorker(@NonNull WorkerAuthReqVo req) {
|
||||||
String accessKey = req.getAccessKey();
|
String accessKey = req.getAccessKey();
|
||||||
@ -110,7 +113,10 @@ public class TaskTaskServiceImpl implements TaskService {
|
|||||||
// Template
|
// Template
|
||||||
List<TaskRespVO> taskList = taskMapper.selectNotRunning();
|
List<TaskRespVO> taskList = taskMapper.selectNotRunning();
|
||||||
resp.setTasks(taskList);
|
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 Task
|
||||||
return resp;
|
return resp;
|
||||||
}
|
}
|
||||||
@ -174,6 +180,7 @@ public class TaskTaskServiceImpl implements TaskService {
|
|||||||
taskUpdate.setId(taskId);
|
taskUpdate.setId(taskId);
|
||||||
taskUpdate.setWorkerId(worker.getId());
|
taskUpdate.setWorkerId(worker.getId());
|
||||||
taskMapper.setStart(taskUpdate);
|
taskMapper.setStart(taskUpdate);
|
||||||
|
videoTaskRepository.clearTaskCache(taskUpdate.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -284,6 +291,7 @@ public class TaskTaskServiceImpl implements TaskService {
|
|||||||
taskUpdate.setStatus(1);
|
taskUpdate.setStatus(1);
|
||||||
taskUpdate.setWorkerId(worker.getId());
|
taskUpdate.setWorkerId(worker.getId());
|
||||||
taskMapper.setSuccess(taskUpdate);
|
taskMapper.setSuccess(taskUpdate);
|
||||||
|
videoTaskRepository.clearTaskCache(taskUpdate.getId());
|
||||||
VideoEntity video = videoMapper.findByTaskId(taskId);
|
VideoEntity video = videoMapper.findByTaskId(taskId);
|
||||||
if (video != null) {
|
if (video != null) {
|
||||||
video.setVideoUrl(task.getVideoUrl());
|
video.setVideoUrl(task.getVideoUrl());
|
||||||
@ -319,6 +327,7 @@ public class TaskTaskServiceImpl implements TaskService {
|
|||||||
taskUpdate.setWorkerId(worker.getId());
|
taskUpdate.setWorkerId(worker.getId());
|
||||||
taskMapper.setFail(taskUpdate);
|
taskMapper.setFail(taskUpdate);
|
||||||
taskMapper.deassign(taskId);
|
taskMapper.deassign(taskId);
|
||||||
|
videoTaskRepository.clearTaskCache(taskUpdate.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -336,6 +345,7 @@ public class TaskTaskServiceImpl implements TaskService {
|
|||||||
updateTask.setId(taskId);
|
updateTask.setId(taskId);
|
||||||
updateTask.setVideoUrl(url);
|
updateTask.setVideoUrl(url);
|
||||||
taskMapper.update(updateTask);
|
taskMapper.update(updateTask);
|
||||||
|
videoTaskRepository.clearTaskCache(updateTask.getId());
|
||||||
}
|
}
|
||||||
return adapter.getUrlForUpload(filename);
|
return adapter.getUrlForUpload(filename);
|
||||||
}
|
}
|
||||||
|
@ -33,12 +33,6 @@ public interface AppScenicService {
|
|||||||
*/
|
*/
|
||||||
ApiResponse<List<ScenicAppVO>> scenicList(ScenicIndexVO scenicIndexVO);
|
ApiResponse<List<ScenicAppVO>> scenicList(ScenicIndexVO scenicIndexVO);
|
||||||
|
|
||||||
/**
|
|
||||||
* 首页顶部状态
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
ApiResponse<TopStateResp> topState();
|
|
||||||
|
|
||||||
ApiResponse<List<ContentPageVO>> contentList(Long scenicId);
|
ApiResponse<List<ContentPageVO>> contentList(Long scenicId);
|
||||||
ApiResponse<List<ContentPageVO>> faceContentList(Long userId, Long faceId);
|
ApiResponse<List<ContentPageVO>> faceContentList(Long userId, Long faceId);
|
||||||
|
@ -87,8 +87,8 @@
|
|||||||
oi.goods_type,
|
oi.goods_type,
|
||||||
CASE oi.goods_type
|
CASE oi.goods_type
|
||||||
WHEN '0' THEN mvd.name
|
WHEN '0' THEN mvd.name
|
||||||
WHEN '1' THEN '原片'
|
WHEN '1' THEN '原片包'
|
||||||
WHEN '2' THEN '照片'
|
WHEN '2' THEN '照片包'
|
||||||
ELSE '其他'
|
ELSE '其他'
|
||||||
END AS goods_name,
|
END AS goods_name,
|
||||||
CASE oi.goods_type
|
CASE oi.goods_type
|
||||||
@ -344,4 +344,13 @@
|
|||||||
<select id="listOrderItemByOrderId" resultType="com.ycwl.basic.model.pc.order.entity.OrderItemEntity">
|
<select id="listOrderItemByOrderId" resultType="com.ycwl.basic.model.pc.order.entity.OrderItemEntity">
|
||||||
select * from order_item where order_id = #{orderId}
|
select * from order_item where order_id = #{orderId}
|
||||||
</select>
|
</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>
|
</mapper>
|
@ -72,10 +72,6 @@ from task
|
|||||||
from task
|
from task
|
||||||
where id = #{id}
|
where id = #{id}
|
||||||
</select>
|
</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 id="countByMemberIdStauFinish" resultType="java.lang.Integer">
|
||||||
select count(1)
|
select count(1)
|
||||||
from task
|
from task
|
||||||
|
Loading…
x
Reference in New Issue
Block a user