import request from '@/utils/request.js';

// ==================== 菜单管理 ====================

/**
 * 获取菜单树
 */
export function getMenuTree() {
    return request({
        url: '/sysMenu/tree',
        method: 'GET',
    });
}

/**
 * 获取菜单列表（扁平）
 */
export function getMenuList() {
    return request({
        url: '/sysMenu/list',
        method: 'GET',
    });
}

/**
 * 根据角色ID获取菜单列表
 */
export function getMenuListByRoleId(roleId) {
    return request({
        url: '/sysMenu/listByRoleId',
        method: 'GET',
        params: { roleId },
    });
}

/**
 * 获取角色已分配的菜单ID列表
 */
export function getRoleMenuIds(roleId) {
    return request({
        url: '/sysMenu/roleMenuIds',
        method: 'GET',
        params: { roleId },
    });
}

/**
 * 新增菜单
 */
export function addMenu(data) {
    return request({
        url: '/sysMenu/add',
        method: 'POST',
        data,
    });
}

/**
 * 更新菜单
 */
export function updateMenu(data) {
    return request({
        url: '/sysMenu/update',
        method: 'POST',
        data,
    });
}

/**
 * 删除菜单
 */
export function deleteMenu(id) {
    return request({
        url: '/sysMenu/delete',
        method: 'GET',
        params: { id },
    });
}

/**
 * 为角色分配菜单权限
 */
export function assignRoleMenus(data) {
    return request({
        url: '/sysMenu/assignRoleMenus',
        method: 'POST',
        data,
    });
}

// ==================== 角色管理 ====================

/**
 * 获取角色列表
 */
export function getRoleList(data) {
    return request({
        url: '/sysRole/list',
        method: 'POST',
        data,
    });
}

/**
 * 新增角色
 */
export function addRole(data) {
    return request({
        url: '/sysRole/add',
        method: 'POST',
        data,
    });
}

/**
 * 更新角色
 */
export function updateRole(data) {
    return request({
        url: '/sysRole/update',
        method: 'POST',
        data,
    });
}

/**
 * 删除角色
 */
export function deleteRole(id) {
    return request({
        url: '/sysRole/delete',
        method: 'GET',
        params: { id },
    });
}

// ==================== 用户管理 ====================

/**
 * 获取用户列表（用于权限分配）
 */
export function getUserList() {
    return request({
        url: '/member/userList',
        method: 'GET',
    });
}

// ==================== 用户权限管理 ====================

/**
 * 获取用户已分配的菜单ID列表
 */
export function getUserMenuIds(userId) {
    return request({
        url: '/sysUserMenu/userMenuIds',
        method: 'GET',
        params: { userId }
    });
}

/**
 * 为用户分配菜单权限
 */
export function assignUserMenus(data) {
    return request({
        url: '/sysUserMenu/assignUserMenus',
        method: 'POST',
        data
    });
}

/**
 * 清空用户专属权限（恢复使用角色权限）
 */
export function clearUserMenus(userId) {
    return request({
        url: '/sysUserMenu/clearUserMenus',
        method: 'DELETE',
        params: { userId }
    });
}

/**
 * 检查用户是否有专属权限
 */
export function hasUserPermissions(userId) {
    return request({
        url: '/sysUserMenu/hasUserPermissions',
        method: 'GET',
        params: { userId }
    });
}

