记得上下班打卡 | git大法好,push需谨慎

Commit 05acfaad authored by wangyifan's avatar wangyifan

order:优惠金额计算

parent 5ff77e13
...@@ -533,20 +533,26 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ ...@@ -533,20 +533,26 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
boolean isGroupBuy = groupBuyOrderHelper.isGroupBuyOrder(payOrderParam); boolean isGroupBuy = groupBuyOrderHelper.isGroupBuyOrder(payOrderParam);
BigDecimal groupUnitPrice = groupBuyOrderHelper.resolveUnitPrice(payOrderParam, ticketData.getPrice()); BigDecimal groupUnitPrice = groupBuyOrderHelper.resolveUnitPrice(payOrderParam, ticketData.getPrice());
BigDecimal expressAmount = payOrderParam.getIsExpress() == 1 ? priceExpress : BigDecimal.valueOf(0);
if (isGroupBuy) { if (isGroupBuy) {
if (groupUnitPrice == null) { if (groupUnitPrice == null) {
throw new Exception("拼团价计算失败"); throw new Exception("拼团价计算失败");
} }
orderTickets.setPriceTotal(groupUnitPrice.multiply(BigDecimal.valueOf(payOrderParam.getNumber())) // 拼团单:应付=原价×数量;实付=拼团价×数量(直接算);优惠=应付-实付
.add(payOrderParam.getIsExpress() == 1 ? priceExpress : BigDecimal.valueOf(0))); BigDecimal originalTotal = ticketData.getPrice().multiply(BigDecimal.valueOf(payOrderParam.getNumber())).add(expressAmount);
BigDecimal groupActual = groupUnitPrice.multiply(BigDecimal.valueOf(payOrderParam.getNumber())).add(expressAmount);
orderTickets.setPriceTotal(originalTotal);
orderTickets.setPriceActual(groupActual);
orderTickets.setPriceVoucher(originalTotal.subtract(groupActual).max(BigDecimal.ZERO));
} else if (isMember) { } else if (isMember) {
orderTickets.setPriceTotal(ticketData.getMemberPrice().multiply(BigDecimal.valueOf(payOrderParam.getNumber())).add(payOrderParam.getIsExpress() == 1 ? priceExpress : BigDecimal.valueOf(0))); orderTickets.setPriceTotal(ticketData.getMemberPrice().multiply(BigDecimal.valueOf(payOrderParam.getNumber())).add(expressAmount));
orderTickets.setPriceVoucher(BigDecimal.ZERO);
} else { } else {
orderTickets.setPriceTotal(ticketData.getPrice().multiply(BigDecimal.valueOf(payOrderParam.getNumber())).add(payOrderParam.getIsExpress() == 1 ? priceExpress : BigDecimal.valueOf(0))); orderTickets.setPriceTotal(ticketData.getPrice().multiply(BigDecimal.valueOf(payOrderParam.getNumber())).add(expressAmount));
orderTickets.setPriceVoucher(BigDecimal.ZERO);
} }
orderTickets.setPriceVoucher(BigDecimal.ZERO); //券的使用逻辑(拼团禁券,价格已在上方直接赋值)
//券的使用逻辑(拼团禁券)
sqls.add(SqlMapping.get("kylin_order_coupon.add")); sqls.add(SqlMapping.get("kylin_order_coupon.add"));
LinkedList<Object[]> sqlsDataE = ObjectUtil.cloneLinkedListObj(); LinkedList<Object[]> sqlsDataE = ObjectUtil.cloneLinkedListObj();
ArrayList<KylinOrderCoupons> couponsList = new ArrayList(); ArrayList<KylinOrderCoupons> couponsList = new ArrayList();
...@@ -591,8 +597,11 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ ...@@ -591,8 +597,11 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
dataUtils.setOrderCoupon(orderTicketId, couponsList); dataUtils.setOrderCoupon(orderTicketId, couponsList);
} }
BigDecimal finalPrice = orderTickets.getPriceTotal().subtract(orderTickets.getPriceVoucher()); // 普通单:实付=应付-优惠;拼团单实付已在上方直接赋值,不再重算
orderTickets.setPriceActual(finalPrice.compareTo(BigDecimal.ZERO) <= 0 ? BigDecimal.ZERO : finalPrice); if (!isGroupBuy) {
BigDecimal finalPrice = orderTickets.getPriceTotal().subtract(orderTickets.getPriceVoucher());
orderTickets.setPriceActual(finalPrice.compareTo(BigDecimal.ZERO) <= 0 ? BigDecimal.ZERO : finalPrice);
}
orderTickets.setPriceExpress(priceExpress); orderTickets.setPriceExpress(priceExpress);
orderTickets.setPriceRefund(BigDecimal.valueOf(0.0)); orderTickets.setPriceRefund(BigDecimal.valueOf(0.0));
orderTickets.setRefundNumber(0); orderTickets.setRefundNumber(0);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment