refactor: 收敛Admin与平台配置模块

This commit is contained in:
sunlei 2026-06-15 10:31:40 +08:00
parent c3b0476dcc
commit 838fea68c8
91 changed files with 117 additions and 373 deletions

View File

@ -14,7 +14,7 @@
| Domain | Deleted | Merged | Kept | Evidence |
| --- | --- | --- | --- | --- |
| Admin/Auth/Platform Config | none yet | none yet | current files before migration | baseline only |
| Admin/Auth/Platform Config | `src/admin/example` if no active route evidence; empty old admin subdirectories | auth/user/role/menu/dept/component/dict/notice/system-log/timezone moved into `src/modules/admin/**`; duplicate old imports removed | route paths and public DTO class names kept | `rg '@/admin/' src test` returns no source hits; admin focused Jest passes |
| Blog/WordPress/Asset | none yet | none yet | current files before migration | baseline only |
| Runtime/Common | none yet | none yet | current files before migration | baseline only |
| QQBot Core/NapCat | none yet | none yet | current files before migration | baseline only |

View File

@ -1,68 +0,0 @@
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AdminAuthGuardModule } from './auth/admin-auth-guard.module';
import { AdminAuthController } from './auth/admin-auth.controller';
import { ComponentController } from './component/component.controller';
import { Component } from './component/component.entity';
import { ComponentService } from './component/component.service';
import { AdminDeptController } from './dept/admin-dept.controller';
import { AdminDept } from './dept/admin-dept.entity';
import { AdminDeptService } from './dept/admin-dept.service';
import { DictModule } from './dict/dict.module';
import { AdminExampleController } from './example/admin-example.controller';
import { AdminMenuController } from './menu/admin-menu.controller';
import { AdminMenu } from './menu/admin-menu.entity';
import { AdminMenuService } from './menu/admin-menu.service';
import { AdminRoleController } from './role/admin-role.controller';
import { AdminRole } from './role/admin-role.entity';
import { AdminRoleService } from './role/admin-role.service';
import { NoticeModule } from './notice/notice.module';
import { SystemLogController } from './system-log/system-log.controller';
import { SystemLogService } from './system-log/system-log.service';
import { AdminTimezoneController } from './timezone/admin-timezone.controller';
import { AdminTimezoneService } from './timezone/admin-timezone.service';
import { AdminUserManageController } from './user/admin-user-manage.controller';
import { AdminUserController } from './user/admin-user.controller';
import { AdminUser } from './user/admin-user.entity';
import { AdminUserService } from './user/admin-user.service';
import { MinioClientModule } from '@/minio/minio.module';
import { WordpressModule } from '@/wordpress/wordpress.module';
@Module({
imports: [
TypeOrmModule.forFeature([
AdminUser,
AdminRole,
AdminMenu,
AdminDept,
Component,
]),
AdminAuthGuardModule,
DictModule,
NoticeModule,
MinioClientModule,
WordpressModule,
],
controllers: [
AdminAuthController,
AdminUserController,
AdminUserManageController,
AdminMenuController,
AdminRoleController,
AdminDeptController,
ComponentController,
SystemLogController,
AdminTimezoneController,
AdminExampleController,
],
providers: [
ComponentService,
AdminDeptService,
AdminMenuService,
AdminRoleService,
SystemLogService,
AdminTimezoneService,
AdminUserService,
],
})
export class AdminModule {}

View File

