ActivityUserMapperMapper.xml 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713
  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. 这个文件是自动生成的。
  5. 不要修改此文件。所有改动将在下次重新自动生成时丢失。
  6. -->
  7. <mapper namespace="com.ym.mec.biz.dal.dao.ActivityUserMapperDao">
  8. <resultMap type="com.ym.mec.biz.dal.entity.ActivityUserMapper" id="ActivityUserMapper">
  9. <result column="id_" property="id" />
  10. <result column="category_id_" property="categoryId" />
  11. <result column="give_category_id_" property="giveCategoryId" />
  12. <result column="single_course_time_" property="singleCourseTime" />
  13. <result column="give_single_course_time_" property="giveSingleCourseTime" />
  14. <result column="activity_id_" property="activityId" />
  15. <result column="user_id_" property="userId" />
  16. <result column="vip_flag_" property="vipFlag" />
  17. <result column="give_vip_flag_" property="giveVipFlag" />
  18. <result column="practice_flag_" property="practiceFlag" />
  19. <result column="give_practice_flag_" property="givePracticeFlag" />
  20. <result column="member_flag_" property="memberFlag" />
  21. <result column="give_member_flag_" property="giveMemberFlag" />
  22. <result column="payment_order_id_" property="paymentOrderId" />
  23. <result column="vip_group_id_" property="vipGroupId" />
  24. <result column="total_course_num_" property="totalCourseNum" />
  25. <result column="total_give_course_num_" property="totalGiveCourseNum" />
  26. <result column="sub_course_num_" property="subCourseNum" />
  27. <result column="sub_give_course_num_" property="subGiveCourseNum" />
  28. <result column="give_vip_group_id_" property="giveVipGroupId" />
  29. <result column="member_order_id_" property="memberOrderId" />
  30. <result column="give_member_order_id_" property="giveMemberOrderId" />
  31. <result column="practice_group_id_" property="practiceGroupId" />
  32. <result column="give_practice_group_id_" property="givePracticeGroupId" />
  33. <result column="return_fee_" property="returnFee" />
  34. <result column="sub_no_course_price_" property="subNoCoursePrice" />
  35. <result column="actual_price_" property="actualPrice" />
  36. <result column="add_memo_" property="addMemo" />
  37. <result column="cut_memo_" property="cutMemo" />
  38. <result column="give_coupon_id_" property="giveCouponId" />
  39. <result column="create_time_" property="createTime" />
  40. <result column="calender_id_" property="calenderId" />
  41. <result column="organ_id_" property="organId" />
  42. <result column="update_time_" property="updateTime" />
  43. <result column="tenant_id_" property="tenantId" />
  44. </resultMap>
  45. <!-- 根据主键查询一条记录 -->
  46. <select id="get" resultMap="ActivityUserMapper" >
  47. SELECT * FROM activity_user_mapper WHERE id_ = #{id}
  48. </select>
  49. <!-- 全查询 -->
  50. <select id="findAll" resultMap="ActivityUserMapper">
  51. SELECT * FROM activity_user_mapper where tenant_id_ = #{tenantId} ORDER BY id_
  52. </select>
  53. <!-- 向数据库增加一条记录 -->
  54. <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.ActivityUserMapper" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
  55. INSERT INTO activity_user_mapper (activity_id_,user_id_,vip_flag_,give_vip_flag_,
  56. practice_flag_,give_practice_flag_,member_flag_,give_member_flag_,create_time_,update_time_,payment_order_id_,
  57. vip_group_id_,give_vip_group_id_,practice_group_id_,give_practice_group_id_,return_fee_,
  58. member_order_id_,give_member_order_id_,actual_price_,add_memo_,cut_memo_,tenant_id_,give_coupon_id_,
  59. total_course_num_,total_give_course_num_,sub_course_num_,sub_give_course_num_,sub_no_course_price_,single_course_time_,
  60. give_single_course_time_,category_id_,give_category_id_,calender_id_,organ_id_)
  61. VALUES(#{activityId},#{userId},#{vipFlag},#{giveVipFlag},#{practiceFlag},
  62. #{givePracticeFlag},#{memberFlag},#{giveMemberFlag},NOW(),NOW(),#{paymentOrderId},#{vipGroupId},
  63. #{giveVipGroupId},#{practiceGroupId},#{givePracticeGroupId},#{returnFee},
  64. #{memberOrderId},#{giveMemberOrderId},#{actualPrice},#{addMemo},#{cutMemo},#{tenantId},#{giveCouponId},
  65. #{totalCourseNum},#{totalGiveCourseNum},#{subCourseNum},#{subGiveCourseNum},#{subNoCoursePrice},
  66. #{singleCourseTime},#{giveSingleCourseTime},#{categoryId},#{giveCategoryId},#{calenderId},#{organId})
  67. </insert>
  68. <insert id="batchInsert">
  69. INSERT INTO activity_user_mapper (activity_id_,user_id_,vip_flag_,give_vip_flag_,
  70. practice_flag_,give_practice_flag_,member_flag_,give_member_flag_,create_time_,update_time_,payment_order_id_,
  71. vip_group_id_,give_vip_group_id_,practice_group_id_,give_practice_group_id_,return_fee_,member_order_id_,
  72. give_member_order_id_,actual_price_,add_memo_,cut_memo_,tenant_id_,give_coupon_id_,
  73. total_course_num_,total_give_course_num_,sub_course_num_,sub_give_course_num_,sub_no_course_price_,single_course_time_,
  74. give_single_course_time_,category_id_,give_category_id_,calender_id_,organ_id_)
  75. VALUES
  76. <foreach collection="activityUserMappers" item="item" separator=",">
  77. (#{item.activityId},#{item.userId},#{item.vipFlag},#{item.giveVipFlag},#{item.practiceFlag},
  78. #{item.givePracticeFlag},#{item.memberFlag},#{item.giveMemberFlag},NOW(),NOW(),#{item.paymentOrderId},#{item.vipGroupId},
  79. #{item.giveVipGroupId},#{item.practiceGroupId},#{item.givePracticeGroupId},#{item.returnFee},
  80. #{item.memberOrderId},#{item.giveMemberOrderId},#{item.actualPrice},#{item.addMemo},#{item.cutMemo},
  81. #{item.tenantId},#{item.giveCouponId},#{item.totalCourseNum},#{item.totalGiveCourseNum},#{item.subCourseNum},
  82. #{item.subGiveCourseNum},#{item.subNoCoursePrice},#{item.singleCourseTime},#{item.giveSingleCourseTime},
  83. #{item.categoryId},#{item.giveCategoryId},#{item.calenderId},#{item.organId})
  84. </foreach>
  85. </insert>
  86. <!-- 根据主键查询一条记录 -->
  87. <update id="update" parameterType="com.ym.mec.biz.dal.entity.ActivityUserMapper">
  88. UPDATE activity_user_mapper
  89. <set>
  90. <if test="calenderId != null">
  91. calender_id_ = #{calenderId},
  92. </if>
  93. <if test="singleCourseTime != null">
  94. single_course_time_ = #{singleCourseTime},
  95. </if>
  96. <if test="giveSingleCourseTime != null">
  97. give_single_course_time_ = #{giveSingleCourseTime},
  98. </if>
  99. <if test="totalCourseNum != null">
  100. total_course_num_ = #{totalCourseNum},
  101. </if>
  102. <if test="subNoCoursePrice != null">
  103. sub_no_course_price_ = #{subNoCoursePrice},
  104. </if>
  105. <if test="totalGiveCourseNum != null">
  106. total_give_course_num_ = #{totalGiveCourseNum},
  107. </if>
  108. <if test="subCourseNum != null">
  109. sub_course_num_ = #{subCourseNum},
  110. </if>
  111. <if test="subGiveCourseNum != null">
  112. sub_give_course_num_ = #{subGiveCourseNum},
  113. </if>
  114. <if test="giveCouponId != null">
  115. give_coupon_id_ = #{giveCouponId},
  116. </if>
  117. <if test="cutMemo != null">
  118. cut_memo_ = #{cutMemo},
  119. </if>
  120. <if test="addMemo != null">
  121. add_memo_ = #{addMemo},
  122. </if>
  123. <if test="actualPrice != null">
  124. actual_price_ = #{actualPrice},
  125. </if>
  126. <if test="memberOrderId != null">
  127. member_order_id_ = #{memberOrderId},
  128. </if>
  129. <if test="giveMemberOrderId != null">
  130. give_member_order_id_ = #{giveMemberOrderId},
  131. </if>
  132. <if test="returnFee != null">
  133. return_fee_ = #{returnFee},
  134. </if>
  135. <if test="vipGroupId != null">
  136. vip_group_id_ = #{vipGroupId},
  137. </if>
  138. <if test="giveVipGroupId != null">
  139. give_vip_group_id_ = #{giveVipGroupId},
  140. </if>
  141. <if test="practiceGroupId != null">
  142. practice_group_id_ = #{practiceGroupId},
  143. </if>
  144. <if test="givePracticeGroupId != null">
  145. give_practice_group_id_ = #{givePracticeGroupId},
  146. </if>
  147. <if test="paymentOrderId != null">
  148. payment_order_id_ = #{paymentOrderId},
  149. </if>
  150. <if test="userId != null">
  151. user_id_ = #{userId},
  152. </if>
  153. <if test="givePracticeFlag != null">
  154. give_practice_flag_ = #{givePracticeFlag},
  155. </if>
  156. <if test="giveVipFlag != null">
  157. give_vip_flag_ = #{giveVipFlag},
  158. </if>
  159. <if test="vipFlag != null">
  160. vip_flag_ = #{vipFlag},
  161. </if>
  162. <if test="activityId != null">
  163. activity_id_ = #{activityId},
  164. </if>
  165. <if test="practiceFlag != null">
  166. practice_flag_ = #{practiceFlag},
  167. </if>
  168. <if test="memberFlag != null">
  169. member_flag_ = #{memberFlag},
  170. </if>
  171. <if test="giveMemberFlag != null">
  172. give_member_flag_ = #{giveMemberFlag},
  173. </if>
  174. update_time_ = NOW()
  175. </set>WHERE id_ = #{id} and tenant_id_ = #{tenantId}
  176. </update>
  177. <update id="use">
  178. UPDATE activity_user_mapper SET
  179. <if test="type == 'VIP'">
  180. vip_flag_ = 2,vip_group_id_ = #{groupId},update_time_ = NOW()
  181. WHERE vip_flag_ = 1
  182. </if>
  183. <if test="type == 'GIVE_VIP'">
  184. give_vip_flag_ = 2,give_vip_group_id_ = #{groupId},update_time_ = NOW()
  185. WHERE give_vip_flag_ = 1
  186. </if>
  187. <if test="type == 'PRACTICE'">
  188. practice_flag_ = 2,practice_group_id_ = #{groupId},update_time_ = NOW()
  189. WHERE practice_flag_ = 1
  190. </if>
  191. <if test="type == 'GIVE_PRACTICE'">
  192. give_practice_flag_ = 2,give_practice_group_id_ = #{groupId},update_time_ = NOW()
  193. WHERE give_practice_flag_ = 1
  194. </if>
  195. AND FIND_IN_SET(id_,#{activityUserMapperIds}) AND FIND_IN_SET(user_id_,#{studentIds}) AND return_fee_ = 0
  196. </update>
  197. <update id="batchUpdate">
  198. <foreach collection="useActivityUserMappers" item="entity" separator=";">
  199. UPDATE activity_user_mapper
  200. <set>
  201. <if test="entity.subNoCoursePrice != null">
  202. sub_no_course_price_ = #{entity.subNoCoursePrice},
  203. </if>
  204. <if test="entity.subCourseNum != null">
  205. sub_course_num_ = #{entity.subCourseNum},
  206. </if>
  207. <if test="entity.subGiveCourseNum != null">
  208. sub_give_course_num_ = #{entity.subGiveCourseNum},
  209. </if>
  210. <if test="entity.vipGroupId != null">
  211. vip_group_id_ = #{entity.vipGroupId},
  212. </if>
  213. <if test="entity.giveVipGroupId != null">
  214. give_vip_group_id_ = #{entity.giveVipGroupId},
  215. </if>
  216. <if test="entity.practiceGroupId != null">
  217. practice_group_id_ = #{entity.practiceGroupId},
  218. </if>
  219. <if test="entity.givePracticeGroupId != null">
  220. give_practice_group_id_ = #{entity.givePracticeGroupId},
  221. </if>
  222. <if test="entity.givePracticeFlag != null">
  223. give_practice_flag_ = #{entity.givePracticeFlag},
  224. </if>
  225. <if test="entity.giveVipFlag != null">
  226. give_vip_flag_ = #{entity.giveVipFlag},
  227. </if>
  228. <if test="entity.vipFlag != null">
  229. vip_flag_ = #{entity.vipFlag},
  230. </if>
  231. <if test="entity.practiceFlag != null">
  232. practice_flag_ = #{entity.practiceFlag},
  233. </if>
  234. update_time_ = NOW()
  235. </set>WHERE id_ = #{entity.id}
  236. </foreach>
  237. </update>
  238. <update id="batchUpdateFree">
  239. <foreach collection="useActivityUserMappers" item="entity" separator=";">
  240. UPDATE activity_user_mapper
  241. <set>
  242. <if test="entity.subGiveCourseNum != null">
  243. sub_give_course_num_ = #{entity.subGiveCourseNum},
  244. </if>
  245. <if test="entity.giveVipGroupId != null">
  246. give_vip_group_id_ = #{entity.giveVipGroupId},
  247. </if>
  248. <if test="entity.givePracticeGroupId != null">
  249. give_practice_group_id_ = #{entity.givePracticeGroupId},
  250. </if>
  251. <if test="entity.givePracticeFlag != null">
  252. give_practice_flag_ = #{entity.givePracticeFlag},
  253. </if>
  254. <if test="entity.giveVipFlag != null">
  255. give_vip_flag_ = #{entity.giveVipFlag},
  256. </if>
  257. update_time_ = NOW()
  258. </set>WHERE id_ = #{entity.id}
  259. </foreach>
  260. </update>
  261. <!-- 根据主键删除一条记录 -->
  262. <delete id="delete" >
  263. DELETE FROM activity_user_mapper WHERE id_ = #{id}
  264. </delete>
  265. <!-- 分页查询 -->
  266. <select id="queryPage" resultMap="ActivityUserMapper" parameterType="map">
  267. SELECT * FROM activity_user_mapper where tenant_id_ = #{tenantId}
  268. <if test="userId != null">
  269. AND user_id_ = #{userId}
  270. </if>
  271. <if test="activityId != null">
  272. AND activity_id_ = #{activityId}
  273. </if>
  274. ORDER BY id_ DESC
  275. <include refid="global.limit"/>
  276. </select>
  277. <!-- 查询当前表的总记录数 -->
  278. <select id="queryCount" resultType="int">
  279. SELECT COUNT(*) FROM activity_user_mapper where tenant_id_ = #{tenantId}
  280. <if test="userId != null">
  281. AND user_id_ = #{userId}
  282. </if>
  283. <if test="activityId != null">
  284. AND activity_id_ = #{activityId}
  285. </if>
  286. </select>
  287. <select id="findByStudentIdList" resultMap="ActivityUserMapper">
  288. SELECT * FROM activity_user_mapper
  289. WHERE return_fee_ = 0 AND FIND_IN_SET(user_id_,#{studentIds})
  290. <if test="activityId != null">
  291. AND activity_id_ = #{activityId}
  292. </if>
  293. <if test="type == 'GIVE_VIP'">
  294. AND give_vip_flag_ = 1
  295. </if>
  296. <if test="type == 'GIVE_PRACTICE'">
  297. AND give_practice_flag_ = 1
  298. </if>
  299. <if test="type == 'VIP'">
  300. AND vip_flag_ = 1
  301. </if>
  302. <if test="type == 'PRACTICE'">
  303. AND practice_flag_ = 1
  304. </if>
  305. GROUP BY user_id_
  306. </select>
  307. <select id="countActivityBuyNum" resultType="java.lang.Integer">
  308. SELECT count(id_) FROM activity_user_mapper
  309. WHERE activity_id_ = #{activityId} AND user_id_ = #{userId}
  310. </select>
  311. <select id="findVipUserMapper" resultMap="ActivityUserMapper">
  312. SELECT * FROM activity_user_mapper
  313. WHERE 1 = 1
  314. <if test="groupType == 'VIP'">
  315. AND (vip_group_id_ = #{groupId} OR give_vip_group_id_ = #{groupId})
  316. </if>
  317. <if test="groupType == 'PRACTICE'">
  318. AND (practice_group_id_ = #{groupId} OR give_practice_group_id_ = #{groupId})
  319. </if>
  320. <if test="studentId != null">
  321. AND user_id_ = #{studentId}
  322. </if>
  323. LIMIT 1
  324. </select>
  325. <select id="countActivityUserMapper" resultType="java.lang.Integer">
  326. SELECT COUNT(DISTINCT aum.user_id_)
  327. FROM activity_user_mapper aum
  328. LEFT JOIN sys_user su ON su.id_ = aum.user_id_
  329. LEFT JOIN organization o ON o.id_ = su.organ_id_
  330. WHERE aum.return_fee_ = 0 AND aum.activity_id_ = #{activityId}
  331. <if test="search != null and search != ''">
  332. AND (aum.user_id_ = #{search} OR su.username_ LIKE CONCAT('%',#{search},'%') OR su.phone_ LIKE CONCAT('%',#{search},'%'))
  333. </if>
  334. <if test="organId != null and organId != ''">
  335. AND FIND_IN_SET(su.organ_id_,#{organId})
  336. </if>
  337. </select>
  338. <resultMap id="ActivityStudentDto" type="com.ym.mec.biz.dal.dto.ActivityStudentDto">
  339. <result property="userId" column="user_id_"/>
  340. <result property="username" column="username_"/>
  341. <result property="organName" column="name_"/>
  342. <result property="phone" column="phone_"/>
  343. <result property="totalCourseNum" column="total_course_num_"/>
  344. <result property="subCourseNum" column="sub_course_num_"/>
  345. <result property="totalGiveCourseNum" column="total_give_course_num_"/>
  346. <result property="subGiveCourseNum" column="sub_give_course_num_"/>
  347. </resultMap>
  348. <select id="queryActivityUserMapper" resultMap="ActivityStudentDto">
  349. SELECT o.name_,aum.user_id_,su.username_,su.phone_,
  350. SUM(aum.total_course_num_) total_course_num_,
  351. SUM(aum.sub_course_num_) sub_course_num_,
  352. SUM(aum.total_give_course_num_) total_give_course_num_,
  353. SUM(aum.sub_give_course_num_) sub_give_course_num_
  354. FROM activity_user_mapper aum
  355. LEFT JOIN sys_user su ON su.id_ = aum.user_id_
  356. LEFT JOIN organization o ON o.id_ = su.organ_id_
  357. WHERE aum.return_fee_ = 0 AND aum.activity_id_ = #{activityId}
  358. <if test="search != null and search != ''">
  359. AND (aum.user_id_ = #{search} OR su.username_ LIKE CONCAT('%',#{search},'%') OR su.phone_ LIKE CONCAT('%',#{search},'%'))
  360. </if>
  361. <if test="organId != null and organId != ''">
  362. AND FIND_IN_SET(su.organ_id_,#{organId})
  363. </if>
  364. GROUP BY aum.user_id_
  365. <include refid="global.limit"/>
  366. </select>
  367. <select id="getStudentNoMapperInfo" resultType="Integer">
  368. SELECT CASE WHEN aum.give_practice_flag_ = 1 THEN vga.give_course_num_ ELSE 0 END total_num_
  369. FROM activity_user_mapper aum
  370. LEFT JOIN vip_group_activity vga ON vga.id_ = aum.activity_id_
  371. WHERE aum.return_fee_ = 0 AND aum.user_id_ = #{userId} AND aum.activity_id_ = #{activityId}
  372. GROUP BY aum.user_id_
  373. </select>
  374. <select id="exportStudentSubCourse" resultType="com.ym.mec.biz.dal.dto.ExportStudentSubCourse">
  375. select
  376. t.user_id_ as userId,
  377. su.username_ as username,
  378. t.activity_id_ as activityId,
  379. o.name_ as organizationName,
  380. vga.name_ as activityName,
  381. sum(if(t.vip_flag_ = 1 || t.practice_flag_ = 1 ,1,0)) as subCourseNum,
  382. sum(if(t.give_vip_flag_ = 1 || t.give_practice_flag_ = 1,1,0)) as subGiveCourseNum
  383. from activity_user_mapper t
  384. left join vip_group_activity vga on t.activity_id_ = vga.id_
  385. left join sys_user su on t.user_id_ = su.id_
  386. left join organization o on su.organ_id_ = o.id_
  387. where t.tenant_id_ = #{tenantId} and t.return_fee_ = 0
  388. and (t.vip_flag_ = 1 or t.give_vip_flag_ = 1 or t.practice_flag_ = 1 or t.give_practice_flag_ = 1)
  389. <if test="organId != null">
  390. AND FIND_IN_SET(su.organ_id_,#{organId})
  391. </if>
  392. group by t.user_id_ , t.activity_id_
  393. </select>
  394. <resultMap id="CourseFormDto" type="com.ym.mec.biz.dal.dto.CourseFormDto">
  395. <result property="id" column="id_"/>
  396. <result property="name" column="name_"/>
  397. <result property="num" column="num_"/>
  398. <result property="studentNum" column="student_num_"/>
  399. </resultMap>
  400. <select id="queryWaitCourseCategory" resultMap="CourseFormDto">
  401. SELECT CASE WHEN vgc.id_ IS NULL THEN '网管课' ELSE vgc.name_ END name_,
  402. CASE WHEN vgc.id_ IS NULL THEN 0 ELSE vgc.id_ END id_,COUNT(DISTINCT aum.user_id_) num_,
  403. CASE WHEN vgc.id_ IS NULL THEN 1 ELSE vgc.student_num_ END student_num_
  404. FROM (select category_id_,user_id_,case when category_id_ IS NULL THEN 'PRACTICE' ELSE 'VIP' END type_
  405. from activity_user_mapper aum WHERE aum.sub_course_num_ > 0 AND aum.return_fee_ = 0
  406. UNION ALL
  407. select give_category_id_ category_id_,user_id_,case when give_category_id_ IS NULL THEN 'PRACTICE' ELSE 'VIP' END type_
  408. from activity_user_mapper aum
  409. WHERE aum.sub_give_course_num_ > 0 AND aum.return_fee_ = 0) aum
  410. LEFT JOIN vip_group_category vgc ON aum.category_id_ = vgc.id_
  411. <if test="userId != null">
  412. left join student_teacher_mapper stm ON stm.student_id_ = aum.user_id_
  413. left join student st ON st.user_id_ = aum.user_id_
  414. </if>
  415. <if test="organIds != null and organIds != ''">
  416. LEFT JOIN sys_user su ON su.id_ = aum.user_id_
  417. </if>
  418. <where>
  419. <if test="userId != null">
  420. AND ((stm.teacher_id_ = #{userId} AND aum.type_ = stm.teacher_type_) OR st.course_teacher_ = #{userId})
  421. </if>
  422. <if test="organIds != null and organIds != ''">
  423. AND FIND_IN_SET(su.organ_id_,#{organIds})
  424. </if>
  425. </where>
  426. GROUP BY vgc.id_
  427. </select>
  428. <resultMap id="ActivityUserDto" type="com.ym.mec.biz.dal.dto.ActivityUserDto">
  429. <result property="userId" column="user_id_"/>
  430. <result property="username" column="username_"/>
  431. <result property="phone" column="phone_"/>
  432. <result property="subjectName" column="subject_name_"/>
  433. <result property="subjectId" column="subject_id_"/>
  434. <result property="subCourseNum" column="sub_course_num_"/>
  435. </resultMap>
  436. <select id="queryActivityStudentList" resultMap="ActivityUserDto">
  437. SELECT aum.user_id_,su.avatar_,sj.id_ subject_id_,su.username_,su.phone_,sj.name_ subject_name_,SUM(aum.sub_course_num_) sub_course_num_
  438. FROM (SELECT aum.id_,aum.user_id_,aum.sub_course_num_,
  439. aum.single_course_time_,case when category_id_ IS NULL THEN 'PRACTICE' ELSE 'VIP' END type_ from activity_user_mapper aum
  440. WHERE aum.sub_course_num_ > 0 AND aum.return_fee_ = 0
  441. <if test="queryInfo.categoryId != null">
  442. AND aum.category_id_ = #{queryInfo.categoryId}
  443. </if>
  444. <if test="queryInfo.categoryId == null">
  445. AND aum.category_id_ IS NULL
  446. </if>
  447. UNION ALL
  448. SELECT aum.id_,aum.user_id_,aum.sub_give_course_num_ sub_course_num_,
  449. aum.give_single_course_time_ single_course_time_,case when give_category_id_ IS NULL THEN 'PRACTICE' ELSE 'VIP' END type_ from activity_user_mapper aum
  450. WHERE aum.sub_give_course_num_ > 0 AND aum.return_fee_ = 0
  451. <if test="queryInfo.categoryId != null">
  452. AND aum.give_category_id_ = #{queryInfo.categoryId}
  453. </if>
  454. <if test="queryInfo.categoryId == null">
  455. AND aum.give_category_id_ IS NULL
  456. </if>
  457. ) aum
  458. <if test="queryInfo.teacherId != null">
  459. left join student_teacher_mapper stm ON stm.student_id_ = aum.user_id_
  460. </if>
  461. LEFT JOIN sys_user su ON su.id_ = aum.user_id_
  462. LEFT JOIN student s ON s.user_id_ = aum.user_id_
  463. LEFT JOIN subject sj ON sj.id_ = s.subject_id_list_
  464. <where>
  465. <if test="queryInfo.search != null and queryInfo.search != ''">
  466. AND (su.id_ = #{queryInfo.search}
  467. OR su.username_ LIKE CONCAT('%',#{queryInfo.search},'%')
  468. OR su.phone_ LIKE CONCAT('%',#{queryInfo.search},'%'))
  469. </if>
  470. <if test="queryInfo.singleCourseTime != null">
  471. AND aum.single_course_time_ = #{queryInfo.singleCourseTime}
  472. </if>
  473. <if test="queryInfo.organIds != null and queryInfo.organIds != ''">
  474. AND FIND_IN_SET(su.organ_id_,#{queryInfo.organIds})
  475. </if>
  476. <if test="queryInfo.subjectIds != null and queryInfo.subjectIds != ''">
  477. AND FIND_IN_SET(sj.id_,#{queryInfo.subjectIds})
  478. </if>
  479. <if test="queryInfo.teacherId != null">
  480. AND ((stm.teacher_id_ = #{queryInfo.teacherId} AND aum.type_ = stm.teacher_type_) OR s.course_teacher_ = #{queryInfo.teacherId})
  481. </if>
  482. <if test="queryInfo.studentIds != null and queryInfo.studentIds.size > 0">
  483. AND aum.user_id_ IN
  484. <foreach collection="queryInfo.studentIds" item="studentId" open="(" separator="," close=")">
  485. #{studentId}
  486. </foreach>
  487. </if>
  488. </where>
  489. GROUP BY aum.user_id_
  490. ORDER BY sj.id_ DESC,sub_course_num_ DESC
  491. </select>
  492. <select id="queryActivityCourseTimeList" resultType="java.lang.Integer">
  493. select distinct aum.single_course_time_ from activity_user_mapper aum
  494. left join sys_user su on su.id_ = aum.user_id_
  495. <if test="queryInfo.teacherId != null">
  496. left join student_teacher_mapper stm ON stm.student_id_ = aum.user_id_
  497. LEFT JOIN student s ON s.user_id_ = aum.user_id_
  498. </if>
  499. where aum.return_fee_ = 0 and aum.total_course_num_ > 0
  500. <if test="queryInfo.categoryId != null">
  501. AND aum.category_id_ = #{queryInfo.categoryId}
  502. </if>
  503. <if test="queryInfo.categoryId == null">
  504. AND aum.category_id_ IS NULL
  505. </if>
  506. <if test="queryInfo.teacherId != null">
  507. AND ((stm.teacher_id_ = #{queryInfo.teacherId} AND stm.teacher_type_ = case when category_id_ IS NULL THEN 'PRACTICE' ELSE 'VIP' END)
  508. OR s.course_teacher_ = #{queryInfo.teacherId})
  509. </if>
  510. <if test="queryInfo.organIds != null and queryInfo.organIds != ''">
  511. AND FIND_IN_SET(su.organ_id_,#{queryInfo.organIds})
  512. </if>
  513. union
  514. select distinct aum.give_single_course_time_ from activity_user_mapper aum
  515. left join sys_user su on su.id_ = aum.user_id_
  516. <if test="queryInfo.teacherId != null">
  517. left join student_teacher_mapper stm ON stm.student_id_ = aum.user_id_
  518. LEFT JOIN student s ON s.user_id_ = aum.user_id_
  519. </if>
  520. where aum.return_fee_ = 0 and aum.sub_give_course_num_ > 0
  521. <if test="queryInfo.categoryId != null">
  522. AND aum.give_category_id_ = #{queryInfo.categoryId}
  523. </if>
  524. <if test="queryInfo.categoryId == null">
  525. AND aum.give_category_id_ IS NULL
  526. </if>
  527. <if test="queryInfo.teacherId != null">
  528. AND ((stm.teacher_id_ = #{queryInfo.teacherId} AND stm.teacher_type_ = case when category_id_ IS NULL THEN 'PRACTICE' ELSE 'VIP' END)
  529. OR s.course_teacher_ = #{queryInfo.teacherId})
  530. </if>
  531. <if test="queryInfo.organIds != null and queryInfo.organIds != ''">
  532. AND FIND_IN_SET(su.organ_id_,#{queryInfo.organIds})
  533. </if>
  534. </select>
  535. <select id="findTotalByStudents" resultMap="ActivityUserMapper">
  536. select aum.id_, category_id_,user_id_,sub_course_num_,vip_group_id_, give_vip_group_id_, practice_group_id_,
  537. give_practice_group_id_,actual_price_,sub_no_course_price_
  538. from activity_user_mapper aum
  539. WHERE aum.user_id_ IN
  540. <foreach collection="dto.studentIdList" item="userId" open="(" separator="," close=")">
  541. #{userId}
  542. </foreach>
  543. and aum.single_course_time_ = #{dto.classMinutes} and return_fee_ = 0 and aum.sub_course_num_ > 0
  544. <if test="dto.categoryId != null">
  545. AND aum.category_id_ = #{dto.categoryId}
  546. </if>
  547. <if test="dto.categoryId == null">
  548. AND aum.category_id_ IS NULL
  549. </if>
  550. UNION ALL
  551. select aum.id_,give_category_id_ category_id_, user_id_,sub_give_course_num_ sub_course_num_,vip_group_id_, give_vip_group_id_, practice_group_id_, give_practice_group_id_,0 actual_price_,0 sub_no_course_price_
  552. from activity_user_mapper aum
  553. WHERE aum.user_id_ IN
  554. <foreach collection="dto.studentIdList" item="userId" open="(" separator="," close=")">
  555. #{userId}
  556. </foreach>
  557. and aum.give_single_course_time_ = #{dto.classMinutes} and return_fee_ = 0 and aum.sub_give_course_num_ > 0
  558. <if test="dto.categoryId != null">
  559. AND aum.give_category_id_ = #{dto.categoryId}
  560. </if>
  561. <if test="dto.categoryId == null">
  562. AND aum.give_category_id_ IS NULL
  563. </if>
  564. </select>
  565. <select id="findByStudents" resultMap="ActivityUserMapper">
  566. select * from activity_user_mapper aum
  567. WHERE aum.user_id_ IN
  568. <foreach collection="studentIdList" item="userId" open="(" separator="," close=")">
  569. #{userId}
  570. </foreach>
  571. and aum.single_course_time_ = #{classMinutes} and return_fee_ = 0 and aum.sub_course_num_ > 0
  572. <if test="categoryId != null">
  573. AND aum.category_id_ = #{categoryId}
  574. </if>
  575. <if test="categoryId == null">
  576. AND aum.category_id_ IS NULL
  577. </if>
  578. </select>
  579. <select id="findByStudents1" resultMap="ActivityUserMapper">
  580. select * from activity_user_mapper aum
  581. WHERE aum.user_id_ IN
  582. <foreach collection="studentIdList" item="userId" open="(" separator="," close=")">
  583. #{userId}
  584. </foreach>
  585. and aum.give_single_course_time_ = #{classMinutes} and return_fee_ = 0 and aum.sub_give_course_num_ > 0
  586. <if test="categoryId != null">
  587. AND aum.give_category_id_ = #{categoryId}
  588. </if>
  589. <if test="categoryId == null">
  590. AND aum.give_category_id_ IS NULL
  591. </if>
  592. </select>
  593. <select id="findByIds" resultMap="ActivityUserMapper">
  594. SELECT * FROM activity_user_mapper aum WHERE FIND_IN_SET(aum.id_,#{activityUserMapperIds})
  595. </select>
  596. <resultMap id="ActivityUserMapperDetailDto" type="com.ym.mec.biz.dal.dto.ActivityUserMapperDetailDto">
  597. <result property="activityId" column="activity_id_"/>
  598. <result property="addMemo" column="add_memo_"/>
  599. <result property="subCourseNum" column="sub_course_num_"/>
  600. <result property="totalCourseNum" column="total_course_num_"/>
  601. <result property="createTime" column="create_time_"/>
  602. <result property="freeFlag" column="free_flag_"/>
  603. <result property="subCoursePrice" column="sub_no_course_price_"/>
  604. <result property="categoryName" column="name_"/>
  605. </resultMap>
  606. <select id="queryDetailPage" resultMap="ActivityUserMapperDetailDto">
  607. select aum.id_,aum.activity_id_,aum.add_memo_,vga.name_,aum.sub_course_num_,aum.total_course_num_,
  608. aum.create_time_,false free_flag_,aum.sub_no_course_price_ from activity_user_mapper aum
  609. left join vip_group_category vga ON vga.id_ = aum.category_id_
  610. where (aum.vip_flag_ > 0 OR aum.practice_flag_ > 0) AND aum.return_fee_ = 0
  611. <include refid="countDetailPageSql"/>
  612. UNION ALL
  613. select aum.id_,aum.activity_id_,aum.add_memo_,vga.name_,aum.sub_give_course_num_ sub_course_num_,
  614. aum.total_give_course_num_ total_course_num_,aum.create_time_,true free_flag_,0 sub_no_course_price_ from activity_user_mapper aum
  615. left join vip_group_category vga ON vga.id_ = aum.give_category_id_
  616. where (aum.give_vip_flag_ > 0 OR aum.give_practice_flag_ > 0) AND aum.return_fee_ = 0
  617. <include refid="countDetailPageSql"/>
  618. order by id_ DESC
  619. <include refid="global.limit"/>
  620. </select>
  621. <select id="countDetailPage" resultType="java.lang.Integer">
  622. select COUNT(aum.id_) from (select aum.id_ from activity_user_mapper aum
  623. where (aum.vip_flag_ > 0 OR aum.practice_flag_ > 0) AND aum.return_fee_ = 0
  624. <include refid="countDetailPageSql"/>
  625. UNION ALL
  626. select aum.id_ from activity_user_mapper aum
  627. where (aum.give_vip_flag_ > 0 OR aum.give_practice_flag_ > 0) AND aum.return_fee_ = 0
  628. <include refid="countDetailPageSql"/>
  629. ) aum
  630. </select>
  631. <sql id="countDetailPageSql">
  632. <if test="search != null and search != ''">
  633. AND (aum.activity_id_ = #{search} OR aum.add_memo_ LIKE CONCAT('%',#{search},'%'))
  634. </if>
  635. <if test="userId != null">
  636. AND aum.user_id_ = #{userId}
  637. </if>
  638. </sql>
  639. <resultMap id="ActivityUserMapperSumDto" type="com.ym.mec.biz.dal.dto.ActivityUserMapperSumDto">
  640. <result property="organId" column="organ_id_"/>
  641. <result property="userId" column="user_id_"/>
  642. <result property="username" column="username_"/>
  643. <result property="phone" column="phone_"/>
  644. <result property="one" column="one"/>
  645. <result property="two" column="two"/>
  646. <result property="three" column="three"/>
  647. <result property="four" column="four"/>
  648. <result property="five" column="five"/>
  649. <result property="six" column="six"/>
  650. <result property="seven" column="seven"/>
  651. <result property="theory" column="theory"/>
  652. <result property="practice" column="practice"/>
  653. </resultMap>
  654. <sql id="querySumPageSql">
  655. <where>
  656. <if test="organId != null and organId != ''">
  657. AND FIND_IN_SET(su.organ_id_,#{organId})
  658. </if>
  659. <if test="search != null and search != ''">
  660. AND (su.username_ LIKE CONCAT('%',#{search},'%') OR su.phone_ LIKE CONCAT('%',#{search},'%') OR su.id_ = #{search})
  661. </if>
  662. </where>
  663. </sql>
  664. <select id="countSumPage" resultType="java.lang.Integer">
  665. select COUNT(DISTINCT aum.user_id_)
  666. from (select aum.user_id_,aum.category_id_,aum.sub_course_num_,aum.total_course_num_
  667. from activity_user_mapper aum
  668. left join vip_group_category vgc ON vgc.id_ = aum.category_id_
  669. where aum.return_fee_ = 0 and aum.total_course_num_ > 0
  670. UNION ALL
  671. select aum.user_id_,aum.give_category_id_ category_id_,aum.sub_give_course_num_,aum.total_give_course_num_
  672. from activity_user_mapper aum
  673. left join vip_group_category vgc ON vgc.id_ = aum.category_id_
  674. where aum.return_fee_ = 0 and aum.total_give_course_num_ > 0) aum
  675. left join sys_user su ON su.id_ = aum.user_id_
  676. <include refid="querySumPageSql"/>
  677. </select>
  678. <select id="querySumPage" resultType="com.ym.mec.biz.dal.dto.ActivityUserMapperSumDto">
  679. select aum.user_id_,su.organ_id_,su.username_,su.phone_,
  680. CONCAT(SUM(CASE WHEN vgc.name_ = '1v1' THEN aum.total_course_num_ - aum.sub_course_num_ ELSE 0 END) ,'/',SUM(CASE WHEN vgc.name_ = '1v1' THEN aum.total_course_num_ ELSE 0 END)) 'one',
  681. CONCAT(SUM(CASE WHEN vgc.name_ = '1v2' THEN aum.total_course_num_ - aum.sub_course_num_ ELSE 0 END) ,'/',SUM(CASE WHEN vgc.name_ = '1v2' THEN aum.total_course_num_ ELSE 0 END)) 'two',
  682. CONCAT(SUM(CASE WHEN vgc.name_ = '1v3' THEN aum.total_course_num_ - aum.sub_course_num_ ELSE 0 END) ,'/',SUM(CASE WHEN vgc.name_ = '1v3' THEN aum.total_course_num_ ELSE 0 END)) 'three',
  683. CONCAT(SUM(CASE WHEN vgc.name_ = '1v4' THEN aum.total_course_num_ - aum.sub_course_num_ ELSE 0 END) ,'/',SUM(CASE WHEN vgc.name_ = '1v4' THEN aum.total_course_num_ ELSE 0 END)) 'four',
  684. CONCAT(SUM(CASE WHEN vgc.name_ = '1v5' THEN aum.total_course_num_ - aum.sub_course_num_ ELSE 0 END) ,'/',SUM(CASE WHEN vgc.name_ = '1v5' THEN aum.total_course_num_ ELSE 0 END)) 'five',
  685. CONCAT(SUM(CASE WHEN vgc.name_ = '1v6' THEN aum.total_course_num_ - aum.sub_course_num_ ELSE 0 END) ,'/',SUM(CASE WHEN vgc.name_ = '1v6' THEN aum.total_course_num_ ELSE 0 END)) 'six',
  686. CONCAT(SUM(CASE WHEN vgc.name_ = '1v7' THEN aum.total_course_num_ - aum.sub_course_num_ ELSE 0 END) ,'/',SUM(CASE WHEN vgc.name_ = '1v7' THEN aum.total_course_num_ ELSE 0 END)) 'seven',
  687. CONCAT(SUM(CASE WHEN vgc.name_ = '乐理课' THEN aum.total_course_num_ - aum.sub_course_num_ ELSE 0 END) ,'/',SUM(CASE WHEN vgc.name_ = '乐理课' THEN aum.total_course_num_ ELSE 0 END)) 'theory',
  688. CONCAT(SUM(CASE WHEN vgc.name_ IS NULL THEN aum.total_course_num_ - aum.sub_course_num_ ELSE 0 END) ,'/',SUM(CASE WHEN vgc.name_ IS NULL THEN aum.total_course_num_ ELSE 0 END)) 'practice'
  689. from (select aum.user_id_,aum.category_id_,aum.sub_course_num_,aum.total_course_num_
  690. from activity_user_mapper aum
  691. left join vip_group_category vgc ON vgc.id_ = aum.category_id_
  692. where aum.return_fee_ = 0 and aum.total_course_num_ > 0
  693. UNION ALL
  694. select aum.user_id_,aum.give_category_id_ category_id_,aum.sub_give_course_num_,aum.total_give_course_num_
  695. from activity_user_mapper aum
  696. left join vip_group_category vgc ON vgc.id_ = aum.category_id_
  697. where aum.return_fee_ = 0 and aum.total_give_course_num_ > 0) aum
  698. left join vip_group_category vgc ON vgc.id_ = aum.category_id_
  699. left join sys_user su ON su.id_ = aum.user_id_
  700. <include refid="querySumPageSql"/>
  701. group by aum.user_id_
  702. <include refid="global.limit"/>
  703. </select>
  704. </mapper>