<?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.detail.mapper.CuMemberAssessMapper">

    <!-- 会员-考核明细列表-->
    <select id="selectAssessList" resultType="com.hzs.member.detail.vo.CuMemberAssessVO">
        select * from (
        SELECT
        a.PK_ASSESS pkAssess,
        a.PK_MEMBER pkMember,
        a.TRADE_TIME tradeTime,
        a.PK_ORDER pkOrder,
        a.CHANGE_TYPE changeType,
        a.TRADE_ACHIEVE tradeAchieve,
        0 orderAssAchieve,
        0 orderAchieve,
        '' orderCode
        FROM
        CU_MEMBER_ASSESS_DETAIL a
        LEFT JOIN ${tableName} b on b.PK_ID=a.PK_ASSESS
        WHERE
        a.DEL_FLAG = 0
        <if test="pkMember != null ">
            AND a.PK_MEMBER = #{pkMember}
        </if>
        <if test="pkCountry != null ">
            AND a.PK_COUNTRY = #{pkCountry}
        </if>

        <if test="changeType != null ">
            AND a.CHANGE_TYPE = #{changeType}
        </if>
        <if test="assessType != null ">
            AND b.ASSESS_TYPE = #{assessType}
        </if>
        <if test="assessStatus != null and assessStatus!=0 ">
            AND b.ASSESS_STATUS = #{assessStatus}
        </if>
        <if test="assessStatus == 0 ">
            AND (b.ASSESS_STATUS = #{assessStatus} or b.ASSESS_STATUS = 1 )
        </if>
        <if test="startDate != null">
            and a.TRADE_TIME &gt;= #{startDate, jdbcType=DATE}
        </if>
        <if test="endDate != null">
            and a.TRADE_TIME &lt; #{endDate, jdbcType=DATE}
        </if>
        <if test="startTradeTime != null and endDateTradeTime != null ">
            UNION ALL
            select
            null pkAssess,
            PK_MEMBER pkMember,
            PAY_TIME tradeTime,
            null pkOrder,
            null changeType,
            null tradeAchieve,
            ORDER_ASS_ACHIEVE orderAssAchieve,
            ORDER_ACHIEVE orderAchieve,
            ORDER_CODE orderCode
            from SA_ORDER
            WHERE
            DEL_FLAG = 0
            <if test="pkMember != null ">
                AND PK_MEMBER = #{pkMember}
            </if>
            <if test="orderTypeList != null ">
                and ORDER_TYPE in
                <foreach collection="orderTypeList" item="item" open="(" close=")" separator=",">
                    #{item}
                </foreach>
            </if>
            <if test="assessType == 0 ">
                AND order_achieve > 0
            </if>
            <if test="assessType == 1 ">
                AND ORDER_ASS_ACHIEVE > 0
            </if>

            <if test="pkCountry != null ">
                AND PK_COUNTRY = #{pkCountry}
            </if>

            <if test="startTradeTime != null">
                and PAY_TIME &gt;= #{startTradeTime, jdbcType=DATE}
            </if>
            <if test="endDateTradeTime != null">
                and PAY_TIME &lt; #{endDateTradeTime, jdbcType=DATE}
            </if>
        </if>
        )
        order by tradeTime desc
    </select>

    <!--查询会员月度考核-->
    <select id="getMemberAssessMonthList"
            resultType="com.hzs.member.detail.vo.CuMemberAssessVO">
        SELECT
        a.pk_id pkId,
        a.SETTLE_MONTH settleMonth,
        a.ASSESS_STATUS assessStatus,
        a.MONTH_SURPLUS monthSurplus,
        a.CREATION_TIME creationTime
        FROM
        ${tableName} a
        WHERE
        a.DEL_FLAG = 0
        <if test="period != null ">
            AND a.period=#{period}
        </if>
        <if test="pkMember != null ">
            AND a.PK_MEMBER = #{pkMember}
        </if>
        <if test="pkCountry != null ">
            AND a.PK_COUNTRY = #{pkCountry}
        </if>
        <if test="assessType != null ">
            AND a.ASSESS_TYPE = #{assessType}
        </if>
    </select>

    <!--查询会员订单考核积分-->
    <select id="getOrderAssessList" parameterType="com.hzs.member.detail.vo.CuMemberAssessVO"
            resultType="com.hzs.member.detail.vo.CuMemberAssessVO">
        SELECT
        sum (ORDER_ASS_ACHIEVE) orderAssAchieve,
        sum (ORDER_ACHIEVE) orderAchieve
        FROM
        SA_ORDER a
        WHERE
        a.DEL_FLAG = 0
        <if test="orderTypeList != null ">
            AND a.order_type in
            <foreach collection="orderTypeList" item="item" open="(" close=")" separator=",">
                #{item}
            </foreach>
        </if>

        <if test="pkMember != null ">
            AND a.PK_MEMBER = #{pkMember}
        </if>
        <if test="pkCountry != null ">
            AND a.PK_COUNTRY = #{pkCountry}
        </if>
        <if test="startDate != null">
            and a.PAY_TIME &gt;= #{startDate, jdbcType=DATE}
        </if>
        <if test="endDate != null">
            and a.PAY_TIME &lt; #{endDate, jdbcType=DATE}
        </if>
    </select>

    <!-- 会员考核列表 -->
    <select id="listMemberAssess" resultType="com.hzs.common.domain.member.ext.CuMemberAssessExt">
        select cm.member_code,
        cm.member_name,
        bv.vertex_name,
        ba.awards_name,
        baa.awards_name assessAwardsName,
        cma.*
        from CU_MEMBER_ASSESS${param.dateStr} cma
        left join cu_member cm
        on cm.pk_id = cma.pk_member
        left join bd_vertex bv
        on bv.pk_id = cm.pk_vertex
        left join bd_awards ba
        on ba.pk_id = cma.pk_awards
        left join bd_awards baa
        on baa.pk_id = cma.assess_pk_awards
        where cma.del_flag = 0
        <if test="param.memberCode != null and param.memberCode != ''">
            and cm.member_code like #{param.memberCode} || '%'
        </if>
        <if test="param.assessStatus != null">
            and cma.assess_status = #{param.assessStatus}
        </if>
        <if test="param.assessTypeList != null and param.assessTypeList.size > 0">
            and cma.assess_type in
            <foreach collection="param.assessTypeList" item="item" open="(" separator="," close=")">
                #{item}
            </foreach>
        </if>
        order by cma.assess_type
    </select>

</mapper>