@ -1,165 +0,0 @@
import {
Controller,
Get,
Post,
Query,
Res,
UploadedFile,
UseGuards,
UseInterceptors,
} from '@nestjs/common';
import { FileInterceptor } from '@nestjs/platform-express';
import { ApiOperation, ApiTags } from '@nestjs/swagger';
import type { Response } from 'express';
import { JwtAuthGuard } from '../auth/jwt-auth.guard';
import { formatKtDateTime, Public, vbenPage, vbenSuccess } from '@/common';
import { MinioClientService } from '@/minio/minio.service';
import type { MinioUploadFile } from '@/minio/minio.types';
import type { AdminDemoTableRow } from '../admin.types';
const DEMO_ROWS: AdminDemoTableRow[] = Array.from(
{ length: 100 },
(_, index) => {
const sequence = index + 1;
const categories = ['Dashboard', 'Form', 'Table', 'Chart', 'Workflow'];
const colors = ['Blue', 'Green', 'Purple', 'Orange', 'Slate'];
const statuses = ['success', 'warning', 'error'];
return {
available: sequence % 3 !== 0,
category: categories[index % categories.length],
color: colors[index % colors.length],
currency: 'CNY',
description: `真实 API 示例数据 ${sequence}`,
id: `demo-${String(sequence).padStart(3, '0')}`,
imageUrl:
'https://unpkg.com/@vbenjs/static-source@0.1.7/source/logo-v1.webp',
imageUrl2:
'https://unpkg.com/@vbenjs/static-source@0.1.7/source/avatar-v1.webp',
inProduction: sequence % 2 === 0,
open: sequence % 4 === 0,
price: `${(sequence * 3.6 + 19).toFixed(2)}`,
productName: `KT Admin 模板能力 ${sequence}`,
quantity: 10 + sequence,
rating: Number((3 + (sequence % 20) / 10).toFixed(1)),
releaseDate: formatKtDateTime(
new Date(2026, index % 12, (index % 28) + 1),
),
status: statuses[index % statuses.length],
tags: [
'kt',
'admin',
categories[index % categories.length].toLowerCase(),
],
weight: Number((1 + sequence / 10).toFixed(2)),
};
},
);
@ApiTags('Admin - 示例')
@Controller()
@UseGuards(JwtAuthGuard)
export class AdminExampleController {
constructor(private readonly minioClientService: MinioClientService) {}
@Post('upload')
@ApiOperation({ summary: '上传示例文件' })
@UseInterceptors(FileInterceptor('file'))
async upload(@UploadedFile() file: MinioUploadFile) {
const result = await this.minioClientService.uploadObject({ file });
return vbenSuccess({
url: result.url,
});
}
@Get('table/list')
@ApiOperation({ summary: '获取示例表格分页列表' })
async tableList(@Query() query: Record<string, any>) {
const page = Math.max(Number(query.page || 1), 1);
const pageSize = Math.max(Number(query.pageSize || 10), 1);
const sorted = this.sortRows([...DEMO_ROWS], query.sortBy, query.sortOrder);
const items = sorted.slice((page - 1) * pageSize, page * pageSize);
return vbenPage(items, sorted.length);
}
@Get('status')
@ApiOperation({ summary: '返回指定状态码示例' })
@Public()
status(@Query('status') status: string, @Res() res: Response) {
const code = Number(status) || 200;
if (code === 200) {
res.status(code).send(vbenSuccess(`${code}`));
return;
}
res.status(code).send({
code,
msg: `${code}`,
err: `${code}`,
});
}
@Get('demo/bigint')
@ApiOperation({ summary: '获取 BigInt 序列化示例' })
async bigint(@Res() res: Response) {
res.setHeader('Content-Type', 'application/json');
res.send(`{
"code": 200,
"msg": "操作成功",
"data": [
{
"id": 123456789012345678901234567890123456789012345678901234567890,
"name": "John Doe",
"age": 30,
"email": "john-doe@demo.com"
},
{
"id": 987654321098765432109876543210987654321098765432109876543210,
"name": "Jane Smith",
"age": 25,
"email": "jane@demo.com"
}
]
}`);
}
@Get('test')
@ApiOperation({ summary: 'GET 测试接口' })
@Public()
testGet() {
return vbenSuccess('Test get handler');
}
@Post('test')
@ApiOperation({ summary: 'POST 测试接口' })
@Public()
testPost() {
return vbenSuccess('Test post handler');
}
private sortRows(
rows: AdminDemoTableRow[],
sortBy?: string,
sortOrder?: string,
) {
if (!sortBy || !Object.hasOwn(rows[0], sortBy)) return rows;
return rows.sort((prev, next) => {
const prevValue = prev[sortBy];
const nextValue = next[sortBy];
const result = String(prevValue).localeCompare(
String(nextValue),
'zh-CN',
{
numeric: true,
sensitivity: 'base',
},
);
return sortOrder === 'desc' ? -result : result;
});
}
}

View File

