feat:物料的 CRUD 功能完成
This commit is contained in:
parent
e052752694
commit
76ffef36cd
@ -1 +1,3 @@
|
|||||||
低代码相关接口文档: https://developer.shiyuegame.com/showdoc/web/#/231?page_id=15660
|
低代码相关接口文档: https://developer.shiyuegame.com/showdoc/web/#/231?page_id=15660
|
||||||
|
|
||||||
|
密码:shiyuegame
|
||||||
|
@ -46,7 +46,46 @@ export const updateFile = async (id: string, data: LowCodeFileSchema) => {
|
|||||||
return response.data;
|
return response.data;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
type PublishResponse = {
|
||||||
|
code: string;
|
||||||
|
data: object;
|
||||||
|
id?: string;
|
||||||
|
message: string;
|
||||||
|
};
|
||||||
|
|
||||||
export const deleteFile = async (id: string) => {
|
export const deleteFile = async (id: string) => {
|
||||||
const response = await instance.delete(`/api/v1/files/${id}`);
|
const response = await instance.delete(`/api/v1/files/${id}`);
|
||||||
return response.data;
|
return response.data;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发布指定项目的所有文件
|
||||||
|
* @param {number} projectId - 需要发布的项目ID
|
||||||
|
* @returns {Promise<any>} 包含发布操作结果的Promise对象
|
||||||
|
* @example
|
||||||
|
* // 发布项目ID为123的所有文件
|
||||||
|
* await publishAllFile(123)
|
||||||
|
*/
|
||||||
|
export const publishAllFile = async (
|
||||||
|
projectId: number
|
||||||
|
): Promise<PublishResponse> => {
|
||||||
|
const response = await instance.post('/api/v1/files/publish', {
|
||||||
|
project_id: projectId
|
||||||
|
});
|
||||||
|
return response.data;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发布单个文件
|
||||||
|
* @param {string} fileId - 需要发布的文件ID
|
||||||
|
* @returns {Promise<any>} 包含发布操作结果的Promise对象
|
||||||
|
* @example
|
||||||
|
* // 发布文件ID为45tnbgeme的文件
|
||||||
|
* await publishFile('45tnbgeme')
|
||||||
|
*/
|
||||||
|
export const publishFile = async (fileId: string): Promise<PublishResponse> => {
|
||||||
|
const response = await instance.post('/api/v1/files/publish-file', {
|
||||||
|
file_id: fileId
|
||||||
|
});
|
||||||
|
return response.data;
|
||||||
|
};
|
||||||
|
@ -1,23 +1,99 @@
|
|||||||
|
import { type MaterialDescription } from '@vtj/core';
|
||||||
|
|
||||||
import instance from './instance';
|
import instance from './instance';
|
||||||
|
|
||||||
export const getMaterialsList = async (data?: Record<string, any>) => {
|
// 定义响应类型
|
||||||
const response = await instance.get('/api/v1/materials', {
|
interface MaterialResponse {
|
||||||
params: data
|
code: number;
|
||||||
});
|
data: MaterialData | MaterialData[];
|
||||||
|
message: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 创建物料请求参数 */
|
||||||
|
interface CreateMaterialRequest {
|
||||||
|
project_id: number;
|
||||||
|
value: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 创建物料响应类型 */
|
||||||
|
interface CreateMaterialResponse {
|
||||||
|
code: number;
|
||||||
|
data: { id: string };
|
||||||
|
message: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 删除物料响应类型 */
|
||||||
|
interface DeleteMaterialResponse {
|
||||||
|
code: number;
|
||||||
|
data: { id: string };
|
||||||
|
message: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取物料列表
|
||||||
|
* @param params 查询参数
|
||||||
|
* @returns 物料列表
|
||||||
|
*/
|
||||||
|
export const getMaterialsList = async (
|
||||||
|
params?: Record<string, any>
|
||||||
|
): Promise<MaterialResponse> => {
|
||||||
|
const response = await instance.get('/api/v1/materials', { params });
|
||||||
return response.data;
|
return response.data;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const createMaterials = async (data: any) => {
|
/**
|
||||||
const response = await instance.post('/api/v1/materials', data);
|
* 根据ID获取单个物料
|
||||||
|
* @param id 物料ID
|
||||||
|
* @returns 物料详情
|
||||||
|
*/
|
||||||
|
export const getMaterials = async (id: number): Promise<MaterialResponse> => {
|
||||||
|
const response = await instance.get(`/api/v1/materials/${id}`);
|
||||||
return response.data;
|
return response.data;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const updateMaterials = async (id: string, data: any) => {
|
type MaterialData = {
|
||||||
const response = await instance.put(`/api/v1/materials/${id}`, data);
|
project_id: number;
|
||||||
|
value: Record<string, MaterialDescription>;
|
||||||
|
// 从原interface合并的字段
|
||||||
|
id?: number;
|
||||||
|
name?: string;
|
||||||
|
created_at?: string;
|
||||||
|
updated_at?: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
function transformMaterialData(data: MaterialData) {
|
||||||
|
return {
|
||||||
|
...data,
|
||||||
|
value: JSON.stringify(data.value)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建新物料
|
||||||
|
* @param data 物料数据(注意 value 需要是 JSON 字符串)
|
||||||
|
* @example
|
||||||
|
* postMaterials({ project_id: 1, value: '{"Authorization": "Bearer token"}' })
|
||||||
|
*/
|
||||||
|
export const postMaterials = async (
|
||||||
|
data: MaterialData
|
||||||
|
): Promise<CreateMaterialResponse> => {
|
||||||
|
const response = await instance.post(
|
||||||
|
'/api/v1/materials',
|
||||||
|
transformMaterialData(data)
|
||||||
|
);
|
||||||
return response.data;
|
return response.data;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const deleteMaterials = async (id: string) => {
|
/**
|
||||||
const response = await instance.delete(`/api/v1/materials/${id}`);
|
* 删除指定物料
|
||||||
|
* @param project_id 要删除的物料所属项目ID
|
||||||
|
* @returns 删除操作结果
|
||||||
|
* @example
|
||||||
|
* deleteMaterial('123').then(() => console.log('删除成功'))
|
||||||
|
*/
|
||||||
|
export const deleteMaterials = async (
|
||||||
|
project_id: number
|
||||||
|
): Promise<DeleteMaterialResponse> => {
|
||||||
|
const response = await instance.delete(`/api/v1/materials/${project_id}`);
|
||||||
return response.data;
|
return response.data;
|
||||||
};
|
};
|
||||||
|
@ -7,10 +7,11 @@ import {
|
|||||||
type ExtensionConfig,
|
type ExtensionConfig,
|
||||||
type PageFile,
|
type PageFile,
|
||||||
type BlockFile,
|
type BlockFile,
|
||||||
|
type NodeFromPlugin,
|
||||||
ProjectModel,
|
ProjectModel,
|
||||||
HistoryModel
|
HistoryModel
|
||||||
} from '@vtj/core';
|
} from '@vtj/core';
|
||||||
import { Storage, mapToObject } from '@vtj/utils';
|
import { mapToObject, Storage } from '@vtj/utils';
|
||||||
import { BaseService } from '@vtj/renderer';
|
import { BaseService } from '@vtj/renderer';
|
||||||
import {
|
import {
|
||||||
getProject,
|
getProject,
|
||||||
@ -20,16 +21,18 @@ import {
|
|||||||
getFile as getLowCodeFile,
|
getFile as getLowCodeFile,
|
||||||
deleteFile as deleteLowCodeFile,
|
deleteFile as deleteLowCodeFile,
|
||||||
getHistory as getLowCodeHistory,
|
getHistory as getLowCodeHistory,
|
||||||
updateHistory as updateLowCodeHistory,
|
|
||||||
deleteHistory as deleteLowCodeHistory,
|
deleteHistory as deleteLowCodeHistory,
|
||||||
getHistories as getLowCodeHistories,
|
|
||||||
createHistory as createLowCodeHistory,
|
createHistory as createLowCodeHistory,
|
||||||
getHistories
|
getHistories as getLowCodeHistories,
|
||||||
|
publishFile as publishLowCodeFile,
|
||||||
|
publishAllFile as publishLowCodeAllFile,
|
||||||
|
getMaterials as getLowCodeMaterials,
|
||||||
|
postMaterials as postLowCodeMaterials,
|
||||||
|
deleteMaterials as deleteLowCodeMaterials
|
||||||
} from '@/io';
|
} from '@/io';
|
||||||
const storage = new Storage({
|
const storage = new Storage({
|
||||||
type: 'local',
|
type: 'local',
|
||||||
expired: 0
|
expired: 0
|
||||||
// prefix: '__VTJ_'
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const stringifyFields = [
|
const stringifyFields = [
|
||||||
@ -46,7 +49,6 @@ export class LowCodeService extends BaseService {
|
|||||||
const remoteProject = await getProject('2');
|
const remoteProject = await getProject('2');
|
||||||
const model = new ProjectModel(remoteProject);
|
const model = new ProjectModel(remoteProject);
|
||||||
const dsl = model.toDsl();
|
const dsl = model.toDsl();
|
||||||
storage.save(`project_${model.id}`, dsl);
|
|
||||||
return Promise.resolve(dsl);
|
return Promise.resolve(dsl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -56,7 +58,7 @@ export class LowCodeService extends BaseService {
|
|||||||
return Promise.resolve(extension as ExtensionConfig | undefined);
|
return Promise.resolve(extension as ExtensionConfig | undefined);
|
||||||
}
|
}
|
||||||
|
|
||||||
public saveProject(project: ProjectSchema): Promise<boolean> {
|
public async saveProject(project: ProjectSchema): Promise<boolean> {
|
||||||
const newProject = {
|
const newProject = {
|
||||||
...project,
|
...project,
|
||||||
...Object.fromEntries(
|
...Object.fromEntries(
|
||||||
@ -65,18 +67,34 @@ export class LowCodeService extends BaseService {
|
|||||||
.map(([key, value]) => [key, JSON.stringify(value)])
|
.map(([key, value]) => [key, JSON.stringify(value)])
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
updateProject('2', newProject);
|
await updateProject('2', newProject);
|
||||||
const model = new ProjectModel(project);
|
|
||||||
storage.save(`project_${model.id}`, model.toDsl());
|
|
||||||
return Promise.resolve(true);
|
return Promise.resolve(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public saveMaterials(
|
public getPluginMaterial(
|
||||||
|
from: NodeFromPlugin
|
||||||
|
): Promise<MaterialDescription | null> {
|
||||||
|
return Promise.resolve(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: 物料存储只有在发布为其他端 (比如 uinapp) 时才有用,当前版本时不需要的,暂且保留
|
||||||
|
public async saveMaterials(
|
||||||
project: ProjectSchema,
|
project: ProjectSchema,
|
||||||
materials: Map<string, MaterialDescription>
|
materials: Map<string, MaterialDescription>
|
||||||
): Promise<boolean> {
|
): Promise<boolean> {
|
||||||
storage.save(`materials_${project.id}`, mapToObject(materials));
|
const materialData = mapToObject(materials);
|
||||||
console.log('saveMaterials', materials);
|
storage.save(`materials_${project.id}`, materialData);
|
||||||
|
console.log('saveMaterials', materialData);
|
||||||
|
// @ts-ignore
|
||||||
|
const existMaterials = await getLowCodeMaterials(project?.id);
|
||||||
|
console.log('existMaterials', existMaterials);
|
||||||
|
await postLowCodeMaterials({
|
||||||
|
// @ts-ignore
|
||||||
|
project_id: project?.id,
|
||||||
|
value: materialData
|
||||||
|
});
|
||||||
|
// @ts-ignore
|
||||||
|
await deleteLowCodeMaterials(project.id);
|
||||||
return Promise.resolve(true);
|
return Promise.resolve(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -132,7 +150,7 @@ export class LowCodeService extends BaseService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public api = (type: string, data: any): Promise<any> => {
|
public api = (type: string, data: any): Promise<any> => {
|
||||||
console.log('api', type, data);
|
// console.log('api', type, data);
|
||||||
return Promise.resolve(true);
|
return Promise.resolve(true);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -147,7 +165,7 @@ export class LowCodeService extends BaseService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public async getHistory(fileId: string): Promise<HistorySchema> {
|
public async getHistory(fileId: string): Promise<HistorySchema> {
|
||||||
const histories = await getHistories({
|
const histories = await getLowCodeHistories({
|
||||||
project_id: 2,
|
project_id: 2,
|
||||||
file_id: fileId,
|
file_id: fileId,
|
||||||
per_page: 50
|
per_page: 50
|
||||||
@ -175,7 +193,7 @@ export class LowCodeService extends BaseService {
|
|||||||
fileId: string,
|
fileId: string,
|
||||||
historyItem: HistoryItem
|
historyItem: HistoryItem
|
||||||
): Promise<boolean> {
|
): Promise<boolean> {
|
||||||
const saveHistory = await createLowCodeHistory({
|
await createLowCodeHistory({
|
||||||
project_id: 2,
|
project_id: 2,
|
||||||
file_id: fileId,
|
file_id: fileId,
|
||||||
history_id: historyItem.id,
|
history_id: historyItem.id,
|
||||||
@ -189,8 +207,10 @@ export class LowCodeService extends BaseService {
|
|||||||
return Promise.resolve(true);
|
return Promise.resolve(true);
|
||||||
}
|
}
|
||||||
public publish(project: ProjectSchema): Promise<boolean> {
|
public publish(project: ProjectSchema): Promise<boolean> {
|
||||||
console.log('整站发布 project', project);
|
return publishLowCodeAllFile(Number(project.id)).then((res) => {
|
||||||
return Promise.resolve(true);
|
console.log('整站发布', res);
|
||||||
|
return Promise.resolve(true);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public publishFile(
|
public publishFile(
|
||||||
@ -198,6 +218,9 @@ export class LowCodeService extends BaseService {
|
|||||||
file: PageFile | BlockFile
|
file: PageFile | BlockFile
|
||||||
): Promise<boolean> {
|
): Promise<boolean> {
|
||||||
console.log('发布页面', project, file);
|
console.log('发布页面', project, file);
|
||||||
return Promise.resolve(true);
|
return publishLowCodeFile(file.id).then((res) => {
|
||||||
|
console.log('发布页面', res);
|
||||||
|
return Promise.resolve(true);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user