From 83d1096fdb3a1a24694ac523a84996af5cfe097d Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Sat, 13 Dec 2025 14:13:59 +0800 Subject: [PATCH] =?UTF-8?q?feat(order):=20=E6=B7=BB=E5=8A=A0vlog=E8=A7=86?= =?UTF-8?q?=E9=A2=91=E6=A8=A1=E6=9D=BF=E8=B4=AD=E4=B9=B0=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在订单业务中处理类型为-1的商品(vlog视频模板) - 调用视频仓库方法设置用户已购买模板 - 新增setUserIsBuyTemplate方法实现模板购买状态更新 - 查询面部关联视频并更新购买状态及清理缓存 feat(price): 增加拼图商品列表查询功能 - 在价格服务中加入对拼图模板的查询 - 设置拼图商品类型为13 - 将拼图模板信息加入返回的商品列表中 --- .../java/com/ycwl/basic/biz/OrderBiz.java | 3 +++ .../java/com/ycwl/basic/biz/PriceBiz.java | 8 +++++++ .../basic/repository/VideoRepository.java | 24 ++++++++++++++++--- 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/ycwl/basic/biz/OrderBiz.java b/src/main/java/com/ycwl/basic/biz/OrderBiz.java index fdac63b8..6a12f94a 100644 --- a/src/main/java/com/ycwl/basic/biz/OrderBiz.java +++ b/src/main/java/com/ycwl/basic/biz/OrderBiz.java @@ -230,6 +230,9 @@ public class OrderBiz { orderRepository.updateOrder(orderId, orderUpdate); orderItems.forEach(item -> { switch (item.getGoodsType()) { + case -1: // vlog视频模板 + videoRepository.setUserIsBuyTemplate(order.getMemberId(), item.getGoodsId(), order.getId(), order.getFaceId()); + break; case 0: // vlog视频 videoRepository.setUserIsBuyItem(order.getMemberId(), item.getGoodsId(), order.getId()); break; diff --git a/src/main/java/com/ycwl/basic/biz/PriceBiz.java b/src/main/java/com/ycwl/basic/biz/PriceBiz.java index 81fcdb0a..c4a91bb7 100644 --- a/src/main/java/com/ycwl/basic/biz/PriceBiz.java +++ b/src/main/java/com/ycwl/basic/biz/PriceBiz.java @@ -76,6 +76,14 @@ public class PriceBiz { goodsList.add(new GoodsListRespVO(2L, "照片集", 2)); } } + // 拼图 + puzzleTemplateMapper.list(scenicId, null, 1).forEach(puzzleTemplate -> { + GoodsListRespVO goods = new GoodsListRespVO(); + goods.setGoodsId(puzzleTemplate.getId()); + goods.setGoodsName(puzzleTemplate.getName()); + goods.setGoodsType(13); + goodsList.add(goods); + }); return goodsList; } diff --git a/src/main/java/com/ycwl/basic/repository/VideoRepository.java b/src/main/java/com/ycwl/basic/repository/VideoRepository.java index 02221872..c970cdf1 100644 --- a/src/main/java/com/ycwl/basic/repository/VideoRepository.java +++ b/src/main/java/com/ycwl/basic/repository/VideoRepository.java @@ -1,9 +1,6 @@ package com.ycwl.basic.repository; import com.ycwl.basic.biz.PriceBiz; -import com.ycwl.basic.model.mobile.order.IsBuyBatchRespVO; -import com.ycwl.basic.pricing.dto.VoucherInfo; -import com.ycwl.basic.pricing.enums.VoucherDiscountType; import com.ycwl.basic.pricing.service.IVoucherService; import com.ycwl.basic.utils.JacksonUtil; import com.ycwl.basic.mapper.VideoMapper; @@ -116,4 +113,25 @@ public class VideoRepository { return true; } + public void setUserIsBuyTemplate(Long memberId, Long templateId, Long orderId, Long faceId) { + List videoEntities = memberRelationRepository.listRelationByFace(faceId); + for (MemberVideoEntity videoEntity : videoEntities) { + if (videoEntity.getTemplateId() != null && videoEntity.getTemplateId().equals(templateId)) { + MemberVideoEntity memberVideo = new MemberVideoEntity(); + memberVideo.setVideoId(videoEntity.getVideoId()); + memberVideo.setMemberId(memberId); + memberVideo.setIsBuy(1); + memberVideo.setOrderId(orderId); + videoMapper.updateRelation(memberVideo); + + // 清理视频关系缓存 + MemberVideoEntity existingVideo = videoMapper.queryUserVideo(memberId, videoEntity.getVideoId()); + if (existingVideo != null && existingVideo.getFaceId() != null) { + memberRelationRepository.clearVCacheByFace(existingVideo.getFaceId()); + } + } + } + + + } }