package com.younike.system.service;

import java.util.List;
import com.younike.system.domain.Merchant;
import com.younike.system.domain.vo.MerchantCategoryModifyVO;
import com.younike.system.domain.vo.MerchantModifyVO;
import com.younike.system.domain.vo.MerchantSettledResultVO;
import com.younike.system.domain.vo.MerchantSettledVO;
import com.younike.system.param.MerchantQueryParam;

/**
 * 店铺信息Service接口
 *
 * @author elev
 * @date 2022-01-04
 */
public interface IMerchantService
{
    /**
     * 入驻申请
     *
     * @param merchantSettledVO 入驻申请信息
     * @return 结果
     */
    MerchantSettledResultVO settled(MerchantSettledVO merchantSettledVO);

    /**
     * 入驻信息修改
     *
     * @param merchantSettledVO
     * @return
     */
    int settledModify(MerchantSettledVO merchantSettledVO);

    /**
     * 商家基本信息修改
     *
     * @param merchantModifyVO
     * @return
     */
    int merchantModify(MerchantModifyVO merchantModifyVO);

    /**
     * 获取用户账号管理的店铺
     *
     * @param adminId
     * @return
     */
    Merchant selectMerchantByAdminId(Long adminId);

    /**
     * 查询店铺信息
     *
     * @param merchantId 店铺信息主键
     * @return 店铺信息
     */
    public Merchant selectMerchantByMerchantId(Long merchantId);

    /**
     * 查询店铺信息列表
     *
     * @param merchant 店铺信息
     * @return 店铺信息集合
     */
    public List<Merchant> selectMerchantList(Merchant merchant);

    /**
     * 查询待审核店铺信息列表
     *
     * @param merchant 店铺信息
     * @return 店铺信息集合
     */
    public List<MerchantSettledVO> selectAuditMerchantList(MerchantQueryParam param);

    /**
     * 查询审核通过店铺信息列表
     *
     * @param merchant 店铺信息
     * @return 店铺信息集合
     */
    public List<MerchantSettledVO> selectPassMerchantList(MerchantQueryParam param);

    /**
     * 查询店铺入驻详情
     *
     * @param merchantId 店铺信息主键
     * @return 店铺信息
     */
    public MerchantSettledVO merchantInfo(Long merchantId);

    /**
     * 修改店铺信息
     *
     * @param merchant 店铺信息
     * @return 结果
     */
    public int updateMerchant(Merchant merchant);

    /**
     * 批量删除店铺信息
     *
     * @param merchantIds 需要删除的店铺信息主键集合
     * @return 结果
     */
    public int deleteMerchantByMerchantIds(Long[] merchantIds);

    /**
     * 删除店铺信息信息
     *
     * @param merchantId 店铺信息主键
     * @return 结果
     */
    public int deleteMerchantByMerchantId(Long merchantId);

    void updateMerchants(List<Merchant> merchantList);
}
