2025-08-13 17:35:50 +08:00

140 lines
6.0 KiB
XML

<?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.wzj.soopin.order.mapper.AftersaleMapper">
<resultMap type="Aftersale" id="AftersaleResult">
<result property="id" column="id"/>
<result property="memberId" column="member_id"/>
<result property="orderId" column="order_id"/>
<result property="returnAmount" column="return_amount"/>
<result property="type" column="type"/>
<result property="status" column="status"/>
<result property="handleTime" column="handle_time"/>
<result property="quantity" column="quantity"/>
<result property="reason" column="reason"/>
<result property="description" column="description"/>
<result property="proofPics" column="proof_pics"/>
<result property="handleNote" column="handle_note"/>
<result property="handleMan" column="handle_man"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time" />
</resultMap>
<sql id="selectAftersaleVo">
select id, member_id, order_id, return_amount, type, status, handle_time, quantity, reason, description, proof_pics, handle_note, handle_man, create_by, create_time, update_by, update_time from oms_aftersale
</sql>
<select id="selectByEntity" parameterType="Aftersale" resultMap="AftersaleResult">
<include refid="selectAftersaleVo"/>
<where>
<if test="memberId != null "> and member_id = #{memberId}</if>
<if test="orderId != null "> and order_id = #{orderId}</if>
<if test="returnAmount != null "> and return_amount = #{returnAmount}</if>
<if test="type != null "> and type = #{type}</if>
<if test="status != null "> and status = #{status}</if>
<if test="handleTime != null "> and handle_time = #{handleTime}</if>
<if test="quantity != null "> and quantity = #{quantity}</if>
<if test="reason != null and reason != ''"> and reason = #{reason}</if>
<if test="description != null and description != ''"> and description = #{description}</if>
<if test="proofPics != null and proofPics != ''"> and proof_pics = #{proofPics}</if>
<if test="handleNote != null and handleNote != ''"> and handle_note = #{handleNote}</if>
<if test="handleMan != null and handleMan != ''"> and handle_man = #{handleMan}</if>
</where>
</select>
<select id="selectManagerRefundOrder" resultType="com.wzj.soopin.order.domain.vo.ManagerRefundOrderVO">
SELECT a.id id,
a.return_amount applyReturnAmount,
a.quantity refundNum,
a.type applyRefundType,
a.reason reason,
a.description description,
a.proof_pics proof_pics,
a.order_id orderId,
a.create_time applyRefundTime,
a.status aftersaleStatus,
a.handle_time handleTime,
a.handle_note note,
a.handle_man,
c.nickname nickName,
c.phone_hidden phone,
c.mark,
a.refund_wp_code refundWpCode,
a.refund_waybill_code refundWaybillCode
FROM oms_aftersale a
left join ums_member c on a.member_id = c.id
<where>
<if test="id != null">
and a.id = #{id}
</if>
<if test="orderSn != null and orderSn != ''">
and a.order_id = #{orderSn}
</if>
<if test="userPhone != null and userPhone != ''">
and instr(c.phone, #{userPhone}) > 0
</if>
<if test="status != null">
and a.status = #{status}
</if>
<if test="type != null">
and a.type = #{type}
</if>
<if test="startTime != null and endTime != null">
and a.create_time between #{startTime} and #{endTime}
</if>
</where>
order by a.create_time desc
</select>
<select id="countByMemberId" resultType="java.lang.Integer">
select
IFNULL(count(distinct id), 0)
from oms_aftersale
where member_id=#{memberId}
</select>
<select id="statPendingAndProcessing"
resultType="com.wzj.soopin.order.domain.vo.OrderAndAftersaleStatisticsVO">
select
IFNULL(sum(case when status=0 then 1 else 0 end), 0) pendingAftersaleCount,
IFNULL(sum(case when status=1 then 1 else 0 end), 0) processingAftersaleCount
from oms_aftersale
</select>
<select id="getlist" resultType="com.wzj.soopin.order.domain.vo.AftersaleVO">
SELECT
a.*,
o.order_sn AS orderSn,
m.nickname AS nickname,
m.phone_encrypted AS phone
FROM
oms_aftersale a
LEFT JOIN
oms_order o ON a.order_id = o.id
LEFT JOIN
ums_member m ON a.member_id = m.id
WHERE 1=1
<if test="tenantId != '000000'">
AND a.tenant_id = #{tenantId}
</if>
<if test="query.memberId != null and query.memberId != ''">
AND a.member_id LIKE CONCAT('%', #{query.memberId}, '%')
</if>
<if test="query.orderId != null and query.orderId != ''">
AND a.order_id LIKE CONCAT('%', #{query.orderId}, '%')
</if>
<if test="query.returnAmount != null">
AND a.return_amount = #{query.returnAmount}
</if>
<if test="query.quantity != null">
AND a.quantity = #{query.quantity}
</if>
</select>
</mapper>