package org.dromara.mall.trade.service;

import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.mall.trade.domain.bo.MallAfterSaleBo;
import org.dromara.mall.trade.domain.vo.MallAfterSaleVo;

import java.util.Collection;
import java.util.List;

/**
 * 售后申请Service接口
 *
 * @author pengles
 */
public interface MallAfterSaleService {

    /**
     * 查询售后申请
     */
    MallAfterSaleVo queryById(Long id);

    /**
     * 根据售后单号查询
     */
    MallAfterSaleVo queryByAfterSaleNo(String afterSaleNo);

    /**
     * 查询售后申请列表
     */
    TableDataInfo<MallAfterSaleVo> queryPageList(MallAfterSaleBo bo, PageQuery pageQuery);

    /**
     * 查询售后申请列表
     */
    List<MallAfterSaleVo> queryList(MallAfterSaleBo bo);

    /**
     * 新增售后申请
     */
    Boolean insertByBo(MallAfterSaleBo bo);

    /**
     * 修改售后申请
     */
    Boolean updateByBo(MallAfterSaleBo bo);

    /**
     * 校验并批量删除售后申请信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);

    /**
     * 审核售后申请（同意/拒绝）
     */
    Boolean audit(Long id, Integer status, String refuseReason);

    /**
     * 用户填写退货物流信息
     */
    Boolean fillLogistics(Long id, String logisticsCompany, String logisticsNo);

    /**
     * 确认收货（商家确认收到退货）
     */
    Boolean confirmReceive(Long id);

    /**
     * 完成售后（退款完成或换货完成）
     */
    Boolean complete(Long id);

    /**
     * 取消售后申请
     */
    Boolean cancel(Long id);

}
