<?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.yc.ship.module.trade.dal.mysql.bill.BillStoreMapper">

    <!--
        一般情况下，尽可能使用 Mapper 进行 CRUD 增删改查即可。
        无法满足的场景，例如说多表关联查询，才使用 XML 编写 SQL。
        代码生成器暂时只生成 Mapper XML 文件本身，更多推荐 MybatisX 快速开发插件来生成查询。
        文档可见：https://www.iocoder.cn/MyBatis/x-plugins/
     -->

    <select id="getStoreBillById"
            resultType="com.yc.ship.module.trade.dal.dataobject.bill.BillStoreDO">
        SELECT obs.*
        FROM ota_bill_store obs
        WHERE
            obs.bill_id = #{id}
        <if test="types != null">
            AND obs.bill_status in
            <foreach collection="types" item="type" separator=","  open="(" close=")">
                #{type}
            </foreach>
        </if>
    </select>

    <select id="getBillStorePage"
            resultType="com.yc.ship.module.trade.dal.dataobject.bill.BillStoreDO">
        SELECT obs.*
        FROM ota_bill_store obs
        where 1 = 1
        <if test="vo.storeId != null">
            AND obs.store_id = #{vo.storeId}
        </if>
        <if test="vo.agencyIds != null and vo.agencyIds.size() > 0">
            AND obs.agency_id in
            <foreach collection="vo.agencyIds" item="agencyId" separator=","  open="(" close=")">
                #{agencyId}
            </foreach>
        </if>
        <if test="vo.agencyId != null">
            AND obs.agency_id = #{vo.agencyId}
        </if>
        <if test="vo.billStatus != null">
            AND obs.bill_status = #{vo.billStatus}
        </if>
        <if test="vo.operatorName != null and vo.operatorName != ''">
            AND obs.operator_name like concat('%',#{vo.operatorName},'%')
        </if>
        <if test="vo.orderStratTime != null and vo.orderStratTime != ''">
            AND obs.create_time <![CDATA[ >= ]]> #{vo.orderStratTime}
        </if>
        <if test="vo.orderEndTime != null and vo.orderEndTime != ''">
            AND obs.create_time <![CDATA[ <= ]]> #{vo.orderEndTime}
        </if>
        <if test="vo.repayStartTime != null">
            AND obs.pay_time <![CDATA[ >= ]]> #{vo.repayStartTime}
        </if>
        <if test="vo.repayEndTime != null">
            AND obs.pay_time <![CDATA[ <= ]]> #{vo.repayEndTime}
        </if>
        <if test="vo.payType != null">
            AND obs.pay_type = #{vo.payType}
        </if>
        <if test="vo.billId != null">
            AND obs.bill_id = #{vo.billId}
        </if>
        <if test="vo.id != null">
            AND obs.id = #{vo.id}
        </if>
        order by obs.create_time desc
    </select>
</mapper>