From 019af537c252d27dd18d126f680de13ef5a74e16 Mon Sep 17 00:00:00 2001 From: czc Date: Mon, 17 Jul 2023 17:17:35 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=90=8E=E5=8F=B0=E5=94=AE?= =?UTF-8?q?=E5=90=8E=E5=8D=95=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../oms/controller/AftersaleController.java | 15 ++- .../manager/oms/mapper/AftersaleMapper.java | 4 +- .../cyl/manager/oms/mapper/OrderMapper.java | 2 - .../request/ManagerAftersaleOrderRequest.java | 6 +- .../pojo/vo/ManagerRefundOrderDetailVO.java | 54 +++++++++++ ...OrderVo.java => ManagerRefundOrderVO.java} | 2 +- .../manager/oms/pojo/vo/OrderAddressVO.java | 26 +++++ .../cyl/manager/oms/pojo/vo/RefundInfoVO.java | 47 ++++++++++ .../manager/oms/service/AftersaleService.java | 94 ++++++++++++++++--- .../resources/mapper/oms/AftersaleMapper.xml | 6 +- .../main/resources/mapper/oms/OrderMapper.xml | 2 +- 11 files changed, 224 insertions(+), 34 deletions(-) create mode 100644 ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/ManagerRefundOrderDetailVO.java rename ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/{ManagerRefundOrderVo.java => ManagerRefundOrderVO.java} (98%) create mode 100644 ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/OrderAddressVO.java create mode 100644 ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/RefundInfoVO.java diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/oms/controller/AftersaleController.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/controller/AftersaleController.java index 0b11abe..4257161 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/oms/controller/AftersaleController.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/controller/AftersaleController.java @@ -4,8 +4,8 @@ import java.util.List; import com.cyl.manager.oms.pojo.request.DealWithAftersaleRequest; import com.cyl.manager.oms.pojo.request.ManagerAftersaleOrderRequest; -import com.cyl.manager.oms.pojo.vo.ManagerRefundOrderVo; -import com.ruoyi.common.core.domain.AjaxResult; +import com.cyl.manager.oms.pojo.vo.ManagerRefundOrderDetailVO; +import com.cyl.manager.oms.pojo.vo.ManagerRefundOrderVO; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.redis.RedisService; import com.ruoyi.common.utils.SecurityUtils; @@ -33,8 +33,7 @@ import com.cyl.manager.oms.convert.AftersaleConvert; import com.cyl.manager.oms.domain.Aftersale; import com.cyl.manager.oms.pojo.query.AftersaleQuery; import com.cyl.manager.oms.service.AftersaleService; -import com.cyl.manager.oms.pojo.vo.AftersaleVO; -import com.ruoyi.common.utils.poi.ExcelUtil; + /** * 订单售后Controller * @@ -56,8 +55,8 @@ public class AftersaleController extends BaseController { @ApiOperation("查询订单售后列表") @PreAuthorize("@ss.hasPermi('oms:aftersale:list')") @PostMapping("/list") - public ResponseEntity> list(@RequestBody ManagerAftersaleOrderRequest query, Pageable page) { - List list = service.selectList(query, page); + public ResponseEntity> list(@RequestBody ManagerAftersaleOrderRequest query, Pageable page) { + List list = service.selectList(query, page); return ResponseEntity.ok(new PageImpl<>(list, page, ((com.github.pagehelper.Page)list).getTotal())); } @@ -75,8 +74,8 @@ public class AftersaleController extends BaseController { @ApiOperation("获取订单售后详细信息") @PreAuthorize("@ss.hasPermi('oms:aftersale:query')") @GetMapping(value = "/{id}") - public ResponseEntity getInfo(@PathVariable("id") Long id) { - return ResponseEntity.ok(service.selectById(id)); + public ResponseEntity getInfo(@PathVariable("id") Long orderId) { + return ResponseEntity.ok(service.selectById(orderId)); } @ApiOperation("新增订单售后") diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/AftersaleMapper.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/AftersaleMapper.java index 1d953ab..064363f 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/AftersaleMapper.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/AftersaleMapper.java @@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.cyl.manager.oms.domain.Aftersale; import com.cyl.manager.oms.domain.AftersaleItem; import com.cyl.manager.oms.pojo.request.ManagerAftersaleOrderRequest; -import com.cyl.manager.oms.pojo.vo.ManagerRefundOrderVo; +import com.cyl.manager.oms.pojo.vo.ManagerRefundOrderVO; import org.apache.ibatis.annotations.Param; /** @@ -24,6 +24,6 @@ public interface AftersaleMapper extends BaseMapper { Integer insertBatch(@Param("list") List list); - List selectManagerRefundOrder(ManagerAftersaleOrderRequest managerAftersaleOrderPageRequest); + List selectManagerRefundOrder(ManagerAftersaleOrderRequest managerAftersaleOrderPageRequest); } diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/OrderMapper.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/OrderMapper.java index f2924a4..57ecfbb 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/OrderMapper.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/OrderMapper.java @@ -5,10 +5,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.cyl.h5.pojo.vo.CountOrderVO; import com.cyl.h5.pojo.vo.H5OrderVO; import com.cyl.manager.oms.domain.Order; -import com.cyl.manager.oms.pojo.request.ManagerAftersaleOrderRequest; import com.cyl.manager.oms.pojo.request.ManagerOrderQueryRequest; import com.cyl.manager.oms.pojo.vo.ManagerOrderVO; -import com.cyl.manager.oms.pojo.vo.ManagerRefundOrderVo; import org.apache.ibatis.annotations.Param; /** diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/request/ManagerAftersaleOrderRequest.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/request/ManagerAftersaleOrderRequest.java index 07dce52..387f5a7 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/request/ManagerAftersaleOrderRequest.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/request/ManagerAftersaleOrderRequest.java @@ -14,11 +14,11 @@ import java.util.Date; @ApiModel(value = "商城订单请求体") public class ManagerAftersaleOrderRequest { - @ApiModelProperty(name = "id", value = "售后单号", required = true, dataType = "String") + @ApiModelProperty(name = "id", value = "售后单号", required = true, dataType = "Long") private Long id; - @ApiModelProperty(name = "orderId", value = "订单id", required = true, dataType = "String") - private Long orderId; + @ApiModelProperty(name = "orderSn", value = "订单号", required = true, dataType = "String") + private String orderSn; @ApiModelProperty(name = "userPhone", value = "用户名称(手机号)", required = true, dataType = "String") private String userPhone; diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/ManagerRefundOrderDetailVO.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/ManagerRefundOrderDetailVO.java new file mode 100644 index 0000000..eabd0ef --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/ManagerRefundOrderDetailVO.java @@ -0,0 +1,54 @@ +package com.cyl.manager.oms.pojo.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + * @author: Jinxin + * @date: 2022/4/22 14:12 + * @Description: + */ +@Data +@ApiModel("售后订单详情") +public class ManagerRefundOrderDetailVO { + @ApiModelProperty("订单id") + private Long orderId; + @ApiModelProperty("订单号") + private String orderSn; + @ApiModelProperty("用户昵称") + private String nickName; + @ApiModelProperty("用户手机号") + private String phone; + @ApiModelProperty("下单时间") + private LocalDateTime createTime; + @ApiModelProperty("支付方式:0->未支付;1->支付宝;2->微信") + private Integer payType; + @ApiModelProperty("支付时间") + private LocalDateTime payTime; + @ApiModelProperty("订单状态:0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单") + private Integer status; + @ApiModelProperty("订单收获地址信息") + private OrderAddressVO addressInfo; + @ApiModelProperty("订单商品信息") + private List productList; + @ApiModelProperty("售后信息") + private List refundInfoList; + @ApiModelProperty("退货时间") + private LocalDateTime deliveryTime; + @ApiModelProperty("物流单号") + private String expressNo; + @ApiModelProperty("物流名称") + private String expressName; + @ApiModelProperty("订单总金额") + private BigDecimal totalAmount; + @ApiModelProperty("应付金额(实际支付金额)") + private BigDecimal payAmount; +} diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/ManagerRefundOrderVo.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/ManagerRefundOrderVO.java similarity index 98% rename from ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/ManagerRefundOrderVo.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/ManagerRefundOrderVO.java index bc420a7..ff490c6 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/ManagerRefundOrderVo.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/ManagerRefundOrderVO.java @@ -10,7 +10,7 @@ import java.util.List; @Data @ApiModel(value = "售后订单vo") - public class ManagerRefundOrderVo { + public class ManagerRefundOrderVO { @ApiModelProperty(name = "id",value = "售后单id",required = true,dataType = "Long") private Long id; diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/OrderAddressVO.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/OrderAddressVO.java new file mode 100644 index 0000000..7967211 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/OrderAddressVO.java @@ -0,0 +1,26 @@ +package com.cyl.manager.oms.pojo.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + * @author: Jinxin + * @date: 2022/4/22 14:12 + * @Description: + */ +@Getter +@Setter +@ApiModel("订单收获地址") +public class OrderAddressVO { + @ApiModelProperty("收货人姓名") + private String name; + @ApiModelProperty("收货人手机号") + private String userPhone; + @ApiModelProperty("收获区域") + private String area; + @ApiModelProperty("详细地址") + private String address; + +} diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/RefundInfoVO.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/RefundInfoVO.java new file mode 100644 index 0000000..51c6dbf --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/RefundInfoVO.java @@ -0,0 +1,47 @@ +package com.cyl.manager.oms.pojo.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.Date; + +/** + * @author: Jinxin + * @date: 2022/4/22 14:12 + * @Description: + */ +@Getter +@Setter +@ApiModel("售后信息") +public class RefundInfoVO { + @ApiModelProperty("退款单号") + private Long id; + @ApiModelProperty("申请退货方式:1-仅退款,2-退货退款") + private Integer applyRefundType; + @ApiModelProperty("申请售后时间") + private LocalDateTime applyRefundTime; + @ApiModelProperty("售后金额") + private BigDecimal refundAmount; + @ApiModelProperty("申请原因") + private String reason; + @ApiModelProperty("描述") + private String description; + @ApiModelProperty("凭证") + private String proofPics; + @ApiModelProperty("申请状态:0->待处理;1->退货中;2->已完成;3->已拒绝; 4->用户取消") + private Integer refundStatus; + @ApiModelProperty("平台拒绝理由") + private String remark; + @ApiModelProperty("物流单号") + private String expressNo; + @ApiModelProperty("物流名称") + private String expressName; + @ApiModelProperty("最新物流数据") + private String logistics; + @ApiModelProperty("所有物流信息 JSON格式") + private String allLogistics; +} diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/oms/service/AftersaleService.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/service/AftersaleService.java index 8809cb9..8d291f4 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/oms/service/AftersaleService.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/service/AftersaleService.java @@ -1,6 +1,5 @@ package com.cyl.manager.oms.service; -import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @@ -17,8 +16,9 @@ import com.cyl.manager.oms.mapper.OrderMapper; import com.cyl.manager.oms.mapper.OrderOperateHistoryMapper; import com.cyl.manager.oms.pojo.request.DealWithAftersaleRequest; import com.cyl.manager.oms.pojo.request.ManagerAftersaleOrderRequest; -import com.cyl.manager.oms.pojo.vo.ManagerOrderProductVO; -import com.cyl.manager.oms.pojo.vo.ManagerRefundOrderVo; +import com.cyl.manager.oms.pojo.vo.*; +import com.cyl.manager.ums.domain.Member; +import com.cyl.manager.ums.mapper.MemberMapper; import com.github.pagehelper.PageHelper; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.model.LoginUser; @@ -26,11 +26,9 @@ import com.ruoyi.common.enums.AftersaleStatus; import com.ruoyi.common.enums.OrderRefundStatus; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; -import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import com.cyl.manager.oms.mapper.AftersaleMapper; import com.cyl.manager.oms.domain.Aftersale; -import com.cyl.manager.oms.pojo.query.AftersaleQuery; import org.springframework.transaction.annotation.Transactional; /** @@ -53,14 +51,79 @@ public class AftersaleService { @Autowired private OrderOperateHistoryMapper orderOperateHistoryMapper; + @Autowired + private MemberMapper memberMapper; + /** * 查询订单售后 * * @param id 订单售后主键 * @return 订单售后 */ - public Aftersale selectById(Long id) { - return aftersaleMapper.selectById(id); + public ManagerRefundOrderDetailVO selectById(Long id) { + Order order = orderMapper.selectById(id); + if (order == null){ + throw new RuntimeException("无该订单信息"); + } + ManagerRefundOrderDetailVO result = new ManagerRefundOrderDetailVO(); + //订单基本信息 + result.setOrderId(order.getId()); + result.setOrderSn(order.getOrderSn()); + result.setCreateTime(order.getCreateTime()); + result.setPayType(order.getPayType()); + result.setPayTime(order.getPaymentTime()); + result.setStatus(order.getStatus()); + result.setExpressName(order.getDeliveryCompany()); + result.setExpressNo(order.getOrderSn()); + result.setTotalAmount(order.getTotalAmount()); + result.setPayAmount(order.getPayAmount()); + //用户信息 + Member member = memberMapper.selectById(order.getMemberId()); + result.setNickName(member.getNickname()); + result.setPhone(member.getPhoneHidden()); + //收货信息 + OrderAddressVO orderAddressVO = new OrderAddressVO(); + orderAddressVO.setAddress(order.getReceiverDetailAddress()); + orderAddressVO.setName(order.getReceiverName()); + orderAddressVO.setUserPhone(order.getReceiverPhone()); + orderAddressVO.setArea(order.getReceiverProvince() + order.getReceiverCity() + order.getReceiverDistrict()); + result.setAddressInfo(orderAddressVO); + //orderItem + QueryWrapper orderItemQw = new QueryWrapper<>(); + orderItemQw.eq("order_id", id); + List orderItemList = orderItemMapper.selectList(orderItemQw); + List productList = new ArrayList<>(); + orderItemList.forEach(orderItem -> { + ManagerOrderProductVO productVO = new ManagerOrderProductVO(); + productVO.setPic(orderItem.getPic()); + productVO.setSpData(orderItem.getSpData()); + productVO.setProductName(orderItem.getProductName()); + productVO.setSalePrice(orderItem.getSalePrice()); + productVO.setBuyNum(orderItem.getQuantity()); + productVO.setProductId(orderItem.getProductId()); + productList.add(productVO); + }); + result.setProductList(productList); + //售后信息 + QueryWrapper aftersaleQw = new QueryWrapper<>(); + aftersaleQw.eq("order_id", order.getId()); + List aftersaleList = aftersaleMapper.selectList(aftersaleQw); + List refundInfoList = new ArrayList<>(); + aftersaleList.forEach(aftersale -> { + RefundInfoVO refundInfo = new RefundInfoVO(); + refundInfo.setId(aftersale.getId()); + refundInfo.setApplyRefundType(aftersale.getType()); + refundInfo.setApplyRefundTime(aftersale.getCreateTime()); + refundInfo.setRefundAmount(aftersale.getReturnAmount()); + refundInfo.setReason(aftersale.getReason()); + refundInfo.setDescription(aftersale.getDescription()); + refundInfo.setProofPics(aftersale.getProofPics()); + refundInfo.setRefundStatus(aftersale.getStatus()); + refundInfo.setRemark(aftersale.getHandleNote()); + refundInfoList.add(refundInfo); + }); + result.setRefundInfoList(refundInfoList); + return result; } /** @@ -70,15 +133,18 @@ public class AftersaleService { * @param page 分页条件 * @return 订单售后 */ - public List selectList(ManagerAftersaleOrderRequest query, Pageable page) { + public List selectList(ManagerAftersaleOrderRequest query, Pageable page) { if (page != null) { PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize()); } - List managerRefundOrderVos = aftersaleMapper.selectManagerRefundOrder(query); - if (CollectionUtil.isEmpty(managerRefundOrderVos)){ - return managerRefundOrderVos; + if (StrUtil.isNotBlank(query.getOrderSn()) && query.getOrderSn().length() > 7){ + query.setOrderSn(query.getOrderSn().substring(7)); + } + List managerRefundOrderVOS = aftersaleMapper.selectManagerRefundOrder(query); + if (CollectionUtil.isEmpty(managerRefundOrderVOS)){ + return managerRefundOrderVOS; } - Set idSet = managerRefundOrderVos.stream().map(ManagerRefundOrderVo::getOrderId).collect(Collectors.toSet()); + Set idSet = managerRefundOrderVOS.stream().map(ManagerRefundOrderVO::getOrderId).collect(Collectors.toSet()); //查一下orderSn集合 QueryWrapper orderQw = new QueryWrapper<>(); orderQw.in("id", idSet); @@ -87,7 +153,7 @@ public class AftersaleService { QueryWrapper orderItemQw = new QueryWrapper<>(); orderItemQw.in("order_id", idSet); Map> orderItemMap = orderItemMapper.selectList(orderItemQw).stream().collect(Collectors.groupingBy(OrderItem::getOrderId)); - managerRefundOrderVos.forEach(vo -> { + managerRefundOrderVOS.forEach(vo -> { Order order = orderMap.get(vo.getOrderId()); vo.setOrderSn(order.getOrderSn()); List orderItemList = orderItemMap.get(vo.getOrderId()); @@ -104,7 +170,7 @@ public class AftersaleService { }); vo.setProductList(productList); }); - return managerRefundOrderVos; + return managerRefundOrderVOS; } /** diff --git a/ruoyi-mall/src/main/resources/mapper/oms/AftersaleMapper.xml b/ruoyi-mall/src/main/resources/mapper/oms/AftersaleMapper.xml index 5d5e4ab..3b9c665 100644 --- a/ruoyi-mall/src/main/resources/mapper/oms/AftersaleMapper.xml +++ b/ruoyi-mall/src/main/resources/mapper/oms/AftersaleMapper.xml @@ -67,7 +67,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and handle_man = #{handleMan} - SELECT a.id id, a.return_amount applyReturnAmount, a.quantity refundNum, @@ -89,8 +89,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and a.id = #{id} - - and a.order_id = #{orderId} + + and a.order_id = #{orderSn} and instr(c.phone, #{userPhone}) > 0 diff --git a/ruoyi-mall/src/main/resources/mapper/oms/OrderMapper.xml b/ruoyi-mall/src/main/resources/mapper/oms/OrderMapper.xml index 6a5f1e3..507c804 100644 --- a/ruoyi-mall/src/main/resources/mapper/oms/OrderMapper.xml +++ b/ruoyi-mall/src/main/resources/mapper/oms/OrderMapper.xml @@ -119,7 +119,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" -- b.sp_data spData, -- b.product_id productId, -- b.product_name productName, - c.phone userPhone, + c.phone_hidden userPhone, c.nickname nickName from oms_order a -- left join oms_order_item b on a.id = b.order_id