Helius
2021-06-30 02b38bb7c08d68fffc6af25e4ba00a456d96e94e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
<?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>