From 99f5adf841d99a6dc034b83fa21ba0d970eea1a9 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Wed, 26 Feb 2025 13:43:44 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=B1=BB=E5=9E=8B=EF=BC=8C?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ycwl/basic/biz/OrderBiz.java | 26 +++++++++++++++++++ .../java/com/ycwl/basic/biz/PriceBiz.java | 7 +++-- .../ycwl/basic/enums/SourceTypeNameEnum.java | 2 +- .../basic/model/mobile/order/PriceObj.java | 1 + .../model/pc/order/entity/OrderEntity.java | 1 + .../pc/order/entity/OrderItemEntity.java | 2 +- .../model/pc/order/resp/OrderRespVO.java | 3 +++ .../impl/mobile/AppScenicServiceImpl.java | 2 +- .../service/impl/mobile/GoodsServiceImpl.java | 2 +- .../service/impl/pc/OrderServiceImpl.java | 7 +++-- .../impl/pc/PriceConfigServiceImpl.java | 2 +- src/main/resources/mapper/OrderMapper.xml | 19 ++++++++------ 12 files changed, 57 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/ycwl/basic/biz/OrderBiz.java b/src/main/java/com/ycwl/basic/biz/OrderBiz.java index 7016fb4..39fdd8b 100644 --- a/src/main/java/com/ycwl/basic/biz/OrderBiz.java +++ b/src/main/java/com/ycwl/basic/biz/OrderBiz.java @@ -18,6 +18,7 @@ import com.ycwl.basic.model.pc.order.resp.OrderRespVO; import com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity; import com.ycwl.basic.model.pc.scenic.entity.ScenicEntity; import com.ycwl.basic.model.pc.source.entity.SourceEntity; +import com.ycwl.basic.model.pc.task.entity.TaskEntity; import com.ycwl.basic.model.pc.template.resp.TemplateRespVO; import com.ycwl.basic.model.pc.video.entity.VideoEntity; import com.ycwl.basic.model.pc.video.resp.VideoRespVO; @@ -28,6 +29,7 @@ import com.ycwl.basic.repository.ScenicRepository; import com.ycwl.basic.repository.SourceRepository; import com.ycwl.basic.repository.TemplateRepository; import com.ycwl.basic.repository.VideoRepository; +import com.ycwl.basic.repository.VideoTaskRepository; import com.ycwl.basic.utils.ApiResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -64,6 +66,8 @@ public class OrderBiz { private SourceMapper sourceMapper; @Autowired private ProfitSharingBiz profitSharingBiz; + @Autowired + private VideoTaskRepository videoTaskRepository; public PriceObj queryPrice(Long scenicId, int goodsType, Long goodsId) { PriceObj priceObj = new PriceObj(); @@ -87,6 +91,10 @@ public class OrderBiz { if (video == null) { return null; } + TaskEntity task = videoTaskRepository.getTaskById(video.getTaskId()); + if (task != null) { + priceObj.setFaceId(task.getFaceId()); + } TemplateRespVO template = templateRepository.getTemplate(video.getTemplateId()); if (template == null) { return priceObj; @@ -103,10 +111,12 @@ public class OrderBiz { case 1: // source priceObj.setPrice(scenic.getSourceVideoPrice()); priceObj.setSlashPrice(scenic.getSourceVideoPrice()); + priceObj.setFaceId(goodsId); break; case 2: // source priceObj.setPrice(scenic.getSourceImagePrice()); priceObj.setSlashPrice(scenic.getSourceImagePrice()); + priceObj.setFaceId(goodsId); break; } return priceObj; @@ -115,6 +125,22 @@ public class OrderBiz { public IsBuyRespVO isBuy(Long userId, Long scenicId, int goodsType, Long goodsId) { IsBuyRespVO respVO = new IsBuyRespVO(); boolean isBuy = orderRepository.checkUserBuyItem(userId, goodsType, goodsId); + // 模板购买逻辑 + if (!isBuy) { + if (goodsType == 0) { + VideoEntity video = videoRepository.getVideo(goodsId); + TaskEntity task = videoTaskRepository.getTaskById(video.getTaskId()); + Long templateId = video.getTemplateId(); + // -1为整个模板购买 + OrderEntity orderEntity = orderRepository.getUserBuyItem(userId, -1, templateId); + if (orderEntity != null && task != null) { + respVO.setOrderId(orderEntity.getId()); + if (orderEntity.getFaceId() != null && task.getFaceId() != null) { + isBuy = orderEntity.getFaceId().equals(task.getFaceId()); + } + } + } + } // 免费送逻辑,之前已经赠送了的 if (!isBuy) { switch (goodsType) { diff --git a/src/main/java/com/ycwl/basic/biz/PriceBiz.java b/src/main/java/com/ycwl/basic/biz/PriceBiz.java index b592f1b..6fc9183 100644 --- a/src/main/java/com/ycwl/basic/biz/PriceBiz.java +++ b/src/main/java/com/ycwl/basic/biz/PriceBiz.java @@ -38,7 +38,7 @@ public class PriceBiz { ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(scenicId); if (scenicConfig != null) { if (!Integer.valueOf(1).equals(scenicConfig.getDisableSourceVideo())) { - goodsList.add(new GoodsListRespVO(1L, "原片集")); + goodsList.add(new GoodsListRespVO(1L, "录像集")); } if (!Integer.valueOf(1).equals(scenicConfig.getDisableSourceImage())) { goodsList.add(new GoodsListRespVO(2L, "照片集")); @@ -52,8 +52,11 @@ public class PriceBiz { if (priceConfig == null) { return Collections.emptyList(); } - String[] goodsIds = priceConfig.getGoodsIds().split(","); List goodsList = listGoodsByScenic(priceConfig.getScenicId()); + if (Integer.valueOf(-1).equals(priceConfig.getType())) { + return goodsList; + } + String[] goodsIds = priceConfig.getGoodsIds().split(","); return goodsList.stream().filter(goods -> { for (String goodsId : goodsIds) { if (StringUtils.equals(goods.getGoodsId().toString(), goodsId)) { diff --git a/src/main/java/com/ycwl/basic/enums/SourceTypeNameEnum.java b/src/main/java/com/ycwl/basic/enums/SourceTypeNameEnum.java index a91ca9d..ac9eb7d 100644 --- a/src/main/java/com/ycwl/basic/enums/SourceTypeNameEnum.java +++ b/src/main/java/com/ycwl/basic/enums/SourceTypeNameEnum.java @@ -13,7 +13,7 @@ import lombok.NoArgsConstructor; @NoArgsConstructor @AllArgsConstructor public enum SourceTypeNameEnum { - ORIGINAL_FILM_SET(1, "原片集"), + ORIGINAL_FILM_SET(1, "录像集"), PHOTO_GALLERY(2, "照片集"), UNKNOWN(-1, "未知"); private int type; diff --git a/src/main/java/com/ycwl/basic/model/mobile/order/PriceObj.java b/src/main/java/com/ycwl/basic/model/mobile/order/PriceObj.java index ca17b3e..6944ac1 100644 --- a/src/main/java/com/ycwl/basic/model/mobile/order/PriceObj.java +++ b/src/main/java/com/ycwl/basic/model/mobile/order/PriceObj.java @@ -10,6 +10,7 @@ public class PriceObj { private Long scenicId; private int goodsType; private Long goodsId; + private Long faceId; private BigDecimal price = BigDecimal.ZERO; private BigDecimal scenicAllPrice; private BigDecimal slashPrice; diff --git a/src/main/java/com/ycwl/basic/model/pc/order/entity/OrderEntity.java b/src/main/java/com/ycwl/basic/model/pc/order/entity/OrderEntity.java index b7564f1..687b4d1 100644 --- a/src/main/java/com/ycwl/basic/model/pc/order/entity/OrderEntity.java +++ b/src/main/java/com/ycwl/basic/model/pc/order/entity/OrderEntity.java @@ -26,6 +26,7 @@ public class OrderEntity { * 用户id */ private Long memberId; + private Long faceId; /** * 微信openId */ diff --git a/src/main/java/com/ycwl/basic/model/pc/order/entity/OrderItemEntity.java b/src/main/java/com/ycwl/basic/model/pc/order/entity/OrderItemEntity.java index abef6a9..2b80879 100644 --- a/src/main/java/com/ycwl/basic/model/pc/order/entity/OrderItemEntity.java +++ b/src/main/java/com/ycwl/basic/model/pc/order/entity/OrderItemEntity.java @@ -19,7 +19,7 @@ public class OrderItemEntity { */ private Long orderId; /** - * 商品类型,0其他,1成片,,2源素材 + * 商品类型,-1模板,0其他,1成片,2源素材 */ private Integer goodsType; /** diff --git a/src/main/java/com/ycwl/basic/model/pc/order/resp/OrderRespVO.java b/src/main/java/com/ycwl/basic/model/pc/order/resp/OrderRespVO.java index 20eafe8..3d028b9 100644 --- a/src/main/java/com/ycwl/basic/model/pc/order/resp/OrderRespVO.java +++ b/src/main/java/com/ycwl/basic/model/pc/order/resp/OrderRespVO.java @@ -19,6 +19,9 @@ import java.util.List; public class OrderRespVO { private Long id; private Long memberId; + private Long faceId; + private String faceUrl; + private Integer type; @ApiModelProperty("用户昵称") private String memberNickname; @ApiModelProperty("用户真实名称") diff --git a/src/main/java/com/ycwl/basic/service/impl/mobile/AppScenicServiceImpl.java b/src/main/java/com/ycwl/basic/service/impl/mobile/AppScenicServiceImpl.java index 31be58c..94c77f2 100644 --- a/src/main/java/com/ycwl/basic/service/impl/mobile/AppScenicServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/impl/mobile/AppScenicServiceImpl.java @@ -153,7 +153,7 @@ public class AppScenicServiceImpl implements AppScenicService { List sourceList = sourceMapper.queryByRelation(sourceReqQuery); ContentPageVO sourceVideoContent = new ContentPageVO(); ContentPageVO sourceImageContent = new ContentPageVO(); - sourceVideoContent.setName("原片集"); + sourceVideoContent.setName("录像集"); sourceImageContent.setName("照片集"); sourceVideoContent.setScenicId(faceRespVO.getScenicId()); sourceImageContent.setScenicId(faceRespVO.getScenicId()); diff --git a/src/main/java/com/ycwl/basic/service/impl/mobile/GoodsServiceImpl.java b/src/main/java/com/ycwl/basic/service/impl/mobile/GoodsServiceImpl.java index d9031d0..fde6ee2 100644 --- a/src/main/java/com/ycwl/basic/service/impl/mobile/GoodsServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/impl/mobile/GoodsServiceImpl.java @@ -116,7 +116,7 @@ public class GoodsServiceImpl implements GoodsService { goodsPageVO.setTemplateCoverUrl(goods.get(0).getUrl()); goodsPageVO.setFaceId(faceId); if (type == 1) { - goodsPageVO.setGoodsName("原片集"); + goodsPageVO.setGoodsName("录像集"); goodsPageVO.setGoodsType(1); } else { goodsPageVO.setGoodsName("照片集"); diff --git a/src/main/java/com/ycwl/basic/service/impl/pc/OrderServiceImpl.java b/src/main/java/com/ycwl/basic/service/impl/pc/OrderServiceImpl.java index 020bb68..aa99ab1 100644 --- a/src/main/java/com/ycwl/basic/service/impl/pc/OrderServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/impl/pc/OrderServiceImpl.java @@ -328,6 +328,7 @@ public class OrderServiceImpl implements OrderService { // promo code // coupon order.setPayPrice(priceObj.getPrice()); + order.setFaceId(priceObj.getFaceId()); if (order.getPayPrice().equals(BigDecimal.ZERO)) { order.setStatus(OrderStateEnum.PAID.getState()); order.setPayAt(new Date()); @@ -370,17 +371,19 @@ public class OrderServiceImpl implements OrderService { orderItem.setGoodsId(batchOrderReqVO.getFaceId()); orderItem.setGoodsType(1); } else if (Long.valueOf(2L).equals(goods.getGoodsId())) { - orderItem.setGoodsId(batchOrderReqVO.getCouponId()); + orderItem.setGoodsId(batchOrderReqVO.getFaceId()); orderItem.setGoodsType(2); } else { + // templateId orderItem.setGoodsId(goods.getGoodsId()); - orderItem.setGoodsType(0); + orderItem.setGoodsType(-1); } return orderItem; }).collect(Collectors.toList()); order.setSlashPrice(priceConfig.getSlashPrice()); order.setPrice(priceConfig.getPrice()); order.setPayPrice(priceConfig.getPrice()); + order.setFaceId(batchOrderReqVO.getFaceId()); if (order.getPayPrice().equals(BigDecimal.ZERO)) { order.setStatus(OrderStateEnum.PAID.getState()); order.setPayAt(new Date()); diff --git a/src/main/java/com/ycwl/basic/service/impl/pc/PriceConfigServiceImpl.java b/src/main/java/com/ycwl/basic/service/impl/pc/PriceConfigServiceImpl.java index ef6c831..4e6b4f2 100644 --- a/src/main/java/com/ycwl/basic/service/impl/pc/PriceConfigServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/impl/pc/PriceConfigServiceImpl.java @@ -57,7 +57,7 @@ public class PriceConfigServiceImpl extends ServiceImpl goodsNames = new ArrayList<>(); for (String s : item.getGoodsIds().split(",")) { if (StringUtils.equals(s, "1")) { - goodsNames.add("原片集"); + goodsNames.add("录像集"); } else if (StringUtils.equals(s, "2")) { goodsNames.add("照片集"); } else { diff --git a/src/main/resources/mapper/OrderMapper.xml b/src/main/resources/mapper/OrderMapper.xml index 1886ce1..4712375 100644 --- a/src/main/resources/mapper/OrderMapper.xml +++ b/src/main/resources/mapper/OrderMapper.xml @@ -113,7 +113,7 @@ oi.goods_type, CASE oi.goods_type WHEN '0' THEN mvd.name - WHEN '1' THEN '原片集' + WHEN '1' THEN '录像集' WHEN '2' THEN '照片集' ELSE '其他' END AS goods_name, @@ -144,8 +144,8 @@ - insert into `order`(id, member_id, openid, `type`, `price_config_id`, slash_price, price, pay_price, remark, broker_id, promo_code, scenic_id, status) - VALUES (#{id}, #{memberId}, #{openId}, #{type}, #{priceConfigId}, #{slashPrice}, #{price}, #{payPrice}, #{remark}, #{brokerId}, #{promoCode}, #{scenicId}, #{status}) + insert into `order`(id, member_id, openid, face_id, `type`, `price_config_id`, slash_price, price, pay_price, remark, broker_id, promo_code, scenic_id, status) + VALUES (#{id}, #{memberId}, #{openId}, #{faceId}, #{type}, #{priceConfigId}, #{slashPrice}, #{price}, #{payPrice}, #{remark}, #{brokerId}, #{promoCode}, #{scenicId}, #{status}) insert into order_item(order_id,goods_type, goods_id) VALUES @@ -217,9 +217,10 @@ delete from `order` where id = #{id}