feat(api): 完善系统管理模块API接口

- 扩展菜单管理API接口和类型定义
- 新增登录日志管理API接口
- 完善类型定义和接口规范
- 支持权限管理功能所需的API调用
This commit is contained in:
Leo 2025-07-07 01:14:03 +08:00
parent 72d152a8cf
commit fed1ee9089
4 changed files with 286 additions and 20 deletions

View File

@ -0,0 +1,54 @@
import { request } from '../../../http'
import type { LoginLogForm, LoginLogQueryBo, LoginLogVo } from './types'
// 重新导出类型供外部使用
export type { LoginLogForm, LoginLogQueryBo, LoginLogVo } from './types'
/**
*
*/
export function getLoginLogListPage(params: LoginLogQueryBo) {
return request.Get<Service.ResponseResult<Service.PageResult<LoginLogVo>>>('/coder/sysLoginLog/listPage', { params })
}
/**
*
*/
export function getLoginLogList() {
return request.Get<Service.ResponseResult<LoginLogVo[]>>('/coder/sysLoginLog/list')
}
/**
* ID查询登录日志详情
*/
export function getLoginLogById(id: number) {
return request.Get<Service.ResponseResult<LoginLogVo>>(`/coder/sysLoginLog/getById/${id}`)
}
/**
*
*/
export function addLoginLog(data: LoginLogForm) {
return request.Post<Service.ResponseResult<null>>('/coder/sysLoginLog/add', data)
}
/**
*
*/
export function updateLoginLog(data: LoginLogForm) {
return request.Post<Service.ResponseResult<null>>('/coder/sysLoginLog/update', data)
}
/**
*
*/
export function deleteLoginLog(id: number) {
return request.Post<Service.ResponseResult<null>>(`/coder/sysLoginLog/deleteById/${id}`)
}
/**
*
*/
export function batchDeleteLoginLog(ids: number[]) {
return request.Post<Service.ResponseResult<null>>('/coder/sysLoginLog/batchDelete', ids)
}

View File

@ -0,0 +1,39 @@
/**
*
*/
// 登录日志查询参数
export interface LoginLogQueryBo {
pageNo?: number
pageSize?: number
loginName?: string
loginIp?: string
loginStatus?: string
beginTime?: string
endTime?: string
}
// 登录日志响应数据
export interface LoginLogVo {
loginLogId: number
loginName: string
loginIp: string
loginLocation?: string
loginBrowser?: string
loginOs?: string
loginStatus: string
loginMsg?: string
loginTime: string
}
// 登录日志表单数据
export interface LoginLogForm {
loginLogId?: number
loginName: string
loginIp: string
loginLocation?: string
loginBrowser?: string
loginOs?: string
loginStatus: string
loginMsg?: string
}

View File

