java-base-app/bd-business/bd-business-member/src/main/resources/mapper/member/statis/CuBonusVertexStatisMapper.xml

1012 lines
52 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hzs.member.statis.mapper.CuBonusVertexStatisMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.hzs.common.domain.member.statis.CuBonusVertexStatis">
<id column="PK_ID" property="pkId"/>
<result column="CREATION_TIME" property="creationTime"/>
<result column="PK_COUNTRY" property="pkCountry"/>
<result column="DEL_FLAG" property="delFlag"/>
<result column="STATIS_TYPE" property="statisType"/>
<result column="PERIOD" property="period"/>
<result column="START_DATE" property="startDate"/>
<result column="END_DATE" property="endDate"/>
<result column="MAIN_REG_AMOUNT" property="mainRegAmount"/>
<result column="MAIN_UP_AMOUNT" property="mainUpAmount"/>
<result column="MAIN_REPUR_AMOUNT" property="mainRepurAmount"/>
<result column="HIFANS_REG_AMOUNT" property="hifansRegAmount"/>
<result column="INTRODUCE_BONUS" property="introduceBonus"/>
<result column="ORG_BONUS" property="orgBonus"/>
<result column="LEADER_BONUS" property="leaderBonus"/>
<result column="SHARE_BONUS" property="shareBonus"/>
<result column="SERVICE_BONUS" property="serviceBonus"/>
<result column="HI_FUN_INCOME" property="hiFunIncome"/>
<result column="REPUR_RANGE_BONUS" property="repurRangeBonus"/>
<result column="REPUR_ORG_BONUS" property="repurOrgBonus"/>
<result column="MAIN_BONUS" property="mainBonus"/>
<result column="REPUR_BONUS" property="repurBonus"/>
<result column="PK_BD_VERTEX" property="pkBdVertex"/>
<result column="PK_TEAM_CODE" property="pkTeamCode"/>
<result column="HAI_FUN_INCOME" property="haiFunIncome"/>
<result column="GIFT_ORDER" property="giftOrder"/>
<result column="SPECIAL_REGISTER_AMOUNT" property="specialRegisterAmount"/>
<result column="SPECIAL_UPGRADE_AMOUNT" property="specialUpgradeAmount"/>
<result column="CLOUD_COLLEGE_AMOUNT" property="cloudCollegeAmount"/>
<result column="MALL_AMOUNT" property="mallAmount"/>
<result column="MAKER_GIFT_AMOUNT" property="makerGiftAmount"/>
<result column="EMPOWERMENT_GIFT_AMOUNT" property="empowermentGiftAmount"/>
<result column="COOPERATE_AMOUNT" property="cooperateAmount"/>
<result column="SPECIAL_REPURCHASE_AMOUNT" property="specialRepurchaseAmount"/>
<result column="HAI_FUN_UPGRADE_AMOUNT" property="haiFunUpgradeAmount"/>
<result column="REPUR_PUSH_INCOME" property="repurPushIncome"/>
<result column="MAKER_DIRECT" property="makerDirect"/>
<result column="MAKER_SHARE" property="makerShare"/>
<result column="THIRD_ORDER" property="thirdOrder"/>
<result column="FICTITIOUS_AMOUNT" property="fictitiousAmount"/>
<result column="MAKER_ORDER" property="makerOrder"/>
<result column="WELFARE_ORDER" property="welfareOrder"/>
<result column="MAIN_REG_PV" property="mainRegPv"/>
<result column="MAIN_UP_PV" property="mainUpPv"/>
<result column="MAIN_REPUR_PV" property="mainRepurPv"/>
<result column="SPECIAL_REGISTER_PV" property="specialRegisterPv"/>
<result column="SPECIAL_UPGRADE_PV" property="specialUpgradePv"/>
<result column="SPECIAL_REPURCHASE_PV" property="specialRepurchasePv"/>
<result column="FICTITIOUS_PV" property="fictitiousPv"/>
<result column="HIFANS_REG_PV" property="hifansRegPv"/>
<result column="HAI_FUN_UPGRADE_PV" property="haiFunUpgradePv"/>
<result column="CLOUD_COLLEGE_PV" property="cloudCollegePv"/>
<result column="MALL_PV" property="mallPv"/>
<result column="EMPOWERMENT_GIFT_PV" property="empowermentGiftPv"/>
<result column="COOPERATE_PV" property="cooperatePv"/>
<result column="MAKER_ORDER_PV" property="makerOrderPv"/>
<result column="MAKER_GIFT_PV" property="makerGiftPv"/>
<result column="WELFARE_ORDER_PV" property="welfareOrderPv"/>
</resultMap>
<!-- 奖金拨比列表-->
<select id="queryCuBonusStatis" parameterType="com.hzs.member.statis.vo.CuBonusVertexStatisVO"
resultType="com.hzs.member.statis.vo.CuBonusVertexStatisVO">
SELECT
cbs.PK_BD_VERTEX pkVertex,
cbs.PK_TEAM_CODE pkTeamCode,
cm.MEMBER_CODE as memberCode,
cm.MEMBER_NAME as memberName,
cbs.PK_ID pkId,
cbs.PERIOD period,
cbs.CREATION_TIME creationTime,
cbs.PK_COUNTRY pkCountry,
<!-- PV字段 -->
cbs.MAIN_REG_PV mainRegPv,
cbs.MAIN_UP_PV mainUpPv,
cbs.MAIN_REPUR_PV mainRepurPv,
cbs.SPECIAL_REGISTER_PV specialRegisterPv,
cbs.SPECIAL_UPGRADE_PV specialUpgradePv,
cbs.SPECIAL_REPURCHASE_PV specialRepurchasePv,
cbs.FICTITIOUS_PV fictitiousPv,
cbs.HIFANS_REG_PV hifansRegPv,
cbs.HAI_FUN_UPGRADE_PV haiFunUpgradePv,
cbs.MALL_PV mallPv,
cbs.COOPERATE_PV cooperatePv,
cbs.WELFARE_ORDER_PV welfareOrderPv,
<!-- 金额字段 -->
cbs.main_reg_amount mainRegAmount,
cbs.main_up_amount mainUpAmount,
cbs.main_repur_amount mainRepurAmount,
cbs.special_register_amount,
cbs.special_upgrade_amount,
cbs.special_repurchase_amount,
<!-- 奖金字段 -->
cbs.introduce_bonus introduceBonus,
cbs.org_bonus orgBonus,
cbs.leader_bonus leaderBonus,
cbs.service_bonus serviceBonus,
cbs.repur_range_bonus repurRangeBonus,
cbs.repur_org_bonus repurOrgBonus,
cbs.repur_leader_bonus repurLeaderBonus,
<!-- 首购相关收益占比,页面未使用
CASE WHEN (cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT)=0 THEN 0 ELSE
ROUND(#{perCent}*cbs.INTRODUCE_BONUS/(cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT),4) end as introduceBonusRate,
CASE WHEN (cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT)=0 THEN 0 ELSE
ROUND(#{perCent}*cbs.ORG_BONUS/(cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT),4) end as orgBonusRate,
CASE WHEN (cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT)=0 THEN 0 ELSE
ROUND(#{perCent}*cbs.LEADER_BONUS/(cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT),4) end leaderBonusRate,
CASE WHEN (cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT)=0 THEN 0 ELSE
ROUND(#{perCent}*cbs.SHARE_BONUS/(cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT),4) end shareBonusRate,
CASE WHEN (cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT)=0 THEN 0 ELSE
ROUND(#{perCent}*cbs.SERVICE_BONUS/(cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT),4) end serviceBonusRate,
-->
<!-- 首购金额 = 注册 + 升级 + 特殊注册 + 特殊升级 + 虚拟订单(空单) -->
(cbs.MAIN_REG_AMOUNT + cbs.MAIN_UP_AMOUNT + cbs.SPECIAL_REGISTER_AMOUNT + cbs.SPECIAL_UPGRADE_AMOUNT + cbs.FICTITIOUS_AMOUNT)
AS firstPurchaseAll,
<!-- 复购金额 = 复购 + 直播 + 合作 + 特殊复购 + 福利订单 -->
(cbs.MAIN_REPUR_AMOUNT + cbs.MALL_AMOUNT + cbs.COOPERATE_AMOUNT + cbs.SPECIAL_REPURCHASE_AMOUNT + cbs.WELFARE_ORDER)
AS repurchaseAllAmount,
<!-- 首购拨出金额 = 直推收益 + 拓展收益 + 辅导收益 + 服务补贴 -->
(cbs.INTRODUCE_BONUS + cbs.ORG_BONUS + cbs.LEADER_BONUS + cbs.SERVICE_BONUS)
AS mainBonus,
<!-- 首购拨出比例 = 首购金额为0首购拨出比例 = 0否则首购拨出比例 = 100 * 首购拨出金额 / 首购金额 -->
case
WHEN (cbs.MAIN_REG_AMOUNT + cbs.MAIN_UP_AMOUNT + cbs.SPECIAL_REGISTER_AMOUNT + cbs.SPECIAL_UPGRADE_AMOUNT + cbs.FICTITIOUS_AMOUNT) = 0
THEN 0
ELSE ROUND((#{perCent} * (cbs.INTRODUCE_BONUS + cbs.ORG_BONUS + cbs.LEADER_BONUS + cbs.SERVICE_BONUS))
/ (cbs.MAIN_REG_AMOUNT + cbs.MAIN_UP_AMOUNT + cbs.SPECIAL_REGISTER_AMOUNT + cbs.SPECIAL_UPGRADE_AMOUNT + cbs.FICTITIOUS_AMOUNT), 4)
end AS mainBonusRate,
<!-- 首购PV拨出比例 = 首购PV为0首购PV拨出比例 = 0否则首购PV拨出比例 = 100 * 首购拨出金额 / 汇率 / 首购PV -->
case
WHEN (cbs.MAIN_REG_PV + cbs.MAIN_UP_PV + cbs.SPECIAL_REGISTER_PV + cbs.SPECIAL_UPGRADE_PV + cbs.FICTITIOUS_PV) = 0
THEN 0
ELSE ROUND((#{perCent} * (cbs.INTRODUCE_BONUS + cbs.ORG_BONUS + cbs.LEADER_BONUS + cbs.SERVICE_BONUS))
/ #{rate} / (cbs.MAIN_REG_PV + cbs.MAIN_UP_PV + cbs.SPECIAL_REGISTER_PV + cbs.SPECIAL_UPGRADE_PV + cbs.FICTITIOUS_PV), 4)
end AS mainBonusPvRate,
<!-- 复购拨出金额 = 复购级差收益 + 复购拓展收益 + 复购推荐收益 + 复购辅导收益 -->
(cbs.REPUR_RANGE_BONUS + cbs.REPUR_ORG_BONUS + cbs.REPUR_PUSH_INCOME + cbs.REPUR_LEADER_BONUS)
AS repurBonus,
<!-- 复购拨出比例 = 复购金额为0复购拨出比例 = 0否则复购拨出比例 = 100 * 复购拨出金额 / 复购金额 -->
case
WHEN (cbs.MAIN_REPUR_AMOUNT + cbs.MALL_AMOUNT + cbs.COOPERATE_AMOUNT + cbs.SPECIAL_REPURCHASE_AMOUNT + cbs.WELFARE_ORDER) = 0
THEN 0
ELSE ROUND(#{perCent} * (cbs.REPUR_RANGE_BONUS + cbs.REPUR_ORG_BONUS + cbs.REPUR_PUSH_INCOME + cbs.REPUR_LEADER_BONUS)
/ (cbs.MAIN_REPUR_AMOUNT + cbs.MALL_AMOUNT + cbs.COOPERATE_AMOUNT + cbs.SPECIAL_REPURCHASE_AMOUNT + cbs.WELFARE_ORDER), 4)
end AS repurBonusRate,
<!-- 复购PV拨出比例 = 复购PV为0复购PV拨出比例 = 0否则复购PV拨出比例 = 100 * 首购拨出金额 / 汇率 / 首购PV -->
case
WHEN (cbs.MAIN_REPUR_PV + cbs.MALL_PV + cbs.COOPERATE_PV + cbs.SPECIAL_REPURCHASE_PV + cbs.WELFARE_ORDER_PV) = 0
THEN 0
ELSE ROUND(#{perCent} * (cbs.REPUR_RANGE_BONUS + cbs.REPUR_ORG_BONUS + cbs.REPUR_PUSH_INCOME + cbs.REPUR_LEADER_BONUS)
/ #{rate} / (cbs.MAIN_REPUR_PV + cbs.MALL_PV +cbs.COOPERATE_PV + cbs.SPECIAL_REPURCHASE_PV + cbs.WELFARE_ORDER_PV), 4)
end AS repurBonusPvRate,
<!-- 总拨出金额 = 直推收益 + 拓展收益 + 辅导收益 + 服务补贴 + 复购级差收益 + 复购拓展收益 + 复购推荐收益 + 复购辅导收益 -->
(cbs.INTRODUCE_BONUS + cbs.ORG_BONUS + cbs.LEADER_BONUS + cbs.SERVICE_BONUS
+ cbs.REPUR_RANGE_BONUS + cbs.REPUR_ORG_BONUS + cbs.REPUR_PUSH_INCOME + cbs.REPUR_LEADER_BONUS)
AS totalBonus,
<!-- 总拨出比例 = 首购 + 复购金额为0总拨出比例 = 0否则总拨出比例 = 100 * 首购 + 复购拨出金额 / 首购 + 复购金额 -->
CASE
WHEN (cbs.MAIN_REG_AMOUNT + cbs.MAIN_UP_AMOUNT + cbs.SPECIAL_REGISTER_AMOUNT + cbs.SPECIAL_UPGRADE_AMOUNT + cbs.FICTITIOUS_AMOUNT
+ cbs.MAIN_REPUR_AMOUNT + cbs.MALL_AMOUNT + cbs.COOPERATE_AMOUNT + cbs.SPECIAL_REPURCHASE_AMOUNT +cbs.WELFARE_ORDER) = 0
THEN 0
ELSE ROUND (#{perCent} * (cbs.INTRODUCE_BONUS + cbs.ORG_BONUS + cbs.LEADER_BONUS + cbs.SERVICE_BONUS
+ cbs.REPUR_RANGE_BONUS + cbs.REPUR_ORG_BONUS + cbs.REPUR_PUSH_INCOME + cbs.REPUR_LEADER_BONUS)
/ (cbs.MAIN_REG_AMOUNT + cbs.MAIN_UP_AMOUNT + cbs.SPECIAL_REGISTER_AMOUNT + cbs.SPECIAL_UPGRADE_AMOUNT + cbs.FICTITIOUS_AMOUNT
+ cbs.MAIN_REPUR_AMOUNT + cbs.MALL_AMOUNT + cbs.COOPERATE_AMOUNT + cbs.SPECIAL_REPURCHASE_AMOUNT + cbs.WELFARE_ORDER), 4)
end AS totalBonusRate
FROM CU_BONUS_VERTEX_STATIS cbs
LEFT JOIN CU_MEMBER cm ON cm.PK_ID = cbs.PK_BD_VERTEX AND cm.DEL_FLAG = 0
WHERE 1 = 1
<if test="pkCountry != null">
and cbs.PK_COUNTRY = #{pkCountry}
</if>
<if test="pkVertex != null ">
and cbs.PK_BD_VERTEX =#{pkVertex}
</if>
<if test="startDate != null and startDate != '' ">
and cbs.CREATION_TIME >= to_date(#{startDate}, 'yyyy-mm-dd')
</if>
<if test="endDate != null and endDate != '' ">
and cbs.CREATION_TIME &lt;= to_date(#{endDate} || ' 23:59:59', 'yyyy-mm-dd hh24:mi:ss')
</if>
ORDER BY cbs.CREATION_TIME asc
</select>
<!-- 查询顶点拓展封顶人数-->
<select id="queryOrgTopNumber" parameterType="com.hzs.member.statis.vo.CuBonusVertexStaticTotalVO"
resultType="com.hzs.member.statis.vo.CuBonusVertexStaticTotalVO">
SELECT COUNT(cb.pk_id) orgTopNumber,
#{pkVertex} pkVertex
FROM cu_member_bonus cb
INNER JOIN (
SELECT pk_id, pk_settle_grade
FROM cu_member cm
START WITH cm.pk_id=#{pkVertex}
CONNECT BY PRIOR pk_id = pk_place_parent
) a ON a.pk_id = cb.pk_member
INNER JOIN bd_grade bg ON bg.pk_id = a.pk_settle_grade AND bg.del_flag = 0
INNER JOIN cu_member_settle_period cp ON cb.period = cp.pk_id
WHERE cb.del_flag = 0
AND cp.del_flag = 0
<if test="startDate!=null and startDate!='' ">
and cp.settle_date >= to_date(#{startDate}, 'yyyy-mm-dd')
</if>
<if test="endDate!=null and endDate!='' ">
and cp.settle_date &lt;= to_date(#{endDate} || ' 23:59:59', 'yyyy-mm-dd hh24:mi:ss')
</if>
AND (cb.expand_income + cb.repur_expand_income) >= bg.expand_capping
and (cb.expand_income + cb.repur_expand_income) != 0
</select>
<!-- 查询顶点拓展平均碰次和拓展最高碰次-->
<select id="queryTouch" parameterType="com.hzs.member.statis.vo.CuBonusVertexStaticTotalVO"
resultType="com.hzs.member.statis.vo.CuBonusVertexStaticTotalVO">
SELECT
cm.pk_id pkVertex,
round(sum(expand_touch) / count(pk_order), 2) orgAvTouch,
max(expand_touch) orgMaxTouch
FROM (
SELECT #{pkVertex} pkVertex, b.*
FROM (
SELECT
cd.pk_order,
max(expand_touch) expand_touch
FROM cu_member_bonus cb
INNER JOIN cu_member_bonus_expand cd ON cb.pk_id = cd.pk_bonus
INNER JOIN (
SELECT * FROM cu_member cm
START WITH cm.pk_id = #{pkVertex}
CONNECT BY pk_place_parent = PRIOR pk_id
) a ON a.pk_id = cb.pk_member
INNER JOIN cu_member_settle_period cp ON cb.period = cp.pk_id
WHERE
cb.del_flag = 0
AND cp.del_flag = 0
AND cd.del_flag = 0
<if test="startDate!=null and startDate!='' ">
and cp.settle_date >= to_date(#{startDate}, 'yyyy-mm-dd')
</if>
<if test="endDate!=null and endDate!='' ">
and cp.settle_date &lt;= to_date(#{endDate} || ' 23:59:59', 'yyyy-mm-dd hh24:mi:ss')
</if>
GROUP BY cd.pk_order
) b
) a
INNER JOIN cu_member cm ON a.pkVertex = cm.pk_id
LEFT JOIN bd_vertex bv ON cm.pk_vertex = bv.pk_id
GROUP BY
cm.pk_id, cm.member_name, bv.vertex_name
</select>
<!-- 奖金拨比列表统计小计(最后一行)-->
<select id="queryCuBonusSumStatis" parameterType="com.hzs.member.statis.vo.CuBonusVertexStatisVO"
resultType="com.hzs.member.statis.vo.CuBonusVertexStatisVO">
SELECT
<!-- 金额字段 -->
sum (cbs.main_reg_amount) mainRegAmountSum,
sum (cbs.main_up_amount) mainUpAmountSum,
sum (cbs.main_repur_amount) mainRepurAmountSum,
sum (cbs.special_register_amount) specialRegisterAmountSum,
sum (cbs.special_upgrade_amount) specialUpgradeAmountSum,
sum (cbs.special_repurchase_amount) specialRepurchaseAmountSum,
<!-- 奖金字段 -->
sum (cbs.INTRODUCE_BONUS) introduceBonusSum,
sum (cbs.ORG_BONUS) orgBonusSum,
sum (cbs.LEADER_BONUS) leaderBonusSum,
sum (cbs.SERVICE_BONUS) serviceBonusSum,
sum (cbs.REPUR_RANGE_BONUS) repurRangeBonusSum,
sum (cbs.REPUR_ORG_BONUS) repurOrgBonusSum,
sum (cbs.REPUR_LEADER_BONUS) repurLeaderBonusSum,
<!-- 首购相关收益占比,页面未使用
CASE WHEN (sum(cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT))=0 THEN 0 ELSE
ROUND(sum(#{perCent}*cbs.INTRODUCE_BONUS)/(sum(cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT)),4) end as introduceBonusRateSum,
CASE WHEN (sum(cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT))=0 THEN 0 ELSE
ROUND(sum(#{perCent}*cbs.ORG_BONUS)/(sum(cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT)),4) end as orgBonusRateSum,
CASE WHEN (sum(cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT))=0 THEN 0 ELSE
ROUND(sum(#{perCent}*cbs.LEADER_BONUS)/(sum(cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT)),4) end leaderBonusRateSum,
CASE WHEN (sum(cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT))=0 THEN 0 ELSE
ROUND(sum(#{perCent}*cbs.SHARE_BONUS)/(sum(cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT)),4) end shareBonusRateSum,
CASE WHEN (sum(cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT))=0 THEN 0 ELSE
ROUND(sum(#{perCent}*cbs.SERVICE_BONUS)/(sum(cbs.MAIN_REG_AMOUNT+cbs.MAIN_UP_AMOUNT)),4) end serviceBonusRateSum,
-->
sum (cbs.MAIN_REG_AMOUNT + cbs.MAIN_UP_AMOUNT + cbs.SPECIAL_REGISTER_AMOUNT + cbs.SPECIAL_UPGRADE_AMOUNT + cbs.FICTITIOUS_AMOUNT)
AS firstPurchaseAllSum,
sum (cbs.MAIN_REPUR_AMOUNT + cbs.MALL_AMOUNT + cbs.COOPERATE_AMOUNT + cbs.SPECIAL_REPURCHASE_AMOUNT + cbs.WELFARE_ORDER)
AS repurchaseAllAmountSum,
sum (cbs.INTRODUCE_BONUS + cbs.ORG_BONUS + cbs.LEADER_BONUS + cbs.SERVICE_BONUS)
AS mainBonusSum,
case
WHEN sum(cbs.MAIN_REG_AMOUNT + cbs.MAIN_UP_AMOUNT + cbs.SPECIAL_REGISTER_AMOUNT + cbs.SPECIAL_UPGRADE_AMOUNT + cbs.FICTITIOUS_AMOUNT) = 0
THEN 0
ELSE ROUND(#{perCent} * sum(cbs.INTRODUCE_BONUS + cbs.ORG_BONUS + cbs.LEADER_BONUS + cbs.SERVICE_BONUS)
/ sum(cbs.MAIN_REG_AMOUNT + cbs.MAIN_UP_AMOUNT + cbs.SPECIAL_REGISTER_AMOUNT + cbs.SPECIAL_UPGRADE_AMOUNT + cbs.FICTITIOUS_AMOUNT), 4)
end AS mainBonusRateSum,
case
WHEN sum(cbs.MAIN_REG_PV + cbs.MAIN_UP_PV + cbs.SPECIAL_REGISTER_PV + cbs.SPECIAL_UPGRADE_PV + cbs.FICTITIOUS_PV) = 0
THEN 0
ELSE ROUND(#{perCent} * sum(cbs.INTRODUCE_BONUS + cbs.ORG_BONUS + cbs.LEADER_BONUS + cbs.SERVICE_BONUS)
/ #{rate} / sum(cbs.MAIN_REG_PV + cbs.MAIN_UP_PV + cbs.SPECIAL_REGISTER_PV + cbs.SPECIAL_UPGRADE_PV + cbs.FICTITIOUS_PV), 4)
end AS mainBonusPvRateSum,
sum(cbs.REPUR_RANGE_BONUS + cbs.REPUR_ORG_BONUS + cbs.REPUR_PUSH_INCOME + cbs.REPUR_LEADER_BONUS) AS repurBonusSum,
case
WHEN sum(cbs.MAIN_REPUR_AMOUNT + cbs.MALL_AMOUNT + cbs.COOPERATE_AMOUNT + cbs.SPECIAL_REPURCHASE_AMOUNT + cbs.WELFARE_ORDER) = 0
THEN 0
ELSE ROUND(#{perCent} * sum(cbs.REPUR_RANGE_BONUS + cbs.REPUR_ORG_BONUS + cbs.REPUR_PUSH_INCOME + cbs.REPUR_LEADER_BONUS)
/ sum(cbs.MAIN_REPUR_AMOUNT + cbs.MALL_AMOUNT + cbs.COOPERATE_AMOUNT + cbs.SPECIAL_REPURCHASE_AMOUNT + cbs.WELFARE_ORDER), 4)
end AS repurBonusRateSum,
case
WHEN sum(cbs.MAIN_REPUR_PV + cbs.MALL_PV + cbs.COOPERATE_PV + cbs.SPECIAL_REPURCHASE_PV + cbs.WELFARE_ORDER_PV) = 0
THEN 0
ELSE ROUND(#{perCent} * sum(cbs.REPUR_RANGE_BONUS + cbs.REPUR_ORG_BONUS + cbs.REPUR_PUSH_INCOME + cbs.REPUR_LEADER_BONUS)
/ #{rate} / sum(cbs.MAIN_REPUR_PV + cbs.MALL_PV +cbs.COOPERATE_PV + cbs.SPECIAL_REPURCHASE_PV + cbs.WELFARE_ORDER_PV), 4)
end AS repurBonusPvRateSum,
sum(cbs.INTRODUCE_BONUS + cbs.ORG_BONUS + cbs.LEADER_BONUS + cbs.SERVICE_BONUS
+ cbs.REPUR_RANGE_BONUS + cbs.REPUR_ORG_BONUS + cbs.REPUR_PUSH_INCOME + cbs.REPUR_LEADER_BONUS)
AS totalBonusSum,
CASE
WHEN sum(cbs.MAIN_REG_AMOUNT + cbs.MAIN_UP_AMOUNT + cbs.SPECIAL_REGISTER_AMOUNT + cbs.SPECIAL_UPGRADE_AMOUNT + cbs.FICTITIOUS_AMOUNT
+ cbs.MAIN_REPUR_AMOUNT + cbs.MALL_AMOUNT + cbs.COOPERATE_AMOUNT + cbs.SPECIAL_REPURCHASE_AMOUNT +cbs.WELFARE_ORDER) = 0
THEN 0
ELSE ROUND (#{perCent} * sum(cbs.INTRODUCE_BONUS + cbs.ORG_BONUS + cbs.LEADER_BONUS + cbs.SERVICE_BONUS
+ cbs.REPUR_RANGE_BONUS + cbs.REPUR_ORG_BONUS + cbs.REPUR_PUSH_INCOME + cbs.REPUR_LEADER_BONUS)
/ sum(cbs.MAIN_REG_AMOUNT + cbs.MAIN_UP_AMOUNT + cbs.SPECIAL_REGISTER_AMOUNT + cbs.SPECIAL_UPGRADE_AMOUNT + cbs.FICTITIOUS_AMOUNT
+ cbs.MAIN_REPUR_AMOUNT + cbs.MALL_AMOUNT + cbs.COOPERATE_AMOUNT + cbs.SPECIAL_REPURCHASE_AMOUNT + cbs.WELFARE_ORDER), 4)
end AS totalBonusRateSum
FROM CU_BONUS_VERTEX_STATIS cbs
LEFT JOIN CU_MEMBER cm ON cm.PK_ID = cbs.PK_BD_VERTEX AND cm.DEL_FLAG = 0
WHERE 1 = 1
<if test="pkCountry != null">
and cbs.PK_COUNTRY = #{pkCountry}
</if>
<if test="pkVertex != null ">
and cbs.PK_BD_VERTEX = #{pkVertex}
</if>
<if test="startDate!=null and startDate!='' ">
and cbs.CREATION_TIME >= to_date(#{startDate}, 'yyyy-mm-dd')
</if>
<if test="endDate!=null and endDate!='' ">
and cbs.CREATION_TIME &lt;= to_date(#{endDate} || ' 23:59:59', 'yyyy-mm-dd hh24:mi:ss')
</if>
</select>
<!-- 查询顶点奖金拨比汇总-->
<select id="queryCuBonusStatisTotal" parameterType="com.hzs.member.statis.vo.CuBonusVertexStaticTotalVO"
resultType="com.hzs.member.statis.vo.CuBonusVertexStaticTotalVO">
select * from(
SELECT
cbs.PK_BD_VERTEX pkVertex,
cm.MEMBER_CODE as memberCode,
cm.MEMBER_NAME as memberName,
sum (cbs.INTRODUCE_BONUS) introduceBonus,
sum (cbs.ORG_BONUS) orgBonus,
sum (cbs.LEADER_BONUS) leaderBonus,
sum (cbs.SERVICE_BONUS) serviceBonus,
sum (cbs.REPUR_RANGE_BONUS) repurRangeBonus,
sum (cbs.REPUR_ORG_BONUS) repurOrgBonus,
sum (cbs.REPUR_LEADER_BONUS) repurLeaderBonus,
<!-- 首购相关 -->
sum(cbs.MAIN_REG_AMOUNT + cbs.MAIN_UP_AMOUNT + cbs.SPECIAL_REGISTER_AMOUNT + cbs.SPECIAL_UPGRADE_AMOUNT + cbs.FICTITIOUS_AMOUNT)
AS firstPurchaseAll,
sum(cbs.INTRODUCE_BONUS + cbs.ORG_BONUS + cbs.LEADER_BONUS + cbs.SERVICE_BONUS)
AS mainBonus,
case
WHEN sum(cbs.MAIN_REG_AMOUNT + cbs.MAIN_UP_AMOUNT + cbs.SPECIAL_REGISTER_AMOUNT + cbs.SPECIAL_UPGRADE_AMOUNT + cbs.FICTITIOUS_AMOUNT) = 0
THEN 0
ELSE ROUND(#{perCent} * sum(cbs.INTRODUCE_BONUS + cbs.ORG_BONUS + cbs.LEADER_BONUS + cbs.SERVICE_BONUS)
/ sum(cbs.MAIN_REG_AMOUNT + cbs.MAIN_UP_AMOUNT + cbs.SPECIAL_REGISTER_AMOUNT + cbs.SPECIAL_UPGRADE_AMOUNT + cbs.FICTITIOUS_AMOUNT), 4)
end AS mainBonusRate,
case
WHEN sum(cbs.MAIN_REG_PV + cbs.MAIN_UP_PV + cbs.SPECIAL_REGISTER_PV + cbs.SPECIAL_UPGRADE_PV + cbs.FICTITIOUS_PV) = 0
THEN 0
ELSE ROUND(#{perCent} * sum(cbs.INTRODUCE_BONUS + cbs.ORG_BONUS + cbs.LEADER_BONUS + cbs.SERVICE_BONUS)
/ #{rate} / sum(cbs.MAIN_REG_PV + cbs.MAIN_UP_PV + cbs.SPECIAL_REGISTER_PV + cbs.SPECIAL_UPGRADE_PV + cbs.FICTITIOUS_PV), 4)
end AS mainBonusPvRate,
<!-- 复购相关 -->
sum(cbs.MAIN_REPUR_AMOUNT + cbs.MALL_AMOUNT + cbs.COOPERATE_AMOUNT + cbs.SPECIAL_REPURCHASE_AMOUNT + cbs.WELFARE_ORDER)
AS repurchaseAllAmount,
sum(cbs.REPUR_RANGE_BONUS + cbs.REPUR_ORG_BONUS + cbs.REPUR_PUSH_INCOME + cbs.REPUR_LEADER_BONUS)
AS repurBonus,
case
WHEN sum(cbs.MAIN_REPUR_AMOUNT + cbs.MALL_AMOUNT + cbs.COOPERATE_AMOUNT + cbs.SPECIAL_REPURCHASE_AMOUNT + cbs.WELFARE_ORDER) = 0
THEN 0
ELSE ROUND(#{perCent} * sum(cbs.REPUR_RANGE_BONUS + cbs.REPUR_ORG_BONUS + cbs.REPUR_PUSH_INCOME + cbs.REPUR_LEADER_BONUS)
/ sum(cbs.MAIN_REPUR_AMOUNT + cbs.MALL_AMOUNT + cbs.COOPERATE_AMOUNT + cbs.SPECIAL_REPURCHASE_AMOUNT + cbs.WELFARE_ORDER), 4)
end AS repurBonusRate,
case
WHEN sum(cbs.MAIN_REPUR_PV + cbs.MALL_PV + cbs.COOPERATE_PV + cbs.SPECIAL_REPURCHASE_PV + cbs.WELFARE_ORDER_PV) = 0
THEN 0
ELSE ROUND(#{perCent} * sum(cbs.REPUR_RANGE_BONUS + cbs.REPUR_ORG_BONUS + cbs.REPUR_PUSH_INCOME + cbs.REPUR_LEADER_BONUS)
/ #{rate} / sum(cbs.MAIN_REPUR_PV + cbs.MALL_PV + cbs.COOPERATE_PV + cbs.SPECIAL_REPURCHASE_PV + cbs.WELFARE_ORDER_PV), 4)
end AS repurBonusPvRate
FROM CU_BONUS_VERTEX_STATIS cbs
LEFT JOIN CU_MEMBER cm ON cm.PK_ID = cbs.PK_BD_VERTEX and cm.del_flag = 0
WHERE 1 = 1
<if test="pkCountry != null">
and cbs.PK_COUNTRY = #{pkCountry}
</if>
<if test="pkVertex != null ">
and cbs.PK_BD_VERTEX = #{pkVertex}
</if>
<if test="startDate!=null and startDate!='' ">
and cbs.CREATION_TIME >= to_date(#{startDate}, 'yyyy-mm-dd')
</if>
<if test="endDate!=null and endDate!='' ">
and cbs.CREATION_TIME &lt;= to_date(#{endDate} || ' 23:59:59', 'yyyy-mm-dd hh24:mi:ss')
</if>
GROUP BY cbs.PK_BD_VERTEX, cm.MEMBER_CODE, cm.MEMBER_NAME
)
ORDER BY firstPurchaseAll desc, repurchaseAllAmount desc
</select>
<!-- 顶点奖金拨比汇总查询总和-->
<select id="queryCuBonusStatisSum" parameterType="com.hzs.member.statis.vo.CuBonusVertexStaticTotalVO"
resultType="com.hzs.member.statis.vo.CuBonusVertexStaticTotalVO">
SELECT
sum (cbs.INTRODUCE_BONUS) introduceBonus,
sum (cbs.ORG_BONUS) orgBonus,
sum (cbs.LEADER_BONUS) leaderBonus,
sum (cbs.SERVICE_BONUS) serviceBonus,
sum (cbs.REPUR_RANGE_BONUS) repurRangeBonus,
sum (cbs.REPUR_ORG_BONUS) repurOrgBonus,
sum (cbs.REPUR_LEADER_BONUS) repurLeaderBonus,
<!-- 首购相关 -->
sum(cbs.MAIN_REG_AMOUNT + cbs.MAIN_UP_AMOUNT + cbs.SPECIAL_REGISTER_AMOUNT + cbs.SPECIAL_UPGRADE_AMOUNT + cbs.FICTITIOUS_AMOUNT)
AS firstPurchaseAll,
sum(cbs.INTRODUCE_BONUS + cbs.ORG_BONUS + cbs.LEADER_BONUS + cbs.SERVICE_BONUS)
AS mainBonus,
case
WHEN sum(cbs.MAIN_REG_AMOUNT + cbs.MAIN_UP_AMOUNT + cbs.SPECIAL_REGISTER_AMOUNT + cbs.SPECIAL_UPGRADE_AMOUNT + cbs.FICTITIOUS_AMOUNT) = 0
THEN 0
ELSE ROUND(#{perCent} * sum(cbs.INTRODUCE_BONUS + cbs.ORG_BONUS + cbs.LEADER_BONUS + cbs.SERVICE_BONUS)
/ sum(cbs.MAIN_REG_AMOUNT + cbs.MAIN_UP_AMOUNT + cbs.SPECIAL_REGISTER_AMOUNT + cbs.SPECIAL_UPGRADE_AMOUNT + cbs.FICTITIOUS_AMOUNT), 4)
end AS mainBonusRate,
case
WHEN sum(cbs.MAIN_REG_PV + cbs.MAIN_UP_PV + cbs.SPECIAL_REGISTER_PV + cbs.SPECIAL_UPGRADE_PV + cbs.FICTITIOUS_PV) = 0
THEN 0
ELSE ROUND(#{perCent} * sum(cbs.INTRODUCE_BONUS + cbs.ORG_BONUS + cbs.LEADER_BONUS + cbs.SERVICE_BONUS)
/ #{rate} / sum(cbs.MAIN_REG_PV + cbs.MAIN_UP_PV + cbs.SPECIAL_REGISTER_PV + cbs.SPECIAL_UPGRADE_PV + cbs.FICTITIOUS_PV), 4)
end AS mainBonusPvRate,
<!-- 复购相关 -->
sum(cbs.MAIN_REPUR_AMOUNT + cbs.MALL_AMOUNT + cbs.COOPERATE_AMOUNT + cbs.SPECIAL_REPURCHASE_AMOUNT + cbs.WELFARE_ORDER)
AS repurchaseAllAmount,
sum(cbs.REPUR_RANGE_BONUS + cbs.REPUR_ORG_BONUS + cbs.REPUR_PUSH_INCOME + cbs.REPUR_LEADER_BONUS)
AS repurBonus,
case
WHEN sum(cbs.MAIN_REPUR_AMOUNT + cbs.MALL_AMOUNT + cbs.COOPERATE_AMOUNT + cbs.SPECIAL_REPURCHASE_AMOUNT + cbs.WELFARE_ORDER) = 0
THEN 0
ELSE ROUND(#{perCent} * sum(cbs.REPUR_RANGE_BONUS + cbs.REPUR_ORG_BONUS + cbs.REPUR_PUSH_INCOME + cbs.REPUR_LEADER_BONUS)
/ sum(cbs.MAIN_REPUR_AMOUNT + cbs.MALL_AMOUNT + cbs.COOPERATE_AMOUNT + cbs.SPECIAL_REPURCHASE_AMOUNT + cbs.WELFARE_ORDER), 4)
end AS repurBonusRate,
case
WHEN sum(cbs.MAIN_REPUR_PV + cbs.MALL_PV + cbs.COOPERATE_PV + cbs.SPECIAL_REPURCHASE_PV + cbs.WELFARE_ORDER_PV) = 0
THEN 0
ELSE ROUND(#{perCent} * sum(cbs.REPUR_RANGE_BONUS + cbs.REPUR_ORG_BONUS + cbs.REPUR_PUSH_INCOME + cbs.REPUR_LEADER_BONUS)
/ #{rate} / sum(cbs.MAIN_REPUR_PV + cbs.MALL_PV + cbs.COOPERATE_PV + cbs.SPECIAL_REPURCHASE_PV + cbs.WELFARE_ORDER_PV), 4)
end AS repurBonusPvRate,
<!-- 首购奖金占比 -->
case
WHEN sum(cbs.MAIN_REG_AMOUNT + cbs.MAIN_UP_AMOUNT + cbs.SPECIAL_REGISTER_AMOUNT + cbs.SPECIAL_UPGRADE_AMOUNT + cbs.FICTITIOUS_AMOUNT) = 0
THEN 0
ELSE ROUND(#{perCent} * sum(cbs.INTRODUCE_BONUS)
/ sum(cbs.MAIN_REG_AMOUNT + cbs.MAIN_UP_AMOUNT + cbs.SPECIAL_REGISTER_AMOUNT + cbs.SPECIAL_UPGRADE_AMOUNT + cbs.FICTITIOUS_AMOUNT), 4)
end AS introduceBonusRate,
case
WHEN sum(cbs.MAIN_REG_AMOUNT + cbs.MAIN_UP_AMOUNT + cbs.SPECIAL_REGISTER_AMOUNT + cbs.SPECIAL_UPGRADE_AMOUNT + cbs.FICTITIOUS_AMOUNT) = 0
THEN 0
ELSE ROUND(#{perCent} * sum(cbs.ORG_BONUS)
/ sum(cbs.MAIN_REG_AMOUNT + cbs.MAIN_UP_AMOUNT + cbs.SPECIAL_REGISTER_AMOUNT + cbs.SPECIAL_UPGRADE_AMOUNT + cbs.FICTITIOUS_AMOUNT), 4)
end AS orgBonusRate,
case
WHEN sum(cbs.MAIN_REG_AMOUNT + cbs.MAIN_UP_AMOUNT + cbs.SPECIAL_REGISTER_AMOUNT + cbs.SPECIAL_UPGRADE_AMOUNT + cbs.FICTITIOUS_AMOUNT) = 0
THEN 0
ELSE ROUND(#{perCent} * sum(cbs.LEADER_BONUS)
/ sum(cbs.MAIN_REG_AMOUNT + cbs.MAIN_UP_AMOUNT + cbs.SPECIAL_REGISTER_AMOUNT + cbs.SPECIAL_UPGRADE_AMOUNT + cbs.FICTITIOUS_AMOUNT), 4)
end AS leaderBonusRate,
case
WHEN sum(cbs.MAIN_REG_AMOUNT + cbs.MAIN_UP_AMOUNT + cbs.SPECIAL_REGISTER_AMOUNT + cbs.SPECIAL_UPGRADE_AMOUNT + cbs.FICTITIOUS_AMOUNT) = 0
THEN 0
ELSE ROUND(#{perCent} * sum(cbs.SERVICE_BONUS)
/ sum(cbs.MAIN_REG_AMOUNT + cbs.MAIN_UP_AMOUNT + cbs.SPECIAL_REGISTER_AMOUNT + cbs.SPECIAL_UPGRADE_AMOUNT + cbs.FICTITIOUS_AMOUNT), 4)
end AS serviceBonusRate,
<!-- 复购奖金占比 -->
case
WHEN sum(cbs.MAIN_REPUR_AMOUNT + cbs.MALL_AMOUNT + cbs.COOPERATE_AMOUNT + cbs.SPECIAL_REPURCHASE_AMOUNT + cbs.WELFARE_ORDER) = 0
THEN 0
ELSE ROUND(#{perCent} * sum(cbs.REPUR_RANGE_BONUS)
/ sum(cbs.MAIN_REPUR_AMOUNT + cbs.MALL_AMOUNT + cbs.COOPERATE_AMOUNT + cbs.SPECIAL_REPURCHASE_AMOUNT + cbs.WELFARE_ORDER), 4)
end AS repurRangeBonusRate,
case
WHEN sum(cbs.MAIN_REPUR_AMOUNT + cbs.MALL_AMOUNT + cbs.COOPERATE_AMOUNT + cbs.SPECIAL_REPURCHASE_AMOUNT + cbs.WELFARE_ORDER) = 0
THEN 0
ELSE ROUND(#{perCent} * sum(cbs.REPUR_ORG_BONUS)
/ sum(cbs.MAIN_REPUR_AMOUNT + cbs.MALL_AMOUNT + cbs.COOPERATE_AMOUNT + cbs.SPECIAL_REPURCHASE_AMOUNT + cbs.WELFARE_ORDER), 4)
end AS repurOrgBonusRate,
case
WHEN sum(cbs.MAIN_REPUR_AMOUNT + cbs.MALL_AMOUNT + cbs.COOPERATE_AMOUNT + cbs.SPECIAL_REPURCHASE_AMOUNT + cbs.WELFARE_ORDER) = 0
THEN 0
ELSE ROUND(#{perCent} * sum(cbs.REPUR_LEADER_BONUS)
/ sum(cbs.MAIN_REPUR_AMOUNT + cbs.MALL_AMOUNT + cbs.COOPERATE_AMOUNT + cbs.SPECIAL_REPURCHASE_AMOUNT + cbs.WELFARE_ORDER), 4)
end AS repurLeaderBonusRate
FROM CU_BONUS_VERTEX_STATIS cbs
LEFT JOIN CU_MEMBER cm ON cm.PK_ID = cbs.PK_BD_VERTEX and cm.del_flag = 0
WHERE 1 = 1
<if test="pkCountry != null">
and cbs.PK_COUNTRY= #{pkCountry}
</if>
<if test="pkVertex != null ">
and cbs.PK_BD_VERTEX = #{pkVertex}
</if>
<if test="startDate!=null and startDate!='' ">
and cbs.CREATION_TIME >= to_date(#{startDate}, 'yyyy-mm-dd')
</if>
<if test="endDate!=null and endDate!='' ">
and cbs.CREATION_TIME &lt;= to_date(#{endDate} || ' 23:59:59', 'yyyy-mm-dd hh24:mi:ss')
</if>
</select>
<!-- 查询时间内奖金拨比顶点会员-->
<select id="queryCuBonusVertex" parameterType="com.hzs.member.statis.vo.CuBonusVertexStaticTotalVO"
resultType="com.hzs.member.statis.vo.CuBonusVertexStaticTotalVO">
select cbs.PK_BD_VERTEX pkVertex
from CU_BONUS_VERTEX_STATIS cbs where 1=1
<if test="pkCountry != null">
and cbs.PK_COUNTRY=#{pkCountry}
</if>
<if test="pkVertex != null">
and cbs.PK_BD_VERTEX=#{pkVertex}
</if>
<if test="startDate!=null and startDate!='' ">
and cbs.CREATION_TIME >= to_date(#{startDate}, 'yyyy-mm-dd')
</if>
<if test="endDate!=null and endDate!='' ">
and cbs.CREATION_TIME &lt;= to_date(#{endDate} || ' 23:59:59', 'yyyy-mm-dd hh24:mi:ss')
</if>
GROUP BY cbs.PK_BD_VERTEX
</select>
<!-- 查询小于当天全部已支付或撤单订单信息-->
<select id="querySaOrderByLessDay" parameterType="com.hzs.member.statis.vo.CuBonusVertexStatisVO"
resultType="com.hzs.member.statis.vo.CuBonusVertexStatisVO">
select * from (
select
cm.pk_id pkMember,
#{pkVertex} pkVertex,
so.PK_COUNTRY pkCountry,
so.ORDER_TYPE orderType,
(so.ORDER_AMOUNT-nvl(so.CONSUME_AMOUNT,0)) orderAmount,
so.ORDER_ACHIEVE orderAchieve,
to_date(to_char(so.PAY_TIME, 'yyyy-mm-dd'),'yyyy-mm-dd') AS creationTime
from (
SELECT
cm.pk_id
FROM
cu_member cm
WHERE del_flag=0 and category=0
START WITH pk_place_parent =#{pkVertex}
CONNECT BY pk_place_parent = PRIOR pk_id
) cm
INNER JOIN SA_ORDER so on so.pk_member=cm.pk_id
where so.ORDER_TYPE in (1,2,3,4,5,6,7,10,12,13,14,18,19,20,22,24,25,26,27,28,31)
<if test="pkCountry != null">
and so.pk_country=#{pkCountry}
</if>
<if test="delFlag != null">
AND so.DEL_FLAG=#{delFlag}
</if>
<if test="orderStatus != null">
AND so.order_status=#{orderStatus}
</if>
<if test="startDate != null and startDate!='' ">
and so.PAY_TIME >= to_date(#{startDate}, 'yyyy-mm-dd')
</if>
<if test="endDate != null and endDate!='' ">
and so.PAY_TIME &lt;= to_date(#{endDate} || ' 23:59:59', 'yyyy-mm-dd hh24:mi:ss')
</if>
<if test="payTimeStr != null and payTimeStr!='' ">
AND so.PAY_TIME = to_date(#{payTimeStr}, 'YYYY-MM-dd')
</if>
)
</select>
<!-- 7天重算查询订单-->
<select id="queryAnewSaOrderByLessDay" parameterType="com.hzs.member.statis.vo.CuBonusVertexStatisVO"
resultType="com.hzs.member.statis.vo.CuBonusVertexStatisVO">
select * from (
select
cm.pk_Member pkMember,
#{pkVertex} pkVertex,
so.PK_COUNTRY pkCountry,
so.ORDER_TYPE orderType,
so.ORDER_AMOUNT orderAmount,
so.ORDER_ACHIEVE orderAchieve,
to_date(to_char(so.PAY_TIME, 'yyyy-mm-dd'), 'yyyy-mm-dd') AS creationTime
from (
SELECT pk_member
FROM ${settleTableName}
WHERE category = 0
start with pk_member = #{pkVertex}
connect by pk_place_parent = prior pk_member
) cm
INNER JOIN SA_ORDER so on so.pk_member = cm.pk_member
where so.ORDER_TYPE in (1, 2, 3, 13, 20, 24, 25, 26)
<if test="pkCountry != null">
and so.pk_country = #{pkCountry}
</if>
<if test="delFlag != null">
AND so.DEL_FLAG = #{delFlag}
</if>
<if test="orderStatus != null">
AND so.order_status = #{orderStatus}
</if>
<if test="startDate != null and startDate!='' ">
and so.PAY_TIME >= to_date(#{startDate}, 'yyyy-mm-dd')
</if>
<if test="endDate != null and endDate!='' ">
and so.PAY_TIME &lt;= to_date(#{endDate} || ' 23:59:59', 'yyyy-mm-dd hh24:mi:ss')
</if>
<if test="payTimeStr != null and payTimeStr!='' ">
AND so.PAY_TIME = to_date(#{payTimeStr}, 'YYYY-MM-dd')
</if>
)
</select>
<!-- 删除奖金拨比统计表数据-->
<delete id="delStatis">
delete from CU_BONUS_VERTEX_STATIS
where 1=1
<if test="pkVertexList!=null and pkVertexList.size> 0 ">
and PK_BD_VERTEX not in
<foreach collection="pkVertexList" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
<if test="startDate != null and startDate!='' ">
and CREATION_TIME >= to_date(#{startDate}, 'yyyy-mm-dd')
</if>
<if test="endDate != null and endDate!='' ">
and CREATION_TIME &lt;= to_date(#{endDate} || ' 23:59:59', 'yyyy-mm-dd hh24:mi:ss')
</if>
</delete>
<!-- 查询奖金扣项配置参数-->
<select id="bonusDeductlist" parameterType="com.hzs.member.statis.vo.CuBonusVertexStatisVO"
resultType="com.hzs.member.statis.vo.CuBonusVertexStatisVO">
select a.PK_ID,
b.PK_ID as pkId,
(a.BACK_RATIO+a.PLATFORM_RATIO)/100 backRatio
from BD_BONUS_ITEMS b
left JOIN BD_BONUS_DEDUCT a on a.PK_BONUS_ITEMS=b.PK_ID
where
b.DEL_FLAG =0
and a.BACK_RATIO>0
and a.PLATFORM_RATIO>0
<if test="pkCountry != null ">
AND b.PK_COUNTRY = #{pkCountry}
</if>
ORDER BY a.BACK_RATIO,a.PLATFORM_RATIO DESC
</select>
<!-- 查询生效国外国家-->
<select id="countrylist" parameterType="com.hzs.member.statis.vo.CuBonusVertexStatisVO"
resultType="com.hzs.member.statis.vo.CuBonusVertexStatisVO">
select pk_id as pkCountry
from BD_COUNTRY
where pk_id!=1 and del_flag = 0 and EFFECTIVE_DATE &lt;= sysdate
</select>
<!-- 查询有效顶点 -->
<select id="vertexList" parameterType="com.hzs.member.statis.vo.CuBonusVertexStatisVO"
resultType="com.hzs.member.statis.vo.CuBonusVertexStatisVO">
SELECT
m.pk_id as pkVertex,
m.MEMBER_CODE as memberCode,
m.MEMBER_NAME as memberName
FROM
cu_member m
WHERE
m.pk_place_parent = 2
AND m.del_flag = 0
AND m.category = 0
AND m.pk_country = 1
AND m.pay_status = 1
<if test="pkVertex != null">
AND m.pk_id = #{pkVertex}
</if>
ORDER BY m.pk_id ASC
</select>
<!-- 查询中国奖金-->
<select id="queryChinaCountryBonus" parameterType="com.hzs.member.statis.vo.CuBonusVertexStatisVO"
resultType="com.hzs.member.statis.vo.CuBonusVertexStatisVO">
select
#{pkCountry} pkCountry,sum(mbp.REAL_INCOME) realIncome,
mbp.PK_COUNTRY con,
bbi.BONUS_VALUE bonusType,
#{pkVertex} pkVertex,
to_date(to_char(so.PAY_TIME, 'yyyy-mm-dd'),'yyyy-mm-dd') AS creationTime
from cu_member_bonus_push mbp
INNER JOIN CU_MEMBER_BONUS cmb on mbp.PK_BONUS=cmb.pk_id
INNER join ( SELECT cm.pk_id FROM cu_member cm WHERE del_flag = 0 AND category = 0 START WITH pk_place_parent
=#{pkVertex} CONNECT BY pk_place_parent = PRIOR pk_id ) cm
on cm.pk_id = cmb.pk_member
inner join BD_BONUS_ITEMS bbi on bbi.pk_id=mbp.PK_BONUS_ITEMS
INNER JOIN sa_order so on so.pk_id=mbp.pk_order and so.PK_COUNTRY=#{pkCountry} and so.del_flag=0
where mbp.DEL_FLAG=0
and mbp.INCOME_STATUS=0
and bbi.BONUS_VALUE in (3,4,5,7,8,9,12,24,20,21,14,15,16,1)
<if test="startDate!=null and startDate!='' ">
and so.PAY_TIME >= to_date(#{startDate}, 'yyyy-mm-dd')
</if>
<if test="endDate!=null and endDate!='' ">
and so.PAY_TIME &lt;= to_date(#{endDate} || ' 23:59:59', 'yyyy-mm-dd hh24:mi:ss')
</if>
GROUP BY mbp.PK_COUNTRY,
bbi.BONUS_VALUE,
to_char(so.PAY_TIME, 'yyyy-mm-dd')
UNION ALL
select
#{pkCountry} pkCountry,sum(mbe.REAL_INCOME) realIncome,
mbe.PK_COUNTRY con,
bbi.BONUS_VALUE bonusType,
#{pkVertex} pkVertex,
to_date(to_char(so.PAY_TIME, 'yyyy-mm-dd'),'yyyy-mm-dd') AS creationTime
from CU_MEMBER_BONUS_EXPAND mbe
INNER JOIN CU_MEMBER_BONUS cmb on mbe.PK_BONUS=cmb.pk_id
INNER join ( SELECT cm.pk_id FROM cu_member cm WHERE del_flag = 0 AND category = 0 START WITH pk_place_parent
=#{pkVertex} CONNECT BY pk_place_parent = PRIOR pk_id ) cm
on cm.pk_id = cmb.pk_member
inner join BD_BONUS_ITEMS bbi on bbi.pk_id=mbe.PK_BONUS_ITEMS
INNER JOIN sa_order so on so.pk_id=mbe.pk_order and so.PK_COUNTRY=#{pkCountry} and so.del_flag=0
where mbe.DEL_FLAG=0
and mbe.INCOME_STATUS=0
and bbi.BONUS_VALUE in (3,4,5,7,8,9,12,24,20,21,14,15,16,1)
<if test="startDate!=null and startDate!='' ">
and so.PAY_TIME >= to_date(#{startDate}, 'yyyy-mm-dd')
</if>
<if test="endDate!=null and endDate!='' ">
and so.PAY_TIME &lt;= to_date(#{endDate} || ' 23:59:59', 'yyyy-mm-dd hh24:mi:ss')
</if>
GROUP BY mbe.PK_COUNTRY,
bbi.BONUS_VALUE,
to_char(so.PAY_TIME, 'yyyy-mm-dd')
UNION ALL
select
#{pkCountry} pkCountry,sum(mbc.REAL_INCOME) realIncome,
mbc.PK_COUNTRY con,
bbi.BONUS_VALUE bonusType,
#{pkVertex} pkVertex,
to_date(to_char(so.PAY_TIME, 'yyyy-mm-dd'),'yyyy-mm-dd') AS creationTime
from CU_MEMBER_BONUS_COACH mbc
INNER JOIN CU_MEMBER_BONUS cmb on mbc.PK_BONUS=cmb.pk_id
INNER join ( SELECT cm.pk_id FROM cu_member cm WHERE del_flag = 0 AND category = 0 START WITH pk_place_parent
=#{pkVertex} CONNECT BY pk_place_parent = PRIOR pk_id ) cm
on cm.pk_id = cmb.pk_member
inner join BD_BONUS_ITEMS bbi on bbi.pk_id=mbc.PK_BONUS_ITEMS
INNER JOIN sa_order so on so.pk_id=mbc.pk_order and so.PK_COUNTRY=#{pkCountry} and so.del_flag=0
where mbc.DEL_FLAG=0
and mbc.INCOME_STATUS=0
and bbi.BONUS_VALUE in (3,4,5,7,8,9,12,24,20,21,14,15,16,1)
<if test="startDate!=null and startDate!='' ">
and so.PAY_TIME >= to_date(#{startDate}, 'yyyy-mm-dd')
</if>
<if test="endDate!=null and endDate!='' ">
and so.PAY_TIME &lt;= to_date(#{endDate} || ' 23:59:59', 'yyyy-mm-dd hh24:mi:ss')
</if>
GROUP BY mbc.PK_COUNTRY,
bbi.BONUS_VALUE,
to_char(so.PAY_TIME, 'yyyy-mm-dd')
UNION ALL
select
#{pkCountry} pkCountry,sum(mbr.REAL_INCOME) realIncome,
mbr.PK_COUNTRY con,
bbi.BONUS_VALUE bonusType,
#{pkVertex} pkVertex,
to_date(to_char(so.PAY_TIME, 'yyyy-mm-dd'),'yyyy-mm-dd') AS creationTime
from cu_member_bonus_range mbr
INNER JOIN CU_MEMBER_BONUS cmb on mbr.PK_BONUS=cmb.pk_id
INNER join ( SELECT cm.pk_id FROM cu_member cm WHERE del_flag = 0 AND category = 0 START WITH pk_place_parent
=#{pkVertex} CONNECT BY pk_place_parent = PRIOR pk_id ) cm
on cm.pk_id = cmb.pk_member
inner join BD_BONUS_ITEMS bbi on bbi.pk_id=mbr.PK_BONUS_ITEMS
INNER JOIN sa_order so on so.pk_id=mbr.pk_order and so.PK_COUNTRY=#{pkCountry} and so.del_flag=0
where mbr.DEL_FLAG=0
and mbr.INCOME_STATUS=0
and bbi.BONUS_VALUE in (3,4,5,7,8,9,12,24,20,21,14,15,16,1)
<if test="startDate!=null and startDate!='' ">
and so.PAY_TIME >= to_date(#{startDate}, 'yyyy-mm-dd')
</if>
<if test="endDate!=null and endDate!='' ">
and so.PAY_TIME &lt;= to_date(#{endDate} || ' 23:59:59', 'yyyy-mm-dd hh24:mi:ss')
</if>
GROUP BY bbi.BONUS_VALUE,
mbr.PK_COUNTRY,
to_char(so.PAY_TIME, 'yyyy-mm-dd')
UNION ALL
select
#{pkCountry} pkCountry,sum(mbd.REAL_INCOME) realIncome,
mbd.PK_COUNTRY con,
bbi.BONUS_VALUE bonusType,
#{pkVertex} pkVertex,
to_date(to_char(so.PAY_TIME, 'yyyy-mm-dd'),'yyyy-mm-dd') AS creationTime
from cu_member_bonus_detail mbd
INNER JOIN CU_MEMBER_BONUS cmb on mbd.PK_BONUS=cmb.pk_id
INNER join ( SELECT cm.pk_id FROM cu_member cm WHERE del_flag = 0 AND category = 0 START WITH pk_place_parent
=#{pkVertex} CONNECT BY pk_place_parent = PRIOR pk_id ) cm
on cm.pk_id = cmb.pk_member
inner join BD_BONUS_ITEMS bbi on bbi.pk_id=mbd.PK_BONUS_ITEMS
INNER JOIN sa_order so on so.pk_id=mbd.pk_order and so.PK_COUNTRY=#{pkCountry} and so.del_flag=0
where mbd.DEL_FLAG=0
and mbd.INCOME_STATUS=0
and bbi.BONUS_VALUE in (3,4,5,7,8,9,12,24,20,21,14,15,16,1)
<if test="startDate!=null and startDate!='' ">
and so.PAY_TIME >= to_date(#{startDate}, 'yyyy-mm-dd')
</if>
<if test="endDate!=null and endDate!='' ">
and so.PAY_TIME &lt;= to_date(#{endDate} || ' 23:59:59', 'yyyy-mm-dd hh24:mi:ss')
</if>
GROUP BY bbi.BONUS_VALUE,
mbd.PK_COUNTRY,
to_char(so.PAY_TIME, 'yyyy-mm-dd')
</select>
<!-- 查询7天重算奖金查询-->
<select id="queryVertexChinaCountryBonus" parameterType="com.hzs.member.statis.vo.CuBonusVertexStatisVO"
resultType="com.hzs.member.statis.vo.CuBonusVertexStatisVO">
<!-- 直推收益 -->
select
#{pkCountry} pkCountry, mbp.PK_COUNTRY con,
sum(mbp.REAL_INCOME) realIncome,
bbi.BONUS_VALUE bonusType,
#{pkVertex} pkVertex,
to_date(to_char(so.PAY_TIME, 'yyyy-mm-dd'), 'yyyy-mm-dd') AS creationTime
from cu_member_bonus_push mbp
INNER JOIN CU_MEMBER_BONUS cmb on mbp.PK_BONUS = cmb.pk_id
INNER join (
SELECT pk_member
FROM ${settleTableName}
WHERE category = 0
start with pk_member = #{pkVertex}
connect by pk_place_parent = prior pk_member) cm
on cm.pk_member = cmb.pk_member
inner join BD_BONUS_ITEMS bbi on bbi.pk_id = mbp.PK_BONUS_ITEMS
INNER JOIN sa_order so on so.pk_id = mbp.pk_order
and so.PK_COUNTRY = #{pkCountry} and so.del_flag = 0
where mbp.DEL_FLAG = 0
and mbp.INCOME_STATUS = 0
and bbi.BONUS_VALUE in (1, 3, 4, 5, 7, 8, 9, 12, 14, 15, 16, 20, 21, 24, 25)
<if test="startDate!=null and startDate!='' ">
and so.PAY_TIME >= to_date(#{startDate}, 'yyyy-mm-dd')
</if>
<if test="endDate!=null and endDate!='' ">
and so.PAY_TIME &lt;= to_date(#{endDate} || ' 23:59:59', 'yyyy-mm-dd hh24:mi:ss')
</if>
GROUP BY mbp.PK_COUNTRY,
bbi.BONUS_VALUE,
to_char(so.PAY_TIME, 'yyyy-mm-dd')
UNION ALL
<!-- 拓展收益、消费拓展收益,收益状态:正常,延缓发放 -->
select
#{pkCountry} pkCountry, mbe.PK_COUNTRY con,
sum(mbe.REAL_INCOME) realIncome,
bbi.BONUS_VALUE bonusType,
#{pkVertex} pkVertex,
to_date(to_char(so.PAY_TIME, 'yyyy-mm-dd'),'yyyy-mm-dd') AS creationTime
from CU_MEMBER_BONUS_EXPAND mbe
INNER JOIN CU_MEMBER_BONUS cmb on mbe.PK_BONUS=cmb.pk_id
INNER join ( SELECT pk_member
FROM ${settleTableName}
WHERE category = 0
start with pk_member = #{pkVertex}
connect by pk_place_parent = prior pk_member ) cm
on cm.pk_member = cmb.pk_member
inner join BD_BONUS_ITEMS bbi on bbi.pk_id = mbe.PK_BONUS_ITEMS
INNER JOIN sa_order so on so.pk_id = mbe.pk_order
and so.PK_COUNTRY = #{pkCountry} and so.del_flag = 0
where mbe.DEL_FLAG = 0
and mbe.INCOME_STATUS in (0, 4)
and mbe.pk_order != 0
and bbi.BONUS_VALUE in (1, 3, 4, 5, 7, 8, 9, 12, 14, 15, 16, 20, 21, 24, 25)
<if test="startDate!=null and startDate!='' ">
and so.PAY_TIME >= to_date(#{startDate}, 'yyyy-mm-dd')
</if>
<if test="endDate!=null and endDate!='' ">
and so.PAY_TIME &lt;= to_date(#{endDate} || ' 23:59:59', 'yyyy-mm-dd hh24:mi:ss')
</if>
GROUP BY mbe.PK_COUNTRY,
bbi.BONUS_VALUE,
to_char(so.PAY_TIME, 'yyyy-mm-dd')
UNION ALL
<!-- 辅导收益,收益状态:正常,延缓发放 -->
select
#{pkCountry} pkCountry, mbc.PK_COUNTRY con,
sum(mbc.REAL_INCOME) realIncome,
bbi.BONUS_VALUE bonusType,
#{pkVertex} pkVertex,
to_date(to_char(so.PAY_TIME, 'yyyy-mm-dd'), 'yyyy-mm-dd') AS creationTime
from CU_MEMBER_BONUS_COACH mbc
INNER JOIN CU_MEMBER_BONUS cmb on mbc.PK_BONUS=cmb.pk_id
INNER join ( SELECT pk_member
FROM ${settleTableName}
WHERE category=0
start with pk_member = #{pkVertex}
connect by pk_place_parent = prior pk_member ) cm
on cm.pk_member = cmb.pk_member
inner join BD_BONUS_ITEMS bbi on bbi.pk_id = mbc.PK_BONUS_ITEMS
INNER JOIN sa_order so on so.pk_id = mbc.pk_order
and so.PK_COUNTRY = #{pkCountry} and so.del_flag = 0
where mbc.DEL_FLAG = 0
and mbc.INCOME_STATUS in (0, 4)
and mbc.pk_order != 0
and bbi.BONUS_VALUE in (1, 3, 4, 5, 7, 8, 9, 12, 14, 15, 16, 20, 21, 24, 25)
<if test="startDate!=null and startDate!='' ">
and so.PAY_TIME >= to_date(#{startDate}, 'yyyy-mm-dd')
</if>
<if test="endDate!=null and endDate!='' ">
and so.PAY_TIME &lt;= to_date(#{endDate} || ' 23:59:59', 'yyyy-mm-dd hh24:mi:ss')
</if>
GROUP BY mbc.PK_COUNTRY,
bbi.BONUS_VALUE,
to_char(so.PAY_TIME, 'yyyy-mm-dd')
UNION ALL
<!-- 复购级差 -->
select
#{pkCountry} pkCountry, mbr.PK_COUNTRY con,
sum(mbr.REAL_INCOME) realIncome,
bbi.BONUS_VALUE bonusType,
#{pkVertex} pkVertex,
to_date(to_char(so.PAY_TIME, 'yyyy-mm-dd'), 'yyyy-mm-dd') AS creationTime
from cu_member_bonus_range mbr
INNER JOIN CU_MEMBER_BONUS cmb on mbr.PK_BONUS=cmb.pk_id
INNER join ( SELECT pk_member
FROM ${settleTableName}
WHERE category = 0
start with pk_member = #{pkVertex}
connect by pk_place_parent = prior pk_member ) cm
on cm.pk_member = cmb.pk_member
inner join BD_BONUS_ITEMS bbi on bbi.pk_id = mbr.PK_BONUS_ITEMS
INNER JOIN sa_order so on so.pk_id = mbr.pk_order
and so.PK_COUNTRY = #{pkCountry} and so.del_flag = 0
where mbr.DEL_FLAG = 0
and mbr.INCOME_STATUS = 0
and bbi.BONUS_VALUE in (1, 3, 4, 5, 7, 8, 9, 12, 14, 15, 16, 20, 21, 24, 25)
<if test="startDate!=null and startDate!='' ">
and so.PAY_TIME >= to_date(#{startDate}, 'yyyy-mm-dd')
</if>
<if test="endDate!=null and endDate!='' ">
and so.PAY_TIME &lt;= to_date(#{endDate} || ' 23:59:59', 'yyyy-mm-dd hh24:mi:ss')
</if>
GROUP BY bbi.BONUS_VALUE,
mbr.PK_COUNTRY,
to_char(so.PAY_TIME, 'yyyy-mm-dd')
UNION ALL
<!-- 报单服务费 -->
select
#{pkCountry} pkCountry, mbd.PK_COUNTRY con,
sum(mbd.REAL_INCOME) realIncome,
bbi.BONUS_VALUE bonusType,
#{pkVertex} pkVertex,
to_date(to_char(so.PAY_TIME, 'yyyy-mm-dd'), 'yyyy-mm-dd') AS creationTime
from cu_member_bonus_detail mbd
INNER JOIN CU_MEMBER_BONUS cmb on mbd.PK_BONUS=cmb.pk_id
INNER join ( SELECT pk_member
FROM ${settleTableName}
WHERE category = 0
start with pk_member = #{pkVertex}
connect by pk_place_parent = prior pk_member ) cm
on cm.pk_member = cmb.pk_member
inner join BD_BONUS_ITEMS bbi on bbi.pk_id = mbd.PK_BONUS_ITEMS
INNER JOIN sa_order so on so.pk_id = mbd.pk_order
and so.PK_COUNTRY = #{pkCountry} and so.del_flag = 0
where mbd.DEL_FLAG = 0
and mbd.INCOME_STATUS = 0
and bbi.BONUS_VALUE in (1, 3, 4, 5, 7, 8, 9, 12, 14, 15, 16, 20, 21, 24, 25)
<if test="startDate!=null and startDate!='' ">
and so.PAY_TIME >= to_date(#{startDate}, 'yyyy-mm-dd')
</if>
<if test="endDate!=null and endDate!='' ">
and so.PAY_TIME &lt;= to_date(#{endDate} || ' 23:59:59', 'yyyy-mm-dd hh24:mi:ss')
</if>
GROUP BY bbi.BONUS_VALUE,
mbd.PK_COUNTRY,
to_char(so.PAY_TIME, 'yyyy-mm-dd')
</select>
<!-- 查询当天团队统计数据-->
<select id="getCuBonusStatis" parameterType="com.hzs.common.domain.member.statis.CuBonusVertexStatis"
resultType="com.hzs.common.domain.member.statis.CuBonusVertexStatis">
SELECT *
FROM CU_BONUS_VERTEX_STATIS a
WHERE 1 = 1
<if test="pkBdVertex != null ">
AND a.PK_BD_VERTEX = #{pkBdVertex}
</if>
<if test="pkCountry != null ">
AND a.PK_COUNTRY = #{pkCountry}
</if>
<if test="creationTime != null ">
and to_char(a.CREATION_TIME, 'yyyy-mm-dd') = to_char(#{creationTime}, 'yyyy-mm-dd')
</if>
</select>
</mapper>