package com.pz.merchant.service;

import com.pz.merchant.domain.vo.SonOrderVo;
import com.pz.system.domain.bo.OrderFinishedBo;

/**
 * 子订单业务
 * <p>created in  2023/9/11 17:16
 *
 * @author WangMin
 * @version 1.0
 */
public interface ISonOrderService {
    /**
     * 取消订单Redis前缀
     */
    String ORDER_CANCEL_CACHE_PREFIX = "order_cancel_hash";

    /**
     * 根据主订单ID查询子订单相关信息
     *
     * @param totalId 主订单ID
     * @return 子订单相关信息
     */
    SonOrderVo getSonOrderSimpleDataByTotalId(Integer totalId);

    /**
     * 切换子订单状态
     *
     * @param totalId 主订单ID
     * @param target  子订单目标状态
     * @return 操作结果
     */
    boolean switchSonOrderStatus(Long totalId, Integer target);


    /**
     * 查询订单详情
     *
     * @param totalId 主订单ID
     * @return 订单详情
     */
    default Object getSonOrderDetailDataByTotalId(Integer totalId) {
        throw new UnsupportedOperationException("不支持该操作");
    }

    /**
     * 陪诊员取消订单
     *
     * @param totalId 取消订单
     * @return 操作结果
     */
    default boolean accompanyCancellationOfOrder(Integer totalId) {
        throw new UnsupportedOperationException("不支持该操作");
    }

    /**
     * 陪诊员开始服务
     *
     * @param totalId 主订单ID
     * @return 操作结果
     */
    default boolean accompanyStartService(Integer totalId) {
        throw new UnsupportedOperationException("不支持该操作");
    }

    /**
     * 陪诊员完成服务
     *
     * @param orderData 主订单数据
     * @return 操作结果
     */
    default boolean finishedService(OrderFinishedBo orderData) {
        throw new UnsupportedOperationException("不支持该操作");
    }

    /**
     * 查询服务开始时间
     */
    default String getFinishTime(Integer totalId){
        throw new UnsupportedOperationException("不支持该操作");
    }
}