diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/dto/PriceDetailDTO.java b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/PriceDetailDTO.java index 67872901..edf3cfc9 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/dto/PriceDetailDTO.java +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/PriceDetailDTO.java @@ -57,7 +57,8 @@ public class PriceDetailDTO implements Serializable { @ApiModelProperty(value = "平台收取交易佣金比例") private Double platFormCommissionPoint; - @ApiModelProperty(value = "平台收取交易佣金") + + @ApiModelProperty(value = "平台收取交易佣金=(flowPrice(流水金额) * platFormCommissionPoint(平台佣金比例))/100") private Double platFormCommission; //=========end distribution========== @@ -82,13 +83,15 @@ public class PriceDetailDTO implements Serializable { //=========end update price========== - @ApiModelProperty(value = "流水金额(入账 出帐金额) = goodsPrice + freight - discountPrice - couponPrice + updatePrice") + @ApiModelProperty(value = "流水金额(入账 出帐金额) = " + + "goodsPrice(商品总金额(商品原价)) + freightPrice(配送费) - " + + "discountPrice(优惠金额) - couponPrice(优惠券金额) + updatePrice(订单修改金额)") private Double flowPrice; @ApiModelProperty(value = "结算价格 与 商家/供应商 结算价格(例如积分商品/砍价商品)") private Double settlementPrice; - @ApiModelProperty(value = "最终结算金额 = flowPrice - platFormCommission - distributionCommission") + @ApiModelProperty(value = "最终结算金额 = flowPrice(流水金额) - platFormCommission(平台收取交易佣金) - distributionCommission(单品分销返现支出)") private Double billPrice; /** diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java index 5593619e..b3b230cc 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java @@ -349,7 +349,7 @@ public class OrderServiceImpl extends ServiceImpl implements order.setCanReturn(!PaymentMethodEnum.BANK_TRANSFER.name().equals(order.getPaymentMethod())); this.updateById(order); - //记录订单流水 + //记录店铺订单支付流水 storeFlowService.payOrder(orderSn); //发送订单已付款消息 diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java index 478dd111..8dda9a15 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java @@ -1,6 +1,7 @@ package cn.lili.modules.order.order.serviceimpl; import cn.hutool.core.text.CharSequenceUtil; +import cn.hutool.json.JSONUtil; import cn.lili.common.utils.BeanUtil; import cn.lili.common.utils.CurrencyUtil; import cn.lili.common.utils.SnowFlake; @@ -9,6 +10,7 @@ import cn.lili.modules.order.aftersale.entity.dos.AfterSale; import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.entity.dos.OrderItem; import cn.lili.modules.order.order.entity.dos.StoreFlow; +import cn.lili.modules.order.order.entity.dto.PriceDetailDTO; import cn.lili.modules.order.order.entity.dto.StoreFlowQueryDTO; import cn.lili.modules.order.order.entity.enums.FlowTypeEnum; import cn.lili.modules.order.order.entity.enums.OrderPromotionTypeEnum; @@ -64,14 +66,16 @@ public class StoreFlowServiceImpl extends ServiceImpl orderItems = orderItemService.getByOrderSn(orderSn); //根据订单编号获取订单数据 Order order = orderService.getBySn(orderSn); - - //获取订单促销类型,如果为促销订单则获取促销商品并获取结算价 String orderPromotionType = order.getOrderPromotionType(); //循环子订单记录流水 @@ -92,13 +96,26 @@ public class StoreFlowServiceImpl extends ServiceImpl().eq(StoreFlow::getOrderItemSn, afterSale.getOrderItemSn()) .eq(StoreFlow::getFlowType, FlowTypeEnum.PAY)); + //申请商品退款数量 storeFlow.setNum(afterSale.getNum()); + //分类ID storeFlow.setCategoryId(payStoreFlow.getCategoryId()); - //佣金 + //佣金 = (佣金/订单商品数量)* 售后商品数量 storeFlow.setCommissionPrice(CurrencyUtil.mul(CurrencyUtil.div(payStoreFlow.getCommissionPrice(), payStoreFlow.getNum()), afterSale.getNum())); - //分销佣金 + //分销佣金 =(分销佣金/订单商品数量)* 售后商品数量 storeFlow.setDistributionRebate(CurrencyUtil.mul(CurrencyUtil.div(payStoreFlow.getDistributionRebate(), payStoreFlow.getNum()), afterSale.getNum())); - //流水金额 + //流水金额 = 实际退款金额 storeFlow.setFinalPrice(afterSale.getActualRefundPrice()); - //最终结算金额 + //最终结算金额 =店铺流水金额+店铺单品返现支出金额+平台收取佣金金额 storeFlow.setBillPrice(CurrencyUtil.add(storeFlow.getFinalPrice(), storeFlow.getDistributionRebate(), storeFlow.getCommissionPrice())); - //获取第三方支付流水号 + //退款日志 RefundLog refundLog = refundLogService.queryByAfterSaleSn(afterSale.getSn()); + //第三方流水单号 storeFlow.setTransactionId(refundLog.getReceivableNo()); + //支付方式 storeFlow.setPaymentName(refundLog.getPaymentName()); this.save(storeFlow); } diff --git a/framework/src/main/java/cn/lili/modules/store/entity/dos/Bill.java b/framework/src/main/java/cn/lili/modules/store/entity/dos/Bill.java index 2020ec8c..02d2fe2c 100644 --- a/framework/src/main/java/cn/lili/modules/store/entity/dos/Bill.java +++ b/framework/src/main/java/cn/lili/modules/store/entity/dos/Bill.java @@ -76,14 +76,6 @@ public class Bill extends BaseIdEntity { @ApiModelProperty(value = "支行联行号") private String bankCode; - /** - * 开始算钱啦 - * billPrice=orderPrice-refundPrice - * -commissionPrice+refundCommissionPrice - * -distributionCommission+distributionRefundCommission - * +siteCouponCommission-siteCouponRefundCommission - * +kanjiaSettlementPrice+pointSettlementPrice - */ @ApiModelProperty(value = "结算周期内订单付款总金额") private Double orderPrice; @@ -114,6 +106,16 @@ public class Bill extends BaseIdEntity { @ApiModelProperty(value = "砍价商品结算价格") private Double kanjiaSettlementPrice; + + /** + * 开始算钱啦 + * billPrice(最终结算金额) = + * orderPrice(结算周期内订单付款总金额) - refundPrice(退单金额) + * - commissionPrice(平台收取佣金) + refundCommissionPrice(退单产生退还佣金金额) + * - distributionCommission(分销返现支出) + distributionRefundCommission(分销订单退还,返现佣金返还) + * + siteCouponCommission(平台优惠券补贴) - siteCouponRefundCommission(退货平台优惠券补贴返还) + * + kanjiaSettlementPrice(砍价商品结算价格) + pointSettlementPrice(pointSettlementPrice) + */ @ApiModelProperty(value = "最终结算金额") private Double billPrice; diff --git a/framework/src/main/java/cn/lili/modules/store/serviceimpl/BillServiceImpl.java b/framework/src/main/java/cn/lili/modules/store/serviceimpl/BillServiceImpl.java index f5eecdb6..5cf4338b 100644 --- a/framework/src/main/java/cn/lili/modules/store/serviceimpl/BillServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/store/serviceimpl/BillServiceImpl.java @@ -68,14 +68,18 @@ public class BillServiceImpl extends ServiceImpl implements Bi StoreDetailVO store = storeDetailService.getStoreDetailVO(storeId); Bill bill = new Bill(); - //结算基础信息 + /** + * @TODO 结算单基础信息 + */ bill.setStartTime(startTime); - bill.setEndTime(DateUtil.yesterday()); + bill.setEndTime(endTime); bill.setBillStatus(BillStatusEnum.OUT.name()); bill.setStoreId(storeId); bill.setStoreName(store.getStoreName()); - //设置结算信息 + /** + * @TODO 结算单基础信息 + */ bill.setBankAccountName(store.getSettlementBankAccountName()); bill.setBankAccountNumber(store.getSettlementBankAccountNum()); bill.setBankCode(store.getSettlementBankJointName()); @@ -84,40 +88,61 @@ public class BillServiceImpl extends ServiceImpl implements Bi //店铺结算单号 bill.setSn(SnowFlake.createStr("B")); - //入账结算信息 - Bill orderBill = this.baseMapper.getOrderBill(new QueryWrapper() - .eq("store_id", storeId) - .eq("flow_type", FlowTypeEnum.PAY.name()) - .between("create_time", startTime, endTime)); - double orderPrice = 0D; - if (orderBill != null) { - bill.setOrderPrice(orderBill.getOrderPrice()); - bill.setCommissionPrice(orderBill.getCommissionPrice()); - bill.setDistributionCommission(orderBill.getDistributionCommission()); - bill.setSiteCouponCommission(orderBill.getSiteCouponCommission()); - bill.setPointSettlementPrice(orderBill.getPointSettlementPrice()); - bill.setKanjiaSettlementPrice(orderBill.getKanjiaSettlementPrice()); - //入账金额=订单金额 - orderPrice = orderBill.getBillPrice(); - } - - //退款结算信息 Bill refundBill = this.baseMapper.getRefundBill(new QueryWrapper() .eq("store_id", storeId) .eq("flow_type", FlowTypeEnum.REFUND.name()) .between("create_time", startTime, endTime)); + //店铺退款金额 Double refundPrice = 0D; if (refundBill != null) { + //退单金额 bill.setRefundPrice(refundBill.getRefundPrice()); + //退单产生退还佣金金额 bill.setRefundCommissionPrice(refundBill.getRefundCommissionPrice()); + //分销订单退还,返现佣金返还 bill.setDistributionRefundCommission(refundBill.getDistributionRefundCommission()); + //退货平台优惠券补贴返还 bill.setSiteCouponRefundCommission(refundBill.getSiteCouponRefundCommission()); + //退款金额=店铺最终退款结算金额 refundPrice = refundBill.getBillPrice(); } - //最终结算金额=入款结算金额-退款结算金额 + + /** + * @TODO 入账结算信息 + */ + Bill orderBill = this.baseMapper.getOrderBill(new QueryWrapper() + .eq("store_id", storeId) + .eq("flow_type", FlowTypeEnum.PAY.name()) + .between("create_time", startTime, endTime)); + //店铺入款结算金额 + double orderPrice = 0D; + + if (orderBill != null) { + //结算周期内订单付款总金额 + bill.setOrderPrice(orderBill.getOrderPrice()); + //平台收取佣金 + bill.setCommissionPrice(orderBill.getCommissionPrice()); + //分销返现支出 + bill.setDistributionCommission(orderBill.getDistributionCommission()); + //平台优惠券补贴 + bill.setSiteCouponCommission(orderBill.getSiteCouponCommission()); + //积分商品结算价格 + bill.setPointSettlementPrice(orderBill.getPointSettlementPrice()); + //砍价商品结算价格 + bill.setKanjiaSettlementPrice(orderBill.getKanjiaSettlementPrice()); + //入款结算金额= 店铺支付结算金额 + 平台优惠券补贴 + 退单产生退还佣金金额 + 分销订单退还,返现佣金返还+退货平台优惠券补贴返还 + orderPrice = CurrencyUtil.add(orderBill.getBillPrice(), + bill.getSiteCouponCommission(), + bill.getRefundCommissionPrice(), + bill.getDistributionRefundCommission(), + bill.getSiteCouponRefundCommission()); + } + + //最终结算金额=入款结算金额-退款结算金额- Double finalPrice = CurrencyUtil.sub(orderPrice, refundPrice); + //店铺最终结算金额=最终结算金额 bill.setBillPrice(finalPrice); //添加结算单