import { request } from '@/utils/request'
import { Role } from '@/enums/api'
import { RoleListResParams, RoleFunResParams } from '@/types/role'
import { ModuleTreeResParams } from '@/types/module'

/**
 * 获取角色列表
 * @param keyword 关键词，模糊匹配角色id，角色名称
 */
export const getRoleList = (keyword?: string) => {
  return request.post<RoleListResParams>({
    url: Role.SYSTEM_ROLE_LIST,
    data: { keyword }
  })
}

/**
 * 添加角色
 * @param roleId 角色id
 * @param roleName 角色名称
 */
export const addRole = (roleId: string, roleName: string) => {
  return request.post<BaseResParams>({
    url: Role.SYSTEM_ROLE_ADD,
    data: { role_id: roleId, role_name: roleName }
  })
}

/**
 * 修改角色
 * @param roleId 角色id
 * @param roleName 角色名称
 */
export const modifyRole = (roleId: string, roleName?: string) => {
  return request.post<BaseResParams>({
    url: Role.SYSTEM_ROLE_MODIFY,
    data: { role_id: roleId, role_name: roleName }
  })
}

/**
 * 删除角色
 * @param roleId 角色id
 */
export const removeRole = (roleId: string) => {
  return request.post<BaseResParams>({
    url: Role.SYSTEM_ROLE_REMOVE,
    data: { role_id: roleId }
  })
}

/**
 * 设置角色对应的功能项
 * @param roleId 角色id
 * @param funcs 功能列表 id: 功能ID, enabled: 是否有权限使用
 */
export const setRoleFun = (
  roleId: string,
  funcs: Array<{ id: number; enabled: boolean }>
) => {
  return request.post<BaseResParams>({
    url: Role.SYSTEM_ROLE_SET_F,
    data: { role_id: roleId, funcs }
  })
}

/**
 * 获取角色对应的功能项。
 * @param roleId 角色id
 * @param moduleId 功能模块id
 */
export const getRoleFun = (roleId: string, moduleId: number) => {
  return request.post<RoleFunResParams>({
    url: Role.SYSTEM_ROLE_GET_F,
    data: { role_id: roleId, module_id: moduleId }
  })
}

/**
 * 获取功能分组树,返回参数和模块树一样
 */
export const getFuncGroupTree = () => {
  return request.post<ModuleTreeResParams>({
    url: Role.SYSTEM_ROLE_GET_GROUP_TREE,
    data: {}
  })
}
