<?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="XxlJobLogMapper">
	
	<resultMap id="XxlJobLog" type="com.xxl.job.core.model.XxlJobLog" >
		<result column="id" property="id" />
	
	    <result column="job_group" property="jobGroup" />
	    <result column="job_name" property="jobName" />
	    <result column="job_cron" property="jobCron" />
	    <result column="job_desc" property="jobDesc" />
	    <result column="job_class" property="jobClass" />
	    <result column="job_data" property="jobData" />
	    
	    <result column="trigger_time" property="triggerTime" />
	    <result column="trigger_status" property="triggerStatus" />
	    <result column="trigger_msg" property="triggerMsg" />
	    
	    <result column="handle_time" property="handleTime" />
	    <result column="handle_status" property="handleStatus" />
	    <result column="handle_msg" property="handleMsg" />
	</resultMap>

	<sql id="Base_Column_List">
		t.id,
		t.job_group,
		t.job_name,
		t.job_cron,
		t.job_desc,
		t.job_class,
		t.job_desc,
		t.trigger_time,
		t.trigger_status,
		t.trigger_msg,
		t.handle_time,
		t.handle_status,
		t.handle_msg
	</sql>
	
	<select id="pageList" parameterType="java.util.HashMap" resultMap="XxlJobLog">
		SELECT <include refid="Base_Column_List" />
		FROM xxl_job_qrtz_trigger_log AS t
		<trim prefix="WHERE" prefixOverrides="AND | OR" >
			<if test="jobGroup != null and jobGroup != ''">
				AND t.job_group = #{jobGroup}
			</if>
			<if test="jobName != null and jobName != ''">
				AND t.job_name = #{jobName}
			</if>
			<if test="triggerTimeStart != null">
				AND t.trigger_time <![CDATA[ >= ]]> #{triggerTimeStart}
			</if>
			<if test="triggerTimeEnd != null">
				AND t.trigger_time <![CDATA[ <= ]]> #{triggerTimeEnd}
			</if>
		</trim>
		ORDER BY id DESC
		LIMIT #{offset}, #{pagesize}
	</select>
	
	<select id="pageListCount" parameterType="java.util.HashMap" resultType="int">
		SELECT count(1)
		FROM xxl_job_qrtz_trigger_log AS t
		<trim prefix="WHERE" prefixOverrides="AND | OR" >
			<if test="jobGroup != null and jobGroup != ''">
				AND t.job_group = #{jobGroup}
			</if>
			<if test="jobName != null and jobName != ''">
				AND t.job_name = #{jobName}
			</if>
			<if test="triggerTimeStart != null">
				AND t.trigger_time <![CDATA[ >= ]]> #{triggerTimeStart}
			</if>
			<if test="triggerTimeEnd != null">
				AND t.trigger_time <![CDATA[ <= ]]> #{triggerTimeEnd}
			</if>
		</trim>
	</select>
	
	<select id="load" parameterType="java.lang.Integer" resultMap="XxlJobLog">
		SELECT <include refid="Base_Column_List" />
		FROM xxl_job_qrtz_trigger_log AS t
		WHERE t.id = #{id}
	</select>
	
	<select id="loadByGroupAndName" parameterType="java.util.HashMap" resultMap="XxlJobLog">
		SELECT <include refid="Base_Column_List" />
		FROM xxl_job_qrtz_trigger_log AS t
		WHERE t.job_group = #{jobGroup}
			AND t.job_name = #{jobName}
	</select>
	
	<insert id="save" parameterType="com.xxl.job.core.model.XxlJobLog" useGeneratedKeys="true" keyProperty="id" >
		INSERT INTO `xxl_job_qrtz_trigger_log` (
			`job_group`,
			`job_name`,
			`job_cron`, 
			`job_desc`,
			`job_class`, 
			`job_data`
		) VALUES (
			#{jobGroup}, 
			#{jobName},
			#{jobCron},
			#{jobDesc},
			#{jobClass},
			#{jobData}
		);
		<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id"> 
			SELECT LAST_INSERT_ID() 
		</selectKey> 
	</insert>
	
	<update id="updateTriggerInfo">
		UPDATE `xxl_job_qrtz_trigger_log` 
		SET 
			`trigger_time`= #{triggerTime}, 
			`trigger_status`= #{triggerStatus}, 
			`trigger_msg`= #{triggerMsg}
		WHERE `id`= #{id}
	</update>
	
	<update id="updateHandleInfo">
		UPDATE `xxl_job_qrtz_trigger_log` 
		SET 
			`handle_time`= #{handleTime}, 
			`handle_status`= #{handleStatus}, 
			`handle_msg`= #{handleMsg} 
		WHERE `id`= #{id}
	</update>
	
</mapper>