ActivityRegistrationDao.xml 18 KB

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