金币系统后端
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.

633 lines
35 KiB

5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
  1. package com.example.demo.mapper;
  2. import com.example.demo.domain.vo.Meium;
  3. import com.example.demo.domain.vo.Statistics;
  4. import com.example.demo.domain.vo.SumCoin;
  5. import org.apache.ibatis.annotations.Mapper;
  6. import org.apache.ibatis.annotations.Param;
  7. import org.apache.ibatis.annotations.Select;
  8. import java.util.Date;
  9. import java.util.List;
  10. @Mapper
  11. public interface StatisticsMapper {
  12. //全年累计金币数
  13. @Select("SELECT SUM(recharge_coin) AS rechargeSumCoin, " +
  14. " SUM(free_coin) AS freeSumCoin, " +
  15. " SUM(task_coin) AS taskSumCoin, " +
  16. " (SUM(recharge_coin) + SUM(free_coin) + SUM(task_coin)) AS totalSumCoin " +
  17. "FROM `detail` " +
  18. "WHERE update_type = '充值' " +
  19. " AND create_time >= '2024-01-01' " +
  20. " AND create_time < NOW()")
  21. Statistics getTotalYearCoin();
  22. //昨日新增
  23. @Select("SELECT SUM(recharge_coin) AS rechargeYesterdaySumCoin, " +
  24. " SUM(free_coin) AS freeYesterdaySumCoin, " +
  25. " SUM(task_coin) AS taskYesterdaySumCoin, " +
  26. " (SUM(recharge_coin) + SUM(free_coin) + SUM(task_coin)) AS totalYesterdaySumCoin " +
  27. "FROM `detail` " +
  28. "WHERE update_type = '充值' " +
  29. " AND create_time >= CURDATE() - INTERVAL 1 DAY " +
  30. " AND create_time < CURDATE()")
  31. Statistics getYesterdayNewCoin();
  32. //全年累计充值人数
  33. @Select("SELECT COUNT(jwcode) AS rechargeCount " +
  34. "FROM `detail` " +
  35. "WHERE update_type = '充值' " +
  36. " AND create_time >= '2024-01-01' " +
  37. " AND create_time < NOW()")
  38. int getYearRechargeCount();
  39. //这周充值数量
  40. @Select("SELECT COUNT(jwcode) AS rechargeCountThisWeek " +
  41. "FROM `detail` WHERE update_type = '充值' AND YEARWEEK(create_time, 1) = YEARWEEK(CURDATE(), 1)")
  42. int getRechargeCountThisWeek();
  43. //上周充值数量
  44. @Select("SELECT COUNT(jwcode) AS rechargeCountLastWeek " +
  45. "FROM `detail` WHERE update_type = '充值' AND YEARWEEK(create_time, 1) = YEARWEEK(CURDATE() - INTERVAL 1 WEEK, 1)")
  46. int getRechargeCountLastWeek();
  47. //今天的充值数量
  48. @Select("SELECT COUNT(jwcode) AS rechargeCountToday " +
  49. "FROM `detail` WHERE update_type = '充值' AND create_time >= CURDATE()")
  50. int getRechargeCountToday();
  51. //昨天的充值数量
  52. @Select("SELECT COUNT(jwcode) AS rechargeCountYesterday " +
  53. "FROM `detail` WHERE update_type = '充值' AND create_time >=CURDATE() - INTERVAL 1 DAY AND create_time < CURDATE();")
  54. int getRechargeCountYesterday();
  55. //昨日新增首充
  56. @Select("SELECT COUNT(jwcode) AS firstRechargeCountYesterday "+
  57. "FROM `detail` WHERE update_type = '充值' AND create_time >=CURDATE() - INTERVAL 1 DAY AND create_time < CURDATE() AND first_recharge = 1")
  58. int getFirstRechargeCountYesterday();
  59. //金币系统消费
  60. @Select("SELECT p.subjects AS subject, " +
  61. " d.consume_platform,"+
  62. " SUM(d.recharge_coin) AS rechargeCoinSystemSum, " +
  63. " SUM(d.free_coin) AS freeCoinSystemSum, " +
  64. " SUM(d.task_coin) AS taskCoinSystemSum, " +
  65. " (SUM(d.recharge_coin) + SUM(d.free_coin) + SUM(d.task_coin)) AS totalCoinSystemSum " +
  66. "FROM detail d " +
  67. "JOIN product p ON d.product_id = p.product_id " +
  68. "WHERE d.update_type = '消费' AND " +
  69. " d.consume_platform = '金币系统' " +
  70. "GROUP BY p.subjects ")
  71. List<Statistics> getCoinSystemSum();
  72. //ERP消费
  73. @Select("SELECT p.subjects AS subject, " +
  74. " d.consume_platform,"+
  75. " SUM(d.recharge_coin) AS rechargeERPSum, " +
  76. " SUM(d.free_coin) AS freeERPSum, " +
  77. " SUM(d.task_coin) AS taskERPSum, " +
  78. " (SUM(d.recharge_coin) + SUM(d.free_coin) + SUM(d.task_coin)) AS totalERPSum " +
  79. "FROM detail d " +
  80. "JOIN product p ON d.product_id = p.product_id " +
  81. "WHERE d.update_type = '消费' AND " +
  82. " d.consume_platform = 'ERP系统' " +
  83. "GROUP BY p.subjects ")
  84. List<Statistics> getERPSum();
  85. // //HomilyChart消费
  86. @Select("SELECT p.subjects AS subject, " +
  87. " d.consume_platform,"+
  88. " SUM(d.recharge_coin) AS rechargeHomilyChartSum, " +
  89. " SUM(d.free_coin) AS freeHomilyChartSum, " +
  90. " SUM(d.task_coin) AS taskHomilyChartSum, " +
  91. " (SUM(d.recharge_coin) + SUM(d.free_coin) + SUM(d.task_coin)) AS totalHomilyChartSum " +
  92. "FROM detail d " +
  93. "JOIN product p ON d.product_id = p.product_id " +
  94. "WHERE d.update_type = '消费' AND " +
  95. " d.consume_platform = 'HomilyChart' " +
  96. "GROUP BY p.subjects ")
  97. List<Statistics> getHomilyChartSum();
  98. // //HomilyLink消费
  99. @Select("SELECT p.subjects AS subject, " +
  100. " d.consume_platform,"+
  101. " SUM(d.recharge_coin) AS rechargeHomilyLinkSum, " +
  102. " SUM(d.free_coin) AS freeHomilyLinkSum, " +
  103. " SUM(d.task_coin) AS taskHomilyLinkSum, " +
  104. " (SUM(d.recharge_coin) + SUM(d.free_coin) + SUM(d.task_coin)) AS totalHomilyLinkSum " +
  105. "FROM detail d " +
  106. "JOIN product p ON d.product_id = p.product_id " +
  107. "WHERE d.update_type = '消费' AND " +
  108. " d.consume_platform = 'HomilyChart' " +
  109. "GROUP BY p.subjects ")
  110. List<Statistics> getHomilyLinkSum();
  111. //--------------------------------------------------------------------------------------------//
  112. @Select({"SELECT today.rechargeSumCoin AS todayRecharge," ,
  113. "yesterday.rechargeSumCoin AS yesterdayRecharge," ,
  114. "today.freeSumCoin AS todayFree,",
  115. "yesterday.freeSumCoin AS yesterdayFree," ,
  116. "today.taskSumCoin AS todayTask," ,
  117. "yesterday.taskSumCoin AS yesterdayTask," ,
  118. "(today.rechargeSumCoin + today.freeSumCoin + today.taskSumCoin) AS todayTotalCoin," ,
  119. "(yesterday.rechargeSumCoin + yesterday.freeSumCoin + yesterday.taskSumCoin) AS yesterdayTotalCoin," ,
  120. "((today.rechargeSumCoin + today.freeSumCoin + today.taskSumCoin) -(yesterday.rechargeSumCoin + yesterday.freeSumCoin + yesterday.taskSumCoin)) AS coinDifference" ,
  121. "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" ,
  122. "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"})
  123. SumCoin getSumCoin();
  124. @Select({"SELECT SUM(CASE WHEN update_type = '消费' THEN recharge_coin ELSE 0 END) AS yearRecharge," ,
  125. "SUM(CASE WHEN update_type = '消费' THEN free_coin ELSE 0 END) AS yearFree," +
  126. " SUM(CASE WHEN update_type = '消费' THEN task_coin ELSE 0 END) AS yearTask," +
  127. " SUM(CASE WHEN update_type = '消费' THEN recharge_coin + free_coin + task_coin ELSE 0 END) AS yearConsumeCoin,",
  128. " SUM(CASE WHEN update_type = '退款' THEN recharge_coin ELSE 0 END) AS totalRechargeRefund," ,
  129. " SUM(CASE WHEN update_type = '退款' THEN free_coin ELSE 0 END) AS totalFreeRefund," ,
  130. " SUM(CASE WHEN update_type = '退款' THEN task_coin ELSE 0 END) AS totalTaskRefund," ,
  131. " SUM(CASE WHEN update_type = '退款' THEN recharge_coin + free_coin + task_coin ELSE 0 END) AS yearRefundCoin," ,
  132. " 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,",
  133. " SUM(CASE WHEN update_type IN ('消费', '退款') THEN recharge_coin ELSE 0 END) AS yearSumRechargeCoin,",
  134. " SUM(CASE WHEN update_type IN ('消费', '退款') THEN free_coin ELSE 0 END) AS yearSumFreeCoin,",
  135. " SUM(CASE WHEN update_type IN ('消费', '退款') THEN task_coin ELSE 0 END) AS yearSumTaskCoin",
  136. "FROM detail WHERE YEAR(create_time) = YEAR(CURRENT_DATE)" ,
  137. " AND create_time <= NOW()"})
  138. SumCoin getYearConsumeCoin();
  139. @Select({
  140. "SELECT IFNULL(SUM(CASE WHEN update_type = '消费' THEN recharge_coin ELSE 0 END), 0) AS todayRecharge,",
  141. " IFNULL(SUM(CASE WHEN update_type = '消费' THEN free_coin ELSE 0 END), 0) AS todayFree,",
  142. " IFNULL(SUM(CASE WHEN update_type = '消费' THEN task_coin ELSE 0 END), 0) AS todayTask,",
  143. " IFNULL(SUM(CASE WHEN update_type = '消费' THEN recharge_coin + free_coin + task_coin ELSE 0 END), 0) AS dayConsumeCoin,",
  144. " IFNULL(SUM(CASE WHEN update_type = '退款' THEN recharge_coin ELSE 0 END), 0) AS total_recharge_refund,",
  145. " IFNULL(SUM(CASE WHEN update_type = '退款' THEN free_coin ELSE 0 END), 0) AS total_free_refund,",
  146. " IFNULL(SUM(CASE WHEN update_type = '退款' THEN task_coin ELSE 0 END), 0) AS total_task_refund,",
  147. " IFNULL(SUM(CASE WHEN update_type = '退款' THEN recharge_coin + free_coin + task_coin ELSE 0 END), 0) AS dayRefundCoin,",
  148. " IFNULL(SUM(CASE WHEN update_type = '消费' THEN recharge_coin + free_coin + task_coin ELSE 0 END), 0) +",
  149. " IFNULL(SUM(CASE WHEN update_type = '退款' THEN recharge_coin + free_coin + task_coin ELSE 0 END), 0) AS daysumCoin",
  150. "FROM `detail` WHERE DATE(create_time) = CURDATE() - INTERVAL 1 DAY"
  151. })
  152. SumCoin getDayConsumeCoin();
  153. // @Select({"SELECT DATE_FORMAT(create_time, '%Y-%m') AS month," ,
  154. // " SUM(recharge_coin) AS rechargeSumCoin," ,
  155. // " SUM(free_coin) AS freeSumCoin,",
  156. // " SUM(task_coin) AS taskSumCoin" ,
  157. // "FROM `detail`" ,
  158. // "WHERE create_time BETWEEN DATE_SUB(CURDATE(), INTERVAL 10 MONTH) AND CURDATE() AND update_type='充值'" ,
  159. // "GROUP BY DATE_FORMAT(create_time, '%Y-%m')" ,
  160. // "ORDER BY DATE_FORMAT(create_time, '%Y-%m') DESC "})
  161. // List<SumCoin> getMediuPayCoin();
  162. // 本年 ---充值
  163. @Select({
  164. "SELECT m.month,",
  165. " COALESCE(SUM(d.recharge_coin), 0) AS rechargeSumCoin,",
  166. " COALESCE(SUM(d.free_coin), 0) AS freeSumCoin,",
  167. " COALESCE(SUM(d.task_coin), 0) AS taskSumCoin",
  168. "FROM (",
  169. " SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL n MONTH), '%Y-%m') AS month",
  170. " FROM (",
  171. " SELECT 0 AS n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3",
  172. " UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7",
  173. " UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10 UNION ALL SELECT 11",
  174. " ) AS numbers",
  175. ") AS m",
  176. "LEFT JOIN detail d ON DATE_FORMAT(d.create_time, '%Y-%m') = m.month AND d.update_type = '充值'",
  177. "GROUP BY m.month",
  178. "ORDER BY m.month DESC"
  179. })
  180. List<SumCoin> getMediuPayCoin();
  181. //本年--消费
  182. @Select({
  183. "SELECT m.month,",
  184. " COALESCE(SUM(d.recharge_coin), 0) AS rechargeSumCoin,",
  185. " COALESCE(SUM(d.free_coin), 0) AS freeSumCoin,",
  186. " COALESCE(SUM(d.task_coin), 0) AS taskSumCoin",
  187. "FROM (",
  188. " SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL n MONTH), '%Y-%m') AS month",
  189. " FROM (",
  190. " SELECT 0 AS n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3",
  191. " UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7",
  192. " UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10 UNION ALL SELECT 11",
  193. " ) AS numbers",
  194. ") AS m",
  195. "LEFT JOIN detail d ON DATE_FORMAT(d.create_time, '%Y-%m') = m.month AND d.update_type = '消费'",
  196. "GROUP BY m.month",
  197. "ORDER BY m.month DESC"
  198. })
  199. List<SumCoin> getMediuConsumeCoin();
  200. // 本月 ---充值
  201. // @Select({
  202. // "SELECT DATE(d.create_time) as day,",
  203. // " COALESCE(SUM(CASE WHEN d.update_type = '充值' THEN d.recharge_coin ELSE 0 END), 0) AS rechargeSumCoin,",
  204. // " COALESCE(SUM(CASE WHEN d.update_type = '充值' THEN d.free_coin ELSE 0 END), 0) AS freeSumCoin,",
  205. // " COALESCE(SUM(CASE WHEN d.update_type = '充值' THEN d.task_coin ELSE 0 END), 0) AS taskSumCoin",
  206. // "FROM detail d",
  207. // "WHERE d.update_type = '充值'",
  208. // " AND DATE(d.create_time) BETWEEN DATE(#{searchStartTime}) AND DATE(#{searchEndTime})",
  209. // "GROUP BY DATE(d.create_time)",
  210. // "ORDER BY DATE(d.create_time)"
  211. // })
  212. // List<SumCoin> getMediuPayCoinyue(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime);
  213. @Select({
  214. "SELECT m.day,",
  215. " COALESCE(SUM(CASE WHEN d.update_type = '充值' THEN d.recharge_coin ELSE 0 END), 0) AS rechargeSumCoin,",
  216. " COALESCE(SUM(CASE WHEN d.update_type = '充值' THEN d.free_coin ELSE 0 END), 0) AS freeSumCoin,",
  217. " COALESCE(SUM(CASE WHEN d.update_type = '充值' THEN d.task_coin ELSE 0 END), 0) AS taskSumCoin",
  218. "FROM (",
  219. " SELECT DATE_ADD(#{searchStartTime}, INTERVAL n DAY) AS day",
  220. " FROM (",
  221. " SELECT a.N + b.N * 10 AS n",
  222. " 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,",
  223. " (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",
  224. " ) numbers",
  225. " WHERE DATE_ADD(#{searchStartTime}, INTERVAL n DAY) <= #{searchEndTime}",
  226. ") m",
  227. "LEFT JOIN detail d ON DATE(d.create_time) = m.day AND d.update_type = '充值'",
  228. "GROUP BY m.day",
  229. "ORDER BY m.day"
  230. })
  231. List<SumCoin> getMediuPayCoinyue(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime);
  232. @Select({
  233. "SELECT m.day,",
  234. " COALESCE(SUM(CASE WHEN d.update_type = '消费' THEN d.recharge_coin ELSE 0 END), 0) AS rechargeSumCoin,",
  235. " COALESCE(SUM(CASE WHEN d.update_type = '消费' THEN d.free_coin ELSE 0 END), 0) AS freeSumCoin,",
  236. " COALESCE(SUM(CASE WHEN d.update_type = '消费' THEN d.task_coin ELSE 0 END), 0) AS taskSumCoin",
  237. "FROM (",
  238. " SELECT DATE_ADD(#{searchStartTime}, INTERVAL n DAY) AS day",
  239. " FROM (",
  240. " SELECT a.N + b.N * 10 AS n",
  241. " 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,",
  242. " (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",
  243. " ) numbers",
  244. " WHERE DATE_ADD(#{searchStartTime}, INTERVAL n DAY) <= #{searchEndTime}",
  245. ") m",
  246. "LEFT JOIN detail d ON DATE(d.create_time) = m.day AND d.update_type = '消费'",
  247. "GROUP BY m.day",
  248. "ORDER BY m.day"
  249. })
  250. List<SumCoin> getMediuCounsumeCoinyue(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime);
  251. //本周--充值
  252. @Select({
  253. "SELECT",
  254. " CASE DAYOFWEEK(m.day)",
  255. " WHEN 2 THEN '星期一'",
  256. " WHEN 3 THEN '星期二'",
  257. " WHEN 4 THEN '星期三'",
  258. " WHEN 5 THEN '星期四'",
  259. " WHEN 6 THEN '星期五'",
  260. " WHEN 7 THEN '星期六'",
  261. " WHEN 1 THEN '星期天'",
  262. " END AS dayofweek,",
  263. " COALESCE(SUM(CASE WHEN d.update_type = '充值' THEN d.recharge_coin ELSE 0 END), 0) AS rechargeSumCoin,",
  264. " COALESCE(SUM(CASE WHEN d.update_type = '充值' THEN d.free_coin ELSE 0 END), 0) AS freeSumCoin,",
  265. " COALESCE(SUM(CASE WHEN d.update_type = '充值' THEN d.task_coin ELSE 0 END), 0) AS taskSumCoin",
  266. "FROM (",
  267. " SELECT DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY) + INTERVAL n DAY AS day",
  268. " 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) numbers",
  269. ") m",
  270. "LEFT JOIN detail d ON DATE(d.create_time) = m.day AND d.update_type = '充值'",
  271. "GROUP BY m.day",
  272. "ORDER BY m.day"
  273. })
  274. List<SumCoin> getMediuPayCoinweek();
  275. //本周--消费
  276. @Select({
  277. "SELECT",
  278. " CASE DAYOFWEEK(m.day)",
  279. " WHEN 2 THEN '星期一'",
  280. " WHEN 3 THEN '星期二'",
  281. " WHEN 4 THEN '星期三'",
  282. " WHEN 5 THEN '星期四'",
  283. " WHEN 6 THEN '星期五'",
  284. " WHEN 7 THEN '星期六'",
  285. " WHEN 1 THEN '星期天'",
  286. " END AS dayofweek,",
  287. " COALESCE(SUM(CASE WHEN d.update_type = '消费' THEN d.recharge_coin ELSE 0 END), 0) AS rechargeSumCoin,",
  288. " COALESCE(SUM(CASE WHEN d.update_type = '消费' THEN d.free_coin ELSE 0 END), 0) AS freeSumCoin,",
  289. " COALESCE(SUM(CASE WHEN d.update_type = '消费' THEN d.task_coin ELSE 0 END), 0) AS taskSumCoin",
  290. "FROM (",
  291. " SELECT DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY) + INTERVAL n DAY AS day",
  292. " 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) numbers",
  293. ") m",
  294. "LEFT JOIN detail d ON DATE(d.create_time) = m.day AND d.update_type = '消费'",
  295. "GROUP BY m.day",
  296. "ORDER BY m.day"
  297. })
  298. List<SumCoin> getMediuConsumeCoinweek();
  299. //今天--消费充值
  300. @Select({
  301. "SELECT DATE_FORMAT(create_time, '%Y-%m-%d') AS day,",
  302. " NOW() AS currentTimestamp,",
  303. " SUM(recharge_coin) AS rechargeSumCoin,",
  304. " SUM(free_coin) AS freeSumCoin,",
  305. " SUM(task_coin) AS taskSumCoin",
  306. "FROM `detail`",
  307. "WHERE DATE(create_time) = CURDATE() AND update_type = '充值'"
  308. })
  309. List<SumCoin> getMediuPayCoinday();
  310. @Select({
  311. "SELECT DATE_FORMAT(create_time, '%Y-%m-%d') AS day,",
  312. " NOW() AS currentTimestamp,",
  313. " SUM(recharge_coin) AS rechargeSumCoin,",
  314. " SUM(free_coin) AS freeSumCoin,",
  315. " SUM(task_coin) AS taskSumCoin",
  316. "FROM `detail`",
  317. "WHERE DATE(create_time) = CURDATE() AND update_type = '消费'"
  318. })
  319. List<SumCoin> getMediuConsumeCoinday();
  320. //给定时间段--消费充值
  321. @Select({
  322. "SELECT m.day,",
  323. " COALESCE(SUM(CASE WHEN d.update_type = '充值' THEN d.recharge_coin ELSE 0 END), 0) AS rechargeSumCoin,",
  324. " COALESCE(SUM(CASE WHEN d.update_type = '充值' THEN d.free_coin ELSE 0 END), 0) AS freeSumCoin,",
  325. " COALESCE(SUM(CASE WHEN d.update_type = '充值' THEN d.task_coin ELSE 0 END), 0) AS taskSumCoin",
  326. "FROM (",
  327. " SELECT DATE_ADD(#{searchStartTime}, INTERVAL n DAY) AS day",
  328. " FROM (",
  329. " SELECT a.N + b.N * 10 AS n",
  330. " 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,",
  331. " (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",
  332. " ) numbers",
  333. " WHERE DATE_ADD(#{searchStartTime}, INTERVAL n DAY) <= #{searchEndTime}",
  334. ") m",
  335. "LEFT JOIN detail d ON DATE(d.create_time) = m.day AND d.update_type = '充值'",
  336. "GROUP BY m.day",
  337. "ORDER BY m.day"
  338. })
  339. List<SumCoin> getMediuPayCoin1(SumCoin sumCoin);
  340. @Select({
  341. "SELECT m.day,",
  342. " COALESCE(SUM(CASE WHEN d.update_type = '消费' THEN d.recharge_coin ELSE 0 END), 0) AS rechargeSumCoin,",
  343. " COALESCE(SUM(CASE WHEN d.update_type = '消费' THEN d.free_coin ELSE 0 END), 0) AS freeSumCoin,",
  344. " COALESCE(SUM(CASE WHEN d.update_type = '消费' THEN d.task_coin ELSE 0 END), 0) AS taskSumCoin",
  345. "FROM (",
  346. " SELECT DATE_ADD(#{searchStartTime}, INTERVAL n DAY) AS day",
  347. " FROM (",
  348. " SELECT a.N + b.N * 10 AS n",
  349. " 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,",
  350. " (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",
  351. " ) numbers",
  352. " WHERE DATE_ADD(#{searchStartTime}, INTERVAL n DAY) <= #{searchEndTime}",
  353. ") m",
  354. "LEFT JOIN detail d ON DATE(d.create_time) = m.day AND d.update_type = '消费'",
  355. "GROUP BY m.day",
  356. "ORDER BY m.day"
  357. })
  358. List<SumCoin> getMediuConsumeCoin2(SumCoin sumCoin);
  359. @Select({"SELECT today.jwcode," ,
  360. "today.rechargeSumCoin AS todayRecharge," ,
  361. "today.freeSumCoin AS todayFree,",
  362. "today.taskSumCoin AS todayTask," ,
  363. "(today.rechargeSumCoin + today.freeSumCoin + today.taskSumCoin) AS todayTotalCoin" ,
  364. "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" ,
  365. "where jwcode=#{jwcode}"})
  366. SumCoin getMess(Integer jwcode);
  367. @Select({"SELECT ad.area,ad.store," ,
  368. " SUM(d.recharge_coin) AS totalRecharge," ,
  369. " SUM(d.free_coin) AS totalFree," ,
  370. " SUM(d.task_coin) AS totalTask," ,
  371. " (SUM(d.recharge_coin) + SUM(d.free_coin) + SUM(d.task_coin)) AS todayTotalCoin" ,
  372. "FROM detail d" ,
  373. "INNER JOIN activity a ON d.activity_id = a.activity_id" ,
  374. "INNER JOIN admin ad ON a.admin_id = ad.admin_id" ,
  375. "where d.update_type='充值'",
  376. "GROUP BY ad.store" ,
  377. "ORDER BY ad.store ASC "
  378. })
  379. List<SumCoin> getMediumAreaPay();
  380. @Select({"SELECT ad.area,ad.store," ,
  381. " SUM(d.recharge_coin) AS totalRecharge," ,
  382. " SUM(d.free_coin) AS totalFree," ,
  383. " SUM(d.task_coin) AS totalTask," ,
  384. " (SUM(d.recharge_coin) + SUM(d.free_coin) + SUM(d.task_coin)) AS todayTotalCoin" ,
  385. "FROM detail d" ,
  386. "INNER JOIN admin ad ON ad.admin_id = d.admin_id",
  387. "WHERE d.update_type = '消费'",
  388. "GROUP BY ad.store",
  389. "ORDER BY ad.store ASC"
  390. })
  391. List<SumCoin> getMediumAreaConsume();
  392. @Select({
  393. "SELECT m.week,",
  394. " COALESCE(SUM(CASE WHEN d.update_type = '消费' THEN d.recharge_coin ELSE 0 END), 0) AS xrechargeSumCoin,",
  395. " COALESCE(SUM(CASE WHEN d.update_type = '消费' THEN d.free_coin ELSE 0 END), 0) AS xfreeSumCoin,",
  396. " COALESCE(SUM(CASE WHEN d.update_type = '消费' THEN d.task_coin ELSE 0 END), 0) AS xtaskSumCoin",
  397. "FROM (",
  398. " SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL n WEEK), '%Y-%u') AS week",
  399. " FROM (",
  400. " SELECT 0 AS n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3",
  401. " UNION ALL SELECT 4 UNION ALL SELECT 5",
  402. " ) AS numbers",
  403. ") AS m",
  404. "LEFT JOIN detail d ON DATE_FORMAT(d.create_time, '%Y-%u') = m.week",
  405. "<if test='searchStartTime != null and searchEndTime != null'>",
  406. "AND d.create_time BETWEEN #{searchStartTime} AND #{searchEndTime}",
  407. "</if>",
  408. "GROUP BY m.week",
  409. "ORDER BY m.week DESC"
  410. })
  411. List<SumCoin> getMediu2();
  412. @Select({
  413. "<script>",
  414. "SELECT ad.area,",
  415. " ad.store,",
  416. " SUM(CASE WHEN d.update_type = '充值' THEN d.recharge_coin ELSE 0 END) AS rechargeSumCoin,",
  417. " SUM(CASE WHEN d.update_type = '充值' THEN d.free_coin ELSE 0 END) AS freeSumCoin,",
  418. " SUM(CASE WHEN d.update_type = '充值' THEN d.task_coin ELSE 0 END) AS taskSumCoin,",
  419. " (SUM(CASE WHEN d.update_type = '充值' THEN d.recharge_coin ELSE 0 END) +",
  420. " SUM(CASE WHEN d.update_type = '充值' THEN d.free_coin ELSE 0 END) +",
  421. " SUM(CASE WHEN d.update_type = '充值' THEN d.task_coin ELSE 0 END)) AS totalRechargeSum",
  422. "FROM detail d",
  423. "right JOIN admin ad ON ad.admin_id = d.admin_id",
  424. "<if test='searchStartTime != null and searchEndTime != null'>",
  425. "AND DATE(d.create_time) BETWEEN DATE(#{searchStartTime}) AND DATE(#{searchEndTime})",
  426. "</if>",
  427. "GROUP BY ad.area, ad.store",
  428. "order by freeSumCoin desc",
  429. "</script>"
  430. })
  431. List<Meium> getBuyAndFree(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime);
  432. @Select({
  433. "<script>",
  434. "SELECT ad.area,",
  435. " ad.store,",
  436. " SUM(CASE WHEN d.update_type = '充值' THEN d.recharge_coin ELSE 0 END) AS rechargeSumCoin,",
  437. " SUM(CASE WHEN d.update_type = '充值' THEN d.free_coin ELSE 0 END) AS freeSumCoin,",
  438. " SUM(CASE WHEN d.update_type = '充值' THEN d.task_coin ELSE 0 END) AS taskSumCoin,",
  439. " (SUM(CASE WHEN d.update_type = '充值' THEN d.recharge_coin ELSE 0 END) +",
  440. " SUM(CASE WHEN d.update_type = '充值' THEN d.free_coin ELSE 0 END) +",
  441. " SUM(CASE WHEN d.update_type = '充值' THEN d.task_coin ELSE 0 END)) AS totalRechargeSum",
  442. "FROM detail d",
  443. "right JOIN admin ad ON ad.admin_id = d.admin_id",
  444. "<if test='searchStartTime != null and searchEndTime != null'>",
  445. "AND DATE(d.create_time) BETWEEN DATE(#{searchStartTime}) AND DATE(#{searchEndTime})",
  446. "</if>",
  447. "GROUP BY ad.area, ad.store",
  448. "order by rechargeSumCoin desc",
  449. "</script>"
  450. })
  451. List<Meium> getBuyAndRecharge(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime);
  452. @Select({
  453. "<script>",
  454. "SELECT ad.area,",
  455. " ad.store,",
  456. " SUM(CASE WHEN d.update_type = '充值' THEN d.recharge_coin ELSE 0 END) AS rechargeSumCoin,",
  457. " SUM(CASE WHEN d.update_type = '充值' THEN d.free_coin ELSE 0 END) AS freeSumCoin,",
  458. " SUM(CASE WHEN d.update_type = '充值' THEN d.task_coin ELSE 0 END) AS taskSumCoin,",
  459. " (SUM(CASE WHEN d.update_type = '充值' THEN d.recharge_coin ELSE 0 END) +",
  460. " SUM(CASE WHEN d.update_type = '充值' THEN d.free_coin ELSE 0 END) +",
  461. " SUM(CASE WHEN d.update_type = '充值' THEN d.task_coin ELSE 0 END)) AS totalRechargeSum",
  462. "FROM detail d",
  463. "right JOIN admin ad ON ad.admin_id = d.admin_id",
  464. "<if test='searchStartTime != null and searchEndTime != null'>",
  465. "AND DATE(d.create_time) BETWEEN DATE(#{searchStartTime}) AND DATE(#{searchEndTime})",
  466. "</if>",
  467. "GROUP BY ad.area, ad.store",
  468. "order by taskSumCoin desc",
  469. "</script>"
  470. })
  471. List<Meium> getBuyAndTask(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime);
  472. @Select({
  473. "<script>",
  474. "SELECT ad.area,",
  475. " ad.store,",
  476. " SUM(CASE WHEN d.update_type = '充值' THEN d.recharge_coin ELSE 0 END) AS rechargeSumCoin,",
  477. " SUM(CASE WHEN d.update_type = '充值' THEN d.free_coin ELSE 0 END) AS freeSumCoin,",
  478. " SUM(CASE WHEN d.update_type = '充值' THEN d.task_coin ELSE 0 END) AS taskSumCoin,",
  479. " (SUM(CASE WHEN d.update_type = '充值' THEN d.recharge_coin ELSE 0 END) +",
  480. " SUM(CASE WHEN d.update_type = '充值' THEN d.free_coin ELSE 0 END) +",
  481. " SUM(CASE WHEN d.update_type = '充值' THEN d.task_coin ELSE 0 END)) AS totalRechargeSum",
  482. "FROM detail d",
  483. "right JOIN admin ad ON ad.admin_id = d.admin_id",
  484. "<if test='searchStartTime != null and searchEndTime != null'>",
  485. "AND DATE(d.create_time) BETWEEN DATE(#{searchStartTime}) AND DATE(#{searchEndTime})",
  486. "</if>",
  487. "GROUP BY ad.area, ad.store",
  488. "order by totalRechargeSum desc",
  489. "</script>"
  490. })
  491. List<Meium> getBuy(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime);
  492. @Select({
  493. "<script>",
  494. "SELECT ad.area,",
  495. " ad.store,",
  496. " SUM(CASE WHEN d.update_type = '消费' THEN d.recharge_coin ELSE 0 END) AS rechargeSumCoin,",
  497. " SUM(CASE WHEN d.update_type = '消费' THEN d.free_coin ELSE 0 END) AS freeSumCoin,",
  498. " SUM(CASE WHEN d.update_type = '消费' THEN d.task_coin ELSE 0 END) AS taskSumCoin,",
  499. " (SUM(CASE WHEN d.update_type = '消费' THEN d.recharge_coin ELSE 0 END) +",
  500. " SUM(CASE WHEN d.update_type = '消费' THEN d.free_coin ELSE 0 END) +",
  501. " SUM(CASE WHEN d.update_type = '消费' THEN d.task_coin ELSE 0 END)) AS totalRechargeSum",
  502. "FROM detail d",
  503. "right JOIN admin ad ON ad.admin_id = d.admin_id",
  504. "<if test='searchStartTime != null and searchEndTime != null'>",
  505. "AND DATE(d.create_time) BETWEEN DATE(#{searchStartTime}) AND DATE(#{searchEndTime})",
  506. "</if>",
  507. "GROUP BY ad.area, ad.store",
  508. "order by freeSumCoin asc",
  509. "</script>"
  510. })
  511. List<Meium> getPayAndFree(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime);
  512. @Select({
  513. "<script>",
  514. "SELECT ad.area,",
  515. " ad.store,",
  516. " SUM(CASE WHEN d.update_type = '消费' THEN d.recharge_coin ELSE 0 END) AS rechargeSumCoin,",
  517. " SUM(CASE WHEN d.update_type = '消费' THEN d.free_coin ELSE 0 END) AS freeSumCoin,",
  518. " SUM(CASE WHEN d.update_type = '消费' THEN d.task_coin ELSE 0 END) AS taskSumCoin,",
  519. " (SUM(CASE WHEN d.update_type = '消费' THEN d.recharge_coin ELSE 0 END) +",
  520. " SUM(CASE WHEN d.update_type = '消费' THEN d.free_coin ELSE 0 END) +",
  521. " SUM(CASE WHEN d.update_type = '消费' THEN d.task_coin ELSE 0 END)) AS totalRechargeSum",
  522. "FROM detail d",
  523. "right JOIN admin ad ON ad.admin_id = d.admin_id",
  524. "<if test='searchStartTime != null and searchEndTime != null'>",
  525. "AND DATE(d.create_time) BETWEEN DATE(#{searchStartTime}) AND DATE(#{searchEndTime})",
  526. "</if>",
  527. "GROUP BY ad.area, ad.store",
  528. "order by rechargeSumCoin asc",
  529. "</script>"
  530. })
  531. List<Meium> getPayAndRecharge(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime);
  532. @Select({
  533. "<script>",
  534. "SELECT ad.area,",
  535. " ad.store,",
  536. " SUM(CASE WHEN d.update_type = '消费' THEN d.recharge_coin ELSE 0 END) AS rechargeSumCoin,",
  537. " SUM(CASE WHEN d.update_type = '消费' THEN d.free_coin ELSE 0 END) AS freeSumCoin,",
  538. " SUM(CASE WHEN d.update_type = '消费' THEN d.task_coin ELSE 0 END) AS taskSumCoin,",
  539. " (SUM(CASE WHEN d.update_type = '消费' THEN d.recharge_coin ELSE 0 END) +",
  540. " SUM(CASE WHEN d.update_type = '消费' THEN d.free_coin ELSE 0 END) +",
  541. " SUM(CASE WHEN d.update_type = '消费' THEN d.task_coin ELSE 0 END)) AS totalRechargeSum",
  542. "FROM detail d",
  543. "right JOIN admin ad ON ad.admin_id = d.admin_id",
  544. "<if test='searchStartTime != null and searchEndTime != null'>",
  545. "AND DATE(d.create_time) BETWEEN DATE(#{searchStartTime}) AND DATE(#{searchEndTime})",
  546. "</if>",
  547. "GROUP BY ad.area, ad.store",
  548. "order by taskSumCoin asc",
  549. "</script>"
  550. })
  551. List<Meium> getPayAndTask(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime);
  552. @Select({
  553. "<script>",
  554. "SELECT ad.area,",
  555. " ad.store,",
  556. " SUM(CASE WHEN d.update_type = '消费' THEN d.recharge_coin ELSE 0 END) AS rechargeSumCoin,",
  557. " SUM(CASE WHEN d.update_type = '消费' THEN d.free_coin ELSE 0 END) AS freeSumCoin,",
  558. " SUM(CASE WHEN d.update_type = '消费' THEN d.task_coin ELSE 0 END) AS taskSumCoin,",
  559. " (SUM(CASE WHEN d.update_type = '消费' THEN d.recharge_coin ELSE 0 END) +",
  560. " SUM(CASE WHEN d.update_type = '消费' THEN d.free_coin ELSE 0 END) +",
  561. " SUM(CASE WHEN d.update_type = '消费' THEN d.task_coin ELSE 0 END)) AS totalRechargeSum",
  562. "FROM detail d",
  563. "right JOIN admin ad ON ad.admin_id = d.admin_id",
  564. "<if test='searchStartTime != null and searchEndTime != null'>",
  565. "AND DATE(d.create_time) BETWEEN DATE(#{searchStartTime}) AND DATE(#{searchEndTime})",
  566. "</if>",
  567. "GROUP BY ad.area, ad.store",
  568. "order by totalRechargeSum asc",
  569. "</script>"
  570. })
  571. List<Meium> getPay(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime);
  572. }