FsUserCoursePeriodMapper.xml 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.fs.course.mapper.FsUserCoursePeriodMapper">
  6. <resultMap type="FsUserCoursePeriod" id="FsUserCoursePeriodResult">
  7. <result property="periodId" column="period_id" />
  8. <result property="periodName" column="period_name" />
  9. <result property="companyId" column="company_id" />
  10. <result property="trainingCampId" column="training_camp_id" />
  11. <result property="createTime" column="create_time" />
  12. <result property="updateTime" column="update_time" />
  13. <result property="courseStyle" column="course_style" />
  14. <result property="liveRoomStyle" column="live_room_style" />
  15. <result property="redPacketGrantMethod" column="red_packet_grant_method" />
  16. <result property="periodType" column="period_type" />
  17. <result property="periodStartingTime" column="period_starting_time" />
  18. <result property="periodEndTime" column="period_end_time" />
  19. <result property="maxViewNum" column="max_view_num" />
  20. <result property="courseLogo" column="course_logo" />
  21. <result property="openCommentStatus" column="open_comment_status" />
  22. <result property="periodLine" column="period_line" />
  23. <result property="appViewEnabled" column="app_view_enabled" />
  24. <result property="miniProgramViewEnabled" column="mini_program_view_enabled" />
  25. <result property="h5ViewEnabled" column="h5_view_enabled" />
  26. </resultMap>
  27. <sql id="selectFsUserCoursePeriodVo">
  28. select * from fs_user_course_period
  29. </sql>
  30. <select id="selectFsUserCoursePeriodList" parameterType="FsUserCoursePeriod" resultMap="FsUserCoursePeriodResult">
  31. <include refid="selectFsUserCoursePeriodVo"/>
  32. <where>
  33. del_flag ='0'
  34. <if test="periodName != null and periodName != ''"> and period_name like concat('%', #{periodName}, '%')</if>
  35. <if test="companyId != null "> and FIND_IN_SET (#{companyId}, company_id ) > 0</if>
  36. <if test="trainingCampId != null "> and training_camp_id = #{trainingCampId}</if>
  37. <if test="courseStyle != null and courseStyle != ''"> and course_style = #{courseStyle}</if>
  38. <if test="liveRoomStyle != null and liveRoomStyle != ''"> and live_room_style = #{liveRoomStyle}</if>
  39. <if test="redPacketGrantMethod != null "> and red_packet_grant_method = #{redPacketGrantMethod}</if>
  40. <if test="periodType != null "> and period_type = #{periodType}</if>
  41. <if test="periodStartingTime != null "> and period_starting_time = #{periodStartingTime}</if>
  42. <if test="periodEndTime != null "> and period_end_time = #{periodEndTime}</if>
  43. <if test="periodLine != null "> and period_line = #{periodLine}</if>
  44. </where>
  45. </select>
  46. <select id="selectFsUserCoursePeriodPage" parameterType="FsUserCoursePeriod" resultType="com.fs.course.vo.FsUserCoursePeriodVO">
  47. SELECT
  48. fs_user_course_period.period_id,
  49. fs_user_course_period.period_name,
  50. fs_user_course_period.company_id,
  51. fs_user_course_period.training_camp_id,
  52. fs_user_course_period.create_time,
  53. fs_user_course_period.update_time,
  54. fs_user_course_period.period_status,
  55. fs_user_course_period.max_view_num,
  56. course_style,
  57. live_room_style,
  58. red_packet_grant_method,
  59. period_type,
  60. period_end_time,
  61. period_starting_time,
  62. period_line,
  63. fctc.training_camp_name AS trainingCampName,
  64. GROUP_CONCAT( company.company_name ) AS companyName
  65. FROM
  66. fs_user_course_period
  67. left join fs_user_course_training_camp fctc on fctc.training_camp_id = fs_user_course_period.training_camp_id
  68. left join company on FIND_IN_SET(company.company_id, fs_user_course_period.company_id) > 0
  69. <where>
  70. fs_user_course_period.del_flag ='0'
  71. <if test="trainingCampId != null"> and fs_user_course_period.training_camp_id = #{trainingCampId}</if>
  72. <if test="periodName != null and periodName != ''"> and period_name like concat('%', #{periodName}, '%')</if>
  73. <if test="companyIdList != null and companyIdList.size() > 0 ">
  74. and
  75. <foreach item="companyId" index="index" collection="companyIdList"
  76. open="(" separator="or" close=")">
  77. FIND_IN_SET(#{companyId}, fs_user_course_period.company_id)
  78. </foreach>
  79. </if>
  80. <if test="periodStartingTime != null "> and period_starting_time &gt;= #{periodStartingTime}</if>
  81. <if test="periodEndTime != null "> and period_end_time &lt;= #{periodEndTime}</if>
  82. <if test="periodLine != null "> and period_line = #{periodLine}</if>
  83. </where>
  84. group by fs_user_course_period.period_id
  85. order by fs_user_course_period.period_status,period_starting_time desc
  86. </select>
  87. <select id="selectFsUserCoursePeriodById" parameterType="Long" resultMap="FsUserCoursePeriodResult">
  88. <include refid="selectFsUserCoursePeriodVo"/>
  89. where del_flag ='0' and period_id = #{periodId}
  90. </select>
  91. <insert id="insertFsUserCoursePeriod" parameterType="FsUserCoursePeriod" useGeneratedKeys="true" keyProperty="periodId">
  92. insert into fs_user_course_period
  93. <trim prefix="(" suffix=")" suffixOverrides=",">
  94. <if test="periodId != null">period_id,</if>
  95. <if test="periodName != null">period_name,</if>
  96. <if test="companyId != null">company_id,</if>
  97. <if test="trainingCampId != null">training_camp_id,</if>
  98. <if test="createTime != null">create_time,</if>
  99. <if test="updateTime != null">update_time,</if>
  100. <if test="courseStyle != null">course_style,</if>
  101. <if test="liveRoomStyle != null">live_room_style,</if>
  102. <if test="redPacketGrantMethod != null">red_packet_grant_method,</if>
  103. <if test="periodType != null">period_type,</if>
  104. <if test="periodStartingTime != null">period_starting_time,</if>
  105. <if test="periodEndTime != null">period_end_time,</if>
  106. <if test="periodStatus != null">period_status,</if>
  107. <if test="viewStartTime != null">view_start_time,</if>
  108. <if test="viewEndTime != null">view_end_time,</if>
  109. <if test="lastJoinTime != null">last_join_time,</if>
  110. <if test="maxViewNum != null">max_view_num,</if>
  111. <if test="courseLogo != null">course_logo,</if>
  112. <if test="openCommentStatus != null">open_comment_status,</if>
  113. <if test="periodLine != null">period_line,</if>
  114. <if test="appViewEnabled != null">app_view_enabled,</if>
  115. <if test="miniProgramViewEnabled != null">mini_program_view_enabled,</if>
  116. <if test="h5ViewEnabled != null">h5_view_enabled,</if>
  117. </trim>
  118. <trim prefix="values (" suffix=")" suffixOverrides=",">
  119. <if test="periodId != null">#{periodId},</if>
  120. <if test="periodName != null">#{periodName},</if>
  121. <if test="companyId != null">#{companyId},</if>
  122. <if test="trainingCampId != null">#{trainingCampId},</if>
  123. <if test="createTime != null">#{createTime},</if>
  124. <if test="updateTime != null">#{updateTime},</if>
  125. <if test="courseStyle != null">#{courseStyle},</if>
  126. <if test="liveRoomStyle != null">#{liveRoomStyle},</if>
  127. <if test="redPacketGrantMethod != null">#{redPacketGrantMethod},</if>
  128. <if test="periodType != null">#{periodType},</if>
  129. <if test="periodStartingTime != null">#{periodStartingTime},</if>
  130. <if test="periodEndTime != null">#{periodEndTime},</if>
  131. <if test="periodStatus != null">#{periodStatus},</if>
  132. <if test="viewStartTime != null">#{viewStartTime},</if>
  133. <if test="viewEndTime != null">#{viewEndTime},</if>
  134. <if test="lastJoinTime != null">#{lastJoinTime},</if>
  135. <if test="maxViewNum != null">#{maxViewNum},</if>
  136. <if test="courseLogo != null">#{courseLogo},</if>
  137. <if test="openCommentStatus != null">#{openCommentStatus},</if>
  138. <if test="periodLine != null">#{periodLine},</if>
  139. <if test="appViewEnabled != null">#{appViewEnabled},</if>
  140. <if test="miniProgramViewEnabled != null">#{miniProgramViewEnabled},</if>
  141. <if test="h5ViewEnabled != null">#{h5ViewEnabled},</if>
  142. </trim>
  143. </insert>
  144. <update id="updateFsUserCoursePeriod" parameterType="FsUserCoursePeriod">
  145. update fs_user_course_period
  146. <trim prefix="SET" suffixOverrides=",">
  147. <if test="periodName != null">period_name = #{periodName},</if>
  148. <if test="companyId != null">company_id = #{companyId},</if>
  149. <if test="trainingCampId != null">training_camp_id = #{trainingCampId},</if>
  150. <if test="createTime != null">create_time = #{createTime},</if>
  151. <if test="updateTime != null">update_time = #{updateTime},</if>
  152. <if test="courseStyle != null">course_style = #{courseStyle},</if>
  153. <if test="liveRoomStyle != null">live_room_style = #{liveRoomStyle},</if>
  154. <if test="redPacketGrantMethod != null">red_packet_grant_method = #{redPacketGrantMethod},</if>
  155. <if test="periodType != null">period_type = #{periodType},</if>
  156. <if test="periodStartingTime != null">period_starting_time = #{periodStartingTime},</if>
  157. <if test="periodEndTime != null">period_end_time = #{periodEndTime},</if>
  158. <if test="periodStatus != null">period_status = #{periodStatus},</if>
  159. <if test="viewStartTime != null">view_start_time = #{viewStartTime},</if>
  160. <if test="viewEndTime != null">view_end_time = #{viewEndTime},</if>
  161. <if test="lastJoinTime != null">last_join_time = #{lastJoinTime},</if>
  162. <if test="maxViewNum != null">max_view_num = #{maxViewNum},</if>
  163. <if test="courseLogo != null and courseLogo !=''">course_logo = #{courseLogo},</if>
  164. <if test="openCommentStatus != null">open_comment_status = #{openCommentStatus},</if>
  165. <if test="periodLine != null">period_line = #{periodLine},</if>
  166. <if test="appViewEnabled != null">app_view_enabled = #{appViewEnabled},</if>
  167. <if test="miniProgramViewEnabled != null">mini_program_view_enabled = #{miniProgramViewEnabled},</if>
  168. <if test="h5ViewEnabled != null">h5_view_enabled = #{h5ViewEnabled},</if>
  169. </trim>
  170. where period_id = #{periodId}
  171. </update>
  172. <delete id="deleteFsUserCoursePeriodById" parameterType="Long">
  173. delete from fs_user_course_period where period_id = #{periodId}
  174. </delete>
  175. <delete id="deleteFsUserCoursePeriodByIds" parameterType="String">
  176. delete from fs_user_course_period where period_id in
  177. <foreach item="periodId" collection="array" open="(" separator="," close=")">
  178. #{periodId}
  179. </foreach>
  180. </delete>
  181. <select id="selectCompanyByPeriodVideo" resultType="com.fs.course.param.CompanyRedPacketParam">
  182. SELECT
  183. company.company_id,
  184. company.company_name,
  185. ifnull ( fvrp.red_packet_money, 0 ) AS amount
  186. FROM
  187. company
  188. LEFT JOIN fs_user_course_video_red_package fvrp ON fvrp.company_id = company.company_id
  189. AND fvrp.period_id = #{periodId}
  190. <if test="videoId != null and videoId!='' ">
  191. and fvrp.video_id = #{videoId}
  192. </if>
  193. WHERE
  194. company.company_id IN (
  195. SELECT
  196. company.company_id
  197. FROM
  198. company
  199. LEFT JOIN fs_user_course_period fcp ON FIND_IN_SET ( company.company_id, fcp.company_id ) > 0
  200. WHERE
  201. fcp.period_id = #{periodId}
  202. )
  203. </select>
  204. <select id="selectCompanyByPeriod" resultType="com.fs.course.param.CompanyRedPacketParam">
  205. SELECT
  206. company.company_id,
  207. company.company_name,
  208. IF(ucpc.open_red_packet is null, 1, ucpc.open_red_packet) openRedPacket,
  209. IF(ucpc.open_registration_switch is null, 0, ucpc.open_registration_switch) openRegistrationSwitch
  210. FROM
  211. company
  212. LEFT JOIN fs_user_course_period fcp ON FIND_IN_SET ( company.company_id, fcp.company_id ) > 0
  213. LEFT JOIN fs_user_course_period_company ucpc ON ucpc.company_id = company.company_id AND ucpc.period_id = fcp.period_id
  214. where fcp.period_id = #{periodId}
  215. </select>
  216. <select id="selectPeriodRedPacket" resultType="com.fs.course.vo.PeriodRedPacketVO">
  217. SELECT
  218. DISTINCT a.*,
  219. c.course_name,
  220. cv.title videoName,
  221. ifnull ( fvrp.red_packet_money, 0 ) AS amount
  222. FROM
  223. fs_user_course_period_days a
  224. LEFT JOIN fs_user_course_video cv ON a.video_id = cv.video_id
  225. LEFT JOIN fs_user_course c ON c.course_id = cv.course_id
  226. LEFT JOIN fs_user_course_video_red_package fvrp ON fvrp.period_id = a.period_id
  227. AND fvrp.video_id = a.video_id
  228. AND fvrp.period_id = #{periodId}
  229. AND fvrp.company_id = #{companyId}
  230. AND fvrp.data_type = 2
  231. and fvrp.del_flag = 0
  232. WHERE
  233. a.video_id IN (
  234. SELECT
  235. a.video_id
  236. FROM
  237. fs_user_course_period_days a
  238. LEFT JOIN fs_user_course_video cv ON a.video_id = cv.video_id
  239. LEFT JOIN fs_user_course c ON c.course_id = cv.course_id
  240. WHERE
  241. a.period_id = #{periodId}
  242. )
  243. and a.period_id = #{periodId}
  244. and a.del_flag = 0
  245. </select>
  246. <select id="selectFsUserCoursePeriodsByIds" resultType="FsUserCoursePeriod">
  247. select * from fs_user_course_period
  248. where del_flag ='0' and period_id in
  249. <foreach collection="periodIds" item="item" open="(" separator="," close=")">
  250. #{item}
  251. </foreach>
  252. </select>
  253. <select id="countPeriodByCampIds" resultType="java.lang.Integer">
  254. select count(ucp.period_id)
  255. from fs_user_course_period ucp
  256. inner join fs_user_course_training_camp uctc on uctc.training_camp_id = ucp.training_camp_id
  257. where ucp.del_flag ='0' and uctc.training_camp_id in
  258. <foreach collection="params.ids" item="id" open="(" separator="," close=")">
  259. #{id}
  260. </foreach>
  261. <![CDATA[
  262. and (ucp.period_starting_time <= #{params.date}
  263. and ucp.period_end_time > #{params.date})
  264. ]]>
  265. </select>
  266. <select id="selectPeriodListByTrainingCampIds" resultType="FsUserCoursePeriod">
  267. select * from fs_user_course_period
  268. where del_flag ='0' and training_camp_id in
  269. <foreach collection="trainingCampIds" item="item" open="(" separator="," close=")">
  270. #{item}
  271. </foreach>
  272. </select>
  273. <select id="setlectCourseCompleteNum" resultType="java.lang.Long">
  274. select
  275. count(watch.log_id)
  276. from
  277. fs_user_course_training_camp camp
  278. left join fs_user_course_period period on
  279. camp.training_camp_id = period.training_camp_id
  280. left join fs_course_watch_log watch on
  281. period.period_id = watch.period_id
  282. <where>
  283. `period`.del_flag = '0' and watch.log_type &lt;&gt; 3
  284. <if test="trainingCampId != null">and camp.training_camp_id = #{trainingCampId}</if>
  285. <if test="userId != null">and watch.user_id = #{userId}</if>
  286. <if test="periodId != null">and `period`.period_id = #{periodId}</if>
  287. </where>
  288. </select>
  289. <select id="setlectCourseWatchNum" resultType="java.lang.Long">
  290. select
  291. sum(watch.duration)
  292. from
  293. fs_user_course_training_camp camp
  294. left join fs_user_course_period period on
  295. camp.training_camp_id = period.training_camp_id
  296. left join fs_course_watch_log watch on
  297. period.period_id = watch.period_id
  298. <where>
  299. `period`.del_flag = '0' and watch.log_type &lt;&gt; 3
  300. <if test="trainingCampId != null">and camp.training_camp_id = #{trainingCampId}</if>
  301. <if test="userId != null">and watch.user_id = #{userId}</if>
  302. <if test="periodId != null">and `period`.period_id = #{periodId}</if>
  303. </where>
  304. </select>
  305. <select id="setlectRedPacketCount" resultType="java.lang.Long">
  306. select
  307. count(packet.log_id)
  308. from
  309. fs_user_course_training_camp camp
  310. left join fs_user_course_period period on
  311. camp.training_camp_id = period.training_camp_id
  312. left join fs_course_red_packet_log packet on
  313. period.period_id = packet.period_id
  314. <where>
  315. `period`.del_flag = '0' and packet.status =1
  316. <if test="trainingCampId != null">and camp.training_camp_id = #{trainingCampId}</if>
  317. <if test="userId != null">and packet.user_id = #{userId}</if>
  318. <if test="periodId != null">and `period`.period_id = #{periodId}</if>
  319. </where>
  320. </select>
  321. <select id="setlectRedPacketAmount" resultType="java.math.BigDecimal">
  322. select
  323. sum(packet.amount)
  324. from
  325. fs_user_course_training_camp camp
  326. left join fs_user_course_period period on
  327. camp.training_camp_id = period.training_camp_id
  328. left join fs_course_red_packet_log packet on
  329. period.period_id = packet.period_id
  330. <where>
  331. `period`.del_flag = '0' and packet.status =1
  332. <if test="trainingCampId != null">and camp.training_camp_id = #{trainingCampId}</if>
  333. <if test="userId != null">and packet.user_id = #{userId}</if>
  334. <if test="periodId != null">and `period`.period_id = #{periodId}</if>
  335. </where>
  336. </select>
  337. <select id="setlectCorrectAnswerNum" resultType="java.lang.Long">
  338. select
  339. count(answer.log_id)
  340. from
  341. fs_user_course_training_camp camp
  342. left join fs_user_course_period period on
  343. camp.training_camp_id = period.training_camp_id
  344. left join fs_course_answer_logs answer on
  345. period.period_id = answer.period_id
  346. <where>
  347. `period`.del_flag = '0' and answer.is_right =1
  348. <if test="trainingCampId != null">and camp.training_camp_id = #{trainingCampId}</if>
  349. <if test="userId != null">and answer.user_id = #{userId}</if>
  350. <if test="periodId != null">and `period`.period_id = #{periodId}</if>
  351. </where>
  352. </select>
  353. <select id="selectFsPeriodlist" resultMap="FsUserCoursePeriodResult">
  354. select
  355. period.period_id,
  356. period.period_name,
  357. period.company_id,
  358. period.training_camp_id,
  359. period.create_time,
  360. period.update_time,
  361. period.course_style,
  362. period.live_room_style,
  363. period.red_packet_grant_method,
  364. period.period_type,
  365. period.period_starting_time,
  366. period.period_end_time,
  367. period.period_status,
  368. period.view_start_time,
  369. period.view_end_time,
  370. period.last_join_time,
  371. period.max_view_num,
  372. period.course_logo,
  373. period.open_comment_status,
  374. period.del_flag
  375. from
  376. fs_user_course_period period
  377. left join fs_course_watch_log watch on
  378. period.period_id = watch.period_id
  379. <where>
  380. `period`.del_flag = '0' and watch.log_type &lt;&gt; 3
  381. <if test="trainingCampId != null">and `period`.training_camp_id = #{trainingCampId}</if>
  382. <if test="userId != null">and watch.user_id = #{userId}</if>
  383. <if test="periodId != null">and `period`.period_id = #{periodId}</if>
  384. </where>
  385. group by
  386. `period`.period_id
  387. </select>
  388. </mapper>