package cn.pluss.platform.merchantStore;

import cn.pluss.platform.api.Result;
import cn.pluss.platform.entity.MerchantBaseInfo;
import cn.pluss.platform.entity.MerchantChannelStatus;
import cn.pluss.platform.entity.MerchantStore;
import cn.pluss.platform.vo.StoreInfoVO;
import cn.pluss.platform.vo.StoreSignVO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.scheduling.annotation.Async;
import org.springframework.web.multipart.MultipartFile;

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

public interface MerchantStoreService extends IService<MerchantStore> {

    /**
     * 禁用商户
     * @param opUserId      操作人用户id
     * @param userId        用户id
     * @param remark        备注信息
     */
    void disableMerchantStore(Long opUserId, Long userId, String remark);

    /**
     * 商户解禁
     * @param opUserId      操作人用户id
     * @param userId        用户id
     * @param remark        备注信息
     */
    void enableMerchantStore(Long opUserId, Long userId, String remark);

    MerchantStore queryMerchantStore(MerchantStore merchantStore);

    List<MerchantStore> queryMerchantStoreList(MerchantStore merchantStore);

    void saveMerchantStore(MerchantStore merchantStore);

    void updateMerchantStore(MerchantStore merchantStore);

    void deleteMerchantStore(MerchantStore merchantStore);

    List<MerchantStore> queryMerchantStorePage(Map map);

    Integer queryMerchantStorePageCount(Map map);

    /**
     * 
     * queryNewStoreListPage:(查询后台门店信息展示列表). <br/> 
     *
     * @author Administrator 
     * @param map
     * @return 
     * @since JDK 1.8
     */
    Page<StoreInfoVO> queryNewStoreListPage(Map<String, Object> map);

    void disableMerchantStore(Map<String,Object> params);

    void pesUpdateMerchantStore(Map<String,Object> params);

    MerchantStore getMerchantInfo(String merchantCode, String storeId);

    StoreInfoVO selectStatus(Map<String, Object> params);

    void operatMarketMerchantStore(Map<String, Object> params);

    StoreInfoVO showMerchantStoreReceipt(Integer userId);

    @Async
    void manualMerchantIncom();

    StoreInfoVO selectParticulars(Integer id);

    List<MerchantStore> queryMerchantNoStoreList(MerchantStore merchantStore);

    Map<String, Object> queryMerchantStoreByPage(Integer currPage, Integer size, MerchantStore merchantStore, MerchantBaseInfo merchantBaseInfo, String merchantType, String userId);

    /**
     * 获取实名认证信息，
     * @param userId
     * @return
     */
    Map<String, Object> getCertInfo(String userId);

    /**
     * @description:
     * @date: 2021/8/4 修改通道d0状态并且发送微信认证通知
 * @param channelStatus:
 * @param status:
     */
    Result<?> updateChannelStatusAndWxCert(MerchantChannelStatus channelStatus, String status);

    /**
     * @description:批量导入d0excel开通文件
     * @date: 2021/8/4 11:37
     * @param file:
     * @return cn.pluss.platform.api.Result<?>
     */
    Result<?> exportD0Excel(MultipartFile file);


    MerchantStore getStoreByMerchantCode(String merchantCode);
}

