merge master

This commit is contained in:
Chopper711 2023-09-25 11:05:04 +08:00
commit 118efe0833
8 changed files with 56 additions and 17 deletions

View File

@ -104,7 +104,7 @@ public class FullDiscountExecute implements TradeEvent, OrderStatusChangeEvent {
searchParams.setOrderPromotionType(OrderPromotionTypeEnum.GIFT.name());
List<Order> orders = orderService.queryListByParams(searchParams);
if (orders != null && !orders.isEmpty()) {
orderService.systemCancel(orders.get(0).getSn(),"主订单取消,赠送订单字段自动取消");
orderService.systemCancel(orders.get(0).getSn(),"主订单取消,赠送订单字段自动取消",true);
}
}
}

View File

@ -1,12 +1,20 @@
package cn.lili.event.impl;
import cn.lili.event.AfterSaleStatusChangeEvent;
import cn.lili.event.TradeEvent;
import cn.lili.modules.order.aftersale.entity.dos.AfterSale;
import cn.lili.modules.order.cart.entity.dto.TradeDTO;
import cn.lili.modules.order.order.entity.dos.OrderItem;
import cn.lili.modules.order.order.service.OrderItemService;
import cn.lili.modules.order.order.service.OrderService;
import cn.lili.modules.order.order.service.TradeService;
import cn.lili.modules.order.trade.entity.enums.AfterSaleStatusEnum;
import cn.lili.modules.payment.entity.enums.PaymentMethodEnum;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 订单状态处理类
*
@ -14,11 +22,15 @@ import org.springframework.stereotype.Service;
* @since 2020-07-03 11:20
**/
@Service
public class OrderStatusHandlerExecute implements TradeEvent {
public class OrderStatusHandlerExecute implements TradeEvent, AfterSaleStatusChangeEvent {
@Autowired
private TradeService tradeService;
@Autowired
private OrderItemService orderItemService;
@Autowired
private OrderService orderService;
@Override
public void orderCreate(TradeDTO tradeDTO) {
@ -28,4 +40,24 @@ public class OrderStatusHandlerExecute implements TradeEvent {
}
}
@Override
public void afterSaleStatusChange(AfterSale afterSale) {
if (afterSale.getServiceStatus().equals(AfterSaleStatusEnum.COMPLETE.name())) {
//循环订单货物判断是否已经全部售后
List<OrderItem> orderItems = orderItemService.getByOrderSn(afterSale.getOrderSn());
// 总退货数量
int returnCount = 0;
// 总购买数量
int deliverCount = 0;
for (OrderItem orderItem : orderItems) {
returnCount += orderItem.getReturnGoodsNumber();
deliverCount += orderItem.getNum();
}
if (returnCount == deliverCount) {
orderService.systemCancel(afterSale.getOrderSn(),"订单货物全部退款",false);
}
}
}
}

View File

@ -222,7 +222,7 @@ public class StockUpdateExecute implements OrderStatusChangeEvent {
* @param orderSn 失败入库订单信息
*/
private void errorOrder(String orderSn) {
orderService.systemCancel(orderSn, outOfStockMessage);
orderService.systemCancel(orderSn, outOfStockMessage,true);
}

View File

@ -42,8 +42,8 @@ public class VerificationOrderExecute implements OrderStatusChangeEvent {
.eq(Order::getSn, orderMessage.getOrderSn()));
//修改虚拟订单货物可以进行售后投诉
orderItemService.update(new LambdaUpdateWrapper<OrderItem>().eq(OrderItem::getOrderSn, orderMessage.getOrderSn())
.set(OrderItem::getAfterSaleStatus, OrderItemAfterSaleStatusEnum.NOT_APPLIED)
.set(OrderItem::getCommentStatus, OrderComplaintStatusEnum.NO_APPLY));
.set(OrderItem::getAfterSaleStatus, OrderItemAfterSaleStatusEnum.ALREADY_APPLIED)
.set(OrderItem::getCommentStatus, OrderComplaintStatusEnum.COMPLETE));
}
}

View File

