|
|
<?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, u.market 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 <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 '1' not in markets"> AND ( <foreach collection="markets" item="market" open="" close="" separator=" OR "> u.market LIKE CONCAT('%', #{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, u.market 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 <where> ugr.type = 2 AND ugr.audit_status IN (1,3) AND ugr.flag = 1 <if test="markets != null and markets.size > 0 and !(markets.size() == 1 and markets[0] == '')"> AND u.market IN <foreach collection="markets" item="market" open="(" separator="," close=")"> #{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>
|