Browse Source

工作台统计接口 修改各个接口批量插入间隔符错误 ,修改仅七天查询的时间范围判断

yufenghao/feature-20251106105659-现金管理接口优化
yufenghao 3 weeks ago
parent
commit
f6debc5fc7
  1. 73
      src/main/resources/mapper/StatisticsMapper.xml

73
src/main/resources/mapper/StatisticsMapper.xml

@ -9,7 +9,7 @@
current_permanent, current_free_june,
current_free_december, current_task
) VALUES
<foreach collection="list" item="s" separator=";">
<foreach collection="list" item="s" separator=",">
(
#{s.market}, #{s.currentDatetime},
#{s.currentGold}, #{s.dailyChange},
@ -35,7 +35,7 @@
refund_free_december, refund_task,
recharge_num, first_recharge
) VALUES
<foreach collection="list" item="s" separator=";">
<foreach collection="list" item="s" separator=",">
(
#{s.market}, #{s.currentDatetime},
#{s.recharge}, #{s.money},
@ -69,7 +69,7 @@
yearly_refund,
yearly_recharge_num
) VALUES
<foreach collection="list" item="s" separator=";">
<foreach collection="list" item="s" separator=",">
(
#{s.market}, #{s.currentDatetime},
#{s.yearlyRecharge},
@ -137,7 +137,7 @@
<select id="listPart2All" resultType="com.example.demo.domain.entity.Statistics">
SELECT
m.name as market,
'2025-08-04' AS current_datetime,
#{today} AS current_datetime,
COALESCE(SUM(CASE WHEN ugr.type=0 THEN ugr.permanent_gold+ugr.free_june+ugr.free_december+ugr.task_gold END),0) AS recharge,
COALESCE(SUM(CASE WHEN ugr.type=0 THEN ugr.permanent_gold END),0) AS money,
COALESCE(SUM(CASE WHEN ugr.type=1 THEN -ugr.permanent_gold END),0) AS consume_permanent,
@ -176,40 +176,41 @@
</select>
<select id="listPart2RangeAll" resultType="com.example.demo.domain.entity.Statistics">
SELECT
m.name as market,
DATE(ugr.create_time) AS current_datetime, -- 只保留日期
COALESCE(SUM(CASE WHEN ugr.type=0 THEN ugr.permanent_gold+ugr.free_june+ugr.free_december+ugr.task_gold END),0) AS recharge,
COALESCE(SUM(CASE WHEN ugr.type=0 THEN ugr.permanent_gold END),0) AS money,
COALESCE(SUM(CASE WHEN ugr.type=1 THEN -ugr.permanent_gold END),0) AS consume_permanent,
COALESCE(SUM(CASE WHEN ugr.type=1 THEN -ugr.free_june END),0) AS consume_free_june,
COALESCE(SUM(CASE WHEN ugr.type=1 THEN -ugr.free_december END),0) AS consume_free_december,
COALESCE(SUM(CASE WHEN ugr.type=1 THEN -ugr.task_gold END),0) AS consume_task,
COALESCE(SUM(CASE WHEN ugr.type=2 THEN ugr.permanent_gold END),0) AS refund_permanent,
COALESCE(SUM(CASE WHEN ugr.type=2 THEN ugr.free_june END),0) AS refund_free_june,
COALESCE(SUM(CASE WHEN ugr.type=2 THEN ugr.free_december END),0) AS refund_free_december,
COALESCE(SUM(CASE WHEN ugr.type=2 THEN ugr.task_gold END),0) AS refund_task,
COUNT(DISTINCT CASE WHEN ugr.type=0 THEN ugr.jwcode END) AS recharge_num,
COUNT(DISTINCT CASE WHEN ugr.type=0
AND u.first_recharge BETWEEN d.date_start AND d.date_end THEN ugr.jwcode END) AS first_recharge
m.name as market,
DATE(ugr.create_time) AS current_datetime, -- 只保留日期
COALESCE(SUM(CASE WHEN ugr.type=0 THEN ugr.permanent_gold+ugr.free_june+ugr.free_december+ugr.task_gold END),0)
AS recharge,
COALESCE(SUM(CASE WHEN ugr.type=0 THEN ugr.permanent_gold END),0) AS money,
COALESCE(SUM(CASE WHEN ugr.type=1 THEN -ugr.permanent_gold END),0) AS consume_permanent,
COALESCE(SUM(CASE WHEN ugr.type=1 THEN -ugr.free_june END),0) AS consume_free_june,
COALESCE(SUM(CASE WHEN ugr.type=1 THEN -ugr.free_december END),0) AS consume_free_december,
COALESCE(SUM(CASE WHEN ugr.type=1 THEN -ugr.task_gold END),0) AS consume_task,
COALESCE(SUM(CASE WHEN ugr.type=2 THEN ugr.permanent_gold END),0) AS refund_permanent,
COALESCE(SUM(CASE WHEN ugr.type=2 THEN ugr.free_june END),0) AS refund_free_june,
COALESCE(SUM(CASE WHEN ugr.type=2 THEN ugr.free_december END),0) AS refund_free_december,
COALESCE(SUM(CASE WHEN ugr.type=2 THEN ugr.task_gold END),0) AS refund_task,
COUNT(DISTINCT CASE WHEN ugr.type=0 THEN ugr.jwcode END) AS recharge_num,
COUNT(DISTINCT CASE WHEN ugr.type=0
AND u.first_recharge BETWEEN d.date_start AND d.date_end THEN ugr.jwcode END) AS first_recharge
FROM
-- 生成 7 天日期序列
(
SELECT DATE_SUB(CURDATE(), INTERVAL seq DAY) AS create_date,
DATE_SUB(CURDATE(), INTERVAL seq DAY) AS date_start,
TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL seq DAY), '23:59:59') AS date_end
FROM (
SELECT 0 AS seq UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL
SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6
) AS days
) d
JOIN user_gold_record ugr
ON ugr.create_time between d.date_start AND d.date_end
JOIN user u ON ugr.jwcode = u.jwcode
inner join market m on u.market=m.id
-- 生成 7 天日期序列
(
SELECT DATE_SUB(CURDATE(), INTERVAL seq DAY) AS create_date,
DATE_SUB(CURDATE(), INTERVAL seq DAY) AS date_start,
TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL seq DAY), '23:59:59') AS date_end
FROM (
SELECT 0 AS seq UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL
SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6
) AS days
) d
JOIN user_gold_record ugr ON ugr.create_time &gt;= DATE_SUB(CURDATE(), INTERVAL 6 DAY)
AND ugr.create_time &lt;= TIMESTAMP(CURDATE(), '23:59:59')
JOIN user u ON ugr.jwcode = u.jwcode
inner join market m on u.market=m.id
WHERE ugr.audit_status IN (1,3)
AND ugr.flag = 1
AND m.name IS NOT NULL
GROUP BY m.name, d.create_date
AND ugr.flag = 1
AND m.name IS NOT NULL
GROUP BY m.name, d.create_date
</select>

Loading…
Cancel
Save