From ba992616d8c782e98a2b6ebedcdf2cbec0c9c6dc Mon Sep 17 00:00:00 2001 From: cabbage <281119120@qq.com> Date: Fri, 16 May 2025 13:45:28 +0800 Subject: [PATCH] =?UTF-8?q?##=20=E8=B0=83=E6=95=B44-N=E6=8B=A8=E6=AF=94?= =?UTF-8?q?=E5=85=A5=E5=BA=93=E5=A4=84=E7=90=86=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bonus/mapper/CuBonusExpandMapper.java | 25 +-- .../bonus/bonus/param/BonusExpandParam.java | 7 +- .../impl/CuBonusExpandServiceImpl.java | 7 +- .../member/bonus/CuBonusExpandMapper.xml | 142 ++++++++++-------- .../domain/member/bonus/CuBonusExpand.java | 23 ++- 5 files changed, 95 insertions(+), 109 deletions(-) diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/mapper/CuBonusExpandMapper.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/mapper/CuBonusExpandMapper.java index 176ddd6b..8e610d9c 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/mapper/CuBonusExpandMapper.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/mapper/CuBonusExpandMapper.java @@ -10,9 +10,6 @@ import java.util.List; /** * Mapper 接口 - * - * @author hzs - * @since 2024-07-19 */ public interface CuBonusExpandMapper extends BaseMapper { @@ -26,49 +23,31 @@ public interface CuBonusExpandMapper extends BaseMapper { /* * @description: 查询日期是否标红 - * @author: sui q - * @date: 2024/7/24 10:59 - * @param: null null **/ List queryBonusExpandDis(BonusExpandParam bonusExpandParam); /* * @description: 查询所有零线会员 - * @author: sui q - * @date: 2024/7/22 16:16 - * @param: null null **/ List queryZeroMemberByVertex(); /* - * @description: 根基时间、期间计算波比 - * @author: sui q - * @date: 2024/7/22 13:42 - * @param: null null + * @description: 时间、期间计算波比 -- 首购 **/ List calculateDayRatioByBonusExpandParam(@Param("bonusExpandParam") BonusExpandParam bonusExpandParam, @Param("tableName") String tableName); /* - * @description: 根基时间、期间计算波比 - * @author: sui q - * @date: 2024/7/22 13:42 - * @param: null null + * @description: 时间、期间计算波比 -- 复购 **/ List calculateDayRepRatioByBonusExpandParam(@Param("bonusExpandParam") BonusExpandParam bonusExpandParam, @Param("tableName") String tableName); /* * @description: 删除临时表 - * @author: sui q - * @date: 2024/7/30 13:49 - * @param: null null **/ void truncateTable(); /* * @description: 批量更新4-n配置 - * @author: sui q - * @date: 2024/7/22 14:22 - * @param: null null **/ void mergeBonusExpandByList(@Param("cuBonusExpandList") List cuBonusExpandList); } diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/param/BonusExpandParam.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/param/BonusExpandParam.java index 26a3e9a3..1a1190f1 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/param/BonusExpandParam.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/param/BonusExpandParam.java @@ -11,12 +11,7 @@ import java.util.Date; import java.util.List; /** - * @description: 4-n 增加碰次 - * @author: sui q - * @time: 2024/7/19 14:21 - * @classname: BonusExpandParam - * @package_name: com.hzs.bonus.bonus.param - * version 1.0.0 + * 4-n 增加碰次 */ @Data @Builder diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuBonusExpandServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuBonusExpandServiceImpl.java index 54f94b7d..8facb8da 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuBonusExpandServiceImpl.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuBonusExpandServiceImpl.java @@ -57,7 +57,7 @@ public class CuBonusExpandServiceImpl extends ServiceImpl bonusExpandList = queryCuBonusExpand(bonusExpandParam.getSettleDate(), bonusExpandParam.getPkCountry()); - if (bonusExpandList == null || bonusExpandList.size() == 0) { + if (CollectionUtil.isEmpty(bonusExpandList)) { // 查询 List cuBonusExpandList = queryCuBonusExpand(DateUtils.beforeDate(1, ChronoUnit.DAYS, bonusExpandParam.getSettleDate()), bonusExpandParam.getPkCountry()); Map cuBonusExpandMap = new HashMap<>(); @@ -99,6 +99,8 @@ public class CuBonusExpandServiceImpl extends ServiceImpl dayBonusExpandList = baseMapper.calculateDayRatioByBonusExpandParam(bonusExpandParam, tableName); if (CollectionUtil.isNotEmpty(dayBonusExpandList)) { for (CuBonusExpand cuBonusExpand : dayBonusExpandList) { @@ -113,6 +115,7 @@ public class CuBonusExpandServiceImpl extends ServiceImpl dayRepBonusExpandList = baseMapper.calculateDayRepRatioByBonusExpandParam(bonusExpandParam, tableName); if (CollectionUtil.isNotEmpty(dayRepBonusExpandList)) { for (CuBonusExpand cuBonusExpand : dayRepBonusExpandList) { @@ -124,9 +127,11 @@ public class CuBonusExpandServiceImpl extends ServiceImpl monthBonusExpandList = baseMapper.calculateDayRatioByBonusExpandParam(bonusExpandParam, tableName); if (CollectionUtil.isNotEmpty(monthBonusExpandList)) { for (CuBonusExpand cuBonusExpand : monthBonusExpandList) { diff --git a/bd-business/bd-business-bonus/src/main/resources/mapper/member/bonus/CuBonusExpandMapper.xml b/bd-business/bd-business-bonus/src/main/resources/mapper/member/bonus/CuBonusExpandMapper.xml index 2abbe001..4fa8d3ca 100644 --- a/bd-business/bd-business-bonus/src/main/resources/mapper/member/bonus/CuBonusExpandMapper.xml +++ b/bd-business/bd-business-bonus/src/main/resources/mapper/member/bonus/CuBonusExpandMapper.xml @@ -34,100 +34,110 @@ using ( select * from( - select #{item.pkId} pk_id,#{item.dayAchieve,jdbcType=NUMERIC} day_achieve,#{item.dayBonus,jdbcType=NUMERIC} - day_bonus, - #{item.yesDayRatio,jdbcType=NUMERIC} yes_day_ratio,#{item.curDayRatio,jdbcType=NUMERIC} cur_day_ratio, - #{item.monthAchieve,jdbcType=NUMERIC} month_achieve,#{item.monthBonus,jdbcType=NUMERIC} month_bonus, - #{item.monthRatio,jdbcType=NUMERIC} month_ratio,#{item.dayRepAchieve,jdbcType=NUMERIC} day_rep_achieve, - #{item.dayRepBonus,jdbcType=NUMERIC} day_rep_bonus,#{item.curDayRepRatio,jdbcType=NUMERIC} cur_day_rep_ratio + select + #{item.pkId} pk_id, #{item.dayAchieve,jdbcType=NUMERIC} day_achieve, #{item.dayBonus,jdbcType=NUMERIC} day_bonus, + #{item.yesDayRatio,jdbcType=NUMERIC} yes_day_ratio, #{item.curDayRatio,jdbcType=NUMERIC} cur_day_ratio, + #{item.monthAchieve,jdbcType=NUMERIC} month_achieve, #{item.monthBonus,jdbcType=NUMERIC} month_bonus, + #{item.monthRatio,jdbcType=NUMERIC} month_ratio, #{item.dayRepAchieve,jdbcType=NUMERIC} day_rep_achieve, + #{item.dayRepBonus,jdbcType=NUMERIC} day_rep_bonus, #{item.curDayRepRatio,jdbcType=NUMERIC} cur_day_rep_ratio from dual ) ) b - on (ce.pk_id=b.pk_id) + on (ce.pk_id = b.pk_id) when matched then - update set ce.day_achieve=b.day_achieve,ce.day_bonus=b.day_bonus,ce.yes_day_ratio=b.yes_day_ratio, - ce.cur_day_ratio=b.cur_day_ratio,ce.month_achieve=b.month_achieve, - ce.month_bonus=b.month_bonus,ce.month_ratio=b.month_ratio, - ce.day_rep_achieve=b.day_rep_achieve,ce.day_rep_bonus=b.day_rep_bonus, - ce.cur_day_rep_ratio=b.cur_day_rep_ratio + update set ce.day_achieve = b.day_achieve, ce.day_bonus = b.day_bonus, ce.yes_day_ratio = b.yes_day_ratio, + ce.cur_day_ratio = b.cur_day_ratio, ce.month_achieve = b.month_achieve, + ce.month_bonus = b.month_bonus, ce.month_ratio = b.month_ratio, + ce.day_rep_achieve = b.day_rep_achieve, ce.day_rep_bonus = b.day_rep_bonus, + ce.cur_day_rep_ratio = b.cur_day_rep_ratio truncate table cu_member_repeat_bonus - - select a.pk_member,COALESCE(a.order_amount,0) day_rep_achieve, - COALESCE(b.pur_real_subtotal*bc.out_exchange_rate,0) day_rep_bonus, - COALESCE(ROUND(b.pur_real_subtotal*bc.out_exchange_rate/a.order_amount*100, 2),0) cur_day_rep_ratio from( - select #{item} pk_member,sum(order_amount) order_amount from( - select so.pk_member,order_achieve,(case when order_amount>=198000 then 49500 else order_amount end) - order_amount from sa_order so - inner join( - select * from cu_member + select a.pk_member, + COALESCE(a.order_amount, 0) day_achieve, + COALESCE(b.pur_real_subtotal, 0) day_bonus, + COALESCE(ROUND(b.pur_real_subtotal / a.order_amount * 100, 2), 0) yes_day_ratio + from ( + select #{item} pk_member, sum(order_amount) order_amount + from ( + select so.pk_member, order_achieve, order_amount + from sa_order so + inner join ( + select pk_id, del_flag from cu_member start with pk_id= #{item} - connect by pk_place_parent =prior pk_id + connect by pk_place_parent = prior pk_id ) cu - on cu.pk_id=so.pk_member - where so.order_status = 1 and so.del_flag=0 and so.order_achieve>0 and so.pk_country=1 - and so.order_type in(3,23,26) - and so.pay_time >= #{bonusExpandParam.startDate,jdbcType=DATE} - and so.pay_time < #{bonusExpandParam.endDate,jdbcType=DATE})) a - inner join( - select #{item} pk_member,nvl(sum(repur_real_subtotal),0) pur_real_subtotal from ${tableName} cb - inner join( + on cu.pk_id = so.pk_member + where so.del_flag = 0 and so.order_status = 1 + and so.order_type in (1, 2, 24, 25) and so.pk_country = 1 + and so.pay_time >= #{bonusExpandParam.startDate, jdbcType = DATE} + and so.pay_time < #{bonusExpandParam.endDate, jdbcType = DATE} ) + ) a + inner join ( + select #{item} pk_member, nvl(sum(pur_real_subtotal), 0) pur_real_subtotal + from ${tableName} cb + inner join ( select * from cu_member - start with pk_id=#{item} + start with pk_id = #{item} connect by pk_place_parent =prior pk_id ) cu on cu.pk_id = cb.pk_member - where period between #{bonusExpandParam.startPeriod} and #{bonusExpandParam.endPeriod} and cb.del_flag=0 and - cb.pk_country=1 + where + period between #{bonusExpandParam.startPeriod} and #{bonusExpandParam.endPeriod} + and cb.del_flag = 0 + and cb.pk_country = 1 ) b - on a.pk_member=b.pk_member + on a.pk_member = b.pk_member join cu_member cm - on cm.pk_id=a.pk_member - join bd_currency bc - on bc.pk_country=cm.pk_settle_country and bc.del_flag=0 + on cm.pk_id = a.pk_member - - select a.pk_member,COALESCE(a.order_amount,0) day_achieve, - COALESCE(b.pur_real_subtotal*bc.out_exchange_rate,0) day_bonus, - COALESCE(ROUND(b.pur_real_subtotal*bc.out_exchange_rate/a.order_amount*100, 2),0) yes_day_ratio from( - select #{item} pk_member,sum(order_amount) order_amount from( - select so.pk_member,order_achieve,(case when order_amount>=198000 then 49500 else order_amount end) - order_amount from sa_order so - inner join( + select a.pk_member, + COALESCE(a.order_amount, 0) day_rep_achieve, + COALESCE(b.pur_real_subtotal, 0) day_rep_bonus, + COALESCE(ROUND(b.pur_real_subtotal / a.order_amount * 100, 2), 0) cur_day_rep_ratio + from( + select #{item} pk_member, sum(order_amount) order_amount + from ( + select so.pk_member, order_achieve, order_amount from sa_order so + inner join ( select * from cu_member - start with pk_id= #{item} - connect by pk_place_parent =prior pk_id + start with pk_id = #{item} + connect by pk_place_parent = prior pk_id ) cu - on cu.pk_id=so.pk_member - where so.order_status = 1 and so.del_flag=0 - and so.order_type in(1,2,24,25) and so.pk_country=1 + on cu.pk_id = so.pk_member + where so.del_flag = 0 and so.order_status = 1 + and so.order_achieve > 0 + and so.order_type in (3, 26) and so.pk_country = 1 and so.pay_time >= #{bonusExpandParam.startDate,jdbcType=DATE} - and so.pay_time < #{bonusExpandParam.endDate,jdbcType=DATE})) a - inner join( - select #{item} pk_member,nvl(sum(pur_real_subtotal+maker_real_subtotal),0) pur_real_subtotal from - ${tableName} cb + and so.pay_time < #{bonusExpandParam.endDate,jdbcType=DATE} ) + ) a inner join( + select #{item} pk_member, nvl(sum(repur_real_subtotal), 0) pur_real_subtotal + from ${tableName} cb + inner join ( select * from cu_member - start with pk_id=#{item} + start with pk_i = #{item} connect by pk_place_parent =prior pk_id ) cu on cu.pk_id = cb.pk_member - where period between #{bonusExpandParam.startPeriod} and #{bonusExpandParam.endPeriod} and cb.del_flag=0 and - cb.pk_country=1 + where period between #{bonusExpandParam.startPeriod} and #{bonusExpandParam.endPeriod} + and cb.del_flag = 0 + and cb.pk_country = 1 ) b - on a.pk_member=b.pk_member + on a.pk_member = b.pk_member join cu_member cm - on cm.pk_id=a.pk_member - join bd_currency bc - on bc.pk_country=cm.pk_settle_country and bc.del_flag=0 + on cm.pk_id = a.pk_member @@ -144,21 +154,21 @@