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.
223 lines
8.7 KiB
223 lines
8.7 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.ConsumeMapper">
|
|
|
|
<!-- 查询所有消费记录 -->
|
|
<select id="selectAll" resultType="com.example.demo.domain.vo.ConsumeUser">
|
|
SELECT u.name AS name,
|
|
u.jwcode AS jwcode,
|
|
u.market AS market,
|
|
ugr.goods_name AS goodsName,
|
|
ugr.pay_platform AS payPlatform,
|
|
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 = 1 AND ugr.flag = 1
|
|
<!-- 判断 market 是否不为总部且 markets 不为空 -->
|
|
<if test="markets != null and markets.size() > 0 and '总部' 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.ConsumeUser">
|
|
SELECT u.name AS name,
|
|
u.jwcode AS jwcode,
|
|
u.market AS market,
|
|
ugr.goods_name AS goodsName,
|
|
ugr.pay_platform AS payPlatform,
|
|
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 = 1 AND ugr.flag = 1
|
|
<if test="markets != null and markets.size() > 0 and '总部' not in markets">
|
|
AND (
|
|
<foreach collection="markets" item="market" open="" close="" separator=" OR ">
|
|
u.market LIKE CONCAT('%', #{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="payPlatform != null and payPlatform != ''">
|
|
AND ugr.pay_platform = #{payPlatform}
|
|
</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 == '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="selectOrderCodeByJwcode" resultType="com.example.demo.domain.vo.ConsumeUser">
|
|
SELECT ugr.jwcode AS jwcode,
|
|
ugr.order_code AS orderCode,
|
|
ugr.is_refund AS isRefund
|
|
FROM user_gold_record ugr
|
|
where ugr.order_code = #{orderCode}
|
|
AND ugr.jwcode = #{jwcode}
|
|
AND ugr.flag = 1
|
|
</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,
|
|
sum_gold,
|
|
permanent_gold,
|
|
free_june,
|
|
free_december,
|
|
task_gold,
|
|
goods_name,
|
|
remark,
|
|
type,
|
|
pay_platform,
|
|
is_refund,
|
|
admin_id,
|
|
audit_status,
|
|
create_time,
|
|
pay_time
|
|
</trim>
|
|
VALUES
|
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
|
#{orderCode},
|
|
#{jwcode},
|
|
#{sumGold},
|
|
#{permanentGold},
|
|
#{freeJune},
|
|
#{freeDecember},
|
|
#{taskGold},
|
|
#{goodsName},
|
|
#{remark},
|
|
#{type},
|
|
#{payPlatform},
|
|
#{isRefund},
|
|
#{adminId},
|
|
#{auditStatus},
|
|
#{createTime},
|
|
#{payTime}
|
|
</trim>
|
|
</insert>
|
|
|
|
<update id="updateIsRefund" parameterType="java.lang.String">
|
|
UPDATE user_gold_record
|
|
SET is_refund = 1
|
|
where order_code = #{orderCode}
|
|
AND flag = 1
|
|
</update>
|
|
|
|
<update id="updateUserGold" parameterType="com.example.demo.domain.entity.UserGoldRecord">
|
|
UPDATE user
|
|
SET sum_consume_permanent = #{permanentGold},
|
|
sum_consume_free = COALESCE(#{freeJune}, 0) + COALESCE(#{freeDecember}, 0),
|
|
sum_consume_task = #{taskGold}
|
|
where jwcode = #{jwcode}
|
|
</update>
|
|
|
|
</mapper>
|