package com.example.demo.mapper; import com.example.demo.domain.vo.Meium; 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.Param; import org.apache.ibatis.annotations.Select; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.Date; import java.util.List; @Mapper public interface StatisticsMapper { List getMeium(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime); //全年累计金币数 @Select("SELECT SUM(recharge_coin) / 100 AS rechargeSumCoin, " + " SUM(free_coin) / 100 AS freeSumCoin, " + " SUM(task_coin) / 100 AS taskSumCoin, " + " (SUM(recharge_coin) + SUM(free_coin) + SUM(task_coin))/ 100 AS totalSumCoin " + "FROM `detail_y` " + "WHERE update_type = '0' " + " AND create_time >= CONCAT(YEAR(CURDATE()), '-01-01') " + " AND create_time < NOW()") Statistics getTotalYearCoin(); //免费金币分类 @Select("SELECT SUM(free_6) / 100 AS free6SumCoin,SUM(free_12) / 100 AS free12SumCoin From user_gold") Statistics getFreeCoinTotal(); //昨日新增 @Select("SELECT SUM(recharge_coin) / 100 AS rechargeYesterdaySumCoin, " + " SUM(free_coin) / 100 AS freeYesterdaySumCoin, " + " SUM(task_coin) / 100 AS taskYesterdaySumCoin, " + " (SUM(recharge_coin) + SUM(free_coin) + SUM(task_coin))/ 100 AS totalYesterdaySumCoin " + "FROM `detail_y` " + "WHERE update_type = '0' " + " AND create_time >= CURDATE() - INTERVAL 1 DAY " + " AND create_time < CURDATE()") Statistics getYesterdayNewCoin(); //全年累计0人数 @Select("SELECT COUNT(DISTINCT jwcode) AS rechargeCount " + "FROM `detail_y` " + "WHERE update_type = '0' " + " AND create_time >= CONCAT(YEAR(CURDATE()), '-01-01')" + " AND create_time < NOW()") int getYearRechargeCount(); //这周0数量 @Select("SELECT COUNT(DISTINCT jwcode) AS rechargeCountThisWeek " + "FROM `detail_y` WHERE update_type = '0' AND YEARWEEK(create_time, 1) = YEARWEEK(CURDATE(), 1)") int getRechargeCountThisWeek(); //上周0数量 @Select("SELECT COUNT(DISTINCT jwcode) AS rechargeCountLastWeek " + "FROM `detail_y` WHERE update_type = '0' AND YEARWEEK(create_time, 1) = YEARWEEK(CURDATE() - INTERVAL 1 WEEK, 1)") int getRechargeCountLastWeek(); //今天的0数量 @Select("SELECT COUNT(DISTINCT jwcode) AS rechargeCountToday " + "FROM `detail_y` WHERE update_type = '0' AND create_time >= CURDATE()") int getRechargeCountToday(); //昨天的0数量 @Select("SELECT COUNT(DISTINCT jwcode) AS rechargeCountYesterday " + "FROM `detail_y` WHERE update_type = '0' AND create_time >=CURDATE() - INTERVAL 1 DAY AND create_time < CURDATE();") int getRechargeCountYesterday(); //昨日新增首充 @Select("SELECT COUNT(DISTINCT jwcode) AS firstRechargeCountYesterday "+ "FROM `detail_y` WHERE update_type = '0' AND create_time >=CURDATE() - INTERVAL 1 DAY AND create_time < CURDATE() AND first_recharge = 1") int getFirstRechargeCountYesterday(); //金币系统1 @Select("SELECT p.subjects AS subject, " + " d.consume_platform,"+ " SUM(d.recharge_coin) / 100 AS rechargeCoinSystemSum, " + " SUM(d.free_coin) / 100 AS freeCoinSystemSum, " + " SUM(d.task_coin) / 100 AS taskCoinSystemSum, " + " (SUM(d.recharge_coin) + SUM(d.free_coin) + SUM(d.task_coin))/ 100 AS totalCoinSystemSum " + "FROM detail_y d " + "JOIN product p ON d.product_id = p.product_id " + "WHERE d.update_type = '1' AND " + " d.consume_platform = '金币系统' " + "GROUP BY p.subjects ") List getCoinSystemSum(); //ERP1 @Select("SELECT p.subjects AS subject, " + " d.consume_platform,"+ " SUM(d.recharge_coin) / 100 AS rechargeERPSum, " + " SUM(d.free_coin) / 100 AS freeERPSum, " + " SUM(d.task_coin) / 100 AS taskERPSum, " + " (SUM(d.recharge_coin) + SUM(d.free_coin) + SUM(d.task_coin))/ 100 AS totalERPSum " + "FROM detail_y d " + "JOIN product p ON d.product_id = p.product_id " + "WHERE d.update_type = '1' AND " + " d.consume_platform = 'ERP系统' " + "GROUP BY p.subjects ") List getERPSum(); // //HomilyChart1 @Select("SELECT p.subjects AS subject, " + " d.consume_platform,"+ " SUM(d.recharge_coin) / 100 AS rechargeHomilyChartSum, " + " SUM(d.free_coin) / 100 AS freeHomilyChartSum, " + " SUM(d.task_coin) / 100 AS taskHomilyChartSum, " + " (SUM(d.recharge_coin) + SUM(d.free_coin) + SUM(d.task_coin)) / 100 AS totalHomilyChartSum " + "FROM detail_y d " + "JOIN product p ON d.product_id = p.product_id " + "WHERE d.update_type = '1' AND " + " d.consume_platform = 'HomilyChart' " + "GROUP BY p.subjects ") List getHomilyChartSum(); // //HomilyLink1 @Select("SELECT p.subjects AS subject, " + " d.consume_platform,"+ " SUM(d.recharge_coin) / 100 AS rechargeHomilyLinkSum, " + " SUM(d.free_coin) / 100 AS freeHomilyLinkSum, " + " SUM(d.task_coin) / 100 AS taskHomilyLinkSum, " + " (SUM(d.recharge_coin) + SUM(d.free_coin) + SUM(d.task_coin) / 100) AS totalHomilyLinkSum " + "FROM detail_y d " + "JOIN product p ON d.product_id = p.product_id " + "WHERE d.update_type = '1' AND " + " d.consume_platform = 'HomilyChart' " + "GROUP BY p.subjects ") List getHomilyLinkSum(); //--------------------------------------------------------------------------------------------// @Select({"SELECT today.rechargeSumCoin / 100 AS todayRecharge," , "yesterday.rechargeSumCoin / 100 AS yesterdayRecharge," , "today.freeSumCoin / 100 AS todayFree,", "yesterday.freeSumCoin / 100 AS yesterdayFree," , "today.taskSumCoin / 100 AS todayTask," , "yesterday.taskSumCoin / 100 AS HsterdayTask," , "(today.rechargeSumCoin + today.freeSumCoin + today.taskSumCoin) / 100 AS todayTotalCoin," , "(yesterday.rechargeSumCoin + yesterday.freeSumCoin + yesterday.taskSumCoin) / 100 AS yesterdayTotalCoin," , "((today.rechargeSumCoin + today.freeSumCoin + today.taskSumCoin) -(yesterday.rechargeSumCoin + yesterday.freeSumCoin + yesterday.taskSumCoin)) / 100 AS coinDifference" , "FROM (SELECT SUM(recharge_coin) AS rechargeSumCoin, SUM(free_coin) AS freeSumCoin, SUM(task_coin) AS taskSumCoin FROM detail_y 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_y WHERE DATE(create_time) <= CURDATE() - INTERVAL 1 DAY) AS yesterday"}) SumCoin getSumCoin(); @Select({"SELECT SUM(CASE WHEN update_type = '1' THEN recharge_coin ELSE 0 END) / 100 AS yearRecharge," , "SUM(CASE WHEN update_type = '1' THEN free_coin ELSE 0 END) / 100 AS yearFree," + " SUM(CASE WHEN update_type = '1' THEN task_coin ELSE 0 END) / 100 AS yearTask," + " SUM(CASE WHEN update_type = '1' THEN recharge_coin + free_coin + task_coin ELSE 0 END) / 100 AS yearConsumeCoin,", " SUM(CASE WHEN update_type = '2' THEN recharge_coin ELSE 0 END) / 100 AS totalRechargeRefund," , " SUM(CASE WHEN update_type = '2' THEN free_coin ELSE 0 END) / 100 AS totalFreeRefund," , " SUM(CASE WHEN update_type = '2' THEN task_coin ELSE 0 END) / 100 AS totalTaskRefund," , " SUM(CASE WHEN update_type = '2' THEN recharge_coin + free_coin + task_coin ELSE 0 END) / 100 AS yearRefundCoin," , " SUM(CASE WHEN update_type = '1' THEN recharge_coin + free_coin + task_coin ELSE 0 END) / 100+SUM(CASE WHEN update_type = '2' THEN recharge_coin + free_coin + task_coin ELSE 0 END) / 100 AS yearsumCoin,", " SUM(CASE WHEN update_type IN ('1', '2') THEN recharge_coin ELSE 0 END) / 100 AS yearSumRechargeCoin,", " SUM(CASE WHEN update_type IN ('1', '2') THEN free_coin ELSE 0 END) / 100 AS yearSumFreeCoin,", " SUM(CASE WHEN update_type IN ('1', '2') THEN task_coin ELSE 0 END) / 100 AS yearSumTaskCoin", "FROM detail_y WHERE YEAR(create_time) = YEAR(CURRENT_DATE)" , " AND create_time <= NOW()"}) SumCoin getYearConsumeCoin(); @Select({ "SELECT IFNULL(SUM(CASE WHEN update_type = '1' THEN recharge_coin ELSE 0 END) / 100, 0) AS todayRecharge,", " IFNULL(SUM(CASE WHEN update_type = '1' THEN free_coin ELSE 0 END) / 100, 0) AS todayFree,", " IFNULL(SUM(CASE WHEN update_type = '1' THEN task_coin ELSE 0 END) / 100, 0) AS todayTask,", " IFNULL(SUM(CASE WHEN update_type = '1' THEN recharge_coin + free_coin + task_coin ELSE 0 END) / 100, 0) AS dayConsumeCoin,", " IFNULL(SUM(CASE WHEN update_type = '2' THEN recharge_coin ELSE 0 END) / 100, 0) AS total_recharge_refund,", " IFNULL(SUM(CASE WHEN update_type = '2' THEN free_coin ELSE 0 END) / 100, 0) AS total_free_refund,", " IFNULL(SUM(CASE WHEN update_type = '2' THEN task_coin ELSE 0 END) / 100, 0) AS total_task_refund,", " IFNULL(SUM(CASE WHEN update_type = '2' THEN recharge_coin + free_coin + task_coin ELSE 0 END) / 100, 0) AS dayRefundCoin,", " IFNULL(SUM(CASE WHEN update_type = '1' THEN recharge_coin + free_coin + task_coin ELSE 0 END) / 100, 0) +", " IFNULL(SUM(CASE WHEN update_type = '2' THEN recharge_coin + free_coin + task_coin ELSE 0 END) / 100, 0) AS daysumCoin", "FROM `detail_y` 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_y`" , // "WHERE create_time BETWEEN DATE_SUB(CURDATE(), INTERVAL 10 MONTH) AND CURDATE() AND update_type='0'" , // "GROUP BY DATE_FORMAT(create_time, '%Y-%m')" , // "ORDER BY DATE_FORMAT(create_time, '%Y-%m') DESC "}) // List getMediuPayCoin(); // 本年 ---0 // @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_y where datediff(create_time,#{searchStartTime})>=0 " + // "and datediff(create_time,#{searchEndTime})<=0 and update_type = '0'" + // "GROUP BY month ORDER BY month asc" // }) @Select({ "" }) List getMediuPayCoin(@Param("searchStartTime") Date StartTime, @Param("searchEndTime") Date searchEndTime); //本年--1 // @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_y where datediff(create_time,#{searchStartTime})>=0 " + // "and datediff(create_time,#{searchEndTime})<=0 and update_type = '1'" + // "GROUP BY month ORDER BY month asc" // }) @Select({ "" }) List getMediuConsumeCoin(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime); // 本月 ---0 @Select({"select DATE_FORMAT(create_time,'%Y-%m-%d') as day,sum(recharge_coin) / 100 AS rechargeSumCoin,sum(free_coin) / 100 as freeSumCoin ,sum(task_coin) / 100 as taskSumCoin " + "from detail_y where datediff(create_time,#{searchStartTime})>=0 " + "and datediff(create_time,#{searchEndTime})<=0 and update_type = 0 group by DATE_FORMAT(create_time,'%m-%d')" }) List getMediuPayCoinyue(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime); @Select({"select DATE_FORMAT(create_time,'%Y-%m-%d') as day,sum(recharge_coin) / 100 AS rechargeSumCoin,sum(free_coin) / 100 as freeSumCoin ,sum(task_coin) / 100 as taskSumCoin " + "from detail_y where datediff(create_time,#{searchStartTime})>=0 " + "and datediff(create_time,#{searchEndTime})<=0 and update_type = 1 group by DATE_FORMAT(create_time,'%m-%d')" }) List getMediuCounsumeCoinyue(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime); @Select({"SELECT DATE_FORMAT(create_time, '%Y-%m-%d') AS day,", "IFNULL(SUM(recharge_coin) / 100, 0) AS rechargeSumCoin,", "IFNULL(SUM(free_coin) / 100, 0) AS freeSumCoin,", "IFNULL(SUM(task_coin) / 100, 0) AS taskSumCoin", "FROM detail_y", "WHERE DATE(create_time) = #{searchEndTime}", "AND update_type = #{updateType}", "GROUP BY DATE_FORMAT(create_time, '%Y-%m-%d')" }) List getMediuPayCoinday(@Param("searchEndTime") Date searchEndTime, @Param("updateType") Integer updateType); @Select({"select DATE_FORMAT(create_time,'%Y-%m-%d') as day,sum(recharge_coin) AS rechargeSumCoin,sum(free_coin) as freeSumCoin ,sum(task_coin) as taskSumCoin " + "from detail_y where create_time=#{searchStartTime} and update_type = 1 group by DATE_FORMAT(create_time,'%m-%d')" }) List getMediuConsumeCoinday1(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime); @Select({ "SELECT DATE_FORMAT(create_time, '%Y-%m-%d') AS day,", "IFNULL(SUM(recharge_coin) / 100, 0) AS rechargeSumCoin,", "IFNULL(SUM(free_coin) / 100, 0) AS freeSumCoin,", "IFNULL(SUM(task_coin) / 100, 0) AS taskSumCoin", "FROM detail_y", "WHERE DATE(create_time) = #{searchEndTime}", "AND update_type = #{updateType}", "GROUP BY DATE_FORMAT(create_time, '%Y-%m-%d')" }) List getMediuConsumeCoinday(@Param("searchEndTime") Date searchEndTime, @Param("updateType") Integer updateType); //给定时间段--10 @Select({"select DATE_FORMAT(create_time,'%Y-%m-%d') as day,sum(recharge_coin) / 100 AS rechargeSumCoin,sum(free_coin) / 100 as freeSumCoin ,sum(task_coin) / 100 as taskSumCoin " + "from detail_y where recharge_coin>0 and datediff(create_time,#{searchStartTime})>=0 " + "and datediff(create_time,#{searchEndTime})<=0 and update_type = '0' group by DATE_FORMAT(create_time,'%m-%d')" }) List getMediuPayCoin1(SumCoin sumCoin); @Select({ "SELECT m.day,", " COALESCE(SUM(CASE WHEN d.update_type = '1' THEN d.recharge_coin ELSE 0 END) / 100, 0) AS rechargeSumCoin,", " COALESCE(SUM(CASE WHEN d.update_type = '1' THEN d.free_coin ELSE 0 END) / 100, 0) AS freeSumCoin,", " COALESCE(SUM(CASE WHEN d.update_type = '1' THEN d.task_coin ELSE 0 END) / 100, 0) AS taskSumCoin", "FROM (", " SELECT DATE_ADD(#{searchStartTime}, INTERVAL n DAY) AS day", " FROM (", " SELECT a.N + b.N * 10 AS n", " 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) a,", " (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) b", " ) numbers", " WHERE DATE_ADD(#{searchStartTime}, INTERVAL n DAY) <= #{searchEndTime}", ") m", "LEFT JOIN detail_y d ON DATE(d.create_time) = m.day AND d.update_type = '1'", "GROUP BY m.day", "ORDER BY m.day" }) List getMediuConsumeCoin2(SumCoin sumCoin); @Select({"SELECT today.jwcode," , "today.rechargeSumCoin / 100 AS todayRecharge," , "today.freeSumCoin / 100 AS todayFree,", "today.taskSumCoin / 100 AS todayTask," , "(today.rechargeSumCoin + today.freeSumCoin + today.taskSumCoin) / 100 AS todayTotalCoin" , "FROM (SELECT jwcode, SUM(recharge_coin) AS rechargeSumCoin, SUM(free_coin) AS freeSumCoin, SUM(task_coin) AS taskSumCoin FROM detail_y WHERE create_time <= CURRENT_TIMESTAMP) AS today" , "where jwcode=#{jwcode}"}) SumCoin getMess(Integer jwcode); @Select({"SELECT u.area " , " SUM(d.recharge_coin) / 100 AS totalRecharge," , " SUM(d.free_coin) / 100 AS totalFree," , " SUM(d.task_coin) / 100 AS totalTask," , " (SUM(d.recharge_coin) + SUM(d.free_coin) + SUM(d.task_coin) / 100) AS todayTotalCoin" , "FROM detail_y d" , "INNER JOIN activity a ON d.activity_id = a.activity_id" , "INNER JOIN user u ON a.user_id = u.user_id" , "where d.update_type='0'", "GROUP BY u.area" , "ORDER BY u.area ASC " }) List getMediumAreaPay(); @Select({"SELECT u.area, " , " SUM(d.recharge_coin) / 100 AS totalRecharge," , " SUM(d.free_coin) / 100 AS totalFree," , " SUM(d.task_coin) / 100 AS totalTask," , " (SUM(d.recharge_coin) + SUM(d.free_coin) + SUM(d.task_coin) / 100) AS todayTotalCoin" , "FROM detail_y d" , "INNER JOIN user u ON u.jwcode = d.jwcode", "WHERE d.update_type = '1'", "GROUP BY u.area", "ORDER BY u.area ASC" }) List getMediumAreaConsume(); @Select({ "SELECT m.week,", " COALESCE(SUM(CASE WHEN d.update_type = '1' THEN d.recharge_coin ELSE 0 END) / 100 0) AS xrechargeSumCoin,", " COALESCE(SUM(CASE WHEN d.update_type = '1' THEN d.free_coin ELSE 0 END) / 100, 0) AS xfreeSumCoin,", " COALESCE(SUM(CASE WHEN d.update_type = '1' THEN d.task_coin ELSE 0 END) / 100, 0) AS xtaskSumCoin", "FROM (", " SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL n WEEK), '%Y-%u') AS week", " 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", " ) AS numbers", ") AS m", "LEFT JOIN detail_y d ON DATE_FORMAT(d.create_time, '%Y-%u') = m.week", "", "AND d.create_time BETWEEN #{searchStartTime} AND #{searchEndTime}", "", "GROUP BY m.week", "ORDER BY m.week DESC" }) List getMediu2(); @Select({ "" }) List getBuyAndFree(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime); @Select({ "" }) List getBuyAndRecharge(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime); @Select({ "" }) List getBuyAndTask(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime); @Select({ "" }) List getBuy(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime); @Select({ "" }) List getPayAndFree(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime); @Select({ "" }) List getPayAndRecharge(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime); @Select({ "" }) List getPayAndTask(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime); @Select({ "" }) List getPay(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime); }