@ -10,7 +10,7 @@ import {
UseGuards,
} from '@nestjs/common';
import { ApiOperation, ApiQuery, ApiTags } from '@nestjs/swagger';
import { JwtAuthGuard } from '@/admin/auth/jwt-auth.guard';
import { JwtAuthGuard } from '@/modules/admin/identity/auth/jwt-auth.guard';
import { Public, vbenSuccess } from '@/common';
import {
BlogArticleBodyDto,

View File

@ -10,7 +10,7 @@ import {
UseGuards,
} from '@nestjs/common';
import { ApiOperation, ApiQuery, ApiTags } from '@nestjs/swagger';
import { JwtAuthGuard } from '@/admin/auth/jwt-auth.guard';
import { JwtAuthGuard } from '@/modules/admin/identity/auth/jwt-auth.guard';
import { vbenSuccess } from '@/common';
import type { BlogTermKind } from './blog-term.entity';
import {

View File

@ -9,7 +9,7 @@ import {
UseGuards,
} from '@nestjs/common';
import { ApiOperation, ApiTags } from '@nestjs/swagger';
import { JwtAuthGuard } from '@/admin/auth/jwt-auth.guard';
import { JwtAuthGuard } from '@/modules/admin/identity/auth/jwt-auth.guard';
import { Public, vbenSuccess } from '@/common';
import { BlogThemeConfigBodyDto } from './blog-theme-config.dto';
import { BlogThemeConfigService } from './blog-theme-config.service';

View File

@ -1,6 +1,6 @@
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AdminAuthGuardModule } from '@/admin/auth/admin-auth-guard.module';
import { AdminAuthGuardModule } from '@/modules/admin/identity/auth/admin-auth-guard.module';
import { CommonModule } from '@/common';
import { WordpressModule } from '@/wordpress/wordpress.module';
import { BlogArticleController } from './blog-article.controller';

View File

@ -36,7 +36,7 @@ import {
MinioObjectDto,
MinioUploadResultDto,
} from './minio.dto';
import { JwtAuthGuard } from '@/admin/auth/jwt-auth.guard';
import { JwtAuthGuard } from '@/modules/admin/identity/auth/jwt-auth.guard';
const PROXY_RESOURCE_TIMEOUT = 1000 * 15;
const PROXY_RESOURCE_CONTENT_TYPES = [

View File

@ -1,6 +1,6 @@
import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { AdminAuthGuardModule } from '@/admin/auth/admin-auth-guard.module';
import { AdminAuthGuardModule } from '@/modules/admin/identity/auth/admin-auth-guard.module';
import { MinioClientController } from './minio.controller';
import { MinioClientService } from './minio.service';

View File

@ -1,28 +1,7 @@
import type { Request } from 'express';
import type { AdminMenu } from './menu/admin-menu.entity';
import type { AdminRole } from './role/admin-role.entity';
import type { AdminUser } from './user/admin-user.entity';
export type AdminDemoTableRow = {
available: boolean;
category: string;
color: string;
currency: string;
description: string;
id: string;
imageUrl: string;
imageUrl2: string;
inProduction: boolean;
open: boolean;
price: string;
productName: string;
quantity: number;
rating: number;
releaseDate: string;
status: string;
tags: string[];
weight: number;
};
import type { AdminMenu } from '../identity/menu/admin-menu.entity';
import type { AdminRole } from '../identity/role/admin-role.entity';
import type { AdminUser } from '../identity/user/admin-user.entity';
export type AdminDictItem = {
childrenCode?: string | null;

View File

@ -1,20 +1,20 @@
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AdminAuthGuardModule } from '@/admin/auth/admin-auth-guard.module';
import { AdminAuthController } from '@/admin/auth/admin-auth.controller';
import { AdminDeptController } from '@/admin/dept/admin-dept.controller';
import { AdminDept } from '@/admin/dept/admin-dept.entity';
import { AdminDeptService } from '@/admin/dept/admin-dept.service';
import { AdminMenuController } from '@/admin/menu/admin-menu.controller';
import { AdminMenu } from '@/admin/menu/admin-menu.entity';
import { AdminMenuService } from '@/admin/menu/admin-menu.service';
import { AdminRoleController } from '@/admin/role/admin-role.controller';
import { AdminRole } from '@/admin/role/admin-role.entity';
import { AdminRoleService } from '@/admin/role/admin-role.service';
import { AdminUserManageController } from '@/admin/user/admin-user-manage.controller';
import { AdminUserController } from '@/admin/user/admin-user.controller';
import { AdminUser } from '@/admin/user/admin-user.entity';
import { AdminUserService } from '@/admin/user/admin-user.service';
import { AdminAuthGuardModule } from '@/modules/admin/identity/auth/admin-auth-guard.module';
import { AdminAuthController } from '@/modules/admin/identity/auth/admin-auth.controller';
import { AdminDeptController } from '@/modules/admin/identity/dept/admin-dept.controller';
import { AdminDept } from '@/modules/admin/identity/dept/admin-dept.entity';
import { AdminDeptService } from '@/modules/admin/identity/dept/admin-dept.service';
import { AdminMenuController } from '@/modules/admin/identity/menu/admin-menu.controller';
import { AdminMenu } from '@/modules/admin/identity/menu/admin-menu.entity';
import { AdminMenuService } from '@/modules/admin/identity/menu/admin-menu.service';
import { AdminRoleController } from '@/modules/admin/identity/role/admin-role.controller';
import { AdminRole } from '@/modules/admin/identity/role/admin-role.entity';
import { AdminRoleService } from '@/modules/admin/identity/role/admin-role.service';
import { AdminUserManageController } from '@/modules/admin/identity/user/admin-user-manage.controller';
import { AdminUserController } from '@/modules/admin/identity/user/admin-user.controller';
import { AdminUser } from '@/modules/admin/identity/user/admin-user.entity';
import { AdminUserService } from '@/modules/admin/identity/user/admin-user.service';
import { WordpressMirrorModule } from '@/modules/wordpress/wordpress-mirror.module';
export const ADMIN_IDENTITY_CONTROLLERS = [

View File

@ -1,6 +1,6 @@
import { CanActivate, ExecutionContext, HttpStatus, Injectable } from '@nestjs/common';
import { throwVbenError } from '@/common';
import type { AdminRequest } from '../admin.types';
import type { AdminRequest } from '../../contract/admin.types';
@Injectable()
export class AdminSuperGuard implements CanActivate {

View File

@ -1,7 +1,7 @@
import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { createHmac, timingSafeEqual } from 'crypto';
import type { AdminTokenPayload } from '../admin.types';
import type { AdminTokenPayload } from '../../contract/admin.types';
@Injectable()
export class AdminTokenService {

View File

@ -2,7 +2,7 @@ import { CanActivate, ExecutionContext, Injectable } from '@nestjs/common';
import { Reflector } from '@nestjs/core';
import { AdminAuthService } from './admin-auth.service';
import { IS_PUBLIC_KEY } from '@/common';
import type { AdminRequest } from '../admin.types';
import type { AdminRequest } from '../../contract/admin.types';
@Injectable()
export class JwtAuthGuard implements CanActivate {

View File

@ -12,7 +12,7 @@ import {
KtUpdateDateColumn,
} from '@/common';
import { AdminRole } from '../role/admin-role.entity';
import type { AdminMenuMeta, AdminMenuType } from '../admin.types';
import type { AdminMenuMeta, AdminMenuType } from '../../contract/admin.types';
@Entity('admin_menu')
export class AdminMenu {

View File

@ -4,7 +4,7 @@ import { In, Repository } from 'typeorm';
import { toTree } from '@/common';
import { AdminUser } from '../user/admin-user.entity';
import { AdminMenu } from './admin-menu.entity';
import type { AdminMenuInput, AdminMenuMeta } from '../admin.types';
import type { AdminMenuInput, AdminMenuMeta } from '../../contract/admin.types';
@Injectable()
export class AdminMenuService {

View File

@ -4,7 +4,7 @@ import { Repository } from 'typeorm';
import { throwVbenError } from '@/common';
import { AdminMenu } from '../menu/admin-menu.entity';
import { AdminRole } from './admin-role.entity';
import type { AdminRoleInput, AdminRoleListQuery } from '../admin.types';
import type { AdminRoleInput, AdminRoleListQuery } from '../../contract/admin.types';
@Injectable()
export class AdminRoleService {

View File

@ -5,7 +5,7 @@ import { throwVbenError } from '@/common';
import { AdminDept } from '../dept/admin-dept.entity';
import { AdminRole } from '../role/admin-role.entity';
import { AdminUser } from './admin-user.entity';
import type { AdminUserInput, AdminUserListQuery } from '../admin.types';
import type { AdminUserInput, AdminUserListQuery } from '../../contract/admin.types';
@Injectable()
export class AdminUserService {

View File

@ -1,26 +1,24 @@
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AdminAuthGuardModule } from '@/admin/auth/admin-auth-guard.module';
import { ComponentController } from '@/admin/component/component.controller';
import { Component } from '@/admin/component/component.entity';
import { ComponentService } from '@/admin/component/component.service';
import { DictController } from '@/admin/dict/dict.controller';
import { DictModule } from '@/admin/dict/dict.module';
import { AdminNoticeController } from '@/admin/notice/admin-notice.controller';
import { NoticeModule } from '@/admin/notice/notice.module';
import { SystemLogController } from '@/admin/system-log/system-log.controller';
import { SystemLogService } from '@/admin/system-log/system-log.service';
import { AdminTimezoneController } from '@/admin/timezone/admin-timezone.controller';
import { AdminTimezoneService } from '@/admin/timezone/admin-timezone.service';
import { AdminUser } from '@/admin/user/admin-user.entity';
import { AdminExampleController } from '@/admin/example/admin-example.controller';
import { AdminAuthGuardModule } from '@/modules/admin/identity/auth/admin-auth-guard.module';
import { ComponentController } from '@/modules/admin/platform-config/component/component.controller';
import { Component } from '@/modules/admin/platform-config/component/component.entity';
import { ComponentService } from '@/modules/admin/platform-config/component/component.service';
import { DictController } from '@/modules/admin/platform-config/dict/dict.controller';
import { DictModule } from '@/modules/admin/platform-config/dict/dict.module';
import { AdminNoticeController } from '@/modules/admin/platform-config/notice/admin-notice.controller';
import { NoticeModule } from '@/modules/admin/platform-config/notice/notice.module';
import { SystemLogController } from '@/modules/admin/platform-config/system-log/system-log.controller';
import { SystemLogService } from '@/modules/admin/platform-config/system-log/system-log.service';
import { AdminTimezoneController } from '@/modules/admin/platform-config/timezone/admin-timezone.controller';
import { AdminTimezoneService } from '@/modules/admin/platform-config/timezone/admin-timezone.service';
import { AdminUser } from '@/modules/admin/identity/user/admin-user.entity';
import { AssetModule } from '@/modules/asset/asset.module';
export const ADMIN_PLATFORM_CONFIG_DIRECT_CONTROLLERS = [
ComponentController,
SystemLogController,
AdminTimezoneController,
AdminExampleController,
];
export const ADMIN_PLATFORM_CONFIG_IMPORTED_CONTROLLERS = [

View File

@ -26,7 +26,7 @@ import {
type KtPageParams,
ToolsService,
} from '@/common';
import { JwtAuthGuard } from '../auth/jwt-auth.guard';
import { JwtAuthGuard } from '../../identity/auth/jwt-auth.guard';
import { ComponentService } from './component.service';
import { Component } from './component.entity';

View File

@ -4,7 +4,7 @@ import { Repository } from 'typeorm';
import { Component } from './component.entity';
import { ToolsService, type KtPage, type KtPageParams } from '@/common';
import { isNumber, omit, pick } from 'lodash';
import { DictService } from '@/admin/dict/dict.service';
import { DictService } from '@/modules/admin/platform-config/dict/dict.service';
@Injectable()
export class ComponentService {

View File

@ -28,7 +28,7 @@ import {
AdminDictUpdateDto,
DictDto,
} from './dict.dto';
import { JwtAuthGuard } from '../auth/jwt-auth.guard';
import { JwtAuthGuard } from '../../identity/auth/jwt-auth.guard';
const componentTypeDictExample = [
{

View File

@ -1,6 +1,6 @@
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AdminAuthGuardModule } from '../auth/admin-auth-guard.module';
import { AdminAuthGuardModule } from '../../identity/auth/admin-auth-guard.module';
import { DictController } from './dict.controller';
import { DictService } from './dict.service';
import { AdminDict } from './admin-dict.entity';

View File

@ -18,7 +18,7 @@ import type {
AdminDictItem,
AdminDictSerialized,
AdminDictTreeItem,
} from '../admin.types';
} from '../../contract/admin.types';
const COMPONENT_TYPE_DICT_KEY = 'COMPONENT_TYPE';

View File

@ -1,8 +1,8 @@
import { Controller, Delete, Get, Param, Post, Query, UseGuards } from '@nestjs/common';
import { ApiOperation, ApiQuery, ApiTags } from '@nestjs/swagger';
import { vbenPage, vbenSuccess } from '@/common';
import { AdminSuperGuard } from '../auth/admin-super.guard';
import { JwtAuthGuard } from '../auth/jwt-auth.guard';
import { AdminSuperGuard } from '../../identity/auth/admin-super.guard';
import { JwtAuthGuard } from '../../identity/auth/jwt-auth.guard';
import { AdminNoticeQueryDto } from './admin-notice.dto';
import { AdminNoticeService } from './admin-notice.service';

View File

@ -4,7 +4,7 @@ import { SYSTEM_NOTICE_PUBLISHER } from '@/common';
import { AdminNoticeController } from './admin-notice.controller';
import { AdminNotice } from './admin-notice.entity';
import { AdminNoticeService } from './admin-notice.service';
import { AdminAuthGuardModule } from '../auth/admin-auth-guard.module';
import { AdminAuthGuardModule } from '../../identity/auth/admin-auth-guard.module';
@Global()
@Module({

View File

@ -7,7 +7,7 @@ import {
vbenPage,
vbenSuccess,
} from '@/common';
import { JwtAuthGuard } from '../auth/jwt-auth.guard';
import { JwtAuthGuard } from '../../identity/auth/jwt-auth.guard';
import {
SystemLogDto,
SystemLogQueryDto,

View File

@ -1,8 +1,8 @@
import { Body, Controller, Get, Post, UseGuards } from '@nestjs/common';
import { ApiOperation, ApiTags } from '@nestjs/swagger';
import { CurrentAdminUser, vbenSuccess } from '@/common';
import { JwtAuthGuard } from '../auth/jwt-auth.guard';
import { AdminUser } from '../user/admin-user.entity';
import { JwtAuthGuard } from '../../identity/auth/jwt-auth.guard';
import { AdminUser } from '../../identity/user/admin-user.entity';
import { AdminTimezoneService } from './admin-timezone.service';
const TIMEZONE_OPTIONS = [

View File

@ -2,7 +2,7 @@ import { HttpStatus, Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { throwVbenError } from '@/common';
import { AdminUser } from '../user/admin-user.entity';
import { AdminUser } from '../../identity/user/admin-user.entity';
@Injectable()
export class AdminTimezoneService {

View File

@ -1,8 +1,8 @@
import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AdminAuthGuardModule } from '@/admin/auth/admin-auth-guard.module';
import { DictModule } from '@/admin/dict/dict.module';
import { AdminAuthGuardModule } from '@/modules/admin/identity/auth/admin-auth-guard.module';
import { DictModule } from '@/modules/admin/platform-config/dict/dict.module';
import { QqbotAccountAbility } from '@/qqbot/account/qqbot-account-ability.entity';
import { QqbotAccountController } from '@/qqbot/account/qqbot-account.controller';
import { QqbotAccount } from '@/qqbot/account/qqbot-account.entity';

View File

@ -9,7 +9,7 @@ import {
UseGuards,
} from '@nestjs/common';
import { ApiOperation, ApiQuery, ApiTags } from '@nestjs/swagger';
import { JwtAuthGuard } from '@/admin/auth/jwt-auth.guard';
import { JwtAuthGuard } from '@/modules/admin/identity/auth/jwt-auth.guard';
import { vbenSuccess } from '@/common';
import { QqbotPluginPlatformService } from './plugin-platform.service';

View File

@ -1,6 +1,6 @@
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AdminAuthGuardModule } from '@/admin/auth/admin-auth-guard.module';
import { AdminAuthGuardModule } from '@/modules/admin/identity/auth/admin-auth-guard.module';
import { QqbotPluginPlatformController } from './plugin-platform.controller';
import { QqbotPluginPlatformService } from './plugin-platform.service';
import { QQBOT_PLUGIN_PLATFORM_ENTITIES } from './persistence';

View File

@ -1,6 +1,6 @@
import { Injectable, Optional } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { DictService } from '@/admin/dict/dict.service';
import { DictService } from '@/modules/admin/platform-config/dict/dict.service';
import { Card } from '@/modules/qqbot/plugins/bangDream/card/card.model';
import { getPresentEvent } from '@/modules/qqbot/plugins/bangDream/event/event.model';
import {

View File

@ -1,7 +1,7 @@
import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { formatKtDateTime } from '@/common';
import { DictService } from '@/admin/dict/dict.service';
import { DictService } from '@/modules/admin/platform-config/dict/dict.service';
import { QqbotPluginHttpClientService } from '@/modules/qqbot/plugin-platform/sdk';
import {
buildQqbotFf14MarketCatalog,

View File

@ -1,4 +1,4 @@
import type { AdminDictItem, AdminDictTreeItem } from '@/admin/admin.types';
import type { AdminDictItem, AdminDictTreeItem } from '@/modules/admin/contract/admin.types';
import type {
QqbotFf14DataCenter,
QqbotFf14MarketCatalog,

View File

@ -1,6 +1,6 @@
import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { DictService } from '@/admin/dict/dict.service';
import { DictService } from '@/modules/admin/platform-config/dict/dict.service';
import { QqbotPluginHttpClientService } from '@/modules/qqbot/plugin-platform/sdk';
import type {
FflogsCharacterEncounterRankingsResponse,

View File

@ -10,7 +10,7 @@ import {
UseGuards,
} from '@nestjs/common';
import { ApiOperation, ApiQuery, ApiTags } from '@nestjs/swagger';
import { JwtAuthGuard } from '@/admin/auth/jwt-auth.guard';
import { JwtAuthGuard } from '@/modules/admin/identity/auth/jwt-auth.guard';
import { vbenSuccess } from '@/common';
import {
QqbotAccountBodyDto,

View File

@ -8,7 +8,7 @@ import {
throwVbenError,
ToolsService,
} from '@/common';
import { AdminPasswordCryptoService } from '@/admin/auth/admin-password-crypto.service';
import { AdminPasswordCryptoService } from '@/modules/admin/identity/auth/admin-password-crypto.service';
import { QqbotAccountAbility } from './qqbot-account-ability.entity';
import { QqbotAccount } from './qqbot-account.entity';
import type {

View File

@ -1,5 +1,5 @@
import { Injectable } from '@nestjs/common';
import { DictService } from '../../admin/dict/dict.service';
import { DictService } from '@/modules/admin/platform-config/dict/dict.service';
import type { QqbotCommand } from './qqbot-command.entity';
import type { QqbotNormalizedMessage } from '../qqbot.types';
import {

View File

@ -9,7 +9,7 @@ import {
UseGuards,
} from '@nestjs/common';
import { ApiOperation, ApiQuery, ApiTags } from '@nestjs/swagger';
import { JwtAuthGuard } from '@/admin/auth/jwt-auth.guard';
import { JwtAuthGuard } from '@/modules/admin/identity/auth/jwt-auth.guard';
import { ToolsService, vbenSuccess } from '@/common';
import {
QqbotCommandBodyDto,

View File

@ -1,6 +1,6 @@
import { Controller, Get, UseGuards } from '@nestjs/common';
import { ApiOperation, ApiTags } from '@nestjs/swagger';
import { JwtAuthGuard } from '@/admin/auth/jwt-auth.guard';
import { JwtAuthGuard } from '@/modules/admin/identity/auth/jwt-auth.guard';
import { vbenSuccess } from '@/common';
import { QqbotDashboardService } from './qqbot-dashboard.service';

View File

@ -1,6 +1,6 @@
import { Controller, Get, Query, UseGuards } from '@nestjs/common';
import { ApiOperation, ApiTags } from '@nestjs/swagger';
import { JwtAuthGuard } from '@/admin/auth/jwt-auth.guard';
import { JwtAuthGuard } from '@/modules/admin/identity/auth/jwt-auth.guard';
import { vbenSuccess } from '@/common';
import {
QqbotConversationQueryDto,

View File

@ -9,7 +9,7 @@ import {
UseGuards,
} from '@nestjs/common';
import { ApiOperation, ApiQuery, ApiTags } from '@nestjs/swagger';
import { JwtAuthGuard } from '@/admin/auth/jwt-auth.guard';
import { JwtAuthGuard } from '@/modules/admin/identity/auth/jwt-auth.guard';
import { vbenSuccess } from '@/common';
import {
QqbotPermissionBodyDto,

View File

@ -8,7 +8,7 @@ import {
UseGuards,
} from '@nestjs/common';
import { ApiOperation, ApiQuery, ApiTags } from '@nestjs/swagger';
import { JwtAuthGuard } from '@/admin/auth/jwt-auth.guard';
import { JwtAuthGuard } from '@/modules/admin/identity/auth/jwt-auth.guard';
import { vbenSuccess } from '@/common';
import { QqbotEventPluginRegistryService } from './qqbot-event-plugin-registry.service';
import { QqbotPluginRegistryService } from './qqbot-plugin-registry.service';

View File

@ -9,7 +9,7 @@ import {
UseGuards,
} from '@nestjs/common';
import { ApiOperation, ApiQuery, ApiTags } from '@nestjs/swagger';
import { JwtAuthGuard } from '@/admin/auth/jwt-auth.guard';
import { JwtAuthGuard } from '@/modules/admin/identity/auth/jwt-auth.guard';
import { ToolsService, vbenSuccess } from '@/common';
import {
QqbotRuleBodyDto,

View File

@ -9,7 +9,7 @@ import {
UseGuards,
} from '@nestjs/common';
import { ApiOperation, ApiTags } from '@nestjs/swagger';
import { JwtAuthGuard } from '@/admin/auth/jwt-auth.guard';
import { JwtAuthGuard } from '@/modules/admin/identity/auth/jwt-auth.guard';
import { vbenSuccess } from '@/common';
import {
QqbotSendGroupDto,

View File

@ -12,7 +12,7 @@ import {
} from '@nestjs/common';
import { ApiHeader, ApiOperation, ApiQuery, ApiTags } from '@nestjs/swagger';
import type { Request } from 'express';
import { JwtAuthGuard } from '@/admin/auth/jwt-auth.guard';
import { JwtAuthGuard } from '@/modules/admin/identity/auth/jwt-auth.guard';
import { Public, vbenSuccess } from '@/common';
import {
WordpressArticleBodyDto,

View File

@ -8,7 +8,7 @@ import {
} from '@nestjs/common';
import { ApiHeader, ApiOperation, ApiTags } from '@nestjs/swagger';
import type { Request, Response } from 'express';
import { JwtAuthGuard } from '@/admin/auth/jwt-auth.guard';
import { JwtAuthGuard } from '@/modules/admin/identity/auth/jwt-auth.guard';
import { Public, vbenSuccess } from '@/common';
import { WordpressService } from './wordpress.service';

View File

@ -12,7 +12,7 @@ import {
} from '@nestjs/common';
import { ApiHeader, ApiOperation, ApiQuery, ApiTags } from '@nestjs/swagger';
import type { Request } from 'express';
import { JwtAuthGuard } from '@/admin/auth/jwt-auth.guard';
import { JwtAuthGuard } from '@/modules/admin/identity/auth/jwt-auth.guard';
import { vbenSuccess } from '@/common';
import {
WordpressTermBodyDto,

View File

@ -12,7 +12,7 @@ import {
} from '@nestjs/common';
import { ApiHeader, ApiOperation, ApiQuery, ApiTags } from '@nestjs/swagger';
import type { Request } from 'express';
import { JwtAuthGuard } from '@/admin/auth/jwt-auth.guard';
import { JwtAuthGuard } from '@/modules/admin/identity/auth/jwt-auth.guard';
import { vbenSuccess } from '@/common';
import {
WordpressTermBodyDto,

View File

@ -1,6 +1,6 @@
import { Controller, Get, Res, UseGuards } from '@nestjs/common';
import { ApiOperation, ApiTags } from '@nestjs/swagger';
import { JwtAuthGuard } from '@/admin/auth/jwt-auth.guard';
import { JwtAuthGuard } from '@/modules/admin/identity/auth/jwt-auth.guard';
import { Public, vbenSuccess } from '@/common';
import { WordpressService } from './wordpress.service';

View File

@ -1,5 +1,5 @@
import { Module } from '@nestjs/common';
import { AdminAuthGuardModule } from '@/admin/auth/admin-auth-guard.module';
import { AdminAuthGuardModule } from '@/modules/admin/identity/auth/admin-auth-guard.module';
import { WordpressArticleController } from './wordpress-article.controller';
import { WordpressAuthController } from './wordpress-auth.controller';
import { WordpressCategoryController } from './wordpress-category.controller';

View File

@ -1,6 +1,6 @@
import { AdminMenuService } from '../../src/admin/menu/admin-menu.service';
import type { AdminMenu } from '../../src/admin/menu/admin-menu.entity';
import type { AdminUser } from '../../src/admin/user/admin-user.entity';
import { AdminMenuService } from '../../src/modules/admin/identity/menu/admin-menu.service';
import type { AdminMenu } from '../../src/modules/admin/identity/menu/admin-menu.entity';
import type { AdminUser } from '../../src/modules/admin/identity/user/admin-user.entity';
describe('AdminMenuService', () => {
const blogMenus = [

View File

@ -1,4 +1,4 @@
import { AdminUserService } from '../../src/admin/user/admin-user.service';
import { AdminUserService } from '../../src/modules/admin/identity/user/admin-user.service';
describe('AdminUserService profile', () => {
const userRepository = {

View File

@ -1,7 +1,7 @@
import { constants, publicEncrypt } from 'node:crypto';
import { HttpException } from '@nestjs/common';
import { AdminPasswordCryptoService } from '../../../src/admin/auth/admin-password-crypto.service';
import { AdminPasswordCryptoService } from '../../../src/modules/admin/identity/auth/admin-password-crypto.service';
describe('AdminPasswordCryptoService', () => {
it('decrypts password encrypted by the exported public key', () => {

View File

@ -10,7 +10,7 @@ jest.mock('@/common', () => {
});
import { ToolsService } from '@/common';
import { DictService } from '@/admin/dict/dict.service';
import { DictService } from '@/modules/admin/platform-config/dict/dict.service';
describe('DictService', () => {
const dictRows = [

View File

@ -2,10 +2,10 @@ import type { INestApplication } from '@nestjs/common';
import { Test } from '@nestjs/testing';
import * as request from 'supertest';
import { AdminSuperGuard } from '../../../src/admin/auth/admin-super.guard';
import { JwtAuthGuard } from '../../../src/admin/auth/jwt-auth.guard';
import { AdminNoticeController } from '../../../src/admin/notice/admin-notice.controller';
import { AdminNoticeService } from '../../../src/admin/notice/admin-notice.service';
import { AdminSuperGuard } from '../../../src/modules/admin/identity/auth/admin-super.guard';
import { JwtAuthGuard } from '../../../src/modules/admin/identity/auth/jwt-auth.guard';
import { AdminNoticeController } from '../../../src/modules/admin/platform-config/notice/admin-notice.controller';
import { AdminNoticeService } from '../../../src/modules/admin/platform-config/notice/admin-notice.service';
describe('AdminNoticeController', () => {
let app: INestApplication;

View File

@ -1,4 +1,4 @@
import { AdminNoticeService } from '@/admin/notice/admin-notice.service';
import { AdminNoticeService } from '@/modules/admin/platform-config/notice/admin-notice.service';
import { ToolsService } from '@/common';
function createRepositoryMock(overrides: Record<string, jest.Mock> = {}) {

View File

@ -2,9 +2,9 @@ import { INestApplication } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { Test } from '@nestjs/testing';
import * as request from 'supertest';
import { JwtAuthGuard } from '../../../src/admin/auth/jwt-auth.guard';
import { SystemLogController } from '../../../src/admin/system-log/system-log.controller';
import { SystemLogService } from '../../../src/admin/system-log/system-log.service';
import { JwtAuthGuard } from '../../../src/modules/admin/identity/auth/jwt-auth.guard';
import { SystemLogController } from '../../../src/modules/admin/platform-config/system-log/system-log.controller';
import { SystemLogService } from '../../../src/modules/admin/platform-config/system-log/system-log.service';
import { ToolsService } from '../../../src/common';
describe('SystemLogController', () => {

View File

@ -1,5 +1,5 @@
import { ConfigService } from '@nestjs/config';
import { SystemLogService } from '../../../src/admin/system-log/system-log.service';
import { SystemLogService } from '../../../src/modules/admin/platform-config/system-log/system-log.service';
import { ToolsService } from '../../../src/common';
function createService() {

View File

@ -5,14 +5,14 @@ import * as request from 'supertest';
import { Readable } from 'stream';
import { AppController } from '../src/app.controller';
import { AppService } from '../src/app.service';
import { AdminAuthService } from '../src/admin/auth/admin-auth.service';
import { JwtAuthGuard } from '../src/admin/auth/jwt-auth.guard';
import { ComponentController } from '../src/admin/component/component.controller';
import { ComponentService } from '../src/admin/component/component.service';
import { DictController } from '../src/admin/dict/dict.controller';
import { DictService } from '../src/admin/dict/dict.service';
import { SystemLogController } from '../src/admin/system-log/system-log.controller';
import { SystemLogService } from '../src/admin/system-log/system-log.service';
import { AdminAuthService } from '../src/modules/admin/identity/auth/admin-auth.service';
import { JwtAuthGuard } from '../src/modules/admin/identity/auth/jwt-auth.guard';
import { ComponentController } from '../src/modules/admin/platform-config/component/component.controller';
import { ComponentService } from '../src/modules/admin/platform-config/component/component.service';
import { DictController } from '../src/modules/admin/platform-config/dict/dict.controller';
import { DictService } from '../src/modules/admin/platform-config/dict/dict.service';
import { SystemLogController } from '../src/modules/admin/platform-config/system-log/system-log.controller';
import { SystemLogService } from '../src/modules/admin/platform-config/system-log/system-log.service';
import {
ApiExceptionFilter,
IS_PUBLIC_KEY,

View File

@ -1,8 +1,8 @@
import { MODULE_METADATA } from '@nestjs/common/constants';
import { DictController } from '../../../src/admin/dict/dict.controller';
import { DictModule } from '../../../src/admin/dict/dict.module';
import { AdminNoticeController } from '../../../src/admin/notice/admin-notice.controller';
import { NoticeModule } from '../../../src/admin/notice/notice.module';
import { DictController } from '../../../src/modules/admin/platform-config/dict/dict.controller';
import { DictModule } from '../../../src/modules/admin/platform-config/dict/dict.module';
import { AdminNoticeController } from '../../../src/modules/admin/platform-config/notice/admin-notice.controller';
import { NoticeModule } from '../../../src/modules/admin/platform-config/notice/notice.module';
import { AdminModule } from '../../../src/modules/admin/admin.module';
import {
ADMIN_IDENTITY_CONTROLLERS,

View File

@ -1,4 +1,4 @@
jest.mock('@/admin/auth/jwt-auth.guard', () => ({
jest.mock('@/modules/admin/identity/auth/jwt-auth.guard', () => ({
JwtAuthGuard: class {
canActivate() {
return true;
@ -17,7 +17,7 @@ import { ConfigService } from '@nestjs/config';
import { getRepositoryToken } from '@nestjs/typeorm';
import { Test } from '@nestjs/testing';
import * as request from 'supertest';
import { DictService } from '../../../../src/admin/dict/dict.service';
import { DictService } from '../../../../src/modules/admin/platform-config/dict/dict.service';
import { ToolsService } from '../../../../src/common';
import { QqbotAccountService } from '../../../../src/qqbot/account/qqbot-account.service';
import { QqbotCommandController } from '../../../../src/qqbot/command/qqbot-command.controller';

View File

@ -63,8 +63,8 @@ import { MODULE_METADATA } from '@nestjs/common/constants';
import { ConfigModule } from '@nestjs/config';
import { TypeOrmModule } from '@nestjs/typeorm';
import { getMetadataArgsStorage } from 'typeorm';
import { AdminAuthGuardModule } from '../../../../src/admin/auth/admin-auth-guard.module';
import { DictModule } from '../../../../src/admin/dict/dict.module';
import { AdminAuthGuardModule } from '../../../../src/modules/admin/identity/auth/admin-auth-guard.module';
import { DictModule } from '../../../../src/modules/admin/platform-config/dict/dict.module';
import { AppModule } from '../../../../src/app.module';
import { QqbotAccountController } from '../../../../src/qqbot/account/qqbot-account.controller';
import { QqbotCommandController } from '../../../../src/qqbot/command/qqbot-command.controller';

View File

@ -4,7 +4,7 @@ import { INestApplication } from '@nestjs/common';
import { Test } from '@nestjs/testing';
import { getRepositoryToken } from '@nestjs/typeorm';
import * as request from 'supertest';
import { JwtAuthGuard } from '../../../../src/admin/auth/jwt-auth.guard';
import { JwtAuthGuard } from '../../../../src/modules/admin/identity/auth/jwt-auth.guard';
import { QqbotPluginPlatformController } from '../../../../src/modules/qqbot/plugin-platform/plugin-platform.controller';
import { QqbotPluginPlatformModule } from '../../../../src/modules/qqbot/plugin-platform/plugin-platform.module';
import { QqbotPluginPlatformService } from '../../../../src/modules/qqbot/plugin-platform/plugin-platform.service';

View File

@ -1,4 +1,4 @@
jest.mock('@/admin/auth/jwt-auth.guard', () => ({
jest.mock('@/modules/admin/identity/auth/jwt-auth.guard', () => ({
JwtAuthGuard: class {
canActivate() {
return true;

View File

@ -1,4 +1,4 @@
jest.mock('@/admin/auth/jwt-auth.guard', () => ({
jest.mock('@/modules/admin/identity/auth/jwt-auth.guard', () => ({
JwtAuthGuard: class {
canActivate() {
return true;

View File

@ -26,7 +26,7 @@ jest.mock(
{ virtual: true },
);
import { DictService } from '@/admin/dict/dict.service';
import { DictService } from '@/modules/admin/platform-config/dict/dict.service';
import type { QqbotCommand } from '@/qqbot/command/qqbot-command.entity';
import { QqbotCommandParserService } from '@/qqbot/command/qqbot-command-parser.service';

View File

@ -27,7 +27,7 @@ jest.mock(
);
import { ConfigService } from '@nestjs/config';
import { DictService } from '@/admin/dict/dict.service';
import { DictService } from '@/modules/admin/platform-config/dict/dict.service';
import { QqbotPluginHttpClientService } from '@/modules/qqbot/plugin-platform/sdk';
import { QqbotFflogsClientService } from '@/modules/qqbot/plugins/fflogs/qqbot-fflogs-client.service';