From cdd434317f57e9b09bbcfdb6580f8521ebab042c Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Mon, 1 Sep 2025 09:21:26 +0800 Subject: [PATCH] =?UTF-8?q?feat(pricing):=20=E9=9B=86=E6=88=90=E5=AE=9A?= =?UTF-8?q?=E4=BB=B7=E6=9C=8D=E5=8A=A1=E5=B9=B6=E4=BC=98=E5=8C=96=E4=BB=B7?= =?UTF-8?q?=E6=A0=BC=E6=9F=A5=E8=AF=A2=E9=80=BB=E8=BE=91-=20=E5=9C=A8=20Or?= =?UTF-8?q?derBiz=20=E4=B8=AD=E6=B7=BB=E5=8A=A0=20IPriceCalculationService?= =?UTF-8?q?=20=E4=BE=9D=E8=B5=96=EF=BC=8C=E7=94=A8=E4=BA=8E=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E4=BB=B7=E6=A0=BC=20-=20=E9=87=8D=E6=9E=84=20queryPri?= =?UTF-8?q?ce=20=E6=96=B9=E6=B3=95=EF=BC=8C=E4=BD=BF=E7=94=A8=E5=AE=9A?= =?UTF-8?q?=E4=BB=B7=E6=9C=8D=E5=8A=A1=E8=AE=A1=E7=AE=97=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E8=80=8C=E4=B8=8D=E6=98=AF=E7=9B=B4=E6=8E=A5=E4=BB=8E=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E8=AF=BB=E5=8F=96=20-=20=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=20PriceObj=20=E4=B8=AD=E6=9C=AA=E4=BD=BF=E7=94=A8=E7=9A=84=20s?= =?UTF-8?q?cenicAllPrice=20=E5=AD=97=E6=AE=B5=20-=20=E5=88=A0=E9=99=A4=20S?= =?UTF-8?q?cenicEntity=20=E5=92=8C=20ScenicAddOrUpdateReq=20=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E5=86=97=E4=BD=99=E4=BB=B7=E6=A0=BC=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=20-=E4=BC=98=E5=8C=96=20ProductConfigServiceImpl=20=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=20getTierConfig=20=E6=96=B9=E6=B3=95=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8F=82=E6=95=B0=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ycwl/basic/biz/OrderBiz.java | 28 ++++++++++++++----- .../basic/model/mobile/order/PriceObj.java | 1 - .../model/pc/scenic/entity/ScenicEntity.java | 3 -- .../pc/scenic/req/ScenicAddOrUpdateReq.java | 4 --- .../impl/ProductConfigServiceImpl.java | 8 ++++-- 5 files changed, 27 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 b6232c3..4a2751a 100644 --- a/src/main/java/com/ycwl/basic/biz/OrderBiz.java +++ b/src/main/java/com/ycwl/basic/biz/OrderBiz.java @@ -24,6 +24,11 @@ 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; +import com.ycwl.basic.pricing.dto.PriceCalculationRequest; +import com.ycwl.basic.pricing.dto.PriceCalculationResult; +import com.ycwl.basic.pricing.dto.ProductItem; +import com.ycwl.basic.pricing.enums.ProductType; +import com.ycwl.basic.pricing.service.IPriceCalculationService; import com.ycwl.basic.profitsharing.biz.ProfitSharingBiz; import com.ycwl.basic.repository.FaceRepository; import com.ycwl.basic.repository.OrderRepository; @@ -40,6 +45,7 @@ import org.springframework.stereotype.Component; import java.math.BigDecimal; import java.util.Calendar; +import java.util.Collections; import java.util.Comparator; import java.util.Date; import java.util.List; @@ -79,6 +85,8 @@ public class OrderBiz { @Autowired @Lazy private PrinterService printerService; + @Autowired + private IPriceCalculationService iPriceCalculationService; public PriceObj queryPrice(Long scenicId, int goodsType, Long goodsId) { PriceObj priceObj = new PriceObj(); @@ -86,7 +94,6 @@ public class OrderBiz { priceObj.setGoodsId(goodsId); ScenicEntity scenic = scenicRepository.getScenic(scenicId); ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(scenicId); - priceObj.setScenicAllPrice(scenic.getPrice()); if (scenicConfig != null) { if (Boolean.TRUE.equals(scenicConfig.getAllFree())) { // 景区全免 @@ -120,13 +127,20 @@ public class OrderBiz { priceObj.setScenicId(video.getScenicId()); break; 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()); + FaceEntity face = faceRepository.getFace(goodsId); + PriceCalculationRequest calculationRequest = new PriceCalculationRequest(); + ProductItem productItem = new ProductItem(); + productItem.setProductType(goodsType == 1 ? ProductType.RECORDING_SET : ProductType.PHOTO_SET); + productItem.setProductId(scenic.getId().toString()); + productItem.setPurchaseCount(1); + productItem.setScenicId(scenic.getId().toString()); + calculationRequest.setProducts(Collections.singletonList(productItem)); + calculationRequest.setUserId(face.getMemberId()); + calculationRequest.setFaceId(face.getId()); + PriceCalculationResult priceCalculationResult = iPriceCalculationService.calculatePrice(calculationRequest); + priceObj.setPrice(priceCalculationResult.getFinalAmount()); + priceObj.setSlashPrice(priceCalculationResult.getOriginalAmount()); priceObj.setFaceId(goodsId); break; } 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 6944ac1..23704c3 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 @@ -12,6 +12,5 @@ public class PriceObj { 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/scenic/entity/ScenicEntity.java b/src/main/java/com/ycwl/basic/model/pc/scenic/entity/ScenicEntity.java index be34ffb..2fe7b2e 100644 --- a/src/main/java/com/ycwl/basic/model/pc/scenic/entity/ScenicEntity.java +++ b/src/main/java/com/ycwl/basic/model/pc/scenic/entity/ScenicEntity.java @@ -61,7 +61,4 @@ public class ScenicEntity { * 景区源素材价格,元 */ private String kfCodeUrl; - private BigDecimal price; - private BigDecimal sourceVideoPrice; - private BigDecimal sourceImagePrice; } diff --git a/src/main/java/com/ycwl/basic/model/pc/scenic/req/ScenicAddOrUpdateReq.java b/src/main/java/com/ycwl/basic/model/pc/scenic/req/ScenicAddOrUpdateReq.java index f9ab8f7..7cddf99 100644 --- a/src/main/java/com/ycwl/basic/model/pc/scenic/req/ScenicAddOrUpdateReq.java +++ b/src/main/java/com/ycwl/basic/model/pc/scenic/req/ScenicAddOrUpdateReq.java @@ -77,10 +77,6 @@ public class ScenicAddOrUpdateReq { private Date createTime; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date updateTime; - // 景区源素材价格,元 - private BigDecimal price; - private BigDecimal sourceVideoPrice; - private BigDecimal sourceImagePrice; // 账号 private String account; diff --git a/src/main/java/com/ycwl/basic/pricing/service/impl/ProductConfigServiceImpl.java b/src/main/java/com/ycwl/basic/pricing/service/impl/ProductConfigServiceImpl.java index 7a30c4e..fe1aa1f 100644 --- a/src/main/java/com/ycwl/basic/pricing/service/impl/ProductConfigServiceImpl.java +++ b/src/main/java/com/ycwl/basic/pricing/service/impl/ProductConfigServiceImpl.java @@ -43,6 +43,9 @@ public class ProductConfigServiceImpl implements IProductConfigService { @Override // @Cacheable(value = "tier-config", key = "#productType + '_' + #productId + '_' + #quantity") public PriceTierConfig getTierConfig(String productType, String productId, Integer quantity) { + if (quantity == null || quantity <= 0) { + return null; + } PriceTierConfig config = tierConfigMapper.selectByProductTypeAndQuantity(productType, productId, quantity); // 不使用default配置,没查到就算了 // // 如果没有找到特定商品的阶梯配置,尝试使用default配置 @@ -57,9 +60,10 @@ public class ProductConfigServiceImpl implements IProductConfigService { // } // if (config == null) { - log.warn("阶梯定价配置未找到: productType={}, productId={}, quantity={}", - productType, productId, quantity); + return null; } + log.warn("阶梯定价: productType={}, productId={}, quantity={},config={}", + productType, productId, quantity, config); return config; }