feat(pricing): 添加快速设置商品价格功能并集成到模板服务

- 在 PricingManagementServiceImpl 中实现 quickSetupProductPrice 方法,用于快速设置商品价格
- 在 IPricingManagementService 接口中添加 quickSetupProductPrice 方法的声明
- 在 TemplateServiceImpl 中调用 quickSetupProductPrice 方法,为模板设置价格
This commit is contained in:
2025-08-28 12:09:47 +08:00
parent c7d5399931
commit f451b835b9
3 changed files with 71 additions and 0 deletions

View File

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

View File

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

View File

@@ -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<PageInfo<TemplateRespVO>> 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 {