From 0d2c92e8e1325294ca3581c928b8eb7eaa7ef946 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Sat, 11 Jan 2025 16:13:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=98=AF=E5=90=A6=E8=83=BD?= =?UTF-8?q?=E7=94=9F=E6=88=90=E5=88=A4=E6=96=AD=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ycwl/basic/biz/TemplateBiz.java | 42 +++++++++++++++++++ .../basic/controller/wvp/WvpController.java | 21 ++++++++++ .../basic/interceptor/AuthInterceptor.java | 3 +- .../com/ycwl/basic/mapper/FaceMapper.java | 1 + .../ycwl/basic/mapper/FaceSampleMapper.java | 2 +- .../ycwl/basic/repository/FaceRepository.java | 20 +++++++++ .../basic/repository/TemplateRepository.java | 33 +++------------ .../impl/mobile/AppScenicServiceImpl.java | 5 ++- .../service/impl/mobile/GoodsServiceImpl.java | 6 ++- .../impl}/TaskFaceServiceImpl.java | 2 +- .../impl}/TaskTaskServiceImpl.java | 16 ++++--- .../impl}/TaskTemplateServiceImpl.java | 2 +- .../ycwl/basic/service/wvp/WvpService.java | 4 ++ .../service/wvp/impl/WvpServiceImpl.java | 18 ++++++++ .../ycwl/basic/task/DynamicTaskGenerator.java | 42 ++++--------------- src/main/resources/mapper/FaceMapper.xml | 5 +++ .../resources/mapper/FaceSampleMapper.xml | 4 +- src/main/resources/mapper/SourceMapper.xml | 1 + 18 files changed, 150 insertions(+), 77 deletions(-) create mode 100644 src/main/java/com/ycwl/basic/biz/TemplateBiz.java create mode 100644 src/main/java/com/ycwl/basic/controller/wvp/WvpController.java rename src/main/java/com/ycwl/basic/service/{impl/task => task/impl}/TaskFaceServiceImpl.java (99%) rename src/main/java/com/ycwl/basic/service/{impl/task => task/impl}/TaskTaskServiceImpl.java (97%) rename src/main/java/com/ycwl/basic/service/{impl/task => task/impl}/TaskTemplateServiceImpl.java (96%) create mode 100644 src/main/java/com/ycwl/basic/service/wvp/WvpService.java create mode 100644 src/main/java/com/ycwl/basic/service/wvp/impl/WvpServiceImpl.java diff --git a/src/main/java/com/ycwl/basic/biz/TemplateBiz.java b/src/main/java/com/ycwl/basic/biz/TemplateBiz.java new file mode 100644 index 0000000..4a3740f --- /dev/null +++ b/src/main/java/com/ycwl/basic/biz/TemplateBiz.java @@ -0,0 +1,42 @@ +package com.ycwl.basic.biz; + +import com.ycwl.basic.model.pc.face.resp.FaceRespVO; +import com.ycwl.basic.model.pc.faceSample.entity.FaceSampleEntity; +import com.ycwl.basic.model.pc.faceSample.resp.FaceSampleRespVO; +import com.ycwl.basic.model.pc.template.entity.TemplateConfigEntity; +import com.ycwl.basic.repository.FaceRepository; +import com.ycwl.basic.repository.TemplateRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Arrays; +import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; + +@Component +public class TemplateBiz { + @Autowired + private TemplateRepository templateRepository; + @Autowired + private FaceRepository faceRepository; + + + public boolean determineTemplateCanGenerate(Long templateId, Long faceId) { + List placeholderList = templateRepository.getTemplatePlaceholder(templateId); + TemplateConfigEntity templateConfig = templateRepository.getTemplateConfig(templateId); + int minimalPlaceholderFill = 1; + if (null != templateConfig) { + if (null != templateConfig.getMinimalPlaceholderFill()) { + minimalPlaceholderFill = templateConfig.getMinimalPlaceholderFill(); + } + } + if (minimalPlaceholderFill <= 0) { + return true; + } + List faceSampleList = faceRepository.getFaceSampleList(faceId); + long count = faceSampleList.stream().map(FaceSampleEntity::getDeviceId).filter(deviceId -> placeholderList.contains(deviceId.toString())).count(); + return count >= minimalPlaceholderFill; + } + +} diff --git a/src/main/java/com/ycwl/basic/controller/wvp/WvpController.java b/src/main/java/com/ycwl/basic/controller/wvp/WvpController.java new file mode 100644 index 0000000..02851c4 --- /dev/null +++ b/src/main/java/com/ycwl/basic/controller/wvp/WvpController.java @@ -0,0 +1,21 @@ +package com.ycwl.basic.controller.wvp; + +import com.ycwl.basic.annotation.IgnoreLogReq; +import com.ycwl.basic.annotation.IgnoreToken; +import com.ycwl.basic.utils.ApiResponse; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@IgnoreToken +@RestController +@Api(tags = "WVP对接接口") +@RequestMapping("/wvp/v1/") +public class WvpController { + @IgnoreLogReq + @PostMapping("/sync") + public ApiResponse sync() { + return ApiResponse.success("success"); + } +} diff --git a/src/main/java/com/ycwl/basic/interceptor/AuthInterceptor.java b/src/main/java/com/ycwl/basic/interceptor/AuthInterceptor.java index 13c686b..6bc6cb2 100644 --- a/src/main/java/com/ycwl/basic/interceptor/AuthInterceptor.java +++ b/src/main/java/com/ycwl/basic/interceptor/AuthInterceptor.java @@ -74,8 +74,7 @@ public class AuthInterceptor extends HandlerInterceptorAdapter { // 解析 token & 验证 token 有效期 JwtInfo jwtInfo; try { - jwtInfo = jwtTokenUtil.parsingToken(token); - log.info("用户信息:" + jwtInfo.toString()); + jwtInfo = JwtTokenUtil.parsingToken(token); LocalDateTime expireTime = jwtInfo.getExpireTime(); if (LocalDateTime.now(ZoneId.systemDefault()).isAfter(expireTime)) { throw new TokenExpireException("token过期"); diff --git a/src/main/java/com/ycwl/basic/mapper/FaceMapper.java b/src/main/java/com/ycwl/basic/mapper/FaceMapper.java index e3b5279..9423505 100644 --- a/src/main/java/com/ycwl/basic/mapper/FaceMapper.java +++ b/src/main/java/com/ycwl/basic/mapper/FaceMapper.java @@ -18,6 +18,7 @@ public interface FaceMapper { List list(FaceReqQuery faceReqQuery); List listByScenicIdAndNotFinished(Long scenicId); FaceRespVO getById(Long id); + FaceEntity get(Long id); int add(FaceEntity face); int deleteById(Long id); int deleteByIds(@Param("list") List ids); diff --git a/src/main/java/com/ycwl/basic/mapper/FaceSampleMapper.java b/src/main/java/com/ycwl/basic/mapper/FaceSampleMapper.java index df15489..068effd 100644 --- a/src/main/java/com/ycwl/basic/mapper/FaceSampleMapper.java +++ b/src/main/java/com/ycwl/basic/mapper/FaceSampleMapper.java @@ -22,5 +22,5 @@ public interface FaceSampleMapper { int deleteByIds(@Param("list") List ids); int update(FaceSampleEntity faceSample); - List listByIds(List list); + List listByIds(List list); } diff --git a/src/main/java/com/ycwl/basic/repository/FaceRepository.java b/src/main/java/com/ycwl/basic/repository/FaceRepository.java index a011480..c49ec75 100644 --- a/src/main/java/com/ycwl/basic/repository/FaceRepository.java +++ b/src/main/java/com/ycwl/basic/repository/FaceRepository.java @@ -2,10 +2,19 @@ package com.ycwl.basic.repository; import com.ycwl.basic.mapper.FaceMapper; import com.ycwl.basic.mapper.FaceSampleMapper; +import com.ycwl.basic.model.pc.face.entity.FaceEntity; +import com.ycwl.basic.model.pc.faceSample.entity.FaceSampleEntity; +import com.ycwl.basic.model.pc.faceSample.resp.FaceSampleRespVO; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + @Component public class FaceRepository { @Autowired @@ -14,4 +23,15 @@ public class FaceRepository { private FaceMapper faceMapper; @Autowired private FaceSampleMapper faceSampleMapper; + + public List getFaceSampleList(Long faceId) { + FaceEntity face = faceMapper.get(faceId); + if (face == null) { + return Collections.emptyList(); + } + if (StringUtils.isBlank(face.getMatchSampleIds())) { + return Collections.emptyList(); + } + return faceSampleMapper.listByIds(Arrays.stream(face.getMatchSampleIds().split(",")).map(Long::valueOf).collect(Collectors.toList())); + } } diff --git a/src/main/java/com/ycwl/basic/repository/TemplateRepository.java b/src/main/java/com/ycwl/basic/repository/TemplateRepository.java index ef085c4..22ebd51 100644 --- a/src/main/java/com/ycwl/basic/repository/TemplateRepository.java +++ b/src/main/java/com/ycwl/basic/repository/TemplateRepository.java @@ -4,8 +4,6 @@ import com.alibaba.fastjson.JSONObject; import com.ycwl.basic.mapper.FaceMapper; import com.ycwl.basic.mapper.FaceSampleMapper; import com.ycwl.basic.mapper.TemplateMapper; -import com.ycwl.basic.model.pc.face.resp.FaceRespVO; -import com.ycwl.basic.model.pc.faceSample.resp.FaceSampleRespVO; import com.ycwl.basic.model.pc.template.entity.TemplateConfigEntity; import com.ycwl.basic.model.pc.template.resp.TemplateRespVO; import com.ycwl.basic.utils.SnowFlakeUtil; @@ -13,11 +11,8 @@ import org.springframework.beans.factory.annotation.Autowired; 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; import java.util.stream.Collectors; @Service // 临时这么用 @@ -35,29 +30,13 @@ public class TemplateRepository { public static final String TEMPLATE_CONFIG_CACHE_KEY = "template:%s:config"; - public boolean determineTemplateCanGenerate(Long templateId, Long faceId) { + public List getTemplatePlaceholder(Long templateId) { TemplateRespVO template = getTemplate(templateId); - Map map = new HashMap<>(); - for (TemplateRespVO child : template.getChildren()) { - if (child.getIsPlaceholder() == 1) { - map.put(child.getSourceUrl(), false); - } - } - TemplateConfigEntity templateConfig = templateMapper.getConfig(templateId); - if (0 == templateConfig.getMinimalPlaceholderFill()) { - return true; - } - FaceRespVO face = faceMapper.getById(faceId); - if (face.getMatchSampleIds() == null) { - return false; - } - List faceSample = faceSampleMapper.listByIds(Arrays.stream(face.getMatchSampleIds().split(",")).map(Long::valueOf).collect(Collectors.toList())); - faceSample.stream().collect(Collectors.groupingBy(FaceSampleRespVO::getDeviceId)).forEach((deviceId, value) -> { - if (map.containsKey(deviceId.toString())) { - map.put(deviceId.toString(), true); - } - }); - return map.values().stream().filter(item -> item).count() >= templateConfig.getMinimalPlaceholderFill(); + return template.getChildren().stream() + .filter(item -> item.getIsPlaceholder() == 1) + .map(TemplateRespVO::getSourceUrl) + .distinct() + .collect(Collectors.toList()); } public List getTemplateListByScenicId(Long scenicId) { 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 76e26d9..db32b24 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 @@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.ycwl.basic.biz.OrderBiz; +import com.ycwl.basic.biz.TemplateBiz; import com.ycwl.basic.constant.BaseContextHandler; import com.ycwl.basic.mapper.*; import com.ycwl.basic.model.jwt.JwtInfo; @@ -75,6 +76,8 @@ public class AppScenicServiceImpl implements AppScenicService { private OrderBiz orderBiz; @Autowired private ScenicRepository scenicRepository; + @Autowired + private TemplateBiz templateBiz; @Override public ApiResponse> pageQuery(ScenicReqQuery scenicReqQuery) { @@ -126,7 +129,7 @@ public class AppScenicServiceImpl implements AppScenicService { contentPageVO.setLockType(-1); } else { contentPageVO.setContentType(0); - boolean canGenerate = templateRepository.determineTemplateCanGenerate(contentPageVO.getTemplateId(), faceId); + boolean canGenerate = templateBiz.determineTemplateCanGenerate(contentPageVO.getTemplateId(), faceId); if (canGenerate) { contentPageVO.setLockType(0); } else { 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 813d4ee..76ecf56 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 @@ -232,7 +232,11 @@ public class GoodsServiceImpl implements GoodsService { if (paramJson == null) { deviceCount = 1; } else { - deviceCount = paramJson.keySet().stream().filter(StringUtils::isNumeric).count(); + List templatePlaceholder = templateRepository.getTemplatePlaceholder(task.getTemplateId()); + deviceCount = paramJson.keySet().stream() + .filter(StringUtils::isNumeric) + .filter(templatePlaceholder::contains) + .count(); } goodsDetailVO.setLensNum((int) deviceCount); return ApiResponse.success(goodsDetailVO); diff --git a/src/main/java/com/ycwl/basic/service/impl/task/TaskFaceServiceImpl.java b/src/main/java/com/ycwl/basic/service/task/impl/TaskFaceServiceImpl.java similarity index 99% rename from src/main/java/com/ycwl/basic/service/impl/task/TaskFaceServiceImpl.java rename to src/main/java/com/ycwl/basic/service/task/impl/TaskFaceServiceImpl.java index cced975..2af4f5f 100644 --- a/src/main/java/com/ycwl/basic/service/impl/task/TaskFaceServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/task/impl/TaskFaceServiceImpl.java @@ -1,4 +1,4 @@ -package com.ycwl.basic.service.impl.task; +package com.ycwl.basic.service.task.impl; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSON; diff --git a/src/main/java/com/ycwl/basic/service/impl/task/TaskTaskServiceImpl.java b/src/main/java/com/ycwl/basic/service/task/impl/TaskTaskServiceImpl.java similarity index 97% rename from src/main/java/com/ycwl/basic/service/impl/task/TaskTaskServiceImpl.java rename to src/main/java/com/ycwl/basic/service/task/impl/TaskTaskServiceImpl.java index c70d909..bd9d18d 100644 --- a/src/main/java/com/ycwl/basic/service/impl/task/TaskTaskServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/task/impl/TaskTaskServiceImpl.java @@ -1,10 +1,11 @@ -package com.ycwl.basic.service.impl.task; +package com.ycwl.basic.service.task.impl; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.ycwl.basic.biz.OrderBiz; +import com.ycwl.basic.biz.TemplateBiz; import com.ycwl.basic.constant.TaskConstant; import com.ycwl.basic.mapper.FaceMapper; import com.ycwl.basic.mapper.FaceSampleMapper; @@ -16,6 +17,7 @@ import com.ycwl.basic.mapper.TemplateMapper; import com.ycwl.basic.mapper.VideoMapper; import com.ycwl.basic.model.mobile.order.PriceObj; import com.ycwl.basic.model.pc.face.resp.FaceRespVO; +import com.ycwl.basic.model.pc.faceSample.entity.FaceSampleEntity; import com.ycwl.basic.model.pc.faceSample.resp.FaceSampleRespVO; import com.ycwl.basic.model.pc.member.resp.MemberRespVO; import com.ycwl.basic.model.pc.mp.MpConfigEntity; @@ -96,6 +98,8 @@ public class TaskTaskServiceImpl implements TaskService { private MemberMapper memberMapper; @Autowired private ScenicRepository scenicRepository; + @Autowired + private TemplateBiz templateBiz; private RenderWorkerEntity getWorker(@NonNull WorkerAuthReqVo req) { String accessKey = req.getAccessKey(); @@ -152,7 +156,7 @@ public class TaskTaskServiceImpl implements TaskService { if (faceId == null) { return; } - boolean canGenerate = templateRepository.determineTemplateCanGenerate(templateId, faceId); + boolean canGenerate = templateBiz.determineTemplateCanGenerate(templateId, faceId); if (!canGenerate) { return; } @@ -221,7 +225,7 @@ public class TaskTaskServiceImpl implements TaskService { if (!StringUtils.isNotBlank(faceRespVO.getMatchSampleIds())) { return; } - List faceSampleList = faceSampleMapper.listByIds(Arrays.stream(faceRespVO.getMatchSampleIds().split(",")).map(Long::valueOf).collect(Collectors.toList())); + List faceSampleList = faceSampleMapper.listByIds(Arrays.stream(faceRespVO.getMatchSampleIds().split(",")).map(Long::valueOf).collect(Collectors.toList())); if (faceSampleList.isEmpty()) { return; } @@ -247,11 +251,11 @@ public class TaskTaskServiceImpl implements TaskService { public void createTaskByFaceIdAndTempalteId(Long faceId, Long templateId, int automatic) { FaceRespVO faceRespVO = faceMapper.getById(faceId); ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(faceRespVO.getScenicId()); - List faceSampleList = faceSampleMapper.listByIds(Arrays.stream(faceRespVO.getMatchSampleIds().split(",")).map(Long::valueOf).collect(Collectors.toList())); + List faceSampleList = faceSampleMapper.listByIds(Arrays.stream(faceRespVO.getMatchSampleIds().split(",")).map(Long::valueOf).collect(Collectors.toList())); if (faceSampleList.isEmpty()) { return; } - List faceSampleIds = faceSampleList.stream().map(FaceSampleRespVO::getId).collect(Collectors.toList()); + List faceSampleIds = faceSampleList.stream().map(FaceSampleEntity::getId).collect(Collectors.toList()); List sourceList = sourceMapper.listBySampleIds(faceSampleIds); if (sourceList.isEmpty()) { return; @@ -294,7 +298,7 @@ public class TaskTaskServiceImpl implements TaskService { task.faceSampleIds = faceSampleIds; task.memberId = faceRespVO.getMemberId(); task.callback = () -> { - boolean canGenerate = templateRepository.determineTemplateCanGenerate(templateId, faceId); + boolean canGenerate = templateBiz.determineTemplateCanGenerate(templateId, faceId); if (!canGenerate) { return; } diff --git a/src/main/java/com/ycwl/basic/service/impl/task/TaskTemplateServiceImpl.java b/src/main/java/com/ycwl/basic/service/task/impl/TaskTemplateServiceImpl.java similarity index 96% rename from src/main/java/com/ycwl/basic/service/impl/task/TaskTemplateServiceImpl.java rename to src/main/java/com/ycwl/basic/service/task/impl/TaskTemplateServiceImpl.java index eb3d334..7671eb9 100644 --- a/src/main/java/com/ycwl/basic/service/impl/task/TaskTemplateServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/task/impl/TaskTemplateServiceImpl.java @@ -1,4 +1,4 @@ -package com.ycwl.basic.service.impl.task; +package com.ycwl.basic.service.task.impl; import com.alibaba.fastjson.JSON; import com.ycwl.basic.mapper.TemplateMapper; diff --git a/src/main/java/com/ycwl/basic/service/wvp/WvpService.java b/src/main/java/com/ycwl/basic/service/wvp/WvpService.java new file mode 100644 index 0000000..ed10093 --- /dev/null +++ b/src/main/java/com/ycwl/basic/service/wvp/WvpService.java @@ -0,0 +1,4 @@ +package com.ycwl.basic.service.wvp; + +public interface WvpService { +} diff --git a/src/main/java/com/ycwl/basic/service/wvp/impl/WvpServiceImpl.java b/src/main/java/com/ycwl/basic/service/wvp/impl/WvpServiceImpl.java new file mode 100644 index 0000000..c2eaca2 --- /dev/null +++ b/src/main/java/com/ycwl/basic/service/wvp/impl/WvpServiceImpl.java @@ -0,0 +1,18 @@ +package com.ycwl.basic.service.wvp.impl; + +import com.ycwl.basic.device.repository.DeviceRepository; +import com.ycwl.basic.repository.ScenicRepository; +import com.ycwl.basic.service.wvp.WvpService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Service; + +@Service +public class WvpServiceImpl implements WvpService { + @Autowired + private RedisTemplate redisTemplate; + @Autowired + private DeviceRepository deviceRepository; + @Autowired + private ScenicRepository scenicRepository; +} diff --git a/src/main/java/com/ycwl/basic/task/DynamicTaskGenerator.java b/src/main/java/com/ycwl/basic/task/DynamicTaskGenerator.java index abe5461..daf0c8e 100644 --- a/src/main/java/com/ycwl/basic/task/DynamicTaskGenerator.java +++ b/src/main/java/com/ycwl/basic/task/DynamicTaskGenerator.java @@ -1,11 +1,13 @@ package com.ycwl.basic.task; +import com.ycwl.basic.biz.TemplateBiz; import com.ycwl.basic.mapper.DeviceMapper; import com.ycwl.basic.mapper.FaceMapper; import com.ycwl.basic.mapper.FaceSampleMapper; import com.ycwl.basic.mapper.ScenicMapper; import com.ycwl.basic.mapper.TemplateMapper; import com.ycwl.basic.model.pc.face.resp.FaceRespVO; +import com.ycwl.basic.model.pc.faceSample.entity.FaceSampleEntity; import com.ycwl.basic.model.pc.faceSample.resp.FaceSampleRespVO; import com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity; import com.ycwl.basic.model.pc.scenic.req.ScenicReqQuery; @@ -45,6 +47,8 @@ public class DynamicTaskGenerator { private TaskService taskService; @Autowired private DeviceMapper deviceMapper; + @Autowired + private TemplateBiz templateBiz; @Scheduled(cron = "0 0 * * * ?") public void dynamicTask() { @@ -77,27 +81,6 @@ public class DynamicTaskGenerator { continue; } } - Integer minimalPlaceholderFill = templateConfig.getMinimalPlaceholderFill(); - int maxPlaceholder = 0; - List placeholderList = new ArrayList<>(); - if (minimalPlaceholderFill == null) { - minimalPlaceholderFill = 0; - } - List subTemplateList = templateMapper.getByPid(template.getId()); - for (TemplateRespVO subTemplate : subTemplateList) { - if (subTemplate.getIsPlaceholder() == 1) { - placeholderList.add(subTemplate.getSourceUrl()); - } - } - if (minimalPlaceholderFill == 0) { - for (TemplateRespVO subTemplate : subTemplateList) { - maxPlaceholder += 1; - if (subTemplate.getIsPlaceholder() == 1) { - minimalPlaceholderFill += 1; - } - } - } - log.info("当前模板{}启用默认,最小占位素材:{}", template.getName(), minimalPlaceholderFill); // 查找人脸样本 List list = faceMapper.listByScenicIdAndNotFinished(scenic.getId()); for (FaceRespVO face : list) { @@ -122,23 +105,12 @@ public class DynamicTaskGenerator { continue; } } - List faceSampleList = faceSampleMapper.listByIds(searchFace.getSampleListIds()); - int matchedPlaceholder = 0; - for (FaceSampleRespVO faceSample : faceSampleList) { - if (placeholderList.contains(faceSample.getDeviceId().toString())) { - matchedPlaceholder += 1; - } - } - if (matchedPlaceholder >= maxPlaceholder) { - log.info("当前人脸样本{}已超过最大占位素材{},自动创建任务", face.getFaceUrl(), maxPlaceholder); - taskService.createRenderTask(scenic.getId(), template.getId(), face.getId()); - faceMapper.finishedJourney(face.getId()); - } else if (matchedPlaceholder >= minimalPlaceholderFill) { - log.info("当前人脸样本{}已超过最小占位素材{},自动创建任务", face.getFaceUrl(), minimalPlaceholderFill); + if (templateBiz.determineTemplateCanGenerate(template.getId(), face.getId())) { + log.info("当前人脸样本{}已超过最小占位素材,自动创建任务", face.getFaceUrl()); taskService.createRenderTask(scenic.getId(), template.getId(), face.getId()); faceMapper.finishedJourney(face.getId()); } else { - log.info("当前人脸样本{}未超过最小占位素材{},未达到自动生成条件", face.getFaceUrl(), minimalPlaceholderFill); + log.info("当前人脸样本{}未超过最小占位素材,未达到自动生成条件", face.getFaceUrl()); } } } diff --git a/src/main/resources/mapper/FaceMapper.xml b/src/main/resources/mapper/FaceMapper.xml index e4909a1..b9eab10 100644 --- a/src/main/resources/mapper/FaceMapper.xml +++ b/src/main/resources/mapper/FaceMapper.xml @@ -89,4 +89,9 @@ order by update_at desc limit 1 + diff --git a/src/main/resources/mapper/FaceSampleMapper.xml b/src/main/resources/mapper/FaceSampleMapper.xml index bbf070e..42632da 100644 --- a/src/main/resources/mapper/FaceSampleMapper.xml +++ b/src/main/resources/mapper/FaceSampleMapper.xml @@ -86,8 +86,8 @@ from face_sample where id = #{id} - + select * from face_sample where id in ( diff --git a/src/main/resources/mapper/SourceMapper.xml b/src/main/resources/mapper/SourceMapper.xml index 34b0c94..6b8bd4a 100644 --- a/src/main/resources/mapper/SourceMapper.xml +++ b/src/main/resources/mapper/SourceMapper.xml @@ -93,6 +93,7 @@ #{item} + order by create_time desc