PointUserActivityTaskCompletionMapper.xml 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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="com.ylx.point.mapper.PointUserActivityTaskCompletionMapper">
  6. <resultMap type="PointUserActivityTaskCompletion" id="PointUserActivityTaskCompletionResult">
  7. <result property="id" column="id" />
  8. <result property="activityId" column="activity_id" />
  9. <result property="taskId" column="task_id" />
  10. <result property="taskType" column="task_type" />
  11. <result property="userId" column="user_id" />
  12. <result property="completedCount" column="completed_count" />
  13. <result property="lastCompletedTime" column="last_completed_time" />
  14. <result property="createTime" column="create_time" />
  15. <result property="updateTime" column="update_time" />
  16. <result property="completedDate" column="completed_date" />
  17. </resultMap>
  18. <sql id="selectPointUserActivityTaskCompletionVo">
  19. select id, activity_id, task_id, task_type, user_id, completed_count, last_completed_time, create_time, update_time, completed_date from point_user_activity_task_completion
  20. </sql>
  21. <select id="getPointActivityOverviewByActivityId"
  22. resultType="com.ylx.point.domain.vo.PointActivityOverviewVO">
  23. SELECT
  24. COUNT(DISTINCT utc.user_id) AS totalParticipants,
  25. COUNT(DISTINCT CASE WHEN utc.completed_count > 0 THEN utc.user_id END) AS totalCompleted,
  26. COALESCE(SUM(utc.completed_count), 0) AS totalTaskTimes,
  27. COALESCE(SUM(ul.points), 0) AS totalPoints
  28. FROM `point_user_activity_task_completion` utc
  29. LEFT JOIN `point_user_log` ul ON utc.activity_id = ul.activity_id AND ul.op_type = 1 -- 仅统计收入积分
  30. WHERE utc.activity_id = #{activityId}
  31. </select>
  32. <select id="selectCompletedTaskCount" resultType="java.lang.Integer">
  33. SELECT COUNT(*) FROM point_user_activity_task_completion WHERE user_id = #{userId} AND completed_count > 0
  34. </select>
  35. <select id="selectCompletionsByUserAndTaskIds"
  36. resultType="com.ylx.point.domain.PointUserActivityTaskCompletion">
  37. <include refid="selectPointUserActivityTaskCompletionVo"/>
  38. WHERE
  39. user_id = #{userId}
  40. AND task_id IN
  41. <foreach collection="taskIds" item="taskId" open="(" separator="," close=")">
  42. #{taskId}
  43. </foreach>
  44. </select>
  45. </mapper>