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.

327 lines
12 KiB

7 months ago
7 months ago
6 months ago
7 months ago
7 months ago
7 months ago
7 months ago
6 months ago
7 months ago
6 months ago
6 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
6 months ago
7 months ago
7 months ago
6 months ago
6 months ago
6 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
6 months ago
7 months ago
6 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. COALESCE(ugr.sum_gold, 0)/100 AS sumGold,
  79. COALESCE(ugr.permanent_gold, 0)/100 AS permanentGold,
  80. (COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0))/100 AS freeGold,
  81. COALESCE(ugr.task_gold, 0)/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. -- 关联退款订单信息
  87. COALESCE(ugr1.sum_gold, 0)/100 AS refundSumGold,
  88. COALESCE(ugr1.permanent_gold, 0)/100 AS refundPermanentGold,
  89. (COALESCE(ugr1.free_june, 0) + COALESCE(ugr1.free_december, 0))/100 AS refundFreeGold,
  90. COALESCE(ugr1.task_gold, 0)/100 AS refundTaskGold,
  91. ugr1.refund_model AS refundModel
  92. FROM user_gold_record ugr
  93. left JOIN
  94. user u ON u.jwcode = ugr.jwcode
  95. left JOIN
  96. admin a ON ugr.admin_id = a.id
  97. left join market m ON u.market = m.id
  98. -- 关联退款订单
  99. left JOIN user_gold_record ugr1 ON ugr1.order_code = CONCAT('TK_', ugr.order_code )
  100. <where>
  101. ugr.type = 1 AND ugr.flag = 1
  102. <if test="markets != null and markets.size() > 0">
  103. AND u.market IN
  104. <foreach collection="markets" item="market" open="(" separator="," close=")">
  105. #{market}
  106. </foreach>
  107. </if>
  108. <if test="flag != 0">
  109. AND u.flag = 1
  110. </if>
  111. <if test="jwcode != null and jwcode != ''">
  112. AND ugr.jwcode = #{jwcode}
  113. </if>
  114. <if test="isRefund != null ">
  115. AND ugr.is_refund = #{isRefund}
  116. </if>
  117. <if test="goodsName != null and goodsName != ''">
  118. AND ugr.goods_name = #{goodsName}
  119. </if>
  120. <if test="market != null and market != ''">
  121. AND u.market = #{market}
  122. </if>
  123. <if test="payPlatform != null and payPlatform != ''">
  124. AND ugr.pay_platform = #{payPlatform}
  125. </if>
  126. <if test="startTime != null and endTime != null">
  127. AND ugr.create_time BETWEEN #{startTime} AND #{endTime}
  128. </if>
  129. </where>
  130. <trim prefix="ORDER BY" suffixOverrides=",">
  131. <choose>
  132. <!-- 当指定排序字段时使用指定字段排序 -->
  133. <when test="sortField != null and sortField != ''">
  134. <choose>
  135. <!-- 对三种金币数量的排序处理 -->
  136. <when test="sortField == 'taskGold'">ugr.task_gold</when>
  137. <when test="sortField == 'permanentGold'">ugr.permanent_gold</when>
  138. <when test="sortField == 'freeGold'">(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december,
  139. 0))
  140. </when>
  141. <!-- 对时间字段的排序处理 -->
  142. <when test="sortField == 'createTime'">ugr.create_time</when>
  143. <!-- 其他字段不支持排序,使用默认排序 -->
  144. <otherwise>ugr.create_time</otherwise>
  145. </choose>
  146. <!-- 排序方向处理 -->
  147. <if test="sortOrder != null and sortOrder != ''">
  148. <choose>
  149. <when test="sortOrder == 'ASC'">ASC</when>
  150. <when test="sortOrder == 'DESC'">DESC</when>
  151. <otherwise>DESC</otherwise>
  152. </choose>
  153. </if>
  154. <if test="sortOrder == null or sortOrder == ''">
  155. DESC
  156. </if>
  157. </when>
  158. <!-- 未指定排序字段时,使用默认的时间降序排序 -->
  159. <otherwise>
  160. ugr.create_time DESC
  161. </otherwise>
  162. </choose>
  163. </trim>
  164. </select>
  165. <!-- 查询筛选后消费记录 -->
  166. <select id="sumGold" resultType="com.example.demo.domain.vo.coin.Gold">
  167. SELECT
  168. SUM(ugr.sum_gold)/100 AS sumGolds,
  169. SUM(ugr.permanent_gold)/100 AS permanentGolds,
  170. sum(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0))/100 AS freeGolds,
  171. SUM(ugr.task_gold)/100 AS taskGolds,
  172. count(ugr.id) AS totalNum
  173. FROM user_gold_record ugr
  174. left JOIN
  175. user u ON u.jwcode = ugr.jwcode
  176. left join market m ON u.market = m.id
  177. <where>
  178. ugr.type = 1 AND ugr.flag = 1
  179. <if test="markets != null and markets.size() > 0">
  180. AND u.market IN
  181. <foreach collection="markets" item="market" open="(" separator="," close=")">
  182. #{market}
  183. </foreach>
  184. </if>
  185. <if test="flag != 0">
  186. AND u.flag = 1
  187. </if>
  188. <if test="jwcode != null and jwcode != ''">
  189. AND ugr.jwcode = #{jwcode}
  190. </if>
  191. <if test="goodsName != null and goodsName != ''">
  192. AND ugr.goods_name = #{goodsName}
  193. </if>
  194. <if test="market != null and market != ''">
  195. AND u.market = #{market}
  196. </if>
  197. <if test="payPlatform != null and payPlatform != ''">
  198. AND ugr.pay_platform = #{payPlatform}
  199. </if>
  200. <if test="startTime != null and endTime != null">
  201. AND ugr.create_time BETWEEN #{startTime} AND #{endTime}
  202. </if>
  203. </where>
  204. </select>
  205. <select id="selectOrderCodeByJwcode" resultType="com.example.demo.domain.vo.coin.ConsumeUser">
  206. SELECT ugr.jwcode AS jwcode,
  207. ugr.order_code AS orderCode,
  208. ugr.is_refund AS isRefund
  209. FROM user_gold_record ugr
  210. where ugr.order_code = #{orderCode}
  211. AND ugr.jwcode = #{jwcode}
  212. AND ugr.flag = 1
  213. </select>
  214. <insert id="add" parameterType="com.example.demo.domain.entity.UserGoldRecord" useGeneratedKeys="true"
  215. keyProperty="id">
  216. INSERT INTO user_gold_record
  217. <trim prefix="(" suffix=")" suffixOverrides=",">
  218. order_code,
  219. jwcode,
  220. sum_gold,
  221. permanent_gold,
  222. free_june,
  223. free_december,
  224. task_gold,
  225. goods_name,
  226. remark,
  227. type,
  228. pay_platform,
  229. is_refund,
  230. admin_id,
  231. audit_status,
  232. create_time,
  233. pay_time,
  234. price,link_id
  235. </trim>
  236. VALUES
  237. <trim prefix="(" suffix=")" suffixOverrides=",">
  238. #{orderCode},
  239. #{jwcode},
  240. #{sumGold},
  241. #{permanentGold},
  242. #{freeJune},
  243. #{freeDecember},
  244. #{taskGold},
  245. #{goodsName},
  246. #{remark},
  247. #{type},
  248. #{payPlatform},
  249. #{isRefund},
  250. #{adminId},
  251. #{auditStatus},
  252. #{createTime},
  253. #{payTime},
  254. #{price},
  255. #{linkId}
  256. </trim>
  257. </insert>
  258. <insert id="addRefund" parameterType="com.example.demo.domain.entity.UserGoldRecord" useGeneratedKeys="true"
  259. keyProperty="id">
  260. INSERT INTO user_gold_record
  261. <trim prefix="(" suffix=")" suffixOverrides=",">
  262. order_code,
  263. jwcode,
  264. sum_gold,
  265. permanent_gold,
  266. free_june,
  267. free_december,
  268. task_gold,
  269. goods_name,
  270. remark,
  271. type,
  272. refund_type,
  273. refund_model,
  274. pay_platform,
  275. admin_id,
  276. audit_status,
  277. create_time,
  278. pay_time
  279. </trim>
  280. VALUES
  281. <trim prefix="(" suffix=")" suffixOverrides=",">
  282. #{orderCode},
  283. #{jwcode},
  284. #{sumGold},
  285. #{permanentGold},
  286. #{freeJune},
  287. #{freeDecember},
  288. #{taskGold},
  289. #{goodsName},
  290. #{remark},
  291. #{type},
  292. #{refundType},
  293. #{refundModel},
  294. #{payPlatform},
  295. #{adminId},
  296. #{auditStatus},
  297. #{createTime},
  298. #{payTime}
  299. </trim>
  300. </insert>
  301. <update id="updateIsRefund" parameterType="java.lang.String">
  302. UPDATE user_gold_record
  303. SET is_refund = 1
  304. where order_code = #{orderCode}
  305. AND flag = 1
  306. </update>
  307. <update id="updateUserGold" parameterType="com.example.demo.domain.entity.UserGoldRecord">
  308. UPDATE user
  309. SET sum_consume_permanent = #{permanentGold},
  310. sum_consume_free = COALESCE(#{freeJune}, 0) + COALESCE(#{freeDecember}, 0),
  311. sum_consume_task = #{taskGold}
  312. where jwcode = #{jwcode}
  313. </update>
  314. </mapper>