ActivityRegistrationMapper.xml 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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. <mapper namespace="com.yonge.cooleshow.biz.dal.dao.ActivityRegistrationDao">
  4. <resultMap id="BaseResultMap" type="com.yonge.cooleshow.biz.dal.entity.ActivityRegistration">
  5. <result column="id_" property="id" />
  6. <result column="activity_id_" property="activityId" />
  7. <result column="user_id_" property="userId" />
  8. <result column="order_no_" property="orderNo" />
  9. <result column="sub_order_no_" property="subOrderNo" />
  10. <result column="create_time_" property="createTime" />
  11. </resultMap>
  12. <!-- 表字段 -->
  13. <sql id="baseColumns">
  14. t.id_ as id
  15. , t.activity_id_ as activityId
  16. , t.user_id_ as userId
  17. , t.order_no_ as orderNo
  18. , t.sub_order_no_ as subOrderNo
  19. , t.create_time_ as createTime
  20. </sql>
  21. <select id="detail" resultType="com.yonge.cooleshow.biz.dal.vo.ActivityRegistrationVo">
  22. SELECT
  23. <include refid="baseColumns"/>
  24. FROM activity_registration t
  25. where t.id_ = #{id}
  26. </select>
  27. <select id="selectPage" resultType="com.yonge.cooleshow.biz.dal.vo.ActivityRegistrationVo">
  28. SELECT
  29. <include refid="baseColumns" />,
  30. u.id_ as studentId,u.username_ as username,u.phone_ as phone,u.real_name_ as realName,
  31. <if test="param.activityType != null and param.activityType.code == 'EVALUATION'">
  32. b.music_sheet_name_ as musicSheetName,b.max_score_ as maxScore,b.num_ as num,
  33. </if>
  34. if(a.num>0, true, false) as rewardFlag
  35. FROM activity_registration t
  36. left join sys_user u on t.user_id_ = u.id_
  37. left join (
  38. select
  39. aur.activity_id_,aur.user_id_,count(1) as num
  40. from activity_user_reward aur
  41. <where>
  42. <if test="param.activityId != null">
  43. and aur.activity_id_ = #{param.activityId}
  44. </if>
  45. </where>
  46. group by aur.activity_id_,aur.user_id_
  47. ) a on t.activity_id_ = a.activity_id_ and t.user_id_ = a.user_id_
  48. <if test="param.activityType != null and param.activityType.code == 'EVALUATION'">
  49. left join (
  50. select
  51. ar.activity_id_,aer.user_id_,
  52. group_concat(DISTINCT ms.music_sheet_name_) as music_sheet_name_,
  53. sum(if(aer.score_ is null, 0, 1)) as num_,
  54. max(aer.score_) as max_score_
  55. from activity_registration ar
  56. left join activity_evaluation_record aer on ar.activity_id_ = aer.activity_id_ and ar.user_id_ = aer.user_id_
  57. left join activity_evaluation ae on aer.evaluation_id_ = ae.id_
  58. left join music_sheet ms on ae.music_sheet_id_ = ms.id_
  59. <where>
  60. <if test="param.activityId != null">
  61. and aer.activity_id_ = #{param.activityId}
  62. </if>
  63. <if test="param.subjectIds != null and param.subjectIds.size() > 0">
  64. AND aer.resource_id_ IN (<foreach collection="param.subjectIds" separator="," item="item">#{item}</foreach>)
  65. </if>
  66. <if test="param.musicSheetIds != null and param.musicSheetIds.size()>0">
  67. and ae.music_sheet_id_ IN
  68. <foreach collection="param.musicSheetIds" item="item" separator="," open="(" close=")">
  69. #{item}
  70. </foreach>
  71. </if>
  72. </where>
  73. group by ar.activity_id_,aer.user_id_
  74. ) b on t.activity_id_ = b.activity_id_ and t.user_id_ = b.user_id_
  75. </if>
  76. <where>
  77. <if test="param.activityType != null and param.activityType.code == 'EVALUATION'">
  78. and b.activity_id_ is not null
  79. </if>
  80. <if test="param.activityId != null">
  81. and t.activity_id_ = #{param.activityId}
  82. </if>
  83. <if test="null != param.search and '' != param.search">
  84. AND (
  85. t.user_id_ LIKE CONCAT('%', #{param.search}, '%') or
  86. u.username_ LIKE CONCAT('%', #{param.search}, '%') or
  87. u.phone_ LIKE CONCAT('%', #{param.search}, '%')
  88. )
  89. </if>
  90. <if test="null != param.rewardFlag and param.rewardFlag.code == 0">
  91. and (a.num is null or a.num = 0)
  92. </if>
  93. <if test="null != param.rewardFlag and param.rewardFlag.code == 1">
  94. and a.num > 0
  95. </if>
  96. </where>
  97. order by t.create_time_ desc
  98. </select>
  99. </mapper>