<?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.zehong.system.mapper.TTrainCourseStatMapper">

    <resultMap id="TrainCourseStatResult" type="TrainCourseStat">
    <result property="courseId"    column="course_id"    />
    <result property="courseName"    column="course_name"    />
    <result property="releaseTime"    column="release_time"    />
    <result property="planName"    column="plan_name"    />
    <result property="maybeTestNum"    column="maybeTestNum"    />
    <result property="finishNum"    column="finishNum"    />
    </resultMap>

    <resultMap id="TrainCourseStatDetailResult" type="TrainCourseStatDetail">
        <result property="userCourseId" column="user_course_id"></result>
        <result property="nickName"    column="nick_name"    />
        <result property="deptName"    column="dept_name"    />
        <result property="finishDuration"    column="finish_duration"    />
        <result property="trainState"    column="train_state"    />
        <result property="isComplete"    column="isComplete"    />
    </resultMap>

    <select id="getTrainCourseStatData" parameterType="com.zehong.system.domain.TrainCourseStat" resultMap="TrainCourseStatResult">
        SELECT
          train.course_id,
          train.course_name,
          train.release_time,
          plan.plan_name,
          (SELECT count(1) FROM t_train_plan_post post WHERE plan_id = plan.plan_id)AS maybeTestNum,
          (SELECT count(1) FROM t_train_user_course courseUse WHERE courseUse.course_id = train.course_id AND courseUse.train_state = '1')AS finishNum
        FROM
            t_train_course train
        LEFT JOIN t_train_plan plan ON plan.plan_id = train.course_type
        <where>
            train.is_del = '0'
            AND train.status = '1'
            <if test="courseId != null "> and train.course_id = #{courseId}</if>
            <if test="courseName !='' and courseName!= null">and train.course_name like concat('%', #{courseName}, '%')</if>
            <if test="releaseBeginTime != null and releaseEndTime">and train.release_time BETWEEN #{releaseBeginTime} AND #{releaseEndTime} </if>
        </where>
        ORDER BY train.release_time DESC
    </select>

    <select id="getTrainCourseStatDetailData" parameterType="Long" resultMap="TrainCourseStatDetailResult">
        SELECT
          courseUse.user_course_id,
            us.nick_name,
          dept.dept_name,
          courseUse.finish_duration,
          courseUse.train_state,
            (
                CASE courseUse.train_state
                WHEN '0' THEN
                    '未完成'
                WHEN '1' THEN
                    '完成'
                END
            ) AS isComplete
        FROM
            t_train_user_course courseUse
        LEFT JOIN sys_user us ON us.user_id = courseUse.user_id
        LEFT JOIN sys_dept dept ON dept.dept_id = us.dept_id
        WHERE courseUse.course_id = #{courseId}
    </select>

</mapper>