You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

269 lines
14 KiB

package com.example.demo.mapper;
import com.example.demo.domain.vo.Statistics;
import com.example.demo.domain.vo.SumCoin;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface StatisticsMapper {
//全年累计金币数
@Select("SELECT SUM(recharge_coin) AS rechargeSumCoin, " +
" SUM(free_coin) AS freeSumCoin, " +
" SUM(task_coin) AS taskSumCoin, " +
" (SUM(recharge_coin) + SUM(free_coin) + SUM(task_coin)) AS totalSumCoin " +
"FROM `detail` " +
"WHERE update_type = '充值' " +
" AND create_time >= '2024-01-01' " +
" AND create_time < NOW()")
Statistics getTotalYearCoin();
//昨日新增
@Select("SELECT SUM(recharge_coin) AS rechargeYesterdaySumCoin, " +
" SUM(free_coin) AS freeYesterdaySumCoin, " +
" SUM(task_coin) AS taskYesterdaySumCoin, " +
" (SUM(recharge_coin) + SUM(free_coin) + SUM(task_coin)) AS totalYesterdaySumCoin " +
"FROM `detail` " +
"WHERE update_type = '充值' " +
" AND create_time >= CURDATE() - INTERVAL 1 DAY " +
" AND create_time < CURDATE()")
Statistics getYesterdayNewCoin();
//全年累计充值人数
@Select("SELECT COUNT(jwcode) AS rechargeCount " +
"FROM `detail` " +
"WHERE update_type = '充值' " +
" AND create_time >= '2024-01-01' " +
" AND create_time < NOW()")
int getYearRechargeCount();
//这周充值数量
@Select("SELECT COUNT(jwcode) AS rechargeCountThisWeek " +
"FROM `detail` WHERE update_type = '充值' AND YEARWEEK(create_time, 1) = YEARWEEK(CURDATE(), 1)")
int getRechargeCountThisWeek();
//上周充值数量
@Select("SELECT COUNT(jwcode) AS rechargeCountLastWeek " +
"FROM `detail` WHERE update_type = '充值' AND YEARWEEK(create_time, 1) = YEARWEEK(CURDATE() - INTERVAL 1 WEEK, 1)")
int getRechargeCountLastWeek();
//今天的充值数量
@Select("SELECT COUNT(jwcode) AS rechargeCountToday " +
"FROM `detail` WHERE update_type = '充值' AND create_time >= CURDATE()")
int getRechargeCountToday();
//昨天的充值数量
@Select("SELECT COUNT(jwcode) AS rechargeCountYesterday " +
"FROM `detail` WHERE update_type = '充值' AND create_time >=CURDATE() - INTERVAL 1 DAY AND create_time < CURDATE();")
int getRechargeCountYesterday();
//昨日新增首充
@Select("SELECT COUNT(jwcode) AS firstRechargeCountYesterday "+
"FROM `detail` WHERE update_type = '充值' AND create_time >=CURDATE() - INTERVAL 1 DAY AND create_time < CURDATE() AND first_recharge = 1")
int getFirstRechargeCountYesterday();
//金币系统消费
@Select("SELECT p.subjects AS subject, " +
" d.consume_platform,"+
" SUM(d.recharge_coin) AS rechargeCoinSystemSum, " +
" SUM(d.free_coin) AS freeCoinSystemSum, " +
" SUM(d.task_coin) AS taskCoinSystemSum, " +
" (SUM(d.recharge_coin) + SUM(d.free_coin) + SUM(d.task_coin)) AS totalCoinSystemSum " +
"FROM detail d " +
"JOIN product p ON d.product_id = p.product_id " +
"WHERE d.update_type = '消费' AND " +
" d.consume_platform = '金币系统' " +
"GROUP BY p.subjects ")
List<Statistics> getCoinSystemSum();
//ERP消费
@Select("SELECT p.subjects AS subject, " +
" d.consume_platform,"+
" SUM(d.recharge_coin) AS rechargeERPSum, " +
" SUM(d.free_coin) AS freeERPSum, " +
" SUM(d.task_coin) AS taskERPSum, " +
" (SUM(d.recharge_coin) + SUM(d.free_coin) + SUM(d.task_coin)) AS totalERPSum " +
"FROM detail d " +
"JOIN product p ON d.product_id = p.product_id " +
"WHERE d.update_type = '消费' AND " +
" d.consume_platform = 'ERP系统' " +
"GROUP BY p.subjects ")
List<Statistics> getERPSum();
// //HomilyChart消费
@Select("SELECT p.subjects AS subject, " +
" d.consume_platform,"+
" SUM(d.recharge_coin) AS rechargeHomilyChartSum, " +
" SUM(d.free_coin) AS freeHomilyChartSum, " +
" SUM(d.task_coin) AS taskHomilyChartSum, " +
" (SUM(d.recharge_coin) + SUM(d.free_coin) + SUM(d.task_coin)) AS totalHomilyChartSum " +
"FROM detail d " +
"JOIN product p ON d.product_id = p.product_id " +
"WHERE d.update_type = '消费' AND " +
" d.consume_platform = 'HomilyChart' " +
"GROUP BY p.subjects ")
List<Statistics> getHomilyChartSum();
// //HomilyLink消费
@Select("SELECT p.subjects AS subject, " +
" d.consume_platform,"+
" SUM(d.recharge_coin) AS rechargeHomilyLinkSum, " +
" SUM(d.free_coin) AS freeHomilyLinkSum, " +
" SUM(d.task_coin) AS taskHomilyLinkSum, " +
" (SUM(d.recharge_coin) + SUM(d.free_coin) + SUM(d.task_coin)) AS totalHomilyLinkSum " +
"FROM detail d " +
"JOIN product p ON d.product_id = p.product_id " +
"WHERE d.update_type = '消费' AND " +
" d.consume_platform = 'HomilyChart' " +
"GROUP BY p.subjects ")
List<Statistics> getHomilyLinkSum();
//--------------------------------------------------------------------------------------------//
@Select({"SELECT today.rechargeSumCoin AS todayRecharge," ,
"yesterday.rechargeSumCoin AS yesterdayRecharge," ,
"today.freeSumCoin AS todayFree,",
"yesterday.freeSumCoin AS yesterdayFree," ,
"today.taskSumCoin AS todayTask," ,
"yesterday.taskSumCoin AS yesterdayTask," ,
"(today.rechargeSumCoin + today.freeSumCoin + today.taskSumCoin) AS todayTotalCoin," ,
"(yesterday.rechargeSumCoin + yesterday.freeSumCoin + yesterday.taskSumCoin) AS yesterdayTotalCoin," ,
"((today.rechargeSumCoin + today.freeSumCoin + today.taskSumCoin) -(yesterday.rechargeSumCoin + yesterday.freeSumCoin + yesterday.taskSumCoin)) AS coinDifference" ,
"FROM (SELECT SUM(recharge_coin) AS rechargeSumCoin, SUM(free_coin) AS freeSumCoin, SUM(task_coin) AS taskSumCoin FROM detail WHERE create_time <= CURRENT_TIMESTAMP) AS today" ,
"JOIN ( SELECT SUM(recharge_coin) AS rechargeSumCoin,SUM(free_coin) AS freeSumCoin, SUM(task_coin) AS taskSumCoin FROM detail WHERE DATE(create_time) <= CURDATE() - INTERVAL 1 DAY) AS yesterday"})
SumCoin getSumCoin();
@Select({"SELECT SUM(CASE WHEN update_type = '消费' THEN recharge_coin ELSE 0 END) AS yearRecharge," ,
"SUM(CASE WHEN update_type = '消费' THEN free_coin ELSE 0 END) AS yearFree," +
" SUM(CASE WHEN update_type = '消费' THEN task_coin ELSE 0 END) AS yearTask," +
" SUM(CASE WHEN update_type = '消费' THEN recharge_coin + free_coin + task_coin ELSE 0 END) AS yearConsumeCoin,",
" SUM(CASE WHEN update_type = '退款' THEN recharge_coin ELSE 0 END) AS totalRechargeRefund," ,
" SUM(CASE WHEN update_type = '退款' THEN free_coin ELSE 0 END) AS totalFreeRefund," ,
" SUM(CASE WHEN update_type = '退款' THEN task_coin ELSE 0 END) AS totalTaskRefund," ,
" SUM(CASE WHEN update_type = '退款' THEN recharge_coin + free_coin + task_coin ELSE 0 END) AS yearRefundCoin," ,
" SUM(CASE WHEN update_type = '消费' THEN recharge_coin + free_coin + task_coin ELSE 0 END)+SUM(CASE WHEN update_type = '退款' THEN recharge_coin + free_coin + task_coin ELSE 0 END) AS yearsumCoin,",
" SUM(CASE WHEN update_type IN ('消费', '退款') THEN recharge_coin ELSE 0 END) AS yearSumRechargeCoin,",
" SUM(CASE WHEN update_type IN ('消费', '退款') THEN free_coin ELSE 0 END) AS yearSumFreeCoin,",
" SUM(CASE WHEN update_type IN ('消费', '退款') THEN task_coin ELSE 0 END) AS yearSumTaskCoin",
"FROM `detail`WHERE YEAR(create_time) = YEAR(CURRENT_DATE)" ,
" AND create_time <= NOW()"})
SumCoin getYearConsumeCoin();
@Select({"SELECT SUM(CASE WHEN update_type = '消费' THEN recharge_coin ELSE 0 END) AS todayRecharge," ,
"SUM(CASE WHEN update_type = '消费' THEN free_coin ELSE 0 END) AS todayFree," +
" SUM(CASE WHEN update_type = '消费' THEN task_coin ELSE 0 END) AS todayTask," +
" SUM(CASE WHEN update_type = '消费' THEN recharge_coin + free_coin + task_coin ELSE 0 END) AS dayConsumeCoin,",
" SUM(CASE WHEN update_type = '退款' THEN recharge_coin ELSE 0 END) AS total_recharge_refund," ,
" SUM(CASE WHEN update_type = '退款' THEN free_coin ELSE 0 END) AS total_free_refund," ,
" SUM(CASE WHEN update_type = '退款' THEN task_coin ELSE 0 END) AS total_task_refund," ,
" SUM(CASE WHEN update_type = '退款' THEN recharge_coin + free_coin + task_coin ELSE 0 END) AS dayRefundCoin," ,
" SUM(CASE WHEN update_type = '消费' THEN recharge_coin + free_coin + task_coin ELSE 0 END)+SUM(CASE WHEN update_type = '退款' THEN recharge_coin + free_coin + task_coin ELSE 0 END) AS daysumCoin",
"FROM `detail` WHERE DATE(create_time) = CURDATE() - INTERVAL 1 DAY"})
SumCoin getDayConsumeCoin();
// @Select({"SELECT DATE_FORMAT(create_time, '%Y-%m') AS month," ,
// " SUM(recharge_coin) AS rechargeSumCoin," ,
// " SUM(free_coin) AS freeSumCoin,",
// " SUM(task_coin) AS taskSumCoin" ,
// "FROM `detail`" ,
// "WHERE create_time BETWEEN DATE_SUB(CURDATE(), INTERVAL 10 MONTH) AND CURDATE() AND update_type='充值'" ,
// "GROUP BY DATE_FORMAT(create_time, '%Y-%m')" ,
// "ORDER BY DATE_FORMAT(create_time, '%Y-%m') DESC "})
// List<SumCoin> getMediuPayCoin();
@Select({
"SELECT m.month,",
" COALESCE(SUM(d.recharge_coin), 0) AS rechargeSumCoin,",
" COALESCE(SUM(d.free_coin), 0) AS freeSumCoin,",
" COALESCE(SUM(d.task_coin), 0) AS taskSumCoin",
"FROM (",
" SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL n MONTH), '%Y-%m') AS month",
" FROM (",
" SELECT 0 AS n 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 UNION ALL SELECT 10",
" ) AS numbers",
") AS m",
"LEFT JOIN detail d ON DATE_FORMAT(d.create_time, '%Y-%m') = m.month AND d.update_type = '充值'",
"GROUP BY m.month",
"ORDER BY m.month DESC"
})
List<SumCoin> getMediuPayCoin();
// @Select({"SELECT DATE_FORMAT(create_time, '%Y-%m') AS month," ,
// " SUM(recharge_coin) AS rechargeSumCoin," ,
// " SUM(free_coin) AS freeSumCoin,",
// " SUM(task_coin) AS taskSumCoin" ,
// "FROM `detail`" ,
// "WHERE create_time BETWEEN DATE_SUB(CURDATE(), INTERVAL 10 MONTH) AND CURDATE() AND update_type='消费'" ,
// "GROUP BY DATE_FORMAT(create_time, '%Y-%m')" ,
// "ORDER BY DATE_FORMAT(create_time, '%Y-%m') DESC "})
// List<SumCoin> getMediuConsumeCoin();
@Select({
"SELECT m.month,",
" COALESCE(SUM(d.recharge_coin), 0) AS rechargeSumCoin,",
" COALESCE(SUM(d.free_coin), 0) AS freeSumCoin,",
" COALESCE(SUM(d.task_coin), 0) AS taskSumCoin",
"FROM (",
" SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL n MONTH), '%Y-%m') AS month",
" FROM (",
" SELECT 0 AS n 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 UNION ALL SELECT 10",
" ) AS numbers",
") AS m",
"LEFT JOIN detail d ON DATE_FORMAT(d.create_time, '%Y-%m') = m.month AND d.update_type = '消费'",
"GROUP BY m.month",
"ORDER BY m.month DESC"
})
List<SumCoin> getMediuConsumeCoin();
@Select({"SELECT today.jwcode," ,
"today.rechargeSumCoin AS todayRecharge," ,
"today.freeSumCoin AS todayFree,",
"today.taskSumCoin AS todayTask," ,
"(today.rechargeSumCoin + today.freeSumCoin + today.taskSumCoin) AS todayTotalCoin" ,
"FROM (SELECT jwcode, SUM(recharge_coin) AS rechargeSumCoin, SUM(free_coin) AS freeSumCoin, SUM(task_coin) AS taskSumCoin FROM detail WHERE create_time <= CURRENT_TIMESTAMP) AS today" ,
"where jwcode=#{jwcode}"})
SumCoin getMess(Integer jwcode);
@Select({"SELECT ad.area," ,
" SUM(d.recharge_coin) AS totalRecharge," ,
" SUM(d.free_coin) AS totalFree," ,
" SUM(d.task_coin) AS totalTask," ,
" (SUM(d.recharge_coin) + SUM(d.free_coin) + SUM(d.task_coin)) AS todayTotalCoin" ,
"FROM detail d" ,
"INNER JOIN activity a ON d.activity_id = a.activity_id" ,
"INNER JOIN admin ad ON a.admin_id = ad.admin_id" ,
"where d.update_type='充值'",
"GROUP BY ad.area" ,
"ORDER BY ad.area ASC "
})
List<SumCoin> getMediumAreaPay();
@Select({"SELECT ad.area," ,
" SUM(d.recharge_coin) AS totalRecharge," ,
" SUM(d.free_coin) AS totalFree," ,
" SUM(d.task_coin) AS totalTask," ,
" (SUM(d.recharge_coin) + SUM(d.free_coin) + SUM(d.task_coin)) AS todayTotalCoin" ,
"FROM detail d" ,
"INNER JOIN admin ad ON ad.admin_id = d.admin_id",
"WHERE d.update_type = '消费'",
"GROUP BY ad.area",
"ORDER BY ad.area ASC"
})
List<SumCoin> getMediumAreaConsume();
}