diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleRangeHandle.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleRangeHandle.java
index 03236b4b..beb8f19e 100644
--- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleRangeHandle.java
+++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleRangeHandle.java
@@ -1596,14 +1596,26 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
return null;
}
- // 区域收益,商品价格 * 0.5% * 商品数量
// 处理区域收益 -- 计算比例为 0.5%
BigDecimal benefitIncome = BigDecimal.ZERO;
- // 计算业绩(此处作为比例)
- BigDecimal calAchieve = BigDecimal.ZERO;
- for (SaOrderWaresExt saOrderWaresExt : saOrder.getOrderWaresExtList()) {
- benefitIncome = benefitIncome.add(saOrderWaresExt.getWaresPrice().multiply(RetailConstants.SAME_RATIO)).setScale(6, BigDecimal.ROUND_HALF_UP);
- calAchieve = calAchieve.add(saOrderWaresExt.getWaresPrice());
+ if (EOrderType.RETAIL_REGISTER.getValue() == saOrder.getOrderType()
+ || EOrderType.RETAIL_UPGRADE.getValue() == saOrder.getOrderType()) {
+ // 注册、升级订单, 区域收益 = 商品价格 * 0.5% * 商品数量
+ for (SaOrderWaresExt saOrderWaresExt : saOrder.getOrderWaresExtList()) {
+ // 商品最终价格
+ BigDecimal waresPrice = saOrderWaresExt.getWaresPrice();
+ // 商品数量
+ BigDecimal waresQuantityBig = new BigDecimal(saOrderWaresExt.getWaresQuantity());
+ // 单个商品价格
+ BigDecimal waresOnePrice = waresPrice.divide(waresQuantityBig, 6, RoundingMode.FLOOR);
+
+ benefitIncome = benefitIncome.add(waresOnePrice.multiply(RetailConstants.SAME_RATIO).setScale(6, BigDecimal.ROUND_HALF_UP).multiply(waresQuantityBig));
+ }
+ } else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrder.getOrderType()) {
+ // 复购订单, 区域收益 = 复购区域分红 * 商品数量
+ for (SaOrderWaresExt saOrderWaresExt : saOrder.getOrderWaresExtList()) {
+ benefitIncome = benefitIncome.add(saOrderWaresExt.getAreaIncome().multiply(new BigDecimal(saOrderWaresExt.getWaresQuantity())));
+ }
}
CuMemberBonusDetail cuMemberBonusDetail = packageBenefitIncome(bonusConfigDTO, period, cuMemberBonusMap, null, RetailConstants.SAME_RATIO, benefitIncome,
cuMemberRetailRangeExt, EBonusItems.RETAIL_AREA_INCOME.getValue(), BonusMsgConstants.RETAIL_AREA_INCOME);
diff --git a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/order/BonusOrderMapper.xml b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/order/BonusOrderMapper.xml
index 5e45a63b..b946e1f4 100644
--- a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/order/BonusOrderMapper.xml
+++ b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/order/BonusOrderMapper.xml
@@ -60,6 +60,7 @@
+
@@ -153,7 +154,8 @@
nvl(st.pk_wares,0) pk_wares,
nvl(st.wares_price,0) wares_price,
nvl(bw.wares_code,'~') wares_code,
- nvl(st.wares_quantity,0) wares_quantity
+ nvl(st.wares_quantity,0) wares_quantity,
+ nvl(bw.area_income, 0) area_income
from sa_order so
left join sa_order_wares st
on so.pk_id = st.pk_order and st.wares_price > 0
diff --git a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/ext/SaOrderWaresExt.java b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/ext/SaOrderWaresExt.java
index 6a6cd648..37e0e56b 100644
--- a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/ext/SaOrderWaresExt.java
+++ b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/ext/SaOrderWaresExt.java
@@ -4,6 +4,8 @@ import com.hzs.common.domain.sale.order.SaOrderWares;
import lombok.Data;
import lombok.EqualsAndHashCode;
+import java.math.BigDecimal;
+
@EqualsAndHashCode(callSuper = true)
@Data
public class SaOrderWaresExt extends SaOrderWares {
@@ -13,4 +15,9 @@ public class SaOrderWaresExt extends SaOrderWares {
*/
private String waresCode;
+ /**
+ * 复购区域分红
+ */
+ private BigDecimal areaIncome;
+
}