package com.bzd.system.mapper;

import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.bzd.common.core.domain.entity.SysDept;

/**
 * 门店管理 数据层
 *
 * @author LiXiagnFei
 */
public interface SysDeptMapper
{
    /**
     * 查询下级门店数量
     *
     * @param dept 门店信息
     * @return 结果
     */
    public int selectDeptCount(SysDept dept);

    /**
     * 查询门店是否存在用户
     *
     * @param deptId 门店ID
     * @return 结果
     */
    public int checkDeptExistUser(Long deptId);

    /**
     * 查询门店管理数据
     *
     * @param dept 门店信息
     * @return 门店信息集合
     */
    public List<SysDept> selectDeptList(SysDept dept);

    /**
     * 删除门店管理信息
     *
     * @param deptId 门店ID
     * @return 结果
     */
    public int deleteDeptById(Long deptId);

    /**
     * 新增门店信息
     *
     * @param dept 门店信息
     * @return 结果
     */
    public int insertDept(SysDept dept);

    /**
     * 修改门店信息
     *
     * @param dept 门店信息
     * @return 结果
     */
    public int updateDept(SysDept dept);

    /**
     * 修改子元素关系
     *
     * @param depts 子元素
     * @return 结果
     */
    public int updateDeptChildren(@Param("depts") List<SysDept> depts);

    /**
     * 根据门店ID查询信息
     *
     * @param deptId 门店ID
     * @return 门店信息
     */
    public SysDept selectDeptById(Long deptId);

    /**
     * 校验门店名称是否唯一
     *
     * @param deptName 门店名称
     * @param parentId 父门店ID
     * @return 结果
     */
    public SysDept checkDeptNameUnique(@Param("deptName") String deptName, @Param("parentId") Long parentId);

    /**
     * 根据角色ID查询门店
     *
     * @param roleId 角色ID
     * @return 门店列表
     */
    public List<String> selectRoleDeptTree(Long roleId);

    /**
     * 修改所在门店正常状态
     *
     * @param deptIds 门店ID组
     */
    public void updateDeptStatusNormal(Long[] deptIds);

    /**
     * 根据ID查询所有子门店
     *
     * @param deptId 门店ID
     * @return 门店列表
     */
    public List<SysDept> selectChildrenDeptById(Long deptId);

    /**
     * 根据ID查询所有子门店（正常状态）
     *
     * @param deptId 门店ID
     * @return 子门店数
     */
    public int selectNormalChildrenDeptById(Long deptId);
}
