forked from yoone/API
80 lines
2.4 KiB
TypeScript
80 lines
2.4 KiB
TypeScript
import { Controller, Get, Inject, Query, Post, Del, Param, Files, Fields, Body } from '@midwayjs/core';
|
|
import { WPService } from '../service/wp.service';
|
|
import { successResponse, errorResponse } from '../utils/response.util';
|
|
|
|
@Controller('/media')
|
|
export class MediaController {
|
|
@Inject()
|
|
wpService: WPService;
|
|
|
|
@Get('/list')
|
|
async list(
|
|
@Query('siteId') siteId: number,
|
|
@Query('page') page: number = 1,
|
|
@Query('pageSize') pageSize: number = 20
|
|
) {
|
|
try {
|
|
if (!siteId) {
|
|
return errorResponse('siteId is required');
|
|
}
|
|
const result = await this.wpService.getMedia(siteId, page, pageSize);
|
|
return successResponse(result);
|
|
} catch (error) {
|
|
return errorResponse(error.message);
|
|
}
|
|
}
|
|
|
|
@Post('/upload')
|
|
async upload(@Fields() fields, @Files() files) {
|
|
try {
|
|
const siteId = fields.siteId;
|
|
if (!siteId) {
|
|
return errorResponse('siteId is required');
|
|
}
|
|
if (!files || files.length === 0) {
|
|
return errorResponse('file is required');
|
|
}
|
|
const file = files[0];
|
|
const result = await this.wpService.createMedia(siteId, file);
|
|
return successResponse(result);
|
|
} catch (error) {
|
|
return errorResponse(error.message);
|
|
}
|
|
}
|
|
|
|
@Post('/update/:id')
|
|
async update(@Param('id') id: number, @Body() body) {
|
|
try {
|
|
const siteId = body.siteId;
|
|
if (!siteId) {
|
|
return errorResponse('siteId is required');
|
|
}
|
|
// 过滤出需要更新的字段
|
|
const { title, caption, description, alt_text } = body;
|
|
const data: any = {};
|
|
if (title !== undefined) data.title = title;
|
|
if (caption !== undefined) data.caption = caption;
|
|
if (description !== undefined) data.description = description;
|
|
if (alt_text !== undefined) data.alt_text = alt_text;
|
|
|
|
const result = await this.wpService.updateMedia(siteId, id, data);
|
|
return successResponse(result);
|
|
} catch (error) {
|
|
return errorResponse(error.message);
|
|
}
|
|
}
|
|
|
|
@Del('/:id')
|
|
async delete(@Param('id') id: number, @Query('siteId') siteId: number, @Query('force') force: boolean = true) {
|
|
try {
|
|
if (!siteId) {
|
|
return errorResponse('siteId is required');
|
|
}
|
|
const result = await this.wpService.deleteMedia(siteId, id, force);
|
|
return successResponse(result);
|
|
} catch (error) {
|
|
return errorResponse(error.message);
|
|
}
|
|
}
|
|
}
|