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.

343 lines
13 KiB

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