ActivityRegistrationDao.xml 17 KB

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