From 3efad90750e045d2b3a0cdef9e9e89eb64de2104 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Tue, 2 Sep 2025 16:15:35 +0800 Subject: [PATCH] =?UTF-8?q?refactor(device-config):=20=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E9=85=8D=E7=BD=AE=E8=8E=B7=E5=8F=96=E6=96=B9?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将 DeviceConfigEntity 替换为 DeviceConfigManager - 优化设备配置的获取逻辑,使用 getInteger 和 getLong 方法 - 移除未使用的代码块,提高代码可读性 - 统一设备配置的处理方式,提高代码维护性 --- .../basic/controller/viid/ViidController.java | 83 +++++++++---------- .../service/pc/impl/FaceServiceImpl.java | 7 +- .../task/impl/TaskFaceServiceImpl.java | 7 +- .../com/ycwl/basic/task/VideoPieceGetter.java | 8 +- 4 files changed, 52 insertions(+), 53 deletions(-) diff --git a/src/main/java/com/ycwl/basic/controller/viid/ViidController.java b/src/main/java/com/ycwl/basic/controller/viid/ViidController.java index 60f48ec..72b069e 100644 --- a/src/main/java/com/ycwl/basic/controller/viid/ViidController.java +++ b/src/main/java/com/ycwl/basic/controller/viid/ViidController.java @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.thread.ThreadFactoryBuilder; import cn.hutool.core.util.ObjectUtil; +import com.ycwl.basic.integration.common.manager.DeviceConfigManager; import com.ycwl.basic.utils.JacksonUtil; import com.ycwl.basic.annotation.IgnoreLogReq; import com.ycwl.basic.annotation.IgnoreToken; @@ -33,7 +34,6 @@ import com.ycwl.basic.model.viid.req.UnRegisterReq; import com.ycwl.basic.model.viid.resp.SystemTimeResp; import com.ycwl.basic.model.viid.resp.VIIDBaseResp; import com.ycwl.basic.repository.DeviceRepository; -import com.ycwl.basic.repository.ScenicRepository; import com.ycwl.basic.service.pc.ScenicService; import com.ycwl.basic.service.task.TaskFaceService; import com.ycwl.basic.storage.StorageFactory; @@ -87,8 +87,6 @@ public class ViidController { @Autowired private DeviceRepository deviceRepository; @Autowired - private ScenicRepository scenicRepository; - @Autowired private TaskFaceService taskFaceService; private final Map executors = new ConcurrentHashMap<>(); @Autowired @@ -245,17 +243,14 @@ public class ViidController { if (device == null) { continue; } - DeviceConfigEntity deviceConfig = deviceRepository.getDeviceConfig(device.getId()); + DeviceConfigManager deviceConfig = deviceRepository.getDeviceConfigManager(device.getId()); if (deviceConfig == null) { log.warn("设备配置不存在:" + deviceID); return new VIIDBaseResp( new ResponseStatusObject(faceId, "/VIID/Faces", "0", "OK", sdfTime.format(new Date())) ); } - int viidMode = 0; - if (deviceConfig.getViidType() != null) { - viidMode = deviceConfig.getViidType(); - } + Integer viidMode = deviceConfig.getInteger("viid_mode", 0); Date shotTime = null; if (StringUtils.isNotBlank(face.getShotTime())) { try { @@ -333,7 +328,7 @@ public class ViidController { faceSampleMapper.updateScore(faceSample.getId(), addFaceResp.getScore()); } } - if (Integer.valueOf(1).equals(deviceConfig.getEnablePreBook())) { + if (Integer.valueOf(1).equals(deviceConfig.getInteger("enable_pre_book"))) { DynamicTaskGenerator.addTask(faceSample.getId()); } }); @@ -352,40 +347,40 @@ public class ViidController { MultipartFile _file = ImageUtils.base64ToMultipartFile(_subImage.getData()); ThreadPoolExecutor executor = getExecutor(scenicId); executor.execute(() -> { - List cropConfigs = deviceConfig._getCropConfig(); - for (DeviceCropConfig cropConfig : cropConfigs) { - source.setId(SnowFlakeUtil.getLongId()); - String filename = StorageUtil.joinPath(PHOTO_PATH, UUID.randomUUID() + "." + ext); - MultipartFile _finalFile = _file; - if (cropConfig.getCropType() == 1) { - // 按固定位置截图 - try { - _finalFile = ImageUtils.cropImage(_file, cropConfig.getTargetX(), cropConfig.getTargetY(), cropConfig.getTargetWidth(), cropConfig.getTargetHeight()); - } catch (IOException e) { - log.error("裁切图片失败!", e); - } catch (RasterFormatException e) { - log.error("裁切图片出错!", e); - } - } else if (cropConfig.getCropType() == 2) { - // 按人脸位置 - try { - int targetX = facePosition.getLtX() - (cropConfig.getTargetWidth() - facePosition.getWidth())/2; - int targetY = facePosition.getLtY() - (cropConfig.getTargetHeight() - facePosition.getHeight())/2; - _finalFile = ImageUtils.cropImage(_file, targetX, targetY, cropConfig.getTargetWidth(), cropConfig.getTargetHeight()); - } catch (IOException e) { - log.error("裁切图片失败!", e); - } catch (RasterFormatException e) { - log.error("裁切图片出错!", e); - } - facePosition.setImgHeight(cropConfig.getTargetHeight()); - facePosition.setImgWidth(cropConfig.getTargetWidth()); - } - String _sourceUrl = scenicStorageAdapter.uploadFile(_finalFile, filename); - scenicStorageAdapter.setAcl(StorageAcl.PUBLIC_READ, filename); - source.setUrl(_sourceUrl); - source.setPosJson(JacksonUtil.toJSONString(facePosition)); - sourceMapper.add(source); - } +// List cropConfigs = deviceConfig._getCropConfig(); +// for (DeviceCropConfig cropConfig : cropConfigs) { +// source.setId(SnowFlakeUtil.getLongId()); +// String filename = StorageUtil.joinPath(PHOTO_PATH, UUID.randomUUID() + "." + ext); +// MultipartFile _finalFile = _file; +// if (cropConfig.getCropType() == 1) { +// // 按固定位置截图 +// try { +// _finalFile = ImageUtils.cropImage(_file, cropConfig.getTargetX(), cropConfig.getTargetY(), cropConfig.getTargetWidth(), cropConfig.getTargetHeight()); +// } catch (IOException e) { +// log.error("裁切图片失败!", e); +// } catch (RasterFormatException e) { +// log.error("裁切图片出错!", e); +// } +// } else if (cropConfig.getCropType() == 2) { +// // 按人脸位置 +// try { +// int targetX = facePosition.getLtX() - (cropConfig.getTargetWidth() - facePosition.getWidth())/2; +// int targetY = facePosition.getLtY() - (cropConfig.getTargetHeight() - facePosition.getHeight())/2; +// _finalFile = ImageUtils.cropImage(_file, targetX, targetY, cropConfig.getTargetWidth(), cropConfig.getTargetHeight()); +// } catch (IOException e) { +// log.error("裁切图片失败!", e); +// } catch (RasterFormatException e) { +// log.error("裁切图片出错!", e); +// } +// facePosition.setImgHeight(cropConfig.getTargetHeight()); +// facePosition.setImgWidth(cropConfig.getTargetWidth()); +// } +// String _sourceUrl = scenicStorageAdapter.uploadFile(_finalFile, filename); +// scenicStorageAdapter.setAcl(StorageAcl.PUBLIC_READ, filename); +// source.setUrl(_sourceUrl); +// source.setPosJson(JacksonUtil.toJSONString(facePosition)); +// sourceMapper.add(source); +// } }); } log.info("人脸信息及原图{}张入库成功!设备ID:{}", type14ImageList.size(), deviceID); @@ -425,7 +420,7 @@ public class ViidController { faceSampleMapper.updateScore(faceSample.getId(), addFaceResp.getScore()); } } - if (Integer.valueOf(1).equals(deviceConfig.getEnablePreBook())) { + if (Integer.valueOf(1).equals(deviceConfig.getInteger("enable_pre_book"))) { DynamicTaskGenerator.addTask(faceSample.getId()); } }); 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 b8f5664..cc32add 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 @@ -9,6 +9,7 @@ import com.ycwl.basic.constant.BaseContextHandler; import com.ycwl.basic.enums.StatisticEnum; import com.ycwl.basic.exception.BaseException; import com.ycwl.basic.facebody.adapter.IFaceBodyAdapter; +import com.ycwl.basic.integration.common.manager.DeviceConfigManager; import com.ycwl.basic.mapper.SourceMapper; import com.ycwl.basic.mapper.StatisticsMapper; import com.ycwl.basic.mapper.FaceMapper; @@ -290,7 +291,7 @@ public class FaceServiceImpl implements FaceService { if (sampleListIds != null && !sampleListIds.isEmpty()) {// 匹配原片:照片 List sourceEntities = sourceMapper.listBySampleIds(sampleListIds); List memberSourceEntityList = sourceEntities.stream().map(sourceEntity -> { - DeviceConfigEntity deviceConfig = deviceRepository.getDeviceConfig(sourceEntity.getDeviceId()); + DeviceConfigManager deviceConfig = deviceRepository.getDeviceConfigManager(sourceEntity.getDeviceId()); MemberSourceEntity memberSourceEntity = new MemberSourceEntity(); memberSourceEntity.setScenicId(face.getScenicId()); memberSourceEntity.setFaceId(face.getId()); @@ -300,11 +301,11 @@ public class FaceServiceImpl implements FaceService { memberSourceEntity.setIsFree(0); if (deviceConfig != null) { if (sourceEntity.getType() == 1) { - if (Integer.valueOf(1).equals(deviceConfig.getVideoFree())) { + if (Integer.valueOf(1).equals(deviceConfig.getInteger("video_free"))) { memberSourceEntity.setIsFree(1); } } else if (sourceEntity.getType() == 2) { - if (Integer.valueOf(1).equals(deviceConfig.getImageFree())) { + if (Integer.valueOf(1).equals(deviceConfig.getInteger("image_free"))) { memberSourceEntity.setIsFree(1); } } 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 343ee0b..7f11b91 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 @@ -1,6 +1,7 @@ package com.ycwl.basic.service.task.impl; import cn.hutool.core.date.DateUtil; +import com.ycwl.basic.integration.common.manager.DeviceConfigManager; import com.ycwl.basic.utils.JacksonUtil; import com.aliyuncs.facebody.model.v20191230.SearchFaceRequest; import com.ycwl.basic.biz.OrderBiz; @@ -115,7 +116,7 @@ public class TaskFaceServiceImpl implements TaskFaceService { if (sampleListIds != null && !sampleListIds.isEmpty()) {// 匹配原片:照片 List sourceEntities = sourceMapper.listBySampleIds(sampleListIds); List memberSourceEntityList = sourceEntities.stream().map(sourceEntity -> { - DeviceConfigEntity deviceConfig = deviceRepository.getDeviceConfig(sourceEntity.getDeviceId()); + DeviceConfigManager deviceConfig = deviceRepository.getDeviceConfigManager(sourceEntity.getDeviceId()); MemberSourceEntity memberSourceEntity = new MemberSourceEntity(); memberSourceEntity.setScenicId(scenicId); memberSourceEntity.setFaceId(faceEntity.getId()); @@ -125,11 +126,11 @@ public class TaskFaceServiceImpl implements TaskFaceService { memberSourceEntity.setIsFree(0); if (deviceConfig != null) { if (sourceEntity.getType() == 1) { - if (Integer.valueOf(1).equals(deviceConfig.getVideoFree())) { + if (Integer.valueOf(1).equals(deviceConfig.getInteger("video_free"))) { memberSourceEntity.setIsFree(1); } } else if (sourceEntity.getType() == 2) { - if (Integer.valueOf(1).equals(deviceConfig.getImageFree())) { + if (Integer.valueOf(1).equals(deviceConfig.getInteger("image_free"))) { memberSourceEntity.setIsFree(1); } } diff --git a/src/main/java/com/ycwl/basic/task/VideoPieceGetter.java b/src/main/java/com/ycwl/basic/task/VideoPieceGetter.java index 97bfc56..8fd42a8 100644 --- a/src/main/java/com/ycwl/basic/task/VideoPieceGetter.java +++ b/src/main/java/com/ycwl/basic/task/VideoPieceGetter.java @@ -7,6 +7,7 @@ import com.ycwl.basic.constant.StorageConstant; import com.ycwl.basic.device.DeviceFactory; import com.ycwl.basic.device.entity.common.FileObject; import com.ycwl.basic.device.operator.IDeviceStorageOperator; +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; @@ -147,9 +148,10 @@ public class VideoPieceGetter { List allDeviceByScenicId = deviceRepository.getAllDeviceByScenicId(scenicId); allDeviceByScenicId.forEach(device -> { Long deviceId = device.getId(); - DeviceConfigEntity deviceConfig = deviceRepository.getDeviceConfig(deviceId); - if (deviceConfig != null && deviceConfig.getPairDevice() != null) { - pairDeviceMap.putIfAbsent(deviceId, deviceConfig.getPairDevice()); + DeviceConfigManager deviceConfig = deviceRepository.getDeviceConfigManager(deviceId); + Long pairDevice = deviceConfig.getLong("pair_device"); + if (pairDevice != null) { + pairDeviceMap.putIfAbsent(deviceId, pairDevice); } }); }