mirror of
https://github.com/fantasticit/think.git
synced 2026-10-31 07:09:04 +08:00
256 lines
7.3 KiB
TypeScript
256 lines
7.3 KiB
TypeScript
import { OperateUserAuthDto } from '@dtos/auth.dto';
|
|
import { CreateDocumentDto } from '@dtos/create-document.dto';
|
|
import { ShareDocumentDto } from '@dtos/share-document.dto';
|
|
import { UpdateDocumentDto } from '@dtos/update-document.dto';
|
|
import { CheckDocumentStatus, DocumentStatusGuard } from '@guard/document-status.guard';
|
|
import { JwtGuard } from '@guard/jwt.guard';
|
|
import {
|
|
Body,
|
|
ClassSerializerInterceptor,
|
|
Controller,
|
|
Delete,
|
|
Get,
|
|
HttpCode,
|
|
HttpStatus,
|
|
Param,
|
|
Patch,
|
|
Post,
|
|
Query,
|
|
Request,
|
|
UseGuards,
|
|
UseInterceptors,
|
|
} from '@nestjs/common';
|
|
import { DocumentService } from '@services/document.service';
|
|
import { DocumentApiDefinition, DocumentStatus, IPagination } from '@think/domains';
|
|
|
|
@Controller('document')
|
|
@UseGuards(DocumentStatusGuard)
|
|
export class DocumentController {
|
|
constructor(private readonly documentService: DocumentService) {}
|
|
|
|
/**
|
|
* 搜索文档
|
|
* @param req
|
|
* @param keyword
|
|
* @returns
|
|
*/
|
|
@UseInterceptors(ClassSerializerInterceptor)
|
|
@Get(DocumentApiDefinition.search.server)
|
|
@HttpCode(HttpStatus.OK)
|
|
@UseGuards(JwtGuard)
|
|
async search(@Request() req, @Param('organizationId') organizationId, @Query('keyword') keyword) {
|
|
return await this.documentService.search(req.user, organizationId, keyword);
|
|
}
|
|
|
|
/**
|
|
* 获取用户最近访问的文档
|
|
* @param req
|
|
* @returns
|
|
*/
|
|
@UseInterceptors(ClassSerializerInterceptor)
|
|
@Get(DocumentApiDefinition.recent.server)
|
|
@HttpCode(HttpStatus.OK)
|
|
@UseGuards(JwtGuard)
|
|
async getWorkspaceDocuments(@Request() req, @Param('organizationId') organizationId) {
|
|
return await this.documentService.getRecentDocuments(req.user, organizationId);
|
|
}
|
|
|
|
/**
|
|
* 新建文档
|
|
*/
|
|
@UseInterceptors(ClassSerializerInterceptor)
|
|
@Post(DocumentApiDefinition.create.server)
|
|
@HttpCode(HttpStatus.CREATED)
|
|
@UseGuards(JwtGuard)
|
|
async createDocument(@Request() req, @Body() dto: CreateDocumentDto) {
|
|
return await this.documentService.createDocument(req.user, dto);
|
|
}
|
|
|
|
/**
|
|
* 获取文档详情
|
|
* @param req
|
|
* @param documentId
|
|
* @returns
|
|
*/
|
|
@UseInterceptors(ClassSerializerInterceptor)
|
|
@Get(DocumentApiDefinition.getDetailById.server)
|
|
@HttpCode(HttpStatus.OK)
|
|
@UseGuards(JwtGuard)
|
|
async getDocumentDetail(@Request() req, @Param('id') documentId) {
|
|
return await this.documentService.getDocumentDetail(req.user, documentId);
|
|
}
|
|
|
|
/**
|
|
* 更新文档
|
|
* @param req
|
|
* @param documentId
|
|
* @param dto
|
|
* @returns
|
|
*/
|
|
@UseInterceptors(ClassSerializerInterceptor)
|
|
@Patch(DocumentApiDefinition.updateById.server)
|
|
@HttpCode(HttpStatus.OK)
|
|
@UseGuards(JwtGuard)
|
|
async updateDocument(@Request() req, @Param('id') documentId, @Body() dto: UpdateDocumentDto) {
|
|
return await this.documentService.updateDocument(req.user, documentId, dto);
|
|
}
|
|
|
|
/**
|
|
* 获取文档版本记录
|
|
* @param req
|
|
* @param documentId
|
|
* @returns
|
|
*/
|
|
@UseInterceptors(ClassSerializerInterceptor)
|
|
@Get(DocumentApiDefinition.getVersionById.server)
|
|
@HttpCode(HttpStatus.OK)
|
|
@UseGuards(JwtGuard)
|
|
async getDocumentVersion(@Request() req, @Param('id') documentId) {
|
|
return await this.documentService.getDocumentVersion(req.user, documentId);
|
|
}
|
|
|
|
/**
|
|
* 导出文档
|
|
* @param req
|
|
* @param documentId
|
|
* @returns
|
|
*/
|
|
@UseInterceptors(ClassSerializerInterceptor)
|
|
@Post(DocumentApiDefinition.exportDocx.server)
|
|
@HttpCode(HttpStatus.OK)
|
|
@UseGuards(JwtGuard)
|
|
async exportDocx(@Body('content') content) {
|
|
return await this.documentService.exportDocx(content);
|
|
}
|
|
|
|
/**
|
|
* 获取文档成员
|
|
* @param req
|
|
* @param documentId
|
|
* @returns
|
|
*/
|
|
@UseInterceptors(ClassSerializerInterceptor)
|
|
@Get(DocumentApiDefinition.getMemberById.server)
|
|
@HttpCode(HttpStatus.OK)
|
|
@UseGuards(JwtGuard)
|
|
async getDocUsers(@Request() req, @Param('id') documentId, @Query() pagination: IPagination) {
|
|
return await this.documentService.getDocUsers(req.user, documentId, pagination);
|
|
}
|
|
|
|
/**
|
|
* 添加文档成员
|
|
* 只有文档创建着才可操作
|
|
* @param req
|
|
* @param dto
|
|
* @returns
|
|
*/
|
|
@UseInterceptors(ClassSerializerInterceptor)
|
|
@Post(DocumentApiDefinition.addMemberById.server)
|
|
@HttpCode(HttpStatus.OK)
|
|
@UseGuards(JwtGuard)
|
|
async addDocUser(@Request() req, @Param('id') documentId, @Body() dto: OperateUserAuthDto) {
|
|
return await this.documentService.addDocUser(req.user, documentId, dto);
|
|
}
|
|
|
|
/**
|
|
* 修改文档成员(一般是权限操作)
|
|
* 只有文档创建着才可操作
|
|
* @param req
|
|
* @param dto
|
|
* @returns
|
|
*/
|
|
@UseInterceptors(ClassSerializerInterceptor)
|
|
@Patch(DocumentApiDefinition.updateMemberById.server)
|
|
@HttpCode(HttpStatus.OK)
|
|
@UseGuards(JwtGuard)
|
|
async updateDocUser(@Request() req, @Param('id') documentId, @Body() dto: OperateUserAuthDto) {
|
|
return await this.documentService.updateDocUser(req.user, documentId, dto);
|
|
}
|
|
|
|
/**
|
|
* 删除文档成员
|
|
* 只有文档创建着才可操作
|
|
* @param req
|
|
* @param dto
|
|
* @returns
|
|
*/
|
|
@UseInterceptors(ClassSerializerInterceptor)
|
|
@Post(DocumentApiDefinition.deleteMemberById.server)
|
|
@HttpCode(HttpStatus.OK)
|
|
@UseGuards(JwtGuard)
|
|
async deleteDocUser(@Request() req, @Param('id') documentId, @Body() dto: OperateUserAuthDto) {
|
|
return await this.documentService.deleteDocUser(req.user, documentId, dto);
|
|
}
|
|
|
|
/**
|
|
* 获取文档下的子文档
|
|
* @param req
|
|
* @param data
|
|
* @returns
|
|
*/
|
|
@UseInterceptors(ClassSerializerInterceptor)
|
|
@Post(DocumentApiDefinition.getChildren.server)
|
|
@HttpCode(HttpStatus.OK)
|
|
@UseGuards(JwtGuard)
|
|
async getChildrenDocuments(@Request() req, @Body() data) {
|
|
return await this.documentService.getChildrenDocuments(req.user, data);
|
|
}
|
|
|
|
/**
|
|
* 删除文档
|
|
* @param req
|
|
* @param documentId
|
|
* @returns
|
|
*/
|
|
@UseInterceptors(ClassSerializerInterceptor)
|
|
@Delete(DocumentApiDefinition.deleteById.server)
|
|
@HttpCode(HttpStatus.OK)
|
|
@UseGuards(JwtGuard)
|
|
async deleteDocument(@Request() req, @Param('id') documentId) {
|
|
return await this.documentService.deleteDocument(req.user, documentId);
|
|
}
|
|
|
|
/**
|
|
* 分享(或关闭分享)文档
|
|
* @param req
|
|
* @param documentId
|
|
* @param dto
|
|
* @returns
|
|
*/
|
|
@UseInterceptors(ClassSerializerInterceptor)
|
|
@Post(DocumentApiDefinition.shareById.server)
|
|
@HttpCode(HttpStatus.OK)
|
|
@UseGuards(JwtGuard)
|
|
async shareDocument(@Request() req, @Param('id') documentId, @Body() dto: ShareDocumentDto) {
|
|
return await this.documentService.shareDocument(req.user, documentId, dto);
|
|
}
|
|
|
|
/**
|
|
* 获取公开文档详情
|
|
* @param req
|
|
* @param documentId
|
|
* @param dto
|
|
* @returns
|
|
*/
|
|
@UseInterceptors(ClassSerializerInterceptor)
|
|
@Post(DocumentApiDefinition.getPublicDetailById.server)
|
|
@CheckDocumentStatus(DocumentStatus.public)
|
|
@HttpCode(HttpStatus.OK)
|
|
async getShareDocumentDetail(@Request() req, @Param('id') documentId, @Body() dto: ShareDocumentDto) {
|
|
return await this.documentService.getPublicDocumentDetail(documentId, dto);
|
|
}
|
|
|
|
/**
|
|
* 获取公开文档的子文档
|
|
* @param data
|
|
* @returns
|
|
*/
|
|
@UseInterceptors(ClassSerializerInterceptor)
|
|
@Post(DocumentApiDefinition.getPublicChildren.server)
|
|
@CheckDocumentStatus(DocumentStatus.public)
|
|
@HttpCode(HttpStatus.OK)
|
|
async getShareChildrenDocuments(@Body() data) {
|
|
return await this.documentService.getShareChildrenDocuments(data);
|
|
}
|
|
}
|