package cn.iocoder.yudao.module.trade.service.order.handler; import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO; import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO; import cn.iocoder.yudao.module.trade.enums.order.TradeOrderItemAfterSaleStatusEnum; import java.util.List; /** * 订单活动特殊逻辑处理器 handler 接口 * 提供订单生命周期钩子接口;订单创建前、订单创建后、订单支付后、订单取消 * * @author HUIHUI */ public interface TradeOrderHandler { /** * 订单创建前 * * @param order 订单 * @param orderItems 订单项 */ default void beforeOrderCreate(TradeOrderDO order, List orderItems) {} /** * 订单创建后 * * @param order 订单 * @param orderItems 订单项 */ default void afterOrderCreate(TradeOrderDO order, List orderItems) {} /** * 支付订单后 * * @param order 订单 * @param orderItems 订单项 */ default void afterPayOrder(TradeOrderDO order, List orderItems) {} /** * 订单取消后 * * @param order 订单 * @param orderItems 订单项 */ default void afterCancelOrder(TradeOrderDO order, List orderItems) {} /** * 订单项取消后 * * @param order 订单 * @param orderItem 订单项 */ default void afterCancelOrderItem(TradeOrderDO order, TradeOrderItemDO orderItem) {} /** * 订单发货前 * * @param order 订单 */ default void beforeDeliveryOrder(TradeOrderDO order) {} /** * 订单发货后 * * @param order 订单 */ default void afterDeliveryOrder(TradeOrderDO order) {} /** * 订单收货前 * * @param order 订单 */ default void beforeReceiveOrder(TradeOrderDO order) {} /** * 订单收货后 * * @param order 订单 */ default void afterReceiveOrder(TradeOrderDO order) {} // ========== 公用方法 ========== /** * 过滤“未售后”的订单项列表 * * @param orderItems 订单项列表 * @return 过滤后的订单项列表 */ default List filterOrderItemListByNoneAfterSale(List orderItems) { return CollectionUtils.filterList(orderItems, item -> TradeOrderItemAfterSaleStatusEnum.isNone(item.getAfterSaleStatus())); } }