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.

193 lines
8.7 KiB

5 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
5 months ago
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.example.demo.mapper.coin.WorkBenchMapper">
  4. <!--起止时间内的该地区充值金币数(永久+免费)若为空则默认0-->
  5. <select id="sumRecharge" resultType="java.lang.Integer">
  6. select sum(
  7. COALESCE(recharge, 0)
  8. )
  9. from statistics
  10. where market = #{market}
  11. and current_datetime
  12. between #{startDate} and #{endDate}
  13. </select>
  14. <!--起止时间内的该地区充值金额(永久金币数)-->
  15. <select id="sumMoney" resultType="java.lang.Integer">
  16. SELECT SUM(money)
  17. FROM statistics
  18. WHERE market = #{market}
  19. AND current_datetime BETWEEN #{startDate} and #{endDate}
  20. </select>
  21. <!-- 起止时间内该地区消费金币数(永久+免费+任务)-->
  22. <select id="sumConsume" resultType="java.lang.Integer">
  23. SELECT SUM(
  24. COALESCE(consume_permanent, 0) +
  25. COALESCE(consume_free_june, 0) +
  26. COALESCE(consume_free_december, 0) +
  27. COALESCE(consume_task, 0)
  28. )
  29. FROM statistics
  30. WHERE market = #{market}
  31. AND current_datetime BETWEEN
  32. #{startDate} and #{endDate}
  33. </select>
  34. <!--起止时间内的该地区退款金币数(永久+免费+任务)-->
  35. <select id="sumRefund" resultType="java.lang.Integer">
  36. SELECT SUM(
  37. COALESCE(refund_permanent, 0) +
  38. COALESCE(refund_free_june, 0) +
  39. COALESCE(refund_free_december, 0) +
  40. COALESCE(refund_task, 0)
  41. )
  42. FROM statistics
  43. WHERE market = #{market}
  44. AND current_datetime BETWEEN
  45. #{startDate} and #{endDate}
  46. </select>
  47. <!--起止时间内该地区充值人头数(根据精网号去重,老数据有多人共用一个精网号的问题)-->
  48. <select id="countRechargeNum" resultType="java.lang.Integer">
  49. SELECT COUNT(DISTINCT ugr.jwcode)
  50. FROM user_gold_record ugr
  51. INNER JOIN user u ON ugr.jwcode = u.jwcode
  52. WHERE u.market = #{market}
  53. AND ugr.pay_time BETWEEN
  54. #{startDate} and #{endDate}
  55. AND ugr.audit_status IN (1,3)
  56. and ugr.flag=1
  57. AND u.flag = 1
  58. </select>
  59. <!--给定时间范围内的该地区消费永久金币数-->
  60. <select id="sumCPermanent" resultType="java.lang.Integer">
  61. SELECT SUM(
  62. COALESCE(consume_permanent, 0)
  63. )
  64. FROM statistics
  65. WHERE market = #{market}
  66. AND current_datetime BETWEEN
  67. #{startDate} and #{endDate}
  68. </select>
  69. <!--给定时间范围内的该地区消费免费金币数-->
  70. <select id="sumCFree" resultType="java.lang.Integer">
  71. SELECT SUM(
  72. COALESCE(refund_free_june, 0) +
  73. COALESCE(refund_free_december, 0)
  74. )
  75. FROM statistics
  76. WHERE market = #{market}
  77. AND current_datetime BETWEEN
  78. #{startDate} and #{endDate}
  79. </select>
  80. <!--给定时间范围内的该地区消费任务金币数-->
  81. <select id="sumCTask" resultType="java.lang.Integer">
  82. SELECT SUM(
  83. COALESCE(refund_task, 0)
  84. )
  85. FROM statistics
  86. WHERE market = #{market}
  87. AND current_datetime BETWEEN
  88. #{startDate} and #{endDate}
  89. </select>
  90. <!-- 获取指定地区在时间段内的全部统计数据 -->
  91. <select id="getFullStatisticsByMarketAndDate" resultType="com.example.demo.domain.vo.coin.WorkbenchFullStatistics">
  92. SELECT
  93. SUM(s.recharge) AS totalRecharge,
  94. SUM(s.money) AS totalMoney,
  95. SUM(s.consume_permanent) AS totalConsumePermanent,
  96. SUM(s.consume_free_june + s.consume_free_december) AS totalConsumeFree,
  97. SUM(s.consume_task) AS totalConsumeTask,
  98. SUM(s.refund_permanent + s.refund_free_june + s.refund_free_december + s.refund_task) AS totalRefund,
  99. (
  100. SELECT COUNT(DISTINCT ugr.jwcode)
  101. FROM user_gold_record ugr
  102. INNER JOIN user u ON ugr.jwcode = u.jwcode
  103. WHERE u.market = #{market}
  104. AND ugr.pay_time BETWEEN #{startDate} AND #{endDate}
  105. AND ugr.audit_status IN (1, 3)
  106. and ugr.flag=1
  107. AND u.flag = 1
  108. ) AS totalRechargeNum
  109. FROM statistics s
  110. WHERE s.market = #{market}
  111. AND s.current_datetime BETWEEN #{startDate} AND #{endDate};
  112. </select>
  113. <select id="getFullStatisticsByMarketAndDate1"
  114. resultType="com.example.demo.domain.vo.coin.WorkbenchFullStatistics">
  115. SELECT
  116. s.market,
  117. SUM(s.recharge) AS totalRecharge,
  118. SUM(s.money) AS totalMoney,
  119. SUM(s.consume_permanent) AS totalConsumePermanent,
  120. SUM(s.consume_free_june + s.consume_free_december) AS totalConsumeFree,
  121. SUM(s.consume_task) AS totalConsumeTask
  122. FROM statistics s
  123. WHERE s.market IN
  124. <foreach item="market" collection="markets" open="(" separator="," close=")">#{market}</foreach>
  125. AND s.current_datetime BETWEEN #{startDate} AND #{endDate}
  126. GROUP BY s.market;
  127. </select>
  128. <!--获取用户的地区权限列表-->
  129. <select id="getAdminMarket" resultType="java.lang.String">
  130. select market from admin
  131. where account = #{account}
  132. </select>
  133. <!--获取全部用户角色-->
  134. <select id="getMarket" resultType="java.lang.String">
  135. select DISTINCT name from market where type=2
  136. </select>
  137. <!--40天内单个地区的图表数据 按天-->
  138. <select id="getDayStatistics" resultType="com.example.demo.domain.vo.coin.WorkbenchMarketGraph">
  139. select market,recharge as sumRechargePermanent,money as sumMoney,
  140. (recharge - money) as sumRechargeFree,
  141. consume_permanent as sumConsumePermanent,
  142. (consume_free_june + consume_free_december) as sumConsumeFree,
  143. consume_task as sumConsumeTask,
  144. current_datetime as currentDate
  145. from statistics where market=#{market}
  146. and DATE(current_datetime) >= #{startDate}
  147. AND DATE(current_datetime) &lt; #{endDate}
  148. order by current_datetime desc
  149. </select>
  150. <!--40天以上单个地区的图表数据 按月 首尾截断-->
  151. <select id="getMonthStatistics" resultType="com.example.demo.domain.vo.coin.WorkbenchMarketGraph">
  152. select DATE_FORMAT(current_datetime, '%Y-%m') as month,
  153. market,
  154. sum(recharge) as sumRechargePermanent,
  155. sum(money) as sumMoney,
  156. sum(recharge - money) as sumRechargeFree,
  157. sum(consume_permanent) as sumConsumePermanent,
  158. sum(consume_free_june + consume_free_december) as sumConsumeFree,
  159. sum(consume_task) as sumConsumeTask,
  160. current_datetime as currentMonth
  161. from statistics
  162. where market = #{market}
  163. and current_datetime >= #{startDate}
  164. and current_datetime &lt; #{endDate}
  165. group by month
  166. order by month
  167. </select>
  168. <!--获取各地区-->
  169. <select id="getRevenue" resultType="com.example.demo.domain.vo.coin.WorkbenchRevenue">
  170. SELECT m.name AS market,
  171. SUM(CASE WHEN r.id = 2 THEN cr.received_amount ELSE 0 END) AS hkd,
  172. SUM(CASE WHEN r.id = 3 THEN cr.received_amount ELSE 0 END) AS sgd,
  173. SUM(CASE WHEN r.id = 4 THEN cr.received_amount ELSE 0 END) AS myr,
  174. SUM(CASE WHEN r.id = 5 THEN cr.received_amount ELSE 0 END) AS thb,
  175. SUM(CASE WHEN r.id = 6 THEN cr.received_amount ELSE 0 END) AS cad,
  176. SUM(CASE WHEN r.id = 7 THEN cr.received_amount ELSE 0 END) AS vdn,
  177. SUM(CASE WHEN r.id = 8 THEN cr.received_amount ELSE 0 END) AS krw,
  178. ROUND( SUM(cr.received_amount * r.num), 2) AS totalSGD
  179. FROM cash_record cr
  180. JOIN market m ON cr.received_market = m.id
  181. JOIN rate r ON cr.received_currency = r.id
  182. WHERE cr.received_currency IN (2,3,4,5,6,7,8) -- 只统计这7种币
  183. AND m.name IN
  184. <foreach item="market" collection="markets" open="(" separator="," close=")">#{market}</foreach>
  185. AND cr.audit_time BETWEEN #{startDate} AND #{endDate}
  186. AND cr.order_type=1
  187. AND cr.status IN (1,3,4)
  188. GROUP BY m.name;
  189. </select>
  190. </mapper>