171 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			XML
		
	
	
	
			
		
		
	
	
			171 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			XML
		
	
	
	
| <?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.bonus.detail.mapper.CuMemberAwardsMapper">
 | |
| 
 | |
|     <!-- 通用查询映射结果 -->
 | |
|     <resultMap id="CuMemberAwards" type="com.hzs.common.domain.member.detail.CuMemberAwards">
 | |
|         <id column="PK_ID" property="pkId" />
 | |
|         <result column="PK_MEMBER" property="pkMember" />
 | |
|         <result column="PERIOD" property="period" />
 | |
|         <result column="UP_TYPE" property="upType" />
 | |
|         <result column="OLD_LEVEL" property="oldLevel" />
 | |
|         <result column="NEW_LEVEL" property="newLevel" />
 | |
|         <result column="PURCHASE_STATUS" property="purchaseStatus" />
 | |
|         <result column="PK_ORDER" property="pkOrder" />
 | |
|         <result column="REMARK" property="remark" />
 | |
|         <result column="DEL_FLAG" property="delFlag" />
 | |
|         <result column="CREATION_TIME" property="creationTime" />
 | |
|         <result column="MODIFIED_TIME" property="modifiedTime" />
 | |
|         <result column="PK_COUNTRY" property="pkCountry" />
 | |
|         <result column="PK_CREATOR" property="pkCreator" />
 | |
|         <result column="PK_MODIFIED" property="pkModified" />
 | |
|     </resultMap>
 | |
| 
 | |
|     <!-- 通用查询结果列 -->
 | |
|     <sql id="Base_Column_List">
 | |
|         DEL_FLAG,
 | |
|         PK_CREATOR,
 | |
|         CREATION_TIME,
 | |
|         PK_MODIFIED,
 | |
|         MODIFIED_TIME,
 | |
|         PK_COUNTRY,
 | |
|         PK_ID, PK_MEMBER, PERIOD, UP_TYPE, OLD_LEVEL, NEW_LEVEL, REMARK
 | |
|     </sql>
 | |
| 
 | |
|     <insert id="saveBatchCuMemberAwards">
 | |
|         insert ALL
 | |
|         <foreach item="item" index="index" collection="cuMemberAwardsList" separator=" " >
 | |
|             into cu_member_awards(pk_member,period,up_type,old_level,new_level,purchase_status,pk_creator,pk_country) values
 | |
|             (
 | |
|             #{item.pkMember},#{item.period},#{item.upType},#{item.oldLevel},#{item.newLevel},#{item.purchaseStatus},#{item.pkCreator},
 | |
|              #{item.pkCountry}
 | |
|             )
 | |
|         </foreach>
 | |
|         SELECT 1 FROM dual
 | |
|     </insert>
 | |
| 
 | |
|     <update id="calculateCuMemberAwardsEveryMonth">
 | |
|         merge into cu_member_settle_awards a
 | |
|             using(
 | |
|                 select #{period} period,b.* from(
 | |
|             select pk_member,pk_country,a_balance,b_balance,a_new_pv,b_new_pv,
 | |
|                    (case when a_balance=0 and b_balance=0 then a_new_pv+b_new_pv when a_balance=0 then a_new_pv else b_new_pv end) new_pv from (
 | |
|           select ct.pk_member,ct.pk_country,nvl(ctb.a_balance,0) a_balance,nvl(ctb.b_balance,0) b_balance,
 | |
|                  ct.a_sum_pv a_new_pv,ct.b_sum_pv b_new_pv
 | |
|           from (
 | |
|                    select pk_member,pk_country,sum(A_NEW_PV+REP_A_NEW_PV) A_SUM_PV,sum(b_NEW_PV+REP_B_NEW_PV) b_SUM_PV,
 | |
|                           sum(register_new_pv) REGISTER_PV,sum(upgrade_new_pv) UPGRADE_PV,sum(repurchase_new_pv) REPURCHASE_PV,
 | |
|                           sum(hi_fun_new_pv) HI_FUN_PV,sum(mall_new_pv) MALL_PV from cu_member_achieve${month}
 | |
|                     where period <= #{period} and pk_country=1
 | |
|                    group by pk_member,pk_country
 | |
|                ) ct
 | |
|            left join ${beforeMontTableName} ctb
 | |
|                      on ct.pk_member = ctb.pk_member
 | |
|           )) b
 | |
|                 where new_pv>=#{minAchieve}) b
 | |
|             on (a.pk_member=b.pk_member and a.period=b.period)
 | |
|             when matched then
 | |
|                 update set a.a_balance=b.a_balance,a.b_balance=b.b_balance,
 | |
|                     a.a_new_pv=b.a_new_pv,a.b_new_pv=b.b_new_pv,a.new_pv=b.new_pv
 | |
|             when not matched then
 | |
|                 insert(pk_id,period,pk_member,a_balance,b_balance,a_new_pv,b_new_pv,new_pv,pk_country,assess_status)
 | |
|                     values(cu_member_settle_awards_seq.nextval,b.period,b.pk_member,b.a_balance,b.b_balance,b.a_new_pv,b.b_new_pv,b.new_pv,b.pk_country,3)
 | |
|     </update>
 | |
|     <update id="calculateCuMemberAwards">
 | |
|         merge into cu_member_settle_awards a
 | |
