ActivityRegistrationDao.xml 17 KB

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