package com.leromro.core.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.leromro.common.core.domain.AjaxResult;
import com.leromro.core.domain.SecondOrder;
import com.leromro.core.domain.dto.*;
import com.leromro.core.domain.vo.*;

import java.util.List;

public interface ISecondOrderService extends IService<SecondOrder> {
    List<VolunteerOrdersVO> selectOrderList(Long userId,Long orderStatus);

    AjaxResult volunteerFinishWork(SecondOrder secondOrder);

    void userFinish(UserOrderReviewDTO reviewDTO);

    List<SecondOrder> getCurrentOrgSecondOrderList(HomePageDTO dto);

    List<SecondOrder> getTodayAllOrderList(HomePageDTO dto);

    /**
     * 获取结算订单列表
     * @param settlementOrderListDTO
     * @return
     */
    List<SettlementOrderListVO> selectSettlementOrderList(SettlementOrderListDTO settlementOrderListDTO);

    /**
     * 区域公司订单抽成结算
     * @param settlementOrderDTO
     */
    void areaSettlement(SettlementOrderDTO settlementOrderDTO);

    /**
     * 服务中心订单抽成结算
     * @param settlementOrderDTO
     */
    void serviceCentreSettlement(SettlementOrderDTO settlementOrderDTO);

    /**
     * 修改订单区域公司结算状态
     * @param secondOrderIds
     * @param status
     */
    void updateAreaSettlementStatus(List<Long> secondOrderIds, String status);

    /**
     * 提交结算申请时修改订单区域公司结算信息
     * @param settlementOrderApplyDTO
     */
    void updateAreaSettlementInfo(SettlementOrderApplyDTO settlementOrderApplyDTO);

    /**
     * 提交结算申请时修改订单服务中心结算信息
     * @param settlementOrderApplyDTO
     */
    void updateServiceCentreSettlementInfo(SettlementOrderApplyDTO settlementOrderApplyDTO);

    /**
     * 修改订单服务中心结算状态
     * @param secondOrderIds
     * @param status
     */
    void updateServiceCentreSettlementStatus(List<Long> secondOrderIds, String status);

    /**
     * 获取订单服务中心结算列表
     * @param secondOrderId
     * @return
     */
    SettlementOrderDetailVO getSettlementOrderDetail(Long secondOrderId);

    List<SecondOrderInfoVO> selectSecondOrderInfoVO(Long mainOrderId);

    AppSecoundOrderInfoVO selectAppSecondOrderInfo(Long secondOrderId);

    WebSecondOrderInfoVO selectWebAppSecondOrderInfo(Long secondOrderId);
}
