fix: stat traffic
This commit is contained in:
@@ -3,56 +3,65 @@
|
||||
<mapper namespace="org.wfc.user.mapper.UCdrMapper">
|
||||
|
||||
<select id="getByUser" resultType="org.wfc.user.domain.vo.UCdrUserVo">
|
||||
|
||||
SELECT
|
||||
cdr.user_id id,
|
||||
min( ch.start_time ) start_time,
|
||||
max( cdr.last_seen_time ) end_time,
|
||||
max( cdr.activity ) activity,
|
||||
<choose>
|
||||
<when test="endTime != null">
|
||||
sum(
|
||||
if(cdr.last_seen_time <= #{endTime}, ifnull( cdr.up_time, 0 ), 0))+ sum(
|
||||
ifnull( ch.duration, 0 )) duration,
|
||||
sum(
|
||||
if(cdr.last_seen_time <= #{endTime}, ifnull( cdr.traffic_down, 0 ), 0)) + sum(
|
||||
ifnull( ch.traffic_down, 0 )) traffic_down,
|
||||
sum(
|
||||
if(cdr.last_seen_time <= #{endTime}, ifnull( cdr.traffic_up, 0 ), 0)) + sum(
|
||||
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>
|
||||
|
||||
t.id,
|
||||
max( t.activity ) activity,
|
||||
sum( t.duration ) duration,
|
||||
sum( t.traffic_down ) traffic_down,
|
||||
sum( t.traffic_up ) traffic_up
|
||||
FROM
|
||||
u_cdr cdr
|
||||
LEFT JOIN u_cdr_history ch ON cdr.id = ch.cdr_id
|
||||
AND ch.del_flag = 0
|
||||
WHERE
|
||||
cdr.del_flag = 0
|
||||
AND cdr.last_seen_time != ifnull( ch.end_time, 0 )
|
||||
<if test="userId != null and userId != ''">
|
||||
AND cdr.user_id = #{userId}
|
||||
</if>
|
||||
<if test="endTime != null">
|
||||
AND ch.start_time <= #{endTime}
|
||||
</if>
|
||||
<if test="startTime != null">
|
||||
AND ch.start_time >= #{startTime}
|
||||
</if>
|
||||
(
|
||||
SELECT
|
||||
cdr.user_id id,
|
||||
max( cdr.activity ) activity,
|
||||
sum(
|
||||
ifnull( ch.duration, 0 )) duration,
|
||||
sum(
|
||||
ifnull( ch.traffic_down, 0 )) traffic_down,
|
||||
sum(
|
||||
ifnull( ch.traffic_up, 0 )) traffic_up
|
||||
FROM
|
||||
u_cdr cdr
|
||||
LEFT JOIN u_cdr_history ch ON cdr.id = ch.cdr_id
|
||||
AND ch.del_flag = 0
|
||||
WHERE
|
||||
cdr.del_flag = 0
|
||||
AND cdr.last_seen_time != ifnull( ch.end_time, 0 )
|
||||
<if test="userId != null and userId != ''">
|
||||
AND cdr.user_id = #{userId}
|
||||
</if>
|
||||
<if test="endTime != null">
|
||||
AND ch.start_time <= #{endTime}
|
||||
</if>
|
||||
<if test="startTime != null">
|
||||
AND ch.start_time >= #{startTime}
|
||||
</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 <= #{endTime}
|
||||
</if>
|
||||
GROUP BY
|
||||
cdr.user_id
|
||||
) t
|
||||
GROUP BY
|
||||
cdr.user_id
|
||||
|
||||
t.id
|
||||
</select>
|
||||
|
||||
<select id="getByClient" resultType="org.wfc.user.domain.vo.UCdrClientVo">
|
||||
|
||||
Reference in New Issue
Block a user