From 34af78397cafeff835b265edf88828ca75c7e873 Mon Sep 17 00:00:00 2001 From: czc Date: Thu, 20 Jul 2023 11:06:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=94=AE=E5=90=8Eitem=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=94=AE=E5=90=8E=E5=8D=95=E5=8F=B7=EF=BC=8CH5=E5=94=AE?= =?UTF-8?q?=E5=90=8E=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cyl/h5/controller/H5OrderController.java | 9 ++- .../cyl/h5/pojo/vo/AftersaleRefundInfoVO.java | 73 +++++++++++++++++++ .../com/cyl/h5/service/H5OrderService.java | 50 +++++++++++-- .../cyl/manager/oms/domain/AftersaleItem.java | 4 + .../oms/mapper/AftersaleItemMapper.java | 4 + .../manager/oms/mapper/AftersaleMapper.java | 2 - .../manager/oms/pojo/vo/AftersaleItemVO.java | 3 + .../mapper/oms/AftersaleItemMapper.xml | 20 +++++ .../resources/mapper/oms/AftersaleMapper.xml | 18 ----- 9 files changed, 157 insertions(+), 26 deletions(-) create mode 100644 ruoyi-mall/src/main/java/com/cyl/h5/pojo/vo/AftersaleRefundInfoVO.java diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5OrderController.java b/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5OrderController.java index 7635503..1447189 100644 --- a/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5OrderController.java +++ b/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5OrderController.java @@ -7,6 +7,7 @@ import com.cyl.h5.pojo.dto.OrderCreateDTO; import com.cyl.h5.pojo.request.CancelOrderRequest; import com.cyl.h5.pojo.request.OrderPayRequest; import com.cyl.h5.pojo.response.OrderPayResponse; +import com.cyl.h5.pojo.vo.AftersaleRefundInfoVO; import com.cyl.h5.pojo.vo.CountOrderVO; import com.cyl.h5.pojo.vo.H5OrderVO; import com.cyl.h5.pojo.vo.OrderCalcVO; @@ -96,7 +97,7 @@ public class H5OrderController { return ResponseEntity.ok(service.orderComplete(orderId)); }catch (Exception e){ log.error("确认收货异常",e); - throw new RuntimeException("确认收货失败"); + throw new RuntimeException(e.getMessage()); }finally { try{ redisService.unLock(redisKey,redisValue); @@ -199,4 +200,10 @@ public class H5OrderController { } } } + + @ApiOperation("售后订单详情") + @GetMapping("/refundOrderDetail") + public ResponseEntity refundOrderDetail(@RequestParam Long orderId){ + return ResponseEntity.ok(service.refundOrderDetail(orderId)); + } } diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/pojo/vo/AftersaleRefundInfoVO.java b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/vo/AftersaleRefundInfoVO.java new file mode 100644 index 0000000..fb55889 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/vo/AftersaleRefundInfoVO.java @@ -0,0 +1,73 @@ +package com.cyl.h5.pojo.vo; + +import com.cyl.manager.oms.domain.OrderItem; +import com.cyl.manager.oms.pojo.vo.AftersaleItemVO; +import com.cyl.manager.oms.pojo.vo.OrderItemVO; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseAudit; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +/** + * 订单售后 数据视图对象 + * + * @author sjm + */ +@Data +public class AftersaleRefundInfoVO extends BaseAudit { + /** ID */ + private Long id; + /** MEMBER_ID */ + @Excel(name = "MEMBER_ID") + private Long memberId; + /** 订单id */ + @Excel(name = "订单id") + private Long orderId; + /** 退款金额 */ + @Excel(name = "退款金额") + private BigDecimal returnAmount; + /** 售后类型:1:退款,2:退货退款 */ + @Excel(name = "售后类型:1:退款,2:退货退款") + private Integer type; + /** 申请状态:0->待处理;1->退货中;2->已完成;3->已拒绝 */ + @Excel(name = "申请状态:0->待处理;1->退货中;2->已完成;3->已拒绝") + private Integer status; + /** 处理时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "处理时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime handleTime; + /** 退款快递公司 */ + @Excel(name = "退款快递公司") + private String refundWpCode; + /** 退货快递号 */ + @Excel(name = "退货快递号") + private String refundWaybillCode; + /** 退货数量 */ + @Excel(name = "退货数量") + private Integer quantity; + /** 原因 */ + @Excel(name = "原因") + private String reason; + /** 描述 */ + @Excel(name = "描述") + private String description; + /** 凭证图片,以逗号隔开 */ + @Excel(name = "凭证图片,以逗号隔开") + private String proofPics; + /** 处理备注 */ + @Excel(name = "处理备注") + private String handleNote; + /** 处理人员 */ + @Excel(name = "处理人员") + private String handleMan; + + /** + * item + */ + private List aftersaleItemList; + private List orderItemList; +} diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/service/H5OrderService.java b/ruoyi-mall/src/main/java/com/cyl/h5/service/H5OrderService.java index 5dd26ca..0f84f9a 100644 --- a/ruoyi-mall/src/main/java/com/cyl/h5/service/H5OrderService.java +++ b/ruoyi-mall/src/main/java/com/cyl/h5/service/H5OrderService.java @@ -12,11 +12,10 @@ import com.cyl.h5.pojo.dto.*; import com.cyl.h5.pojo.request.CancelOrderRequest; import com.cyl.h5.pojo.request.OrderPayRequest; import com.cyl.h5.pojo.response.OrderPayResponse; -import com.cyl.h5.pojo.vo.CountOrderVO; -import com.cyl.h5.pojo.vo.H5OrderVO; -import com.cyl.h5.pojo.vo.OrderCalcVO; -import com.cyl.h5.pojo.vo.SkuViewDTO; +import com.cyl.h5.pojo.vo.*; import com.cyl.h5.pojo.vo.form.OrderSubmitForm; +import com.cyl.manager.oms.convert.AftersaleItemConvert; +import com.cyl.manager.oms.convert.OrderItemConvert; import com.cyl.manager.oms.domain.*; import com.cyl.manager.oms.mapper.*; import com.cyl.manager.oms.service.OrderItemService; @@ -48,6 +47,7 @@ import com.ruoyi.common.utils.IDGenerator; import com.ruoyi.framework.config.LocalDataUtil; import com.wechat.pay.java.service.partnerpayments.jsapi.model.Transaction; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; @@ -116,6 +116,15 @@ public class H5OrderService { @Autowired private AftersaleMapper aftersaleMapper; + @Autowired + private AftersaleItemMapper aftersaleItemMapper; + + @Autowired + private AftersaleItemConvert aftersaleItemConvert; + + @Autowired + private OrderItemConvert orderItemConvert; + @Transactional public Long submit(OrderSubmitForm form) { Member member = (Member) LocalDataUtil.getVar(Constants.MEMBER_INFO); @@ -627,6 +636,7 @@ public class H5OrderService { orderItemList.forEach(orderItem -> { AftersaleItem aftersaleItem = new AftersaleItem(); aftersaleItem.setMemberId(memberId); + aftersaleItem.setAftersaleId(addAftersale.getId()); aftersaleItem.setOrderId(orderItem.getOrderId()); aftersaleItem.setOrderItemId(orderItem.getId()); aftersaleItem.setReturnAmount(orderItem.getSalePrice().multiply(BigDecimal.valueOf(orderItem.getQuantity()))); @@ -637,7 +647,7 @@ public class H5OrderService { aftersaleItem.setUpdateBy(memberId); addAftersaleItemList.add(aftersaleItem); }); - rows = aftersaleMapper.insertBatch(addAftersaleItemList); + rows = aftersaleItemMapper.insertBatch(addAftersaleItemList); if (rows < 1){ throw new RuntimeException("创建售后订单item失败"); } @@ -737,4 +747,34 @@ public class H5OrderService { } return "售后取消成功"; } + + /** + * 售后订单详情 + * @param orderId 订单id + * @return + */ + public AftersaleRefundInfoVO refundOrderDetail(Long orderId) { + QueryWrapper aftersaleQw = new QueryWrapper<>(); + aftersaleQw.eq("order_id", orderId); + aftersaleQw.orderByDesc("create_time"); + aftersaleQw.last("limit 1"); + Aftersale aftersale = aftersaleMapper.selectOne(aftersaleQw); + if (aftersale == null){ + throw new RuntimeException("未查询到售后订单"); + } + //查一下售后订单item + QueryWrapper aftersaleItemQw = new QueryWrapper<>(); + aftersaleItemQw.eq("aftersale_id", aftersale.getId()); + List aftersaleItemList = aftersaleItemMapper.selectList(aftersaleItemQw); + List orderItemIdList = aftersaleItemList.stream().map(AftersaleItem::getOrderItemId).collect(Collectors.toList()); + //再去查orderItem + QueryWrapper orderItemQw = new QueryWrapper<>(); + orderItemQw.in("id", orderItemIdList); + List orderItemList = orderItemMapper.selectList(orderItemQw); + AftersaleRefundInfoVO vo = new AftersaleRefundInfoVO(); + BeanUtils.copyProperties(aftersale, vo); + vo.setAftersaleItemList(aftersaleItemConvert.dos2vos(aftersaleItemList)); + vo.setOrderItemList(orderItemConvert.dos2vos(orderItemList)); + return vo; + } } diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/oms/domain/AftersaleItem.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/domain/AftersaleItem.java index 66b7dee..cbc9ac5 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/oms/domain/AftersaleItem.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/domain/AftersaleItem.java @@ -25,6 +25,10 @@ public class AftersaleItem extends BaseAudit { @Excel(name = "MEMBER_ID") private Long memberId; + @ApiModelProperty("售后单id") + @Excel(name = "售后单id") + private Long aftersaleId; + @ApiModelProperty("订单id") @Excel(name = "订单id") private Long orderId; diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/AftersaleItemMapper.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/AftersaleItemMapper.java index b4f850e..0bd640e 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/AftersaleItemMapper.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/AftersaleItemMapper.java @@ -3,6 +3,7 @@ package com.cyl.manager.oms.mapper; import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.cyl.manager.oms.domain.AftersaleItem; +import org.apache.ibatis.annotations.Param; /** * 订单售后Mapper接口 @@ -17,4 +18,7 @@ public interface AftersaleItemMapper extends BaseMapper { * @return 订单售后集合 */ List selectByEntity(AftersaleItem aftersaleItem); + + Integer insertBatch(@Param("list") List list); + } 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 064363f..cd93e1b 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 @@ -22,8 +22,6 @@ public interface AftersaleMapper extends BaseMapper { */ List selectByEntity(Aftersale aftersale); - Integer insertBatch(@Param("list") List list); - List selectManagerRefundOrder(ManagerAftersaleOrderRequest managerAftersaleOrderPageRequest); } diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/AftersaleItemVO.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/AftersaleItemVO.java index 75db0ab..688214e 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/AftersaleItemVO.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/AftersaleItemVO.java @@ -16,6 +16,9 @@ public class AftersaleItemVO extends BaseAudit { /** MEMBER_ID */ @Excel(name = "MEMBER_ID") private Long memberId; + /** 售后单id */ + @Excel(name = "售后单id") + private Long aftersaleId; /** 订单id */ @Excel(name = "订单id") private Long orderId; diff --git a/ruoyi-mall/src/main/resources/mapper/oms/AftersaleItemMapper.xml b/ruoyi-mall/src/main/resources/mapper/oms/AftersaleItemMapper.xml index 4bc38f4..eed785c 100644 --- a/ruoyi-mall/src/main/resources/mapper/oms/AftersaleItemMapper.xml +++ b/ruoyi-mall/src/main/resources/mapper/oms/AftersaleItemMapper.xml @@ -25,6 +25,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select id, member_id, order_id, order_item_id, return_amount, quantity, create_by, create_time, update_by, update_time from oms_aftersale_item + + insert into oms_aftersale_item + (member_id,order_id,aftersale_id,order_item_id,return_amount,quantity,create_by,create_time,update_by,update_time) + values + + + #{item.memberId,jdbcType=BIGINT}, + #{item.orderId,jdbcType=BIGINT}, + #{item.aftersaleId,jdbcType=BIGINT}, + #{item.orderItemId,jdbcType=BIGINT}, + #{item.returnAmount,jdbcType=DECIMAL}, + #{item.quantity,jdbcType=BIGINT}, + #{item.createBy,jdbcType=BIGINT}, + #{item.createTime,jdbcType=DATE}, + #{item.updateBy,jdbcType=BIGINT}, + #{item.updateTime,jdbcType=DATE} + + + +