package com.yfd.platform.system.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yfd.platform.system.domain.SysUser;
import org.apache.ibatis.annotations.Param;

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

/**
 * <p>
 * 系统用户表 Mapper 接口
 * </p>
 *
 *
 * @since 2021-10-27
 */
public interface SysUserMapper extends BaseMapper<SysUser> {
    List<Map> list(@Param("total")String  total, @Param("size")String size, @Param("orgid")String orgid, @Param("username")String username, @Param("mobile")String mobile , @Param("status")String status);

    /***********************************
     * 用途说明：新增系统角色用户对照表 对用户分配角色
     * 参数说明
     * id       生成的id
     * roleid   角色id
     * userid   用户id
     * 返回值说明:
     ************************************/
    boolean addUserRoles(@Param("id")String id,@Param("roleid") String roleid,@Param("userid") String userid);

    /***********************************
     * 用途说明：根据用户id 和角色id 查询  系统角色用户对照表
     * 参数说明
     * userid   用户id
     * roleid   角色id
     * 返回值说明:
     ************************************/
    List<Map> getRoleUsersByid(@Param("roleid") String roleid,@Param("userid") String userid);

    /***********************************
     * 用途说明：根据用户表id查询角色表所有角色
     * 参数说明
     * userid     用户id
     * 返回值说明:
     ************************************/
    List<Map> getLevel(@Param("userid") String userid);

    /***********************************
     * 用途说明：根据用户表id查询角色表所有角色id
     * 参数说明
     * userid     用户id
     * 返回值说明:
     ************************************/
    List<String> getRoleid(@Param("userid") String userid);

    /***********************************
     * 用途说明：根据用户表id查询角色表级别
     * 参数说明
     * userid     用户id
     * 返回值说明:
     ************************************/
    String getMaxLevel(@Param("userid") String userid);

    /***********************************
     * 用途说明：根据用户id删除所分配的角色
     * 参数说明
     * userid     用户id
     * 返回值说明:
     ************************************/
    boolean delRoleUsersByUserid(@Param("userid") String userid);

    /***********************************
     * 用途说明：根据用户id删除所分配的不包含角色
     * 参数说明
     * userid     用户id
     * roleids     多个角色id
     * 返回值说明:
     ************************************/
    boolean delInRoleUsersByUserid(@Param("userid") String userid,@Param("roleids")String[] roleids);

    Page<Map<String, Object>> queryUsers(String orgid,
                                         String username,
                                         String status,
                                         Page<SysUser> page);

    Map<String, String> getOrganizationByid(String id);

    /**********************************
     * 用途说明: 根据ID删除用户与角色的关联信息
     * 参数说明 ids 用户id集合
     * 返回值说明: void
     ***********************************/
    void delRoleUsersByUserIds(List<String> ids);

    /***********************************
     * 用途说明: 获取审计管理员用户
     * 参数说明
     * 返回值说明: java.util.List<com.yfd.platform.system.domain.SysUser>
     ***********************************/
    List<SysUser> getAuditManagement();

}
