feat(order): 添加vlog视频模板购买逻辑

- 在订单业务中处理类型为-1的商品(vlog视频模板)
- 调用视频仓库方法设置用户已购买模板
- 新增setUserIsBuyTemplate方法实现模板购买状态更新
- 查询面部关联视频并更新购买状态及清理缓存

feat(price): 增加拼图商品列表查询功能

- 在价格服务中加入对拼图模板的查询
- 设置拼图商品类型为13
- 将拼图模板信息加入返回的商品列表中
This commit is contained in:
2025-12-13 14:13:59 +08:00
parent 82925d203c
commit 83d1096fdb
3 changed files with 32 additions and 3 deletions

View File

@@ -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;

View File

@@ -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;
}

View File

@@ -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<MemberVideoEntity> 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());
}
}
}
}
}