<?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="org.springblade.modules.finance.mapper.OrderGoodsMapper">

    <!-- 通用查询映射结果 -->
    <resultMap id="orderGoodsResultMap" type="org.springblade.modules.finance.entity.OrderGoods">
        <result column="id" property="id"/>
        <result column="is_delete" property="isDelete"/>
        <result column="create_user_id" property="createUserId"/>
        <result column="create_time" property="createTime"/>
        <result column="update_user_id" property="updateUserId"/>
        <result column="update_time" property="updateTime"/>
        <result column="order_id" property="orderId"/>
        <result column="goods_id" property="goodsId"/>
        <result column="goods_num" property="goodsNum"/>
        <result column="goods_name" property="goodsName"/>
        <result column="goods_price" property="goodsPrice"/>
        <result column="goods_image" property="goodsImage"/>
        <result column="goods_no" property="goodsNo"/>
        <result column="shop_id" property="shopId"/>
        <result column="store_name" property="storeName"/>
        <result column="device_id" property="deviceId"/>
        <result column="merchant_id" property="merchantId"/>
        <result column="user_id" property="userId"/>
        <result column="cargo_way_id" property="cargoWayId"/>
        <result column="shipping_time" property="shippingTime"/>
    </resultMap>


    <select id="selectOrderGoodsPage" resultType="org.springblade.modules.finance.vo.OrderGoodsVO">
        SELECT
            og.*,
            o.order_no,
            o.order_state,
            o.is_aftersales,
            u.`name` nickname,
            o.payment_mode,
            o.payment_time,
            o.payment_state,
            o.payment_amount,
            o.total_amount,
            o.discount_amount,
            o.third_order_no
        FROM
            t_order o
            JOIN t_order_goods og ON o.id = og.order_id
            JOIN blade_user u on o.user_id = u.id
        WHERE
        o.is_delete = 0
        <if test="@cn.hutool.core.util.StrUtil@isNotBlank(p.orderNo)">
            and instr(o.order_no, #{p.orderNo}) > 0
        </if>
        <if test="@cn.hutool.core.util.StrUtil@isNotBlank(p.phone)">
            and instr(u.phone, #{p.phone}) > 0
        </if>
        <if test="p.orderState != null">
            and o.order_state = #{p.orderState}
        </if>
        <if test="p.goodsId != null">
            and og.goods_id = #{p.goodsId}
        </if>
        <if test="p.merchantId != null">
            and og.merchant_id = #{p.merchantId}
        </if>
        <if test="p.shopId != null">
            and og.shop_id = #{p.shopId}
        </if>
        <if test="p.startTime != null">
            and o.create_time <![CDATA[ >= ]]> #{p.startTime}
        </if>
        <if test="p.endTime != null">
            and o.create_time <![CDATA[ <= ]]> #{p.endTime}
        </if>
        order by o.create_time desc
    </select>

    <select id="selectUserOrder" resultType="org.springblade.modules.finance.vo.OrderGoodsVO">
        SELECT
            og.*,
            o.order_no,
            o.order_state,
            o.is_aftersales,
            o.total_amount,
            o.payment_amount,
            o.payment_mode
        FROM
            t_order o
            JOIN t_order_goods og ON o.id = og.order_id
        WHERE o.is_delete = 0 and o.user_id = #{p.userId}
        <if test="p.orderState != 0 and p.orderState != null">
            and o.order_state = #{p.orderState}
        </if>
        <if test="p.isAfterSales != null">
            and o.is_aftersales = #{p.isAfterSales}
        </if>
        ORDER BY o.create_time desc
    </select>

    <select id="getMerchantOrder" resultType="org.springblade.modules.finance.vo.MerchantPageOrderVO">
        SELECT o.*,
            afs.id as afterSalesId,
            afs.after_sales_no as afterSalesNo
        FROM t_order o
            JOIN t_order_goods og ON o.id = og.order_id
            left join t_after_sales afs on o.id = afs.order_id
        WHERE o.is_delete = 0
          and og.merchant_id = #{param.userId}
        <if test="param.orderState != null">
            and o.order_state = #{param.orderState}
        </if>
        <if test="param.isAftersales != null">
            and o.is_aftersales = #{param.isAftersales}
        </if>
        order by o.create_time desc
    </select>

    <select id="getMerchantOrderNum" resultType="java.lang.String">
        SELECT
           count(o.id)
        FROM
            t_order o
                JOIN t_order_goods og ON o.id = og.order_id
        WHERE o.is_delete = 0
          and og.merchant_id = #{merchantId}
    </select>

</mapper>