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.setActualFee(request.getActualFee());
|
||||||
order.setDiscount(order.getTotalFee().subtract(request.getActualFee()));
|
order.setDiscount(order.getTotalFee().subtract(request.getActualFee()));
|
||||||
List<QuotationShoppingOrderAdjustItem> adjustItems = new ArrayList<>();
|
List<QuotationShoppingOrderAdjustItem> adjustItems = new ArrayList<>();
|
||||||
|
List<QuotationShoppingCart> carts = shoppingCartService.listByIds(request.getItems()
|
||||||
|
.stream()
|
||||||
|
.map(QuotationPriceUpdateItemRequest::getCartId)
|
||||||
|
.collect(Collectors.toList())
|
||||||
|
);
|
||||||
request.getItems().forEach(item -> {
|
request.getItems().forEach(item -> {
|
||||||
if (Objects.nonNull(item.getNewStandardFee())) {
|
QuotationShoppingCart cart = carts.stream()
|
||||||
adjustItems.add(
|
.filter(c -> Objects.equals(c.getId(), item.getCartId()))
|
||||||
new QuotationShoppingOrderAdjustItem()
|
.findFirst()
|
||||||
.setAdjustId(adjust.getId())
|
.get();
|
||||||
.setOrderId(order.getId())
|
cart.setStandardFee(item.getNewStandardFee());
|
||||||
.setCartId(item.getCartId())
|
adjustItems.add(
|
||||||
.setConfigItemId(0L)
|
new QuotationShoppingOrderAdjustItem()
|
||||||
.setOldFee(item.getOldStandardFee())
|
.setAdjustId(adjust.getId())
|
||||||
.setNewFee(item.getNewStandardFee())
|
.setOrderId(order.getId())
|
||||||
);
|
.setCartId(item.getCartId())
|
||||||
}
|
.setConfigItemId(0L)
|
||||||
|
.setOldFee(item.getOldStandardFee())
|
||||||
|
.setNewFee(item.getNewStandardFee())
|
||||||
|
);
|
||||||
if (CollectionUtil.isNotEmpty(item.getParts())) {
|
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 -> {
|
item.getParts().forEach(part -> {
|
||||||
adjustItems.add(
|
adjustItems.add(
|
||||||
new QuotationShoppingOrderAdjustItem()
|
new QuotationShoppingOrderAdjustItem()
|
||||||
|
|
|
||||||
|
|
@ -25,4 +25,13 @@ public class QuotationPriceUpdateItemPartRequest {
|
||||||
*/
|
*/
|
||||||
@NotNull(message = "标准配置调价后价格不能为空")
|
@NotNull(message = "标准配置调价后价格不能为空")
|
||||||
private BigDecimal newStandardFee;
|
private BigDecimal newStandardFee;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 差价
|
||||||
|
*/
|
||||||
|
private BigDecimal spread;
|
||||||
|
|
||||||
|
public BigDecimal getSpread() {
|
||||||
|
return newStandardFee.subtract(oldStandardFee);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue