You've already forked FrameTour-BE
refactor(scenic): 替换ScenicConfigEntity为ScenicConfigManager
- 将所有使用ScenicConfigEntity的地方替换为ScenicConfigManager - 更新获取景区配置的方法调用 - 修改属性访问方式为通过manager的getter方法 - 移除已废弃的ScenicConfigEntity类及相关方法 - 统一配置读取接口,提高代码一致性与可维护性
This commit is contained in:
@@ -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");
|
||||
|
||||
@@ -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<String, GoodsPageVO> 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("未知商品");
|
||||
}
|
||||
|
||||
@@ -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<FaceSampleEntity> allFaceSampleList = faceSampleMapper.listByIds(mergedResult.getSampleListIds());
|
||||
List<Long> 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;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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<TaskEntity> 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<MemberVideoEntity> entityList = videoMapper.listRelationByFaceAndTemplate(face.getId(), task.getTemplateId());
|
||||
|
||||
Reference in New Issue
Block a user