UnitIntegralTotalMapper.xml 1.51 KB
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zteits.urbanops.module.garden.dal.mysql.unitintegraltotal.UnitIntegralTotalMapper">

    <!-- 根据related_task_id统计总积分(add_integral - sub_integral) -->
    <select id="queryIntegralByRelatedTaskIds" resultType="com.zteits.urbanops.module.garden.controller.admin.unitintegraltotal.vo.UnitIntegralRespVO">
        SELECT
        COALESCE(a.related_task_id, b.related_task_id) AS relatedTaskId,
        COALESCE(a.add_integral, 0) - COALESCE(b.sub_integral, 0) AS totalIntegral
        FROM
        -- 子查询1:统计增加积分
        (SELECT
        related_task_id,
        SUM(add_integral) AS add_integral
        FROM garden_unit_integral_add
        WHERE deleted = '0'
        AND related_task_id IN
        <foreach collection="relatedTaskIds" item="taskId" open="(" separator="," close=")">
            #{taskId}
        </foreach>
        GROUP BY related_task_id) a
        -- 左连接扣减积分表
        LEFT JOIN
        (SELECT
        related_task_id,
        SUM(sub_integral) AS sub_integral
        FROM garden_unit_integral_sub
        WHERE deleted = '0'
        AND related_task_id IN
        <foreach collection="relatedTaskIds" item="taskId" open="(" separator="," close=")">
            #{taskId}
        </foreach>
        GROUP BY related_task_id) b
        ON a.related_task_id = b.related_task_id
    </select>

</mapper>