ActivityRegistrationDao.xml 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="platform.modules.sys.dao.ActivityRegistrationDao">
  6. <select id="getRegistrationNumber" resultType="java.lang.Integer">
  7. SELECT
  8. count(id)
  9. FROM
  10. ac_activity_registration
  11. WHERE
  12. del_flag = 0
  13. AND activity_id = #{activityId}
  14. AND review_state = 1
  15. </select>
  16. <select id="findRegistrationPage" parameterType="java.lang.Integer"
  17. resultType="platform.modules.sys.entity.ActivityRegistration">
  18. SELECT
  19. reg.id id,
  20. zuser.name user_name,
  21. reg.name name,
  22. reg.phone phone,
  23. reg.mail mail,
  24. reg.position position,
  25. reg.registration_way registration_way,
  26. reg.review_state review_state,
  27. reg.registration_time registration_time,
  28. reg.user_type user_type,
  29. reg.user_id user_id
  30. FROM
  31. ac_activity_registration reg
  32. LEFT JOIN (
  33. SELECT
  34. z.id id,
  35. s.name name,
  36. '4' type
  37. FROM
  38. s_street s
  39. JOIN z_user z ON z.street_id = s.id
  40. UNION
  41. SELECT
  42. z.id id,
  43. y.name name,
  44. '1' type
  45. FROM
  46. y_info y
  47. JOIN z_user z ON z.build_id = y.id
  48. UNION
  49. SELECT
  50. z.id id,
  51. c.company_name name,
  52. '3' type
  53. FROM
  54. y_company c
  55. JOIN z_user z ON z.company_id = c.id
  56. UNION
  57. SELECT
  58. z.id id,
  59. s.name name,
  60. '0' type
  61. FROM
  62. sys_department s
  63. JOIN z_user z ON z.department_id = s.id
  64. UNION
  65. SELECT
  66. id,
  67. '个人' name,
  68. '5' type
  69. FROM
  70. z_user u
  71. UNION
  72. SELECT
  73. z.id id,
  74. a.company_name name,
  75. '6' type
  76. FROM
  77. ac_activity_registration a
  78. JOIN z_user z ON z.id = a.user_id
  79. WHERE
  80. a.del_flag = 0
  81. AND a.activity_id = #{activityId}
  82. ) zuser ON reg.user_id = zuser.id
  83. AND reg.user_type = zuser.type
  84. WHERE
  85. reg.del_flag = 0
  86. AND reg.activity_id = #{activityId}
  87. order by
  88. zuser.name,reg.create_time desc
  89. </select>
  90. <select id="findSginPage" parameterType="java.lang.Integer"
  91. resultType="platform.modules.sys.entity.ActivityRegistration">
  92. SELECT
  93. reg.id id,
  94. zuser.name user_name,
  95. reg.name name,
  96. reg.phone phone,
  97. reg.mail mail,
  98. reg.position position,
  99. reg.registration_way registration_way,
  100. reg.review_state review_state,
  101. reg.sign_state sign_state,
  102. reg.registration_time registration_time,
  103. reg.sign_time sign_time
  104. FROM
  105. ac_activity_registration reg
  106. LEFT JOIN (
  107. SELECT
  108. z.id id,
  109. s.name name,
  110. '4' type
  111. FROM
  112. s_street s
  113. JOIN z_user z ON z.street_id = s.id
  114. UNION
  115. SELECT
  116. z.id id,
  117. y.name name,
  118. '1' type
  119. FROM
  120. y_info y
  121. JOIN z_user z ON z.build_id = y.id
  122. UNION
  123. SELECT
  124. z.id id,
  125. c.company_name name,
  126. '3' type
  127. FROM
  128. y_company c
  129. JOIN z_user z ON z.company_id = c.id
  130. UNION
  131. SELECT
  132. z.id id,
  133. s.name name,
  134. '0' type
  135. FROM
  136. sys_department s
  137. JOIN z_user z ON z.department_id = s.id
  138. UNION
  139. SELECT
  140. id,
  141. '个人' name,
  142. '5' type
  143. FROM
  144. z_user u
  145. UNION
  146. SELECT
  147. z.id id,
  148. a.company_name name,
  149. '6' type
  150. FROM
  151. ac_activity_registration a
  152. JOIN z_user z ON z.id = a.user_id
  153. ) zuser ON reg.user_id = zuser.id
  154. AND reg.user_type = zuser.type
  155. WHERE
  156. reg.del_flag = 0
  157. AND reg.activity_id = #{activityId}
  158. AND reg.review_state != 3
  159. AND reg.review_state != 2
  160. </select>
  161. <select id="findMyActivityPage" parameterType="platform.modules.sys.entity.ActivityRegistration"
  162. resultType="platform.modules.sys.entity.ActivityRegistration">
  163. select * from (
  164. SELECT
  165. reg.id id,
  166. detail.id activity_id,
  167. detail.activity_title activity_title,
  168. detail.activity_starttime activity_starttime,
  169. detail.activity_endtime activity_endtime,
  170. detail.activity_state activity_state,
  171. reg.name name,
  172. reg.phone phone,
  173. reg.mail mail,
  174. reg.position position,
  175. reg.registration_time registration_time,
  176. reg.review_state review_state,
  177. reg.sign_state sign_state,
  178. reg.user_id user_id,
  179. (select count(feedback.id) from ac_activity_feedback feedback
  180. WHERE feedback.activity_id = detail.id
  181. and feedback.user_id = #{activity.user_id}) feedbackNum
  182. FROM
  183. ac_activity_registration reg
  184. LEFT JOIN ac_activity_detail detail ON reg.activity_id = detail.id
  185. <if test="activity.activity_state == '3'.toString() ">
  186. JOIN ac_activity_feedback feedback ON feedback.activity_id = detail.id
  187. </if>
  188. <if test="activity.activity_state == '2'.toString() ">
  189. JOIN ac_activity_feedback feedback ON feedback.activity_id = detail.id
  190. </if>
  191. ) t
  192. WHERE
  193. user_id = #{activity.user_id}
  194. AND activity_state != '0'
  195. <if test="activity.activity_title != null and activity.activity_title != '' ">
  196. AND activity_title LIKE CONCAT('%',#{activity.activity_title},'%')
  197. </if>
  198. <if test="activity.activity_state == '0'.toString() ">
  199. AND review_state = "0"
  200. </if>
  201. <if test="activity.activity_state == '1'.toString() ">
  202. AND review_state = "1"
  203. AND (sign_state != "0" or sign_state is null)
  204. </if>
  205. <if test="activity.activity_state == '2'.toString() ">
  206. AND review_state = "1"
  207. AND sign_state = "0"
  208. AND feedbackNum <![CDATA[<=]]> 0
  209. </if>
  210. <if test="activity.activity_state == '3'.toString() ">
  211. AND review_state = "1"
  212. AND feedbackNum <![CDATA[>]]> 0
  213. </if>
  214. <if test="activity.activity_state == '4'.toString() ">
  215. AND (activity_state = "2" or review_state = "3" or review_state = "2")
  216. </if>
  217. <if test="activity.user_name != null and activity.user_name != '' ">
  218. AND name LIKE CONCAT('%',#{activity.user_name},'%')
  219. </if>
  220. </select>
  221. <update id="updateReviewStateBatch" parameterType="java.lang.String">
  222. update ac_activity_registration
  223. SET review_state = 0
  224. WHERE
  225. <if test="idList !=null and idList !=''">
  226. id in
  227. <foreach collection="idList" open="(" close=")" separator="," item="id">
  228. #{id}
  229. </foreach>
  230. </if>
  231. </update>
  232. <update id="updateStateBatch" parameterType="java.lang.String">
  233. update ac_activity_registration
  234. <set>
  235. <if test="activity.review_state != null and activity.review_state != '' ">
  236. review_state = #{activity.review_state},
  237. </if>
  238. <if test="activity.sign_state != null and activity.sign_state != '' ">
  239. sign_state = #{activity.sign_state},
  240. </if>
  241. </set>
  242. WHERE
  243. 1=1
  244. <if test="activity.review_state != null and activity.review_state != '' ">
  245. and review_state = '0'
  246. </if>
  247. <if test="activity.sign_state != null and activity.sign_state != '' ">
  248. and ISNULL(sign_state)
  249. </if>
  250. <if test="idList !=null and idList.size > 0 ">
  251. and id in
  252. <foreach collection="idList" open="(" close=")" separator="," item="id">
  253. #{id}
  254. </foreach>
  255. </if>
  256. </update>
  257. <update id="updateState" parameterType="platform.modules.sys.entity.ActivityRegistration">
  258. update ac_activity_registration
  259. <set>
  260. <if test="activity.review_state != null and activity.review_state != '' ">
  261. review_state = #{activity.review_state},
  262. </if>
  263. <if test="activity.sign_state != null and activity.sign_state != '' ">
  264. sign_state = #{activity.sign_state},
  265. </if>
  266. </set>
  267. WHERE
  268. 1=1
  269. <if test="activity.review_state != null and activity.review_state != '' ">
  270. and review_state = '0'
  271. </if>
  272. <if test="activity.sign_state != null and activity.sign_state != '' ">
  273. and ISNULL(sign_state)
  274. </if>
  275. and id = #{activity.id}
  276. </update>
  277. <select id="findByRelationIdAndType" parameterType="java.lang.String"
  278. resultType="platform.modules.sys.entity.ActivityRegistration">
  279. SELECT
  280. *
  281. FROM
  282. ac_activity_registration reg
  283. WHERE
  284. reg.del_flag = 0
  285. and reg.user_type = #{type}
  286. and reg.relation_id =#{rel}
  287. and reg.activity_id =#{activity_id}
  288. ORDER BY
  289. reg.create_time ASC
  290. </select>
  291. <select id="findByActivityIdAndUserIdAndPhones" resultType="platform.modules.sys.entity.ActivityRegistration">
  292. SELECT
  293. reg.*
  294. FROM
  295. ac_activity_registration reg
  296. WHERE
  297. reg.del_flag = 0
  298. AND reg.review_state != 3
  299. AND reg.activity_id = #{activity_id}
  300. <!-- 20210126 暂时去掉校验手机号重复时排除自己提交信息的逻辑 -->
  301. <!--AND reg.user_id != #{user_id}-->
  302. AND reg.phone IN
  303. <foreach collection="registrations" index="index" item="item" open="(" separator="," close=")">
  304. #{item.phone}
  305. </foreach>
  306. </select>
  307. <select id="findByActivityUserIdPhone"
  308. resultType="platform.modules.sys.entity.ActivityRegistration">
  309. SELECT
  310. *
  311. FROM
  312. ac_activity_registration reg
  313. WHERE
  314. reg.del_flag = 0
  315. and reg.activity_id = #{activity_id}
  316. <if test="phone != null and phone != '' ">
  317. and reg.phone = #{phone}
  318. </if>
  319. <if test="user_id != null and user_id != '' ">
  320. and reg.user_id = #{user_id}
  321. </if>
  322. ORDER BY
  323. reg.create_time ASC
  324. </select>
  325. <select id="findRegistrationExport" parameterType="java.lang.Integer"
  326. resultType="platform.modules.sys.report.ActivityRegistrationExports">
  327. SELECT
  328. reg.id id,
  329. zuser.name user_name,
  330. reg.name name,
  331. reg.phone phone,
  332. reg.mail mail,
  333. reg.position position,
  334. reg.registration_way registration_way,
  335. reg.review_state review_state,
  336. reg.registration_time registration_time,
  337. reg.user_type user_type,
  338. reg.user_id user_id
  339. FROM
  340. ac_activity_registration reg
  341. LEFT JOIN (
  342. SELECT
  343. z.id id,
  344. s.name name,
  345. '4' type
  346. FROM
  347. s_street s
  348. JOIN z_user z ON z.street_id = s.id
  349. UNION
  350. SELECT
  351. z.id id,
  352. y.name name,
  353. '1' type
  354. FROM
  355. y_info y
  356. JOIN z_user z ON z.build_id = y.id
  357. UNION
  358. SELECT
  359. z.id id,
  360. c.company_name name,
  361. '3' type
  362. FROM
  363. y_company c
  364. JOIN z_user z ON z.company_id = c.id
  365. UNION
  366. SELECT
  367. z.id id,
  368. s.name name,
  369. '0' type
  370. FROM
  371. sys_department s
  372. JOIN z_user z ON z.department_id = s.id
  373. ) zuser ON reg.user_id = zuser.id
  374. AND reg.user_type = zuser.type
  375. WHERE
  376. reg.activity_id = #{activityId}
  377. order by
  378. zuser.name,reg.create_time desc
  379. </select>
  380. <update id="abortRegister">
  381. UPDATE ac_activity_registration SET review_state = 3 WHERE id IN
  382. <foreach collection="list" item="id" index="index" open="(" close=")" separator=",">
  383. #{id}
  384. </foreach>
  385. </update>
  386. <select id="getActivityRegistration" resultType="platform.modules.sys.entity.ActivityRegistration">
  387. SELECT
  388. id,
  389. `name`,
  390. phone,
  391. mail,
  392. `position`,
  393. registration_time,
  394. CASE
  395. review_state
  396. WHEN 0 THEN
  397. '待审核'
  398. WHEN 1 THEN
  399. '通过'
  400. WHEN 2 THEN
  401. '退回' ELSE '取消报名'
  402. END review_state
  403. FROM
  404. ac_activity_registration
  405. WHERE
  406. del_flag = 0
  407. AND activity_id = #{activityId}
  408. AND user_id = #{userId}
  409. </select>
  410. <select id="findPendingActivity" resultType="platform.modules.sys.entity.ActivityDetail">
  411. SELECT
  412. DISTINCT(ar.activity_id),ad.*
  413. FROM
  414. ac_activity_registration ar
  415. LEFT JOIN ac_activity_detail ad ON ad.id = ar.activity_id
  416. WHERE
  417. ar.del_flag = 0 AND ad.del_flag = 0 AND ad.activity_state = 1
  418. AND ar.user_id = #{userId} AND ar.review_state = 1
  419. AND ad.activity_starttime > NOW()
  420. </select>
  421. <select id="findCommentActivity" resultType="platform.modules.sys.entity.ActivityDetail">
  422. SELECT
  423. DISTINCT
  424. ( ar.activity_id ),
  425. ad.*
  426. FROM
  427. ac_activity_registration ar
  428. LEFT JOIN ac_activity_detail ad ON ad.id = ar.activity_id
  429. WHERE
  430. ar.del_flag = 0 AND ad.del_flag = 0 AND ad.activity_state = 1 AND ar.user_id = #{userId}
  431. AND ar.review_state = 1 AND ar.sign_state = 0
  432. AND (SELECT content FROM ac_activity_feedback WHERE activity_id = ad.id AND user_id = #{userId}) IS NULL
  433. AND ad.activity_endtime <![CDATA[ < ]]> NOW( )
  434. </select>
  435. <select id="findExpiredActivity" resultType="platform.modules.sys.entity.ActivityDetail">
  436. SELECT
  437. DISTINCT
  438. ( ar.activity_id ),
  439. ad.*
  440. FROM
  441. ac_activity_registration ar
  442. LEFT JOIN ac_activity_detail ad ON ad.id = ar.activity_id
  443. WHERE
  444. ar.del_flag = 0 AND ad.del_flag = 0 AND ad.activity_state = 1 AND ar.user_id = #{userId}
  445. AND (ar.review_state = 3 OR ar.sign_state = 1 OR ad.activity_state = 2)
  446. </select>
  447. <select id="findCompletedActivity" resultType="platform.modules.sys.entity.ActivityDetail">
  448. SELECT
  449. DISTINCT
  450. ( ar.activity_id ),
  451. ad.*
  452. FROM
  453. ac_activity_registration ar
  454. LEFT JOIN ac_activity_detail ad ON ad.id = ar.activity_id
  455. WHERE
  456. ar.del_flag = 0 AND ad.del_flag = 0 AND ad.activity_state = 1 AND ar.user_id = #{userId}
  457. AND ar.review_state = 1 AND ar.sign_state = 0
  458. AND (SELECT content FROM ac_activity_feedback WHERE activity_id = ad.id AND user_id = #{userId}) IS NOT NULL
  459. AND ad.activity_endtime <![CDATA[ < ]]> NOW( )
  460. </select>
  461. <select id="findPushActivity" resultType="platform.modules.sys.entity.ActivityDetail">
  462. SELECT
  463. ad.*
  464. FROM
  465. ac_activity_push ap
  466. LEFT JOIN ac_activity_detail ad ON ad.id = ap.activity_id
  467. WHERE
  468. ap.del_flag = 0
  469. AND ad.del_flag = 0
  470. AND ap.user_id = #{userId}
  471. </select>
  472. <select id="findCollectionActivity" resultType="platform.modules.sys.entity.ActivityDetail">
  473. SELECT
  474. IF
  475. (
  476. ad.activity_starttime > now( ),
  477. IF
  478. ( ( SELECT DISTINCT review_state FROM ac_activity_registration WHERE activity_id = ad.id AND review_state!=3 AND user_id = #{userId} ) = 1, 'pending', 'expired' ),
  479. IF
  480. (
  481. ad.activity_endtime <![CDATA[ < ]]> now( ),
  482. IF
  483. ( ( SELECT DISTINCT sign_state FROM ac_activity_registration WHERE activity_id = ad.id AND user_id = #{userId} ) = 1, 'expired', 'comment' ),
  484. IF
  485. (
  486. ( SELECT DISTINCT sign_state FROM ac_activity_registration WHERE activity_id = ad.id AND user_id = #{userId} ) = 1,
  487. 'expired',
  488. IF
  489. ( ( SELECT content FROM ac_activity_feedback WHERE activity_id = ad.id AND user_id = #{userId} ) IS NULL, 'comment', 'completed' )
  490. )
  491. )
  492. ) AS activity_type_status,
  493. ad.*
  494. FROM
  495. ac_activity_favourite af
  496. LEFT JOIN ac_activity_detail ad ON ad.id = af.activity_id
  497. WHERE
  498. af.del_flag = 0
  499. AND ad.del_flag = 0
  500. AND af.user_id = #{userId}
  501. </select>
  502. <update id="deleteBatch">
  503. UPDATE ac_activity_registration SET del_flag = true where id in
  504. <foreach collection="ids" item="id" index="index" open="(" close=")" separator=",">
  505. #{id}
  506. </foreach>
  507. </update>
  508. </mapper>