管理后台售后单详情

pull/1/head
czc 2 years ago
parent 585025c8ae
commit 019af537c2

@ -4,8 +4,8 @@ import java.util.List;
import com.cyl.manager.oms.pojo.request.DealWithAftersaleRequest; import com.cyl.manager.oms.pojo.request.DealWithAftersaleRequest;
import com.cyl.manager.oms.pojo.request.ManagerAftersaleOrderRequest; import com.cyl.manager.oms.pojo.request.ManagerAftersaleOrderRequest;
import com.cyl.manager.oms.pojo.vo.ManagerRefundOrderVo; import com.cyl.manager.oms.pojo.vo.ManagerRefundOrderDetailVO;
import com.ruoyi.common.core.domain.AjaxResult; import com.cyl.manager.oms.pojo.vo.ManagerRefundOrderVO;
import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.core.redis.RedisService; import com.ruoyi.common.core.redis.RedisService;
import com.ruoyi.common.utils.SecurityUtils; 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.domain.Aftersale;
import com.cyl.manager.oms.pojo.query.AftersaleQuery; import com.cyl.manager.oms.pojo.query.AftersaleQuery;
import com.cyl.manager.oms.service.AftersaleService; import com.cyl.manager.oms.service.AftersaleService;
import com.cyl.manager.oms.pojo.vo.AftersaleVO;
import com.ruoyi.common.utils.poi.ExcelUtil;
/** /**
* Controller * Controller
* *
@ -56,8 +55,8 @@ public class AftersaleController extends BaseController {
@ApiOperation("查询订单售后列表") @ApiOperation("查询订单售后列表")
@PreAuthorize("@ss.hasPermi('oms:aftersale:list')") @PreAuthorize("@ss.hasPermi('oms:aftersale:list')")
@PostMapping("/list") @PostMapping("/list")
public ResponseEntity<Page<ManagerRefundOrderVo>> list(@RequestBody ManagerAftersaleOrderRequest query, Pageable page) { public ResponseEntity<Page<ManagerRefundOrderVO>> list(@RequestBody ManagerAftersaleOrderRequest query, Pageable page) {
List<ManagerRefundOrderVo> list = service.selectList(query, page); List<ManagerRefundOrderVO> list = service.selectList(query, page);
return ResponseEntity.ok(new PageImpl<>(list, page, ((com.github.pagehelper.Page)list).getTotal())); return ResponseEntity.ok(new PageImpl<>(list, page, ((com.github.pagehelper.Page)list).getTotal()));
} }
@ -75,8 +74,8 @@ public class AftersaleController extends BaseController {
@ApiOperation("获取订单售后详细信息") @ApiOperation("获取订单售后详细信息")
@PreAuthorize("@ss.hasPermi('oms:aftersale:query')") @PreAuthorize("@ss.hasPermi('oms:aftersale:query')")
@GetMapping(value = "/{id}") @GetMapping(value = "/{id}")
public ResponseEntity<Aftersale> getInfo(@PathVariable("id") Long id) { public ResponseEntity<ManagerRefundOrderDetailVO> getInfo(@PathVariable("id") Long orderId) {
return ResponseEntity.ok(service.selectById(id)); return ResponseEntity.ok(service.selectById(orderId));
} }
@ApiOperation("新增订单售后") @ApiOperation("新增订单售后")

@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cyl.manager.oms.domain.Aftersale; import com.cyl.manager.oms.domain.Aftersale;
import com.cyl.manager.oms.domain.AftersaleItem; import com.cyl.manager.oms.domain.AftersaleItem;
import com.cyl.manager.oms.pojo.request.ManagerAftersaleOrderRequest; 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; import org.apache.ibatis.annotations.Param;
/** /**
@ -24,6 +24,6 @@ public interface AftersaleMapper extends BaseMapper<Aftersale> {
Integer insertBatch(@Param("list") List<AftersaleItem> list); Integer insertBatch(@Param("list") List<AftersaleItem> list);
List<ManagerRefundOrderVo> selectManagerRefundOrder(ManagerAftersaleOrderRequest managerAftersaleOrderPageRequest); List<ManagerRefundOrderVO> selectManagerRefundOrder(ManagerAftersaleOrderRequest managerAftersaleOrderPageRequest);
} }

@ -5,10 +5,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cyl.h5.pojo.vo.CountOrderVO; import com.cyl.h5.pojo.vo.CountOrderVO;
import com.cyl.h5.pojo.vo.H5OrderVO; import com.cyl.h5.pojo.vo.H5OrderVO;
import com.cyl.manager.oms.domain.Order; 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.request.ManagerOrderQueryRequest;
import com.cyl.manager.oms.pojo.vo.ManagerOrderVO; import com.cyl.manager.oms.pojo.vo.ManagerOrderVO;
import com.cyl.manager.oms.pojo.vo.ManagerRefundOrderVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
/** /**

@ -14,11 +14,11 @@ import java.util.Date;
@ApiModel(value = "商城订单请求体") @ApiModel(value = "商城订单请求体")
public class ManagerAftersaleOrderRequest { public class ManagerAftersaleOrderRequest {
@ApiModelProperty(name = "id", value = "售后单号", required = true, dataType = "String") @ApiModelProperty(name = "id", value = "售后单号", required = true, dataType = "Long")
private Long id; private Long id;
@ApiModelProperty(name = "orderId", value = "订单id", required = true, dataType = "String") @ApiModelProperty(name = "orderSn", value = "订单号", required = true, dataType = "String")
private Long orderId; private String orderSn;
@ApiModelProperty(name = "userPhone", value = "用户名称(手机号)", required = true, dataType = "String") @ApiModelProperty(name = "userPhone", value = "用户名称(手机号)", required = true, dataType = "String")
private String userPhone; private String userPhone;

@ -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<ManagerOrderProductVO> productList;
@ApiModelProperty("售后信息")
private List<RefundInfoVO> refundInfoList;
@ApiModelProperty("退货时间")
private LocalDateTime deliveryTime;
@ApiModelProperty("物流单号")
private String expressNo;
@ApiModelProperty("物流名称")
private String expressName;
@ApiModelProperty("订单总金额")
private BigDecimal totalAmount;
@ApiModelProperty("应付金额(实际支付金额)")
private BigDecimal payAmount;
}

@ -10,7 +10,7 @@ import java.util.List;
@Data @Data
@ApiModel(value = "售后订单vo") @ApiModel(value = "售后订单vo")
public class ManagerRefundOrderVo { public class ManagerRefundOrderVO {
@ApiModelProperty(name = "id",value = "售后单id",required = true,dataType = "Long") @ApiModelProperty(name = "id",value = "售后单id",required = true,dataType = "Long")
private Long id; private Long id;

@ -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;
}

@ -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;
}

@ -1,6 +1,5 @@
package com.cyl.manager.oms.service; package com.cyl.manager.oms.service;
import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; 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.mapper.OrderOperateHistoryMapper;
import com.cyl.manager.oms.pojo.request.DealWithAftersaleRequest; import com.cyl.manager.oms.pojo.request.DealWithAftersaleRequest;
import com.cyl.manager.oms.pojo.request.ManagerAftersaleOrderRequest; import com.cyl.manager.oms.pojo.request.ManagerAftersaleOrderRequest;
import com.cyl.manager.oms.pojo.vo.ManagerOrderProductVO; import com.cyl.manager.oms.pojo.vo.*;
import com.cyl.manager.oms.pojo.vo.ManagerRefundOrderVo; import com.cyl.manager.ums.domain.Member;
import com.cyl.manager.ums.mapper.MemberMapper;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.model.LoginUser; 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 com.ruoyi.common.enums.OrderRefundStatus;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.cyl.manager.oms.mapper.AftersaleMapper; import com.cyl.manager.oms.mapper.AftersaleMapper;
import com.cyl.manager.oms.domain.Aftersale; import com.cyl.manager.oms.domain.Aftersale;
import com.cyl.manager.oms.pojo.query.AftersaleQuery;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
/** /**
@ -53,14 +51,79 @@ public class AftersaleService {
@Autowired @Autowired
private OrderOperateHistoryMapper orderOperateHistoryMapper; private OrderOperateHistoryMapper orderOperateHistoryMapper;
@Autowired
private MemberMapper memberMapper;
/** /**
* *
* *
* @param id * @param id
* @return * @return
*/ */
public Aftersale selectById(Long id) { public ManagerRefundOrderDetailVO selectById(Long id) {
return aftersaleMapper.selectById(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<OrderItem> orderItemQw = new QueryWrapper<>();
orderItemQw.eq("order_id", id);
List<OrderItem> orderItemList = orderItemMapper.selectList(orderItemQw);
List<ManagerOrderProductVO> 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<Aftersale> aftersaleQw = new QueryWrapper<>();
aftersaleQw.eq("order_id", order.getId());
List<Aftersale> aftersaleList = aftersaleMapper.selectList(aftersaleQw);
List<RefundInfoVO> 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 * @param page
* @return * @return
*/ */
public List<ManagerRefundOrderVo> selectList(ManagerAftersaleOrderRequest query, Pageable page) { public List<ManagerRefundOrderVO> selectList(ManagerAftersaleOrderRequest query, Pageable page) {
if (page != null) { if (page != null) {
PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize()); PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
} }
List<ManagerRefundOrderVo> managerRefundOrderVos = aftersaleMapper.selectManagerRefundOrder(query); if (StrUtil.isNotBlank(query.getOrderSn()) && query.getOrderSn().length() > 7){
if (CollectionUtil.isEmpty(managerRefundOrderVos)){ query.setOrderSn(query.getOrderSn().substring(7));
return managerRefundOrderVos; }
List<ManagerRefundOrderVO> managerRefundOrderVOS = aftersaleMapper.selectManagerRefundOrder(query);
if (CollectionUtil.isEmpty(managerRefundOrderVOS)){
return managerRefundOrderVOS;
} }
Set<Long> idSet = managerRefundOrderVos.stream().map(ManagerRefundOrderVo::getOrderId).collect(Collectors.toSet()); Set<Long> idSet = managerRefundOrderVOS.stream().map(ManagerRefundOrderVO::getOrderId).collect(Collectors.toSet());
//查一下orderSn集合 //查一下orderSn集合
QueryWrapper<Order> orderQw = new QueryWrapper<>(); QueryWrapper<Order> orderQw = new QueryWrapper<>();
orderQw.in("id", idSet); orderQw.in("id", idSet);
@ -87,7 +153,7 @@ public class AftersaleService {
QueryWrapper<OrderItem> orderItemQw = new QueryWrapper<>(); QueryWrapper<OrderItem> orderItemQw = new QueryWrapper<>();
orderItemQw.in("order_id", idSet); orderItemQw.in("order_id", idSet);
Map<Long, List<OrderItem>> orderItemMap = orderItemMapper.selectList(orderItemQw).stream().collect(Collectors.groupingBy(OrderItem::getOrderId)); Map<Long, List<OrderItem>> orderItemMap = orderItemMapper.selectList(orderItemQw).stream().collect(Collectors.groupingBy(OrderItem::getOrderId));
managerRefundOrderVos.forEach(vo -> { managerRefundOrderVOS.forEach(vo -> {
Order order = orderMap.get(vo.getOrderId()); Order order = orderMap.get(vo.getOrderId());
vo.setOrderSn(order.getOrderSn()); vo.setOrderSn(order.getOrderSn());
List<OrderItem> orderItemList = orderItemMap.get(vo.getOrderId()); List<OrderItem> orderItemList = orderItemMap.get(vo.getOrderId());
@ -104,7 +170,7 @@ public class AftersaleService {
}); });
vo.setProductList(productList); vo.setProductList(productList);
}); });
return managerRefundOrderVos; return managerRefundOrderVOS;
} }
/** /**

@ -67,7 +67,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="handleMan != null and handleMan != ''"> and handle_man = #{handleMan}</if> <if test="handleMan != null and handleMan != ''"> and handle_man = #{handleMan}</if>
</where> </where>
</select> </select>
<select id="selectManagerRefundOrder" resultType="com.cyl.manager.oms.pojo.vo.ManagerRefundOrderVo"> <select id="selectManagerRefundOrder" resultType="com.cyl.manager.oms.pojo.vo.ManagerRefundOrderVO">
SELECT a.id id, SELECT a.id id,
a.return_amount applyReturnAmount, a.return_amount applyReturnAmount,
a.quantity refundNum, a.quantity refundNum,
@ -89,8 +89,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="id != null"> <if test="id != null">
and a.id = #{id} and a.id = #{id}
</if> </if>
<if test="orderId != null"> <if test="orderSn != null and orderSn != ''">
and a.order_id = #{orderId} and a.order_id = #{orderSn}
</if> </if>
<if test="userPhone != null and userPhone != ''"> <if test="userPhone != null and userPhone != ''">
and instr(c.phone, #{userPhone}) > 0 and instr(c.phone, #{userPhone}) > 0

@ -119,7 +119,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-- b.sp_data spData, -- b.sp_data spData,
-- b.product_id productId, -- b.product_id productId,
-- b.product_name productName, -- b.product_name productName,
c.phone userPhone, c.phone_hidden userPhone,
c.nickname nickName c.nickname nickName
from oms_order a from oms_order a
-- left join oms_order_item b on a.id = b.order_id -- left join oms_order_item b on a.id = b.order_id

Loading…
Cancel
Save