| <?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.xzx.gc.order.mapper.OrderComplaintMapper">  | 
|   <resultMap id="BaseResultMap" type="com.xzx.gc.entity.OrderComplaint">  | 
|     <id column="id" jdbcType="BIGINT" property="id" />  | 
|     <result column="order_id" jdbcType="VARCHAR" property="orderId" />  | 
|     <result column="complaint_reason" jdbcType="VARCHAR" property="complaintReason" />  | 
|     <result column="create_time" jdbcType="VARCHAR" property="createTime" />  | 
|     <result column="del_flag" jdbcType="INTEGER" property="delFlag" />  | 
|     <result column="after_sale_flag" jdbcType="INTEGER" property="afterSaleFlag" />  | 
|     <result column="complain_img" jdbcType="VARCHAR" property="complainImg" />  | 
|     <result column="complaint_plan" jdbcType="VARCHAR" property="complaintPlan" />  | 
|     <result column="complaint_type" jdbcType="INTEGER" property="complaintType" />  | 
|     <result column="partner_id" jdbcType="VARCHAR" property="partnerId" />  | 
|   </resultMap>  | 
|   | 
|   | 
|     <select id="find" resultType="com.xzx.gc.order.dto.ComplaintFindResDto">  | 
|       select  | 
|       distinct  a.id,  | 
|       a.after_sale_flag "afterSaleFlag",  | 
|       a.complaint_plan "complaintPlan" ,  | 
|       a.complaint_reason "complaintReason",  | 
|       b.rela_name "relaName",  | 
|       b.rela_phone "relaPhone",  | 
|       b.order_id "orderId",  | 
|       b.create_time "createTime",  | 
|       b.address_area "addressArea",  | 
|       b.address,  | 
|       b.receiver,  | 
|       c.receiver_phone "receiverPhone",  | 
|       c.receiver_name "receiverName"  | 
|       from xzx_order_complaint a  | 
|       inner join xzx_order_info b on a.order_id=b.order_id  | 
|       left  join xzx_user_other_info d on b.receiver=d.user_id and d.del_flag=0 and d.is_prohibit=0  | 
|       inner join  xzx_order_detail_info c on b.order_id=c.order_id  | 
|       where  a.del_flag=0  | 
|       <if test="fenceIds != null">  | 
|         and b.town_id in  | 
|         <foreach collection="fenceIds" item="id" index="index" open="(" close=")" separator=",">  | 
|           #{id}  | 
|         </foreach>  | 
|       </if>  | 
|         <if test="keyword != null and keyword != ''">  | 
|             and (b.rela_phone like concat('%',#{keyword},'%') or  d.name like concat('%',#{keyword},'%') or c.receiver_phone  like concat('%',#{keyword},'%')   or b.rela_name like concat('%',#{keyword},'%'))  | 
|         </if>  | 
|         <if test="status != null and status != ''">  | 
|           and a.after_sale_flag=#{status}  | 
|         </if>  | 
|         order by a.after_sale_flag asc,b.create_time desc  | 
|     </select>  | 
|   | 
|   <select id="detail" resultType="com.xzx.gc.order.dto.ComplaintFindResDto">  | 
|     select  distinct  a.id,  | 
|     a.after_sale_flag "afterSaleFlag",  | 
|     a.complaint_plan "complaintPlan" ,  | 
|     a.complaint_reason "complaintReason",  | 
|     b.rela_name "relaName",  | 
|     b.rela_phone "relaPhone",  | 
|     b.order_id "orderId",  | 
|     a.create_time "createTime",  | 
|     b.address_area "addressArea",  | 
|     b.address,  | 
|     b.receiver,  | 
|     b.reserve_time "reserveTime",  | 
|     c.receiver_phone "receiverPhone",  | 
|     c.receiver_name "receiverName"  | 
|     from xzx_order_complaint a  | 
|     inner join xzx_order_info b on a.order_id=b.order_id  | 
|     left  join xzx_user_other_info d on b.receiver=d.user_id and d.del_flag=0 and d.is_prohibit=0  | 
|     inner join  xzx_order_detail_info c on b.order_id=c.order_id  | 
|     where  a.del_flag=0  | 
|     and a.order_id=#{orderId}  | 
|     order by a.create_time desc  | 
|   | 
|   </select>  | 
|   | 
|   | 
|   <select id="queryComplaintApiList" resultType="com.xzx.gc.model.admin.XzxOrderComplaintModel">  | 
|     SELECT a.id as id, b.order_id as orderId,b.create_time as createTime,a.after_sale_flag as afterSaleFlag,  | 
|     xyz.nick_name as nickName,xyz.create_user_phone as userPhone,xyz.del_flag as delFlag,  | 
|     xyz.name as collectorName,xyz.mobile_phone as collectorPhone,a.complaint_reason as complaintReason,  | 
|     e.config_value_name as complaintValue,a.complaint_plan as complaintPlan ,b.town_id,xyz.town_id as xTownId,  | 
|       (select m.partner_name from xzx_city_partner m where m.id = xyz.partner_id) as partnerName  | 
|     FROM xzx_order_complaint a  | 
|     LEFT JOIN xzx_order_info b ON a.order_id = b.order_id  | 
|     LEFT JOIN xzx_order_detail_info d ON a.order_id=d.order_id  | 
|     LEFT JOIN xzx_sys_config_info e ON e.config_value=a.complaint_type AND e.config_type_code='COMPLAINT_TYPE'  | 
|     LEFT JOIN (  | 
|     SELECT z.mobile_phone AS create_user_phone, x.order_id,z.nick_name,c.name,c.mobile_phone,y.town_id,c.del_flag,c.partner_id FROM  | 
|     xzx_order_complaint x  | 
|     LEFT JOIN xzx_order_info y ON x.order_id=y.order_id  | 
|     LEFT JOIN xzx_user_info z ON z.user_id = y.create_user_id  | 
|     LEFT JOIN xzx_user_other_info c ON y.receiver=c.user_id  | 
|     GROUP BY x.order_id  | 
|     ) as xyz ON a.order_id = xyz.order_id  | 
|     WHERE a.del_flag=0  | 
|     <if test="afterSaleFlags != null and afterSaleFlags.length != 0">  | 
|       AND after_sale_flag in  | 
|       <foreach collection="afterSaleFlags" index="index" item="id" open="(" separator="," close=")">  | 
|         #{id}  | 
|       </foreach>  | 
|     </if>  | 
|   | 
|     <if test="startTime != null and startTime != ''">  | 
|       AND a.create_time BETWEEN #{startTime} AND #{endTime}  | 
|     </if>  | 
|   | 
|     <if test="orderId != null and orderId != ''">  | 
|       AND b.order_id like concat("%",#{orderId} ,"%")  | 
|     </if>  | 
|   | 
|     <if test="userPhone != null and userPhone != ''">  | 
|       AND xyz.create_user_phone like concat("%",#{userPhone} ,"%")  | 
|     </if>  | 
|   | 
|     <if test="collectorName != null and collectorName != ''">  | 
|       AND xyz.name like concat("%",#{collectorName} ,"%")  | 
|     </if>  | 
|   | 
|     <if test="collectorPhone != null and collectorPhone != ''">  | 
|       AND xyz.mobile_phone like concat("%",#{collectorPhone} ,"%")  | 
|     </if>  | 
|   | 
|     <if test="partnerIds != null and partnerIds.size() != 0">  | 
|       AND b.town_id in (select p.fence_id from xzx_partner_fence p where p.del_flag=0 and p.partner_id in  | 
|       <foreach collection="partnerIds" index="index" item="id" open="(" separator="," close=")">  | 
|         #{id}  | 
|       </foreach>  | 
|       )  | 
|     </if>  | 
|     order by b.create_time desc  | 
|   </select>  | 
|   | 
|   | 
|   <update id="updateComplaintFlagApi">  | 
|     update xzx_order_complaint  | 
|     set  | 
|       after_sale_flag = #{afterSaleFlag},  | 
|       complaint_plan  = #{complaintPlan}  | 
|     where id = #{id}  | 
|   </update>  | 
|   | 
|   | 
|     <select id="queryComplaintList"  resultType="java.util.Map">  | 
|         SELECT a.id as complain_id, a.complaint_reason, a.create_time as create_timex, a.del_flag as del_flagx,  | 
|         a.after_sale_flag, a.complain_img, a.complaint_plan, a.complaint_type, b.*, c.nick_name as nick_namex, c.mobile_phone as receiver_phone  | 
|         , d.money, xyz.create_user_phone, e.config_value_name FROM xzx_order_complaint a  | 
|         LEFT JOIN xzx_order_info b ON a.order_id = b.order_id  | 
|         LEFT JOIN xzx_user_other_info c ON b.receiver=c.user_id  | 
|         LEFT JOIN xzx_order_detail_info d ON a.order_id=d.order_id  | 
|         LEFT JOIN xzx_sys_config_info e ON e.config_value=a.complaint_type AND e.config_type_code='COMPLAINT_TYPE'  | 
|         LEFT JOIN (  | 
|         SELECT z.mobile_phone AS create_user_phone, x.order_id FROM xzx_order_complaint x  | 
|         LEFT JOIN xzx_order_info y ON x.order_id=y.order_id  | 
|         LEFT JOIN xzx_user_info z ON z.user_id = y.create_user_id  | 
|         GROUP BY x.order_id  | 
|         ) as xyz ON a.order_id  = xyz.order_id  | 
|         WHERE a.del_flag=0  | 
|         <if test="afterSaleFlags != null">  | 
|             AND after_sale_flag in (  | 
|             <foreach collection="afterSaleFlags" index="index" item="id" open="(" separator="," close=")">  | 
|                 #{id}  | 
|             </foreach>  | 
|             )  | 
|         </if>  | 
|         <if test="startTime != null and startTime != ''">  | 
|             AND a.create_time BETWEEN  #{startTime} AND  #{endTime}  | 
|         </if>  | 
|         limit  #{page},  #{limit}  | 
|     </select>  | 
|   | 
|     <select id="queryComplaintListCount" resultType="java.lang.Integer">  | 
|         SELECT count(*) FROM xzx_order_complaint a  | 
|         LEFT JOIN xzx_order_info b ON a.order_id = b.order_id  | 
|         LEFT JOIN xzx_user_info c ON b.receiver=c.user_id  | 
|         LEFT JOIN xzx_order_detail_info d ON a.order_id=d.order_id  | 
|         LEFT JOIN xzx_sys_config_info e ON e.config_value=a.complaint_type AND e.config_type_code='COMPLAINT_TYPE'  | 
|         LEFT JOIN (  | 
|         SELECT z.mobile_phone AS create_user_phone, x.order_id FROM xzx_order_complaint x  | 
|         LEFT JOIN xzx_order_info y ON x.order_id=y.order_id  | 
|         LEFT JOIN xzx_user_info z ON z.user_id = y.create_user_id  | 
|         GROUP BY x.order_id  | 
|         ) as xyz ON a.order_id  = xyz.order_id  | 
|         WHERE a.del_flag=0  | 
|         <if test="afterSaleFlags != null">  | 
|             AND after_sale_flag in  | 
|             <foreach collection="ids" index="index" item="id" open="(" separator="," close=")">  | 
|                 #{id}  | 
|             </foreach>  | 
|         </if>  | 
|         <if test="startTime != null and startTime != ''">  | 
|             AND a.create_time BETWEEN #{startTime} AND #{endTime}  | 
|         </if>  | 
|     </select>  | 
|     <update id="updateComplaintFlag">  | 
|         update xzx_order_complaint set  | 
|             after_sale_flag=#{afterSaleFlag},  | 
|             complaint_plan=#{complaintPlan} where id=#{id}  | 
|     </update>  | 
|   | 
|     <select id="queryAdminComplaintList" resultType="com.xzx.gc.model.admin.ComplaintModel">  | 
|         SELECT  | 
|         a.after_sale_flag AS afterSaleFlag ,  | 
|         c.reserve_time AS reserveTime,  | 
|         c.complete_time AS completeTime,  | 
|         c.order_id AS orderId,  | 
|         c.money,  | 
|         c.weight,  | 
|         c.mobile_phone AS mobilePhone,  | 
|         d.partner_id AS partnerId  | 
|         FROM  | 
|         xzx_order_complaint a  | 
|         INNER JOIN xzx_order_info b ON a.order_id = b.order_id  | 
|         INNER JOIN xzx_user_other_info d on b.receiver=d.user_id  | 
|         INNER JOIN xzx_order_detail_info c ON b.order_id = c.order_id  | 
|         where b.order_status in('4','5','7')  | 
|         <if test="townIds != null and townIds.size() > 0">  | 
|             AND  b.town_id in  | 
|             <foreach collection="townIds" index="index" item="id" open="(" separator="," close=")">  | 
|                 #{id}  | 
|             </foreach>  | 
|         </if>  | 
|         <if test="startTime != null and startTime != ''">  | 
|             AND  c.reserve_time<![CDATA[>= ]]> #{startTime}  | 
|         </if>  | 
|         <if test="endTime != null and endTime != ''">  | 
|             AND  c.reserve_time<![CDATA[<= ]]> #{endTime}  | 
|         </if>  | 
|         <if test="orderId != null and orderId != ''">  | 
|             AND  c.order_id like concat('%',#{orderId} ,'%')  | 
|         </if>  | 
|         <if test="mobilePhone != null and mobilePhone != ''">  | 
|             AND  c.mobile_phone like concat('%',#{mobilePhone} ,'%')  | 
|         </if>  | 
|         order by c.reserve_time desc  | 
|     </select>  | 
|     <select id="queryByOrderNoCount" resultType="int">  | 
|         select count(id) from xzx_order_complaint where order_id=#{orderId}  | 
|     </select>  | 
|   | 
|   | 
| </mapper> |