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


import com.yc.ship.framework.common.pojo.PageResult;
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.math.BigDecimal;
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
     */
    boolean applyInsurance(Long orderId);

    /**
     * 取消投保
     */
    void applyCancelInsurance(Long id);

    void queryInsuranceByOrderId(Long id);

    void queryInsuranceQuey();

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

    void queryEpolicyAll();

    InsuranceDO getByOrderId(Long orderId);

    /**
     * 保险查询后处理保险数据和订单保险状态
     */
    void handleInsuranceQuery(BigDecimal amount, String policyNo, Long orderId, String status, String service, String msg);

    /**
     * 申请投保新（个保）
     */
    void applyInsuranceNew(Long id);

    List<InsuranceDO> getListByVisitorIds(List<Long> visitorIds);

    /**
     * 反查保单错误信息
     * @param id
     * @return
     */
    String queryInsurance(Long id);
}
