|
@@ -379,7 +379,7 @@ public class PayServiceImpl implements PayService {
|
|
|
}
|
|
|
asyncService.orderPaySuccessSplit(order.getOrderNo());
|
|
|
// 添加支付成功task
|
|
|
-// redisUtil.lPush(TaskConstants.ORDER_TASK_PAY_SUCCESS_AFTER, orderNo);
|
|
|
+ //redisUtil.lPush(TaskConstants.ORDER_TASK_PAY_SUCCESS_AFTER, orderNo);
|
|
|
return Boolean.TRUE;
|
|
|
}
|
|
|
|
|
@@ -527,6 +527,7 @@ public class PayServiceImpl implements PayService {
|
|
|
logger.error("OrderTaskServiceImpl.orderPaySuccessAfter | 商户订单信息不存在,orderNo: {}", orderNo);
|
|
|
throw new CrmebException("商户订单信息不存在,orderNo: " + orderNo);
|
|
|
}
|
|
|
+
|
|
|
List<UserIntegralRecord> integralList = CollUtil.newArrayList();
|
|
|
List<UserBrokerageRecord> brokerageRecordList = CollUtil.newArrayList();
|
|
|
List<OrderProfitSharing> profitSharingList = CollUtil.newArrayList();
|
|
@@ -557,10 +558,11 @@ public class PayServiceImpl implements PayService {
|
|
|
merchantOrderList.add(merchantOrder);
|
|
|
orderDetailList.addAll(merOrderDetailList);
|
|
|
}
|
|
|
+ Merchant merchant = merchantService.getByIdException(merchantOrder.getMerId());
|
|
|
// 商户帐单流水、分账
|
|
|
if (!order.getSecondType().equals(OrderConstants.ORDER_SECOND_TYPE_INTEGRAL)) {// 积分订单不参与账单
|
|
|
- OrderProfitSharing orderProfitSharing = initOrderProfitSharing(merchantOrder);
|
|
|
- MerchantBill merchantBill = initPayMerchantBill(merchantOrder, orderProfitSharing.getProfitSharingMerPrice());
|
|
|
+ OrderProfitSharing orderProfitSharing = initOrderProfitSharing(merchantOrder,merchant);
|
|
|
+ MerchantBill merchantBill = initPayMerchantBill(merchantOrder,orderProfitSharing.getProfitSharingMerPrice());
|
|
|
List<Bill> platBillList = initPlatformBill(order, merchantOrder, orderProfitSharing);
|
|
|
profitSharingList.add(orderProfitSharing);
|
|
|
merchantBillList.add(merchantBill);
|
|
@@ -575,7 +577,8 @@ public class PayServiceImpl implements PayService {
|
|
|
merchantBalanceRecord.setLinkNo(sharing.getOrderNo());
|
|
|
merchantBalanceRecord.setLinkType("order");
|
|
|
merchantBalanceRecord.setType(1);
|
|
|
- merchantBalanceRecord.setAmount(sharing.getProfitSharingMerPrice().add(sharing.getFreightFee()));
|
|
|
+ //merchantBalanceRecord.setAmount(sharing.getProfitSharingMerPrice().add(sharing.getFreightFee()));
|
|
|
+ merchantBalanceRecord.setAmount(sharing.getProfitSharingMerPrice());
|
|
|
merchantBalanceRecord.setTitle(StrUtil.format("订单支付,商户预计分账金额{}元", merchantBalanceRecord.getAmount()));
|
|
|
merchantBalanceRecord.setBalance(BigDecimal.ZERO);
|
|
|
merchantBalanceRecord.setStatus(1);
|
|
@@ -1047,29 +1050,39 @@ public class PayServiceImpl implements PayService {
|
|
|
* @param merchantOrder 商户部分订单
|
|
|
* @return 分账记录
|
|
|
*/
|
|
|
- private OrderProfitSharing initOrderProfitSharing(MerchantOrder merchantOrder) {
|
|
|
- // 获取商户信息
|
|
|
- Merchant merchant = merchantService.getByIdException(merchantOrder.getMerId());
|
|
|
+ private OrderProfitSharing initOrderProfitSharing(MerchantOrder merchantOrder, Merchant merchant) {
|
|
|
// 分账计算
|
|
|
- // 商户收入 = 订单应付 - 商户优惠 -平台手续费 - 佣金
|
|
|
- BigDecimal orderPrice = merchantOrder.getPayPrice().add(merchantOrder.getIntegralPrice()).add(merchantOrder.getPlatCouponPrice()).subtract(merchantOrder.getPayPostage()).subtract(merchantOrder.getPayPackingFee());
|
|
|
- // 平台手续费
|
|
|
- BigDecimal platFee = orderPrice.multiply(new BigDecimal(merchant.getHandlingFee())).divide(new BigDecimal(100), 2, BigDecimal.ROUND_UP);
|
|
|
+ // 商户收入 = 订单应付 - 商户优惠 -平台(手续费+打包费) - 佣金-打包费-骑手配送费
|
|
|
+ BigDecimal orderPrice = merchantOrder.getPayPrice().add(merchantOrder.getIntegralPrice()).add(merchantOrder.getPlatCouponPrice());
|
|
|
+ // 平台手续费加打包费
|
|
|
+ BigDecimal platFee = orderPrice.multiply(new BigDecimal(merchant.getHandlingFee())).divide(new BigDecimal(100), 2, BigDecimal.ROUND_UP).add(merchantOrder.getPayPackingFee());
|
|
|
// 商户收入金额
|
|
|
BigDecimal merchantFee = orderPrice.subtract(platFee).subtract(merchantOrder.getFirstBrokerage()).subtract(merchantOrder.getSecondBrokerage());
|
|
|
+ //免配送费,商家承担
|
|
|
+ BigDecimal freightFee=BigDecimal.ZERO;
|
|
|
+ if(merchant.getIsFreeDeliveFee()==1 && merchantOrder.getPayPostage().compareTo(BigDecimal.ZERO)==0){
|
|
|
+ String deliveryFee = systemConfigService.getValueByKey(SysConfigConstants.CONFIG_RIDER_DELIVERY_FEE);
|
|
|
+ BigDecimal riderFee=new BigDecimal(StrUtil.isNotEmpty(deliveryFee)?deliveryFee:"0");
|
|
|
+ merchantFee=merchantFee.subtract(riderFee);
|
|
|
+ freightFee=riderFee;
|
|
|
+ }else{
|
|
|
+ merchantFee=merchantFee.subtract(merchantOrder.getPayPostage());
|
|
|
+ freightFee=merchantOrder.getPayPostage();
|
|
|
+ }
|
|
|
OrderProfitSharing orderProfitSharing = new OrderProfitSharing();
|
|
|
orderProfitSharing.setOrderNo(merchantOrder.getOrderNo());
|
|
|
orderProfitSharing.setMerId(merchantOrder.getMerId());
|
|
|
orderProfitSharing.setOrderPrice(merchantOrder.getPayPrice());
|
|
|
orderProfitSharing.setIntegralNum(merchantOrder.getUseIntegral());
|
|
|
orderProfitSharing.setIntegralPrice(merchantOrder.getIntegralPrice());
|
|
|
- orderProfitSharing.setProfitSharingPlatPrice(platFee.add(merchantOrder.getPayPackingFee()));//手续费加打包费
|
|
|
+ orderProfitSharing.setProfitSharingPlatPrice(platFee);//手续费加打包费
|
|
|
orderProfitSharing.setPackingFee(merchantOrder.getPayPackingFee());//打包费
|
|
|
- orderProfitSharing.setProfitSharingMerPrice(merchantFee);
|
|
|
+ orderProfitSharing.setProfitSharingMerPrice(merchantFee.compareTo(BigDecimal.ZERO)<0?BigDecimal.ZERO:merchantFee);
|
|
|
orderProfitSharing.setFirstBrokerageFee(merchantOrder.getFirstBrokerage());
|
|
|
orderProfitSharing.setSecondBrokerageFee(merchantOrder.getSecondBrokerage());
|
|
|
orderProfitSharing.setPlatCouponPrice(merchantOrder.getPlatCouponPrice());
|
|
|
- orderProfitSharing.setFreightFee(merchantOrder.getPayPostage());
|
|
|
+ orderProfitSharing.setFreightFee(freightFee);//免配送费商家承担骑手配送费
|
|
|
+ //orderProfitSharing.setProfitSharingRiderPrice(freightFee);
|
|
|
return orderProfitSharing;
|
|
|
}
|
|
|
|
|
@@ -1080,16 +1093,17 @@ public class PayServiceImpl implements PayService {
|
|
|
* @param merchantFee 商户分账金额
|
|
|
*/
|
|
|
private MerchantBill initPayMerchantBill(MerchantOrder merchantOrder, BigDecimal merchantFee) {
|
|
|
+ String deliveryFee = systemConfigService.getValueByKey(SysConfigConstants.CONFIG_RIDER_DELIVERY_FEE);
|
|
|
+ BigDecimal riderFee=new BigDecimal(StrUtil.isNotEmpty(deliveryFee)?deliveryFee:"0");
|
|
|
MerchantBill merchantBill = new MerchantBill();
|
|
|
merchantBill.setMerId(merchantOrder.getMerId());
|
|
|
merchantBill.setType(BillConstants.BILL_TYPE_PAY_ORDER);
|
|
|
merchantBill.setOrderNo(merchantOrder.getOrderNo());
|
|
|
merchantBill.setUid(merchantOrder.getUid());
|
|
|
merchantBill.setPm(BillConstants.BILL_PM_ADD);
|
|
|
- //BigDecimal merFee = merchantOrder.getPayPostage().add(merchantFee);
|
|
|
- BigDecimal merFee = merchantFee;
|
|
|
- merchantBill.setAmount(merFee);
|
|
|
- merchantBill.setMark(StrUtil.format("订单{}支付{}元,商户收入{}元", merchantOrder.getOrderNo(), merchantOrder.getPayPrice(), merFee));
|
|
|
+ // BigDecimal merFee = merchantFee;
|
|
|
+ merchantBill.setAmount(merchantFee);
|
|
|
+ merchantBill.setMark(StrUtil.format("订单{}支付{}元,商户收入{}元", merchantOrder.getOrderNo(), merchantOrder.getPayPrice(), merchantFee));
|
|
|
return merchantBill;
|
|
|
}
|
|
|
|
|
@@ -1122,14 +1136,20 @@ public class PayServiceImpl implements PayService {
|
|
|
Bill collectBill = new Bill();
|
|
|
collectBill.setMerId(merchantOrder.getMerId());
|
|
|
collectBill.setOrderNo(order.getOrderNo());
|
|
|
- collectBill.setAmount(orderProfitSharing.getProfitSharingMerPrice().add(merchantOrder.getPayPostage()));
|
|
|
+ collectBill.setAmount(orderProfitSharing.getProfitSharingMerPrice());
|
|
|
collectBill.setPm(BillConstants.BILL_PM_SUB);
|
|
|
collectBill.setType(BillConstants.BILL_TYPE_MERCHANT_COLLECT);
|
|
|
-// collectBill.setMark(StrUtil.format("订单支付成功,商户分账{}元", orderProfitSharing.getProfitSharingMerPrice().add(merchantOrder.getPayPostage())));
|
|
|
collectBill.setMark(StrUtil.format("订单支付成功,商户分账{}元", orderProfitSharing.getProfitSharingMerPrice()));
|
|
|
-
|
|
|
billList.add(collectBill);
|
|
|
|
|
|
+ Bill riderBill = new Bill();
|
|
|
+ riderBill.setOrderNo(order.getOrderNo());
|
|
|
+ riderBill.setAmount(orderProfitSharing.getFreightFee());
|
|
|
+ riderBill.setPm(BillConstants.BILL_PM_SUB);
|
|
|
+ riderBill.setType(BillConstants.BILL_TYPE_RIDER_COLLECT);
|
|
|
+ riderBill.setMark(StrUtil.format("订单支付成功,骑手分账{}元", orderProfitSharing.getFreightFee()));
|
|
|
+ billList.add(riderBill);
|
|
|
+
|
|
|
Bill platBill = new Bill();
|
|
|
platBill.setOrderNo(order.getOrderNo());
|
|
|
platBill.setAmount(orderProfitSharing.getProfitSharingPlatPrice());
|