|         using(
 | |
|             select pk_member,period,max(pk_awards) pk_awards from(
 | |
|         <foreach collection="bdAwardsList" item="item" open=" " close=" " separator=" union ">
 | |
|             select pk_member,period,#{item.pkId} pk_awards from cu_member_settle_awards
 | |
|             where period = #{period} and pk_country=#{item.pkCountry} and new_pv>=#{item.communityCheck}
 | |
|             <if test="item.communityCheckEnd != null and item.communityCheckEnd > 0">
 | |
|                 and new_pv <#{item.communityCheckEnd}
 | |
|             </if>
 | |
|         </foreach>)
 | |
|             group by pk_member,period
 | |
|         ) b on (a.pk_member=b.pk_member and a.period=b.period)
 | |
|         when matched then
 | |
|         update set a.pk_awards=b.pk_awards
 | |
|     </update>
 | |
| 
 | |
|     <update id="updateBatchCuMemberAwards">
 | |
|         update cu_member_awards set del_flag = 1, modified_time = sysdate, PK_MODIFIED = 1
 | |
|         where period= #{period} and pk_member in
 | |
|         <foreach collection="cuMemberAwardsList" item="item" open="(" close=")" separator=",">
 | |
|             #{item.pkMember}
 | |
|         </foreach>
 | |
|     </update>
 | |
| 
 | |
|     <update id="updateCuMemberAwardsExamine">
 | |
|         merge into cu_member_settle_awards a
 | |
|             using (
 | |
|                 select ca.pk_member, ca.period, ce.assess_target, ce.assess_status
 | |
|                 from cu_member_settle_awards ca
 | |
|                          inner join ${assessTableName} ce
 | |
|                                     on ca.pk_member = ce.pk_member
 | |
|                 where ca.period = #{awardPeriod}
 | |
|                   and ce.period = #{assessPeriod}
 | |
|             ) b on (a.pk_member = b.pk_member and a.period = b.period)
 | |
|             when matched then
 | |
|                 update set a.assess_target = b.assess_target,a.assess_status = b.assess_status
 | |
|     </update>
 | |
| 
 | |
|     <update id="calculateCuMemberRangeAwardsEveryMonth">
 | |
|         merge into cu_member_settle_awards a
 | |
|             using(
 | |
|                 select #{period} period,b.pk_member,b.max_team_pv,b.small_team_pv new_pv from(
 | |
|                 select pk_parent pk_member,max(team_month_pv+new_pv) max_team_pv,
 | |
|                        (sum(team_month_pv+new_pv)-max(team_month_pv+new_pv)) small_team_pv,
 | |
|                        count(pk_parent) dept_num from ${rangeTableName}
 | |
|                 group by pk_parent
 | |
|                 having count(pk_parent)>=2) b
 | |
|                 where b.small_team_pv>=#{minAchieve}) b
 | |
|             on (a.pk_member=b.pk_member and a.period=b.period)
 | |
|             when matched then
 | |
|                 update set a.a_new_pv=b.max_team_pv,a.b_new_pv=b.new_pv,a.new_pv=b.new_pv
 | |
|             when not matched then
 | |
|                 insert(pk_id,period,pk_member,a_balance,b_balance,a_new_pv,b_new_pv,new_pv,pk_country,assess_status)
 | |
|                     values(cu_member_settle_awards_seq.nextval,b.period,b.pk_member,0,0,b.max_team_pv,b.new_pv,b.new_pv,1,3)
 | |
|     </update>
 | |
|     <delete id="deleteCuMemberAwards">
 | |
|         delete from cu_member_awards where period = #{period} and up_type = 1
 | |
|     </delete>
 | |
|     <delete id="deleteCuMemberSettleAwards">
 | |
|         delete from cu_member_settle_awards where period = #{period}
 | |
|     </delete>
 | |
|     <delete id="deleteRepeatCuMemberAwards">
 | |
|         delete from cu_member_settle_awards where pk_id in(
 | |
|         select a.pk_id from (
 | |
|         select ct.pk_id,ct.pk_member,ba.awards_value from cu_member_settle_awards ct
 | |
|         inner join bd_awards ba
 | |
|         on ct.pk_awards=ba.pk_id and ba.del_flag=0
 | |
|         where period= #{period}) a
 | |
|         inner join(
 | |
|         select ct.*,bw.awards_value from(
 | |
|         select pk_member,max(pk_awards) pk_awards from cu_member_settle_awards
 | |
|         where period between #{firstPeriod} and #{yesPeriod}
 | |
|         group by pk_member) ct
 | |
|         inner join bd_awards bw
 | |
|         on ct.pk_awards=bw.pk_id and bw.del_flag=0
 | |
|         ) b
 | |
|         on a.pk_member=b.pk_member and a.awards_value <=b.awards_value)
 | |
|     </delete>
 | |
| 
 | |
|     <select id="queryLastCuMemberAwards" resultMap="CuMemberAwards">
 | |
|         select ca.pk_member,ba.awards_value new_level from cu_member_awards ca
 | |
|         inner join (
 | |
|         select pk_member,max(pk_id) pk_id from cu_member_awards
 | |
|         where del_flag=0 and pk_member in
 | |
|         <foreach collection="cuMemberAwardsList" item="item" open="(" close=")" separator=",">
 | |
|             #{item.pkMember}
 | |
|         </foreach>
 | |
|         group by pk_member
 | |
|         ) cm
 | |
|         on ca.pk_id=cm.pk_id
 | |
|         inner join bd_awards ba
 | |
|         on ca.new_level = ba.pk_id
 | |
|         where ca.del_flag=0 and ba.del_flag=0
 | |
|     </select>
 | |
| 
 | |
| </mapper>
 |