<?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.railway.system.mapper.SysOperLogMapper">

  <resultMap type="SysOperLog" id="SysOperLogResult">
    <id property="operId" column="oper_id"/>
    <result property="title" column="title"/>
    <result property="businessType" column="business_type"/>
    <result property="method" column="method"/>
    <result property="requestMethod" column="request_method"/>
    <result property="operatorType" column="operator_type"/>
    <result property="operName" column="oper_name"/>
    <result property="deptName" column="dept_name"/>
    <result property="operUrl" column="oper_url"/>
    <result property="operIp" column="oper_ip"/>
    <result property="operLocation" column="oper_location"/>
    <result property="operParam" column="oper_param"/>
    <result property="jsonResult" column="json_result"/>
    <result property="status" column="status"/>
    <result property="errorMsg" column="error_msg"/>
    <result property="operTime" column="oper_time"/>
  </resultMap>

  <sql id="selectOperLogVo">
    select oper_id, title, business_type, method, request_method, operator_type, oper_name,
    dept_name, oper_url, oper_ip, oper_location, oper_param, json_result, status, error_msg,
    oper_time
    from sys_oper_log
  </sql>

  <insert id="insertOperlog" parameterType="SysOperLog">
    insert into sys_oper_log(title, business_type, method, request_method, operator_type, oper_name,
    dept_name, oper_url, oper_ip, oper_location, oper_param, json_result, status, error_msg,
    oper_time)
    values (#{title}, #{businessType}, #{method}, #{requestMethod}, #{operatorType}, #{operName},
    #{deptName}, #{operUrl}, #{operIp}, #{operLocation}, #{operParam}, #{jsonResult}, #{status},
    #{errorMsg}, sysdate())
  </insert>

  <select id="selectOperLogList" parameterType="SysOperLog" resultMap="SysOperLogResult">
    <include refid="selectOperLogVo"/>
    <where>
      <if test="title != null and title != ''">
        AND title like concat('%', #{title}, '%')
      </if>
      <if test="businessType != null and businessType != ''">
        AND business_type = #{businessType}
      </if>
      <if test="businessTypes != null and businessTypes.length > 0">
        AND business_type in
        <foreach collection="businessTypes" item="businessType" open="(" separator="," close=")">
          #{businessType}
        </foreach>
      </if>
      <if test="status != null">
        AND status = #{status}
      </if>
      <if test="operName != null and operName != ''">
        AND oper_name like concat('%', #{operName}, '%')
      </if>
      <if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
        and date_format(oper_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')
      </if>
      <if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
        and date_format(oper_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')
      </if>
    </where>
    order by oper_id desc
  </select>

  <delete id="deleteOperLogByIds" parameterType="Long">
    delete from sys_oper_log where oper_id in
    <foreach collection="array" item="operId" open="(" separator="," close=")">
      #{operId}
    </foreach>
  </delete>

  <select id="selectOperLogById" parameterType="Long" resultMap="SysOperLogResult">
    <include refid="selectOperLogVo"/>
    where oper_id = #{operId}
  </select>

  <update id="cleanOperLog">
    truncate table sys_oper_log
  </update>

</mapper> 