<?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.srs.comprehensive.mapper.SrsAspectMapper">
    
    <resultMap type="SrsAspect" id="SrsAspectResult">
        <result property="id"    column="id"    />
        <result property="aspectName"    column="aspect_name"    />
        <result property="categoryId"    column="category_id"    />
        <result property="scoreMax"    column="score_max"    />
        <result property="scoreMin"    column="score_min"    />
        <result property="description"    column="description"    />
        <result property="status"    column="status"    />
        <result property="delFlag"    column="del_flag"    />
        <result property="createBy"    column="create_by"    />
        <result property="createTime"    column="create_time"    />
        <result property="updateBy"    column="update_by"    />
        <result property="updateTime"    column="update_time"    />
<!--        <association property="bonusRules"    column="category_id" javaType="srsBonusRules" resultMap="SrsBonusRulesResult" />-->
    </resultMap>
    <resultMap type="SrsBonusRules" id="SrsBonusRulesResult">
        <result property="id"    column="id"    />
        <result property="categoryName"    column="category_name"    />
    </resultMap>

    <sql id="selectSrsAspectVo">
        select a.id, a.aspect_name, a.category_id, a.score_max, a.score_min, a.description, a.status, a.del_flag, a.create_by, a.create_time, a.update_by, a.update_time
        from srs_aspect a
    </sql>
    <sql id="selectSrsAspectJoin">
        select a.id, a.aspect_name, a.category_id, a.score_max, a.score_min, a.description, a.status, a.del_flag, a.create_by, a.create_time, a.update_by, a.update_time
        ,b.*
        from srs_aspect a
                 left join srs_bonus_rules b ON a.category_id= b.id
    </sql>



    <select id="selectSrsAspectList" parameterType="SrsAspect" resultMap="SrsAspectResult">
        <include refid="selectSrsAspectVo"/>
        <where>
            <if test="aspectName != null  and aspectName != ''"> and aspect_name like concat('%', #{aspectName}, '%')</if>
            <if test="categoryId != null "> and category_id = #{categoryId}</if>
            <if test="scoreMax != null "> and score_max = #{scoreMax}</if>
            <if test="scoreMin != null "> and score_min = #{scoreMin}</if>
            <if test="description != null  and description != ''"> and description = #{description}</if>
            <if test="status != null  and status != ''"> and status = #{status}</if>
        </where>
    </select>
<!--    连表查询-->
    <select id="selectSrsAspectListJoin" parameterType="SrsAspect" resultMap="SrsAspectResult">
        <include refid="selectSrsAspectJoin"/>
        <where>  
            <if test="aspectName != null  and aspectName != ''"> and aspect_name like concat('%', #{aspectName}, '%')</if>
            <if test="categoryId != null "> and category_id = #{categoryId}</if>
            <if test="scoreMax != null "> and score_max = #{scoreMax}</if>
            <if test="scoreMin != null "> and score_min = #{scoreMin}</if>
            <if test="description != null  and description != ''"> and description = #{description}</if>
            <if test="status != null  and status != ''"> and status = #{status}</if>
        </where>
    </select>
    
    <select id="selectSrsAspectById" parameterType="Long" resultMap="SrsAspectResult">
        <include refid="selectSrsAspectVo"/>
        where id = #{id}
    </select>
        
    <insert id="insertSrsAspect" parameterType="SrsAspect" useGeneratedKeys="true" keyProperty="id">
        insert into srs_aspect
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="aspectName != null and aspectName != ''">aspect_name,</if>
            <if test="categoryId != null">category_id,</if>
            <if test="scoreMax != null">score_max,</if>
            <if test="scoreMin != null">score_min,</if>
            <if test="description != null">description,</if>
            <if test="status != null">status,</if>
            <if test="delFlag != null">del_flag,</if>
            <if test="createBy != null">create_by,</if>
            <if test="createTime != null">create_time,</if>
            <if test="updateBy != null">update_by,</if>
            <if test="updateTime != null">update_time,</if>
         </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="aspectName != null and aspectName != ''">#{aspectName},</if>
            <if test="categoryId != null">#{categoryId},</if>
            <if test="scoreMax != null">#{scoreMax},</if>
            <if test="scoreMin != null">#{scoreMin},</if>
            <if test="description != null">#{description},</if>
            <if test="status != null">#{status},</if>
            <if test="delFlag != null">#{delFlag},</if>
            <if test="createBy != null">#{createBy},</if>
            <if test="createTime != null">#{createTime},</if>
            <if test="updateBy != null">#{updateBy},</if>
            <if test="updateTime != null">#{updateTime},</if>
         </trim>
    </insert>

    <update id="updateSrsAspect" parameterType="SrsAspect">
        update srs_aspect
        <trim prefix="SET" suffixOverrides=",">
            <if test="aspectName != null and aspectName != ''">aspect_name = #{aspectName},</if>
            <if test="categoryId != null">category_id = #{categoryId},</if>
            <if test="scoreMax != null">score_max = #{scoreMax},</if>
            <if test="scoreMin != null">score_min = #{scoreMin},</if>
            <if test="description != null">description = #{description},</if>
            <if test="status != null">status = #{status},</if>
            <if test="delFlag != null">del_flag = #{delFlag},</if>
            <if test="createBy != null">create_by = #{createBy},</if>
            <if test="createTime != null">create_time = #{createTime},</if>
            <if test="updateBy != null">update_by = #{updateBy},</if>
            <if test="updateTime != null">update_time = #{updateTime},</if>
        </trim>
        where id = #{id}
    </update>

    <delete id="deleteSrsAspectById" parameterType="Long">
        delete from srs_aspect where id = #{id}
    </delete>

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