package com.tourism.webadmin.back.dao;

import com.tourism.common.core.base.dao.BaseDaoMapper;
import com.tourism.webadmin.app.website.dto.TourGroupUserToWebDto;
import com.tourism.webadmin.back.model.TourOrder;
import com.tourism.webadmin.back.model.TourUser;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.poi.hpsf.Decimal;

import java.math.BigDecimal;
import java.util.List;

/**
 * 旅游订单数据操作访问接口。
 *
 * @author 吃饭睡觉
 * @date 2024-09-06
 */
public interface TourOrderMapper extends BaseDaoMapper<TourOrder> {

    /**
     * 批量插入对象列表。
     *
     * @param tourOrderList 新增对象列表。
     */
    void insertList(List<TourOrder> tourOrderList);

    /**
     * 获取过滤后的对象列表。
     *
     * @param tourOrderFilter 主表过滤对象。
     * @param orderBy 排序字符串，order by从句的参数。
     * @return 对象列表。
     */
    List<TourOrder> getTourOrderList(
            @Param("tourOrderFilter") TourOrder tourOrderFilter, @Param("orderBy") String orderBy);

    /**
     * 根据条件查询对应的参团用户信息
     * @param dto
     * @return
     */
    List<TourUser> getTourUserList(@Param("groupUserFilter") TourGroupUserToWebDto dto);

    /**
     * 根据条件查询对应的返利金额
     * @param userId 用户id
     * @param groupPurchaseProgressId 拼团id
     * @return
     */
    BigDecimal getTourUserRebate(Long userId, Long groupPurchaseProgressId);
}
