售后与子订单模块参数解耦
This commit is contained in:
parent
a7509e1125
commit
1764e6956b
@ -142,7 +142,7 @@ public class AfterSale extends BaseEntity {
|
||||
private String mLogisticsName;
|
||||
|
||||
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||
@ApiModelProperty(value = "买家发货时间")
|
||||
private Date mDeliverTime;
|
||||
|
||||
|
@ -7,27 +7,25 @@ import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.common.properties.RocketmqCustomProperties;
|
||||
import cn.lili.common.security.AuthUser;
|
||||
import cn.lili.common.security.OperationalJudgment;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.security.enums.UserEnums;
|
||||
import cn.lili.common.utils.BeanUtil;
|
||||
import cn.lili.common.utils.CurrencyUtil;
|
||||
import cn.lili.common.utils.SnowFlake;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.modules.order.aftersale.aop.AfterSaleLogPoint;
|
||||
import cn.lili.modules.order.aftersale.entity.dos.AfterSale;
|
||||
import cn.lili.modules.order.order.entity.dos.Order;
|
||||
import cn.lili.modules.order.order.entity.dos.OrderItem;
|
||||
import cn.lili.modules.order.order.entity.enums.*;
|
||||
import cn.lili.modules.order.aftersale.entity.dto.AfterSaleDTO;
|
||||
import cn.lili.modules.order.order.entity.enums.OrderItemAfterSaleStatusEnum;
|
||||
import cn.lili.modules.order.order.entity.enums.OrderStatusEnum;
|
||||
import cn.lili.modules.order.order.entity.enums.OrderTypeEnum;
|
||||
import cn.lili.modules.order.order.entity.enums.PayStatusEnum;
|
||||
import cn.lili.modules.order.aftersale.entity.vo.AfterSaleApplyVO;
|
||||
import cn.lili.modules.order.aftersale.entity.vo.AfterSaleSearchParams;
|
||||
import cn.lili.modules.order.aftersale.entity.vo.AfterSaleVO;
|
||||
import cn.lili.modules.order.aftersale.mapper.AfterSaleMapper;
|
||||
import cn.lili.modules.order.aftersale.service.AfterSaleService;
|
||||
import cn.lili.modules.order.order.entity.dos.Order;
|
||||
import cn.lili.modules.order.order.entity.dos.OrderItem;
|
||||
import cn.lili.modules.order.order.entity.enums.OrderItemAfterSaleStatusEnum;
|
||||
import cn.lili.modules.order.order.entity.enums.OrderStatusEnum;
|
||||
import cn.lili.modules.order.order.entity.enums.OrderTypeEnum;
|
||||
import cn.lili.modules.order.order.entity.enums.PayStatusEnum;
|
||||
import cn.lili.modules.order.order.service.OrderItemService;
|
||||
import cn.lili.modules.order.order.service.OrderService;
|
||||
import cn.lili.modules.order.trade.entity.enums.AfterSaleRefundWayEnum;
|
||||
@ -35,15 +33,12 @@ import cn.lili.modules.order.trade.entity.enums.AfterSaleStatusEnum;
|
||||
import cn.lili.modules.order.trade.entity.enums.AfterSaleTypeEnum;
|
||||
import cn.lili.modules.payment.entity.enums.PaymentMethodEnum;
|
||||
import cn.lili.modules.payment.kit.RefundSupport;
|
||||
import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam;
|
||||
import cn.lili.modules.statistics.util.StatisticsDateUtil;
|
||||
import cn.lili.modules.store.entity.dto.StoreAfterSaleAddressDTO;
|
||||
import cn.lili.modules.store.service.StoreDetailService;
|
||||
import cn.lili.modules.system.aspect.annotation.SystemLogPoint;
|
||||
import cn.lili.modules.system.entity.dos.Logistics;
|
||||
import cn.lili.modules.system.entity.vo.Traces;
|
||||
import cn.lili.modules.system.service.LogisticsService;
|
||||
import cn.lili.common.security.OperationalJudgment;
|
||||
import cn.lili.mybatis.util.PageUtil;
|
||||
import cn.lili.rocketmq.RocketmqSendCallbackBuilder;
|
||||
import cn.lili.rocketmq.tags.AfterSaleTagsEnum;
|
||||
@ -58,12 +53,10 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
* 售后业务层实现
|
||||
@ -197,7 +190,7 @@ public class AfterSaleServiceImpl extends ServiceImpl<AfterSaleMapper, AfterSale
|
||||
throw new ServiceException(ResultCode.AFTER_SALES_DOUBLE_ERROR);
|
||||
}
|
||||
//判断退款金额与付款金额是否正确,退款金额不能大于付款金额
|
||||
if (NumberUtil.compare(afterSale.getFlowPrice(), actualRefundPrice) == -1) {
|
||||
if (NumberUtil.compare(afterSale.getFlowPrice(), actualRefundPrice) < 0) {
|
||||
throw new ServiceException(ResultCode.AFTER_SALES_PRICE_ERROR);
|
||||
}
|
||||
|
||||
@ -213,6 +206,7 @@ public class AfterSaleServiceImpl extends ServiceImpl<AfterSaleMapper, AfterSale
|
||||
if (afterSale.getRefundWay().equals(AfterSaleRefundWayEnum.ORIGINAL.name())) {
|
||||
//如果为退款操作 && 在线支付 则直接进行退款
|
||||
refundSupport.refund(afterSale);
|
||||
afterSale.setRefundTime(new Date());
|
||||
afterSaleStatusEnum = AfterSaleStatusEnum.COMPLETE;
|
||||
} else {
|
||||
afterSaleStatusEnum = AfterSaleStatusEnum.WAIT_REFUND;
|
||||
@ -454,9 +448,9 @@ public class AfterSaleServiceImpl extends ServiceImpl<AfterSaleMapper, AfterSale
|
||||
.eq(OrderItem::getSkuId, afterSale.getSkuId()));
|
||||
AfterSaleStatusEnum afterSaleStatusEnum = AfterSaleStatusEnum.valueOf(afterSale.getServiceStatus());
|
||||
|
||||
switch (afterSaleStatusEnum){
|
||||
switch (afterSaleStatusEnum) {
|
||||
//判断当前售后的状态---申请中
|
||||
case APPLY:{
|
||||
case APPLY: {
|
||||
orderItem.setReturnGoodsNumber(orderItem.getReturnGoodsNumber() + afterSale.getNum());
|
||||
break;
|
||||
}
|
||||
@ -624,19 +618,19 @@ public class AfterSaleServiceImpl extends ServiceImpl<AfterSaleMapper, AfterSale
|
||||
private void updateOrderItem(OrderItem orderItem) {
|
||||
//订单状态不能为新订单,已失效订单或未申请订单才可以去修改订单信息
|
||||
OrderItemAfterSaleStatusEnum afterSaleTypeEnum = OrderItemAfterSaleStatusEnum.valueOf(orderItem.getAfterSaleStatus());
|
||||
switch (afterSaleTypeEnum){
|
||||
switch (afterSaleTypeEnum) {
|
||||
//售后状态为:未申请 部分售后 已申请
|
||||
case NOT_APPLIED:
|
||||
case PART_AFTER_SALE:
|
||||
case ALREADY_APPLIED:{
|
||||
case ALREADY_APPLIED: {
|
||||
//通过正在售后商品总数修改订单售后状态
|
||||
if (orderItem.getReturnGoodsNumber().equals(orderItem.getNum())) {
|
||||
//修改订单的售后状态--已申请
|
||||
orderItem.setAfterSaleStatus(OrderItemAfterSaleStatusEnum.ALREADY_APPLIED.name());
|
||||
} else if(orderItem.getReturnGoodsNumber().equals(0)){
|
||||
} else if (orderItem.getReturnGoodsNumber().equals(0)) {
|
||||
//修改订单的售后状态--未申请
|
||||
orderItem.setAfterSaleStatus(OrderItemAfterSaleStatusEnum.NOT_APPLIED.name());
|
||||
}else{
|
||||
} else {
|
||||
//修改订单的售后状态--部分售后
|
||||
orderItem.setAfterSaleStatus(OrderItemAfterSaleStatusEnum.PART_AFTER_SALE.name());
|
||||
}
|
||||
@ -649,7 +643,7 @@ public class AfterSaleServiceImpl extends ServiceImpl<AfterSaleMapper, AfterSale
|
||||
orderItemService.update(new LambdaUpdateWrapper<OrderItem>()
|
||||
.eq(OrderItem::getSn, orderItem.getSn())
|
||||
.set(OrderItem::getAfterSaleStatus, orderItem.getAfterSaleStatus())
|
||||
.set(OrderItem::getReturnGoodsNumber,orderItem.getReturnGoodsNumber()));
|
||||
.set(OrderItem::getReturnGoodsNumber, orderItem.getReturnGoodsNumber()));
|
||||
}
|
||||
|
||||
}
|
@ -58,4 +58,12 @@ public interface OrderItemService extends IService<OrderItem> {
|
||||
*/
|
||||
List<OrderItem> getByOrderSn(String orderSn);
|
||||
|
||||
/**
|
||||
* 子订单查询
|
||||
*
|
||||
* @param orderSn 订单编号
|
||||
* @param skuId skuid
|
||||
* @return 子订单
|
||||
*/
|
||||
OrderItem getByOrderSnAndSkuId(String orderSn, String skuId);
|
||||
}
|
@ -9,14 +9,12 @@ import cn.lili.modules.order.order.entity.enums.OrderItemAfterSaleStatusEnum;
|
||||
import cn.lili.modules.order.order.mapper.OrderItemMapper;
|
||||
import cn.lili.modules.order.order.service.OrderItemService;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -80,4 +78,10 @@ public class OrderItemServiceImpl extends ServiceImpl<OrderItemMapper, OrderItem
|
||||
return this.list(lambdaQueryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public OrderItem getByOrderSnAndSkuId(String orderSn, String skuId) {
|
||||
return this.getOne(new LambdaQueryWrapper<OrderItem>()
|
||||
.eq(OrderItem::getOrderSn, orderSn)
|
||||
.eq(OrderItem::getSkuId, skuId));
|
||||
}
|
||||
}
|
@ -3,22 +3,19 @@ package cn.lili.modules.payment.kit;
|
||||
import cn.lili.common.utils.SnowFlake;
|
||||
import cn.lili.common.utils.SpringContextUtil;
|
||||
import cn.lili.modules.order.aftersale.entity.dos.AfterSale;
|
||||
import cn.lili.modules.order.aftersale.service.AfterSaleService;
|
||||
import cn.lili.modules.order.order.entity.dos.Order;
|
||||
import cn.lili.modules.order.order.entity.dos.OrderItem;
|
||||
import cn.lili.modules.order.order.service.OrderItemService;
|
||||
import cn.lili.modules.order.aftersale.service.AfterSaleService;
|
||||
import cn.lili.modules.order.order.service.OrderService;
|
||||
import cn.lili.modules.order.order.service.StoreFlowService;
|
||||
import cn.lili.modules.payment.entity.RefundLog;
|
||||
import cn.lili.modules.payment.entity.enums.PaymentMethodEnum;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 退款支持
|
||||
@ -73,10 +70,6 @@ public class RefundSupport {
|
||||
Payment payment = (Payment) SpringContextUtil.getBean(paymentMethodEnum.getPlugin());
|
||||
payment.refund(refundLog);
|
||||
|
||||
//记录售后单中的退款金额
|
||||
afterSaleService.update(new LambdaUpdateWrapper<AfterSale>()
|
||||
.eq(AfterSale::getId, afterSale.getId())
|
||||
.set(AfterSale::getRefundTime, new Date()));
|
||||
this.updateReturnGoodsNumber(afterSale);
|
||||
|
||||
//记录退款流水
|
||||
@ -85,22 +78,21 @@ public class RefundSupport {
|
||||
|
||||
/**
|
||||
* 功能描述: 修改子订单中已售后退款商品数量
|
||||
*
|
||||
* @return void
|
||||
* @Author ftyy
|
||||
* @Description //TODO
|
||||
* @Date 17:33 2021/11/18
|
||||
* @Param [afterSale]
|
||||
* @return void
|
||||
**/
|
||||
private void updateReturnGoodsNumber(AfterSale afterSale){
|
||||
private void updateReturnGoodsNumber(AfterSale afterSale) {
|
||||
//根据商品id及订单sn获取子订单
|
||||
OrderItem orderItem = orderItemService.getOne(new LambdaQueryWrapper<OrderItem>()
|
||||
.eq(OrderItem::getOrderSn, afterSale.getOrderSn())
|
||||
.eq(OrderItem::getGoodsId, afterSale.getGoodsId()));
|
||||
OrderItem orderItem = orderItemService.getByOrderSnAndSkuId(afterSale.getOrderSn(), afterSale.getGoodsId());
|
||||
|
||||
orderItem.setReturnGoodsNumber(afterSale.getNum() + orderItem.getReturnGoodsNumber());
|
||||
|
||||
//修改子订单订单中的退货数量
|
||||
orderItemService.update(new LambdaUpdateWrapper<OrderItem>()
|
||||
.eq(OrderItem::getOrderSn,afterSale.getOrderSn())
|
||||
.eq(OrderItem::getGoodsId,afterSale.getGoodsId())
|
||||
.set(OrderItem::getReturnGoodsNumber,(afterSale.getNum()+orderItem.getReturnGoodsNumber())));
|
||||
orderItemService.updateById(orderItem);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user