<?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.jsowell.pile.mapper.ThirdPartyStationRelationMapper">
    <resultMap type="com.jsowell.pile.domain.ThirdPartyStationRelation" id="ThirdPartyStationRelationResult">
        <result property="id" column="id"/>
        <result property="stationId" column="station_id"/>
        <result property="thirdPartyType" column="third_party_type"/>
        <result property="startMode" column="start_mode"/>
        <result property="createTime" column="create_time"/>
        <result property="createBy" column="create_by"/>
        <result property="updateTime" column="update_time"/>
        <result property="updateBy" column="update_by"/>
        <result property="delFlag" column="del_flag"/>
    </resultMap>

    <sql id="Base_Column_List">
        id,
        station_id,
        third_party_type,
        start_mode,
        create_time,
        create_by,
        update_time,
        update_by,
        del_flag
    </sql>

    <sql id="selectThirdPartyStationRelationVo">
        select <include refid="Base_Column_List"/>
        from thirdparty_station_relation
    </sql>

    <select id="selectThirdPartyStationRelationList" parameterType="com.jsowell.pile.domain.ThirdPartyStationRelation"
            resultMap="ThirdPartyStationRelationResult">
        <include refid="selectThirdPartyStationRelationVo"/>
        where del_flag = '0'
        <if test="stationId != null">
            and station_id = #{stationId}
        </if>
        <if test="thirdPartyType != null  and thirdPartyType != ''">
            and third_party_type = #{thirdPartyType}
        </if>
    </select>

    <select id="selectThirdPartyStationRelationById" parameterType="Long" resultMap="ThirdPartyStationRelationResult">
        <include refid="selectThirdPartyStationRelationVo"/>
        where id = #{id}
    </select>

    <insert id="insertThirdPartyStationRelation" parameterType="com.jsowell.pile.domain.ThirdPartyStationRelation"
            useGeneratedKeys="true" keyProperty="id">
        insert into thirdparty_station_relation
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="stationId != null">
                station_id,
            </if>
            <if test="thirdPartyType != null">
                third_party_type,
            </if>
            <if test="startMode != null">
                start_mode,
            </if>
            <if test="createTime != null">
                create_time,
            </if>
            <if test="createBy != null">
                create_by,
            </if>
            <if test="updateTime != null">
                update_time,
            </if>
            <if test="updateBy != null">
                update_by,
            </if>
            <if test="delFlag != null">
                del_flag,
            </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="stationId != null">
                #{stationId},
            </if>
            <if test="thirdPartyType != null">
                #{thirdPartyType},
            </if>
            <if test="startMode != null">
                #{startMode},
            </if>
            <if test="createTime != null">
                #{createTime},
            </if>
            <if test="createBy != null">
                #{createBy},
            </if>
            <if test="updateTime != null">
                #{updateTime},
            </if>
            <if test="updateBy != null">
                #{updateBy},
            </if>
            <if test="delFlag != null">
                #{delFlag},
            </if>
        </trim>
    </insert>

    <update id="updateThirdPartyStationRelation" parameterType="com.jsowell.pile.domain.ThirdPartyStationRelation">
        update thirdparty_station_relation
        <trim prefix="SET" suffixOverrides=",">
            <if test="stationId != null">
                station_id = #{stationId},
            </if>
            <if test="thirdPartyType != null">
                third_party_type = #{thirdPartyType},
            </if>
            <if test="startMode != null">
                start_mode = #{startMode},
            </if>
            <if test="createTime != null">
                create_time = #{createTime},
            </if>
            <if test="createBy != null">
                create_by = #{createBy},
            </if>
            <if test="updateTime != null">
                update_time = #{updateTime},
            </if>
            <if test="updateBy != null">
                update_by = #{updateBy},
            </if>
            <if test="delFlag != null">
                del_flag = #{delFlag},
            </if>
        </trim>
        where station_id = #{stationId,jdbcType=BIGINT}
    </update>

    <delete id="deleteThirdPartyStationRelationById" parameterType="Long">
        delete
        from thirdparty_station_relation
        where id = #{id}
    </delete>

    <delete id="deleteThirdPartyStationRelationByIds" parameterType="String">
        delete
        from thirdparty_station_relation where id in
        <foreach item="id" collection="array" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>

    <delete id="deleteThirdPartyStationRelationByStationId">
        delete
        from thirdparty_station_relation
        where station_id = #{stationId}
    </delete>

    <insert id="batchInsert" keyColumn="id" keyProperty="id" parameterType="map" useGeneratedKeys="true">
        <!--@mbg.generated-->
        insert into thirdparty_station_relation
        (station_id, third_party_type, start_mode, create_time, create_by, update_time, update_by,
        del_flag)
        values
        <foreach collection="list" item="item" separator=",">
            (#{item.stationId,jdbcType=INTEGER}, #{item.thirdPartyType,jdbcType=VARCHAR}, #{item.startMode,jdbcType=VARCHAR},
            #{item.createTime,jdbcType=TIMESTAMP}, #{item.createBy,jdbcType=VARCHAR}, #{item.updateTime,jdbcType=TIMESTAMP},
            #{item.updateBy,jdbcType=VARCHAR}, #{item.delFlag,jdbcType=CHAR})
        </foreach>
    </insert>

    <select id="selectRelationInfo" resultType="com.jsowell.pile.vo.base.ThirdPartyStationRelationVO">
        select t1.station_id       as stationId,
               t1.third_party_type as thirdPartyType,
               t1.start_mode       as startMode,
               t2.url_address      as urlAddress,
               t2.operator_id      as operatorId,
               t2.operator_secret  as operatorSecret,
               t2.sign_secret      as signSecret,
               t2.data_secret      as dataSecret,
               t2.data_secret_IV   as dataSecretIv
        from thirdparty_station_relation t1
                 join thirdparty_setting_info t2 on t1.third_party_type = t2.type
        where t1.del_flag = '0'
        <if test="stationId != null">
            and t1.station_id = #{stationId,jdbcType=BIGINT}
        </if>
        <if test="thirdPartyType != null and thirdPartyType != ''">
            and t1.third_party_type = #{thirdPartyType,jdbcType=VARCHAR}
        </if>
        limit 1
    </select>

    <select id="getRelationInfoList" resultType="com.jsowell.pile.vo.base.ThirdPartyStationRelationVO">
        select t1.station_id       as stationId,
               t1.third_party_type as thirdPartyType,
               t1.start_mode       as startMode,
               t2.url_address      as urlAddress,
               t2.operator_id      as operatorId,
               t2.operator_secret  as operatorSecret,
               t2.sign_secret      as signSecret,
               t2.data_secret      as dataSecret,
               t2.data_secret_IV   as dataSecretIv
        from thirdparty_station_relation t1
                 join thirdparty_setting_info t2 on t1.third_party_type = t2.type
        where t1.del_flag = '0'
        <if test="stationId != null">
            and t1.station_id = #{stationId,jdbcType=BIGINT}
        </if>
    </select>

    <update id="updateRelationDelFlag">
        update
            thirdparty_station_relation
        set del_flag = '1'
        where station_id = #{stationId,jdbcType=VARCHAR}
          and third_party_type in
        <foreach collection="types" open="(" item="type" close=")" separator=",">
            #{type,jdbcType=VARCHAR}
        </foreach>
    </update>

    <select id="selectMerchantList" resultType="com.jsowell.pile.vo.base.MerchantInfoVO">
        select
            t3.id as merchantId,
            t3.merchant_name as merchantName,
            t3.service_phone as merchantTel,
            t3.organization_code as organizationCode,
            t3.dept_id as deptId,
            t3.merchant_level as merchantLevel,
            t3.address as merchantAddress
        from
            thirdparty_station_relation t1
        join pile_station_info t2 on t2.id = t1.station_id and t2.del_flag = '0'
        join pile_merchant_info t3 on t3.id = t2.merchant_id and t3.del_flag = '0'
        where t1.del_flag = '0'
        and t1.third_party_type = #{thirdPlatformType,jdbcType=VARCHAR}
        GROUP BY t3.id
    </select>

    <select id="selectStationList" resultType="com.jsowell.pile.vo.base.StationInfoVO">
        select
            t1.station_id as stationId,
            t2.station_name as stationName
        from thirdparty_station_relation t1
        join pile_station_info t2 on t2.id = t1.station_id and t2.del_flag = '0'
        where t1.del_flag = '0'
        and t1.third_party_type = #{thirdPlatformType,jdbcType=VARCHAR}
    </select>

    <select id="selectRelationListByStationId" resultMap="ThirdPartyStationRelationResult">
        select
            <include refid="Base_Column_List"/>
        from thirdparty_station_relation
        where station_id = #{stationId,jdbcType=VARCHAR}
    </select>

    <insert id="insertOrUpdateSelective" keyColumn="id" keyProperty="id" parameterType="com.jsowell.pile.domain.ThirdPartyStationRelation" useGeneratedKeys="true">
        <!--@mbg.generated-->
        insert into thirdparty_station_relation
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">
                id,
            </if>
            <if test="stationId != null">
                station_id,
            </if>
            <if test="thirdPartyType != null">
                third_party_type,
            </if>
            <if test="startMode != null">
                start_mode,
            </if>
            <if test="createBy != null">
                create_by,
            </if>
            <if test="updateBy != null">
                update_by,
            </if>
            <if test="delFlag != null">
                del_flag,
            </if>
        </trim>
        values
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">
                #{id,jdbcType=INTEGER},
            </if>
            <if test="stationId != null">
                #{stationId,jdbcType=INTEGER},
            </if>
            <if test="thirdPartyType != null">
                #{thirdPartyType,jdbcType=VARCHAR},
            </if>
            <if test="startMode != null">
                #{startMode,jdbcType=VARCHAR},
            </if>
            <if test="createBy != null">
                #{createBy,jdbcType=VARCHAR},
            </if>
            <if test="updateBy != null">
                #{updateBy,jdbcType=VARCHAR},
            </if>
            <if test="delFlag != null">
                #{delFlag,jdbcType=CHAR},
            </if>
        </trim>
        on duplicate key update
        <trim suffixOverrides=",">
            <if test="id != null">
                id = #{id,jdbcType=INTEGER},
            </if>
            <if test="stationId != null">
                station_id = #{stationId,jdbcType=INTEGER},
            </if>
            <if test="thirdPartyType != null">
                third_party_type = #{thirdPartyType,jdbcType=VARCHAR},
            </if>
            <if test="startMode != null">
                start_mode = #{startMode,jdbcType=VARCHAR},
            </if>
            <if test="createBy != null">
                create_by = #{createBy,jdbcType=VARCHAR},
            </if>
            <if test="updateBy != null">
                update_by = #{updateBy,jdbcType=VARCHAR},
            </if>
            <if test="delFlag != null">
                del_flag = #{delFlag,jdbcType=CHAR},
            </if>
        </trim>
    </insert>


</mapper>