|
|
|
@ -55,6 +55,7 @@ import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.math.RoundingMode; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.Collections; |
|
|
|
import java.util.List; |
|
|
|
@ -135,7 +136,7 @@ public class OrderApplicationService extends BaseApplicationService { |
|
|
|
if (CollUtil.isNotEmpty(order.getOrderItemList())) { |
|
|
|
BigDecimal totalOriginalAmount = BigDecimal.ZERO; |
|
|
|
for (OrderItem orderItem : order.getOrderItemList()) { |
|
|
|
orderItem.setOriginalAmount(orderItem.getUnitSettlementPrice().multiply(BigDecimal.valueOf(orderItem.getQuantity()))); |
|
|
|
orderItem.setOriginalAmount(orderItem.getOriginalAmount().multiply(BigDecimal.valueOf(orderItem.getQuantity()))); |
|
|
|
orderItem.setDiscountAmount(BigDecimal.ZERO); |
|
|
|
orderItem.setSettlementAmount(orderItem.getOriginalAmount()); |
|
|
|
totalOriginalAmount = totalOriginalAmount.add(orderItem.getOriginalAmount()); |
|
|
|
@ -161,12 +162,14 @@ public class OrderApplicationService extends BaseApplicationService { |
|
|
|
orderItem.setSubCategory(product.getSubCategory()); |
|
|
|
orderItem.setProductTitle(product.getProductTitle()); |
|
|
|
orderItem.setProductDesc(product.getProductDesc()); |
|
|
|
orderItem.setUnitOriginalPrice(productSpec.getUnitSellingPrice()); |
|
|
|
orderItem.setUnitSettlementPrice(productSpec.getUnitSellingPrice()); |
|
|
|
order.setOrderBelonging(order.transformBelonging(product.getProductType())); |
|
|
|
if (order.getGroupType() != null && order.getGroupType() == 1) { |
|
|
|
ActivityProduct activityProduct = activityProductDao.selectOne(Wrappers.lambdaQuery(new ActivityProduct()) |
|
|
|
.eq(ActivityProduct::getActivityId, order.getActivityId()) |
|
|
|
.eq(ActivityProduct::getProductSpecId, orderItem.getProductSpecId())); |
|
|
|
orderItem.setUnitOriginalPrice(activityProduct.getActivityUnitSellingPrice()); |
|
|
|
orderItem.setUnitSettlementPrice(activityProduct.getActivityUnitSellingPrice()); |
|
|
|
} |
|
|
|
//1.1. 同类型权益,不同规格,限制购买和提醒 |
|
|
|
@ -249,23 +252,26 @@ public class OrderApplicationService extends BaseApplicationService { |
|
|
|
if (CollUtil.isNotEmpty(order.getOrderItemList())) { |
|
|
|
BigDecimal totalOriginalAmount = BigDecimal.ZERO; |
|
|
|
BigDecimal totalDiscountAmount = BigDecimal.ZERO; |
|
|
|
BigDecimal totalSettlementAmount = BigDecimal.ZERO; |
|
|
|
for (OrderItem orderItem : order.getOrderItemList()) { |
|
|
|
orderItem.setOriginalAmount(orderItem.getUnitSettlementPrice().multiply(BigDecimal.valueOf(orderItem.getQuantity()))); |
|
|
|
BigDecimal discountAmount = BigDecimal.ZERO; |
|
|
|
orderItem.setOriginalAmount(orderItem.getOriginalAmount().multiply(BigDecimal.valueOf(orderItem.getQuantity()))); |
|
|
|
BigDecimal discountPrice = BigDecimal.ZERO; |
|
|
|
if (Objects.nonNull(guestCertificationReward)) { |
|
|
|
discountAmount = discountAmount.add(guestCertificationReward.calculateReward(orderItem.getOriginalAmount())); |
|
|
|
discountPrice = discountPrice.add(guestCertificationReward.calculateReward(orderItem.getUnitOriginalPrice())); |
|
|
|
} |
|
|
|
if (Objects.nonNull(publishMarriageBountyReward)) { |
|
|
|
discountAmount = discountAmount.add(publishMarriageBountyReward.calculateReward(orderItem.getOriginalAmount())); |
|
|
|
discountPrice = discountPrice.add(publishMarriageBountyReward.calculateReward(orderItem.getUnitOriginalPrice())); |
|
|
|
} |
|
|
|
orderItem.setDiscountAmount(discountAmount); |
|
|
|
orderItem.setSettlementAmount(orderItem.getOriginalAmount().subtract(discountAmount)); |
|
|
|
orderItem.setUnitSettlementPrice(orderItem.getUnitOriginalPrice().subtract(discountPrice)); |
|
|
|
orderItem.setSettlementAmount(orderItem.getUnitSettlementPrice().multiply(BigDecimal.valueOf(orderItem.getQuantity())).setScale(2, RoundingMode.HALF_UP)); |
|
|
|
orderItem.setDiscountAmount(orderItem.getOriginalAmount().subtract(orderItem.getSettlementAmount())); |
|
|
|
totalOriginalAmount = totalOriginalAmount.add(orderItem.getOriginalAmount()); |
|
|
|
totalDiscountAmount = totalDiscountAmount.add(discountAmount); |
|
|
|
totalSettlementAmount = totalSettlementAmount.add(orderItem.getSettlementAmount()); |
|
|
|
totalDiscountAmount = totalDiscountAmount.add(orderItem.getDiscountAmount()); |
|
|
|
} |
|
|
|
order.setOriginalAmount(totalOriginalAmount); |
|
|
|
order.setDiscountAmount(totalDiscountAmount); |
|
|
|
order.setSettlementAmount(order.getOriginalAmount().subtract(totalDiscountAmount)); |
|
|
|
order.setSettlementAmount(totalSettlementAmount); |
|
|
|
if (order.getSettlementAmount().compareTo(BigDecimal.ZERO) <= 0) { |
|
|
|
throw new BizException("订单金额应该大于0"); |
|
|
|
} |
|
|
|
@ -317,6 +323,7 @@ public class OrderApplicationService extends BaseApplicationService { |
|
|
|
orderItem.setSubCategory(product.getSubCategory()); |
|
|
|
orderItem.setProductTitle(product.getProductTitle()); |
|
|
|
orderItem.setProductDesc(product.getProductDesc()); |
|
|
|
orderItem.setOriginalAmount(productSpec.getUnitSellingPrice()); |
|
|
|
orderItem.setUnitSettlementPrice(productSpec.getUnitSellingPrice()); |
|
|
|
orderItem.setQuantity(1); |
|
|
|
if (ProductSubCategoryEnum.MARRIAGE_BOUNTY_MEETING_FEE.equals(product.getSubCategory())) { |
|
|
|
@ -353,6 +360,7 @@ public class OrderApplicationService extends BaseApplicationService { |
|
|
|
orderItem.setSubCategory(product.getSubCategory()); |
|
|
|
orderItem.setProductTitle(product.getProductTitle()); |
|
|
|
orderItem.setProductDesc(product.getProductDesc()); |
|
|
|
orderItem.setOriginalAmount(unitSettlementPrice); |
|
|
|
orderItem.setUnitSettlementPrice(unitSettlementPrice); |
|
|
|
orderItem.setQuantity(quantity); |
|
|
|
orderItemList.add(orderItem); |
|
|
|
@ -399,7 +407,7 @@ public class OrderApplicationService extends BaseApplicationService { |
|
|
|
throw new BizException("下单异常"); |
|
|
|
} |
|
|
|
OrderItem orderItem = OrderItem.build(productSpec.getProductId(), productSpec.getId(), product.getProductType(), product.getMainCategory(), product.getSubCategory(), |
|
|
|
product.getProductTitle(), calculateVo.getUnitSettlementPrice(), 1); |
|
|
|
product.getProductTitle(), calculateVo.getUnitSettlementPrice(), calculateVo.getUnitSettlementPrice(), 1); |
|
|
|
order.setOrderItemList(Collections.singletonList(orderItem)); |
|
|
|
// } |
|
|
|
//2. 订单金额计算 |
|
|
|
|