StudentCoursewarePlayRecordMapper.xml 5.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
  3. <mapper namespace="com.ym.mec.biz.dal.mapper.StudentCoursewarePlayRecordMapper">
  4. <select id="selectPage" resultType="com.ym.mec.biz.dal.entity.StudentCoursewarePlayRecord">
  5. SELECT t.*
  6. FROM student_courseware_play_record t
  7. </select>
  8. <insert id="save">
  9. INSERT INTO student_courseware_play_record (organization_id_, user_id_, play_time_, create_date_, update_time_, create_time_)
  10. VALUES (#{record.organizationId}, #{record.userId}, #{record.playTime}, #{record.createDate}, NOW(), NOW())
  11. ON DUPLICATE KEY UPDATE play_time_ = (ifnull(play_time_, 0) + #{record.playTime})
  12. </insert>
  13. <select id="statList" resultType="com.ym.mec.biz.dal.wrapper.StudentCoursewarePlayRecordWrapper$StatQueryData">
  14. select o.id_ as organizationId
  15. , o.name_ as organizationName
  16. , count(s.user_id_) as memberNum
  17. , (count(distinct s.user_id_) - count(distinct pr.user_id_)) as noPlayNum
  18. , count(distinct if(10 * 60 >= pr.play_time_, pr.user_id_, null)) as playTimeLess10
  19. , count(distinct if(pr.play_time_ > 10 * 60 and 60 * 60 >= pr.play_time_, pr.user_id_, null)) as playTimeLess60
  20. , count(distinct if(pr.play_time_ > 60 * 60 and 120 * 60 >= pr.play_time_, pr.user_id_, null)) as playTimeLess120
  21. , count(distinct if(pr.play_time_ > 120 * 60 and 240 * 60 >= pr.play_time_, pr.user_id_, null)) as playTimeLess240
  22. , count(distinct if(pr.play_time_ > 240 * 60, pr.user_id_, null)) as playTimeRather240
  23. , if(count(distinct pr.user_id_) = 0, 0, (sum(pr.play_time_) / (count(distinct pr.user_id_) * 60))) as avgPlayTime
  24. from organization o
  25. left join sys_user su on o.id_ = su.organ_id_
  26. left join student s on s.user_id_ = su.id_
  27. left join (select user_id_, sum(play_time_) play_time_
  28. from student_courseware_play_record
  29. where create_time_ > #{statQuery.startTime}
  30. and #{statQuery.endTime} > create_time_
  31. group by user_id_) pr on s.user_id_ = pr.user_id_
  32. where s.membership_end_time_ >= now()
  33. group by o.id_
  34. order by ${statQuery.sortBy}
  35. </select>
  36. <select id="statDetailPage" resultType="com.ym.mec.biz.dal.wrapper.StudentCoursewarePlayRecordWrapper$StatQueryData">
  37. select o.id_ as organizationId
  38. , o.name_ as organizationName
  39. , su2.username_ as teacherName
  40. , count(s.user_id_) as memberNum
  41. , (count(distinct s.user_id_) - count(distinct pr.user_id_)) as noPlayNum
  42. , count(distinct if(10 * 60 >= pr.play_time_, pr.user_id_, null)) as playTimeLess10
  43. , count(distinct if(pr.play_time_ > 10 * 60 and 600 * 60 >= pr.play_time_, pr.user_id_, null)) as playTimeLess60
  44. , count(distinct if(pr.play_time_ > 10 * 60 and 120 * 60 >= pr.play_time_, pr.user_id_, null)) as playTimeLess120
  45. , count(distinct if(pr.play_time_ > 120 * 60 and 240 * 60 >= pr.play_time_, pr.user_id_, null)) as playTimeLess240
  46. , count(distinct if(pr.play_time_ > 240 * 60, pr.user_id_, null)) as playTimeRather240
  47. , if(count(distinct pr.user_id_) = 0, 0, (sum(pr.play_time_) / (count(distinct pr.user_id_) * 60))) as avgPlayTime
  48. from organization o
  49. left join sys_user su on su.organ_id_ = o.id_
  50. left join student s on s.user_id_ = su.id_
  51. left join student_teacher_mapper stm on stm.student_id_ = s.user_id_
  52. left join sys_user su2 on su2.id_ = stm.teacher_id_
  53. left join (select user_id_, sum(play_time_) play_time_
  54. from student_courseware_play_record
  55. where create_time_ > #{statQuery.startTime}
  56. and #{statQuery.endTime} > create_time_
  57. group by user_id_) pr on s.user_id_ = pr.user_id_
  58. where o.id_ = #{statQuery.organizationId}
  59. and s.membership_end_time_ >= now()
  60. group by stm.teacher_id_
  61. order by ${statQuery.sortBy}
  62. </select>
  63. </mapper>