package com.yc.ship.module.resource.service.route;

import com.yc.ship.framework.common.pojo.PageResult;
import com.yc.ship.module.resource.controller.admin.route.vo.ResourceRoutePageReqVO;
import com.yc.ship.module.resource.controller.admin.route.vo.ResourceRouteSaveReqVO;
import com.yc.ship.module.resource.controller.app.route.vo.AppResourceRoutePageReqVO;
import com.yc.ship.module.resource.controller.app.route.vo.AppResourceRoutePriceVO;
import com.yc.ship.module.resource.controller.app.route.vo.AppResourceRouteRespVO;
import com.yc.ship.module.resource.dal.dataobject.route.ResourceRouteDO;

import javax.validation.Valid;
import java.util.List;

/**
 * 航线管理 Service 接口
 *
 * @author lfy
 */
public interface ResourceRouteService {

    /**
     * 创建航线管理
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createRoute(@Valid ResourceRouteSaveReqVO createReqVO);

    /**
     * 更新航线管理
     *
     * @param updateReqVO 更新信息
     */
    void updateRoute(@Valid ResourceRouteSaveReqVO updateReqVO);

    /**
     * 删除航线管理
     *
     * @param id 编号
     */
    void deleteRoute(Long id);

    /**
     * 获得航线管理
     *
     * @param id 编号
     * @return 航线管理
     */
    ResourceRouteDO getRoute(Long id);

    /**
     * 获得航线管理分页
     *
     * @param pageReqVO 分页查询
     * @return 航线管理分页
     */
    PageResult<ResourceRouteDO> getRoutePage(ResourceRoutePageReqVO pageReqVO);

    List<ResourceRouteDO> getRouteList();

    List<ResourceRouteDO> getEnableRouteList();

    List<ResourceRouteDO> getList(List<Long> routeIds);
    ResourceRouteDO getById(Long routeIds);

    /**
     * 获取APP上的航线分页列表
     * @param pageReqVO
     * @return
     */
    PageResult<AppResourceRouteRespVO> getAppRoutePage(AppResourceRoutePageReqVO pageReqVO);

    /**
     * 获取航次最低价和最高价
     * @param routeId
     * @param shipId
     * @return
     */
    AppResourceRoutePriceVO getMinAndMaxPrice(Long routeId, Long shipId);
}