refactor: 项目结构优化调整

This commit is contained in:
Ray.Hao
2025-12-20 21:56:48 +08:00
parent 5851976c5d
commit 65ad4fe59f
68 changed files with 2463 additions and 1761 deletions

View File

@@ -1,11 +1,12 @@
import request from "@/utils/request";
import type { ConfigPageQuery, ConfigForm, ConfigPageVo } from "@/types/api";
const CONFIG_BASE_URL = "/api/v1/configs";
const ConfigAPI = {
/** 获取配置分页数据 */
getPage(queryParams?: ConfigPageQuery) {
return request<any, PageResult<ConfigPageVO[]>>({
return request<any, PageResult<ConfigPageVo[]>>({
url: `${CONFIG_BASE_URL}/page`,
method: "get",
params: queryParams,
@@ -37,34 +38,3 @@ const ConfigAPI = {
};
export default ConfigAPI;
export interface ConfigPageQuery extends PageQuery {
/** 搜索关键字 */
keywords?: string;
}
export interface ConfigForm {
/** 主键 */
id?: string;
/** 配置名称 */
configName?: string;
/** 配置键 */
configKey?: string;
/** 配置值 */
configValue?: string;
/** 描述、备注 */
remark?: string;
}
export interface ConfigPageVO {
/** 主键 */
id?: string;
/** 配置名称 */
configName?: string;
/** 配置键 */
configKey?: string;
/** 配置值 */
configValue?: string;
/** 描述、备注 */
remark?: string;
}

View File

@@ -1,11 +1,12 @@
import request from "@/utils/request";
import type { DeptQuery, DeptVo, DeptForm } from "@/types/api";
const DEPT_BASE_URL = "/api/v1/depts";
const DeptAPI = {
/** 获取部门树形列表 */
getList(queryParams?: DeptQuery) {
return request<any, DeptVO[]>({ url: `${DEPT_BASE_URL}`, method: "get", params: queryParams });
return request<any, DeptVo[]>({ url: `${DEPT_BASE_URL}`, method: "get", params: queryParams });
},
/** 获取部门下拉数据源 */
getOptions() {
@@ -30,46 +31,3 @@ const DeptAPI = {
};
export default DeptAPI;
export interface DeptQuery {
/** 搜索关键字 */
keywords?: string;
/** 状态 */
status?: number;
}
export interface DeptVO {
/** 子部门 */
children?: DeptVO[];
/** 创建时间 */
createTime?: Date;
/** 部门ID */
id?: string;
/** 部门名称 */
name?: string;
/** 部门编号 */
code?: string;
/** 父部门ID */
parentid?: string;
/** 排序 */
sort?: number;
/** 状态(1:启用;0:禁用) */
status?: number;
/** 修改时间 */
updateTime?: Date;
}
export interface DeptForm {
/** 部门ID(新增不填) */
id?: string;
/** 部门名称 */
name?: string;
/** 部门编号 */
code?: string;
/** 父部门ID */
parentId: string;
/** 排序 */
sort?: number;
/** 状态(1:启用;0:禁用) */
status?: number;
}

View File

@@ -1,11 +1,20 @@
import request from "@/utils/request";
import type {
DictPageQuery,
DictPageVo,
DictForm,
DictItemPageQuery,
DictItemPageVo,
DictItemForm,
DictItemOption,
} from "@/types/api";
const DICT_BASE_URL = "/api/v1/dicts";
const DictAPI = {
/** 字典分页列表 */
getPage(queryParams: DictPageQuery) {
return request<any, PageResult<DictPageVO[]>>({
return request<any, PageResult<DictPageVo[]>>({
url: `${DICT_BASE_URL}/page`,
method: "get",
params: queryParams,
@@ -34,7 +43,7 @@ const DictAPI = {
/** 获取字典项分页列表 */
getDictItemPage(dictCode: string, queryParams: DictItemPageQuery) {
return request<any, PageResult<DictItemPageVO[]>>({
return request<any, PageResult<DictItemPageVo[]>>({
url: `${DICT_BASE_URL}/${dictCode}/items/page`,
method: "get",
params: queryParams,
@@ -69,77 +78,3 @@ const DictAPI = {
};
export default DictAPI;
export interface DictPageQuery extends PageQuery {
/** 搜索关键字 */
keywords?: string;
/** 状态(1:启用;0:禁用) */
status?: number;
}
export interface DictPageVO {
/** 字典ID */
id: string;
/** 字典名称 */
name: string;
/** 字典编码 */
dictCode: string;
/** 状态(1:启用;0:禁用) */
status: number;
}
export interface DictForm {
/** 字典ID(新增不填) */
id?: string;
/** 字典名称 */
name?: string;
/** 字典编码 */
dictCode?: string;
/** 状态(1:启用;0:禁用) */
status?: number;
/** 备注 */
remark?: string;
}
export interface DictItemPageQuery extends PageQuery {
/** 搜索关键字 */
keywords?: string;
/** 字典编码 */
dictCode?: string;
}
export interface DictItemPageVO {
/** 字典项ID */
id: string;
/** 字典编码 */
dictCode: string;
/** 字典项值 */
value: string;
/** 字典项标签 */
label: string;
/** 状态(1:启用;0:禁用) */
status: number;
/** 排序 */
sort?: number;
}
export interface DictItemForm {
/** 字典项ID(新增不填) */
id?: string;
/** 字典编码 */
dictCode?: string;
/** 字典项值 */
value?: string;
/** 字典项标签 */
label?: string;
/** 状态(1:启用;0:禁用) */
status?: number;
/** 排序 */
sort?: number;
/** 标签类型 */
tagType?: "success" | "warning" | "info" | "primary" | "danger" | "";
}
export interface DictItemOption {
/** 值 */
value: number | string;
/** 标签 */
label: string;
/** 标签类型 */
tagType?: "" | "success" | "info" | "warning" | "danger";
[key: string]: any;
}

View File

@@ -1,11 +1,12 @@
import request from "@/utils/request";
import type { LogPageQuery, LogPageVo } from "@/types/api";
const LOG_BASE_URL = "/api/v1/logs";
const LogAPI = {
/** 获取日志分页列表 */
getPage(queryParams: LogPageQuery) {
return request<any, PageResult<LogPageVO[]>>({
return request<any, PageResult<LogPageVo[]>>({
url: `${LOG_BASE_URL}/page`,
method: "get",
params: queryParams,
@@ -14,35 +15,3 @@ const LogAPI = {
};
export default LogAPI;
export interface LogPageQuery extends PageQuery {
/** 搜索关键字 */
keywords?: string;
/** 操作时间 */
createTime?: [string, string];
}
export interface LogPageVO {
/** 主键 */
id: string;
/** 日志模块 */
module: string;
/** 日志内容 */
content: string;
/** 请求路径 */
requestUri: string;
/** 请求方法 */
method: string;
/** IP 地址 */
ip: string;
/** 地区 */
region: string;
/** 浏览器 */
browser: string;
/** 终端系统 */
os: string;
/** 执行时间(毫秒) */
executionTime: number;
/** 操作人 */
operator: string;
}

View File

@@ -1,16 +1,17 @@
import request from "@/utils/request";
import type { MenuTypeEnum } from "@/enums/business";
import type { MenuQuery, MenuVo, MenuForm, MenuOption, RouteVo, Meta } from "@/types/api";
const MENU_BASE_URL = "/api/v1/menus";
const MenuAPI = {
/** 获取当前用户的路由列表 */
getRoutes() {
return request<any, RouteVO[]>({ url: `${MENU_BASE_URL}/routes`, method: "get" });
return request<any, RouteVo[]>({ url: `${MENU_BASE_URL}/routes`, method: "get" });
},
/** 获取菜单树形列表 */
getList(queryParams: MenuQuery) {
return request<any, MenuVO[]>({ url: `${MENU_BASE_URL}`, method: "get", params: queryParams });
return request<any, MenuVo[]>({ url: `${MENU_BASE_URL}`, method: "get", params: queryParams });
},
/** 获取菜单下拉数据源 */
getOptions(onlyParent?: boolean) {
@@ -39,98 +40,3 @@ const MenuAPI = {
};
export default MenuAPI;
export interface MenuQuery {
/** 搜索关键字 */
keywords?: string;
}
export interface MenuVO {
/** 子菜单 */
children?: MenuVO[];
/** 组件路径 */
component?: string;
/** ICON */
icon?: string;
/** 菜单ID */
id?: string;
/** 菜单名称 */
name?: string;
/** 父菜单ID */
parentId?: string;
/** 按钮权限标识 */
perm?: string;
/** 跳转路径 */
redirect?: string;
/** 路由名称 */
routeName?: string;
/** 路由相对路径 */
routePath?: string;
/** 菜单排序(数字越小排名越靠前) */
sort?: number;
/** 菜单类型 */
type?: MenuTypeEnum;
/** 是否可见(1:显示;0:隐藏) */
visible?: number;
}
export interface MenuForm {
/** 菜单ID */
id?: string;
/** 父菜单ID */
parentId?: string;
/** 菜单名称 */
name?: string;
/** 是否可见(1-是 0-否) */
visible: number;
/** ICON */
icon?: string;
/** 排序 */
sort?: number;
/** 路由名称 */
routeName?: string;
/** 路由路径 */
routePath?: string;
/** 组件路径 */
component?: string;
/** 跳转路由路径 */
redirect?: string;
/** 菜单类型 */
type?: MenuTypeEnum;
/** 权限标识 */
perm?: string;
/** 【菜单】是否开启页面缓存 */
keepAlive?: number;
/** 【目录】只有一个子路由是否始终显示 */
alwaysShow?: number;
/** 其他参数 */
params?: KeyValue[];
}
interface KeyValue {
key: string;
value: string;
}
export interface RouteVO {
/** 子路由列表 */
children: RouteVO[];
/** 组件路径 */
component?: string;
/** 路由属性 */
meta?: Meta;
/** 路由名称 */
name?: string;
/** 路由路径 */
path?: string;
/** 跳转链接 */
redirect?: string;
}
export interface Meta {
/** 【目录】只有一个子路由是否始终显示 */
alwaysShow?: boolean;
/** 是否隐藏(true-是 false-否) */
hidden?: boolean;
/** ICON */
icon?: string;
/** 【菜单】是否开启页面缓存 */
keepAlive?: boolean;
/** 路由title */
title?: string;
}

View File

@@ -1,11 +1,12 @@
import request from "@/utils/request";
import type { NoticePageQuery, NoticeForm, NoticePageVo, NoticeDetailVo } from "@/types/api";
const NOTICE_BASE_URL = "/api/v1/notices";
const NoticeAPI = {
/** 获取通知公告分页数据 */
getPage(queryParams?: NoticePageQuery) {
return request<any, PageResult<NoticePageVO[]>>({
return request<any, PageResult<NoticePageVo[]>>({
url: `${NOTICE_BASE_URL}/page`,
method: "get",
params: queryParams,
@@ -37,7 +38,7 @@ const NoticeAPI = {
},
/** 查看通知 */
getDetail(id: string) {
return request<any, NoticeDetailVO>({ url: `${NOTICE_BASE_URL}/${id}/detail`, method: "get" });
return request<any, NoticeDetailVo>({ url: `${NOTICE_BASE_URL}/${id}/detail`, method: "get" });
},
/** 全部已读 */
readAll() {
@@ -45,7 +46,7 @@ const NoticeAPI = {
},
/** 获取我的通知分页列表 */
getMyNoticePage(queryParams?: NoticePageQuery) {
return request<any, PageResult<NoticePageVO[]>>({
return request<any, PageResult<NoticePageVo[]>>({
url: `${NOTICE_BASE_URL}/my`,
method: "get",
params: queryParams,
@@ -54,68 +55,3 @@ const NoticeAPI = {
};
export default NoticeAPI;
export interface NoticePageQuery extends PageQuery {
/** 标题 */
title?: string;
/** 发布状态(0:草稿;1:已发布;2:已撤回) */
publishStatus?: number;
/** 是否已读(1:是;0:否) */
isRead?: number;
}
export interface NoticeForm {
/** 通知ID(新增不填) */
id?: string;
/** 标题 */
title?: string;
/** 内容 */
content?: string;
/** 类型 */
type?: number;
/** 优先级/级别 */
level?: string;
/** 目标类型 */
targetType?: number;
/** 目标用户ID(多个以英文逗号(,)分割) */
targetUserIds?: string;
}
export interface NoticePageVO {
/** 通知ID */
id: string;
/** 标题 */
title?: string;
/** 内容 */
content?: string;
/** 类型 */
type?: number;
/** 发布人ID */
publisherId?: bigint;
/** 优先级 */
priority?: number;
/** 目标类型 */
targetType?: number;
/** 发布状态 */
publishStatus?: number;
/** 发布时间 */
publishTime?: Date;
/** 撤回时间 */
revokeTime?: Date;
}
export interface NoticeDetailVO {
/** 通知ID */
id?: string;
/** 标题 */
title?: string;
/** 内容 */
content?: string;
/** 类型 */
type?: number;
/** 发布人名称 */
publisherName?: string;
/** 优先级/级别 */
level?: string;
/** 发布时间 */
publishTime?: Date;
/** 发布状态 */
publishStatus?: number;
}

View File

@@ -1,11 +1,12 @@
import request from "@/utils/request";
import type { RolePageQuery, RolePageVo, RoleForm } from "@/types/api";
const ROLE_BASE_URL = "/api/v1/roles";
const RoleAPI = {
/** 获取角色分页数据 */
getPage(queryParams?: RolePageQuery) {
return request<any, PageResult<RolePageVO[]>>({
return request<any, PageResult<RolePageVo[]>>({
url: `${ROLE_BASE_URL}/page`,
method: "get",
params: queryParams,
@@ -42,38 +43,3 @@ const RoleAPI = {
};
export default RoleAPI;
export interface RolePageQuery extends PageQuery {
/** 搜索关键字 */
keywords?: string;
}
export interface RolePageVO {
/** 角色ID */
id?: string;
/** 角色编码 */
code?: string;
/** 角色名称 */
name?: string;
/** 排序 */
sort?: number;
/** 角色状态 */
status?: number;
/** 创建时间 */
createTime?: Date;
/** 修改时间 */
updateTime?: Date;
}
export interface RoleForm {
/** 角色ID */
id?: string;
/** 角色编码 */
code?: string;
/** 数据权限 */
dataScope?: number;
/** 角色名称 */
name?: string;
/** 排序 */
sort?: number;
/** 角色状态(1-正常;0-停用) */
status?: number;
}

View File

@@ -1,11 +1,12 @@
import request from "@/utils/request";
import type { VisitTrendQuery, VisitTrendVo, VisitStatsVo } from "@/types/api";
const STATISTICS_BASE_URL = "/api/v1/statistics";
const StatisticsAPI = {
/** 获取访问趋势统计 */
getVisitTrend(queryParams: VisitTrendQuery) {
return request<any, VisitTrendVO>({
return request<any, VisitTrendVo>({
url: `${STATISTICS_BASE_URL}/visits/trend`,
method: "get",
params: queryParams,
@@ -13,7 +14,7 @@ const StatisticsAPI = {
},
/** 获取访问概览统计 */
getVisitOverview() {
return request<any, VisitStatsVO>({
return request<any, VisitStatsVo>({
url: `${STATISTICS_BASE_URL}/visits/overview`,
method: "get",
});
@@ -21,36 +22,3 @@ const StatisticsAPI = {
};
export default StatisticsAPI;
export interface VisitTrendQuery {
/** 开始日期 */
startDate: string;
/** 结束日期 */
endDate: string;
}
export interface VisitTrendVO {
/** 日期列表 */
dates: string[];
/** 浏览量(PV) */
pvList: number[];
/** 访客数(UV) */
uvList: number[];
/** IP数 */
ipList: number[];
}
export interface VisitStatsVO {
/** 今日访客数(UV) */
todayUvCount: number;
/** 总访客数 */
totalUvCount: number;
/** 访客数同比增长率(相对于昨天同一时间段的增长率) */
uvGrowthRate: number;
/** 今日浏览量(PV) */
todayPvCount: number;
/** 总浏览量 */
totalPvCount: number;
/** 同比增长率(相对于昨天同一时间段的增长率) */
pvGrowthRate: number;
}

View File

@@ -1,39 +1,22 @@
import request from "@/utils/request";
import type {
TenantCreateForm,
TenantCreateResultVo,
TenantForm,
TenantInfo,
TenantPageQuery,
TenantPageVo,
} from "@/types/api";
const TENANT_BASE_URL = "/api/v1/tenants";
/**
* 租户信息
*/
export interface TenantInfo {
/** 租户ID */
id: number;
/** 租户名称 */
name: string;
/** 租户编码 */
code?: string;
/** 租户状态(1-正常 0-禁用) */
status?: number;
/** 联系人姓名 */
contactName?: string;
/** 联系人电话 */
contactPhone?: string;
/** 联系人邮箱 */
contactEmail?: string;
/** 租户域名 */
domain?: string;
/** 租户Logo */
logo?: string;
/** 是否默认租户 */
isDefault?: boolean;
}
/**
* 租户 API
*/
const TenantAPI = {
/**
* 获取当前用户的租户列表
* 获取当前用户可访问的租户列表
*/
getTenantList() {
return request<any, TenantInfo[]>({
@@ -63,6 +46,58 @@ const TenantAPI = {
method: "post",
});
},
/** 获取租户分页数据(平台租户管理) */
getPage(queryParams?: TenantPageQuery) {
return request<any, PageResult<TenantPageVo[]>>({
url: `${TENANT_BASE_URL}/page`,
method: "get",
params: queryParams,
});
},
/** 获取租户表单数据 */
getFormData(tenantId: string) {
return request<any, TenantForm>({
url: `${TENANT_BASE_URL}/${tenantId}/form`,
method: "get",
});
},
/** 新增租户并初始化默认数据 */
create(data: TenantCreateForm) {
return request<any, TenantCreateResultVo>({
url: `${TENANT_BASE_URL}`,
method: "post",
data,
});
},
/** 修改租户 */
update(tenantId: string, data: TenantForm) {
return request({
url: `${TENANT_BASE_URL}/${tenantId}`,
method: "put",
data,
});
},
/** 删除租户(批量) */
deleteByIds(ids: string) {
return request({
url: `${TENANT_BASE_URL}/${ids}`,
method: "delete",
});
},
/** 修改租户状态 */
updateStatus(tenantId: string, status: number) {
return request({
url: `${TENANT_BASE_URL}/${tenantId}/status`,
method: "put",
params: { status },
});
},
};
export default TenantAPI;

View File

@@ -1,4 +1,15 @@
import request from "@/utils/request";
import type {
UserInfo,
UserPageQuery,
UserPageVo,
UserForm,
UserProfileVo,
UserProfileForm,
PasswordChangeForm,
MobileUpdateForm,
EmailUpdateForm,
} from "@/types/api";
const USER_BASE_URL = "/api/v1/users";
@@ -21,7 +32,7 @@ const UserAPI = {
* @param queryParams 查询参数
*/
getPage(queryParams: UserPageQuery) {
return request<any, PageResult<UserPageVO[]>>({
return request<any, PageResult<UserPageVo[]>>({
url: `${USER_BASE_URL}/page`,
method: "get",
params: queryParams,
@@ -139,7 +150,7 @@ const UserAPI = {
/** 获取个人中心用户信息 */
getProfile() {
return request<any, UserProfileVO>({
return request<any, UserProfileVo>({
url: `${USER_BASE_URL}/profile`,
method: "get",
});
@@ -211,174 +222,3 @@ const UserAPI = {
};
export default UserAPI;
/** 登录用户信息 */
export interface UserInfo {
/** 用户ID */
userId?: string;
/** 用户名 */
username?: string;
/** 昵称 */
nickname?: string;
/** 头像URL */
avatar?: string;
/** 角色 */
roles: string[];
/** 权限 */
perms: string[];
}
/**
* 用户分页查询对象
*/
export interface UserPageQuery extends PageQuery {
/** 搜索关键字 */
keywords?: string;
/** 用户状态 */
status?: number;
/** 部门ID */
deptId?: string;
/** 开始时间 */
createTime?: [string, string];
}
/** 用户分页对象 */
export interface UserPageVO {
/** 用户ID */
id: string;
/** 用户头像URL */
avatar?: string;
/** 创建时间 */
createTime?: Date;
/** 部门名称 */
deptName?: string;
/** 用户邮箱 */
email?: string;
/** 性别 */
gender?: number;
/** 手机号 */
mobile?: string;
/** 用户昵称 */
nickname?: string;
/** 角色名称,多个使用英文逗号(,)分割 */
roleNames?: string;
/** 用户状态(1:启用;0:禁用) */
status?: number;
/** 用户名 */
username?: string;
}
/** 用户表单类型 */
export interface UserForm {
/** 用户ID */
id?: string;
/** 用户头像 */
avatar?: string;
/** 部门ID */
deptId?: string;
/** 邮箱 */
email?: string;
/** 性别 */
gender?: number;
/** 手机号 */
mobile?: string;
/** 昵称 */
nickname?: string;
/** 角色ID集合 */
roleIds?: number[];
/** 用户状态(1:正常;0:禁用) */
status?: number;
/** 用户名 */
username?: string;
}
/** 个人中心用户信息 */
export interface UserProfileVO {
/** 用户ID */
id?: string;
/** 用户名 */
username?: string;
/** 昵称 */
nickname?: string;
/** 头像URL */
avatar?: string;
/** 性别 */
gender?: number;
/** 手机号 */
mobile?: string;
/** 邮箱 */
email?: string;
/** 部门名称 */
deptName?: string;
/** 角色名称,多个使用英文逗号(,)分割 */
roleNames?: string;
/** 创建时间 */
createTime?: Date;
}
/** 个人中心用户信息表单 */
export interface UserProfileForm {
/** 用户ID */
id?: string;
/** 用户名 */
username?: string;
/** 昵称 */
nickname?: string;
/** 头像URL */
avatar?: string;
/** 性别 */
gender?: number;
/** 手机号 */
mobile?: string;
/** 邮箱 */
email?: string;
}
/** 修改密码表单 */
export interface PasswordChangeForm {
/** 原密码 */
oldPassword?: string;
/** 新密码 */
newPassword?: string;
/** 确认新密码 */
confirmPassword?: string;
}
/** 修改手机表单 */
export interface MobileUpdateForm {
/** 手机号 */
mobile?: string;
/** 验证码 */
code?: string;
}
/** 修改邮箱表单 */
export interface EmailUpdateForm {
/** 邮箱 */
email?: string;
/** 验证码 */
code?: string;
}