first commit

This commit is contained in:
2026-06-12 12:31:35 +08:00
commit 77e9f1df50
261 changed files with 24791 additions and 0 deletions
+150
View File
@@ -0,0 +1,150 @@
import request from "@/utils/request";
import { verify } from "crypto";
const AUTH_BASE_URL = "/api/v1/auth";
class AuthAPI {
/** 登录 接口*/
static login(data: LoginData) {
const formData = new FormData();
formData.append("username", data.username);
formData.append("password", data.password);
formData.append("captchaKey", data.captchaKey);
formData.append("captchaCode", data.captchaCode);
return request<any, LoginResult>({
url: `${AUTH_BASE_URL}/login`,
method: "post",
data: formData,
headers: {
"Content-Type": "multipart/form-data",
},
});
}
/** 注销 接口*/
static logout() {
return request({
url: `${AUTH_BASE_URL}/logout`,
method: "delete",
});
}
/** 获取验证码 接口*/
static getCaptcha() {
return request<any, CaptchaResult>({
url: `${AUTH_BASE_URL}/captcha`,
method: "get",
});
}
static sendCode(data: SendCodeData) {
const formData = new FormData();
formData.append("contact", data.contact);
formData.append("captchaKey", data.captchaKey);
formData.append("captchaCode", data.captchaCode);
return request({
url: `${AUTH_BASE_URL}/sendRegCode`,
method: "post",
data: formData,
headers: {
"Content-Type": "multipart/form-data",
},
});
}
/** 登录 接口*/
static register(data: RegisterData) {
const formData = new FormData();
formData.append("username", data.username);
formData.append("password", data.password);
formData.append("verifyCode", data.verifyCode);
return request<any, LoginResult>({
url: `${AUTH_BASE_URL}/register`,
method: "post",
data: formData,
headers: {
"Content-Type": "multipart/form-data",
},
});
}
static autoLogin(username: string, password: string) {
const formData = new FormData();
formData.append("username", username);
formData.append("password", password);
return request<any, LoginResult>({
url: `${AUTH_BASE_URL}/autoLogin`,
method: "post",
data: formData,
headers: {
"Content-Type": "multipart/form-data",
},
});
}
}
export default AuthAPI;
/** 登录请求参数 */
export interface LoginData {
/** 用户名 */
username: string;
/** 密码 */
password: string;
/** 验证码缓存key */
captchaKey: string;
/** 验证码 */
captchaCode: string;
}
/** 登录响应 */
export interface LoginResult {
/** 访问token */
accessToken?: string;
/** 过期时间(单位:毫秒) */
expires?: number;
/** 刷新token */
refreshToken?: string;
/** token 类型 */
tokenType?: string;
}
/** 验证码响应 */
export interface CaptchaResult {
/** 验证码缓存key */
captchaKey: string;
/** 验证码图片Base64字符串 */
captchaBase64: string;
}
export interface CaptchaData {
/** 验证码缓存key */
captchaKey: string;
/** 验证码 */
captchaCode: string;
}
export interface SendCodeData {
/** 发送验证码账号 */
contact: string;
/** 验证码缓存key */
captchaKey: string;
/** 验证码 */
captchaCode: string;
}
/** 注册请求参数 */
export interface RegisterData {
/** 用户名 */
username: string;
/** 密码 */
password: string;
/** 重复输入密码 */
repeatPassword: string;
/** 验证码 */
verifyCode: string;
}
+28
View File
@@ -0,0 +1,28 @@
import request from "@/utils/request";
const BANK_BASE_URL = "/api/v1/bank";
class BankAPI {
static hotlist() {
return request<any, string[]>({
url: `${BANK_BASE_URL}/hotList`,
method: "get",
});
}
static bankInfo() {
return request<any, BankInfo>({
url: `${BANK_BASE_URL}/me`,
method: "get",
});
}
}
export default BankAPI;
export interface BankInfo {
userId: number;
bankName?: string;
bankCardNum?: string;
bankCardName?: string;
}
+191
View File
@@ -0,0 +1,191 @@
import request from "@/utils/request";
const GENERATOR_BASE_URL = "/api/v1/codegen";
class GeneratorAPI {
/** 获取数据表分页列表 */
static getTablePage(params: TablePageQuery) {
return request<any, PageResult<TablePageVO[]>>({
url: `${GENERATOR_BASE_URL}/table/page`,
method: "get",
params: params,
});
}
/** 获取代码生成配置 */
static getGenConfig(tableName: string) {
return request<any, GenConfigForm>({
url: `${GENERATOR_BASE_URL}/${tableName}/config`,
method: "get",
});
}
/** 获取代码生成配置 */
static saveGenConfig(tableName: string, data: GenConfigForm) {
return request({
url: `${GENERATOR_BASE_URL}/${tableName}/config`,
method: "post",
data: data,
});
}
/** 获取代码生成预览数据 */
static getPreviewData(tableName: string) {
return request<any, GeneratorPreviewVO[]>({
url: `${GENERATOR_BASE_URL}/${tableName}/preview`,
method: "get",
});
}
/** 重置代码生成配置 */
static resetGenConfig(tableName: string) {
return request({
url: `${GENERATOR_BASE_URL}/${tableName}/config`,
method: "delete",
});
}
/**
* 下载 ZIP 文件
* @param url
* @param fileName
*/
static download(tableName: string) {
return request({
url: `${GENERATOR_BASE_URL}/${tableName}/download`,
method: "get",
responseType: "blob",
}).then((response) => {
const fileName = decodeURI(
response.headers["content-disposition"].split(";")[1].split("=")[1]
);
const blob = new Blob([response.data], { type: "application/zip" });
const a = document.createElement("a");
const url = window.URL.createObjectURL(blob);
a.href = url;
a.download = fileName;
a.click();
window.URL.revokeObjectURL(url);
});
}
}
export default GeneratorAPI;
/** 代码生成预览对象 */
export interface GeneratorPreviewVO {
/** 文件生成路径 */
path: string;
/** 文件名称 */
fileName: string;
/** 文件内容 */
content: string;
}
/** 数据表分页查询参数 */
export interface TablePageQuery extends PageQuery {
/** 关键字(表名) */
keywords?: string;
}
/** 数据表分页对象 */
export interface TablePageVO {
/** 表名称 */
tableName: string;
/** 表描述 */
tableComment: string;
/** 存储引擎 */
engine: string;
/** 字符集排序规则 */
tableCollation: string;
/** 创建时间 */
createTime: string;
}
/** 代码生成配置表单 */
export interface GenConfigForm {
/** 主键 */
id?: number;
/** 表名 */
tableName?: string;
/** 业务名 */
businessName?: string;
/** 模块名 */
moduleName?: string;
/** 包名 */
packageName?: string;
/** 实体名 */
entityName?: string;
/** 作者 */
author?: string;
/** 上级菜单 */
parentMenuId?: number;
/** 后端应用名 */
backendAppName?: string;
/** 前端应用名 */
frontendAppName?: string;
/** 字段配置列表 */
fieldConfigs?: FieldConfig[];
}
/** 字段配置 */
export interface FieldConfig {
/** 主键 */
id?: number;
/** 列名 */
columnName?: string;
/** 列类型 */
columnType?: string;
/** 字段名 */
fieldName?: string;
/** 字段类型 */
fieldType?: string;
/** 字段描述 */
fieldComment?: string;
/** 是否在列表显示 */
isShowInList?: number;
/** 是否在表单显示 */
isShowInForm?: number;
/** 是否在查询条件显示 */
isShowInQuery?: number;
/** 是否必填 */
isRequired?: number;
/** 表单类型 */
formType?: number;
/** 查询类型 */
queryType?: number;
/** 字段长度 */
maxLength?: number;
/** 字段排序 */
fieldSort?: number;
/** 字典类型 */
dictType?: string;
}
+104
View File
@@ -0,0 +1,104 @@
import request from "@/utils/request";
const CONFIG_BASE_URL = "/api/v1/config";
class ConfigAPI {
/** 获取系统配置分页数据 */
static getPage(queryParams?: ConfigPageQuery) {
return request<any, PageResult<ConfigPageVO[]>>({
url: `${CONFIG_BASE_URL}/page`,
method: "get",
params: queryParams,
});
}
/**
* 获取系统配置表单数据
*
* @param id ConfigID
* @returns Config表单数据
*/
static getFormData(id: number) {
return request<any, ConfigForm>({
url: `${CONFIG_BASE_URL}/${id}/form`,
method: "get",
});
}
/** 添加系统配置*/
static add(data: ConfigForm) {
return request({
url: `${CONFIG_BASE_URL}`,
method: "post",
data: data,
});
}
/**
* 更新系统配置
*
* @param id ConfigID
* @param data Config表单数据
*/
static update(id: number, data: ConfigForm) {
return request({
url: `${CONFIG_BASE_URL}/${id}`,
method: "put",
data: data,
});
}
/**
* 删除系统配置
*
* @param ids 系统配置ID
*/
static deleteById(id: number) {
return request({
url: `${CONFIG_BASE_URL}/${id}`,
method: "delete",
});
}
static refreshCache() {
return request({
url: `${CONFIG_BASE_URL}`,
method: "patch",
});
}
}
export default ConfigAPI;
/** $系统配置分页查询参数 */
export interface ConfigPageQuery extends PageQuery {
/** 搜索关键字 */
keywords?: string;
}
/** 系统配置表单对象 */
export interface ConfigForm {
/** 主键 */
id?: number;
/** 配置名称 */
configName?: string;
/** 配置键 */
configKey?: string;
/** 配置值 */
configValue?: string;
/** 描述、备注 */
remark?: string;
}
/** 系统配置分页对象 */
export interface ConfigPageVO {
/** 主键 */
id?: number;
/** 配置名称 */
configName?: string;
/** 配置键 */
configKey?: string;
/** 配置值 */
configValue?: string;
/** 描述、备注 */
remark?: string;
}
+192
View File
@@ -0,0 +1,192 @@
import request from "@/utils/request";
const DICT_BASE_URL = "/api/v1/dict";
class DictAPI {
/**
* 获取字典分页列表
*
* @param queryParams 查询参数
* @returns 字典分页结果
*/
static getPage(queryParams: DictPageQuery) {
return request<any, PageResult<DictPageVO[]>>({
url: `${DICT_BASE_URL}/page`,
method: "get",
params: queryParams,
});
}
/**
* 获取字典表单数据
*
* @param id 字典ID
* @returns 字典表单数据
*/
static getFormData(id: number) {
return request<any, ResponseData<DictForm>>({
url: `${DICT_BASE_URL}/${id}/form`,
method: "get",
});
}
/**
* 新增字典
*
* @param data 字典表单数据
*/
static add(data: DictForm) {
return request({
url: `${DICT_BASE_URL}`,
method: "post",
data: data,
});
}
/**
* 修改字典
*
* @param id 字典ID
* @param data 字典表单数据
*/
static update(id: number, data: DictForm) {
return request({
url: `${DICT_BASE_URL}/${id}`,
method: "put",
data: data,
});
}
/**
* 删除字典
*
* @param ids 字典ID,多个以英文逗号(,)分隔
*/
static deleteByIds(ids: string) {
return request({
url: `${DICT_BASE_URL}/${ids}`,
method: "delete",
});
}
/**
* 获取字典列表
*
* @returns 字典列表
*/
static getList() {
return request<any, OptionType[]>({
url: `${DICT_BASE_URL}/list`,
method: "get",
});
}
/**
* 获取字典的数据项
*
* @param typeCode 字典编码
* @returns 字典数据项
*/
static getOptions(code: string) {
return request<any, OptionType[]>({
url: `${DICT_BASE_URL}/${code}/options`,
method: "get",
});
}
}
export default DictAPI;
/**
* 字典查询参数
*/
export interface DictPageQuery extends PageQuery {
/**
* 关键字(字典名称/编码)
*/
keywords?: string;
}
/**
* 字典分页对象
*/
export interface DictPageVO {
/**
* 字典ID
*/
id: number;
/**
* 字典名称
*/
name: string;
/**
* 字典编码
*/
code: string;
/**
* 字典状态(1-启用,0-禁用)
*/
status: number;
/**
* 字典项列表
*/
dictItems: DictItem[];
}
/**
* 字典项
*/
export interface DictItem {
/**
* 字典项ID
*/
id?: number;
/**
* 字典项名称
*/
name?: string;
/**
* 字典项值
*/
value?: string;
/**
* 排序
*/
sort?: number;
/**
* 状态(1-启用,0-禁用)
*/
status?: number;
}
// TypeScript 类型声明
/**
* 字典
*/
export interface DictForm {
/**
* 字典ID
*/
id?: number;
/**
* 字典名称
*/
name?: string;
/**
* 字典编码
*/
code?: string;
/**
* 字典状态(1-启用,0-禁用)
*/
status?: number;
/**
* 备注
*/
remark?: string;
/**
* 字典数据项列表
*/
dictItems?: DictItem[];
}
+74
View File
@@ -0,0 +1,74 @@
import request from "@/utils/request";
class FileAPI {
/**
* 文件上传地址
*/
static uploadUrl = import.meta.env.VITE_APP_BASE_API + "/api/v1/files";
/**
* 上传文件
*
* @param file
*/
static upload(file: File, type: string) {
const formData = new FormData();
formData.append("file", file);
formData.append("type", type);
return request<any, FileInfo>({
url: "/api/v1/files",
method: "post",
timeout: 300000,
data: formData,
headers: {
"Content-Type": "multipart/form-data",
},
});
}
/**
* 删除文件
*
* @param filePath 文件完整路径
*/
static deleteByPath(filePath?: string) {
return request({
url: "/api/v1/files",
method: "delete",
params: { filePath: filePath },
});
}
/**
* 下载文件
* @param url
* @param fileName
*/
static downloadFile(url: string, fileName?: string) {
return request({
url: url,
method: "get",
responseType: "blob",
}).then((res) => {
const blob = new Blob([res.data]);
const a = document.createElement("a");
const url = window.URL.createObjectURL(blob);
a.href = url;
a.download = fileName || "下载文件";
a.click();
window.URL.revokeObjectURL(url);
});
}
}
export default FileAPI;
/**
* 文件API类型声明
*/
export interface FileInfo {
/** 文件名 */
name: string;
/** 文件路径 */
url: string;
}
+86
View File
@@ -0,0 +1,86 @@
import request from "@/utils/request";
import { ColoredType } from "@/enums/SoftwareEnum";
const HELPER_BASE_URL = "/api/v1/helper";
class HelpAPI {
static listQnA(id: number) {
return request<any, HelpQnA[]>({
url: `${HELPER_BASE_URL}/listQnA/${id}`,
method: "get",
});
}
static getPage(queryParams: QnAPageQuery) {
return request<any, PageResult<FullQnA[]>>({
url: `${HELPER_BASE_URL}/pageQnA`,
method: "get",
params: queryParams,
});
}
static setByIds(ids: string, state: number) {
return request({
url: `${HELPER_BASE_URL}/setQnAByIds/${ids}`,
method: "put",
params: { state: state },
});
}
static saveOrUpdate(data: UpdateQnA) {
return request({
url: `${HELPER_BASE_URL}/updateQnA`,
method: "put",
data: data,
});
}
}
export default HelpAPI;
export interface QnAPageQuery extends PageQuery {
userId?: number;
state?: number;
typeIds?: string;
}
/** 问题简要信息 */
export interface HelpQnA {
/** ID */
helpId: number;
question: string;
answer: string;
}
// export interface QnAType {
// color: string;
// value: string;
// label: string;
// }
/** 问题简要信息 */
export interface FullQnA {
/** ID */
helpId?: number;
question?: string;
answer?: string;
helpTypeId?: string; //提问类型
types?: ColoredType[];
submitVersinos?: string; //提交问题的软件版本
userId?: number; //提问用户
userName?: string;
nickname?: string;
state?: number; //编辑状态
editTime?: number; //提交时间
answerTime?: number; //处理时间
}
/** 问题简要信息 */
export interface UpdateQnA {
/** ID */
helpId?: number;
question?: string;
answer?: string;
helpTypeId?: string;
state?: number;
}
+56
View File
@@ -0,0 +1,56 @@
import request from "@/utils/request";
const INTEGRAL_BASE_URL = "/api/v1/integral";
class IntegralAPI {
static listAdmin(query: IntegralPageQuery) {
return request<any, PageResult<IntegralPageAdminVO[]>>({
url: `${INTEGRAL_BASE_URL}/pageAdmin`,
method: "get",
params: query,
});
}
static listUser(query: IntegralPageQuery) {
return request<any, PageResult<IntegralPageUserVO[]>>({
url: `${INTEGRAL_BASE_URL}/pageUser`,
method: "get",
params: query,
});
}
}
export default IntegralAPI;
export interface IntegralPageAdminVO {
detailsId: number;
userId: number;
userName: string;
nickName?: string;
title: string;
score: number;
balance: number;
//类型规则编号(-1:订制音乐服务;-2:退订音乐服务;-3:音乐服务收入;-4:保存音频;-5:保存midi;-6:积分发放;-7:购买VIP;;-8:提现;-9:推荐音乐;-10:风格收入;-11:购买CPJ;-12:出售CPJ;-13:购买金曲票数;-14:领奖;-15:论坛金钱兑换)
ruleid: number;
ruletype: number;
addtime: number;
comment: string;
}
export interface IntegralPageUserVO {
detailsId: number;
title: string;
score: number;
balance: number;
ruleid: number;
ruletype: number;
addtime: number;
comment: string;
}
export interface IntegralPageQuery extends PageQuery {
userId?: number;
ruletype?: number;
/** 添加时间 */
addtime?: [number, number];
}
+122
View File
@@ -0,0 +1,122 @@
import request from "@/utils/request";
const LOG_BASE_URL = "/api/v1/logs";
class LogAPI {
/**
* 获取日志分页列表
*
* @param queryParams 查询参数
*/
static getPage(queryParams: LogPageQuery) {
return request<any, PageResult<LogPageVO[]>>({
url: `${LOG_BASE_URL}/page`,
method: "get",
params: queryParams,
});
}
/**
* 获取访问趋势
*
* @param queryParams
* @returns
*/
static getVisitTrend(queryParams: VisitTrendQuery) {
return request<any, VisitTrendVO>({
url: `${LOG_BASE_URL}/visit-trend`,
method: "get",
params: queryParams,
});
}
/**
* 获取访问趋势
*
* @param queryParams
* @returns
*/
static getVisitStats() {
return request<any, VisitStatsVO[]>({
url: `${LOG_BASE_URL}/visit-stats`,
method: "get",
});
}
}
export default LogAPI;
/**
* 日志分页查询对象
*/
export interface LogPageQuery extends PageQuery {
/** 搜索关键字 */
keywords?: string;
/** 操作时间 */
createTime?: [string, string];
}
/**
* 系统日志分页VO
*/
export interface LogPageVO {
/** 主键 */
id: number;
/** 日志模块 */
module: string;
/** 日志内容 */
content: string;
/** 请求路径 */
requestUri: string;
/** 请求方法 */
method: string;
/** IP 地址 */
ip: string;
/** 地区 */
region: string;
/** 浏览器 */
browser: string;
/** 终端系统 */
os: string;
/** 执行时间(毫秒) */
executionTime: number;
/** 操作人 */
operator: string;
}
/** 访问趋势视图对象 */
export interface VisitTrendVO {
/** 日期列表 */
dates: string[];
/** 浏览量(PV) */
pvList: number[];
/** 访客数(UV) */
uvList: number[];
/** IP数 */
ipList: number[];
}
/** 访问趋势查询参数 */
export interface VisitTrendQuery {
/** 开始日期 */
startDate: string;
/** 结束日期 */
endDate: string;
}
/** 访问统计 */
export interface VisitStatsVO {
/** 标题 */
title: string;
/** 类型 */
type: "pv" | "uv" | "ip";
/** 今日访问量 */
todayCount: number;
/** 总访问量 */
totalCount: number;
/** 同比增长率(相对于昨天同一时间段的增长率) */
growthRate: number;
totalCountOutput: number;
}
+209
View File
@@ -0,0 +1,209 @@
import request from "@/utils/request";
// 菜单基础URL
const MENU_BASE_URL = "/api/v1/menus";
class MenuAPI {
/**
* 获取当前用户的路由列表
* <p/>
* 无需传入角色,后端解析token获取角色自行判断是否拥有路由的权限
*
* @returns 路由列表
*/
static getRoutes() {
return request<any, RouteVO[]>({
url: `${MENU_BASE_URL}/routes`,
method: "get",
});
}
/**
* 获取菜单树形列表
*
* @param queryParams 查询参数
* @returns 菜单树形列表
*/
static getList(queryParams: MenuQuery) {
return request<any, MenuVO[]>({
url: `${MENU_BASE_URL}`,
method: "get",
params: queryParams,
});
}
/**
* 获取菜单下拉数据源
*
* @returns 菜单下拉数据源
*/
static getOptions(onlyParent?: boolean) {
return request<any, OptionType[]>({
url: `${MENU_BASE_URL}/options`,
method: "get",
params: { onlyParent: onlyParent },
});
}
/**
* 获取菜单表单数据
*
* @param id 菜单ID
*/
static getFormData(id: number) {
return request<any, MenuForm>({
url: `${MENU_BASE_URL}/${id}/form`,
method: "get",
});
}
/**
* 添加菜单
*
* @param data 菜单表单数据
* @returns 请求结果
*/
static add(data: MenuForm) {
return request({
url: `${MENU_BASE_URL}`,
method: "post",
data: data,
});
}
/**
* 修改菜单
*
* @param id 菜单ID
* @param data 菜单表单数据
* @returns 请求结果
*/
static update(id: string, data: MenuForm) {
return request({
url: `${MENU_BASE_URL}/${id}`,
method: "put",
data: data,
});
}
/**
* 删除菜单
*
* @param id 菜单ID
* @returns 请求结果
*/
static deleteById(id: number) {
return request({
url: `${MENU_BASE_URL}/${id}`,
method: "delete",
});
}
}
export default MenuAPI;
import { MenuTypeEnum } from "@/enums/MenuTypeEnum";
/** 菜单查询参数 */
export interface MenuQuery {
/** 搜索关键字 */
keywords?: string;
}
/** 菜单视图对象 */
export interface MenuVO {
/** 子菜单 */
children?: MenuVO[];
/** 组件路径 */
component?: string;
/** ICON */
icon?: string;
/** 菜单ID */
id?: number;
/** 菜单名称 */
name?: string;
/** 父菜单ID */
parentId?: number;
/** 按钮权限标识 */
perm?: string;
/** 跳转路径 */
redirect?: string;
/** 路由名称 */
routeName?: string;
/** 路由相对路径 */
routePath?: string;
/** 菜单排序(数字越小排名越靠前) */
sort?: number;
/** 菜单 */
type?: MenuTypeEnum;
/** 菜单是否可见(1:显示;0:隐藏) */
visible?: number;
}
/** 菜单表单对象 */
export interface MenuForm {
/** 菜单ID */
id?: string;
/** 父菜单ID */
parentId?: number;
/** 菜单名称 */
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;
}
/** RouteVO,路由对象 */
export interface RouteVO {
/** 子路由列表 */
children: RouteVO[];
/** 组件路径 */
component?: string;
/** 路由属性 */
meta?: Meta;
/** 路由名称 */
name?: string;
/** 路由路径 */
path?: string;
/** 跳转链接 */
redirect?: string;
}
/** Meta,路由属性 */
export interface Meta {
/** 【目录】只有一个子路由是否始终显示 */
alwaysShow?: boolean;
/** 是否隐藏(true-是 false-否) */
hidden?: boolean;
/** ICON */
icon?: string;
/** 【菜单】是否开启页面缓存 */
keepAlive?: boolean;
/** 路由title */
title?: string;
}
+57
View File
@@ -0,0 +1,57 @@
import request from "@/utils/request";
const MESSAGE_BASE_URL = "/api/v1/message";
class MessageAPI {
static getPage(queryParams: MessagePageQuery) {
return request<any, PageResult<WebMessage[]>>({
url: `${MESSAGE_BASE_URL}/page`,
method: "get",
params: queryParams,
});
}
static getLatest(userId: number) {
return request<any, WebMessage[]>({
url: `${MESSAGE_BASE_URL}/${userId}/latest`,
method: "get",
});
}
static setByIds(ids: string, state: number) {
return request({
url: `${MESSAGE_BASE_URL}/${ids}`,
method: "put",
params: { state: state },
});
}
static save(data: WebMessage) {
return request({
url: `${MESSAGE_BASE_URL}/save`,
method: "put",
data: data,
});
}
}
export default MessageAPI;
export interface MessagePageQuery extends PageQuery {
userId?: number;
type: number;
}
export interface WebMessage {
msgId?: number;
userId?: number;
title?: string;
content?: string;
state?: number;
type?: number;
sendTime?: number;
readTime?: number;
deleteTime?: number;
}
+48
View File
@@ -0,0 +1,48 @@
import request from "@/utils/request";
const NOTICE_BASE_URL = "/api/v1/notice";
class NoticeAPI {
static getPage(queryParams: NoticePageQuery) {
return request<any, PageResult<WebNotice[]>>({
url: `${NOTICE_BASE_URL}/page`,
method: "get",
params: queryParams,
});
}
static save(data: WebNotice) {
return request({
url: `${NOTICE_BASE_URL}/save`,
method: "put",
data: data,
});
}
static setByIds(ids: string, state: number) {
return request({
url: `${NOTICE_BASE_URL}/${ids}`,
method: "put",
params: { state: state },
});
}
}
export default NoticeAPI;
export interface NoticePageQuery extends PageQuery {
state?: number;
}
export interface WebNotice {
noticeId?: number;
title?: string;
content?: string;
state?: number;
noticeType?: number;
releaseTime?: number;
shieldTime?: number;
}
+37
View File
@@ -0,0 +1,37 @@
import request from "@/utils/request";
const ORDER_BASE_URL = "/api/v1/order";
class OrderAPI {
static listPage(query: OrderPageQuery) {
return request<any, PageResult<OrderPageVO[]>>({
url: `${ORDER_BASE_URL}/page`,
method: "get",
params: query,
});
}
}
export default OrderAPI;
export interface OrderPageVO {
orderId: number;
userId: number;
userName: string;
nickName?: string;
money: number;
orderNumber: string;
payway: string;
state: number;
paytime: number;
endtime?: number;
remark?: string;
}
export interface OrderPageQuery extends PageQuery {
userId?: number;
state?: number;
payway?: string;
/** 添加时间 */
paytime?: [number, number];
}
+139
View File
@@ -0,0 +1,139 @@
import request from "@/utils/request";
const ROLE_BASE_URL = "/api/v1/roles";
class RoleAPI {
/** 获取角色分页数据 */
static getPage(queryParams?: RolePageQuery) {
return request<any, PageResult<RolePageVO[]>>({
url: `${ROLE_BASE_URL}/page`,
method: "get",
params: queryParams,
});
}
/** 获取角色下拉数据源 */
static getOptions() {
return request<any, OptionType[]>({
url: `${ROLE_BASE_URL}/options`,
method: "get",
});
}
/**
* 获取角色的菜单ID集合
*
* @param roleId 角色ID
* @returns 角色的菜单ID集合
*/
static getRoleMenuIds(roleId: number) {
return request<any, number[]>({
url: `${ROLE_BASE_URL}/${roleId}/menuIds`,
method: "get",
});
}
/**
* 分配菜单权限
*
* @param roleId 角色ID
* @param data 菜单ID集合
*/
static updateRoleMenus(roleId: number, data: number[]) {
return request({
url: `${ROLE_BASE_URL}/${roleId}/menus`,
method: "put",
data: data,
});
}
/**
* 获取角色表单数据
*
* @param id 角色ID
* @returns 角色表单数据
*/
static getFormData(id: number) {
return request<any, RoleForm>({
url: `${ROLE_BASE_URL}/${id}/form`,
method: "get",
});
}
/** 添加角色 */
static add(data: RoleForm) {
return request({
url: `${ROLE_BASE_URL}`,
method: "post",
data: data,
});
}
/**
* 更新角色
*
* @param id 角色ID
* @param data 角色表单数据
*/
static update(id: number, data: RoleForm) {
return request({
url: `${ROLE_BASE_URL}/${id}`,
method: "put",
data: data,
});
}
/**
* 批量删除角色,多个以英文逗号(,)分割
*
* @param ids 角色ID字符串,多个以英文逗号(,)分割
*/
static deleteByIds(ids: string) {
return request({
url: `${ROLE_BASE_URL}/${ids}`,
method: "delete",
});
}
}
export default RoleAPI;
/** 角色分页查询参数 */
export interface RolePageQuery extends PageQuery {
/** 搜索关键字 */
keywords?: string;
}
/** 角色分页对象 */
export interface RolePageVO {
/** 角色编码 */
code?: string;
/** 角色ID */
id?: number;
/** 角色名称 */
name?: string;
/** 排序 */
sort?: number;
/** 角色状态 */
status?: number;
/** 创建时间 */
createTime?: Date;
/** 修改时间 */
updateTime?: Date;
}
/** 角色表单对象 */
export interface RoleForm {
/** 角色ID */
id?: number;
/** 角色编码 */
code: string;
/** 数据权限 */
dataScope?: number;
/** 角色名称 */
name: string;
/** 排序 */
sort?: number;
/** 角色状态(1-正常;0-停用) */
status?: number;
}
+130
View File
@@ -0,0 +1,130 @@
import request from "@/utils/request";
const SOFTWARE_BASE_URL = "/api/v1/software";
class SoftwareAPI {
static listSoftware() {
return request<any, SoftwareInfo[]>({
url: `${SOFTWARE_BASE_URL}/list`,
method: "get",
});
}
static listFont() {
return request<any, FontInfo[]>({
url: `${SOFTWARE_BASE_URL}/listFont`,
method: "get",
});
}
static getVersion(id: number, os: number) {
return request<any, VersionInfo>({
url: `${SOFTWARE_BASE_URL}/lastVersion/${id}/${os}`,
method: "get",
});
}
static page(query: VersionPageQuery) {
return request<any, PageResult<FullVersion[]>>({
url: `${SOFTWARE_BASE_URL}/page`,
method: "get",
params: query,
});
}
static update(data: FullVersion) {
return request({
url: `${SOFTWARE_BASE_URL}/update`,
method: "put",
data: data,
});
}
static maxVersion(swId: number, innerId: number) {
return request<any, VersionNum>({
url: `${SOFTWARE_BASE_URL}/maxVersion`,
method: "get",
params: { softwareId: swId, innerId: innerId },
});
}
static swDownload(swId: number, os: number) {
return request({
url: `${SOFTWARE_BASE_URL}/swDownload`,
method: "put",
params: { softwareId: swId, os: os },
});
}
static setByIds(ids: string, state: number) {
return request({
url: `${SOFTWARE_BASE_URL}/${ids}`,
method: "put",
params: { state: state },
});
}
}
export default SoftwareAPI;
/** 软件信息 */
export interface SoftwareInfo {
/** 软件ID */
softwareId: number;
/** 软件名称 */
name: string;
/** 适用系统 */
os: number;
}
/** 版本信息 */
export interface VersionInfo {
softwareId: number;
os: number;
version: string;
installPath: string;
releaseDate: number;
packageSize: number;
describe?: string;
pictures?: string[];
}
/** 音色库信息 */
export interface FontInfo {
fontsId: number;
name: string;
path: string;
size: number;
describe?: string;
}
export interface VersionPageQuery extends PageQuery {
softwareId?: number;
innerId?: number;
incompatible?: number;
}
export interface FullVersion {
versionId?: number;
softwareId?: number;
innerId?: number;
versionMajor?: number;
versionMinor?: number;
versionModify?: number;
versionBuild?: number;
incompatible?: number;
installSize?: number;
installPath?: string;
releaseTime?: number;
describeText?: string;
accessNum?: number;
downloadNum?: number;
isDeleted?: number;
}
export interface VersionNum {
major: number;
minor: number;
modify: number;
build: number;
}
+48
View File
@@ -0,0 +1,48 @@
import request from "@/utils/request";
const STATISTICS_BASE_URL = "/api/v1/statistics";
class StatisticsAPI {
static page(query: StatisticsPageQuery) {
return request<any, PageResult<StatisticsBO[]>>({
url: `${STATISTICS_BASE_URL}/page`,
method: "get",
params: query,
});
}
}
export default StatisticsAPI;
export interface StatisticsBO {
statisticsId?: number;
statisticsDate?: number; //统计日期
login?: string; //登录次数
loginUsersum?: string; //登录人数
register?: string; //注册人数
mofangAccess?: string; //软件使用次数
downloadNum?: string; //软件下载次数
accompanyUse?: string; //风格使用次数
accompanyConsume?: string; //风格消费额
recharge?: string; //音符充值
consume?: string; //音符消费
}
export interface StatisticsVO {
statisticsId?: number;
statisticsDate?: number; //统计日期
login?: number[]; //登录次数
loginUsersum?: number[]; //登录人数
register?: number[]; //注册人数
mofangAccess?: number[]; //软件使用次数
downloadNum?: number[]; //软件下载次数
accompanyUse?: number[]; //风格使用次数
accompanyConsume?: number[]; //风格消费总额
recharge?: number[]; //音符充值
consume?: number[]; //音符消费
}
export interface StatisticsPageQuery extends PageQuery {
/** 时间范围 */
range?: [number, number];
}
+68
View File
@@ -0,0 +1,68 @@
import request from "@/utils/request";
const STYLE_BASE_URL = "/api/v1/style";
class StyleAPI {
static statistic() {
return request<any, StyleStatistic>({
url: `${STYLE_BASE_URL}/statistic`,
method: "get",
});
}
static page(query: StylePageQuery) {
return request<any, PageResult<StyleVO[]>>({
url: `${STYLE_BASE_URL}/page`,
method: "get",
params: query,
});
}
static update(data: StyleUpdate) {
return request({
url: `${STYLE_BASE_URL}/update`,
method: "put",
data: data,
});
}
}
export default StyleAPI;
export interface StyleStatistic {
ts0: number;
ts1: number;
ts2: number;
ts3: number;
temp: number;
}
export interface StyleVO {
accompanyId: number;
cost: number; //使用价格
score: number; //评分
state: number; //状态
name: string; //风格名称
description?: string; //风格描述
author: number; //作者ID
authorName?: string; //作者昵称
timesignature: number; //节拍(04/413/422/436/8
tempo: number; //速度
changeTime: number; //编辑时间
scoreTime: number; //评分时间
useCount: number; //使用次数
sellCount: number; //购买次数
}
export interface StylePageQuery extends PageQuery {
author?: number;
ts?: number;
state?: number;
}
export interface StyleUpdate {
accompanyId?: number;
cost?: number; //使用价格
state?: number; //状态
}
+612
View File
@@ -0,0 +1,612 @@
import request from "@/utils/request";
import { SendCodeData } from "./auth";
const USER_BASE_URL = "/api/v1/users";
class UserAPI {
/**
* 获取当前登录用户信息
*
* @returns 登录用户昵称、头像信息,包括角色和权限
*/
static getInfo() {
return request<any, UserInfo>({
url: `${USER_BASE_URL}/me`,
method: "get",
});
}
/**
* 获取用户分页列表
*
* @param queryParams 查询参数
*/
static getPage(queryParams: UserPageQuery) {
return request<any, PageResult<UserPageVO[]>>({
url: `${USER_BASE_URL}/page`,
method: "get",
params: queryParams,
});
}
/**
* 获取用户表单详情
*
* @param userId 用户ID
* @returns 用户表单详情
*/
static getFormData(userId: number) {
return request<any, UserForm>({
url: `${USER_BASE_URL}/${userId}/form`,
method: "get",
});
}
/**
* 添加用户
*
* @param data 用户表单数据
*/
static add(data: UserForm) {
return request({
url: `${USER_BASE_URL}`,
method: "post",
data: data,
});
}
/**
* 修改用户
*
* @param id 用户ID
* @param data 用户表单数据
*/
static update(id: number, data: UserForm) {
return request({
url: `${USER_BASE_URL}/${id}`,
method: "put",
data: data,
});
}
// /**
// * 修改用户密码
// *
// * @param id 用户ID
// * @param password 新密码
// */
// static resetPassword(id: number, password: string) {
// return request({
// url: `${USER_BASE_URL}/${id}/password/reset`,
// method: "put",
// params: { password: password },
// });
// }
/**
* 批量删除用户,多个以英文逗号(,)分割
*
* @param ids 用户ID字符串,多个以英文逗号(,)分割
*/
static deleteByIds(ids: string) {
return request({
url: `${USER_BASE_URL}/${ids}`,
method: "delete",
});
}
/**
* 批量修改用户状态,多个以英文逗号(,)分割
*
* @param ids 用户ID字符串,多个以英文逗号(,)分割
*/
static setStateByIds(ids: string, state: number) {
return request({
url: `${USER_BASE_URL}/${ids}/${state}`,
method: "patch",
});
}
/** 下载用户导入模板 */
static downloadTemplate() {
return request({
url: `${USER_BASE_URL}/template`,
method: "get",
responseType: "arraybuffer",
});
}
/**
* 导出用户
*
* @param queryParams 查询参数
*/
static export(queryParams: UserPageQuery) {
return request({
url: `${USER_BASE_URL}/export`,
method: "get",
params: queryParams,
responseType: "arraybuffer",
});
}
/**
* 导入用户
*
* @param deptId 部门ID
* @param file 导入文件
*/
static import(deptId: number, file: File) {
const formData = new FormData();
formData.append("file", file);
return request({
url: `${USER_BASE_URL}/import`,
method: "post",
params: { deptId: deptId },
data: formData,
headers: {
"Content-Type": "multipart/form-data",
},
});
}
/** 获取个人中心用户信息 */
static getProfile() {
return request<any, UserProfileVO>({
url: `${USER_BASE_URL}/profile`,
method: "get",
});
}
/** 修改个人中心用户信息 */
static updateProfile(data: UserProfileForm) {
return request({
url: `${USER_BASE_URL}/profile`,
method: "put",
data: data,
});
}
/** 修改个人中心用户密码 */
static changePassword(data: PasswordChangeForm) {
return request({
url: `${USER_BASE_URL}/password`,
method: "put",
data: data,
});
}
/**
* 发送手机/邮箱验证码
*
* @param contact 联系方式 手机号/邮箱
*/
static sendBindCode(data: SendCodeData) {
const formData = new FormData();
formData.append("contact", data.contact);
formData.append("captchaKey", data.captchaKey);
formData.append("captchaCode", data.captchaCode);
return request({
url: `${USER_BASE_URL}/sendBindCode`,
method: "post",
data: formData,
headers: {
"Content-Type": "multipart/form-data",
},
});
}
/** 绑定个人中心用户手机 */
static bindMobile(data: MobileBindingForm) {
return request({
url: `${USER_BASE_URL}/mobile`,
method: "put",
data: data,
});
}
/** 绑定个人中心用户邮箱 */
static bindEmail(data: EmailBindingForm) {
return request({
url: `${USER_BASE_URL}/email`,
method: "put",
data: data,
});
}
/** 获取账户信息 */
static getAccountInfo() {
return request<any, AccountInfo>({
url: `${USER_BASE_URL}/account`,
method: "get",
});
}
/**
* 修改用户昵称
*
* @param id 用户ID
* @param nickname 用户昵称
*/
static updateNickname(id: number, nickname: string) {
return request({
url: `${USER_BASE_URL}/${id}/nickname`,
method: "patch",
params: { nickname: nickname },
});
}
/**
* 修改用户手机
*
* @param id 用户ID
* @param phone 用户手机号
*/
static updatePhone(id: number, phone: string) {
return request({
url: `${USER_BASE_URL}/${id}/phone`,
method: "patch",
params: { phone: phone },
});
}
/** 修改个人中心用户密码 */
static resetPassword(data: ResetPasswordForm) {
return request({
url: `${USER_BASE_URL}/resetPassword`,
method: "post",
data: data,
});
}
/** 获取用户实名认证信息 */
static getRealNameInfo() {
return request<any, RealNameInfo>({
url: `${USER_BASE_URL}/realname`,
method: "get",
});
}
/** 更新用户实名认证信息 */
static updateRealNameInfo(data: RealNameInfo) {
return request({
url: `${USER_BASE_URL}/realname`,
method: "put",
data: data,
});
}
static getRealNamePage(queryParams: PageQuery) {
return request<any, PageResult<RealNameInfo[]>>({
url: `${USER_BASE_URL}/realname/page`,
method: "get",
params: queryParams,
});
}
static verifyRealName(userId: number, reason: string) {
return request({
url: `${USER_BASE_URL}/${userId}/realname`,
method: "post",
params: { reason: reason },
});
}
static beingVIP(vipType: number) {
return request<any, number>({
url: `${USER_BASE_URL}/vip`,
method: "post",
params: { vipType: vipType },
});
}
static buyNotes(payType: string, amount: string) {
return request<any, { order: string; resp: string }>({
url: `${USER_BASE_URL}/buyNotes`,
method: "post",
params: { payType: payType, amount: amount },
});
}
static checkOrder(order: string) {
return request<any, number>({
url: `${USER_BASE_URL}/checkOrder`,
method: "get",
params: { order: order },
});
}
static draw(data: DrawForm) {
return request<any, string>({
url: `${USER_BASE_URL}/draw`,
method: "post",
data: data,
});
}
static drawPage(queryParams: PageQuery) {
return request<any, PageResult<DrawPageVO[]>>({
url: `${USER_BASE_URL}/draw/page`,
method: "get",
params: queryParams,
});
}
static verifyDraw(orderId: number, reason: string) {
return request<any, number>({
url: `${USER_BASE_URL}/draw`,
method: "put",
params: { orderId: orderId, reason: reason },
});
}
}
export default UserAPI;
/** 登录用户信息 */
export interface UserInfo {
/** 用户ID */
userId?: number;
/** 用户名 */
username?: string;
/** 昵称 */
nickname?: string;
/** 头像URL */
avatar?: string;
/** 角色 */
roles: string[];
/** 权限 */
perms: string[];
}
/**
* 用户分页查询对象
*/
export interface UserPageQuery extends PageQuery {
/** 搜索关键字 */
keywords?: string;
/** 用户状态 */
status?: number;
/** 部门ID */
// deptId?: number;
/** 注册时间 */
regTime?: [number, number];
}
/** 用户分页对象 */
export interface UserPageVO {
/** 用户头像URL */
avatar?: string;
/** 创建时间 */
regTime?: number;
/** 部门名称 */
// deptName?: string;
/** 用户邮箱 */
email?: string;
/** 性别 */
genderLabel?: string;
/** 用户ID */
id?: number;
/** 手机号 */
mobile?: string;
/** 用户昵称 */
nickname?: string;
/** 角色名称,多个使用英文逗号(,)分割 */
// roleNames?: string;
/** 用户状态(1:启用;0:禁用) */
status?: number;
/** 用户名 */
username?: string;
name?: string;
isName?: number;
isPhone?: number;
loginTime?: number;
loginNum?: number;
deleteTime?: number;
vipTime?: number;
integral?: number;
authority?: number;
}
/** 用户表单类型 */
export interface UserForm {
/** 用户头像 */
avatar?: string;
/** 部门ID */
// deptId?: number;
/** 邮箱 */
email?: string;
/** 性别 */
gender?: number;
/** 用户ID */
id?: number;
/** 手机号 */
mobile?: string;
/** 昵称 */
nickname?: string;
/** 角色ID集合 */
roleIds?: number[];
/** 用户状态(1:正常;0:禁用) */
status?: number;
/** 用户名 */
username?: string;
}
/** 个人中心用户信息 */
export interface UserProfileVO {
/** 用户ID */
id?: number;
/** 用户名 */
username?: string;
/** 昵称 */
nickname?: string;
/** 头像URL */
avatar?: string;
/** 性别 */
gender?: number;
/** 手机号 */
mobile?: string;
/** 邮箱 */
email?: string;
// /** 部门名称 */
// deptName?: string;
/** 角色名称,多个使用英文逗号(,)分割 */
roleNames?: string;
/** 创建时间 */
createTime?: Date;
}
/** 个人中心用户信息表单 */
export interface UserProfileForm {
/** 用户ID */
id?: number;
/** 用户名 */
username?: string;
/** 昵称 */
nickname?: string;
/** 头像URL */
avatar?: string;
/** 性别 */
gender?: number;
/** 手机号 */
mobile?: string;
/** 邮箱 */
email?: string;
}
/** 修改密码表单 */
export interface PasswordChangeForm {
/** 原密码 */
oldPassword?: string;
/** 新密码 */
newPassword?: string;
/** 确认新密码 */
confirmPassword?: string;
}
/** 重置密码表单 */
export interface ResetPasswordForm {
/** 用户ID */
userId?: number;
/** 用户名 */
username?: string;
/** 手机或邮箱 */
contact?: string;
/** 验证码 */
verifyCode?: string;
/** 密码 */
password?: string;
}
/** 修改手机表单 */
export interface MobileBindingForm {
/** 手机号 */
mobile?: string;
/** 验证码 */
code?: string;
}
/** 修改邮箱表单 */
export interface EmailBindingForm {
/** 邮箱 */
email?: string;
/** 验证码 */
code?: string;
}
/** 账户信息 */
export interface AccountInfo {
/** 用户ID */
userId?: number;
/** 账户状态(0:注销;1:锁定;2:已激活;3:未激活;4:在线;5:旧版用户) */
state?: number;
/** 真实名称 */
name?: string;
/** 是否实名认证(1:是;2:不是;3:正在认证) */
isName?: number;
/** 手机号 */
phone?: string;
/** 是否手机认证(1:是;2:不是) */
isPhone?: number;
/** 邮箱 */
email?: string;
/** 邮箱激活时间 */
// activateTime?: number;
/** 唱作音符数 */
integral?: number;
/** VIP过期时间(-1:终身, -2: 已过期, 0: 非会员) */
vipTime?: number;
/** VIP状态 */
// vipState?: number;
/** 注册时间 */
regTime?: number;
}
export interface RealNameInfo {
/** 用户ID */
userId?: number;
/** 真实名称 */
name?: string;
isName?: number;
identityType?: number; //证件类型
identityCard?: string; //证件号
identityPic?: string; //证件照片
address?: string; //联系地址
}
export interface RealNameInfoPageQuery extends PageQuery {
isName?: number;
}
export interface DrawForm {
amount: number;
cardNum: string;
bankName: string;
cardName?: string;
}
export interface DrawPageVO {
orderId: number;
userId: number;
userName: string;
money: string;
bankName: string;
cardNum: string;
cardName?: string;
takeTime: number;
makeTime?: number;
state: number;
}