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.

235 lines
9.3 KiB

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.coin.RefundMapper">
<!-- 查询所有退款记录 -->
<select id="selectAll" resultType="com.example.demo.domain.vo.coin.RefundUser">
SELECT u.name AS name,
ugr.jwcode AS jwcode,
m.name as market,
ugr.order_code AS orderCode,
ugr.goods_name AS goodsName,
ugr.refund_model AS refundModel,
ugr.refund_type AS refundType,
ugr.sum_gold AS sumGold,
ugr.permanent_gold AS permanentGold,
(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0)) AS freeGold,
ugr.task_gold AS taskGold,
ugr.remark AS remark,
a.admin_name AS adminName,
ugr.create_time AS createTime
FROM user_gold_record ugr
left JOIN
user u ON u.jwcode = ugr.jwcode
left JOIN
admin a ON ugr.admin_id = a.id
left join market m ON u.market = m.id
<where>
ugr.type = 2 AND ugr.audit_status IN (1,3) AND ugr.flag = 1
<!-- 判断 market 是否不为总部且 markets 不为空 -->
<if test="markets != null and markets.size() > 0 and '9999' not in markets and '9' not in markets">
AND (
<foreach collection="markets" item="market" open="" close="" separator=" OR ">
u.market = #{market}
</foreach>
)
</if>
</where>
<trim prefix="ORDER BY" suffixOverrides=",">
<choose>
<!-- 当指定排序字段时使用指定字段排序 -->
<when test="sortField != null and sortField != ''">
<choose>
<!-- 对三种金币数量的排序处理 -->
<when test="sortField == 'taskGold'">ugr.task_gold</when>
<when test="sortField == 'permanentGold'">ugr.permanent_gold</when>
<when test="sortField == 'freeGold'">(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december,
0))
</when>
<!-- 对时间字段的排序处理 -->
<when test="sortField == 'createTime'">ugr.create_time</when>
<!-- 其他字段不支持排序,使用默认排序 -->
<otherwise>ugr.create_time</otherwise>
</choose>
<!-- 排序方向处理 -->
<if test="sortOrder != null and sortOrder != ''">
<choose>
<when test="sortOrder == 'ASC'">ASC</when>
<when test="sortOrder == 'DESC'">DESC</when>
<otherwise>DESC</otherwise>
</choose>
</if>
<if test="sortOrder == null or sortOrder == ''">
DESC
</if>
</when>
<!-- 未指定排序字段时,使用默认的时间降序排序 -->
<otherwise>
ugr.create_time DESC
</otherwise>
</choose>
</trim>
</select>
<!-- 查询筛选后消费记录 -->
<select id="selectBy" resultType="com.example.demo.domain.vo.coin.RefundUser">
SELECT u.name AS name,
ugr.jwcode AS jwcode,
m.name as market,
ugr.order_code AS orderCode,
ugr.goods_name AS goodsName,
ugr.refund_model AS refundModel,
ugr.refund_type AS refundType,
ugr.sum_gold AS sumGold,
ugr.permanent_gold AS permanentGold,
(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0)) AS freeGold,
ugr.task_gold AS taskGold,
ugr.remark AS remark,
a.admin_name AS adminName,
ugr.create_time AS createTime
FROM user_gold_record ugr
left JOIN
user u ON u.jwcode = ugr.jwcode
left JOIN
admin a ON ugr.admin_id = a.id
left join market m ON u.market = m.id
<where>
ugr.type = 2 AND ugr.audit_status IN (1,3) AND ugr.flag = 1
<if test="markets != null and markets.size() > 0 and '9999' not in markets and '9' not in markets">
AND (
<foreach collection="markets" item="market" open="" close="" separator=" OR ">
u.market = #{market}
</foreach>
)
</if>
<if test="jwcode != null and jwcode != ''">
AND ugr.jwcode = #{jwcode}
</if>
<if test="goodsName != null and goodsName != ''">
AND ugr.goods_name = #{goodsName}
</if>
<if test="market != null and market != ''">
AND u.market = #{market}
</if>
<if test="refundModel != null and refundModel != ''">
AND ugr.refund_model = #{refundModel}
</if>
<if test="refundType != null and refundType != ''">
AND ugr.refund_type = #{refundType}
</if>
<if test="startTime != null and endTime != null">
AND ugr.create_time BETWEEN #{startTime} AND #{endTime}
</if>
</where>
<trim prefix="ORDER BY" suffixOverrides=",">
<choose>
<!-- 当指定排序字段时使用指定字段排序 -->
<when test="sortField != null and sortField != ''">
<choose>
<!-- 对三种金币数量的排序处理 -->
<when test="sortField == 'taskGold'">ugr.task_gold</when>
<when test="sortField == 'permanentGold'">ugr.permanent_gold</when>
<when test="sortField == 'freeGold'">(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december,
0))
</when>
<when test="sortField == 'sumGold'">(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december,
0)+ COALESCE(ugr.permanent_gold, 0)+ COALESCE(ugr.task_gold, 0))
</when>
<!-- 对时间字段的排序处理 -->
<when test="sortField == 'createTime'">ugr.create_time</when>
<!-- 其他字段不支持排序,使用默认排序 -->
<otherwise>ugr.create_time</otherwise>
</choose>
<!-- 排序方向处理 -->
<if test="sortOrder != null and sortOrder != ''">
<choose>
<when test="sortOrder == 'ASC'">ASC</when>
<when test="sortOrder == 'DESC'">DESC</when>
<otherwise>DESC</otherwise>
</choose>
</if>
<if test="sortOrder == null or sortOrder == ''">
DESC
</if>
</when>
<!-- 未指定排序字段时,使用默认的时间降序排序 -->
<otherwise>
ugr.create_time DESC
</otherwise>
</choose>
</trim>
</select>
<insert id="add" parameterType="com.example.demo.domain.entity.UserGoldRecord" useGeneratedKeys="true"
keyProperty="id">
INSERT INTO user_gold_record
<trim prefix="(" suffix=")" suffixOverrides=",">
order_code,
jwcode,
refund_type,
refund_model,
sum_gold,
permanent_gold,
free_june,
free_december,
task_gold,
goods_name,
pay_platform,
remark,
type,
admin_id,
audit_status,
create_time
</trim>
VALUES
<trim prefix="(" suffix=")" suffixOverrides=",">
#{orderCode},
#{jwcode},
#{refundType},
#{refundModel},
#{sumGold},
#{permanentGold},
#{freeJune},
#{freeDecember},
#{taskGold},
#{goodsName},
#{payPlatform},
#{remark},
#{type},
#{adminId},
#{auditStatus},
#{createTime}
</trim>
</insert>
<select id="getRefundType" resultType="java.lang.String">
select DISTINCT refund_Type
from user_gold_record
</select>
<select id="selectGoods" resultType="com.example.demo.domain.vo.coin.RefundUser">
SELECT
ugr.goods_name AS goodsName,
ugr.order_code AS orderCode,
ugr.permanent_gold AS permanentGold,
(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0)) AS freeGold,
ugr.task_gold AS taskGold
FROM user_gold_record ugr
<where>
ugr.type = 1
AND ugr.is_refund = 0
AND ugr.flag = 1
<if test="jwcode != null and jwcode != ''">
AND ugr.jwcode = #{jwcode}
</if>
</where>
<trim prefix="ORDER BY" suffixOverrides=",">
ugr.create_time DESC
</trim>
</select>
</mapper>