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 f4c6c3f8..bbe9b5d4 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
@@ -552,25 +552,27 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
) {
// 注册或升级订单并且存在盒数产品,才有 直推级差收益 和 平级收益
for (SaOrderWaresExt saOrderItems : saOrderExt.getOrderWaresExtList()) {
- // 直推级差 + 平级收益
- cuMemberBonusRangeList.addAll(calculateRetailRangeBonus(memberRangeExtMap, cuMemberBonusMap, gradeMap, bonusConfigDTO, period, saOrderItems, saOrderExt));
+ if (RetailConstants.ALL_BOX_WARES_LIST.contains(saOrderItems.getWaresCode())) {
+ // 盒数商品 计算 直推级差 + 平级收益
+ cuMemberBonusRangeList.addAll(calculateRetailRangeBonus(memberRangeExtMap, cuMemberBonusMap, gradeMap, bonusConfigDTO, period, saOrderItems, saOrderExt));
+ }
// 计算完奖金算等级
- if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType()
- || EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) {
- // 订单存在升级记录
- if (memberLevelMap.containsKey(saOrderExt.getPkId())) {
- CuMemberLevel cuMemberLevel = memberLevelMap.get(saOrderExt.getPkId());
- if (gradeIdMap.containsKey(cuMemberLevel.getNewLevel())) {
- BdGrade bdGrade = gradeIdMap.get(cuMemberLevel.getNewLevel());
- if (bdGrade.getGradeValue() > sourceMemberRangeExt.getGradeValue()) {
- sourceMemberRangeExt.setPkGrade(bdGrade.getPkId());
- sourceMemberRangeExt.setGradeValue(bdGrade.getGradeValue());
- sourceMemberRangeExt.setGradeName(bdGrade.getGradeName());
- }
+// if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType()
+// || EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) {
+// // 订单存在升级记录
+ if (memberLevelMap.containsKey(saOrderExt.getPkId())) {
+ CuMemberLevel cuMemberLevel = memberLevelMap.get(saOrderExt.getPkId());
+ if (gradeIdMap.containsKey(cuMemberLevel.getNewLevel())) {
+ BdGrade bdGrade = gradeIdMap.get(cuMemberLevel.getNewLevel());
+ if (bdGrade.getGradeValue() > sourceMemberRangeExt.getGradeValue()) {
+ sourceMemberRangeExt.setPkGrade(bdGrade.getPkId());
+ sourceMemberRangeExt.setGradeValue(bdGrade.getGradeValue());
+ sourceMemberRangeExt.setGradeName(bdGrade.getGradeName());
}
}
}
+// }
}
}
@@ -1403,9 +1405,16 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
} else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrder.getOrderType()) {
// 复购订单, 区域收益 = 复购区域分红 * 商品数量
for (SaOrderWaresExt saOrderWaresExt : saOrder.getOrderWaresExtList()) {
- benefitIncome = benefitIncome.add(saOrderWaresExt.getAreaIncome().multiply(new BigDecimal(saOrderWaresExt.getWaresQuantity())));
+ if (ERatioType.VALUE.getValue() == saOrderWaresExt.getAreaIncomeType()) {
+ // 按比值处理
+ benefitIncome = benefitIncome.add(saOrderWaresExt.getAreaIncome().multiply(new BigDecimal(saOrderWaresExt.getWaresQuantity())));
+ } else {
+ // 按比率处理
+ benefitIncome = benefitIncome.add(saOrderWaresExt.getWaresPrice().multiply(saOrderWaresExt.getAreaIncome()).divide(new BigDecimal("100"), 6, BigDecimal.ROUND_HALF_UP).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 7b1ad32b..1ea855a1 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
@@ -61,6 +61,7 @@
+
@@ -154,9 +155,10 @@
nvl(st.pk_order,0) pk_order,
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(bw.wares_code,'~') wares_code,
nvl(bw.area_income, 0) area_income,
+ nvl(bw.area_income_type, 0) area_income_type,
nvl(bw.box_num, 0) wares_box_num
from sa_order so
left join sa_order_wares st
@@ -164,6 +166,67 @@
left join bd_wares bw
on bw.pk_id = st.pk_wares and bw.del_flag = 0
where so.order_status = 1
+ and so.order_type in (41, 42)
+
+ and so.order_code=#{orderCode}
+
+ and so.pay_time >= #{startDate}
+ and so.pay_time < #{endDate}
+ union
+ select so.pk_id,
+ so.pk_member,
+ so.order_code,
+ so.order_type,
+ so.pk_rate,
+ so.rec_province,
+ so.rec_city,
+ so.rec_county,
+ so.order_amount,
+ so.order_achieve,
+ so.order_ass_achieve,
+ so.upload_achieve,
+ so.pk_reference,
+ so.pk_vertex,
+ so.pk_country,
+ so.del_flag,
+ so.pay_time,
+ so.pk_creator,
+ so.consume_amount,
+ so.box_num,
+ soi.items_id,
+ soi.pk_order,
+ soi.pk_wares,
+ soi.wares_price,
+ soi.wares_quantity,
+ nvl(bw.wares_code, '~') wares_code,
+ nvl(bw.area_income, 0) area_income,
+ nvl(bw.area_income_type, 0) area_income_type,
+ nvl(bw.box_num, 0) wares_box_num
+ from sa_order so
+ left join (select max(soi.pk_id) items_id,
+ nvl(soi.pk_order, 0) pk_order,
+ nvl(soi.pk_wares, 0) pk_wares,
+ sum(soi.achievement * soi.quantity) wares_price,
+ max(soi.wares_quantity) wares_quantity
+ from sa_order so
+ left join sa_order_items soi
+ on soi.pk_order = so.pk_id
+ and soi.del_flag = 0
+ and soi.is_gift = 1
+ where so.order_status = 1
+ and so.order_type in (43)
+
+ and so.order_code=#{orderCode}
+
+ and so.pay_time >= #{startDate}
+ and so.pay_time < #{endDate}
+ group by soi.pk_order, soi.pk_wares) soi
+ on soi.pk_order = so.pk_id
+ left join bd_wares bw
+ on bw.pk_id = soi.pk_wares
+ and bw.del_flag = 0
+ where so.order_status = 1
+ and so.order_type in (43)
and so.order_code=#{orderCode}