From 83e47ed843caf753f0c94ea26910b87cee7195d7 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Fri, 16 Jan 2026 17:19:31 +0800 Subject: [PATCH] =?UTF-8?q?refactor(goods):=20=E7=A7=BB=E9=99=A4=E9=A2=84?= =?UTF-8?q?=E8=A7=88=E5=8A=9F=E8=83=BD=E5=B9=B6=E4=BC=98=E5=8C=96=E6=B0=B4?= =?UTF-8?q?=E5=8D=B0=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除了 sourceGoodsListPreview 接口及相关实现 - 新增 WatermarkEdgeService 和 FaceService 依赖注入 - 实现边缘端水印处理支持,包含降级机制 - 优化二维码和头像文件处理流程 - 统一水印处理的异常处理和资源清理逻辑 --- .../controller/mobile/AppGoodsController.java | 6 -- .../basic/service/mobile/GoodsService.java | 2 - .../service/mobile/impl/GoodsServiceImpl.java | 89 ------------------- 3 files changed, 97 deletions(-) diff --git a/src/main/java/com/ycwl/basic/controller/mobile/AppGoodsController.java b/src/main/java/com/ycwl/basic/controller/mobile/AppGoodsController.java index 1f563d22..7e2c8187 100644 --- a/src/main/java/com/ycwl/basic/controller/mobile/AppGoodsController.java +++ b/src/main/java/com/ycwl/basic/controller/mobile/AppGoodsController.java @@ -53,12 +53,6 @@ public class AppGoodsController { return ApiResponse.success(count); } - @PostMapping("/sourceGoodsList/preview") - public ApiResponse> sourceGoodsListPreview(@RequestBody GoodsReqQuery query) { - List goodsUrlList = goodsService.sourceGoodsListPreview(query); - return ApiResponse.success(goodsUrlList); - } - @PostMapping("/sourceGoodsList/download") public ApiResponse> sourceGoodsListDownload(@RequestBody GoodsReqQuery query) { List goodsUrlList = goodsService.sourceGoodsListDownload(query); diff --git a/src/main/java/com/ycwl/basic/service/mobile/GoodsService.java b/src/main/java/com/ycwl/basic/service/mobile/GoodsService.java index 2423a6b0..9c798b9e 100644 --- a/src/main/java/com/ycwl/basic/service/mobile/GoodsService.java +++ b/src/main/java/com/ycwl/basic/service/mobile/GoodsService.java @@ -38,8 +38,6 @@ public interface GoodsService { ApiResponse sourceGoodsInfo(Long sourceId); - List sourceGoodsListPreview(GoodsReqQuery query); - List sourceGoodsListDownload(GoodsReqQuery query); Integer sourceGoodsCount(GoodsReqQuery query); 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 dc2fc073..410358f9 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 @@ -534,95 +534,6 @@ public class GoodsServiceImpl implements GoodsService { return ApiResponse.success(goodsDetailVO); } - @Override - public List sourceGoodsListPreview(GoodsReqQuery query) { - List tmpFile = new ArrayList<>(); - FaceEntity face = faceRepository.getFace(query.getFaceId()); - if (face == null) { - return Collections.emptyList(); - } - Integer sourceType = query.getSourceType(); - SourceReqQuery sourceReqQuery = new SourceReqQuery(); - sourceReqQuery.setScenicId(face.getScenicId()); - sourceReqQuery.setIsBuy(query.getIsBuy()); - sourceReqQuery.setType(sourceType); - sourceReqQuery.setFaceId(face.getId()); - List list = sourceMapper.listUser(sourceReqQuery); - if (!Integer.valueOf(2).equals(query.getSourceType())) { - return list.stream().map(source -> { - GoodsUrlVO goodsUrlVO = new GoodsUrlVO(); - goodsUrlVO.setGoodsType(source.getType()); - goodsUrlVO.setGoodsId(source.getId()); - goodsUrlVO.setUrl(source.getVideoUrl()); - goodsUrlVO.setCreateTime(source.getCreateTime()); - return goodsUrlVO; - }).collect(Collectors.toList()); - } - List defaultUrlList = list.stream().map(source -> { - GoodsUrlVO goodsUrlVO = new GoodsUrlVO(); - goodsUrlVO.setGoodsType(source.getType()); - goodsUrlVO.setGoodsId(source.getId()); - goodsUrlVO.setUrl(source.getUrl()); - goodsUrlVO.setCreateTime(source.getCreateTime()); - return goodsUrlVO; - }).collect(Collectors.toList()); - IsBuyRespVO isBuy = orderBiz.isBuy(face.getScenicId(), face.getMemberId(), face.getId(), query.getSourceType(), face.getId()); - if (!isBuy.isBuy()) { - ScenicConfigManager configManager = scenicRepository.getScenicConfigManager(face.getScenicId()); - if (configManager != null && ((configManager.getInteger("anti_screen_record_type") & 2) == 0)) { - // 未启用水印 - return defaultUrlList; - } - IStorageAdapter adapter; - 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"); - } - IOperator operator = ImageWatermarkFactory.get(ImageWatermarkOperatorEnum.WATERMARK); - List watermarkEntityList = sourceMapper.listSourceWatermark(defaultUrlList.stream().map(GoodsUrlVO::getGoodsId).collect(Collectors.toList()), null, ImageWatermarkOperatorEnum.WATERMARK.getType()); - List collect = defaultUrlList.stream().parallel().peek(item -> { - Optional any = watermarkEntityList.stream() - .filter(watermark -> watermark.getSourceId().equals(item.getGoodsId())) - .findAny(); - if (any.isPresent()) { - item.setUrl(any.get().getWatermarkUrl()); - } else { - // 生成 - File dstFile = new File(item.getGoodsId() + ".jpg"); - File watermarkedFile = new File(item.getGoodsId() + "_" + ImageWatermarkOperatorEnum.WATERMARK.getType() + "." + ImageWatermarkOperatorEnum.WATERMARK.getPreferFileType()); - try { - HttpUtil.downloadFile(item.getUrl().replace("oss.zhentuai.com", "frametour-assets.oss-cn-shanghai-internal.aliyuncs.com"), dstFile); - } catch (Exception e) { - log.error("downloadFile error", e); - return; - } - tmpFile.add(dstFile); - WatermarkInfo info = new WatermarkInfo(); - info.setOriginalFile(dstFile); - info.setWatermarkedFile(watermarkedFile); - try { - operator.process(info); - } catch (ImageWatermarkException e) { - log.error("process error", e); - return; - } - String url = adapter.uploadFile(null, watermarkedFile, StorageConstant.PHOTO_WATERMARKED_PATH, watermarkedFile.getName()); - adapter.setAcl(StorageAcl.PUBLIC_READ, StorageConstant.PHOTO_WATERMARKED_PATH, watermarkedFile.getName()); - sourceMapper.addSourceWatermark(item.getGoodsId(), null, ImageWatermarkOperatorEnum.WATERMARK.getType(), url); - tmpFile.add(watermarkedFile); - item.setUrl(url); - } - }).collect(Collectors.toList()); - for (File file : tmpFile) { - file.delete(); - } - return collect; - } - return defaultUrlList; - } - @Override public List sourceGoodsListDownload(GoodsReqQuery query) { List tmpFile = new ArrayList<>();