package cn.lili.controller.order; import cn.lili.common.aop.annotation.PreventDuplicateSubmissions; import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.AuthUser; import cn.lili.common.security.OperationalJudgment; import cn.lili.common.security.context.UserContext; import cn.lili.common.utils.StringUtils; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.order.order.entity.dos.OrderComplaint; import cn.lili.modules.order.order.entity.enums.CommunicationOwnerEnum; import cn.lili.modules.order.order.entity.vo.*; import cn.lili.modules.order.order.service.OrderComplaintCommunicationService; import cn.lili.modules.order.order.service.OrderComplaintService; import cn.lili.utils.COSUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.List; import java.util.Objects; /** * 店铺端,交易投诉接口 * * @author paulG * @since 2020/12/5 **/ @RestController @Api(tags = "店铺端,交易投诉接口") @RequestMapping("/store/order/complain") public class OrderComplaintStoreController { /** * 交易投诉 */ @Autowired private OrderComplaintService orderComplaintService; /** * 投诉沟通 */ @Autowired private OrderComplaintCommunicationService orderComplaintCommunicationService; @Autowired private COSUtil cosUtil; @ApiOperation(value = "通过id获取") @ApiImplicitParam(name = "id", value = "投诉单ID", required = true, paramType = "path") @GetMapping(value = "/{id}") public ResultMessage get(@PathVariable String id) { OrderComplaintVO orderComplainById = OperationalJudgment.judgment(orderComplaintService.getOrderComplainById(id)); String goodsImage = orderComplainById.getGoodsImage(); if (StringUtils.isNotBlank(goodsImage)&&!goodsImage.contains("http")) { orderComplainById.setGoodsImage(cosUtil.getPreviewUrl(goodsImage)); } String[] orderComplaintImages = orderComplainById.getOrderComplaintImages(); List orderComplaintImagesList = new ArrayList<>(); for (String orderComplaintImage : orderComplaintImages) { if (StringUtils.isNotBlank(orderComplaintImage)&&!orderComplaintImage.contains("http")) { orderComplaintImagesList.add(cosUtil.getPreviewUrl(orderComplaintImage)); } } String images = orderComplainById.getImages(); String[] split = images.split(","); ArrayList imgs = new ArrayList<>(); for (String s : split) { if (StringUtils.isNotBlank(s)) { if (StringUtils.isNotBlank(s)&&!s.contains("http")) { imgs.add(cosUtil.getPreviewUrl(s)); } } } String join = String.join(",", imgs); orderComplainById.setImages(join); orderComplainById.setOrderComplaintImages(orderComplaintImagesList.toArray(new String[0])); return ResultUtil.data(orderComplainById); } @ApiOperation(value = "分页获取") @GetMapping public ResultMessage> get(OrderComplaintSearchParams searchParams, PageVO pageVO) { String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId(); searchParams.setStoreId(storeId); return ResultUtil.data(orderComplaintService.getOrderComplainByPage(searchParams, pageVO)); } @ApiOperation(value = "添加交易投诉对话") @ApiImplicitParams({ @ApiImplicitParam(name = "complainId", value = "投诉单ID", required = true, paramType = "query"), @ApiImplicitParam(name = "content", value = "内容", required = true, paramType = "query") }) @PostMapping("/communication") public ResultMessage addCommunication(@RequestParam String complainId, @RequestParam String content) { AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser()); OrderComplaintCommunicationVO communicationVO = new OrderComplaintCommunicationVO(complainId, content, CommunicationOwnerEnum.STORE.name(), currentUser.getUsername(), currentUser.getStoreId()); orderComplaintCommunicationService.addCommunication(communicationVO); return ResultUtil.success(); } @ApiOperation(value = "修改申诉信息") @PutMapping public ResultMessage update(OrderComplaintVO orderComplainVO) { String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId(); orderComplainVO.setStoreId(storeId); orderComplaintService.updateOrderComplain(orderComplainVO); return ResultUtil.data(orderComplainVO); } @PreventDuplicateSubmissions @ApiOperation(value = "申诉") @PutMapping("/appeal") public ResultMessage appeal(StoreAppealVO storeAppealVO) { orderComplaintService.appeal(storeAppealVO); return ResultUtil.data(orderComplaintService.getOrderComplainById(storeAppealVO.getOrderComplaintId())); } @PreventDuplicateSubmissions @ApiOperation(value = "修改状态") @PutMapping(value = "/status") public ResultMessage updateStatus(OrderComplaintOperationParams orderComplainVO) { orderComplaintService.updateOrderComplainByStatus(orderComplainVO); return ResultUtil.success(); } }