diff --git a/src/main/java/com/ycwl/basic/controller/mobile/AppFaceController.java b/src/main/java/com/ycwl/basic/controller/mobile/AppFaceController.java index 6c43afb..ac289c7 100644 --- a/src/main/java/com/ycwl/basic/controller/mobile/AppFaceController.java +++ b/src/main/java/com/ycwl/basic/controller/mobile/AppFaceController.java @@ -38,4 +38,9 @@ AppFaceController { public ApiResponse faceUpload(@RequestParam("file")MultipartFile file, @RequestParam("scenicId") Long scenicId) { return faceService.faceUpload(file,scenicId); } + + @GetMapping("/{faceId}") + public ApiResponse getById(@PathVariable("faceId") Long faceId) { + return faceService.getById(faceId); + } } 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 4599a1e..99f401c 100644 --- a/src/main/java/com/ycwl/basic/controller/mobile/AppGoodsController.java +++ b/src/main/java/com/ycwl/basic/controller/mobile/AppGoodsController.java @@ -50,6 +50,12 @@ public class AppGoodsController { return goodsService.videoGoodsDetail(worker.getUserId(), videoId); } + @GetMapping("/sourceGoods/{sourceId}") + public ApiResponse sourceGoodsInfo(@PathVariable("sourceId") Long sourceId) { + JwtInfo worker = JwtTokenUtil.getWorker(); + return goodsService.sourceGoodsInfo(worker.getUserId(), sourceId); + } + @ApiOperation("查询价格") @PostMapping("/queryPrice") public ApiResponse queryPrice(@RequestBody GoodsPriceQueryReq queryPriceData) { diff --git a/src/main/java/com/ycwl/basic/mapper/SourceMapper.java b/src/main/java/com/ycwl/basic/mapper/SourceMapper.java index ebd3673..153aefe 100644 --- a/src/main/java/com/ycwl/basic/mapper/SourceMapper.java +++ b/src/main/java/com/ycwl/basic/mapper/SourceMapper.java @@ -49,6 +49,7 @@ public interface SourceMapper { int addRelation(MemberSourceEntity source); List listUser(SourceReqQuery sourceReqQuery); + SourceRespVO listUserOne(Long userId, Long sourceId); int addRelations(List list); @@ -61,4 +62,5 @@ public interface SourceMapper { int hasRelationTo(Long memberId, Long sourceId, int type); List listVideoByFaceRelation(Long faceId); + } 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 293024a..0fb0d39 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 @@ -4,9 +4,11 @@ import lombok.Data; @Data public class VideoTaskStatusVO { - private Integer status; + private int status; private Long videoId; private Long templateId; private Long faceId; private Long scenicId; + private int count; + private int maxCount; } diff --git a/src/main/java/com/ycwl/basic/face/repository/FaceRepository.java b/src/main/java/com/ycwl/basic/repository/FaceRepository.java similarity index 70% rename from src/main/java/com/ycwl/basic/face/repository/FaceRepository.java rename to src/main/java/com/ycwl/basic/repository/FaceRepository.java index a4bda70..893a43c 100644 --- a/src/main/java/com/ycwl/basic/face/repository/FaceRepository.java +++ b/src/main/java/com/ycwl/basic/repository/FaceRepository.java @@ -1,4 +1,4 @@ -package com.ycwl.basic.face.repository; +package com.ycwl.basic.repository; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/ycwl/basic/repository/ScenicRepository.java b/src/main/java/com/ycwl/basic/repository/ScenicRepository.java new file mode 100644 index 0000000..2dea285 --- /dev/null +++ b/src/main/java/com/ycwl/basic/repository/ScenicRepository.java @@ -0,0 +1,4 @@ +package com.ycwl.basic.repository; + +public class ScenicRepository { +} diff --git a/src/main/java/com/ycwl/basic/template/repository/TemplateRepository.java b/src/main/java/com/ycwl/basic/repository/TemplateRepository.java similarity index 99% rename from src/main/java/com/ycwl/basic/template/repository/TemplateRepository.java rename to src/main/java/com/ycwl/basic/repository/TemplateRepository.java index 2fc4311..5d920c7 100644 --- a/src/main/java/com/ycwl/basic/template/repository/TemplateRepository.java +++ b/src/main/java/com/ycwl/basic/repository/TemplateRepository.java @@ -1,4 +1,4 @@ -package com.ycwl.basic.template.repository; +package com.ycwl.basic.repository; import com.alibaba.fastjson.JSONObject; import com.ycwl.basic.mapper.FaceMapper; diff --git a/src/main/java/com/ycwl/basic/repository/VideoTaskRepository.java b/src/main/java/com/ycwl/basic/repository/VideoTaskRepository.java new file mode 100644 index 0000000..f53c08d --- /dev/null +++ b/src/main/java/com/ycwl/basic/repository/VideoTaskRepository.java @@ -0,0 +1,4 @@ +package com.ycwl.basic.repository; + +public class VideoTaskRepository { +} 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 d6444de..2d30134 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 @@ -23,7 +23,7 @@ import com.ycwl.basic.model.pc.source.req.SourceReqQuery; import com.ycwl.basic.model.pc.source.resp.SourceRespVO; import com.ycwl.basic.model.pc.video.entity.MemberVideoEntity; import com.ycwl.basic.service.mobile.AppScenicService; -import com.ycwl.basic.template.repository.TemplateRepository; +import com.ycwl.basic.repository.TemplateRepository; import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.JwtTokenUtil; import lombok.extern.slf4j.Slf4j; 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 682a4ab..eaa6b2a 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 @@ -16,7 +16,7 @@ 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.service.mobile.GoodsService; -import com.ycwl.basic.template.repository.TemplateRepository; +import com.ycwl.basic.repository.TemplateRepository; import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.DateUtils; import org.apache.commons.lang3.StringUtils; @@ -85,8 +85,7 @@ public class GoodsServiceImpl implements GoodsService { List sourceGoods = sourceList.stream().collect(Collectors.groupingBy(SourceRespVO::getFaceId)).entrySet().stream().flatMap((faceEntry) -> { Long faceId = faceEntry.getKey(); List goods = faceEntry.getValue(); - return goods.stream().collect(Collectors.groupingBy(SourceRespVO::getType)).entrySet().stream().map((typeEntry) -> { - Integer type = typeEntry.getKey(); + return goods.stream().collect(Collectors.groupingBy(SourceRespVO::getType)).keySet().stream().map(type -> { GoodsPageVO goodsPageVO = new GoodsPageVO(); goodsPageVO.setFaceId(faceId); if (type == 1) { @@ -252,7 +251,7 @@ public class GoodsServiceImpl implements GoodsService { } long nullTask = taskList.stream().filter(Objects::isNull).count(); if (nullTask > 0) { - response.setStatus(0); + response.setStatus(2); return ApiResponse.success(response); } Optional taskEntity = taskList.stream().filter(task -> 1 == task.getStatus()).findFirst(); @@ -260,6 +259,7 @@ public class GoodsServiceImpl implements GoodsService { 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); @@ -304,22 +304,25 @@ public class GoodsServiceImpl implements GoodsService { response.setStatus(-2); return ApiResponse.success(response); } - response.setFaceId(faceVO.getId()); - List taskList = videoMapper.listTaskByScenicRelation(userId, scenicId); - 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.setStatus(2); - } - return ApiResponse.success(response); + return getTaskStatusByFaceId(userId, faceVO.getId()); + } + + @Override + public ApiResponse sourceGoodsInfo(Long userId, Long sourceId) { + SourceRespVO sourceRespVO = sourceMapper.listUserOne(userId, sourceId); +// if (sourceRespVO == null) { +// return ApiResponse.fail("该视频不属于你"); +// } + GoodsDetailVO goodsDetailVO = new GoodsDetailVO(); + goodsDetailVO.setGoodsName("原片"); + goodsDetailVO.setScenicId(sourceRespVO.getScenicId()); + goodsDetailVO.setScenicName(sourceRespVO.getScenicName()); + goodsDetailVO.setGoodsType(0); + goodsDetailVO.setGoodsId(sourceRespVO.getId()); + goodsDetailVO.setVideoUrl(sourceRespVO.getVideoUrl()); + goodsDetailVO.setTemplateCoverUrl(sourceRespVO.getUrl()); + goodsDetailVO.setCreateTime(sourceRespVO.getCreateTime()); + return ApiResponse.success(goodsDetailVO); } } diff --git a/src/main/java/com/ycwl/basic/service/impl/pc/TemplateServiceImpl.java b/src/main/java/com/ycwl/basic/service/impl/pc/TemplateServiceImpl.java index 65fb8d6..f42d88b 100644 --- a/src/main/java/com/ycwl/basic/service/impl/pc/TemplateServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/impl/pc/TemplateServiceImpl.java @@ -8,7 +8,7 @@ import com.ycwl.basic.model.pc.template.entity.TemplateEntity; import com.ycwl.basic.model.pc.template.req.TemplateReqQuery; import com.ycwl.basic.model.pc.template.resp.TemplateRespVO; import com.ycwl.basic.service.pc.TemplateService; -import com.ycwl.basic.template.repository.TemplateRepository; +import com.ycwl.basic.repository.TemplateRepository; import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.SnowFlakeUtil; import org.springframework.beans.factory.annotation.Autowired; 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 e1c0b5d..f616d61 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 @@ -30,6 +30,7 @@ import com.ycwl.basic.service.task.TaskService; import com.ycwl.basic.storage.StorageFactory; import com.ycwl.basic.storage.adapters.IStorageAdapter; import com.ycwl.basic.task.VideoPieceGetter; +import com.ycwl.basic.repository.TemplateRepository; import com.ycwl.basic.utils.SnowFlakeUtil; import lombok.NonNull; import org.apache.commons.lang3.StringUtils; @@ -65,6 +66,8 @@ public class TaskTaskServiceImpl implements TaskService { private SourceMapper sourceMapper; @Autowired private VideoMapper videoMapper; + @Autowired + private TemplateRepository templateRepository; private RenderWorkerEntity getWorker(@NonNull WorkerAuthReqVo req) { String accessKey = req.getAccessKey(); @@ -105,19 +108,6 @@ public class TaskTaskServiceImpl implements TaskService { renderWorkerMapper.update(worker); TaskSyncRespVo resp = new TaskSyncRespVo(); // Template -// String cacheJson = redisTemplate.opsForValue().get(TaskConstant.TASK_TEMPLATE_KEY_PFX + worker.getId()); -// if (cacheJson == null) { -// TemplateReqQuery templateReqQuery = new TemplateReqQuery(); -// templateReqQuery.setPid(0L); -// List templateList = templateMapper.list(templateReqQuery); -// for (TemplateRespVO template : templateList) { -// template.setChildren(templateMapper.getByPid(template.getId())); -// } -// resp.setTemplates(templateList); -// redisTemplate.opsForValue().set(TaskConstant.TASK_TEMPLATE_KEY_PFX + worker.getId(), JSON.toJSONString(templateList), 60, TimeUnit.SECONDS); -// } else { -// resp.setTemplates(JSON.parseArray(cacheJson, TemplateRespVO.class)); -// } List taskList = taskMapper.selectNotRunning(); resp.setTasks(taskList); taskList.forEach(task -> taskMapper.assignToWorker(task.getId(), worker.getId())); @@ -131,7 +121,7 @@ public class TaskTaskServiceImpl implements TaskService { if (faceId == null) { return; } - TemplateConfigEntity config = templateMapper.getConfig(templateId); + TemplateConfigEntity config = templateRepository.getTemplateConfig(templateId); FaceRespVO faceRespVO = faceMapper.getById(faceId); if (faceRespVO == null) { return; @@ -168,9 +158,7 @@ public class TaskTaskServiceImpl implements TaskService { if (worker == null) { return null; } - TemplateRespVO respVO = templateMapper.getById(templateId); - respVO.setChildren(templateMapper.getByPid(templateId)); - return respVO; + return templateRepository.getTemplate(templateId); } @Override @@ -202,6 +190,7 @@ public class TaskTaskServiceImpl implements TaskService { if (faceSampleList.isEmpty()) { return; } + // TODO: 优化 List templateList = templateMapper.listEnabledByScenicId(faceRespVO.getScenicId()); if (templateList == null || templateList.isEmpty()) { return; 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 c065408..3a9bc6f 100644 --- a/src/main/java/com/ycwl/basic/service/mobile/GoodsService.java +++ b/src/main/java/com/ycwl/basic/service/mobile/GoodsService.java @@ -51,4 +51,6 @@ public interface GoodsService { ApiResponse getTemplateTaskStatus(Long userId, Long faceId, Long templateId); ApiResponse getTaskStatusByScenicId(Long userId, Long scenicId); + + ApiResponse sourceGoodsInfo(Long userId, Long sourceId); } diff --git a/src/main/resources/mapper/SourceMapper.xml b/src/main/resources/mapper/SourceMapper.xml index 80b8b48..c872997 100644 --- a/src/main/resources/mapper/SourceMapper.xml +++ b/src/main/resources/mapper/SourceMapper.xml @@ -2,8 +2,8 @@ - insert into source(id, scenic_id, device_id, url, video_url, `type`, face_sample_id, pos_json) - values (#{id}, #{scenicId}, #{deviceId}, #{url}, #{videoUrl}, #{type}, #{faceSampleId}, #{posJson}) + insert into source(id, scenic_id, device_id, url, video_url, `type`, face_sample_id, pos_json, create_time) + values (#{id}, #{scenicId}, #{deviceId}, #{url}, #{videoUrl}, #{type}, #{faceSampleId}, #{posJson}, #{createTime}) replace member_source(scenic_id, face_id, member_id, source_id, is_buy, type, order_id) @@ -123,6 +123,15 @@ and ms.face_id = #{faceId} order by so.create_time desc + +