TempLittleArtistTrainingCampMapper.xml 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323
  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.dao.TempLittleArtistTrainingCampDao">
  4. <resultMap id="BaseResultMap" type="com.ym.mec.biz.dal.entity.TempLittleArtistTrainingCamp">
  5. <id column="id_" jdbcType="INTEGER" property="id"/>
  6. <result column="name_" jdbcType="VARCHAR" property="name"/>
  7. <result column="num_" jdbcType="INTEGER" property="num"/>
  8. <result column="apply_start_date_" jdbcType="TIMESTAMP" property="applyStartDate"/>
  9. <result column="apply_end_date_" jdbcType="TIMESTAMP" property="applyEndDate"/>
  10. <result column="train_start_date_" jdbcType="TIMESTAMP" property="trainStartDate"/>
  11. <result column="train_end_date_" jdbcType="TIMESTAMP" property="trainEndDate"/>
  12. <result column="state_" jdbcType="VARCHAR" property="state"/>
  13. <result column="im_group_ids_" jdbcType="VARCHAR" property="imGroupIds"/>
  14. <result column="pic_url_" jdbcType="VARCHAR" property="picUrl"/>
  15. <result column="del_flag_" jdbcType="INTEGER" property="delFlag"/>
  16. <result column="create_by_" jdbcType="INTEGER" property="createBy"/>
  17. <result column="create_time_" jdbcType="TIMESTAMP" property="createTime"/>
  18. <result column="update_by_" jdbcType="INTEGER" property="updateBy"/>
  19. <result column="update_time_" jdbcType="TIMESTAMP" property="updateTime"/>
  20. <result column="organ_ids_" property="organIds"/>
  21. <result column="music_group_ids_" property="musicGroupIds"/>
  22. <result column="sign_standard_" property="signStandard"/>
  23. <result column="standard_days_" property="standardDays"/>
  24. <result column="enable_flag_" property="enableFlag"/>
  25. </resultMap>
  26. <sql id="Base_Column_List">
  27. id_
  28. , name_, num_, apply_start_date_, apply_end_date_, train_start_date_, train_end_date_,
  29. state_,pic_url_, im_group_ids_, create_by_, create_time_, update_by_, update_time_
  30. ,organ_ids_,music_group_ids_,sign_standard_,standard_days_,enable_flag_
  31. </sql>
  32. <insert id="insertBatch" keyColumn="id_" keyProperty="id" useGeneratedKeys="true"
  33. parameterType="com.ym.mec.biz.dal.entity.TempLittleArtistTrainingCamp">
  34. insert into temp_little_artist_training_camp(name_, num_, apply_start_date_, apply_end_date_, train_start_date_,
  35. train_end_date_, state_, im_group_ids_,pic_url_, del_flag_,create_by_, create_time_, update_by_, update_time_
  36. ,organ_ids_,music_group_ids_,sign_standard_,standard_days_,enable_flag_)
  37. values
  38. <foreach collection="entities" item="entity" separator=",">
  39. (#{entity.name}, #{entity.num}, #{entity.applyStartDate}, #{entity.applyEndDate}, #{entity.trainStartDate},
  40. #{entity.trainEndDate}, #{entity.state}, #{entity.imGroupIds}, #{entity.delFlag},#{entity.picUrl},#{entity.createBy}, #{entity.createTime},
  41. #{entity.updateBy}, #{entity.updateTime},#{entity.organIds}, #{entity.musicGroupIds},#{entity.signStandard}, #{entity.standardDays},#{entity.enableFlag})
  42. </foreach>
  43. </insert>
  44. <select id="queryUserTrainingTime" resultType="com.ym.mec.biz.dal.vo.TempUserTrainingTimeDetailVo" parameterType="java.util.Map">
  45. SELECT
  46. a.user_id_ AS userId,
  47. a.create_time_ AS trainingDate,
  48. sum(a.play_time_) AS playTime
  49. FROM
  50. ( SELECT
  51. user_id_,
  52. ifnull(play_time_, 0) AS play_time_,
  53. date_format(create_time_, '%Y-%m-%d') AS create_time_
  54. FROM sys_music_compare_record
  55. <where>
  56. <if test="param.startTime != null">
  57. AND create_time_ &gt;= #{param.startTime}
  58. </if>
  59. <if test="param.endTime != null">
  60. AND create_time_ &lt;= #{param.endTime}
  61. </if>
  62. <if test="param.userId != null">
  63. AND user_id_ = #{param.userId}
  64. </if>
  65. <if test="param.userIdList !=null and param.userIdList.size()>0">
  66. AND user_id_ IN
  67. <foreach collection="param.userIdList" item="userId" open="(" close=")" separator=",">
  68. #{userId}
  69. </foreach>
  70. </if>
  71. </where>
  72. ) AS a
  73. GROUP BY a.user_id_, a.create_time_
  74. </select>
  75. <select id="queryUserTrainingTimeV2" resultType="com.ym.mec.biz.dal.vo.TempUserTrainingTimeDetailVo" parameterType="java.util.Map">
  76. SELECT
  77. user_id_ as userId,
  78. ifnull(train_time_, 0) AS playTime,
  79. date_format(day_, '%Y-%m-%d') AS trainingDate
  80. FROM user_music_compare_camp_day_data
  81. <where>
  82. <if test="param.startTime != null">
  83. AND day_ &gt;= #{param.startTime}
  84. </if>
  85. <if test="param.campId != null">
  86. AND camp_id_ = #{param.campId}
  87. </if>
  88. <if test="param.endTime != null">
  89. AND day_ &lt;= #{param.endTime}
  90. </if>
  91. <if test="param.userId != null">
  92. AND user_id_ = #{param.userId}
  93. </if>
  94. <if test="param.userIdList !=null and param.userIdList.size()>0">
  95. AND user_id_ IN
  96. <foreach collection="param.userIdList" item="userId" open="(" close=")" separator=",">
  97. #{userId}
  98. </foreach>
  99. </if>
  100. </where>
  101. </select>
  102. <select id="queryAllUserId" resultType="java.lang.Integer">
  103. SELECT
  104. distinct user_id_
  105. FROM
  106. temp_little_artist_training_camp_user_relation
  107. </select>
  108. <select id="queryCampUser" resultType="com.ym.mec.biz.dal.vo.TempCampUserVo">
  109. select
  110. b.id_ as id,
  111. b.username_ as username,
  112. b.phone_ as phone,
  113. a.state_ as state,
  114. c.name_ as campName
  115. from temp_little_artist_training_camp_user_relation as a
  116. left join sys_user as b on a.user_id_ = b.id_
  117. left join temp_little_artist_training_camp as c on a.activity_id_ = c.id_
  118. <where>
  119. <if test="param.state != null ">
  120. AND a.state_ = #{param.state}
  121. </if>
  122. <if test="param.search != null ">
  123. AND (
  124. b.`id_` LIKE CONCAT('%', #{param.search},'%')
  125. OR b.`username_` LIKE CONCAT('%', #{param.search},'%')
  126. OR b.`phone_` LIKE CONCAT('%', #{param.search},'%')
  127. )
  128. </if>
  129. </where>
  130. </select>
  131. <select id="queryUserTrainingDetail" parameterType="java.util.Map" resultType="com.ym.mec.biz.dal.vo.TempCampUserTrainingDetailVo">
  132. SELECT a.user_id_ as id,
  133. d.username_ as username,
  134. d.phone_ as phone,
  135. e.name_ as imGroupName,
  136. ifnull(b.playDay, 0) as playDay,
  137. ifnull(c.playTime, 0) as playTime
  138. FROM `temp_little_artist_training_camp_user_relation` `a`
  139. LEFT JOIN (
  140. SELECT `a`.`user_id_`, COUNT(`playDay`) AS `playDay`
  141. FROM (
  142. SELECT `cr`.`user_id_`, DATE(`cr`.`create_time_`) AS `playDay`
  143. FROM `sys_music_compare_record` `cr`
  144. WHERE `cr`.`create_time_` &gt;= DATE_ADD(DATE(#{param.startTime}), INTERVAL IF(#{param.startTime} = DATE(#{param.startTime}), 0, 1) DAY)
  145. AND `cr`.`create_time_` &lt; DATE_ADD(DATE(#{param.endTime}), INTERVAL 1 DAY)
  146. GROUP BY `cr`.`user_id_`, DATE(`cr`.`create_time_`)
  147. HAVING SUM(`cr`.`play_time_`) > #{param.signStandard}
  148. ) `a`
  149. GROUP BY `a`.`user_id_`
  150. ) `b`
  151. ON `a`.`user_id_` = `b`.`user_id_`
  152. LEFT JOIN (
  153. SELECT `cr`.`user_id_`, SUM(`cr`.`play_time_`) AS `playTime`
  154. FROM `sys_music_compare_record` `cr`
  155. WHERE `cr`.`create_time_` &gt;= DATE_ADD(DATE(#{param.startTime}), INTERVAL IF(#{param.startTime} = DATE(#{param.startTime}), 0, 1) DAY)
  156. AND `cr`.`create_time_` &lt; DATE_ADD(DATE(#{param.endTime}), INTERVAL 1 DAY)
  157. GROUP BY `cr`.`user_id_`
  158. ) `c`
  159. ON `a`.`user_id_` = `c`.`user_id_`
  160. LEFT JOIN `sys_user` `d` ON `d`.`id_` = `a`.`user_id_`
  161. LEFT JOIN `im_group` `e` ON `a`.`im_group_id_` = `e`.`id_`
  162. <where>
  163. a.activity_id_ = #{param.campId} and a.state_ = #{param.state}
  164. <if test="param.imGroupId != null">
  165. AND e.id_ = #{param.imGroupId}
  166. </if>
  167. <if test="param.standardFlag != null and param.standardFlag == true">
  168. AND ifnull( b.playDay, 0 ) >= #{param.standardDays}
  169. </if>
  170. <if test="param.standardFlag != null and param.standardFlag == false">
  171. AND ifnull( b.playDay, 0 ) &lt; #{param.standardDays}
  172. </if>
  173. <if test="param.search != null ">
  174. AND (
  175. d.`id_` LIKE CONCAT('%', #{param.search},'%')
  176. OR d.`username_` LIKE CONCAT('%', #{param.search},'%')
  177. OR d.`phone_` LIKE CONCAT('%', #{param.search},'%')
  178. )
  179. </if>
  180. </where>
  181. </select>
  182. <select id="queryUserTrainingDetailV2" parameterType="java.util.Map" resultType="com.ym.mec.biz.dal.vo.TempCampUserTrainingDetailVo">
  183. select * from (SELECT
  184. a.user_id_ AS id,
  185. d.username_ AS username,
  186. d.phone_ AS phone,
  187. e.name_ AS imGroupName,
  188. sum( if(ifnull(c.train_time_,0) &gt;= b.sign_standard_ * 60,1,0)) AS playDay,
  189. sum(ifnull(c.train_time_,0)) AS playTime
  190. FROM
  191. `temp_little_artist_training_camp_user_relation` `a`
  192. left join temp_little_artist_training_camp b on b.id_ = a.activity_id_
  193. left join user_music_compare_camp_day_data c on c.camp_id_ = a.activity_id_ and a.user_id_ = c.user_id_
  194. LEFT JOIN `sys_user` `d` ON `d`.`id_` = `a`.`user_id_`
  195. LEFT JOIN `im_group` `e` ON `a`.`im_group_id_` = `e`.`id_`
  196. <where>
  197. a.activity_id_ = #{param.campId} and a.state_ = #{param.state}
  198. <if test="param.imGroupId != null">
  199. AND e.id_ = #{param.imGroupId}
  200. </if>
  201. <if test="param.search != null">
  202. AND (
  203. d.`id_` LIKE CONCAT('%', #{param.search},'%')
  204. OR d.`username_` LIKE CONCAT('%', #{param.search},'%')
  205. OR d.`phone_` LIKE CONCAT('%', #{param.search},'%')
  206. )
  207. </if>
  208. </where>
  209. group by a.user_id_
  210. ) t
  211. <where>
  212. <if test="param.standardFlag != null and param.standardFlag == true">
  213. AND ifnull( t.playDay, 0 ) >= #{param.standardDays}
  214. </if>
  215. <if test="param.standardFlag != null and param.standardFlag == false">
  216. AND ifnull( t.playDay, 0 ) &lt; #{param.standardDays}
  217. </if>
  218. </where>
  219. </select>
  220. <select id="queryCampImGroup" resultType="com.ym.mec.biz.dal.entity.ImGroup">
  221. select id_ as id,
  222. name_ as name
  223. from im_group
  224. where find_in_set(id_, #{imGroupIds})
  225. </select>
  226. <select id="queryUserTrainingPlayTime" resultType="int" parameterType="java.util.Map">
  227. SELECT ifnull(sum(`play_time_`), 0) as playTime
  228. FROM `sys_music_compare_record`
  229. WHERE user_id_ = #{param.userId}
  230. and create_time_ &gt;= #{param.startTime}
  231. AND create_time_ &lt;= #{param.endTime}
  232. </select>
  233. <select id="queryUserGroup" resultType="int" parameterType="int">
  234. <!--有乐团的用户-->
  235. <!--select a.user_id_ as userId, a.sortDate, b.subject_id_list_-->
  236. select a.user_id_ as userId
  237. from (select a.user_id_, c.bill_start_date_ as sortDate
  238. from (select a.activity_id_, a.user_id_, b.music_group_id_, a.state_
  239. from temp_little_artist_training_camp_user_relation as a
  240. left join student_registration as b on a.user_id_ = b.user_id_
  241. where a.state_ = 'APPLY'
  242. and a.activity_id_ = #{campId}
  243. and a.im_group_id_ is null
  244. group by b.user_id_
  245. having min(b.id_)) as a
  246. left join music_group as c on a.music_group_id_ = c.id_
  247. union all
  248. <!--没有乐团的用户-取第一次上课时间-->
  249. select a.user_id_, min(d.class_date_) as sortDate
  250. from temp_little_artist_training_camp_user_relation as a
  251. left join student_registration as b on a.user_id_ = b.user_id_
  252. left join course_schedule_student_payment as c on a.user_id_ = c.user_id_
  253. left join course_schedule as d on c.course_schedule_id_ = d.id_
  254. where b.id_ is null
  255. and a.state_ = 'APPLY'
  256. and a.activity_id_ = #{campId}
  257. and a.im_group_id_ is null
  258. group by a.user_id_
  259. having min(d.class_date_)
  260. union all
  261. <!-- 没有乐团-没有上课的用户 -->
  262. select a.user_id_, null as sortDate
  263. from temp_little_artist_training_camp_user_relation as a
  264. left join student_registration as b on a.user_id_ = b.user_id_
  265. left join course_schedule_student_payment as c on a.user_id_ = c.user_id_
  266. left join course_schedule as d on c.course_schedule_id_ = d.id_
  267. where b.id_ is null
  268. and c.id_ is null
  269. and a.state_ = 'APPLY'
  270. and a.activity_id_ = #{campId}
  271. and a.im_group_id_ is null
  272. group by a.user_id_) as a
  273. left join student as b on a.user_id_ = b.user_id_
  274. order by a.sortDate desc, b.subject_id_list_
  275. </select>
  276. <select id="queryStartTrainInfo" parameterType="string" resultType="com.ym.mec.biz.dal.vo.BaseVo">
  277. select
  278. b.user_id_ as id,
  279. c.name_ as `name`
  280. from temp_little_artist_training_camp as a
  281. left join temp_little_artist_training_camp_user_relation as b on a.id_ = b.activity_id_
  282. left join im_group as c on b.im_group_id_ = c.id_
  283. where a.train_start_date_ = #{date}
  284. and a.state_ = 'ING'
  285. and b.im_group_id_ is not null
  286. </select>
  287. <select id="findTrainingByStudent" resultType="com.ym.mec.biz.dal.entity.TempLittleArtistTrainingCamp">
  288. select tlatc.*,tlatcur.state_ status from temp_little_artist_training_camp tlatc
  289. left join temp_little_artist_training_camp_user_relation tlatcur ON tlatc.id_ = tlatcur.activity_id_ and tlatcur.user_id_ = #{userId}
  290. where
  291. <if test="musicGroupIds != null and musicGroupIds != ''">
  292. (INTE_ARRAY(tlatc.music_group_ids_,#{musicGroupIds}) OR tlatc.music_group_ids_ IS NULL) AND
  293. </if>
  294. <if test="musicGroupIds == null or musicGroupIds == ''">
  295. tlatc.music_group_ids_ IS NULL AND
  296. </if>
  297. (FIND_IN_SET(#{organId},tlatc.organ_ids_) OR tlatc.organ_ids_ IS NULL)
  298. and tlatc.del_flag_ = 0 and tlatc.enable_flag_ = 1 order by id_ DESC
  299. </select>
  300. <update id="updateUserNum" parameterType="object">
  301. update temp_little_artist_training_camp
  302. set num_ = num_ + 1
  303. where id_ = #{campId}
  304. and num_ &lt; #{maxNum}
  305. </update>
  306. </mapper>