2
0

fix: stat traffic

This commit is contained in:
caiyuchao
2024-12-25 18:35:22 +08:00
parent 1e4b518f48
commit 219c104355

View File

@@ -3,37 +3,23 @@
<mapper namespace="org.wfc.user.mapper.UCdrMapper"> <mapper namespace="org.wfc.user.mapper.UCdrMapper">
<select id="getByUser" resultType="org.wfc.user.domain.vo.UCdrUserVo"> <select id="getByUser" resultType="org.wfc.user.domain.vo.UCdrUserVo">
SELECT
t.id,
max( t.activity ) activity,
sum( t.duration ) duration,
sum( t.traffic_down ) traffic_down,
sum( t.traffic_up ) traffic_up
FROM
(
SELECT SELECT
cdr.user_id id, cdr.user_id id,
min( ch.start_time ) start_time,
max( cdr.last_seen_time ) end_time,
max( cdr.activity ) activity, max( cdr.activity ) activity,
<choose>
<when test="endTime != null">
sum( sum(
if(cdr.last_seen_time &lt;= #{endTime}, ifnull( cdr.up_time, 0 ), 0))+ sum(
ifnull( ch.duration, 0 )) duration, ifnull( ch.duration, 0 )) duration,
sum( sum(
if(cdr.last_seen_time &lt;= #{endTime}, ifnull( cdr.traffic_down, 0 ), 0)) + sum(
ifnull( ch.traffic_down, 0 )) traffic_down, ifnull( ch.traffic_down, 0 )) traffic_down,
sum( sum(
if(cdr.last_seen_time &lt;= #{endTime}, ifnull( cdr.traffic_up, 0 ), 0)) + sum(
ifnull( ch.traffic_up, 0 )) traffic_up ifnull( ch.traffic_up, 0 )) traffic_up
</when>
<otherwise>
sum(
ifnull( cdr.up_time, 0 ))+ sum(
ifnull( ch.duration, 0 )) duration,
sum(
ifnull( cdr.traffic_down, 0 )) + sum(
ifnull( ch.traffic_down, 0 )) traffic_down,
sum(
ifnull( cdr.traffic_up, 0 )) + sum(
ifnull( ch.traffic_up, 0 )) traffic_up
</otherwise>
</choose>
FROM FROM
u_cdr cdr u_cdr cdr
LEFT JOIN u_cdr_history ch ON cdr.id = ch.cdr_id LEFT JOIN u_cdr_history ch ON cdr.id = ch.cdr_id
@@ -50,9 +36,32 @@
<if test="startTime != null"> <if test="startTime != null">
AND ch.start_time >= #{startTime} AND ch.start_time >= #{startTime}
</if> </if>
GROUP BY
cdr.user_id UNION
SELECT
cdr.user_id id,
max( cdr.activity ) activity,
sum(
ifnull( cdr.up_time, 0 )) duration,
sum(
ifnull( cdr.traffic_down, 0 )) traffic_down,
sum(
ifnull( cdr.traffic_up, 0 )) traffic_up
FROM
u_cdr cdr
WHERE
cdr.del_flag = 0
<if test="userId != null and userId != ''">
AND cdr.user_id = #{userId}
</if>
<if test="endTime != null">
AND cdr.last_seen_time &lt;= #{endTime}
</if>
GROUP BY GROUP BY
cdr.user_id cdr.user_id
) t
GROUP BY
t.id
</select> </select>
<select id="getByClient" resultType="org.wfc.user.domain.vo.UCdrClientVo"> <select id="getByClient" resultType="org.wfc.user.domain.vo.UCdrClientVo">