管理后台售后订单列表

pull/1/head
czc 2 years ago
parent 8220af689c
commit 0d4dabb19a

@ -2,6 +2,8 @@ package com.cyl.manager.oms.controller;
import java.util.List;
import com.cyl.manager.oms.pojo.request.ManagerAftersaleOrderRequest;
import com.cyl.manager.oms.pojo.vo.ManagerRefundOrderVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.data.domain.PageImpl;
@ -45,8 +47,8 @@ public class AftersaleController extends BaseController {
@ApiOperation("查询订单售后列表")
@PreAuthorize("@ss.hasPermi('oms:aftersale:list')")
@PostMapping("/list")
public ResponseEntity<Page<Aftersale>> list(@RequestBody AftersaleQuery query, Pageable page) {
List<Aftersale> list = service.selectList(query, page);
public ResponseEntity<Page<ManagerRefundOrderVo>> list(@RequestBody ManagerAftersaleOrderRequest query, Pageable page) {
List<ManagerRefundOrderVo> list = service.selectList(query, page);
return ResponseEntity.ok(new PageImpl<>(list, page, ((com.github.pagehelper.Page)list).getTotal()));
}
@ -55,9 +57,10 @@ public class AftersaleController extends BaseController {
@Log(title = "订单售后", businessType = BusinessType.EXPORT)
@GetMapping("/export")
public ResponseEntity<String> export(AftersaleQuery query) {
List<Aftersale> list = service.selectList(query, null);
ExcelUtil<AftersaleVO> util = new ExcelUtil<>(AftersaleVO.class);
return ResponseEntity.ok(util.writeExcel(convert.dos2vos(list), "订单售后数据"));
// List<Aftersale> list = service.selectList(query, null);
// ExcelUtil<AftersaleVO> util = new ExcelUtil<>(AftersaleVO.class);
// return ResponseEntity.ok(util.writeExcel(convert.dos2vos(list), "订单售后数据"));
return null;
}
@ApiOperation("获取订单售后详细信息")

@ -4,6 +4,8 @@ import java.util.List;
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 org.apache.ibatis.annotations.Param;
/**
@ -21,4 +23,7 @@ public interface AftersaleMapper extends BaseMapper<Aftersale> {
List<Aftersale> selectByEntity(Aftersale aftersale);
Integer insertBatch(@Param("list") List<AftersaleItem> list);
List<ManagerRefundOrderVo> selectManagerRefundOrder(ManagerAftersaleOrderRequest managerAftersaleOrderPageRequest);
}

@ -5,8 +5,10 @@ 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;
/**
@ -32,4 +34,6 @@ public interface OrderMapper extends BaseMapper<Order> {
CountOrderVO countByStatusAndMemberId(Long memberId);
Integer cancelBatch(@Param("list") List<Order> orderList);
}

@ -0,0 +1,42 @@
package com.cyl.manager.oms.pojo.request;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import java.util.Date;
@Data
@ApiModel(value = "商城订单请求体")
public class ManagerAftersaleOrderRequest {
@ApiModelProperty(name = "id", value = "售后单号", required = true, dataType = "String")
private Long id;
@ApiModelProperty(name = "orderId", value = "订单id", required = true, dataType = "String")
private Long orderId;
@ApiModelProperty(name = "userPhone", value = "用户名称(手机号)", required = true, dataType = "String")
private String userPhone;
@ApiModelProperty(name = "status", value = "售后申请状态0->待处理1->退货中2->已完成3->已拒绝4->用户取消", required = true, dataType = "String")
private Integer status;
@ApiModelProperty(name = "type", value = "售后类型1->退款2->退货退款", required = true, dataType = "String")
private Integer type;
@ApiModelProperty(name = "startTime", value = "开始时间", required = true, dataType = "Date")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime startTime;
@ApiModelProperty(name = "endTime", value = "结束时间", required = true, dataType = "Date")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime endTime;
}

@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import java.util.Date;
@Data
@ -45,10 +46,10 @@ public class ManagerOrderQueryRequest {
@ApiModelProperty(name = "startTime", value = "开始时间", required = true, dataType = "Date")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date startTime;
private LocalDateTime startTime;
@ApiModelProperty(name = "endTime", value = "结束时间", required = true, dataType = "Date")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date endTime;
private LocalDateTime endTime;
}

@ -0,0 +1,75 @@
package com.cyl.manager.oms.pojo.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
@Data
@ApiModel(value = "售后订单vo")
public class ManagerRefundOrderVo {
@ApiModelProperty(name = "id",value = "售后单id",required = true,dataType = "Long")
private Long id;
@ApiModelProperty(name = "orderId",value = "订单id",required = true,dataType = "Long")
private Long orderId;
@ApiModelProperty(name = "orderSn",value = "订单号",required = true,dataType = "String")
private String orderSn;
@ApiModelProperty(name = "payId",value = "支付ID",required = true,dataType = "Long")
private Long payId;
@ApiModelProperty(name = "phone",value = "用户手机号",required = true,dataType = "String")
private String phone;
@ApiModelProperty(name = "nickName",value = "用户昵称",required = true,dataType = "String")
private String nickName;
@ApiModelProperty(name = "status",value = "订单状态 0->待付款1->待发货2->已发货3->已完成4->已关闭5->无效订单",required = true,dataType = "Integer")
private Integer status;
@ApiModelProperty(name = "userName",value = "用户名称",required = true,dataType = "String")
private String userName;
@ApiModelProperty(name = "payTime",value = "支付时间",required = true,dataType = "String")
private String payTime;
@ApiModelProperty(name = "payType",value = "支付方式 支付方式0->未支付1->支付宝2->微信",required = true,dataType = "Integer")
private Integer payType;
@ApiModelProperty(name = "applyRefundTime",value = "申请售后的时间",required = true,dataType = "String")
private String applyRefundTime;
@ApiModelProperty(name = "refundFinishTime",value = "售后完成的时间",required = true,dataType = "String")
private String refundFinishTime;
@ApiModelProperty(name = "aftersaleStatus",value = "0->待处理1->退货中2->已完成3->已拒绝; 4->用户取消",required = true,dataType = "String")
private Integer aftersaleStatus;
@ApiModelProperty(name = "note",value = "备注",required = true,dataType = "String")
private String note;
@ApiModelProperty(name = "applyRefundAmount",value = "退款金额",required = true,dataType = "BigDecimal")
private BigDecimal applyReturnAmount;
@ApiModelProperty(name = "refundNum",value = "退款数量",required = true,dataType = "Integer")
private Integer refundNum;
@ApiModelProperty(name = "applyRefundType",value = "申请退货方式1-仅退款2-退货退款",required = true,dataType = "String")
private Integer applyRefundType;
@ApiModelProperty(name = "handleTime",value = "处理时间",required = true,dataType = "LocalDateTime")
private LocalDateTime handleTime;
@ApiModelProperty(name = "reason",value = "原因",required = true,dataType = "String")
private String reason;
@ApiModelProperty(name = "description",value = "描述",required = true,dataType = "String")
private String description;
@ApiModelProperty(name = "proofPics",value = "凭证图片",required = true,dataType = "String")
private String proofPics;
@ApiModelProperty(name = "productInfo", value = "售后单商品数据")
private List<ManagerOrderProductVO> productList;
}

@ -2,9 +2,18 @@ package com.cyl.manager.oms.service;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.cyl.manager.oms.domain.Order;
import com.cyl.manager.oms.domain.OrderItem;
import com.cyl.manager.oms.mapper.OrderItemMapper;
import com.cyl.manager.oms.mapper.OrderMapper;
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.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
@ -25,6 +34,12 @@ public class AftersaleService {
@Autowired
private AftersaleMapper aftersaleMapper;
@Autowired
private OrderMapper orderMapper;
@Autowired
private OrderItemMapper orderItemMapper;
/**
*
*
@ -42,60 +57,41 @@ public class AftersaleService {
* @param page
* @return
*/
public List<Aftersale> selectList(AftersaleQuery query, Pageable page) {
public List<ManagerRefundOrderVo> selectList(ManagerAftersaleOrderRequest query, Pageable page) {
if (page != null) {
PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
}
QueryWrapper<Aftersale> qw = new QueryWrapper<>();
Long memberId = query.getMemberId();
if (memberId != null) {
qw.eq("member_id", memberId);
}
Long orderId = query.getOrderId();
if (orderId != null) {
qw.eq("order_id", orderId);
}
BigDecimal returnAmount = query.getReturnAmount();
if (returnAmount != null) {
qw.eq("return_amount", returnAmount);
}
Integer type = query.getType();
if (type != null) {
qw.eq("type", type);
}
Integer status = query.getStatus();
if (status != null) {
qw.eq("status", status);
}
LocalDateTime handleTime = query.getHandleTime();
if (handleTime != null) {
qw.eq("handle_time", handleTime);
}
Integer quantity = query.getQuantity();
if (quantity != null) {
qw.eq("quantity", quantity);
}
String reason = query.getReason();
if (!StringUtils.isEmpty(reason)) {
qw.eq("reason", reason);
}
String description = query.getDescription();
if (!StringUtils.isEmpty(description)) {
qw.eq("description", description);
}
String proofPics = query.getProofPics();
if (!StringUtils.isEmpty(proofPics)) {
qw.eq("proof_pics", proofPics);
}
String handleNote = query.getHandleNote();
if (!StringUtils.isEmpty(handleNote)) {
qw.eq("handle_note", handleNote);
}
String handleMan = query.getHandleMan();
if (!StringUtils.isEmpty(handleMan)) {
qw.eq("handle_man", handleMan);
List<ManagerRefundOrderVo> managerRefundOrderVos = aftersaleMapper.selectManagerRefundOrder(query);
if (CollectionUtil.isEmpty(managerRefundOrderVos)){
return managerRefundOrderVos;
}
return aftersaleMapper.selectList(qw);
Set<Long> idSet = managerRefundOrderVos.stream().map(ManagerRefundOrderVo::getOrderId).collect(Collectors.toSet());
//查一下orderSn集合
QueryWrapper<Order> orderQw = new QueryWrapper<>();
orderQw.in("id", idSet);
Map<Long, Order> orderMap = orderMapper.selectList(orderQw).stream().collect(Collectors.toMap(Order::getId, it -> it));
//封装售后单商品数据
QueryWrapper<OrderItem> orderItemQw = new QueryWrapper<>();
orderItemQw.in("order_id", idSet);
Map<Long, List<OrderItem>> orderItemMap = orderItemMapper.selectList(orderItemQw).stream().collect(Collectors.groupingBy(OrderItem::getOrderId));
managerRefundOrderVos.forEach(vo -> {
Order order = orderMap.get(vo.getOrderId());
vo.setOrderSn(order.getOrderSn());
List<OrderItem> orderItemList = orderItemMap.get(vo.getOrderId());
List<ManagerOrderProductVO> productList = new ArrayList<>();
orderItemList.forEach(item -> {
ManagerOrderProductVO productVO = new ManagerOrderProductVO();
productVO.setProductName(item.getProductName());
productVO.setSalePrice(item.getSalePrice());
productVO.setPic(item.getPic());
productVO.setBuyNum(item.getQuantity());
productVO.setProductId(item.getProductId());
productVO.setSpData(item.getSpData());
productList.add(productVO);
});
vo.setProductList(productList);
});
return managerRefundOrderVos;
}
/**

@ -67,4 +67,44 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="handleMan != null and handleMan != ''"> and handle_man = #{handleMan}</if>
</where>
</select>
<select id="selectManagerRefundOrder" resultType="com.cyl.manager.oms.pojo.vo.ManagerRefundOrderVo">
SELECT a.id id,
a.return_amount applyReturnAmount,
a.quantity refundNum,
a.type applyRefundType,
a.reason reason,
a.description description,
a.proof_pics proof_pics,
a.order_id orderId,
a.create_time applyRefundTime,
a.status aftersaleStatus,
a.handle_time handleTime,
a.handle_note note,
c.nickname nickName,
c.phone phone
FROM oms_aftersale a
left join ums_member c on a.member_id = c.id
<where>
<if test="id != null">
and a.id = #{id}
</if>
<if test="orderId != null">
and a.order_id = #{orderId}
</if>
<if test="userPhone != null and userPhone != ''">
and instr(c.phone, #{userPhone}) > 0
</if>
<if test="status != null">
and a.status = #{status}
</if>
<if test="type != null">
and a.type = #{type}
</if>
<if test="startTime != null and endTime != null">
and a.create_time between #{startTime} and #{endTime}
</if>
</where>
order by a.create_time desc
</select>
</mapper>

@ -225,4 +225,5 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
from oms_order
where member_id=#{memberId} and delete_status=0
</select>
</mapper>

Loading…
Cancel
Save