Commit 839b6888 authored by zhangzc's avatar zhangzc

添加货主投诉功能

parent 041b1158
package com.esv.freight.app.feign;
import com.alibaba.fastjson.JSONObject;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
/**
* @description:
* @project: freight-app-service
* @name: com.esv.freight.app.feign.OwnerComplaintInterface
* @author: 张志臣
* @email: zhangzhichen@esvtek.com
* @createTime: 2020/05/28 14:20
* @version:1.0
*/
@FeignClient(value = "freight-tms-service")
public interface OwnerComplaintInterface {
/**
* 分页查询
* @param bodyJson
* @return
*/
@PostMapping(value = "tms/complaint/owner/list")
JSONObject list(JSONObject bodyJson);
/**
* 详情查询
* @param bodyJson
* @return
*/
@PostMapping(value = "tms/complaint/owner/detail")
JSONObject detail(JSONObject bodyJson);
/**
* 新增投诉
* @param bodyJson
* @return
*/
@PostMapping(value = "tms/complaint/owner/add")
JSONObject add(JSONObject bodyJson);
/**
* 编辑投诉
* @param bodyJson
* @return
*/
@PostMapping(value = "tms/complaint/owner/edit")
JSONObject edit(JSONObject bodyJson);
/**
* 取消投诉
* @param bodyJson
* @return
*/
@PostMapping(value = "tms/complaint/owner/cancel")
JSONObject cancel(JSONObject bodyJson);
}
package com.esv.freight.app.module.complaint.controller;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @description: 司机投诉Controller
* @project: freight-app-service
* @name: com.esv.freight.app.module.complaint.controller.DriverComplaintController
* @author: 张志臣
* @email: zhangzhichen@esvtek.com
* @createTime: 2020/05/28 13:30
* @version:1.0
*/
@RestController
@RequestMapping("/driverBackend/complaint")
@Slf4j
@Validated
public class DriverComplaintController {
}
package com.esv.freight.app.module.complaint.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.esv.freight.app.common.response.EResponse;
import com.esv.freight.app.common.util.FeignUtils;
import com.esv.freight.app.common.validator.groups.ValidatorDetail;
import com.esv.freight.app.common.validator.groups.ValidatorInsert;
import com.esv.freight.app.common.validator.groups.ValidatorList;
import com.esv.freight.app.common.validator.groups.ValidatorUpdate;
import com.esv.freight.app.feign.OwnerComplaintInterface;
import com.esv.freight.app.module.complaint.form.ComplaintForm;
import com.esv.freight.app.module.complaint.pojo.OwnerComplaintAdvicePojo;
import com.esv.freight.app.module.complaint.vo.ComplaintDetailVO;
import com.esv.freight.app.module.complaint.vo.ComplaintListItemVO;
import com.esv.freight.app.module.complaint.vo.ComplaintListVO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
/**
* @description: 货主投诉Controller
* @project: freight-app-service
* @name: com.esv.freight.app.module.complaint.controller.OwnerComplaintController
* @author: 张志臣
* @email: zhangzhichen@esvtek.com
* @createTime: 2020/05/28 13:30
* @version:1.0
*/
@RestController
@RequestMapping("/ownerBackend/complaint")
@Slf4j
@Validated
public class OwnerComplaintController {
private OwnerComplaintInterface ownerComplaintInterface;
@Autowired
public OwnerComplaintController(OwnerComplaintInterface ownerComplaintInterface) {
this.ownerComplaintInterface = ownerComplaintInterface;
}
/**
* description 获取投诉列表
* param complaintForm
* return com.esv.freight.common.response.EResponse
* author 张志臣
* createTime 2020/05/28 14:30
**/
@PostMapping("/list")
public EResponse list(@RequestBody(required=false) @Validated(ValidatorList.class) ComplaintForm complaintForm) {
// 调用投诉列表分页查询接口
JSONObject reqJson = new JSONObject();
reqJson.put("goodsOwnerName", complaintForm.getGoodsOwnerName());
reqJson.put("pageNum", complaintForm.getPageNum());
reqJson.put("pageSize", complaintForm.getPageSize());
log.info(reqJson.toJSONString());
JSONObject result = ownerComplaintInterface.list(reqJson);
log.info(result.toJSONString());
if(!FeignUtils.isFeignSuccess(result)) {
return FeignUtils.getFeignEResponse(result);
}
ComplaintListVO pageResultVO = new ComplaintListVO();
JSONObject data = result.getJSONObject("data");
pageResultVO.setPageSize(data.getLong("pageSize"));
pageResultVO.setPageNum(data.getLong("pageNum"));
pageResultVO.setTotal(data.getLong("totalSize"));
pageResultVO.setRecordSize(data.getLong("recordSize"));
if(pageResultVO.getRecordSize() > 0) {
JSONArray items = data.getJSONArray("records");
List<ComplaintListItemVO> records = new ArrayList<>();
for(int i=0; i<items.size(); ++i) {
ComplaintListItemVO vo = new ComplaintListItemVO();
JSONObject object = items.getJSONObject(i);
vo.setId(object.getLong("id"));
vo.setComplaintNo(object.getString("complaintNo"));
vo.setWaybillId(object.getLong("waybillId"));
vo.setWaybillNo(object.getString("waybillNo"));
vo.setComplaintState(object.getInteger("state"));
records.add(vo);
}
pageResultVO.setRecord(records);
}
return EResponse.ok(pageResultVO);
}
/**
* description 获取投诉详情
* param complaintForm
* return com.esv.freight.common.response.EResponse
* author 张志臣
* createTime 2020/05/28 14:30
**/
@RequestMapping("/detail")
public EResponse detail(@RequestBody @Validated(ValidatorDetail.class) ComplaintForm complaintForm) {
// 调用投诉详情接口
JSONObject reqJson = new JSONObject();
reqJson.put("id", complaintForm.getId());
log.info(reqJson.toJSONString());
JSONObject result = ownerComplaintInterface.detail(reqJson);
log.info(result.toJSONString());
if(!FeignUtils.isFeignSuccess(result)) {
return FeignUtils.getFeignEResponse(result);
}
OwnerComplaintAdvicePojo ownerComplaintAdvicePojo = JSONObject.toJavaObject(FeignUtils.getFeignDataJson(result), OwnerComplaintAdvicePojo.class);
ComplaintDetailVO complaintDetailVO = new ComplaintDetailVO();
BeanUtils.copyProperties(ownerComplaintAdvicePojo, complaintDetailVO);
complaintDetailVO.setComplaintState(ownerComplaintAdvicePojo.getState());
return EResponse.ok(complaintDetailVO);
}
/**
* description 添加投诉
* param complaintForm
* return com.esv.freight.common.response.EResponse
* author 张志臣
* createTime 2020/05/28 15:00
**/
@RequestMapping("/add")
public EResponse add(@RequestBody @Validated(ValidatorInsert.class) ComplaintForm complaintForm) {
// 调用添加投诉接口
JSONObject reqJson = new JSONObject();
reqJson.put("complaintAdvice", 1);
reqJson.put("state", 1);
reqJson.put("goodsOwnerId", complaintForm.getUserId());
reqJson.put("goodsOwnerName", complaintForm.getGoodsOwnerName());
reqJson.put("waybillId", complaintForm.getWaybillId());
reqJson.put("complaintObject", complaintForm.getComplaintObject());
reqJson.put("complaintType", complaintForm.getComplaintType());
reqJson.put("complaintContent", complaintForm.getComplaintContent());
if(!StringUtils.isEmpty(complaintForm.getPictureUrl01())) {
reqJson.put("pictureUrl01", complaintForm.getPictureUrl01());
}
if(!StringUtils.isEmpty(complaintForm.getPictureUrl02())) {
reqJson.put("pictureUrl02", complaintForm.getPictureUrl02());
}
log.info(reqJson.toJSONString());
JSONObject result = ownerComplaintInterface.add(reqJson);
log.info(result.toJSONString());
if(!FeignUtils.isFeignSuccess(result)) {
return FeignUtils.getFeignEResponse(result);
}
return EResponse.ok();
}
/**
* description 修改投诉
* param complaintForm
* return com.esv.freight.common.response.EResponse
* author 张志臣
* createTime 2020/05/28 15:00
**/
@RequestMapping("/edit")
public EResponse edit(@RequestBody @Validated(ValidatorUpdate.class) ComplaintForm complaintForm) {
// 调用编辑投诉接口
JSONObject reqJson = new JSONObject();
reqJson.put("id", complaintForm.getId());
reqJson.put("goodsOwnerId", complaintForm.getUserId());
reqJson.put("goodsOwnerName", complaintForm.getGoodsOwnerName());
reqJson.put("complaintType", complaintForm.getComplaintType());
reqJson.put("complaintContent", complaintForm.getComplaintContent());
log.info(reqJson.toJSONString());
JSONObject result = ownerComplaintInterface.edit(reqJson);
log.info(result.toJSONString());
if(!FeignUtils.isFeignSuccess(result)) {
return FeignUtils.getFeignEResponse(result);
}
return EResponse.ok();
}
/**
* description 取消投诉
* param complaintForm
* return com.esv.freight.common.response.EResponse
* author 张志臣
* createTime 2020/05/28 15:00
**/
@RequestMapping("/cancel")
public EResponse cancel(@RequestBody @Validated(ValidatorDetail.class) ComplaintForm complaintForm) {
// 调用取消投诉接口
JSONObject reqJson = new JSONObject();
reqJson.put("id", complaintForm.getId());
log.info(reqJson.toJSONString());
JSONObject result = ownerComplaintInterface.cancel(reqJson);
log.info(result.toJSONString());
if(!FeignUtils.isFeignSuccess(result)) {
return FeignUtils.getFeignEResponse(result);
}
return EResponse.ok();
}
}
package com.esv.freight.app.module.complaint.form;
import com.esv.freight.app.common.validator.groups.ValidatorDetail;
import com.esv.freight.app.common.validator.groups.ValidatorInsert;
import com.esv.freight.app.common.validator.groups.ValidatorList;
import com.esv.freight.app.common.validator.groups.ValidatorUpdate;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.Range;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* @description:
* @project: freight-app-service
* @name: com.esv.freight.app.module.complaint.form.ComplaintForm
* @author: 张志臣
* @email: zhangzhichen@esvtek.com
* @createTime: 2020/05/28 14:00
* @version:1.0
*/
@Data
public class ComplaintForm {
/**
* 主键
*/
@NotNull(message = "参数id不能为空", groups = {ValidatorUpdate.class, ValidatorDetail.class})
private Long id;
/**
* 账号ID
*/
@NotNull(message = "参数账号id不能为空", groups = {ValidatorInsert.class, ValidatorUpdate.class})
private Long userId;
/**
* 运单ID
*/
@NotNull(message = "参数运单id不能为空", groups = {ValidatorInsert.class})
private Long waybillId;
/**
* 投诉对象,1-司机,2-平台,3-其他
*/
@NotNull(message = "参数投诉对象不能为空", groups = {ValidatorInsert.class})
@Range(min = 0, max = 2, message = "无效的投诉对象", groups = {ValidatorInsert.class})
private Integer complaintObject;
/**
* 投诉类型,1-运输失效;2-运输质量;3-服务态度;4-其他
*/
@NotNull(message = "参数投诉类型不能为空", groups = {ValidatorInsert.class, ValidatorUpdate.class})
@Range(min = 0, max = 3, message = "无效的投诉类型", groups = {ValidatorInsert.class, ValidatorUpdate.class})
private Integer complaintType;
/**
* 投诉内容
*/
@NotNull(message = "参数投诉内容不能为空", groups = {ValidatorInsert.class, ValidatorUpdate.class})
@Length(max = 1000, message = "参数投诉内容长度不合法", groups = {ValidatorInsert.class, ValidatorUpdate.class})
private String complaintContent;
/**
* 照片01URL
*/
@Length(max = 200, message = "参数pictureUrl01长度不合法", groups = {ValidatorInsert.class, ValidatorUpdate.class})
private String pictureUrl01;
/**
* 照片02URL
*/
@Length(max = 200, message = "参数pictureUrl02长度不合法", groups = {ValidatorInsert.class, ValidatorUpdate.class})
private String pictureUrl02;
/**
* 货主姓名
*/
@Length(max = 64, message = "参数货主姓名长度不合法", groups = {ValidatorList.class, ValidatorUpdate.class})
@NotBlank(message = "参数货主姓名不能为空", groups = {ValidatorList.class, ValidatorUpdate.class})
private String goodsOwnerName;
/**
* 当前页数
*/
@NotNull(message = "参数pageNum不能为空", groups = {ValidatorList.class})
private Long pageNum;
/**
* 每页显示记录数
*/
@Range(min = 1, max = 1000, message = "pageSize", groups = {ValidatorList.class})
@NotNull(message = "参数pageSize不能为空", groups = {ValidatorList.class})
private Long pageSize;
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
}
}
package com.esv.freight.app.module.complaint.pojo;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* @description:
* @project: freight-app-service
* @name: com.esv.freight.app.module.complaint.pojo.OwnerComplaintAdvicePojo
* @author: 张志臣
* @email: zhangzhichen@esvtek.com
* @createTime: 2020/05/28 14:00
* @version:1.0
*/
@Data
public class OwnerComplaintAdvicePojo {
/**
* 主键
*/
private Long id;
/**
* 单号
*/
private String complaintNo;
/**
* 类型:1-投诉;2-建议
*/
private Integer complaintAdvice;
/**
* 状态,1-待处理;2-已处理,3-已取消
*/
private Integer state;
/**
* 货主ID
*/
private Long goodsOwnerId;
/**
* 货主姓名
*/
private String goodsOwnerName;
/**
* 运单ID
*/
private Long waybillId;
/**
* 运单号
*/
private String waybillNo;
/**
* 投诉对象,1-司机,2-平台,3-其他
*/
private Integer complaintObject;
/**
* 司机ID
*/
private Long complaintDriverId;
/**
* 司机姓名
*/
private String complaintDriverName;
/**
* 投诉类型,1-运输失效;2-运输质量;3-服务态度;4-其他
*/
private Integer complaintType;
/**
* 投诉内容
*/
private String complaintContent;
/**
* 处罚金额
*/
private BigDecimal forfeit;
/**
* 处理内容
*/
private String handleContent;
/**
* 处理人
*/
private String handleUserAccount;
/**
* 处理时间
*/
private Date handleTime;
/**
* 租户ID
*/
private Long tenantId;
/**
* 部门ID
*/
private Long departmentId;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* 创建人
*/
private String createUser;
/**
* 更新人
*/
private String updateUser;
}
package com.esv.freight.app.module.complaint.vo;
import lombok.Data;
/**
* @description: 投诉详情VO
* @project: freight-app-service
* @name: com.esv.freight.app.module.complaint.vo.ComplaintDetailVO
* @author: 张志臣
* @email: zhangzhichen@esvtek.com
* @createTime: 2020/05/28 13:30
* @version:1.0
*/
@Data
public class ComplaintDetailVO {
/**
* 主键
*/
private Long id;
/**
* 投诉编号
*/
private String complaintNo;
/**
* 运单ID
*/
private Long waybillId;
/**
* 运单号
*/
private String waybillNo;
/**
* 投诉处理状态.1-待处理;2-已处理;3-已取消;
*/
private Integer complaintState;
/**
* 投诉类型,1-运输失效;2-运输质量;3-服务态度;4-其他
*/
private Integer complaintType;
/**
* 投诉对象,1-司机,2-平台,3-其他
*/
private Integer complaintObject;
/**
* 投诉内容
*/
private String complaintContent;
/**
* 上传照片01URL
*/
private String pictureUrl01;
/**
* 上传照片02URL
*/
private String pictureUrl02;
}
package com.esv.freight.app.module.complaint.vo;
import lombok.Data;
/**
* @description: 投诉列表itemVO
* @project: freight-app-service
* @name: com.esv.freight.app.module.complaint.vo.ComplaintListItemVO
* @author: 张志臣
* @email: zhangzhichen@esvtek.com
* @createTime: 2020/05/28 13:30
* @version:1.0
*/
@Data
public class ComplaintListItemVO {
/**
* 主键
*/
private Long id;
/**
* 投诉编号
*/
private String complaintNo;
/**
* 运单ID
*/
private Long waybillId;
/**
* 运单号
*/
private String waybillNo;
/**
* 投诉处理状态.1-待处理;2-已处理;3c-已取消;
*/
private Integer complaintState;
}
package com.esv.freight.app.module.complaint.vo;
import lombok.Data;
import java.util.List;
/**
* @description: 投诉列表VO
* @project: freight-app-service
* @name: com.esv.freight.app.module.complaint.vo.ComplaintListVO
* @author: 张志臣
* @email: zhangzhichen@esvtek.com
* @createTime: 2020/05/28 13:30
* @version:1.0
*/
@Data
public class ComplaintListVO {
/**
* 每页记录条数
**/
private Long pageSize;
/**
* 当前页码
**/
private Long pageNum;
/**
* 总记录条数
**/
private Long total;
/**
* 当前页的记录条数
**/
private Long recordSize;
/**
* 数据
**/
private List<ComplaintListItemVO> record;
}
......@@ -28,7 +28,7 @@ import java.util.List;
* @version:1.0
*/
@RestController
@RequestMapping("/map/track/driver")
@RequestMapping("/driverBackend/map/track")
@Slf4j
@Validated
public class DriverTrackController {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment