Helius
2021-06-28 f820cfcc5f5ce5faa9af12efe9069bba82958f86
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
package com.xzx.gc.order.controller;
 
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.xzx.gc.common.Result;
import com.xzx.gc.common.constant.CommonEnum;
import com.xzx.gc.common.constant.Constants;
import com.xzx.gc.common.constant.OrderEnum;
import com.xzx.gc.common.dto.CommonDto;
import com.xzx.gc.common.dto.log.OperationAppLog;
import com.xzx.gc.common.request.BaseController;
import com.xzx.gc.common.utils.MqUtil;
import com.xzx.gc.entity.OrderComplaint;
import com.xzx.gc.entity.UserInfo;
import com.xzx.gc.model.JsonResult;
import com.xzx.gc.model.admin.ComplaintModel;
import com.xzx.gc.model.admin.XzxOrderComplaintModel;
import com.xzx.gc.order.dto.ComplaintDetailDto;
import com.xzx.gc.order.dto.ComplaintFindDto;
import com.xzx.gc.order.dto.ComplaintFindResDto;
import com.xzx.gc.order.dto.OrderComplaintAddDto;
import com.xzx.gc.order.mapper.OtherUserMapper;
import com.xzx.gc.order.mapper.UserShareInfoMapper;
import com.xzx.gc.order.service.CityPartnerService;
import com.xzx.gc.order.service.OrderComplaintService;
import com.xzx.gc.order.service.PartnerFenceService;
import com.xzx.gc.order.service.UserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
 
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
/**
 * @author :zz
 */
@RestController
@Api(tags = {"订单投诉管理"})
public class ComplaintController extends BaseController {
 
 
    @Autowired
    private OrderComplaintService orderComplaintService;
    @Autowired
    private CityPartnerService cityPartnerService;
 
    @Autowired
    private PartnerFenceService partnerFenceService;
 
    @Autowired
    private OtherUserMapper otherUserMapper;
    @Autowired
    private UserShareInfoMapper userShareInfoMapper;
 
    @Autowired
    private UserService userService;
 
    @Autowired
    private MqUtil mqUtil;
 
    private static final String MODEL = "/admin/front/complaint";
 
    @PostMapping("/complaint")
    @ApiOperation(value = "新增投诉")
    public Result add(@RequestBody OrderComplaintAddDto orderComplaintAddDto, HttpServletRequest request){
        OrderComplaint orderComplaint = new OrderComplaint();
        BeanUtils.copyProperties(orderComplaintAddDto, orderComplaint);
        orderComplaint.setDelFlag(0);
        orderComplaint.setCreateTime(DateUtil.now());
        orderComplaint.setAfterSaleFlag(0);
        orderComplaintService.add(orderComplaint);
        String mobilePhone = userService.findOtherByUserId(getUserId(request),0);
        OperationAppLog build = OperationAppLog.builder().appPrograme(getFrontClient(request)).opreateName(mobilePhone)
                .methodName(Constants.ORDER_MODUL_NAME).operateAction("新增投诉-"+orderComplaint.getId()).build();
        mqUtil.sendApp(build);
        return new Result<>("投诉成功");
    }
 
 
    @PostMapping("/complaint/find")
    @ApiOperation(value = "分页查询投诉列表")
    public Result<PageInfo<ComplaintFindResDto>> find(@RequestBody ComplaintFindDto complaintFindDto, HttpServletRequest request){
        String partnerId=otherUserMapper.selectByPrimaryKey(getUserId(request)).getPartnerId();
        List<String> collect =partnerFenceService.findFences(partnerId);
        complaintFindDto.setFenceIds(collect);
        PageHelper.startPage(complaintFindDto.getPageNo(),complaintFindDto.getPageSize());
        List<ComplaintFindResDto> orderComplaints = orderComplaintService.find(complaintFindDto);
        PageInfo<ComplaintFindResDto> pageInfo=new PageInfo<>(orderComplaints);
        return Result.success(pageInfo);
    }
 
