TradeBillsMapper.xml 5.59 KB
<?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.yoho.order.dal.TradeBillsMapper">
    <resultMap id="BaseResultMap" type="com.yoho.order.model.TradeBills">
        <id column="id" jdbcType="INTEGER" property="id"/>
        <result column="uid" jdbcType="INTEGER" property="uid"/>
        <result column="order_code" jdbcType="BIGINT" property="orderCode"/>
        <result column="paid_order_code" jdbcType="BIGINT" property="paidOrderCode"/>
        <result column="user_type" jdbcType="TINYINT" property="userType"/>
        <result column="pay_type" jdbcType="TINYINT" property="payType"/>
        <result column="trade_type" jdbcType="INTEGER" property="tradeType"/>
        <result column="income_outcome" jdbcType="TINYINT" property="incomeOutcome"/>
        <result column="amount" jdbcType="DECIMAL" property="amount"/>
        <result column="system_amount" jdbcType="DECIMAL" property="systemAmount"/>
        <result column="trade_status" jdbcType="TINYINT" property="tradeStatus"/>
        <result column="create_time" jdbcType="INTEGER" property="createTime"/>
        <result column="deal_uid" jdbcType="INTEGER" property="dealUid"/>
        <result column="deal_status" jdbcType="TINYINT" property="dealStatus"/>
        <result column="deal_time" jdbcType="INTEGER" property="dealTime"/>
        <result column="deal_relate_id" jdbcType="INTEGER" property="dealRelateId"/>
        <result column="deal_user_name" jdbcType="VARCHAR" property="dealUserName"/>
        <result column="pay_error_code" jdbcType="VARCHAR" property="payErrorCode"/>
    </resultMap>
    <sql id="Base_Column_List">
        id,uid, order_code, paid_order_code, user_type,pay_type,trade_type,
        income_outcome,amount,system_amount,trade_status,create_time,
        deal_uid,deal_status,deal_time,deal_relate_id,deal_user_name,pay_error_code
    </sql>

    <sql id="Query_Condition_Sql">
        income_outcome=1
        and deal_status != 1
        <if test="billsTradeReq.orderCode != null">
            and (
            order_code = #{billsTradeReq.orderCode}
            or paid_order_code = #{billsTradeReq.orderCode}
            <if test="billsTradeReq.orderCode2 != null">
                or order_code = #{billsTradeReq.orderCode2}
                or paid_order_code = #{billsTradeReq.orderCode2}
            </if>
            )
        </if>
        <if test="billsTradeReq.uid != null">
            and uid = #{billsTradeReq.uid}
        </if>
        <if test="billsTradeReq.startTime != null">
            and create_time &gt; #{billsTradeReq.startTime}
        </if>
        <if test="billsTradeReq.endTime != null">
            and create_time &lt;= #{billsTradeReq.endTime}
        </if>
        <if test="billsTradeReq.userType != null">
            and user_type = #{billsTradeReq.userType}
        </if>
        <if test="billsTradeReq.tradeType != null">
            and trade_type = #{billsTradeReq.tradeType}
        </if>
        <if test="billsTradeReq.status != null ">
            <choose>
                <!-- 打款中 -->
                <when test="billsTradeReq.status == 11 ">
                    and trade_status in (11, 90)
                </when>
                <!-- 打款失败(转账失败,退款失败) -->
                <when test="billsTradeReq.status == 200 ">
                    and trade_status in(200, 299)
                </when>
                <otherwise>
                    and trade_status = #{billsTradeReq.status}
                </otherwise>
            </choose>
        </if>
        <if test="billsTradeReq.payErrorCode != null">
            and pay_error_code = #{billsTradeReq.payErrorCode,jdbcType=VARCHAR}
        </if>
    </sql>

    <select id="selectCountByCondition" resultType="java.lang.Integer"
            parameterType="com.yoho.order.model.TradeBillsReq">
        select count(id)
        from trade_bills where
        <include refid="Query_Condition_Sql"/>
    </select>

    <select id="selectByConditionWithPage" resultMap="BaseResultMap" parameterType="com.yoho.order.model.TradeBillsReq">
        select
        <include refid="Base_Column_List"/>
        from trade_bills where
        <include refid="Query_Condition_Sql"/>
        order by create_time desc
        limit #{billsTradeReq.start},#{billsTradeReq.size}
    </select>

    <select id="selectTransferMessageByIds" resultType="com.yoho.order.model.TradeBillsTransferMessage">
        SELECT tb.id,
        CASE t.interface_type
        WHEN 2 THEN concat(t.id, '_', IF(tb.deal_relate_id != 0,tb.deal_relate_id,tb.id))
        WHEN 3 THEN '钱包'
        ELSE '-'
        END AS outTradeNo,
        t.alipay_trade_result AS tradeResultStr
        FROM ufo_order.trade_bills tb
        LEFT JOIN ufo_order.orders_pay_transfer t ON t.buyer_order_code = tb.order_code
        WHERE tb.income_outcome = 1 AND tb.deal_status != 1
        <!-- 程序保障是转账单 id -->
        AND tb.id IN
        <foreach collection="ids" item="id" open="(" close=")" separator=",">
            #{id}
        </foreach>
    </select>

    <select id="selectByFailTradeBills" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List"/>
        from trade_bills where
        <!-- 失败的 -->
        income_outcome = 1 AND deal_status != 1
        <!-- 没有人工干预的 -->
        AND (deal_uid is NULL or deal_uid in (0,1))
        <!-- 退款失败和转账失败 -->
        AND trade_status in (200,299)
        AND create_time > #{fromCreateTime}
        AND id > #{fromTradeBillsId}
        limit #{limit}
    </select>

</mapper>