<?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="cn.timer.api.dao.insure.InsureLogMapper">

    <!-- 可根据自己的需求,是否要使用 -->
    <resultMap type="cn.timer.api.bean.insure.InsureLog" id="insureLogMap">
        <result property="id" column="id"/>
        <result property="requestPath" column="request_path"/>
        <result property="requestData" column="request_data"/>
        <result property="requestParam" column="request_param"/>
        <result property="createTime" column="create_time"/>
        <result property="returnTime" column="return_time"/>
        <result property="returnCode" column="return_code"/>
        <result property="returnBody" column="return_body"/>
        <result property="returnMsg" column="return_msg"/>
        <result property="transId" column="trans_id"/>
        <result property="type" column="type"/>
        <result property="requestType" column="request_type"/>
        <result property="policyId" column="policy_id"/>
        <result property="fileUrl" column="file_url"/>
    </resultMap>

    <select id="queryObject" resultType="cn.timer.api.bean.insure.InsureLog">
        select *
        from insure_log
        where id = #{value}
    </select>

    <select id="queryList" resultType="cn.timer.api.bean.insure.InsureLog">
        select * from insure_log
        <where>
            <if test="id != null and id != ''">AND `id` = #{id}</if>
            <if test="requestPath != null and requestPath != ''">AND `request_path` = #{requestPath}</if>
            <if test="requestData != null and requestData != ''">AND `request_data` = #{requestData}</if>
            <if test="requestParam != null and requestParam != ''">AND `request_param` = #{requestParam}</if>
            <if test="createTime != null and createTime != ''">AND `create_time` = #{createTime}</if>
            <if test="returnTime != null and returnTime != ''">AND `return_time` = #{returnTime}</if>
            <if test="returnCode != null and returnCode != ''">AND `return_code` = #{returnCode}</if>
            <if test="returnBody != null and returnBody != ''">AND `return_body` = #{returnBody}</if>
            <if test="returnMsg != null and returnMsg != ''">AND `return_msg` = #{returnMsg}</if>
            <if test="transId != null and transId != ''">AND `trans_id` = #{transId}</if>
            <if test="type != null and type != ''">AND `type` = #{type}</if>
        </where>
        <choose>
            <when test="sidx != null and sidx.trim() != ''">
                order by ${sidx} ${order}
            </when>
            <otherwise>
                order by id desc
            </otherwise>
        </choose>
        <if test="offset != null and limit != null">
            limit #{offset}, #{limit}
        </if>
    </select>

    <select id="queryTotal" resultType="int">
        select count(*) from insure_log
        <where>
            <if test="id != null and id != ''">AND `id` = #{id}</if>
            <if test="requestPath != null and requestPath != ''">AND `request_path` = #{requestPath}</if>
            <if test="requestData != null and requestData != ''">AND `request_data` = #{requestData}</if>
            <if test="requestParam != null and requestParam != ''">AND `request_param` = #{requestParam}</if>
            <if test="createTime != null and createTime != ''">AND `create_time` = #{createTime}</if>
            <if test="returnTime != null and returnTime != ''">AND `return_time` = #{returnTime}</if>
            <if test="returnCode != null and returnCode != ''">AND `return_code` = #{returnCode}</if>
            <if test="returnBody != null and returnBody != ''">AND `return_body` = #{returnBody}</if>
            <if test="returnMsg != null and returnMsg != ''">AND `return_msg` = #{returnMsg}</if>
            <if test="transId != null and transId != ''">AND `trans_id` = #{transId}</if>
            <if test="type != null and type != ''">AND `type` = #{type}</if>
        </where>
    </select>

    <insert id="save" parameterType="cn.timer.api.bean.insure.InsureLog">
        insert into insure_log
        (`id`,
         `request_path`,
         `request_data`,
         `request_param`,
         `create_time`,
         `return_time`,
         `return_code`,
         `return_body`,
         `return_msg`,
         `trans_id`,
         `type`)
        values (#{id},
                #{requestPath},
                #{requestData},
                #{requestParam},
                #{createTime},
                #{returnTime},
                #{returnCode},
                #{returnBody},
                #{returnMsg},
                #{transId},
                #{type})
    </insert>

    <insert id="saveSelective" parameterType="cn.timer.api.bean.insure.InsureLog">
        insert into insure_log
        (
        <if test="id != null">`id`</if>
        <if test="requestPath != null">,`request_path`</if>
        <if test="requestData != null">,`request_data`</if>
        <if test="requestParam != null">,`request_param`</if>
        <if test="createTime != null">,`create_time`</if>
        <if test="returnTime != null">,`return_time`</if>
        <if test="returnCode != null">,`return_code`</if>
        <if test="returnBody != null">,`return_body`</if>
        <if test="returnMsg != null">,`return_msg`</if>
        <if test="transId != null">,`trans_id`</if>
        <if test="type != null">,`type`</if>
        )
        values
        (
        <if test="id != null">#{id}</if>
        <if test="requestPath != null">,#{requestPath}</if>
        <if test="requestData != null">,#{requestData}</if>
        <if test="requestParam != null">,#{requestParam}</if>
        <if test="createTime != null">,#{createTime}</if>
        <if test="returnTime != null">,#{returnTime}</if>
        <if test="returnCode != null">,#{returnCode}</if>
        <if test="returnBody != null">,#{returnBody}</if>
        <if test="returnMsg != null">,#{returnMsg}</if>
        <if test="transId != null">,#{transId}</if>
        <if test="type != null">,#{type}</if>
        )
    </insert>


    <insert id="saveList" parameterType="cn.timer.api.bean.insure.InsureLog">
        insert into insure_log
        (
        `id`,
        `request_path`,
        `request_data`,
        `request_param`,
        `create_time`,
        `return_time`,
        `return_code`,
        `return_body`,
        `return_msg`,
        `trans_id`,
        `type`
        )
        values
        <foreach collection="list" item="item" index="index" separator=",">
            (
            #{item.id},
            #{item.requestPath},
            #{item.requestData},
            #{item.requestParam},
            #{item.createTime},
            #{item.returnTime},
            #{item.returnCode},
            #{item.returnBody},
            #{item.returnMsg},
            #{item.transId},
            #{item.type}
            )
        </foreach>
    </insert>


    <delete id="deleteBatch">
        delete from insure_log where id in
        <foreach item="id" collection="array" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>

    <select id="selectListById" resultType="cn.timer.api.bean.insure.InsureLog">
        select id,return_msg,`type`,create_time,file_url from insure_log
        where policy_id = #{policyId}
        ORDER BY create_time DESC
    </select>

    <select id="selectListByIds" resultType="cn.timer.api.bean.insure.InsureLog">
        select * from insure_log
        where type = 1 and policy_id in
        <foreach item="id" collection="array" open="(" separator="," close=")">
            #{id}
        </foreach>
    </select>
    <select id="selectLogListByOrgCode" resultType="cn.timer.api.dto.insure.PolicyLogDto">
    select ip.policy_no as policyNo,il.return_code as returnCode,il.return_msg as returnMsg,il.type as type,il.create_time as createTime from insure_log il
    LEFT JOIN insure_policy ip on ip.id=il.policy_id
    WHERE ip.org_code = #{orgCode}
    order by il.create_time desc
        <if test="page.currentPage != null and page.totalPage != null">
            limit #{page.offset}, #{page.totalPage}
        </if>
    </select>

    <select id="selectLogTotalByOrgCode" resultType="java.lang.Integer">
        select count(il.id) from insure_log il
         LEFT JOIN insure_policy ip on ip.id=il.policy_id
        WHERE ip.org_code = #{orgCode}
    </select>
</mapper>