package com.yiqi.core.service;

import com.yiqi.common.core.domain.R;
import com.yiqi.core.domain.dto.wx.*;
import com.yiqi.core.domain.vo.wx.*;
import com.yiqi.order.domain.OrderClothDeliveryAddress;
import com.yiqi.system.domain.SysStore;

/**
 * @author xiaohei
 * @date 2024/1/31
 */
public interface ISysStoreIntracityExpressService {

    /**
     * 创建微信同城配送门店
     * @param intracityExpressCreateStoreRequest
     * @return
     * @throws Exception
     */
    public IntracityExpressCreateStoreResult createStore(IntracityExpressCreateStoreRequest intracityExpressCreateStoreRequest) throws Exception;


    /**
     * 获取微信同城配送门店详情
     * @param intracityExpressStoreInfoRequest
     * @return
     * @throws Exception
     */
    public IntracityExpressStoreInfoResult getStoreInfo(IntracityExpressStoreInfoRequest intracityExpressStoreInfoRequest) throws Exception;

    /**
     * 修改微信同城配送门店信息
     * @param intracityExpressStoreUpdateRequest
     * @return
     * @throws Exception
     */
    public IntracityExpressBaseResult updateStore(IntracityExpressStoreUpdateRequest intracityExpressStoreUpdateRequest) throws Exception;

    /**
     * 查询门店余额
     * @param request
     * @return
     * @throws Exception
     */
    public IntracityExpressStoreBalanceInfoResult getStoreBalance(IntracityExpressStoreBalanceInfoRequest request) throws Exception;

    /**
     * 门店余额充值
     * @param request
     * @return
     * @throws Exception
     */
    public IntracityExpressStoreBalanceChargeResult storeBalanceCharge(IntracityExpressStoreBalanceChargeRequest request) throws Exception;

    /**
     * 查询运费
     * @param request
     * @return
     * @throws Exception
     */
    public IntracityExpressPreAddOrderResult preAddOrder(IntracityExpressPreAddOrderRequest request) throws Exception;


    /**
     * 创建配送订单
     * @param request
     * @return
     * @throws Exception
     */
    public IntracityExpressCreateOrderResult addOrder(IntracityExpressAddOrderRequest request) throws Exception;

    public IntracityExpressBaseResult cancelOrder(IntracityExpressCancelOrderRequest request ) throws Exception;

    /**
     * 查询支持同城配送的城市
     * @param request
     * @return
     * @throws Exception
     */
    public IntracityExpressGetCityResult getCity(IntracityExpressGetCityRequest request) throws Exception;

    /**
     * 门店运费流水查询
     * @param request
     * @return
     * @throws Exception
     */
    public IntracityExpressQueryFlowResult queryFlow(IntracityExpressQueryFlowRequest request) throws Exception;

    /**
     * 获取配送订单详情
     * @param request
     * @return
     * @throws Exception
     */
    public IntracityExpressOrderInfoResult getOrderInfo(IntracityExpressOrderInfoRequest request) throws Exception;


    public IntracityExpressBaseResult mocknotify(IntracityExpressMockNotifyRequest request) throws Exception;

    public void updateStoreInfo(SysStore sysStore, OrderClothDeliveryAddress orderClothDeliveryAddress) throws Exception;

    public void updateStoreInfo(SysStore sysStore) throws Exception;

}
