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.

271 lines
10 KiB

3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
4 months ago
3 months ago
3 months ago
3 months ago
4 months ago
4 months ago
3 months ago
4 months ago
4 months ago
3 months ago
4 months ago
3 months ago
3 months ago
3 months ago
3 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.ConsumeMapper">
  4. <!-- 查询所有消费记录 -->
  5. <select id="selectAll" resultType="com.example.demo.domain.vo.coin.ConsumeUser">
  6. SELECT u.name AS name,
  7. ugr.jwcode AS jwcode,
  8. m.name as market,
  9. ugr.goods_name AS goodsName,
  10. ugr.pay_platform AS payPlatform,
  11. ugr.sum_gold AS sumGold,
  12. ugr.permanent_gold AS permanentGold,
  13. (COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0)) AS freeGold,
  14. ugr.task_gold AS taskGold,
  15. ugr.remark AS remark,
  16. a.admin_name AS adminName,
  17. ugr.create_time AS createTime
  18. FROM user_gold_record ugr
  19. left JOIN
  20. user u ON u.jwcode = ugr.jwcode
  21. left JOIN
  22. admin a ON ugr.admin_id = a.id
  23. left join market m ON u.market = m.id
  24. <where>
  25. ugr.type = 1 AND ugr.flag = 1 AND u.flag = 1
  26. <!-- 判断 market 是否不为总部且 markets 不为空 -->
  27. <if test="markets != null and markets.size() > 0 and '9999' not in markets and '9' not in markets">
  28. AND (
  29. <foreach collection="markets" item="market" open="" close="" separator=" OR ">
  30. u.market = #{market}
  31. </foreach>
  32. )
  33. </if>
  34. </where>
  35. <trim prefix="ORDER BY" suffixOverrides=",">
  36. <choose>
  37. <!-- 当指定排序字段时使用指定字段排序 -->
  38. <when test="sortField != null and sortField != ''">
  39. <choose>
  40. <!-- 对三种金币数量的排序处理 -->
  41. <when test="sortField == 'taskGold'">ugr.task_gold</when>
  42. <when test="sortField == 'permanentGold'">ugr.permanent_gold</when>
  43. <when test="sortField == 'freeGold'">(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december,
  44. 0))
  45. </when>
  46. <!-- 对时间字段的排序处理 -->
  47. <when test="sortField == 'createTime'">ugr.create_time</when>
  48. <!-- 其他字段不支持排序,使用默认排序 -->
  49. <otherwise>ugr.create_time</otherwise>
  50. </choose>
  51. <!-- 排序方向处理 -->
  52. <if test="sortOrder != null and sortOrder != ''">
  53. <choose>
  54. <when test="sortOrder == 'ASC'">ASC</when>
  55. <when test="sortOrder == 'DESC'">DESC</when>
  56. <otherwise>DESC</otherwise>
  57. </choose>
  58. </if>
  59. <if test="sortOrder == null or sortOrder == ''">
  60. DESC
  61. </if>
  62. </when>
  63. <!-- 未指定排序字段时,使用默认的时间降序排序 -->
  64. <otherwise>
  65. ugr.create_time DESC
  66. </otherwise>
  67. </choose>
  68. </trim>
  69. </select>
  70. <!-- 查询筛选后消费记录 -->
  71. <select id="selectBy" resultType="com.example.demo.domain.vo.coin.ConsumeUser">
  72. SELECT u.name AS name,
  73. ugr.jwcode AS jwcode,
  74. ugr.order_code AS orderCode,
  75. m.name as market,
  76. ugr.goods_name AS goodsName,
  77. ugr.pay_platform AS payPlatform,
  78. ugr.sum_gold/100 AS sumGold,
  79. ugr.permanent_gold/100 AS permanentGold,
  80. (COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0))/100 AS freeGold,
  81. ugr.task_gold/100 AS taskGold,
  82. ugr.remark AS remark,
  83. a.admin_name AS adminName,
  84. ugr.create_time AS createTime,
  85. ugr.is_refund AS isRefund,
  86. FROM user_gold_record ugr
  87. left JOIN
  88. user u ON u.jwcode = ugr.jwcode
  89. left JOIN
  90. admin a ON ugr.admin_id = a.id
  91. left join market m ON u.market = m.id
  92. <where>
  93. ugr.type = 1 AND ugr.flag = 1
  94. <if test="markets != null and markets.size() > 0">
  95. AND u.market IN
  96. <foreach collection="markets" item="market" open="(" separator="," close=")">
  97. #{market}
  98. </foreach>
  99. </if>
  100. <if test="flag != 0">
  101. AND u.flag = 1
  102. </if>
  103. <if test="jwcode != null and jwcode != ''">
  104. AND ugr.jwcode = #{jwcode}
  105. </if>
  106. <if test="goodsName != null and goodsName != ''">
  107. AND ugr.goods_name = #{goodsName}
  108. </if>
  109. <if test="market != null and market != ''">
  110. AND u.market = #{market}
  111. </if>
  112. <if test="payPlatform != null and payPlatform != ''">
  113. AND ugr.pay_platform = #{payPlatform}
  114. </if>
  115. <if test="startTime != null and endTime != null">
  116. AND ugr.create_time BETWEEN #{startTime} AND #{endTime}
  117. </if>
  118. </where>
  119. <trim prefix="ORDER BY" suffixOverrides=",">
  120. <choose>
  121. <!-- 当指定排序字段时使用指定字段排序 -->
  122. <when test="sortField != null and sortField != ''">
  123. <choose>
  124. <!-- 对三种金币数量的排序处理 -->
  125. <when test="sortField == 'taskGold'">ugr.task_gold</when>
  126. <when test="sortField == 'permanentGold'">ugr.permanent_gold</when>
  127. <when test="sortField == 'freeGold'">(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december,
  128. 0))
  129. </when>
  130. <!-- 对时间字段的排序处理 -->
  131. <when test="sortField == 'createTime'">ugr.create_time</when>
  132. <!-- 其他字段不支持排序,使用默认排序 -->
  133. <otherwise>ugr.create_time</otherwise>
  134. </choose>
  135. <!-- 排序方向处理 -->
  136. <if test="sortOrder != null and sortOrder != ''">
  137. <choose>
  138. <when test="sortOrder == 'ASC'">ASC</when>
  139. <when test="sortOrder == 'DESC'">DESC</when>
  140. <otherwise>DESC</otherwise>
  141. </choose>
  142. </if>
  143. <if test="sortOrder == null or sortOrder == ''">
  144. DESC
  145. </if>
  146. </when>
  147. <!-- 未指定排序字段时,使用默认的时间降序排序 -->
  148. <otherwise>
  149. ugr.create_time DESC
  150. </otherwise>
  151. </choose>
  152. </trim>
  153. </select>
  154. <!-- 查询筛选后消费记录 -->
  155. <select id="sumGold" resultType="com.example.demo.domain.vo.coin.Gold">
  156. SELECT
  157. SUM(ugr.sum_gold)/100 AS sumGolds,
  158. SUM(ugr.permanent_gold)/100 AS permanentGolds,
  159. sum(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0))/100 AS freeGolds,
  160. SUM(ugr.task_gold)/100 AS taskGolds,
  161. count(ugr.id) AS totalNum
  162. FROM user_gold_record ugr
  163. left JOIN
  164. user u ON u.jwcode = ugr.jwcode
  165. left join market m ON u.market = m.id
  166. <where>
  167. ugr.type = 1 AND ugr.flag = 1
  168. <if test="markets != null and markets.size() > 0">
  169. AND u.market IN
  170. <foreach collection="markets" item="market" open="(" separator="," close=")">
  171. #{market}
  172. </foreach>
  173. </if>
  174. <if test="flag != 0">
  175. AND u.flag = 1
  176. </if>
  177. <if test="jwcode != null and jwcode != ''">
  178. AND ugr.jwcode = #{jwcode}
  179. </if>
  180. <if test="goodsName != null and goodsName != ''">
  181. AND ugr.goods_name = #{goodsName}
  182. </if>
  183. <if test="market != null and market != ''">
  184. AND u.market = #{market}
  185. </if>
  186. <if test="payPlatform != null and payPlatform != ''">
  187. AND ugr.pay_platform = #{payPlatform}
  188. </if>
  189. <if test="startTime != null and endTime != null">
  190. AND ugr.create_time BETWEEN #{startTime} AND #{endTime}
  191. </if>
  192. </where>
  193. </select>
  194. <select id="selectOrderCodeByJwcode" resultType="com.example.demo.domain.vo.coin.ConsumeUser">
  195. SELECT ugr.jwcode AS jwcode,
  196. ugr.order_code AS orderCode,
  197. ugr.is_refund AS isRefund
  198. FROM user_gold_record ugr
  199. where ugr.order_code = #{orderCode}
  200. AND ugr.jwcode = #{jwcode}
  201. AND ugr.flag = 1
  202. </select>
  203. <insert id="add" parameterType="com.example.demo.domain.entity.UserGoldRecord" useGeneratedKeys="true"
  204. keyProperty="id">
  205. INSERT INTO user_gold_record
  206. <trim prefix="(" suffix=")" suffixOverrides=",">
  207. order_code,
  208. jwcode,
  209. sum_gold,
  210. permanent_gold,
  211. free_june,
  212. free_december,
  213. task_gold,
  214. goods_name,
  215. remark,
  216. type,
  217. pay_platform,
  218. is_refund,
  219. admin_id,
  220. audit_status,
  221. create_time,
  222. pay_time
  223. </trim>
  224. VALUES
  225. <trim prefix="(" suffix=")" suffixOverrides=",">
  226. #{orderCode},
  227. #{jwcode},
  228. #{sumGold},
  229. #{permanentGold},
  230. #{freeJune},
  231. #{freeDecember},
  232. #{taskGold},
  233. #{goodsName},
  234. #{remark},
  235. #{type},
  236. #{payPlatform},
  237. #{isRefund},
  238. #{adminId},
  239. #{auditStatus},
  240. #{createTime},
  241. #{payTime}
  242. </trim>
  243. </insert>
  244. <update id="updateIsRefund" parameterType="java.lang.String">
  245. UPDATE user_gold_record
  246. SET is_refund = 1
  247. where order_code = #{orderCode}
  248. AND flag = 1
  249. </update>
  250. <update id="updateUserGold" parameterType="com.example.demo.domain.entity.UserGoldRecord">
  251. UPDATE user
  252. SET sum_consume_permanent = #{permanentGold},
  253. sum_consume_free = COALESCE(#{freeJune}, 0) + COALESCE(#{freeDecember}, 0),
  254. sum_consume_task = #{taskGold}
  255. where jwcode = #{jwcode}
  256. </update>
  257. </mapper>