@ -1,41 +1,124 @@
import { request } from '../../../http'
import type {
MenuCascaderBo,
MenuForm,
MenuNormalResponse,
MenuQueryBo,
MenuRouterBo,
MenuVo,
} from './types'
// 菜单信息类型
export interface MenuVo {
menuId: number
menuName: string
parentId: number
menuType: string
isSpread?: string
auth?: string // 权限标识
perms?: string // 权限标识的别名
permission?: string // 权限标识的另一个别名
// 重新导出类型供外部使用
export type {
MenuCascaderBo,
MenuForm,
MenuNormalResponse,
MenuQueryBo,
MenuRouterBo,
MenuVo,
} from './types'
// 兼容性类型别名
export interface MenuPermissionData extends MenuNormalResponse {}
// 菜单管理基础API
/**
*
*/
export function getMenuListPage(params: MenuQueryBo) {
return request.Get<Service.ResponseResult<Service.PageResult<MenuVo>>>('/coder/sysMenu/listPage', { params })
}
// 菜单权限数据类型
export interface MenuPermissionData {
menuList: MenuVo[]
spreadList: number[]
/**
*
*/
export function getMenuList(params?: MenuQueryBo) {
return request.Get<Service.ResponseResult<MenuVo[]>>('/coder/sysMenu/list', { params })
}
/**
* ID查询菜单详情
*/
export function getMenuById(id: number) {
return request.Get<Service.ResponseResult<MenuVo>>(`/coder/sysMenu/getById/${id}`)
}
/**
*
*/
export function addMenu(data: MenuForm) {
return request.Post<Service.ResponseResult<null>>('/coder/sysMenu/add', data)
}
/**
*
*/
export function updateMenu(data: MenuForm) {
return request.Post<Service.ResponseResult<null>>('/coder/sysMenu/update', data)
}
/**
*
*/
export function deleteMenu(id: number) {
return request.Post<Service.ResponseResult<null>>(`/coder/sysMenu/deleteById/${id}`)
}
/**
*
*/
export function batchDeleteMenu(ids: number[]) {
return request.Post<Service.ResponseResult<null>>('/coder/sysMenu/batchDelete', ids)
}
/**
*
*/
export function updateMenuStatus(id: number, menuStatus: string) {
return request.Post<Service.ResponseResult<null>>(`/coder/sysMenu/updateStatus/${id}/${menuStatus}`)
}
/**
*
*/
export function updateMenuSpread(id: number, isSpread: string) {
return request.Post<Service.ResponseResult<null>>(`/coder/sysMenu/updateSpread/${id}/${isSpread}`)
}
/**
*
*/
export function getMenuCascaderList() {
return request.Get<Service.ResponseResult<MenuCascaderBo[]>>('/coder/sysMenu/cascaderList')
}
// 菜单路由管理相关API
// 获取用户动态路由信息
/**
*
*/
export function getUserRoutes() {
return request.Get<Service.ResponseResult<AppRoute.RowRoute[]>>('/coder/sysMenu/listRouters')
return request.Get<Service.ResponseResult<MenuRouterBo[]>>('/coder/sysMenu/listRouters')
}
// 查询所有正常的菜单和展开节点(角色分配菜单权限使用)
/**
* 使
*/
export function getMenuPermissionData() {
return request.Get<Service.ResponseResult<MenuPermissionData>>('/coder/sysMenu/listMenuNormal')
return request.Get<Service.ResponseResult<MenuNormalResponse>>('/coder/sysMenu/listMenuNormal')
}
// 根据角色ID查询菜单权限ID列表
/**
* ID查询菜单权限ID列表
*/
export function getMenuIdsByRoleId(roleId: number) {
return request.Get<Service.ResponseResult<number[]>>(`/coder/sysMenu/listMenuIdsByRoleId/${roleId}`)
}
// 保存角色和菜单权限之间的关系
/**
*
*/
export function saveRoleMenuPermission(roleId: number, menuIds: number[]) {
const menuIdsStr = menuIds.length > 0 ? menuIds.join(',') : '-1'
return request.Post<Service.ResponseResult<string>>(`/coder/sysMenu/saveRoleMenu/${roleId}/${menuIdsStr}`)
@ -45,3 +128,4 @@ export function saveRoleMenuPermission(roleId: number, menuIds: number[]) {
export const fetchUserRoutes = getUserRoutes
export const fetchMenuPermissionData = getMenuPermissionData
export const fetchMenuIdsByRoleId = getMenuIdsByRoleId
export const saveRoleMenu = saveRoleMenuPermission

View File

@ -0,0 +1,89 @@
/**
*
*/
// 菜单查询参数
export interface MenuQueryBo {
pageNo?: number
pageSize?: number
menuName?: string
menuStatus?: string
auth?: string
}
// 菜单响应数据
export interface MenuVo {
menuId: number
menuName: string
parentId: number
menuType: string
path?: string
component?: string
auth?: string
icon?: string
sorted: number
isHide: string
isKeepAlive: string
isAffix: string
isSpread: string
isLink?: string
menuStatus: string
remark?: string
createTime?: string
updateTime?: string
createBy?: string
updateBy?: string
children?: MenuVo[]
}
// 菜单表单数据
export interface MenuForm {
menuId?: number
menuName: string
parentId: number
menuType: string
path?: string
component?: string
auth?: string
icon?: string
sorted: number
isHide: string
isKeepAlive: string
isAffix: string
isSpread: string
isLink?: string
menuStatus: string
remark?: string
}
// 菜单路由数据
export interface MenuRouterBo {
menuId: number
menuName: string
path: string
component?: string
redirect?: string
meta?: {
title: string
icon?: string
auth?: string
roles?: string[]
keepAlive?: boolean
affix?: boolean
hide?: boolean
}
children?: MenuRouterBo[]
}
// 级联选择器数据
export interface MenuCascaderBo {
value: number
label: string
children?: MenuCascaderBo[]
}
// 菜单正常数据返回结构
export interface MenuNormalResponse {
menuList: MenuVo[]
spreadList: number[]
}