feat(shopping): 优化购物价格调整逻辑并添加差价计算
- 在QuotationPriceUpdateItemPartRequest中新增spread属性,计算差价 - 购物控制器中批量查询购物车项,避免多次查询 - 更新购物车标准价格为新价格 - 计算并累加购物车附加费用中的差价部分 - 创建购物订单调整项时包含详细价格变更数据
This commit is contained in:
parent
e8c816e44a
commit
a80015986f
|
|
@ -1052,19 +1052,34 @@ public class ShoppingController extends ControllerBase {
|
|||
order.setActualFee(request.getActualFee());
|
||||
order.setDiscount(order.getTotalFee().subtract(request.getActualFee()));
|
||||
List<QuotationShoppingOrderAdjustItem> adjustItems = new ArrayList<>();
|
||||
List<QuotationShoppingCart> carts = shoppingCartService.listByIds(request.getItems()
|
||||
.stream()
|
||||
.map(QuotationPriceUpdateItemRequest::getCartId)
|
||||
.collect(Collectors.toList())
|
||||
);
|
||||
request.getItems().forEach(item -> {
|
||||
if (Objects.nonNull(item.getNewStandardFee())) {
|
||||
adjustItems.add(
|
||||
new QuotationShoppingOrderAdjustItem()
|
||||
.setAdjustId(adjust.getId())
|
||||
.setOrderId(order.getId())
|
||||
.setCartId(item.getCartId())
|
||||
.setConfigItemId(0L)
|
||||
.setOldFee(item.getOldStandardFee())
|
||||
.setNewFee(item.getNewStandardFee())
|
||||
);
|
||||
}
|
||||
QuotationShoppingCart cart = carts.stream()
|
||||
.filter(c -> Objects.equals(c.getId(), item.getCartId()))
|
||||
.findFirst()
|
||||
.get();
|
||||
cart.setStandardFee(item.getNewStandardFee());
|
||||
adjustItems.add(
|
||||
new QuotationShoppingOrderAdjustItem()
|
||||
.setAdjustId(adjust.getId())
|
||||
.setOrderId(order.getId())
|
||||
.setCartId(item.getCartId())
|
||||
.setConfigItemId(0L)
|
||||
.setOldFee(item.getOldStandardFee())
|
||||
.setNewFee(item.getNewStandardFee())
|
||||
);
|
||||
if (CollectionUtil.isNotEmpty(item.getParts())) {
|
||||
cart.setOptionalFee(cart.getOptionalFee()
|
||||
.add(item.getParts()
|
||||
.stream()
|
||||
.map(QuotationPriceUpdateItemPartRequest::getSpread)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add)
|
||||
)
|
||||
);
|
||||
item.getParts().forEach(part -> {
|
||||
adjustItems.add(
|
||||
new QuotationShoppingOrderAdjustItem()
|
||||
|
|
|
|||
|
|
@ -25,4 +25,13 @@ public class QuotationPriceUpdateItemPartRequest {
|
|||
*/
|
||||
@NotNull(message = "标准配置调价后价格不能为空")
|
||||
private BigDecimal newStandardFee;
|
||||
|
||||
/**
|
||||
* 差价
|
||||
*/
|
||||
private BigDecimal spread;
|
||||
|
||||
public BigDecimal getSpread() {
|
||||
return newStandardFee.subtract(oldStandardFee);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue