select log_id, user_id,finish_time,send_finish_msg,sop_id,video_id,reward_type, log_type, create_time,
update_time, qw_external_contact_id, duration, qw_user_id, company_user_id, company_id, course_id,
camp_period_time,project,period_id,watch_type,link_id from fs_course_watch_log
and user_id = #{userId}
and video_id = #{videoId}
and log_type = #{logType}
and qw_external_contact_id = #{qwExternalContactId}
and duration = #{duration}
and qw_user_id = #{qwUserId}
and company_user_id = #{companyUserId}
and company_id = #{companyId}
and course_id = #{courseId}
and send_type = #{sendType}
and camp_period_time = #{campPeriodTime}
and project = #{project}
and watch_type = #{watchType}
and create_time >= #{beginTime}
and create_time < #{endTime}
where log_id = #{logId}
select l.log_id,l.project,l.period_id,l.user_id,uc.course_name,v.title as video_name,qec.avatar as external_user_avatar,
l.log_type,SEC_TO_TIME(l.duration) as duration,c.company_name,l.camp_period_time,l.finish_time,
cu.nick_name as company_user_name ,l.send_type,l.create_time,l.update_time,l.last_heartbeat_time,
qu.qw_user_name,qec.name as external_user_name,c.company_id,u.avatar as fsAvatar,u.nick_name as fsNickName,qec.create_time as qec_create_time,
u.is_vip isVip,l.reward_type,cu.dept_id
from fs_course_watch_log l
left join fs_user_course_video v on v.video_id = l.video_id
left join fs_user_course uc on uc.course_id = l.course_id
left join fs_user u on u.user_id = l.user_id
left join company_user cu on cu.user_id = l.company_user_id
left join company c on c.company_id = l.company_id
LEFT JOIN qw_user qu on qu.id= l.qw_user_id
LEFT JOIN qw_external_contact qec on l.qw_external_contact_id = qec.id
and (l.user_id = 0 or l.user_id is null)
and l.user_id != 0 and l.user_id is not null
and l.send_type = #{maps.sendType}
and l.user_id = #{maps.userId}
and l.log_id = #{maps.logId}
and l.project = #{maps.project}
and l.qw_external_contact_id = #{maps.qwExternalContactId}
and l.qw_user_id = #{maps.qwUserId}
and l.course_id = #{maps.courseId}
and l.video_id = #{maps.videoId}
and l.log_type = #{maps.logType}
and l.company_id = #{maps.companyId}
and l.watch_type = #{maps.watchType}
and l.company_user_id = #{maps.companyUserId}
and cu.nick_name like concat('%', #{maps.companyUserName}, '%')
and u.nick_name like concat('%', #{maps.nickName}, '%')
and qec.name like concat('%', #{maps.externalUserName}, '%')
and DATE(qec.create_time) >= DATE(#{maps.qecSTime})
and DATE(qec.create_time) <= DATE(#{maps.qecETime})
and l.create_time >= #{maps.sTime}
and l.create_time <= #{maps.eTime}
and l.camp_period_time >= #{maps.scheduleStartTime}
and l.camp_period_time <= #{maps.scheduleEndTime}
and l.update_time >= #{maps.upSTime}
and l.update_time < date_add(#{maps.upETime}, interval 1 day)
and l.sop_id in
#{sopId}
and l.project = #{maps.project}
and l.sop_id = #{maps.sopId}
and l.period_id = #{maps.periodId}
and l.period_id in
#{periodId}
and qu.qw_user_name = #{maps.qwUserName}
and cu.dept_id = #{maps.deptId}
AND cu.dept_id IN
#{item}
AND cu.user_id IN
#{item}
order by l.finish_time desc,l.update_time desc,l.create_time desc
select l.log_id,l.user_id,uc.course_name,v.title as video_name,u.nick_name as fsNickName, u.avatar as fsAvatar,
l.log_type,SEC_TO_TIME(l.duration) as duration,c.company_name,l.camp_period_time,l.finish_time,
cu.nick_name as company_user_name ,l.send_type,l.create_time, qu.qw_user_name,qec.name as external_user_name
from fs_course_watch_log l
left join fs_user_course_video v on v.video_id = l.video_id
left join fs_user_course uc on uc.course_id = l.course_id
left join fs_user u on u.user_id = l.user_id
left join company_user cu on cu.user_id = l.company_user_id
left join company c on c.company_id = l.company_id
LEFT JOIN qw_user qu on qu.id= l.qw_user_id
LEFT JOIN qw_external_contact qec on l.qw_external_contact_id = qec.id
and l.user_id = #{userId}
and l.qw_user_id = #{qwUserId}
and l.course_id = #{courseId}
and l.video_id = #{videoId}
and l.log_type = #{logType}
and l.company_id = #{companyId}
and l.company_user_id = #{companyUserId}
and cu.nick_name like concat('%', #{companyUserName}, '%')
and u.nick_name like concat('%', #{nickName}, '%')
and DATE(l.create_time) >= DATE(#{sTime})
and DATE(l.create_time) <= DATE(#{eTime})
and DATE(l.camp_period_time) >= DATE(#{maps.scheduleStartTime})
and DATE(l.camp_period_time) <= DATE(#{maps.scheduleEndTime})
and l.sop_id in
#{sopId}
and l.watch_type = #{maps.watchType}
order by l.log_id desc
insert into fs_course_watch_log
user_id,
video_id,
log_type,
create_time,
update_time,
qw_external_contact_id,
duration,
qw_user_id,
company_user_id,
company_id,
course_id,
send_type,
reward_type,
sop_id,
finish_time,
send_finish_msg,
camp_period_time,
period_id,
project,
watch_type,
#{userId},
#{videoId},
#{logType},
#{createTime},
#{updateTime},
#{qwExternalContactId},
#{duration},
#{qwUserId},
#{companyUserId},
#{companyId},
#{courseId},
#{sendType},
#{rewardType},
#{sopId},
#{finishTime},
#{sendFinishMsg},
#{campPeriodTime},
#{periodId},
#{project},
#{watchType},
insert into fs_course_watch_log
user_id,
video_id,
log_type,
create_time,
update_time,
qw_external_contact_id,
duration,
qw_user_id,
company_user_id,
company_id,
course_id,
send_type,
reward_type,
sop_id,
finish_time,
send_finish_msg,
camp_period_time,
project,
watch_type,
#{userId},
#{videoId},
#{logType},
#{createTime},
#{updateTime},
#{qwExternalContactId},
#{duration},
#{qwUserId},
#{companyUserId},
#{companyId},
#{courseId},
#{sendType},
#{rewardType},
#{sopId},
#{finishTime},
#{sendFinishMsg},
#{campPeriodTime},
#{project},
#{watchType},
on duplicate key update
update_time = #{updateTime},
INSERT INTO fs_course_watch_log (
user_id,
video_id,
log_type,
create_time,
update_time,
qw_external_contact_id,
duration,
qw_user_id,
company_user_id,
company_id,
course_id,
send_type,
reward_type,
sop_id,
camp_period_time,
project,
period_id,
im_msg_send_detail_id,
watch_type,
link_id
)
VALUES
(
#{log.userId},
#{log.videoId},
#{log.logType},
#{log.createTime},
#{log.updateTime},
#{log.qwExternalContactId},
#{log.duration},
#{log.qwUserId},
#{log.companyUserId},
#{log.companyId},
#{log.courseId},
#{log.sendType},
#{log.rewardType},
#{log.sopId},
#{log.campPeriodTime},
#{log.project},
#{log.periodId},
#{log.imMsgSendDetailId},
#{log.watchType},
#{log.linkId}
)
ON DUPLICATE KEY UPDATE
update_time = NOW(),
im_msg_send_detail_id = VALUES(im_msg_send_detail_id),
link_id = VALUES(link_id)
update fs_course_watch_log
user_id = #{userId},
video_id = #{videoId},
log_type = #{logType},
create_time = #{createTime},
update_time = #{updateTime},
qw_external_contact_id = #{qwExternalContactId},
duration = #{duration},
qw_user_id = #{qwUserId},
company_user_id = #{companyUserId},
company_id = #{companyId},
course_id = #{courseId},
send_type = #{sendType},
reward_type = #{rewardType},
sop_id = #{sopId},
finish_time = #{finishTime},
send_finish_msg = #{sendFinishMsg},
last_heartbeat_time = #{lastHeartbeatTime},
period_id = #{periodId},
project = #{project},
watch_type = #{watchType},
where log_id = #{logId}
delete from fs_course_watch_log where log_id = #{logId}
delete from fs_course_watch_log where log_id in
#{logId}
SELECT
log_id,
user_id,
video_id,
log_type,
create_time,
update_time,
duration,
company_user_id,
company_id,
course_id,
send_type,
reward_type,
last_heartbeat_time,
sop_id,
finish_time,
send_finish_msg,
camp_period_time,
period_id,
watch_type
FROM
fs_course_watch_log
WHERE
send_type = 1
AND video_id = #{videoId}
AND user_id = #{fsUserId}
AND company_user_id = #{companyUserId} order by log_id desc limit 1
SELECT
o.company_user_id,o.user_id,DATE(o.create_time) create_time,
SUM(CASE WHEN o.log_type = '1' THEN 1 ELSE 0 END) AS type1,
SUM(CASE WHEN o.log_type = '2' THEN 1 ELSE 0 END) AS type2,
SUM(CASE WHEN o.log_type = '3' THEN 1 ELSE 0 END) AS type3,
SUM(CASE WHEN o.log_type = '4' THEN 1 ELSE 0 END) AS type4,
o.project as project,
o.course_id as course_id,
o.video_id as video_id
FROM fs_course_watch_log o
send_type=1
and o.company_id=#{companyId}
and DATE(o.create_time) >= #{sTime}
and DATE(o.create_time) <= #{eTime}
and o.course_id = #{courseId}
and o.video_id = #{videoId}
and o.company_user_id = #{companyUserId}
and o.project = #{project}
and o.user_id = #{userId}
GROUP BY o.video_id,o.user_id,DATE(o.create_time),o.project,o.course_id
ORDER BY o.video_id ,DATE(o.create_time)
SELECT COUNT(*)
FROM (
SELECT 1
FROM fs_course_watch_log o
send_type=2
and o.company_id=#{companyId}
and o.create_time >= #{startDate}
and o.create_time <= #{endDate}
and o.course_id = #{courseId}
and o.video_id = #{videoId}
and o.company_user_id = #{companyUserId}
and o.project = #{project}
and o.user_id = #{userId}
GROUP BY o.video_id, o.user_id, DATE(o.create_time), o.project, o.course_id
) AS grouped_results_count
select count(fcwl.log_id) from fs_course_watch_log fcwl
and fcwl.log_type in
#{logType}
and fcwl.company_user_id = #{params.companyUserId}
and date(fcwl.create_time) = #{params.date}
UPDATE fs_course_watch_log
SET
duration = CASE
WHEN video_id = #{item.videoId} AND qw_external_contact_id = #{item.qwExternalContactId} AND qw_user_id = #{item.qwUserId} THEN
CASE
WHEN #{item.duration} IS NOT NULL AND #{item.duration} > duration THEN #{item.duration}
ELSE duration
END
END,
last_heartbeat_time = CASE
WHEN video_id = #{item.videoId} AND qw_external_contact_id = #{item.qwExternalContactId} AND qw_user_id = #{item.qwUserId} THEN
CASE
WHEN #{item.lastHeartbeatTime} IS NOT NULL THEN #{item.lastHeartbeatTime}
ELSE last_heartbeat_time
END
END,
finish_time = CASE
WHEN video_id = #{item.videoId} AND qw_external_contact_id = #{item.qwExternalContactId} AND qw_user_id = #{item.qwUserId} THEN
CASE
WHEN finish_time IS NULL THEN #{item.finishTime}
ELSE finish_time
END
END,
log_type = CASE
WHEN video_id = #{item.videoId} AND qw_external_contact_id = #{item.qwExternalContactId} AND qw_user_id = #{item.qwUserId} THEN
CASE
WHEN log_type = 2 THEN log_type
WHEN #{item.logType} IS NOT NULL AND log_type != 2 THEN #{item.logType}
ELSE log_type
END
END
WHERE
(video_id, qw_external_contact_id, qw_user_id) IN
(#{item.videoId}, #{item.qwExternalContactId}, #{item.qwUserId})
UPDATE fs_course_watch_log
SET send_finish_msg = CASE
WHEN log_id = #{item.logId} THEN #{item.sendFinishMsg}
ELSE send_finish_msg
END
WHERE log_id IN
#{item.logId}
UPDATE fs_course_watch_log
SET
duration = CASE
WHEN video_id = #{item.videoId} AND user_id = #{item.userId} AND company_user_id = #{item.companyUserId} THEN
CASE
WHEN #{item.duration} IS NOT NULL AND #{item.duration} > duration THEN #{item.duration}
ELSE duration
END
END,
last_heartbeat_time = CASE
WHEN video_id = #{item.videoId} AND user_id = #{item.userId} AND company_user_id = #{item.companyUserId} THEN
CASE
WHEN #{item.lastHeartbeatTime} IS NOT NULL THEN #{item.lastHeartbeatTime}
ELSE last_heartbeat_time
END
END,
finish_time = CASE
WHEN video_id = #{item.videoId} AND user_id = #{item.userId} AND company_user_id = #{item.companyUserId} THEN
CASE
WHEN finish_time IS NULL THEN #{item.finishTime}
ELSE finish_time
END
END,
log_type = CASE
WHEN video_id = #{item.videoId} AND user_id = #{item.userId} AND company_user_id = #{item.companyUserId} THEN
CASE
WHEN log_type = 2 THEN log_type
WHEN #{item.logType} IS NOT NULL AND log_type != 2 THEN #{item.logType}
ELSE log_type
END
END
WHERE
(video_id, user_id, company_user_id) IN
(#{item.videoId}, #{item.userId}, #{item.companyUserId})
UPDATE fs_course_watch_log
SET
duration = CASE
WHEN video_id = #{item.videoId} AND user_id = #{item.userId} THEN
CASE
WHEN #{item.duration} IS NOT NULL AND #{item.duration} > duration THEN #{item.duration}
ELSE duration
END
END,
last_heartbeat_time = CASE
WHEN video_id = #{item.videoId} AND user_id = #{item.userId} THEN
CASE
WHEN #{item.lastHeartbeatTime} IS NOT NULL THEN #{item.lastHeartbeatTime}
ELSE last_heartbeat_time
END
END,
finish_time = CASE
WHEN video_id = #{item.videoId} AND user_id = #{item.userId} THEN
CASE
WHEN finish_time IS NULL THEN #{item.finishTime}
ELSE finish_time
END
END,
log_type = CASE
WHEN video_id = #{item.videoId} AND user_id = #{item.userId} THEN
CASE
WHEN log_type = 2 THEN log_type
WHEN #{item.logType} IS NOT NULL AND log_type != 2 THEN #{item.logType}
ELSE log_type
END
END
WHERE
(video_id, user_id) IN
(#{item.videoId}, #{item.userId})
select
uc.course_name,v.title as video_name,
watch.log_id,
watch.user_id,
watch.finish_time,
watch.send_finish_msg,
watch.sop_id,
watch.video_id,
watch.reward_type,
watch.log_type,
watch.create_time,
watch.update_time,
watch.qw_external_contact_id,
watch.duration,
watch.qw_user_id,
watch.company_user_id,
watch.company_id,
watch.course_id,
watch.camp_period_time
from
fs_user_course_training_camp camp
left join fs_user_course_period period on
camp.training_camp_id = period.training_camp_id
left join fs_course_watch_log watch on
period.period_id = watch.period_id
left join fs_user_course uc on uc.course_id = watch.course_id
left join fs_user_course_video v on v.video_id = watch.video_id
`period`.del_flag = '0' and watch.log_type <> 3
and camp.training_camp_id = #{trainingCampId}
and watch.user_id = #{userId}
and `period`.period_id = #{periodId}
SELECT
l.log_id,
l.project AS project,
l.period_id,
l.user_id,
l.log_type,
SEC_TO_TIME(l.duration) AS duration,
l.camp_period_time,
l.finish_time,
l.send_type,
l.create_time,
l.update_time,
l.last_heartbeat_time,
l.company_id,
l.company_user_id,
l.course_id,
l.video_id,
l.qw_user_id,
l.qw_external_contact_id,
l.sop_id,
qec.create_time as qec_create_time
FROM
fs_course_watch_log l LEFT JOIN qw_external_contact qec on l.qw_external_contact_id = qec.id
left join fs_user u on u.user_id = l.user_id
left join company_user cu on cu.user_id = l.company_user_id
and l.send_type = #{maps.sendType}
and l.user_id = #{maps.userId}
and l.qw_external_contact_id = #{maps.qwExternalContactId}
and l.qw_user_id = #{maps.qwUserId}
and l.course_id = #{maps.courseId}
and l.video_id = #{maps.videoId}
and l.log_type = #{maps.logType}
and l.period_id = #{maps.periodId}
and l.company_id = #{maps.companyId}
and l.company_user_id = #{maps.companyUserId}
and cu.nick_name like concat('%', #{maps.companyUserName}, '%')
and u.nick_name like concat('%', #{maps.nickName}, '%')
and qec.name like concat('%', #{maps.externalUserName}, '%')
and DATE(qec.create_time) >= DATE(#{maps.qecSTime})
and DATE(qec.create_time) <= DATE(#{maps.qecETime})
and DATE(l.create_time) >= DATE(#{maps.sTime})
and DATE(l.create_time) <= DATE(#{maps.eTime})
and DATE(l.camp_period_time) >= DATE(#{maps.scheduleStartTime})
and DATE(l.camp_period_time) <= DATE(#{maps.scheduleEndTime})
and DATE(l.update_time) >= DATE(#{maps.upSTime})
and DATE(l.update_time) <= DATE(#{maps.upETime})
and l.sop_id in
#{sopId}
and l.period_id in
#{periodId}
order by l.finish_time desc,l.update_time desc,l.create_time desc
SELECT
*
FROM
fs_course_watch_log
WHERE
send_type = 1
AND video_id = #{videoId}
AND user_id in
#{userId}
ORDER BY
log_id DESC
select count(distinct cwl.user_id)
from fs_user_course_period ucp
inner join fs_course_watch_log cwl on ucp.period_id = cwl.period_id
where ucp.training_camp_id = #{trainingCampId}
SELECT
o.video_id,
o.company_id,
comp.company_name,
o.qw_user_id,
DATE(o.create_time) create_time,
v.title videoName,
uc.course_name,
SUM(CASE WHEN o.log_type = '1' THEN 1 ELSE 0 END) AS type1,
SUM(CASE WHEN o.log_type = '2' THEN 1 ELSE 0 END) AS type2,
SUM(CASE WHEN o.log_type = '3' THEN 1 ELSE 0 END) AS type3,
SUM(CASE WHEN o.log_type = '4' THEN 1 ELSE 0 END) AS type4
FROM
fs_course_watch_log o
LEFT JOIN fs_user_course_video v ON v.video_id = o.video_id
LEFT JOIN company comp ON comp.company_id = o.company_id
LEFT JOIN qw_user qu ON qu.id = o.qw_user_id
LEFT JOIN fs_user_course uc ON uc.course_id = v.course_id
and send_type = #{sendType}
and o.company_id = #{companyId}
AND DATE (o.create_time) >= DATE (#{sTime})
AND DATE (o.create_time) <= DATE (#{eTime})
and o.course_id = #{courseId}
and o.video_id = #{videoId}
GROUP BY
DATE (o.create_time),
o.company_id
ORDER BY
comp.company_id,
DATE (o.create_time)
SELECT
o.project,
o.course_id AS courseId,
uc.course_name AS courseName,
o.video_id AS videoId,
v.title AS videoName,
CASE WHEN o.log_type = 1 THEN 1 END AS type1,
CASE WHEN o.log_type = 2 THEN 1 END AS type2,
CASE WHEN o.log_type = 3 THEN 1 END AS type3,
CASE WHEN o.log_type = 4 THEN 1 END AS type4,
o.qw_user_id,
o.user_id AS userId,
o.company_user_id AS companyUserId,
o.company_id AS companyId,
o.create_time AS createTime
FROM
fs_course_watch_log o
LEFT JOIN fs_user_course_video v ON v.video_id = o.video_id
LEFT JOIN fs_user_course uc ON uc.course_id = v.course_id
WHERE o.qw_external_contact_id=#{qwExternalContactId}
AND send_type = #{sendType}
AND DATE(o.create_time) >= DATE(#{startTime})
AND DATE(o.create_time) <= DATE(#{endTime})
o.create_time DESC
SELECT
o.company_id AS companyId,
c.company_name AS companyName,
o.send_type,
COUNT(DISTINCT o.user_id) AS watchUserCount,
COUNT(o.log_id) AS watchCount,
sum(case when o.log_type = 2 then 1 else 0 end) AS finishCount,
COUNT(DISTINCT CASE WHEN o.log_type = 2 THEN o.user_id END) AS finishUserCount
FROM
fs_course_watch_log o
LEFT JOIN company c ON c.company_id = o.company_id
WHERE
o.create_time >= #{params.startTime}
AND o.create_time <= #{params.endTime}
GROUP BY
o.company_id,
o.send_type
SELECT COUNT(*) FROM (
SELECT
o.video_id,
o.qw_user_id,
o.company_user_id,
o.qw_user_id,
DATE(o.create_time) create_time
FROM fs_course_watch_log o
LEFT JOIN qw_user qu ON qu.id = o.qw_user_id
LEFT JOIN fs_user_course_video v ON v.video_id = o.video_id
LEFT JOIN fs_user_course uc ON uc.course_id = v.course_id
LEFT JOIN company_user cu ON cu.user_id = o.company_user_id
WHERE 1=1
and o.company_id=#{companyId}
and o.company_user_id in
#{id}
AND send_type = #{sendType}
AND o.create_time >= STR_TO_DATE(#{sTime}, '%Y-%m-%d')
AND o.create_time >= #{sTime}
AND o.create_time < DATE_ADD(STR_TO_DATE(#{eTime}, '%Y-%m-%d'), INTERVAL 1 DAY)
AND o.create_time < DATE_ADD(#{eTime}, INTERVAL 1 DAY)
AND qu.qw_user_name LIKE CONCAT(#{nickName}, '%')
AND cu.nick_name LIKE CONCAT(#{nickName}, '%')
AND o.course_id = #{courseId}
AND o.video_id = #{videoId}
GROUP BY
o.video_id,
o.qw_user_id,
o.company_user_id,
o.qw_user_id,
DATE(o.create_time)
) AS t
SELECT
t1.*,
t2.duplicate_count
FROM fs_course_watch_log t1
INNER JOIN (
SELECT
video_id,
user_id,
period_id,
COUNT(*) as duplicate_count,
MAX(log_id) as max_log_id
FROM fs_course_watch_log where create_time >=#{createTime} and create_time < #{createTimeEnd}
GROUP BY video_id, user_id, period_id
HAVING COUNT(*) > 1
) t2 ON t1.video_id = t2.video_id
AND t1.user_id = t2.user_id
AND t1.period_id = t2.period_id
AND t1.log_id = t2.max_log_id
where t1.create_time >=#{createTime} and t1.create_time < #{createTimeEnd}
INSERT INTO fs_course_watch_log_1 (
log_id,
user_id,
video_id,
log_type,
create_time,
update_time,
qw_external_contact_id,
duration,
qw_user_id,
company_user_id,
company_id,
course_id,
send_type,
reward_type,
sop_id,
camp_period_time,
project,
period_id,
im_msg_send_detail_id,
watch_type
)
VALUES
(
#{log.logId},
#{log.userId},
#{log.videoId},
#{log.logType},
#{log.createTime},
#{log.updateTime},
#{log.qwExternalContactId},
#{log.duration},
#{log.qwUserId},
#{log.companyUserId},
#{log.companyId},
#{log.courseId},
#{log.sendType},
#{log.rewardType},
#{log.sopId},
#{log.campPeriodTime},
#{log.project},
#{log.periodId},
#{log.imMsgSendDetailId},
#{log.watchType}
)
DELETE FROM fs_course_watch_log
WHERE log_id IN
#{id}
select c.course_name courseName,c.img_url imgUrl,r.title videoName,l.link_id linkId,l.duration,l.video_id videoId,l.user_id userId,l.company_user_id companyUserId,l.log_id logId from fs_course_watch_log l
left join fs_user_course c on l.course_id =c.course_id
left join fs_user_course_video r on r.video_id=l.video_id
WHERE l.user_id = #{userId} and l.log_type = 2
and l.create_time >= CONCAT(CURDATE(), ' 00:00:00')
and l.create_time <= CONCAT(CURDATE(), ' 23:59:59')
select c.course_name courseName,c.img_url imgUrl,r.title videoName,l.link_id linkId,l.duration,l.video_id videoId,l.user_id userId,l.company_user_id companyUserId,l.log_id logId from fs_course_watch_log l
left join fs_user_course c on l.course_id =c.course_id
left join fs_user_course_video r on r.video_id=l.video_id
WHERE l.user_id = #{userId} and l.log_type != 2
and l.create_time >= CONCAT(CURDATE(), ' 00:00:00')
and l.create_time <= CONCAT(CURDATE(), ' 23:59:59')
select c.course_name courseName,c.img_url imgUrl,r.title videoName,l.link_id linkId,l.duration,l.video_id videoId,l.user_id userId,l.company_user_id companyUserId,l.log_id logId from fs_course_watch_log l
left join fs_user_course c on l.course_id =c.course_id
left join fs_user_course_video r on r.video_id=l.video_id
WHERE l.user_id = #{userId} and l.update_time is not null
order by l.update_time DESC LIMIT 1
SELECT
c.company_id AS companyId,
c.company_name AS companyName
FROM company c
c.is_del=0
AND c.company_id = #{companyId}
GROUP BY c.company_id, c.company_name
ORDER BY c.create_time DESC
SELECT
fwl.company_id AS companyId,
fwl.course_id As courseId,
fwl.video_id AS videoId,
COUNT(DISTINCT CASE WHEN fwl.log_type = 2 THEN fwl.user_id END ) AS finishedCount,
COUNT(CASE WHEN fwl.log_type = 2 THEN fwl.log_id END) AS courseCompleteTimes,
COUNT(DISTINCT CASE WHEN fwl.log_type != 3 THEN fwl.user_id END) AS accessCount,
ifnull(
ROUND(
(
COUNT( DISTINCT CASE WHEN fwl.log_type = 2 THEN fwl.user_id END ) / count( DISTINCT CASE WHEN fwl.log_type != 3
THEN fwl.user_id END )) * 100,
2
),
0
) AS finishRate
FROM
fs_course_watch_log fwl
fwl.send_type = 2
AND fwl.create_time >= #{startDate} AND fwl.create_time < DATE_ADD(#{endDate}, INTERVAL 1 DAY)
AND fwl.company_id = #{companyId}
AND fwl.video_id = #{videoId}
AND fwl.course_id = #{courseId}
GROUP BY fwl.course_id
GROUP BY fwl.video_id
GROUP BY fwl.company_id
ORDER BY accessCount desc
SELECT
company_id AS companyId,
COUNT(CASE WHEN log_type = 4 THEN log_id END) AS stopCount,
COUNT(CASE WHEN log_type = 3 THEN log_id END) AS pendingCount,
COUNT(CASE WHEN log_type = 1 THEN log_id END) AS watchingCount,
COUNT(CASE WHEN log_type = 2 THEN log_id END) AS finishedCount,
count(log_id) as accessCount
FROM fs_course_watch_log
watch_type =1 and send_type = 1
AND create_time >= #{startDate} AND create_time < DATE_ADD(#{endDate}, INTERVAL 1 DAY)
AND company_id IN
#{companyId}
GROUP BY company_id
SELECT
l.company_id AS companyId,
COUNT( l.log_id) AS answerUserCount
FROM fs_course_answer_logs l
WHERE l.company_id IN
#{companyId}
and l.watch_type=1
AND l.create_time >= #{startDate} AND l.create_time < DATE_ADD(#{endDate}, INTERVAL 1 DAY)
GROUP BY l.company_id
SELECT
rpl.company_id AS companyId,
COUNT( rpl.log_id) AS packetUserCount,
COALESCE(SUM(rpl.amount), 0) AS packetAmount
FROM fs_course_red_packet_log rpl
WHERE rpl.company_id IN
#{companyId}
and rpl.app_id=#{appId}
AND rpl.create_time >= #{startDate} AND rpl.create_time < DATE_ADD(#{endDate}, INTERVAL 1 DAY)
GROUP BY rpl.company_id
SELECT
log.user_id userId,
u.nick_name AS nickName,
u.source loginChannel,
cu.nick_name AS salesName,
c.company_name AS salesCompany,
cd.dept_name AS salesDept,
log.period_id periodId,
log.video_id videoId,
log.log_id logId,
log.create_time courseTime,
log.finish_time finishTime,
log.duration privateWatchDuration,
log.log_type privateWatchStatus,
cv.title AS videoTitle
FROM
fs_course_watch_log log
LEFT JOIN fs_user u ON u.user_id = log.user_id
LEFT JOIN fs_user_company_user cuu ON cuu.user_id = u.user_id
LEFT JOIN company_user cu ON cuu.company_user_id = cu.user_id
LEFT JOIN company c ON log.company_id = c.company_id
LEFT JOIN company_dept cd ON cu.dept_id = cd.dept_id
LEFT JOIN fs_user_course_video cv ON log.video_id = cv.video_id
WHERE log.send_type = 1
AND log.watch_type = 1
group by log.user_id
ORDER BY u.register_date DESC
SELECT
cp.period_id periodId,
cp.period_name periodName,
camp.training_camp_name
FROM
fs_user_course_period cp
LEFT JOIN fs_user_course_training_camp camp ON camp.training_camp_id = cp.training_camp_id
WHERE cp.period_id in
#{periodId}
SELECT
rp.watch_log_id as logId,
SUM(rp.amount) AS redPacketAmount
FROM fs_course_red_packet_log rp
WHERE rp.watch_log_id IN
#{logId}
GROUP BY rp.watch_log_id
SELECT
l.watch_log_id AS logId,
CASE WHEN l.log_id IS NOT NULL THEN '已答题' ELSE '未答题' END AS answerStatus,
(
SELECT COUNT(1)
FROM fs_course_watch_log wl
WHERE wl.log_id IN
#{logId}
AND wl.log_id NOT IN (
SELECT watch_log_id
FROM fs_course_answer_logs
WHERE watch_log_id IS NOT NULL
)) AS notAnsweredCount
FROM fs_course_answer_logs l
WHERE l.watch_log_id IN
#{logId}
GROUP BY l.watch_log_id
SELECT
cu.user_id AS salesId,
log.period_id AS periodId,
log.video_id AS videoId,
COUNT(DISTINCT CASE WHEN po.status = 3 THEN po.order_id END) AS historyOrderCount
FROM fs_course_watch_log log
LEFT JOIN company_user cu ON log.company_user_id = cu.user_id
LEFT JOIN company c ON log.company_id = c.company_id
LEFT JOIN company_dept cd ON cu.dept_id = cd.dept_id
LEFT JOIN fs_package_order po ON po.user_id = log.user_id
WHERE log.send_type = 1
AND log.watch_type = 1
GROUP BY cu.user_id, log.period_id, log.video_id
SELECT
cu.user_id AS salesId,
cu.nick_name AS salesName,
cd.dept_name AS salesDept,
c.company_name AS salesCompany,
log.period_id AS periodId,
log.video_id AS videoId,
cv.title AS videoTitle,
cd.dept_id AS deptId,
c.company_id AS companyId,
COUNT(DISTINCT CASE WHEN log.log_type = '2' THEN log.log_id END) AS finishedCount,
COUNT(DISTINCT CASE WHEN log.log_type = '1' THEN log.log_id END) AS unfinishedCount,
COUNT(DISTINCT CASE WHEN log.log_type = '3' THEN log.log_id END) AS notWatchedCount,
COUNT(DISTINCT CASE WHEN a.log_id IS NULL THEN log.log_id END) AS notAnsweredCount,
COALESCE(SUM(rpl.amount), 0) AS redPacketAmount
FROM fs_course_watch_log log
LEFT JOIN company_user cu ON log.company_user_id = cu.user_id
LEFT JOIN company c ON log.company_id = c.company_id
LEFT JOIN company_dept cd ON cu.dept_id = cd.dept_id
LEFT JOIN fs_user_course_video cv ON log.video_id = cv.video_id
LEFT JOIN fs_course_answer_logs a ON a.watch_log_id = log.log_id
LEFT JOIN fs_course_red_packet_log rpl ON rpl.watch_log_id = log.log_id
WHERE log.send_type = 1
AND log.watch_type = 1
GROUP BY cu.user_id, log.period_id, log.video_id
ORDER BY cu.user_id
SELECT
cu.user_id AS salesId,
cu.nick_name AS salesName,
cd.dept_name AS salesDept,
c.company_name AS salesCompany,
log.period_id AS periodId,
log.video_id AS videoId,
cv.title AS videoTitle,
cd.dept_id AS deptId,
c.company_id AS companyId,
COUNT(DISTINCT CASE WHEN log.log_type = '2' THEN log.log_id END) AS finishedCount,
COUNT(DISTINCT CASE WHEN log.log_type = '1' THEN log.log_id END) AS unfinishedCount,
COUNT(DISTINCT CASE WHEN log.log_type = '3' THEN log.log_id END) AS notWatchedCount,
COUNT(DISTINCT CASE WHEN a.log_id IS NULL THEN log.log_id END) AS notAnsweredCount,
COALESCE(SUM(rpl.amount), 0) AS redPacketAmount
FROM fs_course_watch_log log
LEFT JOIN company_user cu ON log.company_user_id = cu.user_id
LEFT JOIN company c ON log.company_id = c.company_id
LEFT JOIN company_dept cd ON cu.dept_id = cd.dept_id
LEFT JOIN fs_user_course_video cv ON log.video_id = cv.video_id
LEFT JOIN fs_course_answer_logs a ON a.watch_log_id = log.log_id
LEFT JOIN fs_course_red_packet_log rpl ON rpl.watch_log_id = log.log_id
WHERE log.send_type = 1
AND log.watch_type = 1
GROUP BY cu.user_id, log.period_id, log.video_id
ORDER BY cu.user_id
SELECT
cu.user_id AS salesId,
log.period_id AS periodId,
log.video_id AS videoId,
COUNT(DISTINCT CASE WHEN po.status = 3 THEN po.order_id END) AS historyOrderCount
FROM fs_course_watch_log log
LEFT JOIN company_user cu ON log.company_user_id = cu.user_id
LEFT JOIN company c ON log.company_id = c.company_id
LEFT JOIN company_dept cd ON cu.dept_id = cd.dept_id
LEFT JOIN fs_package_order po ON po.user_id = log.user_id
WHERE log.send_type = 1
AND log.watch_type = 1
GROUP BY cu.user_id, log.period_id, log.video_id
SELECT
cp.period_id periodId,
cp.period_name periodName,
camp.training_camp_name trainingCampName
FROM
fs_user_course_period cp
LEFT JOIN fs_user_course_training_camp camp ON camp.training_camp_id = cp.training_camp_id
WHERE cp.period_id in
#{periodId}
SELECT
cd.dept_id AS deptId,
COUNT(DISTINCT CASE WHEN u.source IS NOT NULL THEN u.user_id END) AS appUserCount,
COUNT(DISTINCT CASE WHEN u.source IS NOT NULL AND u.register_date >= #{startDate} AND u.register_date < DATE_ADD(#{endDate}, INTERVAL 1 DAY) THEN u.user_id END)
COUNT(DISTINCT CASE WHEN u.source IS NOT NULL THEN u.user_id END)
AS newAppUserCount,
COUNT(DISTINCT cu.user_id) AS salesCount
FROM fs_user u
LEFT JOIN fs_user_company_user cuu ON cuu.user_id = u.user_id
LEFT JOIN company_user cu ON cuu.company_user_id = cu.user_id
LEFT JOIN company c ON cuu.company_id = c.company_id
LEFT JOIN company_dept cd ON cu.dept_id = cd.dept_id
WHERE u.source IS NOT NULL
AND cuu.company_id = #{companyId}
AND cu.dept_id = #{deptId}
AND cu.user_id = #{salesId}
AND cuu.project_id = #{project}
GROUP BY cd.dept_id
SELECT
cd.dept_id AS deptId,
cd.dept_name AS salesDept,
c.company_name AS salesCompany,
log.period_id AS periodId,
log.video_id AS videoId,
cv.title AS videoTitle,
c.company_id AS companyId,
COUNT(DISTINCT CASE WHEN log.log_type = '2' THEN log.log_id END) AS finishedCount,
COUNT(DISTINCT CASE WHEN log.log_type = '1' THEN log.log_id END) AS unfinishedCount,
COUNT(DISTINCT CASE WHEN log.log_type = '3' THEN log.log_id END) AS notWatchedCount,
COUNT(DISTINCT CASE WHEN a.log_id IS NULL THEN log.log_id END) AS notAnsweredCount,
COALESCE(SUM(rpl.amount), 0) AS redPacketAmount
FROM fs_course_watch_log log
LEFT JOIN company_user cu ON log.company_user_id = cu.user_id
LEFT JOIN company c ON log.company_id = c.company_id
LEFT JOIN company_dept cd ON cu.dept_id = cd.dept_id
LEFT JOIN fs_user_course_video cv ON log.video_id = cv.video_id
LEFT JOIN fs_course_answer_logs a ON a.watch_log_id = log.log_id
LEFT JOIN fs_course_red_packet_log rpl ON rpl.watch_log_id = log.log_id
WHERE log.send_type = 1
AND log.watch_type = 1
GROUP BY cd.dept_id, log.period_id, log.video_id
ORDER BY cd.dept_id
SELECT
cd.dept_id AS deptId,
log.period_id AS periodId,
log.video_id AS videoId,
COUNT(DISTINCT CASE WHEN po.status = 3 THEN po.order_id END) AS historyOrderCount
FROM fs_course_watch_log log
LEFT JOIN company_user cu ON log.company_user_id = cu.user_id
LEFT JOIN company c ON log.company_id = c.company_id
LEFT JOIN company_dept cd ON cu.dept_id = cd.dept_id
LEFT JOIN fs_package_order po ON po.user_id = log.user_id
WHERE log.send_type = 1
AND log.watch_type = 1
GROUP BY cd.dept_id, log.period_id, log.video_id
SELECT
cu.user_id AS salesId,
COUNT(DISTINCT CASE WHEN u.source IS NOT NULL THEN u.user_id END) AS appUserCount,
COUNT(DISTINCT CASE WHEN u.source IS NOT NULL AND u.register_date >= #{startDate} AND u.register_date < DATE_ADD(#{endDate}, INTERVAL 1 DAY) THEN u.user_id END)
COUNT(DISTINCT CASE WHEN u.source IS NOT NULL THEN u.user_id END)
AS newAppUserCount
FROM fs_user u
LEFT JOIN fs_user_company_user cuu ON cuu.user_id = u.user_id
LEFT JOIN company_user cu ON cuu.company_user_id = cu.user_id
LEFT JOIN company c ON cuu.company_id = c.company_id
LEFT JOIN company_dept cd ON cu.dept_id = cd.dept_id
WHERE u.source IS NOT NULL
AND cuu.company_id = #{companyId}
AND cu.dept_id = #{deptId}
AND cu.user_id = #{salesId}
AND cuu.project_id = #{project}
GROUP BY cu.user_id
AND c.company_id = #{companyId}
AND cd.dept_id = #{deptId}
AND cu.user_id = #{salesId}
AND log.project = #{project}
AND log.create_time >= #{startDate} AND log.create_time < DATE_ADD(#{endDate}, INTERVAL 1 DAY)
AND log.period_id IN (SELECT period_id FROM fs_user_course_period WHERE training_camp_id = #{trainingCampId})
AND log.period_id = #{periodId}
AND u.user_id = #{userId}
AND u.phone LIKE CONCAT('%', #{userPhone}, '%')
AND u.nick_name LIKE CONCAT('%', #{nickName}, '%')
SELECT l.company_user_id,l.course_id,l.video_id,
cu.nick_name as salesName,fuc.course_name as courseName,fuv.title as videoTitle,
SUM(CASE WHEN l.log_type = 2 THEN 1 ELSE 0 END) AS finishedCount,
SUM(CASE WHEN l.log_type = 3 THEN 1 ELSE 0 END) AS notWatchedCount,
SUM(CASE WHEN l.log_type = 4 THEN 1 ELSE 0 END) AS interruptCount,
SUM(CASE WHEN l.log_type = 1 THEN 1 ELSE 0 END) AS watchingCount
from fs_course_watch_log l
left join company_user cu on l.company_user_id=cu.user_id
left join fs_user_course fuc on l.course_id=fuc.course_id
left join fs_user_course_video fuv on l.video_id=fuv.video_id
where send_type = 1 and watch_type =1
and l.company_id = #{companyId}
and l.company_user_id = #{companyUserId}
and l.course_id = #{courseId}
and l.video_id = #{videoId}
and l.create_time >= #{startDate} and l.create_time <= #{endDate}
group by l.company_user_id,l.course_id,l.video_id
select l.company_user_id,
SUM(CASE WHEN l.log_type = 2 THEN 1 ELSE 0 END) AS finishCount
from fs_course_watch_log l
where l.send_type = 1 and l.log_type = 2
and l.company_id=#{companyId}
and l.create_time >= #{startDate} and l.create_time <= #{endDate}
l.company_user_id = #{companyUserId}
group by l.company_user_id