Forráskód Böngészése

fix 修改加购订单分销提成

zoujiajian 2 éve
szülő
commit
097663f0f3

+ 19 - 1
netflix-dao/src/main/java/com/cyksj/model/entity/OrderDon.java

@@ -52,7 +52,23 @@ public class OrderDon extends BaseEntity implements Serializable {
     private String openId;
 
     /** 金额 */
-    private BigDecimal money ;
+    private BigDecimal money;
+
+    /**
+     * 加购商品金额
+     */
+    @TableField(exist = false)
+    @DbIgnore
+    private BigDecimal dpMoney;
+
+    /**
+     * 主平台订单金额
+     */
+    private BigDecimal oriMoney;
+
+    @DbIgnore
+    @TableField(exist = false)
+    private BigDecimal dsMoney;
 
     /**
      * 海外支付金额
@@ -219,12 +235,14 @@ public class OrderDon extends BaseEntity implements Serializable {
      * 付款说明
      */
     @TableField(exist = false)
+    @DbIgnore
     private String payDesc;
 
     /**
      * 虚拟平台特殊类型
      */
     @TableField(exist = false)
+    @DbIgnore
     private GoodsDon.SpecialType specialType;
 
     /**

+ 1 - 1
netflix-dao/src/main/java/com/cyksj/model/views/DistributeOrdersDetailView.java

@@ -35,7 +35,7 @@ public class DistributeOrdersDetailView {
 	@DbField("gd.title")
 	private String platform;
 
-	@DbField("od.money")
+	@DbField("if(od.is_dp and od.ori_money != 0,od.ori_money,od.money)")
 	private BigDecimal money;
 
 	@DbField("od.created_time")

+ 1 - 1
netflix-dao/src/main/java/com/cyksj/model/views/DistributePopularizeOrdersView.java

@@ -34,7 +34,7 @@ public class DistributePopularizeOrdersView {
 	@JsonIgnore
 	private Long skuId;
 
-	@DbField("od.money")
+	@DbField("if(od.is_dp and od.ori_money != 0,od.ori_money,od.money)")
 	private BigDecimal money;
 
 	@DbField("dw.shared_id")

+ 1 - 1
netflix-dao/src/main/java/com/cyksj/model/views/PersonDistributeBrokenLineView.java

@@ -37,7 +37,7 @@ public class PersonDistributeBrokenLineView {
 	/**
 	 * 当前日期订单金额
 	 */
-	@DbField("cast(sum(od.money)/100 as decimal(10,2))")
+	@DbField("cast(sum(if(od.is_dp and od.ori_money != 0,od.ori_money,od.money))/100 as decimal(10,2))")
 	private BigDecimal money;
 
 	/**

+ 2 - 2
netflix-dao/src/main/java/com/cyksj/model/views/UserDistributeOrdersDetailView.java

@@ -17,7 +17,7 @@ import java.util.Date;
  */
 @Getter
 @Setter
-@SearchBean(tables = "(select o.id,o.user_id,o.goods_id,o.sku_id,o.money,o.refund_money,o.coupon_money,o.created_time from order_don o inner join (select user_id from user_distribute_shared where :sharedId:) us on us.user_id = o.user_id where o.is_fixed_distribute is true and o.status not in ('close','noPayment') :time:) od" +
+@SearchBean(tables = "(select o.id,o.user_id,o.goods_id,o.sku_id,o.money,o.refund_money,o.coupon_money,o.created_time,o.is_dp,o.ori_money from order_don o inner join (select user_id from user_distribute_shared where :sharedId:) us on us.user_id = o.user_id where o.is_fixed_distribute is true and o.status not in ('close','noPayment') :time:) od" +
 		" left join goods_don g on g.id = od.goods_id" +
 		" inner join distribute_waiting_send_points dp on dp.order_id = od.id")
 public class UserDistributeOrdersDetailView {
@@ -35,7 +35,7 @@ public class UserDistributeOrdersDetailView {
 	@DbField("select spec_val from goods_don_sku where id = od.sku_id limit 1")
 	private String specVal;
 
-	@DbField("cast(od.money/100 as decimal(10,2))")
+	@DbField("cast(if(od.is_dp and od.ori_money != 0,od.ori_money,od.money)/100 as decimal(10,2))")
 	private BigDecimal money;
 
 	@DbField("od.coupon_money")

+ 3 - 3
netflix-dao/src/main/java/com/cyksj/model/views/UserDistributeOrdersStatisticsView.java

@@ -15,7 +15,7 @@ import java.math.BigDecimal;
  */
 @Getter
 @Setter
-@SearchBean(tables = "(select o.id,o.user_id,o.goods_id,o.money,o.refund_money,o.status from order_don o inner join (select user_id from user_distribute_shared where :sharedId:) us on us.user_id = o.user_id where o.is_fixed_distribute is true and o.status not in ('close','noPayment') :time:) od left join goods_don g on g.id = od.goods_id" +
+@SearchBean(tables = "(select o.id,o.user_id,o.goods_id,o.money,o.refund_money,o.status,o.is_dp,o.ori_money from order_don o inner join (select user_id from user_distribute_shared where :sharedId:) us on us.user_id = o.user_id where o.is_fixed_distribute is true and o.status not in ('close','noPayment') :time:) od left join goods_don g on g.id = od.goods_id" +
 		" inner join distribute_waiting_send_points dp on dp.order_id = od.id",
 		groupBy = "od.goods_id,g.title")
 public class UserDistributeOrdersStatisticsView {
@@ -23,7 +23,7 @@ public class UserDistributeOrdersStatisticsView {
 	@DbField("g.title")
 	private String title;
 
-	@DbField("cast(sum(od.money)/100 as decimal(10,2))")
+	@DbField("cast(sum(if(od.is_dp and od.ori_money != 0,od.ori_money,od.money))/100 as decimal(10,2))")
 	private BigDecimal distributeOrderMoney;
 
 	@DbField("count(od.id)")
@@ -35,6 +35,6 @@ public class UserDistributeOrdersStatisticsView {
 	@DbField("count(if(od.status = 'refund',1,NULL))")
 	private Integer refundOrders;
 
-	@DbField("cast(sum(ifnull(od.refund_money,0))/100 as decimal(10,2))")
+	@DbField("cast(sum(ifnull(if(od.is_dp and od.ori_money != 0 and od.refund_money > od.ori_money,od.ori_money,od.refund_money),0))/100 as decimal(10,2))")
 	private BigDecimal refundMoney;
 }

+ 1 - 1
netflix-dao/src/main/java/com/cyksj/model/views/UserDistributeViews.java

@@ -66,7 +66,7 @@ public class UserDistributeViews {
 	/**
 	 * 分销订单金额(无需产生积分)
 	 */
-	@DbField("(ifnull(sum(od.money),0) - ifnull(sum(od.refund_money),0))")
+	@DbField("(ifnull(sum(if(od.is_dp and od.ori_money != 0,od.ori_money,od.money)),0) - ifnull(sum(od.refund_money),0))")
 	private BigDecimal distributeOrdersMoney;
 
 	/**

+ 1 - 1
netflix-service/src/main/java/com/cyksj/service/distribute/impl/UserBusinessFrontServiceImpl.java

@@ -309,7 +309,7 @@ public class UserBusinessFrontServiceImpl implements UserBusinessFrontService {
 		//是否超过默认配置平台比例
 		Integer defaultGoodsRate = defaultGoodsRateConfig.getRate();
 		//首单提成比例
-		BigDecimal orderMoney = order.getMoney();
+		BigDecimal orderMoney = order.getDsMoney();
 		BigDecimal takeMoney = BigDecimal.ZERO;
 		if (firstOrderRate != null) {
 			if (distributeRate > defaultGoodsRate) {

+ 27 - 5
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -387,6 +387,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 
 		orderDon.setMoney(payRequest.getDonMoney());
 		orderDon.setRealMoney(payRequest.getDonMoney());
+		orderDon.setOriMoney(sku.getPrice());
 
 		List<Long> dpSkuIds = payRequest.getDpSkuIds();
 		if (CollUtil.isNotEmpty(dpSkuIds)) {
@@ -402,6 +403,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 			for (GoodsDiscountPlusPurchaseRelation re : ds_relations) {
 				goods_discount_plus_pay = goods_discount_plus_pay.add(re.getDisPrice());
 				dsSkuIds.add(re.getDisSid());
+				orderDon.setDpMoney(goods_discount_plus_pay);
 			}
 			BigDecimal pay_money = sku.getPrice().add(goods_discount_plus_pay);
 			if (pay_money.compareTo(orderDon.getMoney()) > 0) {
@@ -1384,6 +1386,17 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		distributeWaitingSendPoints.setOrderId(order.getId());
 		distributeWaitingSendPoints.setUserId(order.getUserId());
 		BigDecimal orderMoney = order.getMoney();
+		//是否是加购订单
+		if (order.getIsDp()) {
+			//加购订单使用 主平台金额 分销
+			orderMoney = order.getOriMoney();
+			if (orderMoney.compareTo(BigDecimal.ZERO) == 0) {
+				log.info("orderId:{}之前加购订单,无主平台金额,使用规格金额", order.getId());
+				GoodsDonSku sku = goodsDonSkuMapper.selectById(order.getSkuId());
+				orderMoney = sku.getPrice();
+			}
+		}
+		order.setDsMoney(orderMoney);
 		BigDecimal points = null;
 		BigDecimal returnMoney = null;
 		Long businessId = null;
@@ -2037,10 +2050,17 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 			Long couponId = couponUser.getCouponId();
 			Coupon coupon = couponMapper.getCouponById(couponId);
 			BigDecimal couponMoney = null;
+			BigDecimal payMoney = orderDon.getMoney();
+			BigDecimal needDeductMoney = payMoney;
+			if (orderDon.getIsDp()) {
+				needDeductMoney = needDeductMoney.subtract(orderDon.getDpMoney());
+			}
 			if (coupon.getType() == Coupon.Type.discount) {
-				BigDecimal discountMoney = orderDon.getMoney().multiply(coupon.getDiscount());
-				orderDon.setMoney(discountMoney);
-				couponMoney = orderDon.getRealMoney().subtract(discountMoney);
+				couponMoney = needDeductMoney.multiply(BigDecimal.valueOf(1).subtract(coupon.getDiscount()));
+				//需支付金额
+				orderDon.setMoney(payMoney.subtract(couponMoney));
+
+				orderDon.setOriMoney(orderDon.getOriMoney().multiply(coupon.getDiscount()));
 				//记录折扣 用于分销
 				couponUser.setDiscount(coupon.getDiscount());
 				couponUserMapper.updateById(couponUser);
@@ -2050,9 +2070,11 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 						throw BusinessRuntimeException.getInstance(String.format("满%s可用", coupon.getReduceCondition().divide(BigDecimal.valueOf(100))));
 					}
 				}
-				BigDecimal subtractMoney = orderDon.getMoney().subtract(coupon.getReduceMoney());
+				BigDecimal subtractMoney = payMoney.subtract(coupon.getReduceMoney());
 				orderDon.setMoney(subtractMoney);
-				couponMoney = orderDon.getRealMoney().subtract(subtractMoney);
+				couponMoney = coupon.getReduceMoney();
+
+				orderDon.setOriMoney(orderDon.getOriMoney().subtract(coupon.getReduceMoney()));
 			}
 			if (couponMoney != null && couponMoney.compareTo(first_money) >= 0) {
 				throw BusinessRuntimeException.getInstance("支付金额不能小于优惠金额");