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 99f401c..7daeb94 100644 --- a/src/main/java/com/ycwl/basic/controller/mobile/AppGoodsController.java +++ b/src/main/java/com/ycwl/basic/controller/mobile/AppGoodsController.java @@ -95,7 +95,7 @@ public class AppGoodsController { @GetMapping("/task/face/{faceId}/template/{templateId}") public ApiResponse getTemplateTaskStatus(@PathVariable("faceId") Long faceId, @PathVariable("templateId") Long templateId) { JwtInfo worker = JwtTokenUtil.getWorker(); - return goodsService.getTemplateTaskStatus(worker.getUserId(), faceId, templateId); + return goodsService.getTaskStatusByTemplateId(worker.getUserId(), faceId, templateId); } @PostMapping("/submitVideoTask") diff --git a/src/main/java/com/ycwl/basic/controller/mobile/AppTaskController.java b/src/main/java/com/ycwl/basic/controller/mobile/AppTaskController.java new file mode 100644 index 0000000..69a425f --- /dev/null +++ b/src/main/java/com/ycwl/basic/controller/mobile/AppTaskController.java @@ -0,0 +1,57 @@ +package com.ycwl.basic.controller.mobile; + +import com.ycwl.basic.model.jwt.JwtInfo; +import com.ycwl.basic.model.mobile.goods.VideoTaskReq; +import com.ycwl.basic.model.mobile.goods.VideoTaskStatusVO; +import com.ycwl.basic.service.mobile.GoodsService; +import com.ycwl.basic.service.task.TaskService; +import com.ycwl.basic.utils.ApiResponse; +import com.ycwl.basic.utils.JwtTokenUtil; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api/mobile/task/v1") +public class AppTaskController { + @Autowired + private GoodsService goodsService; + @Autowired + private TaskService taskService; + + @GetMapping("/face/{faceId}") + public ApiResponse getTaskStatusByFaceId(@PathVariable("faceId") Long faceId) { + JwtInfo worker = JwtTokenUtil.getWorker(); + return goodsService.getTaskStatusByFaceId(worker.getUserId(), faceId); + } + @GetMapping("/scenic/{scenicId}") + public ApiResponse getAllTaskStatusByScenicId(@PathVariable("scenicId") Long scenicId) { + JwtInfo worker = JwtTokenUtil.getWorker(); + return goodsService.getTaskStatusByScenicId(worker.getUserId(), scenicId); + } + + /** + * 查询用户当前景区的具体模版视频合成任务状态 + * + * @param templateId 模版id + * @return 1 合成中 2 合成成功 + */ + @ApiOperation("查询用户当前景区的具体模版视频合成任务状态 1 合成中 2 合成成功 ") + @GetMapping("/face/{faceId}/template/{templateId}") + public ApiResponse getTemplateTaskStatus(@PathVariable("faceId") Long faceId, @PathVariable("templateId") Long templateId) { + JwtInfo worker = JwtTokenUtil.getWorker(); + return goodsService.getTaskStatusByTemplateId(worker.getUserId(), faceId, templateId); + } + + @PostMapping("/submit") + public ApiResponse submitVideoTask(@RequestBody VideoTaskReq videoTaskReq) { + JwtInfo worker = JwtTokenUtil.getWorker(); + taskService.createTaskByFaceIdAndTempalteId(videoTaskReq.getFaceId(),videoTaskReq.getTemplateId(),0); + return ApiResponse.success("成功"); + } +} diff --git a/src/main/java/com/ycwl/basic/controller/pc/TaskController.java b/src/main/java/com/ycwl/basic/controller/pc/TaskController.java index 90347b0..f71e7a4 100644 --- a/src/main/java/com/ycwl/basic/controller/pc/TaskController.java +++ b/src/main/java/com/ycwl/basic/controller/pc/TaskController.java @@ -36,11 +36,6 @@ public class TaskController { public ApiResponse getById(@PathVariable Long id) { return taskService.getById(id); } - @ApiOperation("添加任务") - @PostMapping("/add") - public ApiResponse add(@RequestBody TaskEntity taskEntity) { - return taskService.add(taskEntity); - } @ApiOperation("删除任务") @DeleteMapping("/delete/{id}") public ApiResponse deleteById(@PathVariable Long id) { diff --git a/src/main/java/com/ycwl/basic/mapper/TaskMapper.java b/src/main/java/com/ycwl/basic/mapper/TaskMapper.java index db725e3..9e91034 100644 --- a/src/main/java/com/ycwl/basic/mapper/TaskMapper.java +++ b/src/main/java/com/ycwl/basic/mapper/TaskMapper.java @@ -56,4 +56,6 @@ public interface TaskMapper { int setFail(TaskEntity taskUpdate); TaskEntity getFaceAutomaticTask(Long faceId); + + TaskEntity get(Long taskId); } diff --git a/src/main/java/com/ycwl/basic/mapper/TemplateMapper.java b/src/main/java/com/ycwl/basic/mapper/TemplateMapper.java index f12df72..cdd397e 100644 --- a/src/main/java/com/ycwl/basic/mapper/TemplateMapper.java +++ b/src/main/java/com/ycwl/basic/mapper/TemplateMapper.java @@ -32,6 +32,6 @@ public interface TemplateMapper { int deleteConfigByTemplateId(Long templateId); int deleteConfigById(Long id); List listEnabledByScenicId(Long scenicId); - + List listEnabledTemplateIdByScenicId(Long scenicId); List listFor(@Param("scenicId") Long scenicId); } diff --git a/src/main/java/com/ycwl/basic/mapper/VideoMapper.java b/src/main/java/com/ycwl/basic/mapper/VideoMapper.java index e4fd5a4..8e44437 100644 --- a/src/main/java/com/ycwl/basic/mapper/VideoMapper.java +++ b/src/main/java/com/ycwl/basic/mapper/VideoMapper.java @@ -34,9 +34,8 @@ public interface VideoMapper { List userFaceTemplateVideo(Long userId, Long faceId, Long templateId); - List listTaskByFaceRelation(Long userId, Long faceId); - - List listTaskByFaceTemplateRelation(Long userId, Long faceId, Long templateId); + List listRelationByFace(Long userId, Long faceId); + List listRelationByFaceAndTemplate(Long userId, Long faceId, Long templateId); List listTaskByScenicRelation(Long userId, Long scenicId); diff --git a/src/main/java/com/ycwl/basic/model/mobile/goods/VideoTaskStatusVO.java b/src/main/java/com/ycwl/basic/model/mobile/goods/VideoTaskStatusVO.java index 0fb0d39..bd933f7 100644 --- a/src/main/java/com/ycwl/basic/model/mobile/goods/VideoTaskStatusVO.java +++ b/src/main/java/com/ycwl/basic/model/mobile/goods/VideoTaskStatusVO.java @@ -5,6 +5,7 @@ import lombok.Data; @Data public class VideoTaskStatusVO { private int status; + private Long taskId; private Long videoId; private Long templateId; private Long faceId; diff --git a/src/main/java/com/ycwl/basic/model/pc/task/resp/TaskRespVO.java b/src/main/java/com/ycwl/basic/model/pc/task/resp/TaskRespVO.java index 6ffe1ad..f2500d9 100644 --- a/src/main/java/com/ycwl/basic/model/pc/task/resp/TaskRespVO.java +++ b/src/main/java/com/ycwl/basic/model/pc/task/resp/TaskRespVO.java @@ -23,11 +23,6 @@ public class TaskRespVO { @ApiModelProperty("执行任务的机器ID") private Long workerId; private Long faceId; - /** - * 用户ID,可以不和用户关联 - */ - @ApiModelProperty("用户ID") - private Long memberId; /** * 模板ID */ diff --git a/src/main/java/com/ycwl/basic/repository/FaceRepository.java b/src/main/java/com/ycwl/basic/repository/FaceRepository.java index 893a43c..a011480 100644 --- a/src/main/java/com/ycwl/basic/repository/FaceRepository.java +++ b/src/main/java/com/ycwl/basic/repository/FaceRepository.java @@ -1,7 +1,17 @@ package com.ycwl.basic.repository; +import com.ycwl.basic.mapper.FaceMapper; +import com.ycwl.basic.mapper.FaceSampleMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; @Component public class FaceRepository { + @Autowired + private RedisTemplate redisTemplate; + @Autowired + private FaceMapper faceMapper; + @Autowired + private FaceSampleMapper faceSampleMapper; } diff --git a/src/main/java/com/ycwl/basic/repository/TemplateRepository.java b/src/main/java/com/ycwl/basic/repository/TemplateRepository.java index 5d920c7..ef085c4 100644 --- a/src/main/java/com/ycwl/basic/repository/TemplateRepository.java +++ b/src/main/java/com/ycwl/basic/repository/TemplateRepository.java @@ -14,6 +14,7 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import java.util.Arrays; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -30,12 +31,12 @@ public class TemplateRepository { @Autowired private RedisTemplate redisTemplate; public static final String TEMPLATE_CACHE_KEY = "template:%s"; + public static final String TEMPLATE_ID_BY_SCENIC_ID_CACHE_KEY = "template:id:byScenic:%s"; public static final String TEMPLATE_CONFIG_CACHE_KEY = "template:%s:config"; public boolean determineTemplateCanGenerate(Long templateId, Long faceId) { - TemplateRespVO template = templateMapper.getById(templateId); - template.setChildren(templateMapper.getByPid(templateId)); + TemplateRespVO template = getTemplate(templateId); Map map = new HashMap<>(); for (TemplateRespVO child : template.getChildren()) { if (child.getIsPlaceholder() == 1) { @@ -59,6 +60,20 @@ public class TemplateRepository { return map.values().stream().filter(item -> item).count() >= templateConfig.getMinimalPlaceholderFill(); } + public List getTemplateListByScenicId(Long scenicId) { + List idList; + if (redisTemplate.hasKey(String.format(TEMPLATE_ID_BY_SCENIC_ID_CACHE_KEY, scenicId))) { + idList = JSONObject.parseArray(redisTemplate.opsForValue().get(String.format(TEMPLATE_ID_BY_SCENIC_ID_CACHE_KEY, scenicId)), Long.class); + } else { + idList = templateMapper.listEnabledTemplateIdByScenicId(scenicId); + redisTemplate.opsForValue().set(String.format(TEMPLATE_ID_BY_SCENIC_ID_CACHE_KEY, scenicId), JSONObject.toJSONString(idList)); + } + if (idList == null || idList.isEmpty()) { + return Collections.emptyList(); + } + return idList.stream().map(this::getTemplate).collect(Collectors.toList()); + } + public TemplateRespVO getTemplate(Long templateId) { if (redisTemplate.hasKey(String.format(TEMPLATE_CACHE_KEY, templateId))) { return JSONObject.parseObject(redisTemplate.opsForValue().get(String.format(TEMPLATE_CACHE_KEY, templateId)), TemplateRespVO.class); @@ -90,6 +105,10 @@ public class TemplateRepository { } public boolean clearTemplateCache(Long templateId) { + if (redisTemplate.hasKey(String.format(TEMPLATE_CACHE_KEY, templateId))) { + TemplateRespVO template = getTemplate(templateId); + redisTemplate.delete(String.format(TEMPLATE_ID_BY_SCENIC_ID_CACHE_KEY, template.getScenicId())); + } redisTemplate.delete(String.format(TEMPLATE_CACHE_KEY, templateId)); redisTemplate.delete(String.format(TEMPLATE_CONFIG_CACHE_KEY, templateId)); return true; diff --git a/src/main/java/com/ycwl/basic/repository/VideoTaskRepository.java b/src/main/java/com/ycwl/basic/repository/VideoTaskRepository.java index f53c08d..9535a32 100644 --- a/src/main/java/com/ycwl/basic/repository/VideoTaskRepository.java +++ b/src/main/java/com/ycwl/basic/repository/VideoTaskRepository.java @@ -1,4 +1,34 @@ package com.ycwl.basic.repository; +import com.alibaba.fastjson.JSONObject; +import com.ycwl.basic.mapper.TaskMapper; +import com.ycwl.basic.mapper.VideoMapper; +import com.ycwl.basic.model.pc.task.entity.TaskEntity; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Component; + +@Component public class VideoTaskRepository { + @Autowired + private RedisTemplate redisTemplate; + @Autowired + private TaskMapper taskMapper; + @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) { + if (redisTemplate.hasKey(String.format(TASK_CACHE_KEY, taskId))) { + return JSONObject.parseObject(redisTemplate.opsForValue().get(String.format(TASK_CACHE_KEY, taskId)), TaskEntity.class); + } else { + TaskEntity task = taskMapper.get(taskId); + if (task != null) { + redisTemplate.opsForValue().set(String.format(TASK_CACHE_KEY, taskId), JSONObject.toJSONString(task)); + } + return task; + } + } } diff --git a/src/main/java/com/ycwl/basic/service/impl/mobile/GoodsServiceImpl.java b/src/main/java/com/ycwl/basic/service/impl/mobile/GoodsServiceImpl.java index eaa6b2a..e8c8c10 100644 --- a/src/main/java/com/ycwl/basic/service/impl/mobile/GoodsServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/impl/mobile/GoodsServiceImpl.java @@ -12,9 +12,9 @@ import com.ycwl.basic.model.pc.source.resp.SourceRespVO; import com.ycwl.basic.model.pc.task.entity.TaskEntity; import com.ycwl.basic.model.pc.task.resp.TaskRespVO; import com.ycwl.basic.model.pc.video.entity.MemberVideoEntity; -import com.ycwl.basic.model.pc.video.entity.VideoEntity; import com.ycwl.basic.model.pc.video.req.VideoReqQuery; import com.ycwl.basic.model.pc.video.resp.VideoRespVO; +import com.ycwl.basic.repository.VideoTaskRepository; import com.ycwl.basic.service.mobile.GoodsService; import com.ycwl.basic.repository.TemplateRepository; import com.ycwl.basic.utils.ApiResponse; @@ -28,7 +28,6 @@ import java.math.RoundingMode; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.List; -import java.util.Objects; import java.util.Optional; import java.util.stream.Collectors; @@ -51,6 +50,8 @@ public class GoodsServiceImpl implements GoodsService { private FaceMapper faceMapper; @Autowired private TemplateRepository templateRepository; + @Autowired + private VideoTaskRepository videoTaskRepository; public ApiResponse> goodsList(GoodsReqQuery query) { //查询原素材 @@ -242,28 +243,35 @@ public class GoodsServiceImpl implements GoodsService { */ @Override public ApiResponse getTaskStatusByFaceId(Long userId, Long faceId) { - List taskList = videoMapper.listTaskByFaceRelation(userId, faceId); + List taskList = videoMapper.listRelationByFace(userId, faceId); VideoTaskStatusVO response = new VideoTaskStatusVO(); response.setFaceId(faceId); if (taskList.isEmpty()) { response.setStatus(0); return ApiResponse.success(response); } - long nullTask = taskList.stream().filter(Objects::isNull).count(); - if (nullTask > 0) { + response.setScenicId(taskList.get(0).getScenicId()); + response.setMaxCount(templateRepository.getTemplateListByScenicId(response.getScenicId()).size()); + List notFinishedTasks = taskList.stream().filter(task -> { + TaskEntity taskById = videoTaskRepository.getTaskById(task.getTaskId()); + if (taskById == null) { + return true; + } + return taskById.getStatus() != 1; + }).collect(Collectors.toList()); + if (!notFinishedTasks.isEmpty()) { + response.setCount(taskList.size() - notFinishedTasks.size()); + response.setTemplateId(notFinishedTasks.get(0).getTemplateId()); + response.setTaskId(notFinishedTasks.get(0).getTaskId()); response.setStatus(2); return ApiResponse.success(response); } - Optional taskEntity = taskList.stream().filter(task -> 1 == task.getStatus()).findFirst(); - if (taskEntity.isPresent()) { - response.setTemplateId(taskEntity.get().getTemplateId()); - VideoEntity video = videoMapper.findByTaskId(taskEntity.get().getId()); - response.setVideoId(video.getId()); - response.setCount(taskList.size()); - response.setStatus(1); - } else { - response.setStatus(2); - } + MemberVideoEntity lastVideo = taskList.get(taskList.size() - 1); + response.setTaskId(lastVideo.getTaskId()); + response.setTemplateId(lastVideo.getTemplateId()); + response.setVideoId(lastVideo.getVideoId()); + response.setCount(taskList.size()); + response.setStatus(1); return ApiResponse.success(response); } @@ -274,23 +282,36 @@ public class GoodsServiceImpl implements GoodsService { } @Override - public ApiResponse getTemplateTaskStatus(Long userId, Long faceId, Long templateId) { - List taskList = videoMapper.listTaskByFaceTemplateRelation(userId, faceId, templateId); + public ApiResponse getTaskStatusByTemplateId(Long userId, Long faceId, Long templateId) { + List taskList = videoMapper.listRelationByFaceAndTemplate(userId, faceId, templateId); VideoTaskStatusVO response = new VideoTaskStatusVO(); response.setFaceId(faceId); if (taskList.isEmpty()) { response.setStatus(0); return ApiResponse.success(response); } - Optional taskEntity = taskList.stream().filter(task -> task.getStatus() == 1).findFirst(); - if (taskEntity.isPresent()) { - response.setTemplateId(taskEntity.get().getTemplateId()); - VideoEntity video = videoMapper.findByTaskId(taskEntity.get().getId()); - response.setVideoId(video.getId()); - response.setStatus(1); - } else { + response.setScenicId(taskList.get(0).getScenicId()); + response.setMaxCount(templateRepository.getTemplateListByScenicId(response.getScenicId()).size()); + List notFinishedTasks = taskList.stream().filter(task -> { + TaskEntity taskById = videoTaskRepository.getTaskById(task.getTaskId()); + if (taskById == null) { + return true; + } + return taskById.getStatus() != 1; + }).collect(Collectors.toList()); + if (!notFinishedTasks.isEmpty()) { + response.setCount(taskList.size() - notFinishedTasks.size()); + response.setTemplateId(notFinishedTasks.get(0).getTemplateId()); + response.setTaskId(notFinishedTasks.get(0).getTaskId()); response.setStatus(2); + return ApiResponse.success(response); } + MemberVideoEntity lastVideo = taskList.get(taskList.size() - 1); + response.setTaskId(lastVideo.getTaskId()); + response.setTemplateId(lastVideo.getTemplateId()); + response.setVideoId(lastVideo.getVideoId()); + response.setCount(taskList.size()); + response.setStatus(1); return ApiResponse.success(response); } diff --git a/src/main/java/com/ycwl/basic/service/impl/pc/TaskServiceImpl.java b/src/main/java/com/ycwl/basic/service/impl/pc/TaskServiceImpl.java index 8a14141..9364634 100644 --- a/src/main/java/com/ycwl/basic/service/impl/pc/TaskServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/impl/pc/TaskServiceImpl.java @@ -41,16 +41,6 @@ public class TaskServiceImpl implements TaskService { return ApiResponse.success(taskMapper.getById(id)); } - @Override - public ApiResponse add(TaskEntity task) { - int i = taskMapper.add(task); - if (i > 0) { - return ApiResponse.success(true); - }else { - return ApiResponse.fail("添加失败"); - } - } - @Override public ApiResponse deleteById(Long id) { int i = taskMapper.deleteById(id); 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 f616d61..1639686 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 @@ -141,7 +141,6 @@ public class TaskTaskServiceImpl implements TaskService { TaskEntity taskEntity = new TaskEntity(); taskEntity.setId(SnowFlakeUtil.getLongId()); taskEntity.setFaceId(faceId); - taskEntity.setMemberId(faceRespVO.getMemberId()); taskEntity.setTemplateId(templateId); taskEntity.setScenicId(scenicId); taskEntity.setTaskParams(JSON.toJSONString(sourcesMap)); @@ -190,8 +189,7 @@ public class TaskTaskServiceImpl implements TaskService { if (faceSampleList.isEmpty()) { return; } - // TODO: 优化 - List templateList = templateMapper.listEnabledByScenicId(faceRespVO.getScenicId()); + List templateList = templateRepository.getTemplateListByScenicId(faceRespVO.getScenicId()); if (templateList == null || templateList.isEmpty()) { return; } @@ -253,7 +251,6 @@ public class TaskTaskServiceImpl implements TaskService { taskEntity.setId(SnowFlakeUtil.getLongId()); taskEntity.setScenicId(faceRespVO.getScenicId()); taskEntity.setFaceId(faceId); - taskEntity.setMemberId(faceRespVO.getMemberId()); taskEntity.setTemplateId(templateId); taskEntity.setStatus(0); taskEntity.setAutomatic(automatic); @@ -296,7 +293,6 @@ public class TaskTaskServiceImpl implements TaskService { video = new VideoEntity(); video.setId(SnowFlakeUtil.getLongId()); video.setScenicId(task.getScenicId()); - video.setMemberId(task.getMemberId()); video.setTemplateId(task.getTemplateId()); video.setTaskId(taskId); video.setWorkerId(worker.getId()); diff --git a/src/main/java/com/ycwl/basic/service/mobile/GoodsService.java b/src/main/java/com/ycwl/basic/service/mobile/GoodsService.java index 3a9bc6f..3bcabcf 100644 --- a/src/main/java/com/ycwl/basic/service/mobile/GoodsService.java +++ b/src/main/java/com/ycwl/basic/service/mobile/GoodsService.java @@ -45,11 +45,9 @@ public interface GoodsService { * @param userId * @return */ - ApiResponse getTaskStatusByFaceId(Long userId ,Long faceId); ApiResponse getAllTaskStatus(Long userId); - - ApiResponse getTemplateTaskStatus(Long userId, Long faceId, Long templateId); - + ApiResponse getTaskStatusByFaceId(Long userId ,Long faceId); + ApiResponse getTaskStatusByTemplateId(Long userId, Long faceId, Long templateId); ApiResponse getTaskStatusByScenicId(Long userId, Long scenicId); ApiResponse sourceGoodsInfo(Long userId, Long sourceId); diff --git a/src/main/java/com/ycwl/basic/service/pc/TaskService.java b/src/main/java/com/ycwl/basic/service/pc/TaskService.java index 5326632..a20d8c3 100644 --- a/src/main/java/com/ycwl/basic/service/pc/TaskService.java +++ b/src/main/java/com/ycwl/basic/service/pc/TaskService.java @@ -16,7 +16,6 @@ public interface TaskService { ApiResponse> pageQuery(TaskReqQuery taskReqQuery); ApiResponse> list(TaskReqQuery taskReqQuery); ApiResponse getById(Long id); - ApiResponse add(TaskEntity task); ApiResponse deleteById(Long id); ApiResponse update(TaskEntity task); ApiResponse updateStatus(Long id,Integer status); diff --git a/src/main/resources/mapper/TaskMapper.xml b/src/main/resources/mapper/TaskMapper.xml index cfe9cdf..08c9a28 100644 --- a/src/main/resources/mapper/TaskMapper.xml +++ b/src/main/resources/mapper/TaskMapper.xml @@ -107,4 +107,9 @@ from task where face_id = #{faceId} and automatic = 1 limit 1 + diff --git a/src/main/resources/mapper/TemplateMapper.xml b/src/main/resources/mapper/TemplateMapper.xml index f1bf54e..1c3ab5b 100644 --- a/src/main/resources/mapper/TemplateMapper.xml +++ b/src/main/resources/mapper/TemplateMapper.xml @@ -105,4 +105,9 @@ where t.scenic_id = #{scenicId} and pid = 0 and t.status = 1 order by sort + diff --git a/src/main/resources/mapper/VideoMapper.xml b/src/main/resources/mapper/VideoMapper.xml index 8cbf83a..77d31e4 100644 --- a/src/main/resources/mapper/VideoMapper.xml +++ b/src/main/resources/mapper/VideoMapper.xml @@ -110,16 +110,14 @@ - + select mv.* from member_video mv - left join task t on mv.task_id = t.id where mv.member_id = #{userId} and mv.face_id = #{faceId} - + select mv.* from member_video mv - left join task t on mv.task_id = t.id where mv.member_id = #{userId} and mv.face_id = #{faceId} and mv.template_id = #{templateId}