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

192 lines
7.5 KiB

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.example.demo.mapper.OneMapper">
  6. <!-- 第一个查询:getOne -->
  7. <select id="getOne" resultType="com.example.demo.domain.work.One">
  8. SELECT
  9. COALESCE((SELECT SUM(recharge_coin + free_coin + task_coin)
  10. FROM detail_y
  11. WHERE DATE(create_time) = CURDATE()
  12. <if test="areas != null">
  13. AND area IN
  14. <foreach collection="areas" item="areas" open="(" separator="," close=")">
  15. #{areas}
  16. </foreach>
  17. </if>), 0) AS differr,
  18. COALESCE((SELECT SUM(free_6 + free_12 + core_jb + buy_jb)
  19. FROM user_gold
  20. left join user on user.jwcode = user_gold.jwcode
  21. <where> <if test="areas != null">
  22. area IN
  23. <foreach collection="areas" item="areas" open="(" separator="," close=")">
  24. #{areas}
  25. </foreach>
  26. </if>
  27. </where>), 0) AS sumgold,
  28. COALESCE((SELECT SUM(buy_jb)
  29. FROM user_gold
  30. left join user on user.jwcode = user_gold.jwcode
  31. <where> <if test="areas != null">
  32. area IN
  33. <foreach collection="areas" item="areas" open="(" separator="," close=")">
  34. #{areas}
  35. </foreach>
  36. </if>
  37. </where>), 0) AS rechargegold,
  38. COALESCE((SELECT SUM(free_6)
  39. FROM user_gold
  40. left join user on user.jwcode = user_gold.jwcode
  41. <where> <if test="areas != null">
  42. area IN
  43. <foreach collection="areas" item="areas" open="(" separator="," close=")">
  44. #{areas}
  45. </foreach>
  46. </if>
  47. </where>), 0) AS sfreegold,
  48. COALESCE((SELECT SUM(free_12)
  49. FROM user_gold
  50. left join user on user.jwcode = user_gold.jwcode
  51. <where> <if test="areas != null">
  52. area IN
  53. <foreach collection="areas" item="areas" open="(" separator="," close=")">
  54. #{areas}
  55. </foreach>
  56. </if>
  57. </where>), 0) AS dfreegold,
  58. COALESCE((SELECT SUM(core_jb)
  59. FROM user_gold
  60. left join user on user.jwcode = user_gold.jwcode
  61. <where> <if test="areas != null">
  62. area IN
  63. <foreach collection="areas" item="areas" open="(" separator="," close=")">
  64. #{areas}
  65. </foreach>
  66. </if>
  67. </where>), 0) AS taskgold,
  68. COALESCE((SELECT SUM(free_6) + SUM(free_12)
  69. FROM user_gold
  70. left join user on user.jwcode = user_gold.jwcode
  71. <where> <if test="areas != null">
  72. area IN
  73. <foreach collection="areas" item="areas" open="(" separator="," close=")">
  74. #{areas}
  75. </foreach>
  76. </if>
  77. </where>), 0) AS freegold;
  78. </select>
  79. <!-- 第二个查询:getTwo -->
  80. <select id="getTwo" resultType="com.example.demo.domain.work.Two">
  81. SELECT
  82. COALESCE(SUM(CASE WHEN year_flag = 1 THEN total_coin ELSE 0 END), 0) AS totalgold,
  83. COALESCE(SUM(CASE WHEN year_flag = 1 THEN recharge_coin ELSE 0 END), 0) AS totalcoin,
  84. COALESCE(SUM(CASE WHEN yesterday_flag = 1 THEN total_coin ELSE 0 END), 0) AS yesterdaytotal,
  85. COALESCE(SUM(CASE WHEN yesterday_flag = 1 THEN recharge_coin ELSE 0 END), 0) AS yesterdayrecharge,
  86. COALESCE(SUM(CASE WHEN year_flag = 1 THEN recharge_coin ELSE 0 END), 0) AS rechargegold,
  87. COALESCE(SUM(CASE WHEN year_flag = 1 THEN free_coin ELSE 0 END), 0) AS freegold,
  88. COALESCE(SUM(CASE WHEN year_flag = 1 THEN task_coin ELSE 0 END), 0) AS taskgold
  89. FROM (
  90. SELECT
  91. recharge_coin,
  92. free_coin,
  93. task_coin,
  94. recharge_coin + free_coin + task_coin AS total_coin,
  95. YEAR(create_time) = YEAR(CURDATE()) AS year_flag,
  96. DATE(create_time) = DATE_SUB(CURDATE(), INTERVAL 1 DAY) AS yesterday_flag
  97. FROM detail_y
  98. WHERE update_type = 0
  99. <if test="areas != null">
  100. AND area IN
  101. <foreach collection="areas" item="areas" open="(" separator="," close=")">
  102. #{area}
  103. </foreach>
  104. </if>
  105. ) AS subquery
  106. </select>
  107. <!-- 第三个查询:getThree -->
  108. <select id="getThree" resultType="com.example.demo.domain.work.Three">
  109. SELECT
  110. COALESCE((SELECT SUM(recharge_coin + free_coin + task_coin)
  111. FROM detail_y
  112. WHERE YEAR(create_time) = YEAR(CURDATE())
  113. AND update_type = 1
  114. <if test="areas != null">
  115. AND area IN
  116. <foreach collection="areas" item="areas" open="(" separator="," close=")">
  117. #{areas}
  118. </foreach>
  119. </if>), 0) AS consumeGold,
  120. COALESCE((SELECT SUM(recharge_coin + free_coin + task_coin)
  121. FROM detail_y
  122. WHERE YEAR(create_time) = YEAR(CURDATE())
  123. AND update_type = 2
  124. <if test="areas != null">
  125. AND area IN
  126. <foreach collection="areas" item="areas" open="(" separator="," close=")">
  127. #{areas}
  128. </foreach>
  129. </if>), 0) AS refundcoin,
  130. COALESCE((SELECT SUM(recharge_coin + free_coin + task_coin)
  131. FROM detail_y
  132. WHERE DATE(create_time) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)
  133. AND update_type = 1
  134. <if test="areas != null">
  135. AND area IN
  136. <foreach collection="areas" item="areas" open="(" separator="," close=")">
  137. #{areas}
  138. </foreach>
  139. </if>), 0) AS yesterdayGold,
  140. COALESCE((SELECT SUM(recharge_coin)
  141. FROM detail_y
  142. WHERE DATE(create_time) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)
  143. AND update_type = 2
  144. <if test="areas != null">
  145. AND area IN
  146. <foreach collection="areas" item="areas" open="(" separator="," close=")">
  147. #{areas}
  148. </foreach>
  149. </if>), 0) AS yesterdayrefund,
  150. COALESCE((SELECT SUM(recharge_coin)
  151. FROM detail_y
  152. WHERE YEAR(create_time) = YEAR(CURDATE())
  153. AND update_type = 1
  154. <if test="areas != null">
  155. AND area IN
  156. <foreach collection="areas" item="areas" open="(" separator="," close=")">
  157. #{areas}
  158. </foreach>
  159. </if>), 0) AS rechargegold,
  160. COALESCE((SELECT SUM(task_coin)
  161. FROM detail_y
  162. WHERE YEAR(create_time) = YEAR(CURDATE())
  163. AND update_type = 1
  164. <if test="areas != null">
  165. AND area IN
  166. <foreach collection="areas" item="areas" open="(" separator="," close=")">
  167. #{areas}
  168. </foreach>
  169. </if>), 0) AS taskgold,
  170. COALESCE((SELECT SUM(free_coin)
  171. FROM detail_y
  172. WHERE YEAR(create_time) = YEAR(CURDATE())
  173. AND update_type = 1
  174. <if test="areas != null">
  175. AND area IN
  176. <foreach collection="areas" item="areas" open="(" separator="," close=")">
  177. #{areas}
  178. </foreach>
  179. </if>), 0) AS freegold
  180. </select>
  181. </mapper>