From fed1ee90898637bff503f98796336681d7bf957b Mon Sep 17 00:00:00 2001 From: Leo <98382335+gaoziman@users.noreply.github.com> Date: Mon, 7 Jul 2025 01:14:03 +0800 Subject: [PATCH] =?UTF-8?q?feat(api):=20=E5=AE=8C=E5=96=84=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E7=AE=A1=E7=90=86=E6=A8=A1=E5=9D=97API=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 扩展菜单管理API接口和类型定义 - 新增登录日志管理API接口 - 完善类型定义和接口规范 - 支持权限管理功能所需的API调用 --- src/service/api/system/loginlog/index.ts | 54 ++++++++++ src/service/api/system/loginlog/types.ts | 39 +++++++ src/service/api/system/menu/index.ts | 124 +++++++++++++++++++---- src/service/api/system/menu/types.ts | 89 ++++++++++++++++ 4 files changed, 286 insertions(+), 20 deletions(-) create mode 100644 src/service/api/system/loginlog/index.ts create mode 100644 src/service/api/system/loginlog/types.ts create mode 100644 src/service/api/system/menu/types.ts diff --git a/src/service/api/system/loginlog/index.ts b/src/service/api/system/loginlog/index.ts new file mode 100644 index 0000000..337034a --- /dev/null +++ b/src/service/api/system/loginlog/index.ts @@ -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>>('/coder/sysLoginLog/listPage', { params }) +} + +/** + * 查询登录日志列表 + */ +export function getLoginLogList() { + return request.Get>('/coder/sysLoginLog/list') +} + +/** + * 根据ID查询登录日志详情 + */ +export function getLoginLogById(id: number) { + return request.Get>(`/coder/sysLoginLog/getById/${id}`) +} + +/** + * 新增登录日志 + */ +export function addLoginLog(data: LoginLogForm) { + return request.Post>('/coder/sysLoginLog/add', data) +} + +/** + * 修改登录日志 + */ +export function updateLoginLog(data: LoginLogForm) { + return request.Post>('/coder/sysLoginLog/update', data) +} + +/** + * 删除登录日志 + */ +export function deleteLoginLog(id: number) { + return request.Post>(`/coder/sysLoginLog/deleteById/${id}`) +} + +/** + * 批量删除登录日志 + */ +export function batchDeleteLoginLog(ids: number[]) { + return request.Post>('/coder/sysLoginLog/batchDelete', ids) +} diff --git a/src/service/api/system/loginlog/types.ts b/src/service/api/system/loginlog/types.ts new file mode 100644 index 0000000..21e5434 --- /dev/null +++ b/src/service/api/system/loginlog/types.ts @@ -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 +} diff --git a/src/service/api/system/menu/index.ts b/src/service/api/system/menu/index.ts index 6f4ae9d..dfb4136 100644 --- a/src/service/api/system/menu/index.ts +++ b/src/service/api/system/menu/index.ts @@ -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>>('/coder/sysMenu/listPage', { params }) } -// 菜单权限数据类型 -export interface MenuPermissionData { - menuList: MenuVo[] - spreadList: number[] +/** + * 查询菜单列表 + */ +export function getMenuList(params?: MenuQueryBo) { + return request.Get>('/coder/sysMenu/list', { params }) +} + +/** + * 根据ID查询菜单详情 + */ +export function getMenuById(id: number) { + return request.Get>(`/coder/sysMenu/getById/${id}`) +} + +/** + * 新增菜单 + */ +export function addMenu(data: MenuForm) { + return request.Post>('/coder/sysMenu/add', data) +} + +/** + * 修改菜单 + */ +export function updateMenu(data: MenuForm) { + return request.Post>('/coder/sysMenu/update', data) +} + +/** + * 删除菜单 + */ +export function deleteMenu(id: number) { + return request.Post>(`/coder/sysMenu/deleteById/${id}`) +} + +/** + * 批量删除菜单 + */ +export function batchDeleteMenu(ids: number[]) { + return request.Post>('/coder/sysMenu/batchDelete', ids) +} + +/** + * 修改菜单状态 + */ +export function updateMenuStatus(id: number, menuStatus: string) { + return request.Post>(`/coder/sysMenu/updateStatus/${id}/${menuStatus}`) +} + +/** + * 修改菜单展开状态 + */ +export function updateMenuSpread(id: number, isSpread: string) { + return request.Post>(`/coder/sysMenu/updateSpread/${id}/${isSpread}`) +} + +/** + * 获取菜单级联下拉框数据 + */ +export function getMenuCascaderList() { + return request.Get>('/coder/sysMenu/cascaderList') } // 菜单路由管理相关API -// 获取用户动态路由信息 +/** + * 获取用户动态路由信息 + */ export function getUserRoutes() { - return request.Get>('/coder/sysMenu/listRouters') + return request.Get>('/coder/sysMenu/listRouters') } -// 查询所有正常的菜单和展开节点(角色分配菜单权限使用) +/** + * 查询所有正常的菜单和展开节点(角色分配菜单权限使用) + */ export function getMenuPermissionData() { - return request.Get>('/coder/sysMenu/listMenuNormal') + return request.Get>('/coder/sysMenu/listMenuNormal') } -// 根据角色ID查询菜单权限ID列表 +/** + * 根据角色ID查询菜单权限ID列表 + */ export function getMenuIdsByRoleId(roleId: number) { return request.Get>(`/coder/sysMenu/listMenuIdsByRoleId/${roleId}`) } -// 保存角色和菜单权限之间的关系 +/** + * 保存角色和菜单权限之间的关系 + */ export function saveRoleMenuPermission(roleId: number, menuIds: number[]) { const menuIdsStr = menuIds.length > 0 ? menuIds.join(',') : '-1' return request.Post>(`/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 diff --git a/src/service/api/system/menu/types.ts b/src/service/api/system/menu/types.ts new file mode 100644 index 0000000..ec97601 --- /dev/null +++ b/src/service/api/system/menu/types.ts @@ -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[] +}