You've already forked FrameTour-BE
首页统计
This commit is contained in:
@@ -319,176 +319,158 @@
|
||||
AND date BETWEEN #{startTime} AND #{endTime}
|
||||
</select>
|
||||
<select id="orderChartByDate" resultType="java.util.HashMap">
|
||||
WITH RECURSIVE date_series AS (
|
||||
SELECT
|
||||
DATE(#{startTime}) AS date_value
|
||||
UNION ALL
|
||||
SELECT
|
||||
DATE_ADD(date_value, INTERVAL 1 DAY) AS date_value
|
||||
FROM date_series
|
||||
WHERE DATE_ADD(date_value, INTERVAL 1 DAY) <= DATE(#{endTime})
|
||||
)
|
||||
SELECT
|
||||
DATE(date_series.DATE) as t,
|
||||
COALESCE ( count( `order`.id ), 0 ) AS count,
|
||||
COALESCE ( sum( `order`.pay_price ), 0 ) AS price
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
DATE_ADD( #{startTime}, INTERVAL ( units.i + tens.i * 10 + hundreds.i * 100 ) DAY ) AS DATE
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
0 AS i UNION ALL
|
||||
SELECT
|
||||
1 UNION ALL
|
||||
SELECT
|
||||
2 UNION ALL
|
||||
SELECT
|
||||
3 UNION ALL
|
||||
SELECT
|
||||
4 UNION ALL
|
||||
SELECT
|
||||
5 UNION ALL
|
||||
SELECT
|
||||
6 UNION ALL
|
||||
SELECT
|
||||
7 UNION ALL
|
||||
SELECT
|
||||
8 UNION ALL
|
||||
SELECT
|
||||
9
|
||||
) units
|
||||
CROSS JOIN (
|
||||
SELECT
|
||||
0 AS i UNION ALL
|
||||
SELECT
|
||||
1 UNION ALL
|
||||
SELECT
|
||||
2 UNION ALL
|
||||
SELECT
|
||||
3 UNION ALL
|
||||
SELECT
|
||||
4 UNION ALL
|
||||
SELECT
|
||||
5 UNION ALL
|
||||
SELECT
|
||||
6 UNION ALL
|
||||
SELECT
|
||||
7 UNION ALL
|
||||
SELECT
|
||||
8 UNION ALL
|
||||
SELECT
|
||||
9
|
||||
) tens
|
||||
CROSS JOIN (
|
||||
SELECT
|
||||
0 AS i UNION ALL
|
||||
SELECT
|
||||
1 UNION ALL
|
||||
SELECT
|
||||
2 UNION ALL
|
||||
SELECT
|
||||
3 UNION ALL
|
||||
SELECT
|
||||
4 UNION ALL
|
||||
SELECT
|
||||
5 UNION ALL
|
||||
SELECT
|
||||
6 UNION ALL
|
||||
SELECT
|
||||
7 UNION ALL
|
||||
SELECT
|
||||
8 UNION ALL
|
||||
SELECT
|
||||
9
|
||||
) hundreds
|
||||
WHERE
|
||||
DATE_ADD( #{startTime}, INTERVAL ( units.i + tens.i * 10 + hundreds.i * 100 ) DAY ) <= #{endTime}
|
||||
) date_series
|
||||
LEFT JOIN `order` ON DATE ( `order`.create_at ) = date_series.DATE AND `order`.scenic_id = #{scenicId} AND ( `order`.STATUS = 1 OR `order`.STATUS = 2 )
|
||||
GROUP BY
|
||||
date_series.DATE
|
||||
ORDER BY date_series.DATE
|
||||
DATE(date_series.date_value) as t,
|
||||
COALESCE(COUNT(`order`.id), 0) AS count,
|
||||
COALESCE(SUM(`order`.pay_price), 0) AS price
|
||||
FROM date_series
|
||||
LEFT JOIN `order` ON DATE(`order`.create_at) = date_series.date_value
|
||||
<if test="scenicId != null">
|
||||
AND `order`.scenic_id = #{scenicId}
|
||||
</if>
|
||||
AND (`order`.STATUS = 1 OR `order`.STATUS = 2)
|
||||
GROUP BY date_series.date_value
|
||||
ORDER BY date_series.date_value
|
||||
</select>
|
||||
<select id="orderChartByHour" resultType="java.util.HashMap">
|
||||
WITH RECURSIVE hour_series AS (
|
||||
SELECT
|
||||
#{startTime} AS hour_time,
|
||||
DATE_FORMAT(#{startTime}, '%m-%d %H') AS HOUR
|
||||
UNION ALL
|
||||
SELECT
|
||||
DATE_ADD(hour_time, INTERVAL 1 HOUR) AS hour_time,
|
||||
DATE_FORMAT(DATE_ADD(hour_time, INTERVAL 1 HOUR), '%m-%d %H') AS HOUR
|
||||
FROM hour_series
|
||||
WHERE DATE_ADD(hour_time, INTERVAL 1 HOUR) <= #{endTime}
|
||||
)
|
||||
SELECT
|
||||
date_series.HOUR as t,
|
||||
COALESCE ( count( `order`.id ), 0 ) AS count,
|
||||
COALESCE ( sum( `order`.pay_price ), 0 ) AS price
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
DATE_FORMAT( DATE_ADD( #{startTime}, INTERVAL ( units.i + tens.i * 10 + hundreds.i * 100 ) HOUR ), '%m-%d %H') AS HOUR
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
0 AS i UNION ALL
|
||||
SELECT
|
||||
1 UNION ALL
|
||||
SELECT
|
||||
2 UNION ALL
|
||||
SELECT
|
||||
3 UNION ALL
|
||||
SELECT
|
||||
4 UNION ALL
|
||||
SELECT
|
||||
5 UNION ALL
|
||||
SELECT
|
||||
6 UNION ALL
|
||||
SELECT
|
||||
7 UNION ALL
|
||||
SELECT
|
||||
8 UNION ALL
|
||||
SELECT
|
||||
9
|
||||
) units
|
||||
CROSS JOIN (
|
||||
SELECT
|
||||
0 AS i UNION ALL
|
||||
SELECT
|
||||
1 UNION ALL
|
||||
SELECT
|
||||
2 UNION ALL
|
||||
SELECT
|
||||
3 UNION ALL
|
||||
SELECT
|
||||
4 UNION ALL
|
||||
SELECT
|
||||
5 UNION ALL
|
||||
SELECT
|
||||
6 UNION ALL
|
||||
SELECT
|
||||
7 UNION ALL
|
||||
SELECT
|
||||
8 UNION ALL
|
||||
SELECT
|
||||
9
|
||||
) tens
|
||||
CROSS JOIN (
|
||||
SELECT
|
||||
0 AS i UNION ALL
|
||||
SELECT
|
||||
1 UNION ALL
|
||||
SELECT
|
||||
2 UNION ALL
|
||||
SELECT
|
||||
3 UNION ALL
|
||||
SELECT
|
||||
4 UNION ALL
|
||||
SELECT
|
||||
5 UNION ALL
|
||||
SELECT
|
||||
6 UNION ALL
|
||||
SELECT
|
||||
7 UNION ALL
|
||||
SELECT
|
||||
8 UNION ALL
|
||||
SELECT
|
||||
9
|
||||
) hundreds
|
||||
WHERE
|
||||
DATE_ADD( #{startTime}, INTERVAL ( units.i + tens.i * 10 + hundreds.i * 100 ) HOUR ) <= #{endTime}
|
||||
) date_series
|
||||
LEFT JOIN `order` ON DATE_FORMAT( `order`.create_at, '%m-%d %H' ) = date_series.HOUR AND `order`.scenic_id = #{scenicId} AND ( `order`.STATUS = 1 OR `order`.STATUS = 2 )
|
||||
GROUP BY
|
||||
date_series.HOUR
|
||||
ORDER BY date_series.HOUR
|
||||
hour_series.HOUR as t,
|
||||
COALESCE(COUNT(`order`.id), 0) AS count,
|
||||
COALESCE(SUM(`order`.pay_price), 0) AS price
|
||||
FROM hour_series
|
||||
LEFT JOIN `order` ON DATE_FORMAT(`order`.create_at, '%m-%d %H') = hour_series.HOUR
|
||||
<if test="scenicId != null">
|
||||
AND `order`.scenic_id = #{scenicId}
|
||||
</if>
|
||||
AND (`order`.STATUS = 1 OR `order`.STATUS = 2)
|
||||
GROUP BY hour_series.HOUR, hour_series.hour_time
|
||||
ORDER BY hour_series.hour_time
|
||||
</select>
|
||||
<insert id="insertStat">
|
||||
REPLACE INTO scenic_stats (scenic_id, date, cs1, v1, sv1, u1, m1, gv1, gv2, pv1, pv2, cp1, o1, o2, o3, ro2, ro3)
|
||||
VALUES (#{scenicId}, #{date}, #{data.cameraShotOfMemberNum}, #{data.totalVisitorOfMemberNum}, #{data.scanCodeVisitorOfMemberNum}, #{data.uploadFaceOfMemberNum}, #{data.pushOfMemberNum}, #{data.completeVideoOfMemberNum}, #{data.completeOfVideoNum}, #{data.previewVideoOfMemberNum}, #{data.previewOfVideoNum}, #{data.clickOnPayOfMemberNum}, #{data.payOfMemberNum}, #{data.payOfOrderNum}, #{data.payOfOrderAmount}, #{data.refundOfOrderNum}, #{data.refundOfOrderAmount})
|
||||
</insert>
|
||||
<select id="scanCodeMemberChartByHour" resultType="java.util.HashMap">
|
||||
WITH RECURSIVE hour_series AS (
|
||||
SELECT
|
||||
#{startTime} AS hour_time,
|
||||
DATE_FORMAT(#{startTime}, '%m-%d %H') AS HOUR
|
||||
UNION ALL
|
||||
SELECT
|
||||
DATE_ADD(hour_time, INTERVAL 1 HOUR) AS hour_time,
|
||||
DATE_FORMAT(DATE_ADD(hour_time, INTERVAL 1 HOUR), '%m-%d %H') AS HOUR
|
||||
FROM hour_series
|
||||
WHERE DATE_ADD(hour_time, INTERVAL 1 HOUR) <= #{endTime}
|
||||
)
|
||||
SELECT
|
||||
hour_series.HOUR as t,
|
||||
COALESCE(scan_data.member_count, 0) AS count,
|
||||
COALESCE(order_data.order_count, 0) AS orderCount,
|
||||
COALESCE(order_data.order_amount, 0) AS orderAmount
|
||||
FROM hour_series
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
DATE_FORMAT(s.create_time, '%m-%d %H') AS hour_key,
|
||||
COUNT(DISTINCT s.member_id) AS member_count
|
||||
FROM `t_stats_record` r
|
||||
LEFT JOIN `t_stats` s ON r.trace_id = s.trace_id
|
||||
WHERE r.trace_id IN (
|
||||
SELECT trace_id FROM `t_stats_record`
|
||||
WHERE action = 'ENTER_SCENIC'
|
||||
<if test="scenicId != null">
|
||||
AND `identifier` = #{scenicId}
|
||||
</if>
|
||||
)
|
||||
AND r.action = 'LAUNCH'
|
||||
AND JSON_EXTRACT(`params`, '$.scene') IN (1047, 1048, 1049)
|
||||
AND s.create_time BETWEEN #{startTime} AND #{endTime}
|
||||
GROUP BY DATE_FORMAT(s.create_time, '%m-%d %H')
|
||||
) scan_data ON scan_data.hour_key = hour_series.HOUR
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
DATE_FORMAT(create_at, '%m-%d %H') AS hour_key,
|
||||
COUNT(id) AS order_count,
|
||||
SUM(pay_price) AS order_amount
|
||||
FROM `order`
|
||||
WHERE (status = 1 OR status = 2)
|
||||
<if test="scenicId != null">
|
||||
AND scenic_id = #{scenicId}
|
||||
</if>
|
||||
AND create_at BETWEEN #{startTime} AND #{endTime}
|
||||
GROUP BY DATE_FORMAT(create_at, '%m-%d %H')
|
||||
) order_data ON order_data.hour_key = hour_series.HOUR
|
||||
ORDER BY hour_series.hour_time
|
||||
</select>
|
||||
<select id="scanCodeMemberChartByDate" resultType="java.util.HashMap">
|
||||
WITH RECURSIVE date_series AS (
|
||||
SELECT
|
||||
DATE(#{startTime}) AS date_value,
|
||||
DATE_FORMAT(#{startTime}, '%m-%d') AS DATE_KEY
|
||||
UNION ALL
|
||||
SELECT
|
||||
DATE_ADD(date_value, INTERVAL 1 DAY) AS date_value,
|
||||
DATE_FORMAT(DATE_ADD(date_value, INTERVAL 1 DAY), '%m-%d') AS DATE_KEY
|
||||
FROM date_series
|
||||
WHERE DATE_ADD(date_value, INTERVAL 1 DAY) <= DATE(#{endTime})
|
||||
)
|
||||
SELECT
|
||||
date_series.DATE_KEY as t,
|
||||
COALESCE(scan_data.member_count, 0) AS count,
|
||||
COALESCE(order_data.order_count, 0) AS orderCount,
|
||||
COALESCE(order_data.order_amount, 0) AS orderAmount
|
||||
FROM date_series
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
DATE_FORMAT(s.create_time, '%m-%d') AS date_key,
|
||||
COUNT(DISTINCT s.member_id) AS member_count
|
||||
FROM `t_stats_record` r
|
||||
LEFT JOIN `t_stats` s ON r.trace_id = s.trace_id
|
||||
WHERE r.trace_id IN (
|
||||
SELECT trace_id FROM `t_stats_record`
|
||||
WHERE action = 'ENTER_SCENIC'
|
||||
<if test="scenicId != null">
|
||||
AND `identifier` = #{scenicId}
|
||||
</if>
|
||||
)
|
||||
AND r.action = 'LAUNCH'
|
||||
AND JSON_EXTRACT(`params`, '$.scene') IN (1047, 1048, 1049)
|
||||
AND s.create_time BETWEEN #{startTime} AND #{endTime}
|
||||
GROUP BY DATE_FORMAT(s.create_time, '%m-%d')
|
||||
) scan_data ON scan_data.date_key = date_series.DATE_KEY
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
DATE_FORMAT(create_at, '%m-%d') AS date_key,
|
||||
COUNT(id) AS order_count,
|
||||
SUM(pay_price) AS order_amount
|
||||
FROM `order`
|
||||
WHERE (status = 1 OR status = 2)
|
||||
<if test="scenicId != null">
|
||||
AND scenic_id = #{scenicId}
|
||||
</if>
|
||||
AND create_at BETWEEN #{startTime} AND #{endTime}
|
||||
GROUP BY DATE_FORMAT(create_at, '%m-%d')
|
||||
) order_data ON order_data.date_key = date_series.DATE_KEY
|
||||
ORDER BY date_series.date_value
|
||||
</select>
|
||||
|
||||
</mapper>
|
Reference in New Issue
Block a user