<?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.ym.mec.biz.dal.dao.StudentPaymentOrderDao">

    <resultMap type="com.ym.mec.biz.dal.entity.StudentPaymentOrder" id="StudentPaymentOrder">
        <result column="id_" property="id"/>
        <result column="user_id_" property="userId"/>
        <result column="type_" property="type" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
        <result column="expect_amount_" property="expectAmount"/>
        <result column="actual_amount_" property="actualAmount"/>
        <result column="trans_no_" property="transNo"/>
        <result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
        <result column="memo_" property="memo"/>
        <result column="create_time_" property="createTime"/>
        <result column="update_time_" property="updateTime"/>
        <result column="payment_channel_" property="paymentChannel"/>
        <result column="payment_business_channel_" property="paymentBusinessChannel"/>
        <result column="payment_account_no_" property="paymentAccountNo"/>
        <result column="order_no_" property="orderNo"/>
        <result column="music_group_id_" property="musicGroupId"/>
        <result column="class_group_id_" property="classGroupId"/>
        <result column="version_" property="version"/>
    </resultMap>

    <resultMap type="com.ym.mec.biz.dal.entity.Goods" id="Goods">
        <result column="id_" property="id"/>
        <result column="goods_category_id_" property="goodsCategoryId"/>
        <result column="sn_" property="sn"/>
        <result column="name_" property="name"/>
        <result column="brand_" property="brand"/>
        <result column="specification_" property="specification"/>
        <result column="image_" property="image"/>
        <result column="stock_count_" property="stockCount"/>
        <result column="sell_count_" property="sellCount"/>
        <result column="market_price_" property="marketPrice"/>
        <result column="discount_price_" property="discountPrice"/>
        <result column="group_purchase_price_" property="groupPurchasePrice"/>
        <result column="brief_" property="brief"/>
        <result column="desc_" property="desc"/>
        <result column="is_new_" property="isNew" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
        <result column="is_top_" property="isTop" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
        <result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
        <result column="memo_" property="memo"/>
        <result column="publish_time_" property="publishTime"/>
        <result column="create_time_" property="createTime"/>
        <result column="update_time_" property="updateTime"/>
        <result column="complement_goods_id_list_" property="complementGoodsIdList"/>
    </resultMap>

    <!-- 根据主键查询一条记录 -->
    <select id="get" resultMap="StudentPaymentOrder">
        SELECT * FROM student_payment_order WHERE id_ = #{id}
    </select>

    <!-- 全查询 -->
    <select id="findAll" resultMap="StudentPaymentOrder">
        SELECT *
        FROM student_payment_order
        ORDER BY id_
    </select>

    <!-- 向数据库增加一条记录 -->
    <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.StudentPaymentOrder" useGeneratedKeys="true"
            keyColumn="id" keyProperty="id">
        <!--
        <selectKey resultClass="int" keyProperty="id" >
        SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL
        </selectKey>
        -->
        INSERT INTO student_payment_order
        (id_,user_id_,type_,expect_amount_,actual_amount_,trans_no_,status_,memo_,create_time_,update_time_,payment_channel_,payment_business_channel_,payment_account_no_,order_no_,music_group_id_,class_group_id_)
        VALUES(#{id},#{userId},#{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{expectAmount},#{actualAmount},#{transNo},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{memo},now(),now(),#{paymentChannel},#{paymentBusinessChannel},#{paymentAccountNo},#{orderNo},#{musicGroupId},#{classGroupId})
    </insert>

    <!-- 根据主键查询一条记录 -->
    <update id="update" parameterType="com.ym.mec.biz.dal.entity.StudentPaymentOrder">
        UPDATE student_payment_order
        <set>
            <if test="status != null">
                status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
            </if>
            <if test="orderNo != null">
                order_no_ = #{orderNo},
            </if>
            <if test="classGroupId != null">
                class_group_id_ = #{classGroupId},
            </if>
            <if test="expectAmount != null">
                expect_amount_ = #{expectAmount},
            </if>
            <if test="memo != null">
                memo_ = #{memo},
            </if>
            <if test="paymentChannel != null">
                payment_channel_ = #{paymentChannel},
            </if>
            <if test="userId != null">
                user_id_ = #{userId},
            </if>
            <if test="paymentAccountNo != null">
                payment_account_no_ = #{paymentAccountNo},
            </if>
            <if test="updateTime != null">
                update_time_ = #{updateTime},
            </if>
            <if test="paymentBusinessChannel != null">
                payment_business_channel_ = #{paymentBusinessChannel},
            </if>
            <if test="transNo != null">
                trans_no_ = #{transNo},
            </if>
            <if test="actualAmount != null">
                actual_amount_ = #{actualAmount},
            </if>
            <if test="type != null">
                type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
            </if>
            <if test="musicGroupId != null">
                music_group_id_ = #{musicGroupId},
            </if>
            <if test="version != null">
                version_ = version_+1,
            </if>
        </set>
        WHERE id_ = #{id} AND version_ = #{version}
    </update>

    <!-- 根据主键删除一条记录 -->
    <delete id="delete">
        DELETE FROM student_payment_order WHERE id_ = #{id}
    </delete>

    <!-- 分页查询 -->
    <select id="queryPage" resultMap="StudentPaymentOrder" parameterType="map">
        SELECT * FROM student_payment_order ORDER BY id_
        <include refid="global.limit"/>
    </select>

    <!-- 查询当前表的总记录数 -->
    <select id="queryCount" resultType="int">
        SELECT COUNT(*)
        FROM student_payment_order
    </select>

    <select id="queryApplyGoodsList" resultMap="Goods" parameterType="map">
        select g.* from goods g where g.id_ in (SELECT spod.goods_id_list_ FROM student_payment_order spo left join
        student_payment_order_detail spod on spo.id_ = spod.payment_order_id_ where spo.music_group_id_ =
        #{musicGroupId} and spo.type_ = 'APPLY' and spod.type_ =
        #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
    </select>
    <select id="findByStudentVipGroup" resultMap="StudentPaymentOrder">
        SELECT
        spo.*
        FROM
        student_vip_group_payment svgp
        LEFT JOIN student_payment_order spo ON svgp.student_payment_order_id_=spo.id_
        WHERE svgp.user_id_=#{userId} AND svgp.vip_group_id_=#{vipGroupId}
    </select>
    <!-- 查询报名订单 -->
    <select id="findMusicGroupApplyOrderByStatus" resultMap="StudentPaymentOrder">
        SELECT * FROM student_payment_order WHERE music_group_id_= #{musicGroupId} AND user_id_=#{userId} AND type_ =
        'APPLY' AND status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
    </select>

    <!-- 根据订单号查询订单 -->
    <select id="findOrderByOrderNo" resultMap="StudentPaymentOrder">
        SELECT * FROM student_payment_order WHERE order_no_ = #{orderNo}
    </select>

    <select id="queryByDealStatus" resultMap="StudentPaymentOrder" parameterType="map">
        SELECT * FROM student_payment_order WHERE music_group_id_= #{musicGroupId} AND user_id_=#{userId} AND type_ =
        #{type} AND status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
    </select>

    <!-- 查找支付成功和支付中订单 -->
    <select id="findPayOrderNum" resultType="int">
        <![CDATA[
        SELECT COUNT(*)
        FROM student_payment_order
        WHERE status_ <= 2
        ]]>
    </select>

    <resultMap type="com.ym.mec.biz.dal.dto.UserGoodsDto" id="userGoodsDto">
        <result column="goods_id_" property="goodsId"/>
        <collection property="goodsName" ofType="string">
            <result column="goods_name_"/>
        </collection>
    </resultMap>
    <select id="findGoodsIds" resultMap="userGoodsDto">
        SELECT g.id_ goods_id_,g.name_ goods_name_ FROM student_payment_order spo
        LEFT JOIN student_payment_order_detail spod ON spo.id_ = spod.payment_order_id_
        LEFT JOIN goods g ON FIND_IN_SET(g.id_,spod.goods_id_list_)
        WHERE spo.type_ = 'APPLY' AND spo.status_ = 'SUCCESS' AND spod.goods_id_list_ IS NOT NULL
        AND spo.music_group_id_ = #{musicGroupId} AND spo.user_id_ = #{userId}
    </select>
</mapper>
