feat: 完成PHP到NestJS的100%功能迁移

- 迁移25个模块,包含95个控制器和160个服务
- 新增验证码管理、登录配置、云编译等模块
- 完善认证授权、会员管理、支付系统等核心功能
- 实现完整的队列系统、配置管理、监控体系
- 确保100%功能对齐和命名一致性
- 支持生产环境部署
This commit is contained in:
万物街
2025-09-10 08:04:28 +08:00
parent a2d6a47601
commit 7a20a0c50a
551 changed files with 35628 additions and 2025 deletions

View File

@@ -0,0 +1,77 @@
import { Controller, Get, Post, Put, Delete, Body, Param, Query, UseGuards } from '@nestjs/common';
import { JwtAuthGuard } from '../../../auth/guards/JwtAuthGuard';
import { RolesGuard } from '../../../auth/guards/RolesGuard';
import { Roles } from '../../../auth/decorators/RolesDecorator';
import { AddonService } from '../../services/admin/AddonService';
import { CreateAddonDto, UpdateAddonDto, QueryAddonDto } from '../../dto/admin/AddonDto';
@Controller('adminapi/addon')
@UseGuards(JwtAuthGuard, RolesGuard)
@Roles('admin')
export class AddonController {
constructor(private readonly addonService: AddonService) {}
/**
* 获取插件列表
*/
@Get('list')
async list(@Query() query: QueryAddonDto) {
return this.addonService.getList(query);
}
/**
* 获取插件详情
*/
@Get('info/:addon_id')
async info(@Param('addon_id') addon_id: number) {
return this.addonService.getInfo(addon_id);
}
/**
* 安装插件
*/
@Post('install')
async install(@Body() dto: CreateAddonDto) {
return this.addonService.install(dto);
}
/**
* 卸载插件
*/
@Post('uninstall/:addon_id')
async uninstall(@Param('addon_id') addon_id: number) {
return this.addonService.uninstall(addon_id);
}
/**
* 更新插件
*/
@Put('update/:addon_id')
async update(@Param('addon_id') addon_id: number, @Body() dto: UpdateAddonDto) {
return this.addonService.update(addon_id, dto);
}
/**
* 启用/禁用插件
*/
@Post('status/:addon_id')
async status(@Param('addon_id') addon_id: number, @Body() dto: { status: number }) {
return this.addonService.updateStatus(addon_id, dto.status);
}
/**
* 获取插件配置
*/
@Get('config/:addon_id')
async getConfig(@Param('addon_id') addon_id: number) {
return this.addonService.getConfig(addon_id);
}
/**
* 保存插件配置
*/
@Post('config/:addon_id')
async saveConfig(@Param('addon_id') addon_id: number, @Body() dto: { config: any }) {
return this.addonService.saveConfig(addon_id, dto.config);
}
}

View File

@@ -0,0 +1,68 @@
import {
Controller,
Get,
Post,
Put,
Delete,
Body,
Param,
Query,
UseGuards,
} from '@nestjs/common';
import { JwtAuthGuard } from '../../../auth/guards/JwtAuthGuard';
import { RolesGuard } from '../../../auth/guards/RolesGuard';
import { AddonService } from '../../services/admin/AddonService';
@Controller('adminapi/addon/upgrade')
@UseGuards(JwtAuthGuard, RolesGuard)
export class UpgradeController {
constructor(private readonly addonService: AddonService) {}
@Post('upgrade/:addon?')
async upgrade(
@Param('addon') addon: string,
@Body() dto: { is_need_backup?: boolean; is_need_cloudbuild?: boolean },
) {
return this.addonService.upgrade(addon, dto);
}
@Post('execute')
async execute() {
return this.addonService.executeUpgrade();
}
@Get('upgrade-content/:addon?')
async getUpgradeContent(@Param('addon') addon: string) {
return this.addonService.getUpgradeContent(addon);
}
@Get('upgrade-task')
async getUpgradeTask() {
return this.addonService.getUpgradeTask();
}
@Get('upgrade-pre-check/:addon?')
async upgradePreCheck(@Param('addon') addon: string) {
return this.addonService.upgradePreCheck(addon);
}
@Post('clear-upgrade-task')
async clearUpgradeTask() {
return this.addonService.clearUpgradeTask(0, 1);
}
@Post('operate/:operate')
async operate(@Param('operate') operate: string) {
return this.addonService.operate(operate);
}
@Get('records')
async getRecords(@Query() dto: { name?: string }) {
return this.addonService.getUpgradeRecords(dto);
}
@Delete('records')
async delRecords(@Body() dto: { ids: string }) {
return this.addonService.delUpgradeRecords(dto.ids);
}
}