产品明细现价计算错误修复,折扣校验修改,获取明细接口错误结果修复

This commit is contained in:
gaoqr
2025-08-27 14:40:48 +08:00
parent aae6fe4a0e
commit 0d792dad3b
4 changed files with 12 additions and 11 deletions
@@ -58,9 +58,8 @@ public class ProductsDetailController {
@Operation(summary = "查询产品明细")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('base:productDetails:query')")
public CommonResult<List<ProductsDetailDO>> getProductsDetail(@PathVariable("id") Long id) {
List<ProductsDetailDO> productDetailsDO = productDetailsService.get(id);
return success(productDetailsDO);
public CommonResult<ProductsDetailDO> getProductsDetail(@PathVariable("id") Long id) {
return success(productDetailsService.get(id));
}
@GetMapping("/page")
@@ -4,6 +4,8 @@ import com.cf.imes.framework.common.validation.NumberValid;
import com.cf.imes.module.system.validation.products.ProductType;
import com.cf.imes.module.system.validation.products.TimeUnitValid;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.DecimalMax;
import jakarta.validation.constraints.DecimalMin;
import lombok.Data;
import jakarta.validation.constraints.NotNull;
@@ -51,7 +53,8 @@ public class ProductDetailsSaveReqVO {
private BigDecimal originalPrice;
@Schema(description = "折扣", requiredMode = Schema.RequiredMode.REQUIRED, example = "0.8")
@NumberValid(name = "折扣", integer = 4, fraction = 2)
@DecimalMax(value = "100", inclusive = false, message = "折扣必须小于100")
@DecimalMin(value = "0", inclusive = false, message = "折扣必须大于0")
private BigDecimal discount;
@Schema(description = "产品现价", requiredMode = Schema.RequiredMode.REQUIRED, example = "80")
@@ -40,11 +40,11 @@ public interface ProductsDetailService {
void delete(Long id);
/**
* 获产品
* 获产品定价
*
* @param id 编号
*/
List<ProductsDetailDO> get(Long id);
ProductsDetailDO get(Long id);
/**
* 获得产品 分页
@@ -112,9 +112,8 @@ public class ProductsDetailServiceImpl implements ProductsDetailService {
}
@Override
public List<ProductsDetailDO> get(Long id) {
validateProductDetailsExists(id);
return productDetailsMapper.selectList();
public ProductsDetailDO get(Long id) {
return validateProductDetailsExists(id);
}
@Override
@@ -219,8 +218,8 @@ public class ProductsDetailServiceImpl implements ProductsDetailService {
*/
private void calculateDiscount(BigDecimal originalPrice, BigDecimal currentPrice, BigDecimal discount) {
// 校验当前价格是否正确
// 计算期望现价(保留2位小数,四舍五入
BigDecimal expectedPrice = originalPrice.multiply(discount).setScale(2, RoundingMode.HALF_UP);
// 计算期望现价 = 原价 * 折扣 /100(保留2位小数)
BigDecimal expectedPrice = originalPrice.multiply(discount).divide(new BigDecimal(100)).setScale(2, RoundingMode.DOWN);
if (currentPrice.compareTo(expectedPrice) != 0) {
throw ServiceExceptionUtil.exception(PRODUCTS_DETAIL_CURRENTPRICE_CALCULATE_ERROR, expectedPrice);