    @PostMapping("/complaint/detail")
    @ApiOperation(value = "订单投诉详情")
    public Result<List<ComplaintFindResDto>> detail(@RequestBody ComplaintDetailDto complaintDetailDto, HttpServletRequest request){
        List<ComplaintFindResDto> orderComplaints = orderComplaintService.detail(complaintDetailDto.getOrderId());
        return Result.success(orderComplaints);
    }
 
 
    @PostMapping("/complaint/update")
    @ApiOperation(value = "投诉处理")
    public Result<PageInfo<OrderComplaint>> update(@RequestBody CommonDto commonDto,HttpServletRequest request){
        OrderComplaint orderComplaint=new OrderComplaint();
        orderComplaint.setId(Convert.toLong(commonDto.getId()));
        orderComplaint.setComplaintPlan(commonDto.getExtra());
        orderComplaint.setAfterSaleFlag(Convert.toInt(OrderEnum.投诉已处理.getValue()));
        orderComplaintService.updateByPrimaryKeySelective(orderComplaint);
 
        String mobilePhone = userService.findOtherByUserId(getUserId(request),1);
        OperationAppLog build = OperationAppLog.builder().appPrograme(getFrontClient(request)).opreateName(mobilePhone)
                .methodName(Constants.ORDER_MODUL_NAME).operateAction("投诉处理-"+orderComplaint.getId()).build();
        mqUtil.sendApp(build);
        return new Result<>("");
    }
 
    @PostMapping(Constants.ADMIN_VIEW_PREFIX + "/complaint/queryComplaintApiList.json")
    @ResponseBody
    @ApiOperation(value="投诉列表(包含详情数据)", notes="test: 仅0有正确返回")
    public JsonResult<Map<String,Object>> queryComplaintApiList(@RequestBody XzxOrderComplaintModel model){
        Map<String,Object> map =  orderComplaintService.queryComplaintApiList(model);
        return JsonResult.success(map);
 
    }
 
    @PostMapping(Constants.ADMIN_VIEW_PREFIX+"/complaint/updateComplaintFlagApi.json")
    @ResponseBody
    @ApiOperation(value="投诉处理", notes="test: 仅0有正确返回")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType="query", name = "id", value = "主键", required = true, dataType = "Long"),
            @ApiImplicitParam(paramType="query", name = "complaintPlan", value = "处理备注", required = true, dataType = "String"),
            @ApiImplicitParam(paramType="query", name = "afterSaleFlag", value = "订单处理标记 0:未处理,1:以处理,2:取消订单,3:重新派单", required = true, dataType = "String"),
            @ApiImplicitParam(paramType="query", name = "orderId", value = "订单Id", required = true, dataType = "String")
    })
    public JsonResult<String> updateComplaintFlagApi(@RequestBody XzxOrderComplaintModel model,HttpServletRequest request){
        int num =  orderComplaintService.updateComplaintFlagApi(model);
        if(num>=1){
            OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request))
                    .methodName(Constants.ORDER_MODUL_NAME).operateAction("投诉处理-"+model.getId()).build();
            mqUtil.sendApp(build);
            return new JsonResult().success();
        }else{
            return JsonResult.failMessage("修改失败");
        }
    }
 
    @PostMapping(MODEL + "/queryComplaintList.json")
    @ResponseBody
    @ApiOperation(value = "订单投诉列表", notes = "test: 仅0有正确返回")
    public JsonResult<Map<String, Object>> queryComplaintList(@RequestBody ComplaintModel model) {
        List<String> partnerIds = new ArrayList<>();
        if(null!=model.getPartnerId()&&!"".equals(model.getPartnerId())){
            partnerIds.add(model.getPartnerId());
        }else{
            partnerIds=  cityPartnerService.queryPartnerByCurrent();
        }
 
        if(CollUtil.isNotEmpty(partnerIds)){
            List<String> fenceIds = userShareInfoMapper.queryFenceByPartnerIds(partnerIds);
            model.setTownIds(fenceIds);
        }
 
        PageInfo<ComplaintModel> pageInfo =orderComplaintService.queryComplaintList(model);
        Map<String,Object> map = new HashMap<>();
        map.put("data",pageInfo.getList());
        map.put("count",pageInfo.getTotal());
        map.put("code",0);
        return JsonResult.success(map);
    }
 
    @PostMapping(MODEL + "/updateComplaintMoney.json")
    @ResponseBody
    @ApiOperation(value = "订单投诉列表", notes = "test: 仅0有正确返回")
    public JsonResult<String> updateComplaintMoney(@RequestBody ComplaintModel model) {
        String detail = orderComplaintService.updateComplaintMoney(model);
        if(null!=detail&&!"".equals(detail)){
            return JsonResult.failMessage(detail);
 
        }else{
            return JsonResult.success("处理完成!");
 
        }
 
    }
}