package com.ho.user.mapper;

import com.ho.user.api.entity.SysDept;
import com.ho.user.vo.req.DeptQuery;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface SysDeptMapper {

    SysDept selectByPrimaryKey(Integer deptId);

    List<SysDept> selectAll(@Param("query") DeptQuery query, String enableStatus);

    //List<Integer> selectChildIds(String relationCode);

    //关联的部门名称
    //List<SysDept> selectEnableByRelationCode(String relationCode, String enableStatus);

    //List<SysDept> selectAllByIds(String relationCode);

    //查询该结构的所有子机构(包含自己)
    List<SysDept> selectChildByIds(List<Integer> list, @Param("query") DeptQuery query, String enableStatus);

    List<SysDept> selectAllByNotContainChild(List<Integer> list, @Param("query") DeptQuery query, String enableStatus);

    int deleteByPrimaryKey(Integer id);

    int insert(SysDept record);

    int insertSelective(SysDept record);

    //根据pid查询pid的那条数据
    SysDept selectByPid(Integer id);

    int updateByPrimaryKeySelective(SysDept record);

    int updateByPrimaryKey(SysDept record);

    /**
     * 多个数据 要用 @Param
     *
     * @param oldStr
     * @param newStr
     * @param relationCode
     * @return
     */
    int updateRelationCode(@Param("oldStr") String oldStr, @Param("newStr") String newStr, @Param("relationCode") String relationCode);

    //根据id=pid 查询下级
    List<SysDept> selectBelow(Integer deptId);

    //
    List<SysDept> selectDeptsByPid(@Param("ids") List<Integer> ids, String status);

    //根据pid和名字 查询同级下是否有同名
    List<SysDept> selectByPidAndName(@Param("pid") Integer pid, @Param("name") String name,@Param("id") Integer id);

    SysDept selectByIdAndStatus(Integer deptId);

    List<SysDept> selectByGroup(Integer groupId);
}