VipGroupMapper.xml 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677
  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.VipGroupDao">
  8. <resultMap type="com.ym.mec.biz.dal.entity.VipGroup" id="VipGroup">
  9. <result column="id_" property="id"/>
  10. <result column="name_" property="name"/>
  11. <result column="user_id_" property="userId"/>
  12. <result column="username_" property="userName"/>
  13. <result column="single_class_minutes_" property="singleClassMinutes"/>
  14. <result column="payment_expire_date_" property="paymentExpireDate"/>
  15. <result column="courses_expire_date_" property="coursesExpireDate"/>
  16. <result column="registration_start_time_" property="registrationStartTime"/>
  17. <result column="create_time_" property="createTime"/>
  18. <result column="update_time_" property="updateTime"/>
  19. <result column="teacher_school_id_" property="teacherSchoolId"/>
  20. <result column="online_classes_num_" property="onlineClassesNum"/>
  21. <result column="offline_classes_num_" property="offlineClassesNum"/>
  22. <result column="audit_status_" property="auditStatus" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  23. <result column="organ_id_list_" property="organIdList"/>
  24. <result column="vip_group_activity_id_" property="vipGroupActivityId"/>
  25. <result column="vip_group_activity_name_" property="vipGroupActivityName"/>
  26. <result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  27. <result column="online_classes_unit_price_" property="onlineClassesUnitPrice"/>
  28. <result column="offline_classes_unit_price_" property="offlineClassesUnitPrice"/>
  29. <result column="total_price_" property="totalPrice"/>
  30. <result column="student_num_" property="studentNum"/>
  31. <result column="total_class_times_" property="totalClassTimes"/>
  32. <result column="current_class_times_" property="currentClassTimes"/>
  33. <result column="vip_group_category_id_" property="vipGroupCategoryId"/>
  34. <result column="give_teach_mode_" property="giveTeachMode" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  35. <result column="organ_id_" property="organId"/>
  36. <result column="stop_reason_" property="stopReason"/>
  37. <result column="courses_start_date" property="courseStartDate"/>
  38. </resultMap>
  39. <resultMap type="com.ym.mec.biz.dal.entity.School" id="School">
  40. <result column="id_" property="id"/>
  41. <result column="user_id_" property="userId"/>
  42. <result column="name_" property="name"/>
  43. <result column="organ_id_" property="organId"/>
  44. <result column="address_" property="address"/>
  45. <result column="contact_phone_" property="contactPhone"/>
  46. <result column="create_time_" property="createTime"/>
  47. <result column="update_time_" property="updateTime"/>
  48. <result column="del_flag_" property="delFlag"/>
  49. <result column="contact_name_" property="contactName"/>
  50. <result column="longitude_latitude_" property="longitudeLatitude"/>
  51. <result column="subsidy_" property="subsidy"/>
  52. <result column="cooperation_organ_id_" property="cooperationOrganId"/>
  53. <result column="remark_" property="remark"/>
  54. </resultMap>
  55. <resultMap id="studentManageVipGroup" type="com.ym.mec.biz.dal.dto.StudentManageVipGroupDto" extends="VipGroup">
  56. <result property="vipGroupCategory" column="vip_group_category_"/>
  57. </resultMap>
  58. <resultMap id="vipGroupManageDetailDto" type="com.ym.mec.biz.dal.dto.VipGroupManageDetailDto" extends="VipGroup">
  59. <result property="studentNum" column="student_num_"/>
  60. <result property="subjectIdList" column="subject_id_list_"/>
  61. <result property="categoryName" column="category_name_"/>
  62. <result column="teacher_school_name_" property="teacherSchoolName"/>
  63. <!--<collection property="students" ofType="com.ym.mec.auth.api.entity.SysUser" column="student_id_">-->
  64. <!--<result property="id" column="student_id_"/>-->
  65. <!--<result property="username" column="username_"/>-->
  66. <!--</collection>-->
  67. </resultMap>
  68. <resultMap id="studentVipGroupDetailDto" type="com.ym.mec.biz.dal.dto.StudentVipGroupDetailDto" extends="studentVipGroup">
  69. <result column="total_class_times_" property="totalClassTimes"/>
  70. <result column="address_" property="address"/>
  71. <collection property="courseSchedules" resultMap="com.ym.mec.biz.dal.dao.CourseScheduleDao.CourseSchedule" column="cs.id_"/>
  72. </resultMap>
  73. <resultMap type="com.ym.mec.biz.dal.dto.StudentVipGroupShowListDto" id="studentVipGroup">
  74. <result column="id_" property="vipGroupId"/>
  75. <result column="name_" property="vipGroupName"/>
  76. <result column="single_class_minutes_" property="singleClassMinutes"/>
  77. <result column="payment_expire_date_" property="paymentExpireDate"/>
  78. <result column="online_classes_num_" property="onlineClassesNum"/>
  79. <result column="offline_classes_num_" property="offlineClassesNum"/>
  80. <result column="total_price_" property="totalPrice"/>
  81. <result column="expect_student_num_" property="expectStudentNum"/>
  82. <result column="student_num_" property="studentNum"/>
  83. <result column="user_id_" property="teacherId"/>
  84. <result column="teacher_name_" property="teacherName"/>
  85. <result column="introduction_" property="introduction"/>
  86. <result column="avatar_" property="avatar"/>
  87. <result column="type_" property="type" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  88. <result column="attribute1_" property="attribute1" />
  89. <result column="category_name_" property="categoryName"/>
  90. </resultMap>
  91. <!-- 根据主键查询一条记录 -->
  92. <select id="get" resultMap="VipGroup">
  93. SELECT * FROM vip_group WHERE id_ = #{id}
  94. </select>
  95. <select id="findStudentVipGroups" resultMap="studentManageVipGroup">
  96. SELECT
  97. vg.*,
  98. vgc.name_ vip_group_category_
  99. FROM
  100. class_group_student_mapper cgsm
  101. LEFT JOIN vip_group_class_group_mapper vgcgm ON cgsm.class_group_id_=vgcgm.class_group_id_
  102. LEFT JOIN vip_group vg ON vgcgm.vip_group_id_=vg.id_
  103. LEFT JOIN vip_group_category vgc ON vg.vip_group_category_id_=vgc.id_
  104. WHERE cgsm.class_group_id_=vgcgm.class_group_id_ AND cgsm.user_id_=#{userId}
  105. </select>
  106. <!-- 全查询 -->
  107. <select id="findAll" resultMap="VipGroup">
  108. SELECT * FROM vip_group ORDER BY id_
  109. </select>
  110. <sql id="vipGroupQueryCondition">
  111. <where>
  112. 1=1
  113. <if test="search!=null and search!=''">
  114. AND (vg.name_ LIKE CONCAT('%',#{search},'%') OR vg.id_=#{search})
  115. </if>
  116. <if test="teacherId!=null">
  117. AND vg.user_id_=#{teacherId}
  118. </if>
  119. <if test="activityId!=null">
  120. AND vg.vip_group_activity_id_=#{activityId}
  121. </if>
  122. <if test="organId!=null">
  123. AND FIND_IN_SET(#{organId},vg.organ_id_list_)
  124. </if>
  125. </where>
  126. </sql>
  127. <select id="findAllByOrgan" resultMap="VipGroup">
  128. SELECT
  129. vg.*,
  130. vga.name_ vip_group_activity_name_,
  131. su.username_,
  132. cg.student_num_,
  133. cg.total_class_times_,
  134. cg.current_class_times_
  135. FROM
  136. vip_group vg
  137. LEFT JOIN sys_user su ON vg.user_id_=su.id_
  138. LEFT JOIN vip_group_class_group_mapper vgcgm ON vg.id_=vgcgm.vip_group_id_
  139. LEFT JOIN class_group cg ON vgcgm.class_group_id_=cg.id_
  140. LEFT JOIN vip_group_activity vga ON vg.vip_group_activity_id_=vga.id_
  141. <include refid="vipGroupQueryCondition"/>
  142. ORDER BY vg.id_ DESC
  143. <include refid="global.limit"/>
  144. </select>
  145. <select id="countVipGroupByOrgan" resultType="int">
  146. SELECT
  147. count(*)
  148. FROM
  149. vip_group vg
  150. <include refid="vipGroupQueryCondition"/>
  151. </select>
  152. <!-- 向数据库增加一条记录 -->
  153. <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.VipGroup" useGeneratedKeys="true" keyColumn="id"
  154. keyProperty="id">
  155. <!--
  156. <selectKey resultClass="int" keyProperty="id" >
  157. SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL
  158. </selectKey>
  159. -->
  160. INSERT INTO vip_group
  161. (id_,user_id_,single_class_minutes_,payment_expire_date_,courses_expire_date_,create_time_,update_time_,teacher_school_id_,online_classes_num_,offline_classes_num_,registration_start_time_,name_,organ_id_list_,vip_group_activity_id_,status_,online_classes_unit_price_,offline_classes_unit_price_,total_price_,give_teach_mode_,vip_group_category_id_,organ_id_,stop_reason_,audit_status_,courses_start_date)
  162. VALUES(#{id},#{userId},#{singleClassMinutes},#{paymentExpireDate},#{coursesExpireDate},now(),now(),#{teacherSchoolId},#{onlineClassesNum},#{offlineClassesNum},#{registrationStartTime},#{name},#{organIdList},#{vipGroupActivityId},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{onlineClassesUnitPrice},#{offlineClassesUnitPrice},#{totalPrice},#{giveTeachMode},#{vipGroupCategoryId},#{organId},#{stopReason},#{auditStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{courseStartDate})
  163. </insert>
  164. <!-- 根据主键查询一条记录 -->
  165. <update id="update" parameterType="com.ym.mec.biz.dal.entity.VipGroup">
  166. UPDATE vip_group
  167. <set>
  168. <if test="paymentExpireDate != null">
  169. payment_expire_date_ = #{paymentExpireDate},
  170. </if>
  171. <if test="userId != null">
  172. user_id_ = #{userId},
  173. </if>
  174. <if test="offlineClassesNum != null">
  175. offline_classes_num_ = #{offlineClassesNum},
  176. </if>
  177. <if test="onlineClassesNum != null">
  178. online_classes_num_ = #{onlineClassesNum},
  179. </if>
  180. <if test="updateTime != null">
  181. update_time_ = #{updateTime},
  182. </if>
  183. <if test="singleClassMinutes != null">
  184. single_class_minutes_ = #{singleClassMinutes},
  185. </if>
  186. <if test="teacherSchoolId != null">
  187. teacher_school_id_ = #{teacherSchoolId},
  188. </if>
  189. <if test="coursesExpireDate != null">
  190. courses_expire_date_ = #{coursesExpireDate},
  191. </if>
  192. <if test="registrationStartTime != null">
  193. registration_start_time_ = #{registrationStartTime},
  194. </if>
  195. <if test="organIdList!=null">
  196. organ_id_list_=#{organIdList},
  197. </if>
  198. <if test="auditStatus != null">
  199. audit_status_ = #{auditStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
  200. </if>
  201. <if test="organIdList != null">
  202. organ_id_list_ = #{organIdList},
  203. </if>
  204. <if test="vipGroupActivityId != null">
  205. vip_group_activity_id_ = #{vipGroupActivityId},
  206. </if>
  207. <if test="status != null">
  208. status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
  209. </if>
  210. <if test="onlineClassesUnitPrice != null">
  211. online_classes_unit_price_ = #{onlineClassesUnitPrice},
  212. </if>
  213. <if test="offlineClassesUnitPrice != null">
  214. offline_classes_unit_price_ = #{offlineClassesUnitPrice},
  215. </if>
  216. <if test="totalPrice != null">
  217. total_price_ = #{totalPrice},
  218. </if>
  219. <if test="giveTeachMode!=null">
  220. give_teach_mode_=#{giveTeachMode},
  221. </if>
  222. <if test="organId!=null">
  223. organ_id_=#{organId},
  224. </if>
  225. <if test="stopReason!=null">
  226. stop_reason_=#{stopReason},
  227. </if>
  228. <if test="auditStatus">
  229. audit_status_=#{auditStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
  230. </if>
  231. </set>
  232. WHERE id_ = #{id}
  233. </update>
  234. <!-- 根据主键删除一条记录 -->
  235. <delete id="delete">
  236. DELETE FROM vip_group WHERE id_ = #{id}
  237. </delete>
  238. <!-- 分页查询 -->
  239. <select id="queryPage" resultMap="VipGroup" parameterType="map">
  240. SELECT * FROM vip_group ORDER BY id_
  241. <include refid="global.limit"/>
  242. </select>
  243. <!-- 查询当前表的总记录数 -->
  244. <select id="queryCount" resultType="int">
  245. SELECT COUNT(*) FROM vip_group
  246. </select>
  247. <select id="getLockVipGroup" resultMap="VipGroup">
  248. SELECT * FROM vip_group WHERE id_=#{vipGroupId} FOR UPDATE
  249. </select>
  250. <sql id="studentVipGroupQueryCondition">
  251. <where>
  252. vg.status_!=3
  253. AND vg.audit_status_='PASS'
  254. AND vg.status_=1
  255. AND (select count(1) as num from student_payment_order where vg.id_ = music_group_id_ AND user_id_=#{userId} AND status_='SUCCESS') = 0
  256. <if test="subjectId!=null">
  257. AND FIND_IN_SET(#{subjectId},cg.subject_id_list_)
  258. </if>
  259. <if test="categoryId!=null">
  260. AND FIND_IN_SET(vg.vip_group_category_id_,#{categoryId})
  261. </if>
  262. <if test="classType!=null and classType.toString()=='0'.toString()">
  263. AND vg.offline_classes_num_>0
  264. </if>
  265. <if test="classType!=null and classType.toString()=='1'.toString()">
  266. AND vg.online_classes_num_>0
  267. </if>
  268. <if test="search!=null">
  269. AND vg.name_ like concat('%',#{search},'%')
  270. </if>
  271. </where>
  272. </sql>
  273. <select id="findVipGroups" resultMap="studentVipGroup">
  274. SELECT
  275. vg.id_,
  276. vg.name_,
  277. vg.single_class_minutes_,
  278. vg.payment_expire_date_,
  279. vg.courses_expire_date_,
  280. vg.online_classes_num_,
  281. vg.offline_classes_num_,
  282. vg.total_price_,
  283. cg.expect_student_num_,
  284. cg.student_num_,
  285. su.username_ teacher_name_,
  286. su.avatar_,
  287. t.introduction_,
  288. vga.type_,
  289. IF(vga.type_='GIVE_CLASS',vga.attribute2_,vga.attribute1_) attribute1_,
  290. vgc.name_ category_name_
  291. FROM
  292. vip_group vg
  293. LEFT JOIN vip_group_class_group_mapper vgcgm ON vg.id_=vgcgm.vip_group_id_
  294. LEFT JOIN class_group cg ON vgcgm.class_group_id_=cg.id_
  295. LEFT JOIN teacher t ON vg.user_id_=t.id_
  296. LEFT JOIN sys_user su ON vg.user_id_=su.id_
  297. LEFT JOIN vip_group_activity vga ON vg.vip_group_activity_id_=vga.id_
  298. LEFT JOIN vip_group_category vgc ON vg.vip_group_category_id_=vgc.id_
  299. <include refid="studentVipGroupQueryCondition"/>
  300. ORDER BY vg.id_ DESC
  301. <include refid="global.limit"/>
  302. </select>
  303. <select id="countVipGorups" resultType="int">
  304. SELECT
  305. count(*)
  306. FROM
  307. vip_group vg
  308. LEFT JOIN vip_group_class_group_mapper vgcgm ON vg.id_=vgcgm.vip_group_id_
  309. LEFT JOIN class_group cg ON vgcgm.class_group_id_=cg.id_
  310. <include refid="studentVipGroupQueryCondition"/>
  311. </select>
  312. <select id="getVipGroupBaseInfo" resultMap="vipGroupManageDetailDto">
  313. SELECT
  314. vg.*,
  315. vga.name_ vip_group_activity_name_,
  316. su.username_,
  317. cg.student_num_,
  318. cg.subject_id_list_,
  319. cg.total_class_times_,
  320. cg.current_class_times_,
  321. vgc.name_ category_name_,
  322. s.name_ teacher_school_name_
  323. FROM
  324. vip_group vg
  325. LEFT JOIN sys_user su ON vg.user_id_=su.id_
  326. LEFT JOIN vip_group_class_group_mapper vgcgm ON vg.id_=vgcgm.vip_group_id_
  327. LEFT JOIN class_group cg ON vgcgm.class_group_id_=cg.id_
  328. LEFT JOIN vip_group_activity vga ON vg.vip_group_activity_id_=vga.id_
  329. LEFT JOIN vip_group_category vgc ON vg.vip_group_category_id_=vgc.id_
  330. LEFT JOIN school s ON vg.teacher_school_id_=s.id_
  331. WHERE vg.id_=#{vipGroupId}
  332. </select>
  333. <sql id="vipGroupAttendanceQueryCondition">
  334. <where>
  335. <if test="vipGroupId!=null">
  336. and vg.id_=#{vipGroupId}
  337. </if>
  338. <if test="startTime != null">
  339. and CONCAT(cs.class_date_,' ',cs.end_class_time_) &gt; #{startTime}
  340. </if>
  341. <if test="endTime != null">
  342. and CONCAT(cs.class_date_,' ',cs.end_class_time_) &lt; #{endTime}
  343. </if>
  344. <if test="status != null">
  345. and cs.status_ = #{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  346. </if>
  347. <if test="complaintStatus != null">
  348. and cs.complaint_status_ = #{complaintStatus}
  349. </if>
  350. </where>
  351. </sql>
  352. <select id="findVipGroupAttendances" resultMap="com.ym.mec.biz.dal.dao.CourseScheduleDao.CourseSchedule">
  353. SELECT
  354. cs.*
  355. FROM
  356. vip_group vg
  357. LEFT JOIN vip_group_class_group_mapper vgcgm ON vg.id_=vgcgm.vip_group_id_
  358. LEFT JOIN teacher_attendance ta ON vgcgm.class_group_id_=ta.class_group_id_
  359. LEFT JOIN course_schedule cs ON ta.course_schedule_id_=cs.id_
  360. <include refid="vipGroupAttendanceQueryCondition"/>
  361. ORDER BY ta.id_
  362. <include refid="global.limit"/>
  363. </select>
  364. <select id="countVipGroupAttendance" resultType="int">
  365. SELECT
  366. count(*)
  367. FROM
  368. vip_group vg
  369. LEFT JOIN vip_group_class_group_mapper vgcgm ON vg.id_=vgcgm.vip_group_id_
  370. LEFT JOIN teacher_attendance ta ON vgcgm.class_group_id_=ta.class_group_id_
  371. LEFT JOIN course_schedule cs ON ta.course_schedule_id_=cs.id_
  372. <include refid="vipGroupAttendanceQueryCondition"/>
  373. ORDER BY ta.id_
  374. </select>
  375. <select id="getVipGroupDetail" resultMap="studentVipGroupDetailDto">
  376. SELECT
  377. vg.*,
  378. cg.total_class_times_,
  379. cg.expect_student_num_,
  380. cg.student_num_,
  381. su.username_ teacher_name_,
  382. su.avatar_,
  383. t.introduction_,
  384. s.name_ address_,
  385. cs.id_ course_id_,
  386. cs.class_group_id_,
  387. cs.status_,
  388. cs.subsidy_,
  389. cs.class_date_,
  390. CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
  391. CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
  392. cs.teacher_id_,
  393. cs.actual_teacher_id_,
  394. cs.create_time_,
  395. cs.update_time_,
  396. cs.teach_mode_,
  397. cs.type_,
  398. cs.name_
  399. FROM
  400. vip_group vg
  401. LEFT JOIN vip_group_class_group_mapper vgcgm ON vg.id_=vgcgm.vip_group_id_
  402. LEFT JOIN class_group cg ON vgcgm.class_group_id_=cg.id_
  403. LEFT JOIN course_schedule cs ON vgcgm.class_group_id_=cs.class_group_id_
  404. LEFT JOIN school s ON vg.teacher_school_id_=s.id_
  405. LEFT JOIN teacher t ON vg.user_id_=t.id_
  406. LEFT JOIN sys_user su ON vg.user_id_=su.id_
  407. WHERE vg.id_=#{vipGroupId}
  408. ORDER BY start_class_time_
  409. </select>
  410. <select id="countSurplusClassTimes" resultType="java.util.Map">
  411. SELECT
  412. cs.teach_mode_ as 'key',
  413. COUNT(cs.id_) as 'value'
  414. FROM
  415. vip_group_class_group_mapper vgcgm
  416. LEFT JOIN course_schedule cs ON vgcgm.class_group_id_=cs.class_group_id_
  417. WHERE cs.status_="NOT_START" AND cs.type_="VIP" AND vgcgm.vip_group_id_=#{vipGroupId}
  418. GROUP BY cs.teach_mode_
  419. </select>
  420. <resultMap id="vipGroupStudentDto" type="com.ym.mec.biz.dal.dto.VipGroupStudentDto">
  421. <result column="id_" property="id"/>
  422. <result column="username_" property="userName"/>
  423. <result column="total_class_times_" property="totalClassTimes"/>
  424. <result column="current_class_times_" property="currentClassTimes"/>
  425. </resultMap>
  426. <select id="findVipGroupStudents" resultMap="vipGroupStudentDto">
  427. SELECT
  428. su.id_,
  429. su.username_,
  430. cg.total_class_times_,
  431. cg.current_class_times_
  432. FROM
  433. vip_group_class_group_mapper vgcgm
  434. LEFT JOIN class_group cg ON vgcgm.class_group_id_=cg.id_
  435. LEFT JOIN class_group_student_mapper cgsm ON vgcgm.class_group_id_=cgsm.class_group_id_
  436. LEFT JOIN sys_user su ON cgsm.user_id_=su.id_
  437. WHERE vgcgm.vip_group_id_=#{vipGroupId} AND cgsm.user_id_ IS NOT NULL
  438. ORDER BY su.id_
  439. <include refid="global.limit"/>
  440. </select>
  441. <select id="countVipGroupStudents" resultType="int">
  442. SELECT
  443. count(*)
  444. FROM
  445. vip_group_class_group_mapper vgcgm
  446. LEFT JOIN class_group cg ON vgcgm.class_group_id_=cg.id_
  447. LEFT JOIN class_group_student_mapper cgsm ON vgcgm.class_group_id_=cgsm.class_group_id_
  448. WHERE vgcgm.vip_group_id_=#{vipGroupId}
  449. </select>
  450. <resultMap id="teachingRecord" type="com.ym.mec.biz.dal.dto.VipGroupCourseSchduleRecordDto">
  451. <result column="id_" property="id"/>
  452. <result column="start_class_time_" property="startClassTime"/>
  453. <result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  454. <result column="teach_mode_" property="teachMode" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  455. <result column="give_teach_mode_" property="giveTeachMode" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  456. <result column="is_salary_" property="isSalary" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  457. <result column="student_num_" property="attendanceNum"/>
  458. </resultMap>
  459. <sql id="teachingRecordQueryCondition">
  460. <where>
  461. vgcgm.vip_group_id_=#{vipGroupId}
  462. <if test="startTime!=null and endTime!=null">
  463. AND (cs.class_date_ BETWEEN #{startTime} AND #{endTime})
  464. </if>
  465. <if test="teachMode!=null and teachMode!=''">
  466. AND cs.teach_mode_=#{teachMode}
  467. </if>
  468. <if test="status!=null and status!=''">
  469. AND cs.status_=#{status}
  470. </if>
  471. </where>
  472. </sql>
  473. <select id="findTeachingRecord" resultMap="teachingRecord">
  474. SELECT
  475. cs.id_,
  476. CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
  477. cs.status_,
  478. cs.teach_mode_,
  479. cs.student_num_,
  480. csts.actual_salary_ IS NOT NULL is_salary_
  481. FROM
  482. vip_group_class_group_mapper vgcgm
  483. LEFT JOIN course_schedule cs ON vgcgm.class_group_id_=cs.class_group_id_
  484. LEFT JOIN course_schedule_teacher_salary csts ON cs.id_=csts.course_schedule_id_
  485. <include refid="teachingRecordQueryCondition"/>
  486. ORDER BY cs.id_
  487. <include refid="global.limit"/>
  488. </select>
  489. <select id="countTeachingRecord" resultType="int">
  490. SELECT
  491. COUNT(*)
  492. FROM
  493. vip_group_class_group_mapper vgcgm
  494. LEFT JOIN course_schedule cs ON vgcgm.class_group_id_=cs.class_group_id_
  495. <include refid="teachingRecordQueryCondition"/>
  496. </select>
  497. <select id="getClassTimes" resultType="com.ym.mec.biz.dal.dto.TeachingRecordBaseInfo">
  498. SELECT
  499. cg.total_class_times_ totalClassTimes,
  500. cg.current_class_times_ currentClassTimes
  501. FROM
  502. vip_group_class_group_mapper vgcgm
  503. LEFT JOIN class_group cg ON vgcgm.class_group_id_=cg.id_
  504. WHERE vgcgm.vip_group_id_=#{vipGroupId}
  505. </select>
  506. <select id="countIsSalaryNum" resultType="int">
  507. SELECT
  508. COUNT(*)
  509. FROM
  510. vip_group_class_group_mapper vgcgm
  511. LEFT JOIN course_schedule cs ON vgcgm.class_group_id_=cs.class_group_id_
  512. LEFT JOIN course_schedule_teacher_salary csts ON cs.id_=csts.course_schedule_id_
  513. WHERE vgcgm.vip_group_id_=#{vipGroupId} AND csts.settlement_time_ IS NOT NULL
  514. </select>
  515. <select id="countComplaintsNum" resultType="java.lang.Integer">
  516. SELECT
  517. COUNT(*)
  518. FROM
  519. vip_group_class_group_mapper vgcgm
  520. LEFT JOIN course_schedule cs ON vgcgm.class_group_id_=cs.class_group_id_
  521. LEFT JOIN course_schedule_complaints csc ON cs.id_=csc.course_schedule_id_
  522. WHERE vgcgm.vip_group_id_=#{vipGroupId} AND csc.course_schedule_id_ IS NOT NULL
  523. </select>
  524. <select id="getVipGroupSalaryInfo" resultType="com.ym.mec.biz.dal.dto.VipGroupSalaryBaseInfo">
  525. SELECT
  526. SUM(csts.expect_salary_) expectTotalSalary,
  527. SUM(csts.actual_salary_) totalSalary
  528. FROM
  529. vip_group vg
  530. LEFT JOIN vip_group_class_group_mapper vgcgm ON vg.id_=vgcgm.vip_group_id_
  531. LEFT JOIN course_schedule cs ON vgcgm.class_group_id_=cs.class_group_id_
  532. LEFT JOIN course_schedule_teacher_salary csts ON cs.id_=csts.course_schedule_id_
  533. WHERE vg.id_=#{vipGroupId} AND cs.id_ IS NOT NULL
  534. </select>
  535. <select id="countVipGroupDeductionNum" resultType="int">
  536. SELECT
  537. COUNT(csts.id_)
  538. FROM
  539. vip_group vg
  540. LEFT JOIN vip_group_class_group_mapper vgcgm ON vg.id_=vgcgm.vip_group_id_
  541. LEFT JOIN course_schedule cs ON vgcgm.class_group_id_=cs.class_group_id_
  542. LEFT JOIN course_schedule_teacher_salary csts ON cs.id_=csts.course_schedule_id_
  543. WHERE vg.id_=#{vipGroupId} AND cs.id_!=NULL AND csts.settlement_time_!=NULL AND csts.actual_salary_&lt;csts.expect_salary_
  544. </select>
  545. <select id="countSurplusCourseFee" resultType="java.math.BigDecimal">
  546. SELECT
  547. cssp.user_id_ as 'key',
  548. SUM(cssp.expect_price_) as 'value'
  549. FROM
  550. vip_group vg
  551. LEFT JOIN vip_group_class_group_mapper vgcgm ON vg.id_ = vgcgm.vip_group_id_
  552. LEFT JOIN course_schedule cs ON vgcgm.class_group_id_=cs.class_group_id_
  553. LEFT JOIN course_schedule_student_payment cssp ON cs.id_=cssp.course_schedule_id_
  554. WHERE vg.id_=#{vipGroupId} AND cs.status_='NOT_START'
  555. GROUP BY cssp.user_id_
  556. </select>
  557. <select id="countTeacherVipGroups" resultType="int">
  558. SELECT COUNT(vg.id_) FROM vip_group vg
  559. WHERE vg.user_id_ = #{teacherId} AND vg.status_!=3
  560. </select>
  561. <select id="countTeacherVipClass" resultType="java.lang.Integer">
  562. SELECT COUNT(DISTINCT vg.id_) FROM vip_group vg
  563. LEFT JOIN vip_group_class_group_mapper vgcgm ON vg.id_ = vgcgm.vip_group_id_
  564. LEFT JOIN class_group cg ON cg.id_ = vgcgm.class_group_id_
  565. LEFT JOIN course_schedule cs ON cs.class_group_id_ = cg.id_
  566. WHERE cs.actual_teacher_id_ = #{teacherId} AND cs.type_ = 'VIP' AND cg.del_flag_ = 0
  567. </select>
  568. <resultMap type="com.ym.mec.biz.dal.dto.TeacherVipClassInfoDto" id="getTeacherVipClassMap">
  569. <result column="vip_group_id_" property="vipClassId"/>
  570. <result column="student_num_" property="studentNum"/>
  571. <result column="online_classes_unit_price_" property="onlineClassesUnitPrice"/>
  572. <result column="offline_classes_unit_price_" property="offlineClassesUnitPrice"/>
  573. <result column="class_group_id_" property="classGroupId"/>
  574. <result column="courses_expire_date_" property="coursesExpireDate"/>
  575. <result column="payment_expire_date_" property="paymentExpireDate"/>
  576. <result column="create_time_" property="createDate"/>
  577. <result column="current_class_times_" property="currentClassTimes"/>
  578. <result column="total_class_times_" property="totalClassTimes"/>
  579. <result column="vip_group_name_" property="vipClassName"/>
  580. <result column="audit_status_" property="auditStatus" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  581. <result column="teach_mode_" property="teachMode" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  582. <result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  583. <result column="vip_group_activity_id_" property="activityId"/>
  584. </resultMap>
  585. <select id="getTeacherVipClass" resultMap="getTeacherVipClassMap">
  586. SELECT vg.id_ vip_group_id_,vg.name_ vip_group_name_,vg.status_,vg.audit_status_,vg.create_time_,
  587. vg.payment_expire_date_,vg.courses_expire_date_,vg.online_classes_unit_price_,vg.offline_classes_unit_price_,
  588. cg.total_class_times_,cg.current_class_times_,cg.id_ class_group_id_,cg.student_num_,vg.vip_group_activity_id_
  589. FROM vip_group vg
  590. LEFT JOIN vip_group_class_group_mapper vgcgm ON vg.id_ = vgcgm.vip_group_id_
  591. LEFT JOIN class_group cg ON cg.id_ = vgcgm.class_group_id_
  592. LEFT JOIN course_schedule cs ON cs.class_group_id_ = cg.id_
  593. WHERE cs.actual_teacher_id_ = #{teacherId} AND cs.type_ = 'VIP' AND cg.del_flag_ = 0 GROUP BY vg.id_,cg.id_
  594. <include refid="global.limit"/>
  595. </select>
  596. <select id="querySchoolByUserId" resultMap="School">
  597. SELECT * from school where user_id_ = #{userId} or user_id_ is null
  598. </select>
  599. <select id="countVipGroupOverCourse" resultType="java.util.Map">
  600. SELECT
  601. vgcgm.vip_group_id_,
  602. COUNT(cs.Id_)
  603. FROM
  604. vip_group_class_group_mapper vgcgm
  605. LEFT JOIN course_schedule cs ON vgcgm.class_group_id_=cs.class_group_id_
  606. WHERE cs.status_='OVER'
  607. AND DATE_FORMAT(cs.class_date_,'%Y-%m-%d')=DATE_FORMAT(NOW(),'%Y-%m-%d')
  608. AND vgcgm.vip_group_id_ IN
  609. <foreach collection="list" item="id" open="(" close=")" separator=",">
  610. #{id}
  611. </foreach>
  612. GROUP BY vgcgm.vip_group_id_
  613. </select>
  614. <select id="findByCourseSchedule" resultMap="VipGroup">
  615. SELECT
  616. vg.*
  617. FROM
  618. vip_group vg
  619. LEFT JOIN vip_group_class_group_mapper vgcgm ON vg.id_=vgcgm.vip_group_id_
  620. LEFT JOIN course_schedule cs ON vgcgm.class_group_id_=cs.class_group_id_
  621. WHERE cs.id_=#{courseScheduleId}
  622. </select>
  623. <select id="queryVipGroupNum" resultType="map">
  624. select count(*) total,sum(case when status_ = 1 then 1 else 0 end) applying_num_,sum(case when status_ = 2 then 1 else 0 end) finished_num_ from vip_group
  625. <where>
  626. <if test="organId != null">
  627. organ_id_ = #{organId}
  628. </if>
  629. </where>
  630. </select>
  631. <select id="queryCurrentMonthCoursesNum" resultType="int">
  632. select count(cs.id_) from course_schedule cs left join vip_group_class_group_mapper vgcgm on cs.class_group_id_ = vgcgm.class_group_id_ left join vip_group vg on vgcgm.vip_group_id_ = vg.id_ where cs.type_ in ('VIP')
  633. and DATE_FORMAT(cs.class_date_, '%Y%m' ) = DATE_FORMAT(CURDATE() , '%Y%m')
  634. <if test="organId != null">
  635. and vg.organ_id_ = #{organId}
  636. </if>
  637. </select>
  638. </mapper>