<?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.roadm.mapper.UnknownAlarmStrategyMapper">

    <resultMap type="cn.roadm.bo.UnknownAlarmStrategyBO" id="SmsUnknownAlarmStrategyMap">
        <result property="id" column="id" jdbcType="INTEGER"/>
        <result property="name" column="name" jdbcType="VARCHAR"/>
        <result property="unknownRate" column="unknown_rate" jdbcType="INTEGER"/>
        <result property="channelId" column="channel_id" jdbcType="NUMERIC"/>
        <result property="unknownCount" column="unknown_count" jdbcType="NUMERIC"/>
        <result property="channelName" column="channelName" jdbcType="VARCHAR"/>
        <result property="alarmContent" column="alarm_content" jdbcType="VARCHAR"/>
        <result property="status" column="status" jdbcType="INTEGER"/>
        <result property="alarmType" column="alarm_type" jdbcType="VARCHAR"/>
        <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
        <result column="sp_list" property="spList"/>
    </resultMap>


    <select id="listPageUnknownAlarmStrategy" resultMap="SmsUnknownAlarmStrategyMap">

        SELECT id, name, unknown_rate, unknown_count,(select concat(sci.id,'-',sci.channel_name) from sms_send_channel_info sci where sci.id=channel_id) channelName, alarm_content, status, DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%s') create_time,
        b.sp_list,CASE
        WHEN a.alarm_type like '%1%' and a.alarm_type like '%2%' and a.alarm_type like '%3%'  THEN '短信，邮箱，企微/钉钉'
        WHEN a.alarm_type like '%1%' and a.alarm_type like '%2%'  THEN '短信，邮箱'
        WHEN a.alarm_type like '%1%' and a.alarm_type like '%3%'  THEN '短信，企微/钉钉'
        WHEN a.alarm_type like '%2%' and a.alarm_type like '%3%'  THEN '邮箱，企微/钉钉'
        WHEN a.alarm_type like '%1%' THEN '短信'
        WHEN a.alarm_type like '%2%' THEN '邮箱'
        WHEN a.alarm_type like '%3%' THEN '企微/钉钉'
        ELSE ''
        END alarm_type
        FROM sms_unknown_alarm_strategy a
        LEFT JOIN (SELECT strategy_id, GROUP_CONCAT(sp_id) as sp_list
        FROM sms_unknown_alarm_sp
        GROUP BY strategy_id) b ON a.id = b.strategy_id
        <where>
            status = 0
            <if test="name != null and name != ''">
                and name like concat('%', #{name}, '%')
            </if>
            <if test="channelId != null">
                and channel_id =#{channelId}
            </if>
        </where>
        order by a.create_time desc
    </select>

    <select id="getUnknownAlarmStrategyById" resultMap="SmsUnknownAlarmStrategyMap">
        select id, name, unknown_rate,unknown_count,channel_id, alarm_content, status, create_time,alarm_type
        from sms_unknown_alarm_strategy
        where id = #{id}
    </select>
    <select id="queryUnknownAlarmStrategySp" resultType="cn.roadm.bo.UnknownAlarmStrategySpBO">
        select sp_id as spId, strategy_id as strategyId from `sms_unknown_alarm_sp` where strategy_id = #{strategyId}
    </select>
    <select id="queryAllSp" resultType="cn.roadm.bo.UnknownAlarmStrategySpBO">
        select id as spId, sp_name as spName from `sms_sp_info` where status = 1
    </select>
    <insert id="insertUnknownAlarmStrategy">
        insert into sms_unknown_alarm_strategy(name, unknown_count,unknown_rate, alarm_content,channel_id, alarm_type,status)
        values (#{name}, #{unknownCount},#{unknownRate}, #{alarmContent}, #{channelId},#{alarmType}, 0)
    </insert>

    <update id="updateUnknownAlarmStrategy">
        update sms_unknown_alarm_strategy
        set name          = #{name},
            unknown_count = #{unknownCount},
            unknown_rate = #{unknownRate},
            channel_id  = #{channelId},
            alarm_content = #{alarmContent},
            alarm_type = #{alarmType}
            where id = #{id}
    </update>
    <update id="deleteUnknownAlarmStrategy">
        update sms_unknown_alarm_strategy
        set status = 1
        where id = #{id}
    </update>

    <insert id="addTimePeriodStrategySp">
        insert into `sms_unknown_alarm_sp` (sp_id, strategy_id) values
        <foreach collection="spList" item="sp" separator=",">
            (${sp}, ${tid})
        </foreach>
    </insert>
    <delete id="deleteThisStrategySp">
        delete from `sms_unknown_alarm_sp` where strategy_id = #{id}
    </delete>
</mapper>

