liujie
2026-07-30 280ef5100bece9b40ac51736aef037704a52a4ca
backend/src/main/java/com/tourguide/modules/order/service/TourOrderService.java
@@ -9,6 +9,7 @@
import com.tourguide.modules.order.domain.RefundStatus;
import com.tourguide.modules.order.entity.TourOrder;
import com.tourguide.modules.order.mapper.TourOrderMapper;
import com.tourguide.modules.system.service.GuideNotificationService;
import com.tourguide.modules.review.entity.OrderReview;
import com.tourguide.modules.review.mapper.OrderReviewMapper;
import org.springframework.stereotype.Service;
@@ -25,10 +26,13 @@
public class TourOrderService {
    private final TourOrderMapper orderMapper;
    private final OrderReviewMapper reviewMapper;
    private final GuideNotificationService notificationService;
    public TourOrderService(TourOrderMapper orderMapper, OrderReviewMapper reviewMapper) {
    public TourOrderService(TourOrderMapper orderMapper, OrderReviewMapper reviewMapper,
                            GuideNotificationService notificationService) {
        this.orderMapper = orderMapper;
        this.reviewMapper = reviewMapper;
        this.notificationService = notificationService;
    }
    public PageResponse<TourOrderResponse> page(long page, long size, String keyword, Long visitorId,
@@ -70,6 +74,7 @@
    @Transactional
    public TourOrderResponse refund(Long id) {
        TourOrder order = requireOrder(id);
        boolean notifyGuide = OrderStatus.PENDING_MEETING.matches(order.getStatus()) && order.getGuideId() != null;
        if (OrderStatus.REFUNDED.matches(order.getStatus()) || RefundStatus.REFUNDED.matches(order.getRefundStatus())) {
            throw new BusinessException(409, "订单已退款,请勿重复操作");
        }
@@ -86,6 +91,7 @@
        order.setRefundOrderNo(generateRefundOrderNo());
        order.setRefundMethod(order.getPaymentMethod());
        orderMapper.updateById(order);
        if (notifyGuide) notificationService.notifyOrderCancelled(order);
        return TourOrderResponse.from(order);
    }