|
|
@ -1,60 +1,7 @@ |
|
|
|
<?xml version="1.0" encoding="UTF-8"?> |
|
|
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|
|
|
<mapper namespace="com.example.demo.mapper.coin.StatisticsMapper"> |
|
|
|
<!--新增part2统计数据--> |
|
|
|
<insert id="insertPart2"> |
|
|
|
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 ( |
|
|
|
#{market}, #{currentDatetime}, |
|
|
|
#{recharge}, #{money}, |
|
|
|
#{consumePermanent}, #{consumeFreeJune}, |
|
|
|
#{consumeFreeDecember}, #{consumeTask}, |
|
|
|
#{refundPermanent}, #{refundFreeJune}, |
|
|
|
#{refundFreeDecember}, #{refundTask}, |
|
|
|
#{rechargeNum}, #{firstRecharge} |
|
|
|
) |
|
|
|
</insert> |
|
|
|
<!--新增part1统计数据--> |
|
|
|
<insert id="insertPart1"> |
|
|
|
INSERT INTO statistics ( |
|
|
|
market, current_datetime, |
|
|
|
current_gold, daily_change, |
|
|
|
current_permanent, current_free_june, |
|
|
|
current_free_december, current_task |
|
|
|
|
|
|
|
) VALUES ( |
|
|
|
#{market}, #{currentDatetime}, |
|
|
|
#{currentGold}, #{dailyChange}, |
|
|
|
#{currentPermanent}, #{currentFreeJune}, |
|
|
|
#{currentFreeDecember}, #{currentTask} |
|
|
|
|
|
|
|
) |
|
|
|
</insert> |
|
|
|
<!--新增年度统计--> |
|
|
|
<insert id="insertYear"> |
|
|
|
INSERT INTO statistics ( |
|
|
|
market, current_datetime, |
|
|
|
yearly_recharge, |
|
|
|
yearly_money, |
|
|
|
yearly_consume, |
|
|
|
yearly_refund, |
|
|
|
yearly_recharge_num |
|
|
|
|
|
|
|
) VALUES ( |
|
|
|
#{market}, #{currentDatetime}, |
|
|
|
#{yearlyRecharge},#{yearlyMoney}, |
|
|
|
#{yearlyConsume},#{yearlyRefund}, |
|
|
|
#{yearlyRechargeNum} |
|
|
|
|
|
|
|
) |
|
|
|
</insert> |
|
|
|
<insert id="batchInsertPart1"> |
|
|
|
<foreach collection="list" item="s" separator=";"> |
|
|
|
INSERT INTO statistics ( |
|
|
@ -136,66 +83,7 @@ |
|
|
|
yearly_recharge_num = VALUES(yearly_recharge_num) |
|
|
|
</foreach> |
|
|
|
</insert> |
|
|
|
<!--更新part2统计数据--> |
|
|
|
<update id="updatePart2" parameterType="map"> |
|
|
|
UPDATE statistics |
|
|
|
SET |
|
|
|
|
|
|
|
recharge = #{recharge}, |
|
|
|
money = #{money}, |
|
|
|
consume_permanent = #{consumePermanent}, |
|
|
|
consume_free_june = #{consumeFreeJune}, |
|
|
|
consume_free_december = #{consumeFreeDecember}, |
|
|
|
consume_task = #{consumeTask}, |
|
|
|
refund_permanent = #{refundPermanent}, |
|
|
|
refund_free_june = #{refundFreeJune}, |
|
|
|
refund_free_december = #{refundFreeDecember}, |
|
|
|
refund_task = #{refundTask}, |
|
|
|
recharge_num = #{rechargeNum}, |
|
|
|
first_recharge = #{firstRecharge} |
|
|
|
<if test="updateTime != null"> |
|
|
|
,update_time = #{updateTime} |
|
|
|
</if> |
|
|
|
WHERE market = #{market} and current_datetime = #{currentDatetime} |
|
|
|
</update> |
|
|
|
<!--更新part1统计数据--> |
|
|
|
<update id="updatePart1" parameterType="map"> |
|
|
|
update statistics |
|
|
|
SET |
|
|
|
current_gold = #{currentGold}, |
|
|
|
daily_change = #{dailyChange}, |
|
|
|
current_permanent = #{currentPermanent}, |
|
|
|
current_free_june = #{currentFreeJune}, |
|
|
|
current_free_december = #{currentFreeDecember}, |
|
|
|
current_task = #{currentTask} |
|
|
|
WHERE market = #{market} and current_datetime = #{currentDatetime} |
|
|
|
</update> |
|
|
|
<!--更新年度统计数据--> |
|
|
|
<update id="updateYear" parameterType="map"> |
|
|
|
update statistics |
|
|
|
SET |
|
|
|
yearly_recharge=#{yearlyRecharge}, |
|
|
|
yearly_money=#{yearlyMoney}, |
|
|
|
yearly_consume=#{yearlyConsume}, |
|
|
|
yearly_refund=#{yearlyRefund}, |
|
|
|
yearly_recharge_num=#{yearlyRechargeNum} |
|
|
|
WHERE market = #{market} and current_datetime = #{currentDatetime} |
|
|
|
</update> |
|
|
|
|
|
|
|
<!--根据地区、审核状态、起止时间查询订单表数据--> |
|
|
|
<select id="findByMarketAndAuditStatus" |
|
|
|
resultType="com.example.demo.domain.entity.UserGoldRecord"> |
|
|
|
SELECT u.market, ugr.* |
|
|
|
FROM user_gold_record ugr |
|
|
|
INNER JOIN user u ON ugr.jwcode = u.jwcode |
|
|
|
WHERE u.market = #{market} |
|
|
|
AND ugr.audit_status IN |
|
|
|
<foreach item="status" collection="auditStatusList" open="(" separator="," close=")"> |
|
|
|
#{status} |
|
|
|
</foreach> |
|
|
|
and ugr.flag=1 |
|
|
|
AND ugr.create_time BETWEEN #{startTime} AND #{endTime} |
|
|
|
</select> |
|
|
|
<!-- 计算该天充值人数--> |
|
|
|
<select id="countRechargeNum" resultType="java.lang.Integer"> |
|
|
|
SELECT COUNT(DISTINCT ugr.jwcode) |
|
|
@ -206,17 +94,7 @@ |
|
|
|
AND ugr.audit_status IN (1,3) |
|
|
|
AND ugr.audit_time BETWEEN #{startTime} AND #{endTime} |
|
|
|
</select> |
|
|
|
<!--计算该天首充人数--> |
|
|
|
<select id="countFirstRecharge" resultType="java.lang.Integer"> |
|
|
|
SELECT COUNT(DISTINCT ugr.jwcode) |
|
|
|
FROM user_gold_record ugr |
|
|
|
INNER JOIN user u ON ugr.jwcode = u.jwcode |
|
|
|
WHERE u.market = #{market} |
|
|
|
AND ugr.type=0 |
|
|
|
AND ugr.audit_status IN (1,3) |
|
|
|
AND ugr.audit_time BETWEEN #{startTime} AND #{endTime} |
|
|
|
AND u.first_recharge = #{startTime} |
|
|
|
</select> |
|
|
|
|
|
|
|
<!--获取某地区某时间所在日期的数据(仅一条)--> |
|
|
|
<select id="selectByMarketAndDate" resultType="com.example.demo.domain.entity.Statistics"> |
|
|
|
SELECT * |
|
|
@ -225,39 +103,6 @@ |
|
|
|
AND current_datetime BETWEEN #{startDate} AND #{endDate} |
|
|
|
|
|
|
|
</select> |
|
|
|
<select id="sumCurrentPermanentGold" resultType="java.lang.Integer"> |
|
|
|
SELECT COALESCE(SUM(current_permanent_gold), 0) |
|
|
|
FROM user |
|
|
|
WHERE user.market = #{market} |
|
|
|
</select> |
|
|
|
<select id="sumCurrentFreeJune" resultType="java.lang.Integer"> |
|
|
|
SELECT COALESCE(SUM(u.current_free_june),0) |
|
|
|
FROM user as u |
|
|
|
WHERE u.market = #{market} |
|
|
|
</select> |
|
|
|
<select id="sumCurrentFreeDecember" resultType="java.lang.Integer"> |
|
|
|
SELECT COALESCE(SUM(u.current_free_december),0) |
|
|
|
FROM user as u |
|
|
|
WHERE u.market = #{market} |
|
|
|
</select> |
|
|
|
<select id="sumCurrentTaskGold" resultType="java.lang.Integer"> |
|
|
|
SELECT COALESCE(SUM(u.current_task_gold),0) |
|
|
|
FROM user as u |
|
|
|
WHERE u.market = #{market} |
|
|
|
</select> |
|
|
|
<select id="selectSumByMarketAndDate" resultType="com.example.demo.domain.entity.Statistics"> |
|
|
|
select sum(s.recharge) as recharge, |
|
|
|
sum(s.money) as money, |
|
|
|
sum(s.consume_permanent) as consume_permanent, |
|
|
|
sum(s.consume_free_june) as consume_free_june, |
|
|
|
sum(s.consume_free_december) as consume_free_december, |
|
|
|
sum(s.consume_task) as consume_task, |
|
|
|
sum(s.recharge_num) as recharge_num |
|
|
|
from statistics as s |
|
|
|
WHERE market = #{market} |
|
|
|
AND current_datetime >= #{startDate} |
|
|
|
AND current_datetime <= #{endDate} |
|
|
|
</select> |
|
|
|
<select id="selectByMarketsAndDate" resultType="com.example.demo.domain.entity.Statistics"> |
|
|
|
SELECT * FROM statistics |
|
|
|
WHERE market IN |
|
|
@ -268,7 +113,7 @@ |
|
|
|
</select> |
|
|
|
<select id="listPart1All" resultType="com.example.demo.domain.entity.Statistics"> |
|
|
|
SELECT |
|
|
|
market, |
|
|
|
m.name as market, |
|
|
|
#{today} AS current_datetime, |
|
|
|
COALESCE(SUM(current_permanent_gold),0) + |
|
|
|
COALESCE(SUM(current_free_june),0) + |
|
|
@ -295,12 +140,14 @@ |
|
|
|
), 0 |
|
|
|
) AS daily_change |
|
|
|
FROM user u |
|
|
|
left join market m on u.market=m.id |
|
|
|
where m.name IS NOT NULL |
|
|
|
GROUP BY market |
|
|
|
</select> |
|
|
|
<select id="listPart2All" resultType="com.example.demo.domain.entity.Statistics"> |
|
|
|
SELECT |
|
|
|
u.market, |
|
|
|
#{today} AS current_datetime, |
|
|
|
m.name as market, |
|
|
|
'2025-08-04' 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, |
|
|
@ -313,61 +160,66 @@ |
|
|
|
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 |
|
|
|
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 |
|
|
|
left join market m on u.market=m.id |
|
|
|
WHERE ugr.audit_status IN (1,3) |
|
|
|
AND ugr.flag = 1 |
|
|
|
AND ugr.create_time BETWEEN #{start} AND #{end} |
|
|
|
AND m.name IS NOT NULL |
|
|
|
GROUP BY u.market |
|
|
|
</select> |
|
|
|
<select id="listYearAll" resultType="com.example.demo.domain.entity.Statistics"> |
|
|
|
SELECT market, |
|
|
|
COALESCE(SUM(recharge),0) AS yearly_recharge, |
|
|
|
|
|
|
|
SELECT m.name as market, |
|
|
|
COALESCE(SUM(s.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} |
|
|
|
COALESCE(SUM(s.money),0) AS yearly_money, |
|
|
|
COALESCE(SUM(s.consume_permanent+s.consume_free_june+s.consume_free_december+s.consume_task),0) AS yearly_consume, |
|
|
|
COALESCE(SUM(s.refund_permanent+s.refund_free_june+s.refund_free_december+s.refund_task),0) AS yearly_refund, |
|
|
|
COALESCE(SUM(s.recharge_num),0) AS yearly_recharge_num |
|
|
|
FROM statistics s |
|
|
|
left join market m on s.market=m.id |
|
|
|
WHERE current_datetime BETWEEN #{yearStart} AND #{end} AND m.name IS NOT NULL |
|
|
|
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 |
|
|
|
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, |
|
|
|
-- 生成 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 |
|
|
|
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 |
|
|
|
JOIN user u ON ugr.jwcode = u.jwcode |
|
|
|
left 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 |
|
|
|
</select> |
|
|
|
|
|
|
|
|
|
|
|