@ -54,7 +54,7 @@ public class CancelOrderTaskExecute implements EveryMinuteExecute {
List<Order> list = orderService.list(queryWrapper);
List<String> cancelSnList = list.stream().map(Order::getSn).collect(Collectors.toList());
for (String sn : cancelSnList) {
orderService.systemCancel(sn, "超时未支付自动取消");
orderService.systemCancel(sn, "超时未支付自动取消",false);
}
}
}

View File

@ -201,9 +201,13 @@ public class DistributionOrderServiceImpl extends ServiceImpl<DistributionOrderM
if (distributionOrder == null) {
return;
}
if (distributionOrder.getSellBackRebate() == null) {
distributionOrder.setSellBackRebate(refundStoreFlow.getDistributionRebate());
} else {
distributionOrder.setSellBackRebate(CurrencyUtil.add(distributionOrder.getSellBackRebate(), refundStoreFlow.getDistributionRebate()));
}
distributionOrder.setSellBackRebate(CurrencyUtil.add(distributionOrder.getSellBackRebate(), refundStoreFlow.getDistributionRebate()));
distributionOrder.setRebate(CurrencyUtil.sub(distributionOrder.getSellBackRebate(), refundStoreFlow.getDistributionRebate()));
distributionOrder.setRebate(CurrencyUtil.sub(distributionOrder.getRebate(), refundStoreFlow.getDistributionRebate()));
if (distributionOrder.getRebate() == 0) {
distributionOrder.setDistributionOrderStatus(DistributionOrderStatusEnum.REFUND.name());
}

View File

@ -32,8 +32,9 @@ public interface OrderService extends IService<Order> {
*
* @param orderSn 订单编号
* @param reason 错误原因
* @param refundMoney 是否退款
*/
void systemCancel(String orderSn, String reason);
void systemCancel(String orderSn, String reason,Boolean refundMoney);
/**
* 根据sn查询

View File

@ -321,14 +321,16 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
@Override
@OrderLogPoint(description = "'订单['+#orderSn+']系统取消,原因为:'+#reason", orderSn = "#orderSn")
@Transactional(rollbackFor = Exception.class)
public void systemCancel(String orderSn, String reason) {
public void systemCancel(String orderSn, String reason,Boolean refundMoney) {
Order order = this.getBySn(orderSn);
order.setOrderStatus(OrderStatusEnum.CANCELLED.name());
order.setCancelReason(reason);
this.updateById(order);
//生成店铺退款流水
this.generatorStoreRefundFlow(order);
orderStatusMessage(order);
if(refundMoney){
//生成店铺退款流水
this.generatorStoreRefundFlow(order);
orderStatusMessage(order);
}
}
/**
@ -772,12 +774,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
//如果未开启虚拟成团且已参团人数小于成团人数则自动取消订单
String reason = "拼团活动结束订单未付款,系统自动取消订单";
if (CharSequenceUtil.isNotEmpty(entry.getKey())) {
this.systemCancel(entry.getKey(), reason);
this.systemCancel(entry.getKey(), reason,true);
} else {
for (Order order : entry.getValue()) {
if (!CharSequenceUtil.equalsAny(order.getOrderStatus(), OrderStatusEnum.COMPLETED.name(), OrderStatusEnum.DELIVERED.name(),
OrderStatusEnum.TAKE.name(), OrderStatusEnum.STAY_PICKED_UP.name())) {
this.systemCancel(order.getSn(), reason);
this.systemCancel(order.getSn(), reason,true);
}
}
}
@ -802,7 +804,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
//未付款订单自动取消
if (unpaidOrders != null && !unpaidOrders.isEmpty()) {
for (Order unpaidOrder : unpaidOrders) {
this.systemCancel(unpaidOrder.getSn(), "拼团活动结束订单未付款,系统自动取消订单");
this.systemCancel(unpaidOrder.getSn(), "拼团活动结束订单未付款,系统自动取消订单",false);
}
}
List<Order> paidOrders = listMap.get(PayStatusEnum.PAID.name());
@ -963,7 +965,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
private void pintuanOrderFailed(List<Order> list) {
for (Order order : list) {
try {
this.systemCancel(order.getSn(), "拼团人数不足,拼团失败!");
this.systemCancel(order.getSn(), "拼团人数不足,拼团失败!",true);
} catch (Exception e) {
log.error("拼团订单取消失败", e);
}