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 {