MusicGroupPaymentStudentCourseDetailMapper.xml 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  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. <!-- 这个文件是自动生成的。 不要修改此文件。所有改动将在下次重新自动生成时丢失。 -->
  4. <mapper namespace="com.ym.mec.biz.dal.dao.MusicGroupPaymentStudentCourseDetailDao">
  5. <resultMap
  6. type="com.ym.mec.biz.dal.entity.MusicGroupPaymentStudentCourseDetail"
  7. id="MusicGroupPaymentStudentCourseDetail">
  8. <result column="id_" property="id"/>
  9. <result column="music_group_payment_calender_id_" property="musicGroupPaymentCalenderId"/>
  10. <result column="music_group_payment_calender_detail_id_"
  11. property="musicGroupPaymentCalenderDetailId"/>
  12. <result column="user_id_" property="userId"/>
  13. <result column="course_type_" property="courseType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  14. <result column="course_original_price_" property="courseOriginalPrice"/>
  15. <result column="course_current_price_" property="courseCurrentPrice"/>
  16. <result column="total_course_minutes_" property="totalCourseMinutes"/>
  17. <result column="used_course_minutes_" property="usedCourseMinutes"/>
  18. <result column="create_time_" property="createTime"/>
  19. <result column="update_time_" property="updateTime"/>
  20. <result column="tenant_id_" property="tenantId"/>
  21. </resultMap>
  22. <!-- 根据主键查询一条记录 -->
  23. <select id="get" resultMap="MusicGroupPaymentStudentCourseDetail">
  24. SELECT *
  25. FROM music_group_payment_student_course_detail
  26. WHERE id_ = #{id}
  27. </select>
  28. <!-- 全查询 -->
  29. <select id="findAll" resultMap="MusicGroupPaymentStudentCourseDetail">
  30. SELECT *
  31. FROM music_group_payment_student_course_detail where tenant_id_ = #{tenantId}
  32. ORDER BY id_
  33. </select>
  34. <!-- 向数据库增加一条记录 -->
  35. <insert id="insert"
  36. parameterType="com.ym.mec.biz.dal.entity.MusicGroupPaymentStudentCourseDetail"
  37. useGeneratedKeys="true" keyColumn="id" keyProperty="id">
  38. INSERT INTO music_group_payment_student_course_detail
  39. (music_group_payment_calender_id_,music_group_payment_calender_detail_id_,user_id_,course_type_,
  40. total_course_minutes_,used_course_minutes_,create_time_,update_time_,course_original_price_,course_current_price_,tenant_id_)
  41. VALUES(#{musicGroupPaymentCalenderId},#{musicGroupPaymentCalenderDetailId},#{userId},
  42. #{courseType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{totalCourseMinutes},#{usedCourseMinutes},
  43. NOW(),NOW(),#{courseOriginalPrice},#{courseCurrentPrice},#{tenantId})
  44. </insert>
  45. <insert id="batchInsert" parameterType="java.util.List" useGeneratedKeys="true" keyColumn="id"
  46. keyProperty="id">
  47. INSERT INTO music_group_payment_student_course_detail
  48. (music_group_payment_calender_id_,music_group_payment_calender_detail_id_,user_id_,
  49. course_type_,total_course_minutes_,used_course_minutes_,create_time_,update_time_,course_original_price_,course_current_price_,tenant_id_)
  50. VALUES
  51. <foreach collection="list" item="item" separator=",">
  52. (#{item.musicGroupPaymentCalenderId},#{item.musicGroupPaymentCalenderDetailId},
  53. #{item.userId},#{item.courseType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
  54. #{item.totalCourseMinutes},#{item.usedCourseMinutes},NOW(),NOW(),#{item.courseOriginalPrice},#{item.courseCurrentPrice},#{item.tenantId})
  55. </foreach>
  56. </insert>
  57. <!-- 根据主键查询一条记录 -->
  58. <update id="update"
  59. parameterType="com.ym.mec.biz.dal.entity.MusicGroupPaymentStudentCourseDetail">
  60. UPDATE music_group_payment_student_course_detail
  61. <set>
  62. <if test="courseOriginalPrice != null">
  63. course_original_price_ = #{courseOriginalPrice},
  64. </if>
  65. <if test="courseCurrentPrice != null">
  66. course_current_price_ = #{courseCurrentPrice},
  67. </if>
  68. <if test="usedCourseMinutes != null">
  69. used_course_minutes_ = #{usedCourseMinutes},
  70. </if>
  71. <if test="totalCourseMinutes != null">
  72. total_course_minutes_ = #{totalCourseMinutes},
  73. </if>
  74. <if test="userId != null">
  75. user_id_ = #{userId},
  76. </if>
  77. <if test="musicGroupPaymentCalenderDetailId != null">
  78. music_group_payment_calender_detail_id_ = #{musicGroupPaymentCalenderDetailId},
  79. </if>
  80. <if test="musicGroupPaymentCalenderId != null">
  81. music_group_payment_calender_id_ = #{musicGroupPaymentCalenderId},
  82. </if>
  83. <if test="courseType != null">
  84. course_type_ = #{courseType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
  85. </if>
  86. update_time_ = NOW()
  87. </set>
  88. WHERE id_ = #{id} and tenant_id_ = #{tenantId}
  89. </update>
  90. <update id="batchUpdate"
  91. parameterType="com.ym.mec.biz.dal.entity.MusicGroupPaymentStudentCourseDetail">
  92. <foreach collection="paymentCourseDetails" item="paymentCourseDetail" separator=";">
  93. UPDATE music_group_payment_student_course_detail
  94. <set>
  95. <if test="paymentCourseDetail.courseOriginalPrice != null">
  96. course_original_price_ = #{paymentCourseDetail.courseOriginalPrice},
  97. </if>
  98. <if test="paymentCourseDetail.courseCurrentPrice != null">
  99. course_current_price_ = #{paymentCourseDetail.courseCurrentPrice},
  100. </if>
  101. <if test="paymentCourseDetail.usedCourseMinutes != null">
  102. used_course_minutes_ = #{paymentCourseDetail.usedCourseMinutes},
  103. </if>
  104. <if test="paymentCourseDetail.totalCourseMinutes != null">
  105. total_course_minutes_ = #{paymentCourseDetail.totalCourseMinutes},
  106. </if>
  107. <if test="paymentCourseDetail.userId != null">
  108. user_id_ = #{paymentCourseDetail.userId},
  109. </if>
  110. <if test="paymentCourseDetail.musicGroupPaymentCalenderDetailId != null">
  111. music_group_payment_calender_detail_id_ = #{paymentCourseDetail.musicGroupPaymentCalenderDetailId},
  112. </if>
  113. <if test="paymentCourseDetail.musicGroupPaymentCalenderId != null">
  114. music_group_payment_calender_id_ = #{paymentCourseDetail.musicGroupPaymentCalenderId},
  115. </if>
  116. <if test="paymentCourseDetail.courseType != null">
  117. course_type_ = #{paymentCourseDetail.courseType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
  118. </if>
  119. update_time_ = NOW()
  120. </set>
  121. WHERE id_ = #{paymentCourseDetail.id} and tenant_id_ = #{paymentCourseDetail.tenantId}
  122. </foreach>
  123. </update>
  124. <update id="updateByCourseType">
  125. UPDATE music_group_payment_student_course_detail
  126. SET course_current_price_ = #{courseCurrentPrice},update_time_ = NOW()
  127. WHERE course_type_ = #{courseType} AND FIND_IN_SET(music_group_payment_calender_detail_id_,#{musicGroupPaymentCalenderIds})
  128. </update>
  129. <!-- 根据主键删除一条记录 -->
  130. <delete id="delete">
  131. DELETE
  132. FROM music_group_payment_student_course_detail
  133. WHERE id_ = #{id}
  134. </delete>
  135. <!-- 根据主键删除一条记录 -->
  136. <delete id="deleteByMusicGroupPaymentCalenderId">
  137. DELETE FROM music_group_payment_student_course_detail
  138. WHERE music_group_payment_calender_id_ = #{musicGroupPaymentCalenderId}
  139. </delete>
  140. <delete id="deleteByMusicGroupPaymentCalenderDetailId">
  141. DELETE FROM music_group_payment_student_course_detail
  142. <where>
  143. music_group_payment_calender_detail_id_ IN
  144. <foreach item="item" collection="list" separator="," open="(" close=")" index="">
  145. #{item}
  146. </foreach>
  147. </where>
  148. </delete>
  149. <!-- 分页查询 -->
  150. <select id="queryByMusicGroupPaymentStudentCourseDetailId" resultMap="MusicGroupPaymentStudentCourseDetail"
  151. parameterType="map">
  152. SELECT * FROM music_group_payment_student_course_detail
  153. <where>
  154. music_group_payment_calender_detail_id_ in
  155. <foreach item="item" collection="list" separator="," open="(" close=")" index="">
  156. #{item}
  157. </foreach>
  158. </where>
  159. </select>
  160. <!-- 分页查询 -->
  161. <select id="queryPage" resultMap="MusicGroupPaymentStudentCourseDetail"
  162. parameterType="map">
  163. SELECT * FROM music_group_payment_student_course_detail where tenant_id_ = #{tenantId} ORDER BY id_
  164. <include refid="global.limit"/>
  165. </select>
  166. <!-- 查询当前表的总记录数 -->
  167. <select id="queryCount" resultType="int">
  168. SELECT COUNT(*)
  169. FROM music_group_payment_student_course_detail where tenant_id_ = #{tenantId}
  170. </select>
  171. <select id="getUnUseWithStudentAndCourseTypeAndCourseMinutes" resultMap="MusicGroupPaymentStudentCourseDetail">
  172. SELECT mgpscd.*
  173. FROM music_group_payment_student_course_detail mgpscd
  174. LEFT JOIN music_group_payment_calender mgpc ON mgpscd.music_group_payment_calender_id_ = mgpc.id_
  175. WHERE
  176. FIND_IN_SET(mgpc.batch_no_,#{batchNo})
  177. AND mgpscd.user_id_ = #{studentId}
  178. AND mgpscd.course_type_ = #{courseType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  179. AND mgpscd.used_course_minutes_ &lt;= 0
  180. ORDER BY mgpscd.id_;
  181. </select>
  182. <select id="getUnUseBatchNoWithStudentAndCourseTypeAndCourseMinutes" resultType="string">
  183. SELECT
  184. mgpc.batch_no_
  185. FROM music_group_payment_calender mgpc
  186. LEFT JOIN music_group_payment_student_course_detail mgpscd ON mgpscd.music_group_payment_calender_id_ = mgpc.id_
  187. WHERE
  188. mgpc.music_group_id_ = #{musicGroupId}
  189. <if test="studentId != null">
  190. AND mgpscd.user_id_ = #{studentId}
  191. </if>
  192. <if test="batchNos != null">
  193. AND mgpc.batch_no_ NOT IN
  194. <foreach collection="batchNos" item="item" open="(" close=")" separator=",">
  195. #{item}
  196. </foreach>
  197. </if>
  198. <if test="courseType != null">
  199. AND mgpscd.course_type_ = #{courseType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  200. </if>
  201. GROUP BY mgpc.batch_no_ HAVING min(mgpscd.used_course_minutes_) &lt;=0 ORDER BY MIN(mgpc.id_) LIMIT 1;
  202. </select>
  203. <select id="getUnUseWithStudents" resultMap="MusicGroupPaymentStudentCourseDetail">
  204. SELECT
  205. MIN(mgpscd.id_) id_,
  206. MIN(mgpscd.music_group_payment_calender_id_) music_group_payment_calender_id_,
  207. mgpscd.user_id_,
  208. mgpscd.course_type_,
  209. SUM(mgpscd.total_course_minutes_) total_course_minutes_,
  210. SUM(mgpscd.used_course_minutes_) used_course_minutes_
  211. FROM music_group_payment_student_course_detail mgpscd
  212. LEFT JOIN music_group_payment_calender mgpc ON mgpscd.music_group_payment_calender_id_ = mgpc.id_
  213. WHERE mgpc.music_group_id_ = #{musicGroupId}
  214. AND user_id_ IN
  215. <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
  216. #{studentId}
  217. </foreach>
  218. GROUP BY mgpscd.user_id_,mgpscd.course_type_,mgpc.batch_no_
  219. HAVING used_course_minutes_ &lt;= 0
  220. </select>
  221. <delete id="deleteByUserIdAndMusicGroupId">
  222. DELETE
  223. FROM music_group_payment_student_course_detail
  224. WHERE user_id_ = #{userId}
  225. AND music_group_payment_calender_id_ IN (
  226. SELECT id_
  227. FROM music_group_payment_calender
  228. WHERE music_group_id_ = #{musicGroupId}
  229. )
  230. </delete>
  231. <resultMap id="StudentSubTotalCourseTimesDto" type="com.ym.mec.biz.dal.dto.StudentSubTotalCourseTimesDto">
  232. <result property="userId" column="user_id_"/>
  233. <result property="username" column="username_"/>
  234. <result property="phone" column="phone_"/>
  235. <result property="classGroupId" column="class_group_id_"/>
  236. <collection property="mapDtos" ofType="com.ym.mec.biz.dal.dto.MapDto">
  237. <result property="key" column="key"/>
  238. <result property="value" column="value"/>
  239. </collection>
  240. </resultMap>
  241. <select id="queryStudentSubTotalCourseTimes" resultMap="StudentSubTotalCourseTimesDto">
  242. SELECT mgpscd.user_id_,su.username_,su.phone_,mgpscd.course_type_ 'key',
  243. SUM(CASE WHEN mgpscd.used_course_minutes_ = 0 THEN mgpscd.total_course_minutes_ ELSE 0 END) 'value'
  244. FROM music_group_payment_student_course_detail mgpscd
  245. LEFT JOIN music_group_payment_calender mgpc ON mgpc.id_ = mgpscd.music_group_payment_calender_id_
  246. LEFT JOIN sys_user su ON su.id_ = mgpscd.user_id_
  247. WHERE mgpc.music_group_id_ = #{musicGroupId}
  248. GROUP BY mgpscd.user_id_,mgpscd.course_type_
  249. </select>
  250. <select id="findByCalenderAndUserId" resultMap="MusicGroupPaymentStudentCourseDetail">
  251. SELECT * FROM music_group_payment_student_course_detail WHERE music_group_payment_calender_id_ = #{calenderId}
  252. <if test="userId != null">
  253. AND user_id_ = #{userId}
  254. </if>
  255. </select>
  256. </mapper>