package com.kmall.admin.dao.mk.dist;

import com.kmall.admin.entity.mk.dist.MkDistHierEntity;
import com.kmall.manager.dao.BaseDao;
import org.apache.ibatis.annotations.Param;

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

/**
 * 分销层级，树状层级，每个子级只有唯一一个父级，一个父级可以多个子级Dao
 *
 * @author huangyq
 * @email admin@qhdswl.com
 * @date 2019-04-09 18:04:46
 */
public interface MkDistHierDao extends BaseDao<MkDistHierEntity> {

    MkDistHierEntity queryObjectByName(String distHierName);

    /**
     * 根据上级分销商和渠道分销查询层级关系
     * @param pdistId
     * @param distChnlId
     * @return
     */
    List<MkDistHierEntity> queryObjectByPdistIdAndChnlId(@Param("pdistId") Integer pdistId, @Param("distChnlId")Integer distChnlId);

    /**
     * 查询层级关系树形结构
     * @param map
     * @return
     */
    List<MkDistHierEntity> queryListByTree(Map<String, Object> map);

    /**
     * 根据父级分销商和子级分销商和分销渠道查询层级关系
     * @param map
     * @return
     */
    List<MkDistHierEntity> queryListByPdistIdAndChnlIdAndDistId(Map<String, Object> map);

    /**
     * 查询当前上下级分销商的层级关系
     * @param map
     * @return
     */
    List<MkDistHierEntity> queryObjectByDistIdAndPdistId(Map<String, Object> map);

    /**
     * 查询配置信息
     * @param key
     * @return
     */
    Map querySysConfigByKey(String key);

    /**
     * 查询上级分销商与分销渠道与层级级别的层级关系
     * @param map
     * @return
     */
    MkDistHierEntity queryObjectByHierMap(Map<String, Object> map);

    /**
     * 根据分销渠道查询层级级别为1级的层级关系信息
     * @param distChnlId
     * @return
     */
    MkDistHierEntity selectDistHierByChnlIdAndOneLvl(@Param("distChnlId") Integer distChnlId, @Param("distHierId")Integer distHierId);

    /**
     * 根据子级分销商查询层级关系
     * @param distId
     * @return
     */
    MkDistHierEntity selectDistHierByDistId(@Param("distId")Integer distId);
}
