package shop.alien.lawyer.service;

import com.baomidou.mybatisplus.extension.service.IService;
import shop.alien.entity.result.R;
import shop.alien.entity.store.LawyerConsultationOrder;
import shop.alien.entity.store.vo.LawyerConsultationOrderVO;

import java.util.Map;

/**
 * 咨询订单 服务类
 *
 * @author system
 * @since 2025-01-XX
 */
public interface LawyerClientConsultationOrderService extends IService<LawyerConsultationOrder> {

    /**
     * 删除咨询订单
     *
     * @param id 主键
     * @return R<Boolean>
     */
    R<Boolean> deleteConsultationOrder(Integer id);


    /**
     * 获取咨询订单详情
     *
     * @param lawyerOrderId 订单ID
     * @return 咨询订单详情VO
     */
    LawyerConsultationOrderVO getConsultationOrderDetail(String lawyerOrderId);

    /**
     * 查询咨询订单（律师端）
     *
     * @param pageNum      页码
     * @param pageSize     页容
     * @param startDate  开始时间
     * @param endDate 结束时间
     * @param lawyerId 律师ID
     * @return IPage<LawyerConsultationOrderVO>
     */
    Map<String, Object> getLawyerConsultationOrderInfo(int pageNum, int pageSize, String startDate, String endDate, String clientUserName, String orderStatus, String lawyerId);

    /**
     * 律师确认订单
     * <p>
     * 支持两种操作类型：
     * 1. 接单：将订单状态从待接单更新为进行中
     * 2. 取消：将订单状态更新为已取消
     * </p>
     *
     * @param id        订单ID
     * @param actionType 操作类型：1-接单，2-取消
     * @return R<Boolean> 是否成功
     */
    R<Boolean> confirmOrder(String id, String actionType);

    /**
     * 申请退款
     *
     * @param id 订单ID
     * @param refundReason 退款原因
     * @return R<Boolean> 是否成功
     */
    R<Boolean> requestRefund(Integer id, String refundReason);


    /**
     * 退款申请处理
     *
     * @param lawyerConsultationOrder 订单对象
     * @return R<Boolean> 是否成功
     */
    R<Boolean> refundApplyProcess(LawyerConsultationOrder lawyerConsultationOrder);
}

