|
@@ -43,6 +43,7 @@
|
|
<result property="userCode" column="user_code"/>
|
|
<result property="userCode" column="user_code"/>
|
|
<result property="isShow" column="is_show"/>
|
|
<result property="isShow" column="is_show"/>
|
|
<result property="qwExtId" column="qw_ext_id" />
|
|
<result property="qwExtId" column="qw_ext_id" />
|
|
|
|
+ <result property="isAddQw" column="is_add_qw" />
|
|
</resultMap>
|
|
</resultMap>
|
|
|
|
|
|
<sql id="selectFsUserVo">
|
|
<sql id="selectFsUserVo">
|
|
@@ -80,6 +81,7 @@
|
|
is_del,
|
|
is_del,
|
|
is_weixin_auth,
|
|
is_weixin_auth,
|
|
company_id,
|
|
company_id,
|
|
|
|
+ is_add_qw,
|
|
company_user_id,
|
|
company_user_id,
|
|
register_date,
|
|
register_date,
|
|
register_code,
|
|
register_code,
|
|
@@ -261,6 +263,7 @@
|
|
<if test="userCode != null">user_code,</if>
|
|
<if test="userCode != null">user_code,</if>
|
|
<if test="isShow != null">is_show,</if>
|
|
<if test="isShow != null">is_show,</if>
|
|
<if test="qwExtId != null">qw_ext_id,</if>
|
|
<if test="qwExtId != null">qw_ext_id,</if>
|
|
|
|
+ <if test="isAddQw != null">is_add_qw,</if>
|
|
</trim>
|
|
</trim>
|
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
|
<if test="username != null">#{username},</if>
|
|
<if test="username != null">#{username},</if>
|
|
@@ -301,6 +304,7 @@
|
|
<if test="userCode != null">#{userCode},</if>
|
|
<if test="userCode != null">#{userCode},</if>
|
|
<if test="isShow != null">#{isShow},</if>
|
|
<if test="isShow != null">#{isShow},</if>
|
|
<if test="qwExtId != null">#{qwExtId},</if>
|
|
<if test="qwExtId != null">#{qwExtId},</if>
|
|
|
|
+ <if test="isAddQw != null">#{isAddQw},</if>
|
|
</trim>
|
|
</trim>
|
|
</insert>
|
|
</insert>
|
|
|
|
|
|
@@ -345,6 +349,7 @@
|
|
<if test="userCode != null">user_code = #{userCode},</if>
|
|
<if test="userCode != null">user_code = #{userCode},</if>
|
|
<if test="isShow != null">is_show = #{isShow},</if>
|
|
<if test="isShow != null">is_show = #{isShow},</if>
|
|
<if test="qwExtId != null">qw_ext_id = #{qwExtId},</if>
|
|
<if test="qwExtId != null">qw_ext_id = #{qwExtId},</if>
|
|
|
|
+ <if test="isAddQw != null">is_add_qw = #{isAddQw},</if>
|
|
</trim>
|
|
</trim>
|
|
where user_id = #{userId}
|
|
where user_id = #{userId}
|
|
</update>
|
|
</update>
|
|
@@ -643,7 +648,7 @@
|
|
SELECT
|
|
SELECT
|
|
(
|
|
(
|
|
SELECT
|
|
SELECT
|
|
- count( fcc.user_id )
|
|
|
|
|
|
+ count(distinct fcc.user_id )
|
|
FROM
|
|
FROM
|
|
fs_user_course_count fcc
|
|
fs_user_course_count fcc
|
|
LEFT JOIN fs_user ON fs_user.user_id = fcc.user_id
|
|
LEFT JOIN fs_user ON fs_user.user_id = fcc.user_id
|
|
@@ -666,7 +671,7 @@
|
|
) as courseWatchNum,
|
|
) as courseWatchNum,
|
|
(
|
|
(
|
|
SELECT
|
|
SELECT
|
|
- count( fcc.user_id )
|
|
|
|
|
|
+ count(distinct fcc.user_id )
|
|
FROM
|
|
FROM
|
|
fs_user_course_count fcc
|
|
fs_user_course_count fcc
|
|
LEFT JOIN fs_user ON fs_user.user_id = fcc.user_id
|
|
LEFT JOIN fs_user ON fs_user.user_id = fcc.user_id
|
|
@@ -694,7 +699,7 @@
|
|
SELECT
|
|
SELECT
|
|
(
|
|
(
|
|
SELECT
|
|
SELECT
|
|
- count( fs_user.user_id )
|
|
|
|
|
|
+ count(distinct fs_user.user_id )
|
|
FROM
|
|
FROM
|
|
fs_course_answer_logs
|
|
fs_course_answer_logs
|
|
LEFT JOIN fs_user ON fs_user.user_id = fs_course_answer_logs.user_id
|
|
LEFT JOIN fs_user ON fs_user.user_id = fs_course_answer_logs.user_id
|
|
@@ -716,7 +721,7 @@
|
|
) AS answerNum,
|
|
) AS answerNum,
|
|
(
|
|
(
|
|
SELECT
|
|
SELECT
|
|
- count( fs_user.user_id )
|
|
|
|
|
|
+ count(distinct fs_user.user_id )
|
|
FROM
|
|
FROM
|
|
fs_course_answer_logs
|
|
fs_course_answer_logs
|
|
LEFT JOIN fs_user ON fs_user.user_id = fs_course_answer_logs.user_id
|
|
LEFT JOIN fs_user ON fs_user.user_id = fs_course_answer_logs.user_id
|
|
@@ -788,17 +793,20 @@
|
|
</select>
|
|
</select>
|
|
|
|
|
|
<select id="countCourseDetails" resultType="Map">
|
|
<select id="countCourseDetails" resultType="Map">
|
|
- select (SELECT count(fc.course_id)
|
|
|
|
|
|
+ select (SELECT count(DISTINCT fc.course_id)
|
|
FROM fs_user_course fc
|
|
FROM fs_user_course fc
|
|
WHERE fc.is_del = 0
|
|
WHERE fc.is_del = 0
|
|
|
|
+ AND FIND_IN_SET(#{companyId}, fc.company_ids)
|
|
<if test="courseId != null and courseId != ''">
|
|
<if test="courseId != null and courseId != ''">
|
|
AND fc.course_id = #{courseId}
|
|
AND fc.course_id = #{courseId}
|
|
</if>
|
|
</if>
|
|
) as courseNum,
|
|
) as courseNum,
|
|
|
|
|
|
- (SELECT count(fcv.video_id)
|
|
|
|
|
|
+ (SELECT count(DISTINCT fcv.video_id)
|
|
FROM fs_user_course_video fcv
|
|
FROM fs_user_course_video fcv
|
|
LEFT JOIN fs_user_course fc ON fc.course_id = fcv.course_id
|
|
LEFT JOIN fs_user_course fc ON fc.course_id = fcv.course_id
|
|
|
|
+ WHERE fc.is_del = 0
|
|
|
|
+ AND FIND_IN_SET(#{companyId}, fc.company_ids)
|
|
<if test="courseId != null and courseId != ''">
|
|
<if test="courseId != null and courseId != ''">
|
|
AND fcv.course_id = #{courseId}
|
|
AND fcv.course_id = #{courseId}
|
|
</if>
|
|
</if>
|
|
@@ -806,7 +814,7 @@
|
|
AND fcv.video_id = #{videoId}
|
|
AND fcv.video_id = #{videoId}
|
|
</if>
|
|
</if>
|
|
) as videoNum,
|
|
) as videoNum,
|
|
- ( SELECT count( user_id ) FROM fs_user_course_count fcc
|
|
|
|
|
|
+ ( SELECT count(DISTINCT user_id ) FROM fs_user_course_count fcc
|
|
LEFT JOIN fs_user_course_video fcv ON fcv.course_id = fcc.course_id
|
|
LEFT JOIN fs_user_course_video fcv ON fcv.course_id = fcc.course_id
|
|
<if test="courseId != null and courseId != ''">
|
|
<if test="courseId != null and courseId != ''">
|
|
AND fcc.course_id = #{courseId}
|
|
AND fcc.course_id = #{courseId}
|
|
@@ -817,11 +825,11 @@
|
|
) as courseUserNum
|
|
) as courseUserNum
|
|
</select>
|
|
</select>
|
|
|
|
|
|
- <select id="countUserRanking" resultType="FsUserRankingVO">
|
|
|
|
|
|
+ <select id="countUserRankingByComplete" resultType="FsUserRankingVO">
|
|
SELECT
|
|
SELECT
|
|
company_user.nick_name as userName,
|
|
company_user.nick_name as userName,
|
|
ifnull(
|
|
ifnull(
|
|
- ROUND((COUNT( CASE WHEN fcc.complete_watch_count > 0 THEN 1 END ) / count( fcc.user_id ))*100,2),0
|
|
|
|
|
|
+ ROUND((COUNT(DISTINCT CASE WHEN fcc.complete_watch_count > 0 THEN 1 END ) / count(1))*100,2),0
|
|
) as completeRate
|
|
) as completeRate
|
|
FROM
|
|
FROM
|
|
fs_user_course_count fcc
|
|
fs_user_course_count fcc
|
|
@@ -829,7 +837,7 @@
|
|
LEFT JOIN company_user ON fs_user.company_user_id = company_user.user_id
|
|
LEFT JOIN company_user ON fs_user.company_user_id = company_user.user_id
|
|
LEFT JOIN fs_user_course_video fcv ON fcv.course_id = fcc.course_id
|
|
LEFT JOIN fs_user_course_video fcv ON fcv.course_id = fcc.course_id
|
|
WHERE
|
|
WHERE
|
|
- company_user.parent_id = #{userId}
|
|
|
|
|
|
+ ( company_user.user_id = #{userId} OR company_user.parent_id = #{userId} )
|
|
<if test="startTime != null and startTime !='' ">
|
|
<if test="startTime != null and startTime !='' ">
|
|
AND fcc.create_time >= #{startTime}
|
|
AND fcc.create_time >= #{startTime}
|
|
</if>
|
|
</if>
|
|
@@ -843,15 +851,25 @@
|
|
AND fcv.video_id = #{videoId}
|
|
AND fcv.video_id = #{videoId}
|
|
</if>
|
|
</if>
|
|
group by fcc.user_id
|
|
group by fcc.user_id
|
|
- order by completeRate #{order}
|
|
|
|
|
|
+ <choose>
|
|
|
|
+ <when test="order != null and order == 'asc'">
|
|
|
|
+ order by completeRate asc
|
|
|
|
+ </when>
|
|
|
|
+ <when test="order != null and order == 'desc'">
|
|
|
|
+ order by completeRate desc
|
|
|
|
+ </when>
|
|
|
|
+ <otherwise>
|
|
|
|
+ order by completeRate desc
|
|
|
|
+ </otherwise>
|
|
|
|
+ </choose>
|
|
limit 20
|
|
limit 20
|
|
</select>
|
|
</select>
|
|
|
|
|
|
- <select id="countCourseRanking" resultType="FsUserRankingVO">
|
|
|
|
|
|
+ <select id="countUserRankingByRight" resultType="FsUserRankingVO">
|
|
SELECT
|
|
SELECT
|
|
company_user.nick_name as userName,
|
|
company_user.nick_name as userName,
|
|
ifnull(ROUND(
|
|
ifnull(ROUND(
|
|
- (COUNT( CASE WHEN fs_course_answer_logs.is_right = 1 THEN 1 END ) / count( fs_user.user_id ))
|
|
|
|
|
|
+ (COUNT(DISTINCT CASE WHEN fs_course_answer_logs.is_right = 1 THEN 1 END ) / count(1))
|
|
*100,2),0
|
|
*100,2),0
|
|
) as answerRightRate
|
|
) as answerRightRate
|
|
FROM
|
|
FROM
|
|
@@ -859,7 +877,7 @@
|
|
LEFT JOIN fs_user ON fs_user.user_id = fs_course_answer_logs.user_id
|
|
LEFT JOIN fs_user ON fs_user.user_id = fs_course_answer_logs.user_id
|
|
LEFT JOIN company_user ON company_user.user_id = fs_user.company_user_id
|
|
LEFT JOIN company_user ON company_user.user_id = fs_user.company_user_id
|
|
WHERE
|
|
WHERE
|
|
- company_user.parent_id = #{userId}
|
|
|
|
|
|
+ ( company_user.user_id = #{userId} OR company_user.parent_id = #{userId} )
|
|
<if test="startTime != null and startTime !='' ">
|
|
<if test="startTime != null and startTime !='' ">
|
|
AND fs_course_answer_logs.create_time >= #{startTime}
|
|
AND fs_course_answer_logs.create_time >= #{startTime}
|
|
</if>
|
|
</if>
|
|
@@ -873,8 +891,109 @@
|
|
AND fs_course_answer_logs.video_id = #{videoId}
|
|
AND fs_course_answer_logs.video_id = #{videoId}
|
|
</if>
|
|
</if>
|
|
group by fs_user.user_id
|
|
group by fs_user.user_id
|
|
- order by answerRightRate #{order}
|
|
|
|
|
|
+ <choose>
|
|
|
|
+ <when test="order != null and order == 'asc'">
|
|
|
|
+ order by answerRightRate asc
|
|
|
|
+ </when>
|
|
|
|
+ <when test="order != null and order == 'desc'">
|
|
|
|
+ order by answerRightRate desc
|
|
|
|
+ </when>
|
|
|
|
+ <otherwise>
|
|
|
|
+ order by answerRightRate desc
|
|
|
|
+ </otherwise>
|
|
|
|
+ </choose>
|
|
limit 20
|
|
limit 20
|
|
</select>
|
|
</select>
|
|
|
|
|
|
|
|
+ <select id="countCourseRankingByComplete" resultType="FsCourseRankingVO">
|
|
|
|
+ SELECT
|
|
|
|
+ fcv.title AS videoName,
|
|
|
|
+ ifnull(
|
|
|
|
+ ROUND((
|
|
|
|
+ COUNT( DISTINCT CASE WHEN fcc.complete_watch_count > 0 THEN 1 END ) / count(1))* 100,
|
|
|
|
+ 2
|
|
|
|
+ ),
|
|
|
|
+ 0
|
|
|
|
+ ) AS completeRate
|
|
|
|
+ FROM
|
|
|
|
+ fs_user_course_count fcc
|
|
|
|
+ LEFT JOIN fs_user ON fs_user.user_id = fcc.user_id
|
|
|
|
+ LEFT JOIN company_user ON fs_user.company_user_id = company_user.user_id
|
|
|
|
+ LEFT JOIN fs_user_course_video fcv ON fcv.course_id = fcc.course_id
|
|
|
|
+ WHERE
|
|
|
|
+ ( company_user.user_id = #{userId} OR company_user.parent_id = #{userId} )
|
|
|
|
+ <if test="startTime != null and startTime !='' ">
|
|
|
|
+ AND fcc.create_time >= #{startTime}
|
|
|
|
+ </if>
|
|
|
|
+ <if test="endTime != null and endTime != ''">
|
|
|
|
+ AND fcc.create_time <= #{endTime}
|
|
|
|
+ </if>
|
|
|
|
+ <if test="courseId != null and courseId != ''">
|
|
|
|
+ AND fcc.course_id = #{courseId}
|
|
|
|
+ </if>
|
|
|
|
+ <if test="videoId != null and videoId != ''">
|
|
|
|
+ AND fcv.video_id = #{videoId}
|
|
|
|
+ </if>
|
|
|
|
+ GROUP BY
|
|
|
|
+ fcv.video_id
|
|
|
|
+ <choose>
|
|
|
|
+ <when test="order != null and order == 'asc'">
|
|
|
|
+ ORDER BY completeRate asc
|
|
|
|
+ </when>
|
|
|
|
+ <when test="order != null and order == 'desc'">
|
|
|
|
+ ORDER BY completeRate desc
|
|
|
|
+ </when>
|
|
|
|
+ <otherwise>
|
|
|
|
+ ORDER BY completeRate desc
|
|
|
|
+ </otherwise>
|
|
|
|
+ </choose>
|
|
|
|
+ LIMIT 20
|
|
|
|
+ </select>
|
|
|
|
+
|
|
|
|
+ <select id="countCourseRankingByRight" resultType="FsCourseRankingVO">
|
|
|
|
+ SELECT
|
|
|
|
+ fcv.title AS videoName,
|
|
|
|
+ ifnull(
|
|
|
|
+ ROUND(
|
|
|
|
+ (
|
|
|
|
+ COUNT( DISTINCT CASE WHEN fs_course_answer_logs.is_right = 1 THEN 1 END ) / count(1)) * 100,
|
|
|
|
+ 2
|
|
|
|
+ ),
|
|
|
|
+ 0
|
|
|
|
+ ) AS answerRightRate
|
|
|
|
+ FROM
|
|
|
|
+ fs_course_answer_logs
|
|
|
|
+ LEFT JOIN fs_user ON fs_user.user_id = fs_course_answer_logs.user_id
|
|
|
|
+ LEFT JOIN company_user ON company_user.user_id = fs_user.company_user_id
|
|
|
|
+ LEFT JOIN fs_user_course_video fcv ON fcv.video_id = fs_course_answer_logs.video_id
|
|
|
|
+ WHERE
|
|
|
|
+ ( company_user.user_id = #{userId} OR company_user.parent_id = #{userId} )
|
|
|
|
+ <if test="startTime != null and startTime !='' ">
|
|
|
|
+ AND fs_course_answer_logs.create_time >= #{startTime}
|
|
|
|
+ </if>
|
|
|
|
+ <if test="endTime != null and endTime != ''">
|
|
|
|
+ AND fs_course_answer_logs.create_time <= #{endTime}
|
|
|
|
+ </if>
|
|
|
|
+ <if test="courseId != null and courseId != ''">
|
|
|
|
+ AND fs_course_answer_logs.course_id = #{courseId}
|
|
|
|
+ </if>
|
|
|
|
+ <if test="videoId != null and videoId != ''">
|
|
|
|
+ AND fs_course_answer_logs.video_id = #{videoId}
|
|
|
|
+ </if>
|
|
|
|
+ GROUP BY
|
|
|
|
+ fs_course_answer_logs.video_id
|
|
|
|
+ <choose>
|
|
|
|
+ <when test="order != null and order == 'asc'">
|
|
|
|
+ ORDER BY answerRightRate asc
|
|
|
|
+ </when>
|
|
|
|
+ <when test="order != null and order == 'desc'">
|
|
|
|
+ ORDER BY answerRightRate desc
|
|
|
|
+ </when>
|
|
|
|
+ <otherwise>
|
|
|
|
+ ORDER BY answerRightRate desc
|
|
|
|
+ </otherwise>
|
|
|
|
+ </choose>
|
|
|
|
+ LIMIT 20
|
|
|
|
+ </select>
|
|
|
|
+
|
|
</mapper>
|
|
</mapper>
|