From 3f4d3cb7acb27b902a42da5ba24c7a552277a7c2 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Fri, 19 Dec 2025 19:02:37 +0800 Subject: [PATCH] =?UTF-8?q?refactor(scenic):=20=E6=9B=BF=E6=8D=A2ScenicCon?= =?UTF-8?q?figEntity=E4=B8=BAScenicConfigManager?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将所有使用ScenicConfigEntity的地方替换为ScenicConfigManager - 更新获取景区配置的方法调用 - 修改属性访问方式为通过manager的getter方法 - 移除已废弃的ScenicConfigEntity类及相关方法 - 统一配置读取接口,提高代码一致性与可维护性 --- .../java/com/ycwl/basic/biz/BrokerBiz.java | 10 +-- .../java/com/ycwl/basic/biz/OrderBiz.java | 6 +- .../java/com/ycwl/basic/biz/PriceBiz.java | 16 ++-- .../pipeline/stages/PrepareContextStage.java | 4 +- .../pc/scenic/entity/ScenicConfigEntity.java | 5 +- .../service/impl/VoucherPrintServiceImpl.java | 16 ++-- .../basic/repository/ScenicRepository.java | 73 ------------------- .../mobile/impl/AppAiCamServiceImpl.java | 2 +- .../service/mobile/impl/GoodsServiceImpl.java | 40 +++++----- .../service/pc/impl/FaceServiceImpl.java | 14 ++-- .../task/impl/TaskFaceServiceImpl.java | 18 ++--- .../task/impl/TaskTaskServiceImpl.java | 8 +- .../task/DownloadNotificationTasker.java | 6 +- .../ycwl/basic/task/DynamicTaskGenerator.java | 12 +-- .../java/com/ycwl/basic/task/FaceCleaner.java | 36 ++++----- .../com/ycwl/basic/task/VideoPieceGetter.java | 10 +-- .../ycwl/basic/task/VideoTaskGenerator.java | 10 +-- .../stages/PrepareContextStageTest.java | 18 ++--- 18 files changed, 114 insertions(+), 190 deletions(-) diff --git a/src/main/java/com/ycwl/basic/biz/BrokerBiz.java b/src/main/java/com/ycwl/basic/biz/BrokerBiz.java index 7faace72..06f0e074 100644 --- a/src/main/java/com/ycwl/basic/biz/BrokerBiz.java +++ b/src/main/java/com/ycwl/basic/biz/BrokerBiz.java @@ -7,7 +7,7 @@ import com.ycwl.basic.mapper.StatisticsMapper; import com.ycwl.basic.model.pc.broker.entity.BrokerRecord; import com.ycwl.basic.model.pc.broker.resp.BrokerRespVO; import com.ycwl.basic.model.pc.order.entity.OrderEntity; -import com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity; +import com.ycwl.basic.integration.common.manager.ScenicConfigManager; import com.ycwl.basic.repository.OrderRepository; import com.ycwl.basic.repository.ScenicRepository; import lombok.extern.slf4j.Slf4j; @@ -43,14 +43,14 @@ public class BrokerBiz { log.info("订单不存在,订单ID:{}", orderId); return; } - ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(order.getScenicId()); + ScenicConfigManager scenicConfig = scenicRepository.getScenicConfigManager(order.getScenicId()); if (scenicConfig == null) { log.info("景区不存在,订单ID:{}", orderId); return; } int expireDay = 3; - if (scenicConfig.getSampleStoreDay() != null) { - expireDay = scenicConfig.getSampleStoreDay(); + if (scenicConfig.getInteger("sample_store_day") != null) { + expireDay = scenicConfig.getInteger("sample_store_day"); } List brokerIdList = statisticsMapper.getBrokerIdListForUser(order.getMemberId(), DateUtil.offsetDay(DateUtil.beginOfDay(order.getCreateAt()), -expireDay), order.getCreateAt()); if (brokerIdList == null || brokerIdList.isEmpty()) { @@ -103,7 +103,7 @@ public class BrokerBiz { BigDecimal realRate = broker.getBrokerRate(); BigDecimal brokerPrice = order.getPayPrice().multiply(realRate).divide(BigDecimal.valueOf(100), 2, RoundingMode.DOWN); // todo 需要计算实际提成比例 - BigDecimal firstRate = scenicConfig.getBrokerDirectRate(); + BigDecimal firstRate = scenicConfig.getBigDecimal("broker_direct_rate"); if (firstRate == null) { firstRate = BigDecimal.ZERO; } diff --git a/src/main/java/com/ycwl/basic/biz/OrderBiz.java b/src/main/java/com/ycwl/basic/biz/OrderBiz.java index 443c93f9..530fc054 100644 --- a/src/main/java/com/ycwl/basic/biz/OrderBiz.java +++ b/src/main/java/com/ycwl/basic/biz/OrderBiz.java @@ -10,7 +10,7 @@ import com.ycwl.basic.model.mobile.statistic.req.StatisticsRecordAddReq; import com.ycwl.basic.model.pc.face.entity.FaceEntity; import com.ycwl.basic.model.pc.order.entity.OrderEntity; import com.ycwl.basic.model.pc.order.entity.OrderItemEntity; -import com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity; +import com.ycwl.basic.integration.common.manager.ScenicConfigManager; import com.ycwl.basic.model.pc.template.resp.TemplateRespVO; import com.ycwl.basic.model.pc.video.entity.VideoEntity; import com.ycwl.basic.pricing.dto.PriceCalculationRequest; @@ -71,9 +71,9 @@ public class OrderBiz { PriceObj priceObj = new PriceObj(); priceObj.setGoodsType(goodsType); priceObj.setGoodsId(goodsId); - ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(scenicId); + ScenicConfigManager scenicConfig = scenicRepository.getScenicConfigManager(scenicId); if (scenicConfig != null) { - if (Boolean.TRUE.equals(scenicConfig.getAllFree())) { + if (Boolean.TRUE.equals(scenicConfig.getBoolean("all_free"))) { // 景区全免 priceObj.setFree(true); priceObj.setPrice(BigDecimal.ZERO); diff --git a/src/main/java/com/ycwl/basic/biz/PriceBiz.java b/src/main/java/com/ycwl/basic/biz/PriceBiz.java index a42494d5..a2f170b6 100644 --- a/src/main/java/com/ycwl/basic/biz/PriceBiz.java +++ b/src/main/java/com/ycwl/basic/biz/PriceBiz.java @@ -8,7 +8,7 @@ import com.ycwl.basic.model.pc.order.entity.OrderEntity; import com.ycwl.basic.model.pc.price.entity.PriceConfigEntity; import com.ycwl.basic.model.pc.price.resp.GoodsListRespVO; import com.ycwl.basic.model.pc.price.resp.SimpleGoodsRespVO; -import com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity; +import com.ycwl.basic.integration.common.manager.ScenicConfigManager; import com.ycwl.basic.model.pc.template.resp.TemplateRespVO; import com.ycwl.basic.model.pc.video.entity.MemberVideoEntity; import com.ycwl.basic.product.capability.ProductTypeCapability; @@ -65,12 +65,12 @@ public class PriceBiz { goods.setGoodsType(0); return goods; }).forEach(goodsList::add); - ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(scenicId); + ScenicConfigManager scenicConfig = scenicRepository.getScenicConfigManager(scenicId); if (scenicConfig != null) { - if (!Boolean.TRUE.equals(scenicConfig.getDisableSourceVideo())) { + if (!Boolean.TRUE.equals(scenicConfig.getBoolean("disable_source_video"))) { goodsList.add(new GoodsListRespVO(1L, "录像集", 1)); } - if (!Boolean.TRUE.equals(scenicConfig.getDisableSourceImage())) { + if (!Boolean.TRUE.equals(scenicConfig.getBoolean("disable_source_image"))) { goodsList.add(new GoodsListRespVO(2L, "照片集", 2)); } } @@ -220,9 +220,9 @@ public class PriceBiz { if (face != null && !face.getMemberId().equals(userId)) { return null; } - ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(scenicId); + ScenicConfigManager scenicConfig = scenicRepository.getScenicConfigManager(scenicId); if (scenicConfig != null) { - if (Boolean.TRUE.equals(scenicConfig.getAllFree())) { + if (Boolean.TRUE.equals(scenicConfig.getBoolean("all_free"))) { // 景区全免 respVO.setFree(true); respVO.setSlashPrice(BigDecimal.ZERO); @@ -268,7 +268,7 @@ public class PriceBiz { if (allContentsPurchased) { if (scenicConfig != null) { // 检查录像集 - if (!Boolean.TRUE.equals(scenicConfig.getDisableSourceVideo())) { + if (!Boolean.TRUE.equals(scenicConfig.getBoolean("disable_source_video"))) { boolean hasPurchasedRecording = orderRepository.checkUserBuyFaceItem(userId, faceId, 1, faceId); if (!hasPurchasedRecording) { allContentsPurchased = false; @@ -276,7 +276,7 @@ public class PriceBiz { } // 检查照片集 - if (allContentsPurchased && !Boolean.TRUE.equals(scenicConfig.getDisableSourceImage())) { + if (allContentsPurchased && !Boolean.TRUE.equals(scenicConfig.getBoolean("disable_source_image"))) { boolean hasPurchasedPhoto = orderRepository.checkUserBuyFaceItem(userId, faceId, 2, faceId); if (!hasPurchasedPhoto) { allContentsPurchased = false; diff --git a/src/main/java/com/ycwl/basic/face/pipeline/stages/PrepareContextStage.java b/src/main/java/com/ycwl/basic/face/pipeline/stages/PrepareContextStage.java index 11022f48..eda024b2 100644 --- a/src/main/java/com/ycwl/basic/face/pipeline/stages/PrepareContextStage.java +++ b/src/main/java/com/ycwl/basic/face/pipeline/stages/PrepareContextStage.java @@ -72,8 +72,8 @@ public class PrepareContextStage extends AbstractPipelineStage"; content += ""+voucherPrintResp.getType()+""; content += "有效期:"+sdf2.format(new Date())+""; - ScenicConfigManager config = scenicRepository.getScenicConfigManager(face.getScenicId()); - if (Strings.isNotBlank(config.getString("ticket_print_sn"))) { - FeiETicketPrinter.doPrint(config.getString("ticket_print_sn"), content, 1); + ScenicConfigManager configManager = scenicRepository.getScenicConfigManager(face.getScenicId()); + if (Strings.isNotBlank(configManager.getString("ticket_print_sn"))) { + FeiETicketPrinter.doPrint(configManager.getString("ticket_print_sn"), content, 1); } else { log.warn("打印没有配置->内容:\n{}", content); } diff --git a/src/main/java/com/ycwl/basic/repository/ScenicRepository.java b/src/main/java/com/ycwl/basic/repository/ScenicRepository.java index d8df36af..3522d1d4 100644 --- a/src/main/java/com/ycwl/basic/repository/ScenicRepository.java +++ b/src/main/java/com/ycwl/basic/repository/ScenicRepository.java @@ -12,7 +12,6 @@ import com.ycwl.basic.mapper.MpNotifyConfigMapper; import com.ycwl.basic.model.pc.mp.MpConfigEntity; import com.ycwl.basic.model.pc.mp.MpNotifyConfigEntity; import com.ycwl.basic.model.pc.mp.ScenicMpNotifyVO; -import com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity; import com.ycwl.basic.model.pc.scenic.entity.ScenicEntity; import com.ycwl.basic.model.pc.scenic.req.ScenicReqQuery; import com.ycwl.basic.pay.enums.PayAdapterType; @@ -59,78 +58,6 @@ public class ScenicRepository { return scenicEntity; } - @Deprecated - public ScenicConfigEntity getScenicConfig(Long scenicId) { - ScenicConfigManager scenicConfigManager = getScenicConfigManager(scenicId); - ScenicConfigEntity config = new ScenicConfigEntity(); - - // 基础配置 - config.setScenicId(scenicId); - if (scenicConfigManager == null) { - return config; - } - - // 业务流程配置 - config.setBookRoutine(scenicConfigManager.getInteger("book_routine")); - config.setForceFinishTime(scenicConfigManager.getInteger("force_finish_time")); - config.setTourTime(scenicConfigManager.getInteger("tour_time")); - - // 存储时间配置 - config.setSampleStoreDay(scenicConfigManager.getInteger("sample_store_day")); - config.setFaceStoreDay(scenicConfigManager.getInteger("face_store_day")); - config.setVideoStoreDay(scenicConfigManager.getInteger("video_store_day")); - config.setVideoSourceStoreDay(scenicConfigManager.getInteger("video_source_store_day")); - config.setImageSourceStoreDay(scenicConfigManager.getInteger("image_source_store_day")); - config.setUserSourceExpireDay(scenicConfigManager.getInteger("user_source_expire_day")); - - // 功能开关配置 - config.setAllFree(scenicConfigManager.getBoolean("all_free")); - config.setDisableSourceVideo(scenicConfigManager.getBoolean("disable_source_video")); - config.setDisableSourceImage(scenicConfigManager.getBoolean("disable_source_image")); - config.setVoucherEnable(scenicConfigManager.getBoolean("voucher_enable")); - - // 模板和防录屏配置 - config.setTemplateNewVideoType(scenicConfigManager.getInteger("template_new_video_type")); - config.setAntiScreenRecordType(scenicConfigManager.getInteger("anti_screen_record_type")); - - // 人脸识别配置 - config.setFaceScoreThreshold(scenicConfigManager.getFloat("face_score_threshold")); - config.setFaceDetectHelperThreshold(scenicConfigManager.getInteger("face_detect_helper_threshold")); - config.setFaceType(scenicConfigManager.getEnum("face_type", FaceBodyAdapterType.class)); - config.setFaceConfigJson(scenicConfigManager.getString("face_config_json")); - - // 存储配置 - config.setStoreType(scenicConfigManager.getEnum("store_type", StorageType.class)); - config.setStoreConfigJson(scenicConfigManager.getString("store_config_json")); - config.setTmpStoreType(scenicConfigManager.getEnum("tmp_store_type", StorageType.class)); - config.setTmpStoreConfigJson(scenicConfigManager.getString("tmp_store_config_json")); - config.setLocalStoreType(scenicConfigManager.getEnum("local_store_type", StorageType.class)); - config.setLocalStoreConfigJson(scenicConfigManager.getString("local_store_config_json")); - - // 支付配置 - config.setPayType(scenicConfigManager.getEnum("pay_type", PayAdapterType.class)); - config.setPayConfigJson(scenicConfigManager.getString("pay_config_json")); - - // 推客配置 - config.setBrokerDirectRate(scenicConfigManager.getBigDecimal("broker_direct_rate")); - - // 水印配置 - config.setWatermarkType(scenicConfigManager.getString("watermark_type")); - config.setWatermarkScenicText(scenicConfigManager.getString("watermark_scenic_text")); - config.setWatermarkDtFormat(scenicConfigManager.getString("watermark_dt_format")); - - // 提示信息配置 - config.setImageSourcePackHint(scenicConfigManager.getString("image_source_pack_hint")); - config.setVideoSourcePackHint(scenicConfigManager.getString("video_source_pack_hint")); - config.setExtraNotificationTime(scenicConfigManager.getString("extra_notification_time")); - - // 免费数量配置 - config.setPhotoFreeNum(scenicConfigManager.getInteger("photo_free_num")); - config.setVideoFreeNum(scenicConfigManager.getInteger("video_free_num")); - - return config; - } - public MpConfigEntity getScenicMpConfig(Long scenicId) { if (redisTemplate.hasKey(String.format(SCENIC_MP_CACHE_KEY, scenicId))) { return JacksonUtil.parseObject(redisTemplate.opsForValue().get(String.format(SCENIC_MP_CACHE_KEY, scenicId)), MpConfigEntity.class); diff --git a/src/main/java/com/ycwl/basic/service/mobile/impl/AppAiCamServiceImpl.java b/src/main/java/com/ycwl/basic/service/mobile/impl/AppAiCamServiceImpl.java index 7bf8da9a..f14838e1 100644 --- a/src/main/java/com/ycwl/basic/service/mobile/impl/AppAiCamServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/mobile/impl/AppAiCamServiceImpl.java @@ -285,7 +285,7 @@ public class AppAiCamServiceImpl implements AppAiCamService { int freePhotoCount = 0; if (!hasGivenFree) { try { - com.ycwl.basic.integration.common.manager.ScenicConfigManager configManager = + ScenicConfigManager configManager = scenicRepository.getScenicConfigManager(face.getScenicId()); if (configManager != null) { Integer aiCamFreeNum = configManager.getInteger("ai_cam_free_num"); diff --git a/src/main/java/com/ycwl/basic/service/mobile/impl/GoodsServiceImpl.java b/src/main/java/com/ycwl/basic/service/mobile/impl/GoodsServiceImpl.java index e83a0c50..8d8a9e7e 100644 --- a/src/main/java/com/ycwl/basic/service/mobile/impl/GoodsServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/mobile/impl/GoodsServiceImpl.java @@ -29,7 +29,6 @@ import com.ycwl.basic.model.pc.device.entity.DeviceEntity; import com.ycwl.basic.model.pc.face.entity.FaceEntity; import com.ycwl.basic.model.pc.face.resp.FaceRespVO; import com.ycwl.basic.model.pc.mp.MpConfigEntity; -import com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity; import com.ycwl.basic.model.pc.source.entity.SourceEntity; import com.ycwl.basic.model.pc.source.entity.SourceWatermarkEntity; import com.ycwl.basic.model.pc.source.req.SourceReqQuery; @@ -51,6 +50,7 @@ import com.ycwl.basic.model.repository.TaskUpdateResult; import com.ycwl.basic.storage.StorageFactory; import com.ycwl.basic.storage.adapters.IStorageAdapter; import com.ycwl.basic.storage.enums.StorageAcl; +import com.ycwl.basic.storage.enums.StorageType; import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.WxMpUtil; import lombok.extern.slf4j.Slf4j; @@ -563,15 +563,15 @@ public class GoodsServiceImpl implements GoodsService { }).collect(Collectors.toList()); IsBuyRespVO isBuy = orderBiz.isBuy(face.getScenicId(), face.getMemberId(), face.getId(), query.getSourceType(), face.getId()); if (!isBuy.isBuy()) { - ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(face.getScenicId()); - if (scenicConfig != null && ((scenicConfig.getAntiScreenRecordType() & 2) == 0)) { + ScenicConfigManager configManager = scenicRepository.getScenicConfigManager(face.getScenicId()); + if (configManager != null && ((configManager.getInteger("anti_screen_record_type") & 2) == 0)) { // 未启用水印 return defaultUrlList; } IStorageAdapter adapter; - if (scenicConfig != null && scenicConfig.getStoreType() != null) { - adapter = StorageFactory.get(scenicConfig.getStoreType()); - adapter.loadConfig(JacksonUtil.parseObject(scenicConfig.getStoreConfigJson(), Map.class)); + if (configManager != null && configManager.getEnum("store_type", StorageType.class) != null) { + adapter = StorageFactory.get(configManager.getEnum("store_type", StorageType.class)); + adapter.loadConfig(JacksonUtil.parseObject(configManager.getString("store_config_json"), Map.class)); } else { adapter = StorageFactory.use("assets-ext"); } @@ -667,19 +667,19 @@ public class GoodsServiceImpl implements GoodsService { goodsUrlVO.setCreateTime(source.getCreateTime()); return goodsUrlVO; }).collect(Collectors.toList()); - ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(face.getScenicId()); + ScenicConfigManager configManager = scenicRepository.getScenicConfigManager(face.getScenicId()); MpConfigEntity scenicMpConfig = scenicRepository.getScenicMpConfig(face.getScenicId()); if (scenicMpConfig == null) { log.warn("未配置小程序参数,无法生成二维码"); return defaultUrlList; } - if (scenicConfig != null && scenicConfig.getWatermarkType() != null && !isBuy.isBuy()) { - ImageWatermarkOperatorEnum type = ImageWatermarkOperatorEnum.getByCode(scenicConfig.getWatermarkType()); + if (configManager != null && configManager.getString("watermark_type") != null && !isBuy.isBuy()) { + ImageWatermarkOperatorEnum type = ImageWatermarkOperatorEnum.getByCode(configManager.getString("watermark_type")); if (type != null) { IStorageAdapter adapter; - if (scenicConfig.getStoreType() != null) { - adapter = StorageFactory.get(scenicConfig.getStoreType()); - adapter.loadConfig(JacksonUtil.parseObject(scenicConfig.getStoreConfigJson(), Map.class)); + if (configManager.getEnum("store_type", StorageType.class) != null) { + adapter = StorageFactory.get(configManager.getEnum("store_type", StorageType.class)); + adapter.loadConfig(JacksonUtil.parseObject(configManager.getString("store_config_json"), Map.class)); } else { adapter = StorageFactory.use("assets-ext"); } @@ -708,7 +708,7 @@ public class GoodsServiceImpl implements GoodsService { item.setUrl(any.get().getWatermarkUrl()); } else { // 生成 - String text = scenicConfig.getWatermarkScenicText(); + String text = configManager.getString("watermark_scenic_text"); if (StringUtils.isBlank(text)) { SourceEntity entity = sourceMapper.getEntity(item.getGoodsId()); if (entity != null) { @@ -733,7 +733,7 @@ public class GoodsServiceImpl implements GoodsService { info.setScenicLine(text); info.setDatetime(item.getCreateTime()); info.setFaceFile(faceFile); - info.setDtFormat(scenicConfig.getWatermarkDtFormat()); + info.setDtFormat(configManager.getString("watermark_dt_format")); info.setWatermarkedFile(watermarkedFile); try { operator.process(info); @@ -829,7 +829,7 @@ public class GoodsServiceImpl implements GoodsService { } // 获取景区配置 - ScenicConfigManager scenicConfig = scenicRepository.getScenicConfigManager(scenicId); + ScenicConfigManager configManager = scenicRepository.getScenicConfigManager(scenicId); // 使用 LinkedHashMap 按 goodsType-goodsId 去重 Map goodsMap = new LinkedHashMap<>(); @@ -882,9 +882,9 @@ public class GoodsServiceImpl implements GoodsService { // 根据景区配置过滤禁用的素材类型 boolean isDisabled = false; if (Integer.valueOf(1).equals(type)) { - isDisabled = Boolean.TRUE.equals(scenicConfig.getBoolean("disable_source_video")); + isDisabled = Boolean.TRUE.equals(configManager.getBoolean("disable_source_video")); } else if (Integer.valueOf(2).equals(type)) { - isDisabled = Boolean.TRUE.equals(scenicConfig.getBoolean("disable_source_image")); + isDisabled = Boolean.TRUE.equals(configManager.getBoolean("disable_source_image")); } if (!isDisabled) { @@ -895,13 +895,13 @@ public class GoodsServiceImpl implements GoodsService { goodsPageVO.setGoodsType(type); if (type == 1) { goodsPageVO.setGoodsName("录像集"); - goodsPageVO.setTemplateCoverUrl(scenicConfig.getString("video_cover_url")); + goodsPageVO.setTemplateCoverUrl(configManager.getString("video_cover_url")); } else if (type == 2) { goodsPageVO.setGoodsName("照片集"); - goodsPageVO.setTemplateCoverUrl(scenicConfig.getString("photo_cover_url")); + goodsPageVO.setTemplateCoverUrl(configManager.getString("photo_cover_url")); } else if (type == 3) { goodsPageVO.setGoodsName("AI微单"); - goodsPageVO.setTemplateCoverUrl(scenicConfig.getString("ai_camera_cover_url")); + goodsPageVO.setTemplateCoverUrl(configManager.getString("ai_camera_cover_url")); } else { goodsPageVO.setGoodsName("未知商品"); } diff --git a/src/main/java/com/ycwl/basic/service/pc/impl/FaceServiceImpl.java b/src/main/java/com/ycwl/basic/service/pc/impl/FaceServiceImpl.java index a063c008..4b01c306 100644 --- a/src/main/java/com/ycwl/basic/service/pc/impl/FaceServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/pc/impl/FaceServiceImpl.java @@ -854,8 +854,8 @@ public class FaceServiceImpl implements FaceService { if (matchResult == null || StringUtils.isBlank(matchResult)) { return List.of(); } - ScenicConfigManager scenicConfig = scenicRepository.getScenicConfigManager(face.getScenicId()); - if (scenicConfig == null) { + ScenicConfigManager configManager = scenicRepository.getScenicConfigManager(face.getScenicId()); + if (configManager == null) { return List.of(); } Float lowThreshold = scenicConfigFacade.getFaceScoreLowThreshold(face.getScenicId()); @@ -903,7 +903,7 @@ public class FaceServiceImpl implements FaceService { throw new BaseException("未找到指定的人脸样本"); } - ScenicConfigManager scenicConfig = scenicRepository.getScenicConfigManager(face.getScenicId()); + ScenicConfigManager configManager = scenicRepository.getScenicConfigManager(face.getScenicId()); IFaceBodyAdapter faceBodyAdapter = scenicService.getScenicFaceBodyAdapter(face.getScenicId()); if (faceBodyAdapter == null) { @@ -956,7 +956,7 @@ public class FaceServiceImpl implements FaceService { if (mergedResult.getSampleListIds() != null && !mergedResult.getSampleListIds().isEmpty()) { List allFaceSampleList = faceSampleMapper.listByIds(mergedResult.getSampleListIds()); List filteredSampleIds = faceService.applySampleFilters( - mergedResult.getSampleListIds(), allFaceSampleList, scenicConfig); + mergedResult.getSampleListIds(), allFaceSampleList, configManager); mergedResult.setSampleListIds(filteredSampleIds); log.debug("应用后置筛选:原始样本数={}, 筛选后样本数={}", allFaceSampleList.size(), filteredSampleIds.size()); @@ -1097,9 +1097,9 @@ public class FaceServiceImpl implements FaceService { // 获取景区配置的得分阈值 Float scoreThreshold = null; try { - ScenicConfigManager scenicConfig = scenicRepository.getScenicConfigManager(face.getScenicId()); - if (scenicConfig != null) { - BigDecimal thresholdConfig = scenicConfig.getBigDecimal("face_select_score_threshold"); + ScenicConfigManager configManager = scenicRepository.getScenicConfigManager(face.getScenicId()); + if (configManager != null) { + BigDecimal thresholdConfig = configManager.getBigDecimal("face_select_score_threshold"); if (thresholdConfig != null) { // 配置值是0~100的小数,需要转换为0~1的阈值 scoreThreshold = thresholdConfig.floatValue() / 100.0f; diff --git a/src/main/java/com/ycwl/basic/service/task/impl/TaskFaceServiceImpl.java b/src/main/java/com/ycwl/basic/service/task/impl/TaskFaceServiceImpl.java index 69a51339..8bf0a612 100644 --- a/src/main/java/com/ycwl/basic/service/task/impl/TaskFaceServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/task/impl/TaskFaceServiceImpl.java @@ -12,6 +12,7 @@ import com.ycwl.basic.exception.BaseException; import com.ycwl.basic.facebody.FaceBodyFactory; import com.ycwl.basic.facebody.adapter.AliFaceBodyAdapter; import com.ycwl.basic.facebody.adapter.IFaceBodyAdapter; +import com.ycwl.basic.facebody.enums.FaceBodyAdapterType; import com.ycwl.basic.facebody.entity.SearchFaceResp; import com.ycwl.basic.facebody.entity.SearchFaceResultItem; import com.ycwl.basic.mapper.FaceDetectLogMapper; @@ -27,7 +28,6 @@ import com.ycwl.basic.model.pc.face.resp.FaceRespVO; import com.ycwl.basic.model.pc.faceDetectLog.entity.FaceDetectLog; import com.ycwl.basic.model.pc.faceDetectLog.resp.MatchLocalRecord; import com.ycwl.basic.model.pc.faceSample.entity.FaceSampleEntity; -import com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity; import com.ycwl.basic.model.pc.source.entity.MemberSourceEntity; import com.ycwl.basic.model.pc.source.entity.SourceEntity; import com.ycwl.basic.model.task.resp.SearchFaceRespVo; @@ -107,11 +107,11 @@ public class TaskFaceServiceImpl implements TaskFaceService { return vo; } Long scenicId = face.getScenicId(); - ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(scenicId); + ScenicConfigManager configManager = scenicRepository.getScenicConfigManager(scenicId); IFaceBodyAdapter faceBodyAdapter; - if (scenicConfig != null && scenicConfig.getFaceType() != null) { - faceBodyAdapter = FaceBodyFactory.getAdapter(scenicConfig.getFaceType()); - faceBodyAdapter.loadConfig(JacksonUtil.parseObject(scenicConfig.getFaceConfigJson(), Map.class)); + if (configManager != null && configManager.getEnum("face_type", FaceBodyAdapterType.class) != null) { + faceBodyAdapter = FaceBodyFactory.getAdapter(configManager.getEnum("face_type", FaceBodyAdapterType.class)); + faceBodyAdapter.loadConfig(JacksonUtil.parseObject(configManager.getString("face_config_json"), Map.class)); } else { faceBodyAdapter = FaceBodyFactory.use(); } @@ -178,9 +178,9 @@ public class TaskFaceServiceImpl implements TaskFaceService { .collect(Collectors.groupingBy(FaceSampleEntity::getDeviceId)) .entrySet() .stream().flatMap(entry -> { - DeviceConfigManager configManager = deviceRepository.getDeviceConfigManager(entry.getKey()); - if (configManager.getInteger("limit_video", 0) > 0) { - return entry.getValue().subList(0, Math.min(entry.getValue().size(), configManager.getInteger("limit_video", 0))).stream(); + DeviceConfigManager deviceConfigManager = deviceRepository.getDeviceConfigManager(entry.getKey()); + if (deviceConfigManager.getInteger("limit_video", 0) > 0) { + return entry.getValue().subList(0, Math.min(entry.getValue().size(), deviceConfigManager.getInteger("limit_video", 0))).stream(); } return entry.getValue().stream(); }).toList() @@ -315,7 +315,7 @@ public class TaskFaceServiceImpl implements TaskFaceService { @Override public boolean deleteFaceSample(Long scenicId, String dbName, String entityId) { - ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(scenicId); + ScenicConfigManager configManager = scenicRepository.getScenicConfigManager(scenicId); IFaceBodyAdapter adapter = scenicService.getScenicFaceBodyAdapter(scenicId); log.info("删除{}人脸实体:{}", dbName, entityId); try { diff --git a/src/main/java/com/ycwl/basic/service/task/impl/TaskTaskServiceImpl.java b/src/main/java/com/ycwl/basic/service/task/impl/TaskTaskServiceImpl.java index 96c29356..e6da0fc1 100644 --- a/src/main/java/com/ycwl/basic/service/task/impl/TaskTaskServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/task/impl/TaskTaskServiceImpl.java @@ -400,9 +400,9 @@ public class TaskTaskServiceImpl implements TaskService { memberVideoEntity.setIsBuy(0); if (list.isEmpty()) { log.info("创建任务! faceId:{},templateId:{},taskParams:{}", faceId, templateId, sourcesMap); - ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(face.getScenicId()); + ScenicConfigManager scenicConfig = scenicRepository.getScenicConfigManager(face.getScenicId()); TaskEntity taskEntity = null; - if (Integer.valueOf(0).equals(scenicConfig.getTemplateNewVideoType())) { + if (Integer.valueOf(0).equals(scenicConfig.getInteger("template_new_video_type"))) { log.info("景区{}启用:templateNewVideoType:全新视频原位替换", face.getScenicId()); taskReqQuery.setTemplateId(templateId); List templateTaskList = taskMapper.listEntity(taskReqQuery); @@ -499,7 +499,7 @@ public class TaskTaskServiceImpl implements TaskService { } videoMapper.add(video); } - ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(task.getScenicId()); + ScenicConfigManager scenicConfig = scenicRepository.getScenicConfigManager(task.getScenicId()); IStorageAdapter adapter = scenicService.getScenicTmpStorageAdapter(task.getScenicId()); String hash = MD5.create().digestHex(task.getTaskParams() + task.getFaceId().toString()); String filename = StorageUtil.joinPath(StorageConstant.VLOG_PATH, task.getTemplateId().toString() + "_" + hash + "_" + task.getScenicId() + ".mp4"); @@ -516,7 +516,7 @@ public class TaskTaskServiceImpl implements TaskService { } if (isBuy != 1) { // 判断景区新生成免费送逻辑 - if (scenicConfig != null && Integer.valueOf(2).equals(scenicConfig.getTemplateNewVideoType())) { + if (scenicConfig != null && Integer.valueOf(2).equals(scenicConfig.getInteger("template_new_video_type"))) { log.info("景区{}启用:templateNewVideoType:全新视频不需要重新购买", task.getScenicId()); // 全新视频,不需要重新购买,旧视频在我的里面查看 List entityList = videoMapper.listRelationByFaceAndTemplate(face.getId(), task.getTemplateId()); diff --git a/src/main/java/com/ycwl/basic/task/DownloadNotificationTasker.java b/src/main/java/com/ycwl/basic/task/DownloadNotificationTasker.java index 92cd4c42..a2074d77 100644 --- a/src/main/java/com/ycwl/basic/task/DownloadNotificationTasker.java +++ b/src/main/java/com/ycwl/basic/task/DownloadNotificationTasker.java @@ -11,7 +11,7 @@ import com.ycwl.basic.model.pc.coupon.req.CouponQueryReq; import com.ycwl.basic.model.pc.coupon.resp.CouponRespVO; import com.ycwl.basic.model.pc.member.resp.MemberRespVO; import com.ycwl.basic.model.pc.mp.MpConfigEntity; -import com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity; +import com.ycwl.basic.integration.common.manager.ScenicConfigManager; import com.ycwl.basic.model.pc.scenic.entity.ScenicEntity; import com.ycwl.basic.model.pc.scenic.req.ScenicReqQuery; import com.ycwl.basic.repository.ScenicRepository; @@ -146,8 +146,8 @@ public class DownloadNotificationTasker { sentMemberIds.add(item.getMemberId()); MemberRespVO member = memberMapper.getById(item.getMemberId()); - ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(item.getScenicId()); - Integer videoStoreDay = scenicConfig.getVideoStoreDay(); + ScenicConfigManager scenicConfig = scenicRepository.getScenicConfigManager(item.getScenicId()); + Integer videoStoreDay = scenicConfig.getInteger("video_store_day"); if (videoStoreDay == null) { videoStoreDay = 3; } diff --git a/src/main/java/com/ycwl/basic/task/DynamicTaskGenerator.java b/src/main/java/com/ycwl/basic/task/DynamicTaskGenerator.java index 2b004492..50f0ae96 100644 --- a/src/main/java/com/ycwl/basic/task/DynamicTaskGenerator.java +++ b/src/main/java/com/ycwl/basic/task/DynamicTaskGenerator.java @@ -10,7 +10,7 @@ import com.ycwl.basic.mapper.FaceSampleMapper; import com.ycwl.basic.mapper.TemplateMapper; import com.ycwl.basic.model.pc.face.entity.FaceEntity; import com.ycwl.basic.model.pc.faceSample.resp.FaceSampleRespVO; -import com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity; +import com.ycwl.basic.integration.common.manager.ScenicConfigManager; import com.ycwl.basic.model.task.resp.SearchFaceRespVo; import com.ycwl.basic.repository.FaceRepository; import com.ycwl.basic.repository.ScenicRepository; @@ -100,20 +100,20 @@ public class DynamicTaskGenerator { log.debug("人脸样本ID{}人脸质量为空", task.getFaceSampleId()); return; } - ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(faceSample.getScenicId()); + ScenicConfigManager scenicConfig = scenicRepository.getScenicConfigManager(faceSample.getScenicId()); if (scenicConfig == null) { log.debug("当前景区{},无配置", faceSample.getScenicId()); return; } - if (!Integer.valueOf(5).equals(scenicConfig.getBookRoutine())) { + if (!Integer.valueOf(5).equals(scenicConfig.getInteger("book_routine"))) { log.debug("当前景区{}未启用预约流程,跳过", faceSample.getScenicId()); return; } log.info("开始执行任务:{}", task); IFaceBodyAdapter faceBodyAdapter; - if (scenicConfig.getFaceType() != null) { - faceBodyAdapter = FaceBodyFactory.getAdapter(scenicConfig.getFaceType()); - faceBodyAdapter.loadConfig(JacksonUtil.parseObject(scenicConfig.getFaceConfigJson(), Map.class)); + if (scenicConfig.getInteger("face_type") != null) { + faceBodyAdapter = FaceBodyFactory.getAdapter(String.valueOf(scenicConfig.getInteger("face_type"))); + faceBodyAdapter.loadConfig(JacksonUtil.parseObject(scenicConfig.getString("face_config_json"), Map.class)); } else { faceBodyAdapter = FaceBodyFactory.use(); } diff --git a/src/main/java/com/ycwl/basic/task/FaceCleaner.java b/src/main/java/com/ycwl/basic/task/FaceCleaner.java index f35798b1..8c0f204e 100644 --- a/src/main/java/com/ycwl/basic/task/FaceCleaner.java +++ b/src/main/java/com/ycwl/basic/task/FaceCleaner.java @@ -14,7 +14,7 @@ import com.ycwl.basic.model.pc.face.req.FaceReqQuery; import com.ycwl.basic.model.pc.faceSample.entity.FaceSampleEntity; import com.ycwl.basic.model.pc.faceSample.req.FaceSampleReqQuery; import com.ycwl.basic.model.pc.faceSample.resp.FaceSampleRespVO; -import com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity; +import com.ycwl.basic.integration.common.manager.ScenicConfigManager; import com.ycwl.basic.model.pc.scenic.req.ScenicReqQuery; import com.ycwl.basic.model.pc.source.req.SourceReqQuery; import com.ycwl.basic.model.pc.source.resp.SourceRespVO; @@ -67,8 +67,8 @@ public class FaceCleaner { Long scenicId = Long.parseLong(scenic.getId()); log.info("当前景区{},开始删除人脸样本", scenicId); IFaceBodyAdapter adapter = scenicService.getScenicFaceBodyAdapter(scenicId); - ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(scenicId); - Integer sampleStoreDay = scenicConfig.getSampleStoreDay(); + ScenicConfigManager scenicConfig = scenicRepository.getScenicConfigManager(scenicId); + Integer sampleStoreDay = scenicConfig.getInteger("sample_store_day"); if (sampleStoreDay == null) { log.info("当前景区{},人脸样本保存天数未设置,默认7天", scenic.getId()); sampleStoreDay = 7; @@ -99,9 +99,9 @@ public class FaceCleaner { scenicList.parallelStream().forEach(scenic -> { Long scenicId = Long.parseLong(scenic.getId()); log.info("当前景区{},开始删除用户人脸", scenic.getId()); - ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(scenicId); + ScenicConfigManager scenicConfig = scenicRepository.getScenicConfigManager(scenicId); IFaceBodyAdapter adapter = scenicService.getScenicFaceBodyAdapter(scenicId); - Integer faceStoreDay = scenicConfig.getFaceStoreDay(); + Integer faceStoreDay = scenicConfig.getInteger("face_store_day"); if (faceStoreDay == null) { log.info("当前景区{},人脸样本保存天数未设置,默认3天", scenic.getName()); faceStoreDay = 3; @@ -135,16 +135,16 @@ public class FaceCleaner { List scenicList = scenicRepository.list(query); scenicList.parallelStream().forEach(scenic -> { Long scenicId = Long.valueOf(scenic.getId()); - ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(scenicId); + ScenicConfigManager scenicConfig = scenicRepository.getScenicConfigManager(scenicId); if (scenicConfig == null) { log.info("当前景区{},无配置信息", scenic.getName()); return; } - if (scenicConfig.getUserSourceExpireDay() == null) { + if (scenicConfig.getInteger("user_source_expire_day") == null) { log.info("当前景区{},人脸样本过期天数未设置", scenic.getName()); return; } - int expireDay = scenicConfig.getUserSourceExpireDay(); + int expireDay = scenicConfig.getInteger("user_source_expire_day"); Date endDate = DateUtil.offsetDay(DateUtil.beginOfDay(new Date()), -expireDay); int deleteCount = sourceMapper.deleteNotBuyRelations(scenicId, endDate); log.info("当前景区{},删除关联素材{}个", scenic.getName(), deleteCount); @@ -158,16 +158,16 @@ public class FaceCleaner { List scenicList = scenicRepository.list(query); scenicList.parallelStream().forEach(scenic -> { Long scenicId = Long.valueOf(scenic.getId()); - ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(scenicId); + ScenicConfigManager scenicConfig = scenicRepository.getScenicConfigManager(scenicId); if (scenicConfig == null) { log.info("当前景区{},无配置信息", scenic.getName()); return; } - if (scenicConfig.getVideoStoreDay() == null) { + if (scenicConfig.getInteger("video_store_day") == null) { log.info("当前景区{},VLOG过期天数未设置", scenic.getName()); return; } - int expireDay = scenicConfig.getVideoStoreDay(); + int expireDay = scenicConfig.getInteger("video_store_day"); Date endDate = DateUtil.offsetDay(DateUtil.beginOfDay(new Date()), -expireDay); int deleteCount = videoMapper.deleteNotBuyRelations(scenicId, endDate); int deleteVideoCount = videoMapper.deleteUselessVideo(); @@ -182,27 +182,27 @@ public class FaceCleaner { List scenicList = scenicRepository.list(query); scenicList.parallelStream().forEach(scenic -> { Long scenicId = Long.valueOf(scenic.getId()); - ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(scenicId); + ScenicConfigManager scenicConfig = scenicRepository.getScenicConfigManager(scenicId); if (scenicConfig == null) { log.info("当前景区{},无配置信息", scenic.getName()); return; } int imageSourceExpireDay = 7; int videoSourceExpireDay = 7; - if (scenicConfig.getImageSourceStoreDay() != null) { - imageSourceExpireDay = scenicConfig.getImageSourceStoreDay(); + if (scenicConfig.getInteger("image_source_store_day") != null) { + imageSourceExpireDay = scenicConfig.getInteger("image_source_store_day"); } else { log.info("当前景区{},原始素材保存天数未设置,默认7天", scenic.getName()); } - if (scenicConfig.getVideoSourceStoreDay() != null) { - videoSourceExpireDay = scenicConfig.getVideoSourceStoreDay(); + if (scenicConfig.getInteger("video_source_store_day") != null) { + videoSourceExpireDay = scenicConfig.getInteger("video_source_store_day"); } else { log.info("当前景区{},原始素材保存天数未设置,默认7天", scenic.getName()); } - if (Boolean.TRUE.equals(scenicConfig.getDisableSourceVideo())) { + if (Boolean.TRUE.equals(scenicConfig.getBoolean("disable_source_video"))) { return; } - if (Boolean.TRUE.equals(scenicConfig.getDisableSourceImage())) { + if (Boolean.TRUE.equals(scenicConfig.getBoolean("disable_source_image"))) { return; } log.info("当前景区{},开始删除原始素材", scenic.getName()); diff --git a/src/main/java/com/ycwl/basic/task/VideoPieceGetter.java b/src/main/java/com/ycwl/basic/task/VideoPieceGetter.java index 88e355ab..5f9eadd7 100644 --- a/src/main/java/com/ycwl/basic/task/VideoPieceGetter.java +++ b/src/main/java/com/ycwl/basic/task/VideoPieceGetter.java @@ -11,7 +11,7 @@ import com.ycwl.basic.enums.FaceCutStatus; import com.ycwl.basic.integration.common.manager.DeviceConfigManager; import com.ycwl.basic.model.pc.face.entity.FaceEntity; import com.ycwl.basic.model.pc.faceSample.entity.FaceSampleEntity; -import com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity; +import com.ycwl.basic.integration.common.manager.ScenicConfigManager; import com.ycwl.basic.repository.DeviceRepository; import com.ycwl.basic.mapper.FaceSampleMapper; import com.ycwl.basic.mapper.SourceMapper; @@ -290,17 +290,17 @@ public class VideoPieceGetter { if (task.getFaceId() != null) { FaceEntity face = faceRepository.getFace(task.getFaceId()); if (face != null) { - ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(face.getScenicId()); + ScenicConfigManager scenicConfig = scenicRepository.getScenicConfigManager(face.getScenicId()); if (scenicConfig != null) { // 免费送 List sourceEntities = memberRelationRepository.listSourceByFaceRelation(face.getId(), 1); if (sourceEntities.stream().noneMatch(item -> Integer.valueOf(1).equals(item.getIsFree()))) { List freeSourceRelationIds = new ArrayList<>(); - if (scenicConfig.getVideoFreeNum() != null && scenicConfig.getVideoFreeNum() > 0) { - if (scenicConfig.getVideoFreeNum() > sourceEntities.size()) { + if (scenicConfig.getInteger("video_free_num") != null && scenicConfig.getInteger("video_free_num") > 0) { + if (scenicConfig.getInteger("video_free_num") > sourceEntities.size()) { freeSourceRelationIds.addAll(sourceEntities.stream().map(MemberSourceEntity::getId).toList()); } else { - freeSourceRelationIds.addAll(sourceEntities.stream().limit(scenicConfig.getVideoFreeNum()).map(MemberSourceEntity::getId).toList()); + freeSourceRelationIds.addAll(sourceEntities.stream().limit(scenicConfig.getInteger("video_free_num")).map(MemberSourceEntity::getId).toList()); } } if (!freeSourceRelationIds.isEmpty()) { diff --git a/src/main/java/com/ycwl/basic/task/VideoTaskGenerator.java b/src/main/java/com/ycwl/basic/task/VideoTaskGenerator.java index d710443b..1044b0dc 100644 --- a/src/main/java/com/ycwl/basic/task/VideoTaskGenerator.java +++ b/src/main/java/com/ycwl/basic/task/VideoTaskGenerator.java @@ -8,7 +8,7 @@ import com.ycwl.basic.mapper.TemplateMapper; import com.ycwl.basic.model.mobile.scenic.content.ContentPageVO; import com.ycwl.basic.model.pc.face.req.FaceReqQuery; import com.ycwl.basic.model.pc.face.resp.FaceRespVO; -import com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity; +import com.ycwl.basic.integration.common.manager.ScenicConfigManager; import com.ycwl.basic.model.pc.scenic.req.ScenicReqQuery; import com.ycwl.basic.model.pc.template.resp.TemplateRespVO; import com.ycwl.basic.repository.ScenicRepository; @@ -61,13 +61,13 @@ public class VideoTaskGenerator { calendar.clear(); scenicList.parallelStream().forEach(scenic -> { Long scenicId = Long.valueOf(scenic.getId()); - ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(scenicId); + ScenicConfigManager scenicConfig = scenicRepository.getScenicConfigManager(scenicId); if (scenicConfig == null) { log.info("当前景区{},无配置信息", scenic.getName()); return; } - if (Integer.valueOf(1).equals(scenicConfig.getBookRoutine()) || Integer.valueOf(3).equals(scenicConfig.getBookRoutine())) { - Integer hour = scenicConfig.getForceFinishTime(); + if (Integer.valueOf(1).equals(scenicConfig.getInteger("book_routine")) || Integer.valueOf(3).equals(scenicConfig.getInteger("book_routine"))) { + Integer hour = scenicConfig.getInteger("force_finish_time"); if (hour != currentHour) { return; } @@ -83,7 +83,7 @@ public class VideoTaskGenerator { List list = faceMapper.list(faceReqQuery); list.forEach(face -> { faceService.matchFaceId(face.getId(), false, null); - if (Integer.valueOf(3).equals(scenicConfig.getBookRoutine())) { + if (Integer.valueOf(3).equals(scenicConfig.getInteger("book_routine"))) { // 全部生成 templateList.forEach(content -> { Long templateId = content.getId(); diff --git a/src/test/java/com/ycwl/basic/face/pipeline/stages/PrepareContextStageTest.java b/src/test/java/com/ycwl/basic/face/pipeline/stages/PrepareContextStageTest.java index 46401383..47be2373 100644 --- a/src/test/java/com/ycwl/basic/face/pipeline/stages/PrepareContextStageTest.java +++ b/src/test/java/com/ycwl/basic/face/pipeline/stages/PrepareContextStageTest.java @@ -35,7 +35,7 @@ class PrepareContextStageTest { private ScenicService scenicService; @Mock - private ScenicConfigManager scenicConfig; + private ScenicConfigManager configManager; @Mock private IFaceBodyAdapter faceBodyAdapter; @@ -55,7 +55,7 @@ class PrepareContextStageTest { // Given FaceEntity face = createFace(1L, 100L, 10L, 0); // isManual=0 when(faceRepository.getFace(1L)).thenReturn(face); - when(scenicRepository.getScenicConfigManager(10L)).thenReturn(scenicConfig); + when(scenicRepository.getScenicConfigManager(10L)).thenReturn(configManager); when(scenicService.getScenicFaceBodyAdapter(10L)).thenReturn(faceBodyAdapter); // When @@ -64,7 +64,7 @@ class PrepareContextStageTest { // Then assertTrue(result.isSuccess()); assertEquals(face, context.getFace()); - assertEquals(scenicConfig, context.getScenicConfig()); + assertEquals(configManager, context.getScenicConfig()); assertEquals(faceBodyAdapter, context.getFaceBodyAdapter()); verify(faceRepository, times(1)).getFace(1L); verify(scenicRepository, times(1)).getScenicConfigManager(10L); @@ -110,7 +110,7 @@ class PrepareContextStageTest { context = FaceMatchingContext.forAutoMatching(1L, true); FaceEntity face = createFace(1L, 100L, 10L, 1); // isManual=1 when(faceRepository.getFace(1L)).thenReturn(face); - when(scenicRepository.getScenicConfigManager(10L)).thenReturn(scenicConfig); + when(scenicRepository.getScenicConfigManager(10L)).thenReturn(configManager); when(scenicService.getScenicFaceBodyAdapter(10L)).thenReturn(faceBodyAdapter); // When @@ -119,7 +119,7 @@ class PrepareContextStageTest { // Then assertTrue(result.isSuccess()); assertEquals(face, context.getFace()); - assertEquals(scenicConfig, context.getScenicConfig()); + assertEquals(configManager, context.getScenicConfig()); assertEquals(faceBodyAdapter, context.getFaceBodyAdapter()); } @@ -128,7 +128,7 @@ class PrepareContextStageTest { // Given FaceEntity face = createFace(1L, 100L, 10L, 0); when(faceRepository.getFace(1L)).thenReturn(face); - when(scenicRepository.getScenicConfigManager(10L)).thenReturn(scenicConfig); + when(scenicRepository.getScenicConfigManager(10L)).thenReturn(configManager); when(scenicService.getScenicFaceBodyAdapter(10L)).thenReturn(null); // 无适配器 // When @@ -138,7 +138,7 @@ class PrepareContextStageTest { assertTrue(result.isFailed()); assertTrue(result.getMessage().contains("人脸识别服务不可用")); assertEquals(face, context.getFace()); - assertEquals(scenicConfig, context.getScenicConfig()); + assertEquals(configManager, context.getScenicConfig()); assertNull(context.getFaceBodyAdapter()); } @@ -148,7 +148,7 @@ class PrepareContextStageTest { context = FaceMatchingContext.forAutoMatching(1L, false); // 老用户 FaceEntity face = createFace(1L, 100L, 10L, 0); when(faceRepository.getFace(1L)).thenReturn(face); - when(scenicRepository.getScenicConfigManager(10L)).thenReturn(scenicConfig); + when(scenicRepository.getScenicConfigManager(10L)).thenReturn(configManager); when(scenicService.getScenicFaceBodyAdapter(10L)).thenReturn(faceBodyAdapter); // When @@ -165,7 +165,7 @@ class PrepareContextStageTest { context = FaceMatchingContext.forRecognitionOnly(1L); FaceEntity face = createFace(1L, 100L, 10L, 0); when(faceRepository.getFace(1L)).thenReturn(face); - when(scenicRepository.getScenicConfigManager(10L)).thenReturn(scenicConfig); + when(scenicRepository.getScenicConfigManager(10L)).thenReturn(configManager); when(scenicService.getScenicFaceBodyAdapter(10L)).thenReturn(faceBodyAdapter); // When