From f451b835b9d292a2c102c1d36c49a6339e60946e Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Thu, 28 Aug 2025 12:09:47 +0800 Subject: [PATCH] =?UTF-8?q?feat(pricing):=20=E6=B7=BB=E5=8A=A0=E5=BF=AB?= =?UTF-8?q?=E9=80=9F=E8=AE=BE=E7=BD=AE=E5=95=86=E5=93=81=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=B9=B6=E9=9B=86=E6=88=90=E5=88=B0=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E6=9C=8D=E5=8A=A1=20-=20=E5=9C=A8=20PricingManagement?= =?UTF-8?q?ServiceImpl=20=E4=B8=AD=E5=AE=9E=E7=8E=B0=20quickSetupProductPr?= =?UTF-8?q?ice=20=E6=96=B9=E6=B3=95=EF=BC=8C=E7=94=A8=E4=BA=8E=E5=BF=AB?= =?UTF-8?q?=E9=80=9F=E8=AE=BE=E7=BD=AE=E5=95=86=E5=93=81=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=20-=20=E5=9C=A8=20IPricingManagementService=20=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E4=B8=AD=E6=B7=BB=E5=8A=A0=20quickSetupProductPrice?= =?UTF-8?q?=20=E6=96=B9=E6=B3=95=E7=9A=84=E5=A3=B0=E6=98=8E=20-=20?= =?UTF-8?q?=E5=9C=A8=20TemplateServiceImpl=20=E4=B8=AD=E8=B0=83=E7=94=A8?= =?UTF-8?q?=20quickSetupProductPrice=20=E6=96=B9=E6=B3=95=EF=BC=8C?= =?UTF-8?q?=E4=B8=BA=E6=A8=A1=E6=9D=BF=E8=AE=BE=E7=BD=AE=E4=BB=B7=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/IPricingManagementService.java | 19 ++++++++ .../impl/PricingManagementServiceImpl.java | 46 +++++++++++++++++++ .../service/pc/impl/TemplateServiceImpl.java | 6 +++ 3 files changed, 71 insertions(+) diff --git a/src/main/java/com/ycwl/basic/pricing/service/IPricingManagementService.java b/src/main/java/com/ycwl/basic/pricing/service/IPricingManagementService.java index a37de38..1e14571 100644 --- a/src/main/java/com/ycwl/basic/pricing/service/IPricingManagementService.java +++ b/src/main/java/com/ycwl/basic/pricing/service/IPricingManagementService.java @@ -2,6 +2,8 @@ package com.ycwl.basic.pricing.service; import com.ycwl.basic.pricing.entity.*; +import java.math.BigDecimal; + /** * 价格管理服务接口(用于配置管理,手动处理时间字段) */ @@ -90,4 +92,21 @@ public interface IPricingManagementService { * 删除一口价配置 */ boolean deleteBundleConfig(Long id); + + // ==================== 快速设置价格 ==================== + + /** + * 快速设置商品基础价格(内部方法,如果存在则更新,不存在则新增) + * @param productType 商品类型 + * @param productId 商品ID + * @param scenicId 景区ID + * @param productName 商品名称 + * @param basePrice 基础价格 + * @param originalPrice 原价(可选,可为null) + * @param unit 价格单位(可选,可为null,默认为"元") + * @return 配置的ID + */ + Long quickSetupProductPrice(String productType, String productId, String scenicId, + String productName, BigDecimal basePrice, + BigDecimal originalPrice, String unit); } \ No newline at end of file diff --git a/src/main/java/com/ycwl/basic/pricing/service/impl/PricingManagementServiceImpl.java b/src/main/java/com/ycwl/basic/pricing/service/impl/PricingManagementServiceImpl.java index ec402f4..867e143 100644 --- a/src/main/java/com/ycwl/basic/pricing/service/impl/PricingManagementServiceImpl.java +++ b/src/main/java/com/ycwl/basic/pricing/service/impl/PricingManagementServiceImpl.java @@ -8,6 +8,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; import java.util.Date; /** @@ -165,4 +166,49 @@ public class PricingManagementServiceImpl implements IPricingManagementService { log.info("删除一口价配置: id={}", id); return bundleConfigMapper.deleteById(id) > 0; } + + // ==================== 快速设置价格 ==================== + + @Override + @Transactional + public Long quickSetupProductPrice(String productType, String productId, String scenicId, + String productName, BigDecimal basePrice, + BigDecimal originalPrice, String unit) { + log.info("快速设置商品价格: productType={}, productId={}, scenicId={}, basePrice={}", + productType, productId, scenicId, basePrice); + + // 查询是否已存在配置 + PriceProductConfig existingConfig = productConfigMapper.selectByProductTypeAndId(productType, productId); + + if (existingConfig != null) { + // 存在则更新 + existingConfig.setScenicId(scenicId); + existingConfig.setProductName(productName); + existingConfig.setBasePrice(basePrice); + existingConfig.setOriginalPrice(originalPrice); + existingConfig.setUnit(unit != null ? unit : "元"); + existingConfig.setUpdateTime(new Date()); + + productConfigMapper.updateProductConfig(existingConfig); + log.info("更新商品价格配置: id={}", existingConfig.getId()); + return existingConfig.getId(); + } else { + // 不存在则新增 + PriceProductConfig newConfig = new PriceProductConfig(); + newConfig.setProductType(productType); + newConfig.setProductId(productId); + newConfig.setScenicId(scenicId); + newConfig.setProductName(productName); + newConfig.setBasePrice(basePrice); + newConfig.setOriginalPrice(originalPrice); + newConfig.setUnit(unit != null ? unit : "元"); + newConfig.setIsActive(true); + newConfig.setCreateTime(new Date()); + newConfig.setUpdateTime(new Date()); + + productConfigMapper.insertProductConfig(newConfig); + log.info("创建新商品价格配置: id={}", newConfig.getId()); + return newConfig.getId(); + } + } } \ No newline at end of file diff --git a/src/main/java/com/ycwl/basic/service/pc/impl/TemplateServiceImpl.java b/src/main/java/com/ycwl/basic/service/pc/impl/TemplateServiceImpl.java index 602afbf..ce47950 100644 --- a/src/main/java/com/ycwl/basic/service/pc/impl/TemplateServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/pc/impl/TemplateServiceImpl.java @@ -7,6 +7,8 @@ import com.ycwl.basic.model.pc.template.entity.TemplateConfigEntity; import com.ycwl.basic.model.pc.template.entity.TemplateEntity; import com.ycwl.basic.model.pc.template.req.TemplateReqQuery; import com.ycwl.basic.model.pc.template.resp.TemplateRespVO; +import com.ycwl.basic.pricing.enums.ProductType; +import com.ycwl.basic.pricing.service.IPricingManagementService; import com.ycwl.basic.service.pc.TemplateService; import com.ycwl.basic.repository.TemplateRepository; import com.ycwl.basic.utils.ApiResponse; @@ -30,6 +32,8 @@ public class TemplateServiceImpl implements TemplateService { private TemplateMapper templateMapper; @Autowired private TemplateRepository templateRepository; + @Autowired + private IPricingManagementService pricingManagementService; @Override public ApiResponse> pageQuery(TemplateReqQuery templateReqQuery) { @@ -75,6 +79,7 @@ public class TemplateServiceImpl implements TemplateService { templateMapper.add(item); }); } + pricingManagementService.quickSetupProductPrice(ProductType.VLOG_VIDEO.getCode(), template.getId().toString(), template.getScenicId().toString(), template.getName(), template.getPrice(), template.getSlashPrice(), "个"); if (i > 0) { return ApiResponse.success(true); }else { @@ -112,6 +117,7 @@ public class TemplateServiceImpl implements TemplateService { }); } templateRepository.clearTemplateCache(template.getId()); + pricingManagementService.quickSetupProductPrice(ProductType.VLOG_VIDEO.getCode(), template.getId().toString(), template.getScenicId().toString(), template.getName(), template.getPrice(), template.getSlashPrice(), "个"); if (i > 0) { return ApiResponse.success(true); }else {