package com.yc.ship.module.otc.service.storetradelog;

import com.yc.ship.framework.common.pojo.PageResult;
import com.yc.ship.module.otc.controller.admin.storetradelog.vo.StoreTradeLogPageReqVO;
import com.yc.ship.module.otc.controller.admin.storetradelog.vo.StoreTradeLogRespVO;
import com.yc.ship.module.otc.controller.admin.storetradelog.vo.StoreTradeLogSaveReqVO;
import com.yc.ship.module.otc.dal.dataobject.storetradelog.StoreTradeLogDO;
import com.yc.ship.module.otc.enums.TradeModeEnum;

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

/**
 * 旅行社门店交易记录：余额充值、预付购票、预付退款、余额购票 Service 接口
 *
 * @author 管理员
 */
public interface StoreTradeLogService {

    /**
     * 创建旅行社门店交易记录：余额充值、预付购票、预付退款、余额购票
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createStoreTradeLog(@Valid StoreTradeLogSaveReqVO createReqVO);

    /**
     * 更新旅行社门店交易记录：余额充值、预付购票、预付退款、余额购票
     *
     * @param updateReqVO 更新信息
     */
    void updateStoreTradeLog(@Valid StoreTradeLogSaveReqVO updateReqVO);

    /**
     * 删除旅行社门店交易记录：余额充值、预付购票、预付退款、余额购票
     *
     * @param id 编号
     */
    void deleteStoreTradeLog(Long id);

    /**
     * 删除旅行社门店交易记录：余额充值、预付购票、预付退款、余额购票
     *
     * @param id 编号
     */
    int deleteStoreTradeLogById(Long id);

    /**
     * 获得旅行社门店交易记录：余额充值、预付购票、预付退款、余额购票
     *
     * @param id 编号
     * @return 旅行社门店交易记录：余额充值、预付购票、预付退款、余额购票
     */
    StoreTradeLogRespVO getStoreTradeLog(Long id);

    /**
     * 获得旅行社门店交易记录：余额充值、预付购票、预付退款、余额购票
     *
     * @param orderId 订单编号
     * @return 旅行社门店交易记录：余额充值、预付购票、预付退款、余额购票
     */
    List<StoreTradeLogDO> getStoreTradeLogByOrderId(Long storeId, String orderId);

    /**
     * 获得旅行社门店交易记录：余额充值、预付购票、预付退款、余额购票分页
     *
     * @param pageReqVO 分页查询
     * @return 旅行社门店交易记录：余额充值、预付购票、预付退款、余额购票分页
     */
    PageResult<StoreTradeLogDO> getStoreTradeLogPage(StoreTradeLogPageReqVO pageReqVO);

    StoreTradeLogDO getStoreTradeLog(Long orderId, TradeModeEnum tradeMode);
}
