|
@ -55,6 +55,87 @@ |
|
|
|
|
|
|
|
|
) |
|
|
) |
|
|
</insert> |
|
|
</insert> |
|
|
|
|
|
<insert id="batchInsertPart1"> |
|
|
|
|
|
<foreach collection="list" item="s" separator=";"> |
|
|
|
|
|
INSERT INTO statistics ( |
|
|
|
|
|
market, current_datetime, |
|
|
|
|
|
current_gold, daily_change, |
|
|
|
|
|
current_permanent, current_free_june, |
|
|
|
|
|
current_free_december, current_task |
|
|
|
|
|
) VALUES ( |
|
|
|
|
|
#{s.market}, #{s.currentDatetime}, |
|
|
|
|
|
#{s.currentGold}, #{s.dailyChange}, |
|
|
|
|
|
#{s.currentPermanent}, #{s.currentFreeJune}, |
|
|
|
|
|
#{s.currentFreeDecember}, #{s.currentTask} |
|
|
|
|
|
) |
|
|
|
|
|
ON DUPLICATE KEY UPDATE |
|
|
|
|
|
current_gold = VALUES(current_gold), |
|
|
|
|
|
daily_change = VALUES(daily_change), |
|
|
|
|
|
current_permanent = VALUES(current_permanent), |
|
|
|
|
|
current_free_june = VALUES(current_free_june), |
|
|
|
|
|
current_free_december = VALUES(current_free_december), |
|
|
|
|
|
current_task = VALUES(current_task) |
|
|
|
|
|
</foreach> |
|
|
|
|
|
</insert> |
|
|
|
|
|
<insert id="batchInsertPart2"> |
|
|
|
|
|
<foreach collection="list" item="s" separator=";"> |
|
|
|
|
|
INSERT INTO statistics ( |
|
|
|
|
|
market, current_datetime, |
|
|
|
|
|
recharge, money, |
|
|
|
|
|
consume_permanent, consume_free_june, |
|
|
|
|
|
consume_free_december, consume_task, |
|
|
|
|
|
refund_permanent, refund_free_june, |
|
|
|
|
|
refund_free_december, refund_task, |
|
|
|
|
|
recharge_num, first_recharge |
|
|
|
|
|
) VALUES ( |
|
|
|
|
|
#{s.market}, #{s.currentDatetime}, |
|
|
|
|
|
#{s.recharge}, #{s.money}, |
|
|
|
|
|
#{s.consumePermanent}, #{s.consumeFreeJune}, |
|
|
|
|
|
#{s.consumeFreeDecember}, #{s.consumeTask}, |
|
|
|
|
|
#{s.refundPermanent}, #{s.refundFreeJune}, |
|
|
|
|
|
#{s.refundFreeDecember}, #{s.refundTask}, |
|
|
|
|
|
#{s.rechargeNum}, #{s.firstRecharge} |
|
|
|
|
|
) |
|
|
|
|
|
ON DUPLICATE KEY UPDATE |
|
|
|
|
|
recharge = VALUES(recharge), |
|
|
|
|
|
money = VALUES(money), |
|
|
|
|
|
consume_permanent = VALUES(consume_permanent), |
|
|
|
|
|
consume_free_june = VALUES(consume_free_june), |
|
|
|
|
|
consume_free_december = VALUES(consume_free_december), |
|
|
|
|
|
consume_task = VALUES(consume_task), |
|
|
|
|
|
refund_permanent = VALUES(refund_permanent), |
|
|
|
|
|
refund_free_june = VALUES(refund_free_june), |
|
|
|
|
|
refund_free_december = VALUES(refund_free_december), |
|
|
|
|
|
refund_task = VALUES(refund_task), |
|
|
|
|
|
recharge_num = VALUES(recharge_num), |
|
|
|
|
|
first_recharge = VALUES(first_recharge) |
|
|
|
|
|
</foreach> |
|
|
|
|
|
</insert> |
|
|
|
|
|
<insert id="batchInsertYear"> |
|
|
|
|
|
<foreach collection="list" item="s" separator=";"> |
|
|
|
|
|
INSERT INTO statistics ( |
|
|
|
|
|
market, current_datetime, |
|
|
|
|
|
yearly_recharge, |
|
|
|
|
|
yearly_money, |
|
|
|
|
|
yearly_consume, |
|
|
|
|
|
yearly_refund, |
|
|
|
|
|
yearly_recharge_num |
|
|
|
|
|
) VALUES ( |
|
|
|
|
|
#{s.market}, #{s.currentDatetime}, |
|
|
|
|
|
#{s.yearlyRecharge}, |
|
|
|
|
|
#{s.yearlyMoney}, |
|
|
|
|
|
#{s.yearlyConsume}, |
|
|
|
|
|
#{s.yearlyRefund}, |
|
|
|
|
|
#{s.yearlyRechargeNum} |
|
|
|
|
|
) |
|
|
|
|
|
ON DUPLICATE KEY UPDATE |
|
|
|
|
|
yearly_recharge = VALUES(yearly_recharge), |
|
|
|
|
|
yearly_money = VALUES(yearly_money), |
|
|
|
|
|
yearly_consume = VALUES(yearly_consume), |
|
|
|
|
|
yearly_refund = VALUES(yearly_refund), |
|
|
|
|
|
yearly_recharge_num = VALUES(yearly_recharge_num) |
|
|
|
|
|
</foreach> |
|
|
|
|
|
</insert> |
|
|
<!--更新part2统计数据--> |
|
|
<!--更新part2统计数据--> |
|
|
<update id="updatePart2" parameterType="map"> |
|
|
<update id="updatePart2" parameterType="map"> |
|
|
UPDATE statistics |
|
|
UPDATE statistics |
|
@ -185,6 +266,109 @@ |
|
|
</foreach> |
|
|
</foreach> |
|
|
AND current_datetime BETWEEN #{startDate} AND #{endDate} |
|
|
AND current_datetime BETWEEN #{startDate} AND #{endDate} |
|
|
</select> |
|
|
</select> |
|
|
|
|
|
<select id="listPart1All" resultType="com.example.demo.domain.entity.Statistics"> |
|
|
|
|
|
SELECT |
|
|
|
|
|
market, |
|
|
|
|
|
#{today} AS current_datetime, |
|
|
|
|
|
COALESCE(SUM(current_permanent_gold),0) + |
|
|
|
|
|
COALESCE(SUM(current_free_june),0) + |
|
|
|
|
|
COALESCE(SUM(current_free_december),0) + |
|
|
|
|
|
COALESCE(SUM(current_task_gold),0) AS current_gold, |
|
|
|
|
|
|
|
|
|
|
|
COALESCE(SUM(current_permanent_gold),0) AS current_permanent, |
|
|
|
|
|
COALESCE(SUM(current_free_june),0) AS current_free_june, |
|
|
|
|
|
COALESCE(SUM(current_free_december),0) AS current_free_december, |
|
|
|
|
|
COALESCE(SUM(current_task_gold),0) AS current_task, |
|
|
|
|
|
-- 与昨天差值(从 statistics 表取) |
|
|
|
|
|
( |
|
|
|
|
|
COALESCE(SUM(u.current_permanent_gold),0) + |
|
|
|
|
|
COALESCE(SUM(u.current_free_june),0) + |
|
|
|
|
|
COALESCE(SUM(u.current_free_december),0) + |
|
|
|
|
|
COALESCE(SUM(u.current_task_gold),0) |
|
|
|
|
|
) - COALESCE( |
|
|
|
|
|
( |
|
|
|
|
|
SELECT s.current_gold |
|
|
|
|
|
FROM statistics s |
|
|
|
|
|
WHERE s.market = u.market |
|
|
|
|
|
AND s.current_datetime = DATE_SUB(#{today}, INTERVAL 1 DAY) |
|
|
|
|
|
LIMIT 1 |
|
|
|
|
|
), 0 |
|
|
|
|
|
) AS daily_change |
|
|
|
|
|
FROM user u |
|
|
|
|
|
GROUP BY market |
|
|
|
|
|
</select> |
|
|
|
|
|
<select id="listPart2All" resultType="com.example.demo.domain.entity.Statistics"> |
|
|
|
|
|
SELECT |
|
|
|
|
|
u.market, |
|
|
|
|
|
#{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, |
|
|
|
|
|
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 #{start} AND #{end} THEN ugr.jwcode END) AS first_recharge |
|
|
|
|
|
FROM user_gold_record ugr |
|
|
|
|
|
JOIN user u ON ugr.jwcode = u.jwcode |
|
|
|
|
|
WHERE ugr.audit_status IN (1,3) |
|
|
|
|
|
AND ugr.flag = 1 |
|
|
|
|
|
AND ugr.create_time BETWEEN #{start} AND #{end} |
|
|
|
|
|
GROUP BY u.market |
|
|
|
|
|
</select> |
|
|
|
|
|
<select id="listYearAll" resultType="com.example.demo.domain.entity.Statistics"> |
|
|
|
|
|
SELECT market, |
|
|
|
|
|
COALESCE(SUM(recharge),0) AS yearly_recharge, |
|
|
|
|
|
#{today} AS current_datetime, |
|
|
|
|
|
COALESCE(SUM(money),0) AS yearly_money, |
|
|
|
|
|
COALESCE(SUM(consume_permanent+consume_free_june+consume_free_december+consume_task),0) AS yearly_consume, |
|
|
|
|
|
COALESCE(SUM(refund_permanent+refund_free_june+refund_free_december+refund_task),0) AS yearly_refund, |
|
|
|
|
|
COALESCE(SUM(recharge_num),0) AS yearly_recharge_num |
|
|
|
|
|
FROM statistics |
|
|
|
|
|
WHERE current_datetime BETWEEN #{yearStart} AND #{end} |
|
|
|
|
|
GROUP BY market |
|
|
|
|
|
</select> |
|
|
|
|
|
<select id="listPart2RangeAll" resultType="com.example.demo.domain.entity.Statistics"> |
|
|
|
|
|
SELECT |
|
|
|
|
|
u.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, |
|
|
|
|
|
DATE_ADD(DATE_SUB(CURDATE(), INTERVAL seq DAY), INTERVAL 1 DAY) 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 |
|
|
|
|
|
WHERE ugr.audit_status IN (1,3) |
|
|
|
|
|
AND ugr.flag = 1 |
|
|
|
|
|
GROUP BY u.market, d.create_date |
|
|
|
|
|
</select> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</mapper> |
|
|
</mapper> |