package shop.alien.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import shop.alien.entity.store.LawyerConsultationOrder;
import shop.alien.entity.store.vo.LawyerConsultationOrderVO;

import java.util.List;

/**
 * 律师对账业务逻辑 Mapper
 *
 * @author system
 * @since 2025-01-XX
 */
@Mapper
public interface LawyerReconcMapper extends BaseMapper<LawyerConsultationOrder> {

    /**
     * 查询订单列表（关联律师信息）
     *
     * @param page 分页对象
     * @param orderNumber 订单编号（可选，支持模糊查询）
     * @param clientUserId 客户端用户ID（可选）
     * @param lawyerUserId 律师用户ID（可选）
     * @param lawyerName 律师姓名（可选，支持模糊查询）
     * @param orderStatus 订单状态（可选）
     * @param paymentStatus 支付状态（可选）
     * @param startTime 开始时间（可选，范围查询）
     * @param endTime 结束时间（可选，范围查询）
     * @return 分页结果
     */
    IPage<LawyerConsultationOrderVO> getOrderListWithLawyer(
            IPage<LawyerConsultationOrderVO> page,
            @Param("orderNumber") String orderNumber,
            @Param("clientUserId") Integer clientUserId,
            @Param("lawyerUserId") Integer lawyerUserId,
            @Param("lawyerName") String lawyerName,
            @Param("orderStatus") Integer orderStatus,
            @Param("paymentStatus") Integer paymentStatus,
            @Param("startTime") String startTime,
            @Param("endTime") String endTime
    );

    /**
     * 查询订单列表（不分页，关联律师信息）
     *
     * @param orderNumber 订单编号（可选，支持模糊查询）
     * @param clientUserId 客户端用户ID（可选）
     * @param lawyerUserId 律师用户ID（可选）
     * @param lawyerName 律师姓名（可选，支持模糊查询）
     * @param orderStatus 订单状态（可选）
     * @param paymentStatus 支付状态（可选）
     * @param startTime 开始时间（可选，范围查询）
     * @param endTime 结束时间（可选，范围查询）
     * @return 订单列表
     */
    List<LawyerConsultationOrderVO> getOrderList(
            @Param("orderNumber") String orderNumber,
            @Param("clientUserId") Integer clientUserId,
            @Param("lawyerUserId") Integer lawyerUserId,
            @Param("lawyerName") String lawyerName,
            @Param("orderStatus") Integer orderStatus,
            @Param("paymentStatus") Integer paymentStatus,
            @Param("startTime") String startTime,
            @Param("endTime") String endTime
    );
}
