package co.yixiang.yshop.module.order.service.storeaftersales;

import co.yixiang.yshop.module.order.controller.app.afterorder.param.AppStoreAfterSalesParam;
import co.yixiang.yshop.module.order.controller.app.afterorder.vo.AppStoreAfterSalesVo;
import co.yixiang.yshop.module.order.controller.app.afterorder.vo.AppStoreOrderCartInfoVo;
import co.yixiang.yshop.module.order.dal.dataobject.storeaftersales.StoreAfterSalesDO;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

/**
 * 售后记录 Service 接口
 *
 * @author yshop
 */
public interface AppStoreAfterSalesService extends IService<StoreAfterSalesDO> {

    /**
     * 创建售后订单
     *
     * @param userId               用户id
     * @param storeAfterSalesParam /
     */
    void applyForAfterSales(Long userId, AppStoreAfterSalesParam storeAfterSalesParam);

    /**
     * 查询订单详情
     * @param key 订单号
     * @return
     */
    List<AppStoreOrderCartInfoVo> checkOrderDetails(String key);

    /**
     * 查询列表
     * @param uid 用户id
     * @param status 状态
     * @param page 页
     * @param orderCode
     * @param limit 数量
     * @return
     */
    List<AppStoreAfterSalesVo> salesList(Long uid, Integer status, Integer page, String orderCode, Integer limit);

    /**
     * 查询详情
     * @param key 订单号
     * @param id 售后单id
     * @param uid 用户id
     */
    AppStoreAfterSalesVo getStoreInfoByOrderCodeAndAfterIdAndUid(String key, Long id, Long uid);

    /**
     * 查询详情
     * @param key 订单号
     * @param uid 用户id
     */
    List<AppStoreAfterSalesVo> getStoreInfoByOrderCodeAndUid(String key, Long uid);

    /**
     * 撤销申请
     * @param key 订单号
     * @param uid 用户id
     * @param id
     * @return Boolean
     */
    Boolean revoke(String key, Long uid, Long id);

    /**
     * 添加快递信息
     *
     * @param code       物流公司编码
     * @param name       物流公司名称
     * @param postalCode
     * @param orderCode
     * @param id
     * @return
     */
    Boolean addLogisticsInformation(String code, String name, String postalCode ,String orderCode, Long id);


    /**
     * 删除售后订单
     * @param orderCode /
     * @param id
     * @return /
     */
    Boolean deleteAfterSalesOrder(String orderCode, Long id);


}
