|
|
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();
}
|