package com.yc.ship.module.trade.service.insurance;


import com.yc.ship.framework.common.pojo.CommonResult;
import com.yc.ship.framework.common.pojo.PageResult;
import com.yc.ship.module.trade.api.insurance.dto.InsuranceApplyReqDTO;
import com.yc.ship.module.trade.api.insurance.dto.InsuredRespDTO;
import com.yc.ship.module.trade.controller.admin.insurance.vo.InsurancePageReqVO;
import com.yc.ship.module.trade.controller.admin.insurance.vo.InsuranceRespVO;
import com.yc.ship.module.trade.dal.dataobject.insurance.InsuranceDO;

import java.util.List;

/**
 * 保险
 *
 * @className:
 */
public interface InsuranceService {

    String INSURANCE_KEY ="order_insurance:apply_";
    String INSURANCE_CANCEL_KEY ="order_insurance:cancel_";

    /**
     * 获得订单保险信息
     *
     * @param id 编号
     * @return 订单保险信息
     */
    InsuranceDO getInsurance(Long id);

    /**
     * 通过订单id获取保险信息
     * @param orderIdList
     * @return
     */
    List<InsuranceDO> getInsuranceByOrder(List<Long> orderIdList);

    /**
     * 获得订单保险信息分页
     *
     * @param pageReqVO 分页查询
     * @return 订单保险信息分页
     */
    PageResult<InsuranceRespVO> getInsurancePage(InsurancePageReqVO pageReqVO);

    /**
     * 申请投保
     *
     * @return
     */
    void applyInsurance(Long orderId);

    /**
     * 取消投保
     */
    void applyCancelInsurance(List<Long> insuranceIdList);

    /**
     * 查询电子保单
     */
    void queryEpolicyList(Long id);
    void queryEpolicyAll();

    InsuranceDO getByOrderId(Long orderId);
}
