package com.chinaweal.aiccs.org.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.chinaweal.aiccs.org.entity.OrgUnits;
import com.chinaweal.aiccs.org.entity.vo.CascaderVO;
import com.chinaweal.aicorg.pojo.AICUser;
import org.apache.ibatis.annotations.Param;

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

/**
 * 组织架构相关查询
 *
 * @author <a href="https://blog.lroyia.top">lroyia</a>
 * @since 2020/8/18 9:26
 **/
public interface AicorgMapper extends BaseMapper<OrgUnits> {

    /**
     * 查询所有含有指定权限的用户（返回结果不含权限）
     *
     * @param permissions 权限
     * @return 用户
     * @author lroyia
     * @since 2020年8月18日 09:46:56
     */
    List<AICUser> selectAllAICUserWithPermissions(@Param("permissions") List<String> permissions);

    /**
     * 查询当前机构类型的所有用户信息
     * wsz 2020-10-25
     *
     * @return
     */
    List<AICUser> selectAllAICUserWithAreaOrglevel(String orgUnitType);

    List<OrgUnits> selectTreeOrgAndDeptByOrgUnitType(String orgUnitType);

    /**
     * 通过用户id获取用户权限
     *
     * @param userId 用户id
     * @return
     */
    List<String> selectRightsByUserId(@Param("userId") String userId);

    /**
     * 通过当前机构id查询父机构
     *
     * @param curOrgId 当前机构id
     * @return 查询结果
     * @author lroyia
     * @since 2021年6月21日 17:14:44
     */
    OrgUnits selectParentOrg(String curOrgId);

    OrgUnits queryByOrgUnitID(@Param("orgUnitID") String orgUnitID);

    List<OrgUnits> queryAllOrg();

    OrgUnits queryByOrgNumber(@Param("orgNumber") String orgNumber);

    List<com.chinaweal.aicorg.model.AICUser> queryByOrgNumberAndSysMenu(@Param("sysMenuFiled") String sysMenuFiled, @Param("orgNumber") String orgNumber);

    List<String> jurisdictionCheck(@Param("sysMenuFiled") String sysMenuFiled, @Param("userid") String userid);

    OrgUnits queryOrgUnitID(String orgUnitID);

    /**
     * 根据用户名查询用户信息
     *
     * @param username 用户名
     * @return 查询结果
     * @author lroyia
     * @since 2025年2月25日19:26:26
     */
    com.chinaweal.aicorg.model.AICUser queryUserByUserName(@Param("username") String username);

    void updateByUserName(String realname);

    OrgUnits selectTOrgunitsById(String orgUnitID);

    OrgUnits queryByOrgNumberMap(@Param("params") Map<String, String> params);

    List<CascaderVO> queryAlls(String orgNumber);

    OrgUnits getOrgunitsByOrgId(String orgID);

    /**
     * 根据权限和机构编码查询用户信息
     *
     * @param perm   权限信息
     * @param unitId 机构编码
     * @return 查询结果
     * @author lroyia
     * @since 2023年4月26日 09:48:07
     */
    List<com.chinaweal.aicorg.model.AICUser> selectUsersByOrgAndPermission(@Param("perm") String perm, @Param("unitId") String unitId);

    OrgUnits selectParentOrgByDeptId(String deptId);
}
