diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/app.module.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/app.module.ts index aea6152d..f523c526 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/app.module.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/app.module.ts @@ -37,7 +37,12 @@ import { JobModule } from './job.module'; }), BootModule, TypeOrmModule.forRootAsync({ - useFactory: (configService) => configService.get('database'), + useFactory: (configService) => ({ + ...configService.get('database'), + // 使用autoLoadEntities,通过forFeature()手动注册Entity + entities: [], + autoLoadEntities: true, + }), inject: [ConfigService] }), CommonModule, diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/login/login.controller.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/login/login.controller.ts index 221cf96d..4b5c8f27 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/login/login.controller.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/controllers/adminapi/login/login.controller.ts @@ -6,12 +6,15 @@ import { ConfigServiceImplService } from '../../../services/admin/auth/impl/conf @Controller('adminapi/login') @ApiTags('API') +@Public() // 登录接口无需认证 export class LoginController { constructor( private readonly loginServiceImplService: LoginServiceImplService, private readonly configServiceImplService: ConfigServiceImplService ) {} + @Get(':appType') + @Public() // 登录接口公开访问 @ApiOperation({ summary: '/{appType}' }) @ApiResponse({ status: 200, description: '成功' }) async getAppType(@Param('appType') appType: string, @Query() query: Record): Promise> { @@ -20,6 +23,7 @@ export class LoginController { } @Get('config') + @Public() // 配置接口公开访问 @ApiOperation({ summary: 'config' }) @ApiResponse({ status: 200, description: '成功' }) async getConfig(@Query() query: Record): Promise> { diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/async-notify-model-result.entity.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/async-notify-model-result.entity.ts index 80ef17a8..7fb5bdfc 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/async-notify-model-result.entity.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/async-notify-model-result.entity.ts @@ -1,6 +1,5 @@ import { Entity, PrimaryGeneratedColumn, PrimaryColumn, Column, CreateDateColumn, UpdateDateColumn } from 'typeorm'; -@Entity() export class AsyncNotifyModelResult { // 无字段 } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/async-notify-model.entity.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/async-notify-model.entity.ts index f300d1f2..f7ec01d8 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/async-notify-model.entity.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/async-notify-model.entity.ts @@ -1,6 +1,5 @@ import { Entity, PrimaryGeneratedColumn, PrimaryColumn, Column, CreateDateColumn, UpdateDateColumn } from 'typeorm'; -@Entity() export class AsyncNotifyModel { // 无字段 } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/base64-model.entity.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/base64-model.entity.ts index 4d4f4120..cddaa7c3 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/base64-model.entity.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/base64-model.entity.ts @@ -1,6 +1,5 @@ import { Entity, PrimaryGeneratedColumn, PrimaryColumn, Column, CreateDateColumn, UpdateDateColumn } from 'typeorm'; -@Entity() export class Base64Model { @Column({ name: 'content' }) content: string; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/bottom-config-value.entity.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/bottom-config-value.entity.ts index 8ddf3d2e..7c9000bf 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/bottom-config-value.entity.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/bottom-config-value.entity.ts @@ -15,5 +15,5 @@ export class BottomConfigValue { type: string; @Column({ name: 'list' }) - list: any; + list: string; } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/core-sys-config-vo.entity.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/core-sys-config-vo.entity.ts index 08796b4e..bc94e0b7 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/core-sys-config-vo.entity.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/core-sys-config-vo.entity.ts @@ -15,7 +15,7 @@ export class CoreSysConfigVo { value: string; @Column({ name: 'value_json' }) - valueJson: any; + valueJson: string; @Column({ name: 'status' }) status: number; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/delete-model-result.entity.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/delete-model-result.entity.ts index 00427d6c..f2f99972 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/delete-model-result.entity.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/delete-model-result.entity.ts @@ -1,7 +1,6 @@ import { Entity, PrimaryGeneratedColumn, PrimaryColumn, Column, CreateDateColumn, UpdateDateColumn } from 'typeorm'; -@Entity() export class DeleteModelResult { @Column({ name: 'result' }) - result: any; + result: string; } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/delete-model.entity.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/delete-model.entity.ts index aa40d0be..8094f468 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/delete-model.entity.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/delete-model.entity.ts @@ -1,6 +1,5 @@ import { Entity, PrimaryGeneratedColumn, PrimaryColumn, Column, CreateDateColumn, UpdateDateColumn } from 'typeorm'; -@Entity() export class DeleteModel { @Column({ name: 'file_path' }) filePath: string; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/fetch-model.entity.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/fetch-model.entity.ts index 3b1e5c54..4cacecb1 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/fetch-model.entity.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/fetch-model.entity.ts @@ -1,6 +1,5 @@ import { Entity, PrimaryGeneratedColumn, PrimaryColumn, Column, CreateDateColumn, UpdateDateColumn } from 'typeorm'; -@Entity() export class FetchModel { @Column({ name: 'url' }) url: string; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/model-object-result.entity.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/model-object-result.entity.ts index 5697cca4..3f5aeba5 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/model-object-result.entity.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/model-object-result.entity.ts @@ -1,6 +1,5 @@ import { Entity, PrimaryGeneratedColumn, PrimaryColumn, Column, CreateDateColumn, UpdateDateColumn } from 'typeorm'; -@Entity() export class ModelObjectResult { @Column({ name: 'msg' }) msg: string; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/model-object.entity.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/model-object.entity.ts index 6b244128..87b833ec 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/model-object.entity.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/model-object.entity.ts @@ -1,6 +1,5 @@ import { Entity, PrimaryGeneratedColumn, PrimaryColumn, Column, CreateDateColumn, UpdateDateColumn } from 'typeorm'; -@Entity() export class ModelObject { // 无字段 } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/pay-info-model-result.entity.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/pay-info-model-result.entity.ts index 6bef54ba..6cddb461 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/pay-info-model-result.entity.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/pay-info-model-result.entity.ts @@ -1,6 +1,5 @@ import { Entity, PrimaryGeneratedColumn, PrimaryColumn, Column, CreateDateColumn, UpdateDateColumn } from 'typeorm'; -@Entity() export class PayInfoModelResult { // 无字段 } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/pay-info-model.entity.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/pay-info-model.entity.ts index 0019ff21..3ac91c3c 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/pay-info-model.entity.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/pay-info-model.entity.ts @@ -1,6 +1,5 @@ import { Entity, PrimaryGeneratedColumn, PrimaryColumn, Column, CreateDateColumn, UpdateDateColumn } from 'typeorm'; -@Entity() export class PayInfoModel { // 无字段 } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/pay-model-result.entity.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/pay-model-result.entity.ts index 942c2530..a7050ff7 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/pay-model-result.entity.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/pay-model-result.entity.ts @@ -1,6 +1,5 @@ import { Entity, PrimaryGeneratedColumn, PrimaryColumn, Column, CreateDateColumn, UpdateDateColumn } from 'typeorm'; -@Entity() export class PayModelResult { // 无字段 } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/pay-model.entity.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/pay-model.entity.ts index d8e8a86e..e218c309 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/pay-model.entity.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/pay-model.entity.ts @@ -1,6 +1,5 @@ import { Entity, PrimaryGeneratedColumn, PrimaryColumn, Column, CreateDateColumn, UpdateDateColumn } from 'typeorm'; -@Entity() export class PayModel { // 无字段 } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/pay.entity.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/pay.entity.ts index c9f2f23a..e4862ac0 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/pay.entity.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/pay.entity.ts @@ -63,5 +63,5 @@ export class Pay { failReason: string; @Column({ name: 'from_main_id' }) - fromMainId: any; + fromMainId: string; } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/thumb-model-result.entity.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/thumb-model-result.entity.ts index 6e36321c..498702ed 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/thumb-model-result.entity.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/thumb-model-result.entity.ts @@ -1,7 +1,6 @@ import { Entity, PrimaryGeneratedColumn, PrimaryColumn, Column, CreateDateColumn, UpdateDateColumn } from 'typeorm'; -@Entity() export class ThumbModelResult { @Column({ name: 'result' }) - result: any; + result: string; } diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/thumb-model.entity.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/thumb-model.entity.ts index 55ee0ece..7d33bc28 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/thumb-model.entity.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/thumb-model.entity.ts @@ -1,6 +1,5 @@ import { Entity, PrimaryGeneratedColumn, PrimaryColumn, Column, CreateDateColumn, UpdateDateColumn } from 'typeorm'; -@Entity() export class ThumbModel { @Column({ name: 'file_path' }) filePath: string; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/upload-model-result.entity.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/upload-model-result.entity.ts index e754ab5c..0fba83e4 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/upload-model-result.entity.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/upload-model-result.entity.ts @@ -1,9 +1,8 @@ import { Entity, PrimaryGeneratedColumn, PrimaryColumn, Column, CreateDateColumn, UpdateDateColumn } from 'typeorm'; -@Entity() export class UploadModelResult { @Column({ name: 'result' }) - result: any; + result: string; @Column({ name: 'original_filename' }) originalFilename: string; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/upload-model.entity.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/upload-model.entity.ts index 6174b192..eb04b72d 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/upload-model.entity.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/entities/upload-model.entity.ts @@ -1,9 +1,8 @@ import { Entity, PrimaryGeneratedColumn, PrimaryColumn, Column, CreateDateColumn, UpdateDateColumn } from 'typeorm'; -@Entity() export class UploadModel { @Column({ name: 'upload_file' }) - uploadFile: any; + uploadFile: string; @Column({ name: 'upload_type' }) uploadType: string; diff --git a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/auth/impl/login-service-impl.service.ts b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/auth/impl/login-service-impl.service.ts index fb9aa24a..b86842dc 100644 --- a/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/auth/impl/login-service-impl.service.ts +++ b/wwjcloud-nest-v1/wwjcloud/libs/wwjcloud-core/src/services/admin/auth/impl/login-service-impl.service.ts @@ -33,40 +33,46 @@ export class LoginServiceImplService { * @returns 登录结果 */ async login(appTypeOrParam: any, loginParam?: any): Promise { - // 支持两种调用方式:login(fullParam) 或 login(appType, param) - let appType: string; - let username: string; - let password: string; + try { + this.logger.log(`Login attempt started`); + + // 支持两种调用方式:login(fullParam) 或 login(appType, param) + let appType: string; + let username: string; + let password: string; - if (typeof appTypeOrParam === 'string') { - // 方式1: login(appType, param) - appType = appTypeOrParam; - ({ username, password } = loginParam || {}); - } else { - // 方式2: login(fullParam) - ({ username, password, appType = 'admin' } = appTypeOrParam || {}); - } + if (typeof appTypeOrParam === 'string') { + // 方式1: login(appType, param) + appType = appTypeOrParam; + ({ username, password } = loginParam || {}); + } else { + // 方式2: login(fullParam) + ({ username, password, appType = 'admin' } = appTypeOrParam || {}); + } - // 1. 验证appType - const validAppTypes = ['admin', 'site']; - if (!validAppTypes.includes(appType)) { - throw new BadRequestException('APP_TYPE_NOT_EXIST'); - } + this.logger.log(`Login data: appType=${appType}, username=${username}`); - // 获取当前站点ID - const siteId = 0; // TODO: 从请求上下文获取 + // 1. 验证appType + const validAppTypes = ['admin', 'site']; + if (!validAppTypes.includes(appType)) { + throw new BadRequestException('APP_TYPE_NOT_EXIST'); + } - // 2. 查找用户 - const user = await this.userRepository.findOne({ - where: { username, isDel: 0 }, - }); + // 获取当前站点ID + const siteId = 0; // TODO: 从请求上下文获取 - if (!user) { - throw new UnauthorizedException('账号或密码错误'); - } + // 2. 查找用户 + const user = await this.userRepository.findOne({ + where: { username, isDel: 0 }, + }); - // 3. 验证密码 - const isPasswordValid = await bcrypt.compare(password, user.password); + if (!user) { + this.logger.warn(`User not found: ${username}`); + throw new UnauthorizedException('账号或密码错误'); + } + + // 3. 验证密码 + const isPasswordValid = await bcrypt.compare(password, user.password); if (!isPasswordValid) { throw new UnauthorizedException('账号或密码错误'); } @@ -149,6 +155,10 @@ export class LoginServiceImplService { roleName: (roleInfo as any).roleName || '', } : null, }; + } catch (error) { + this.logger.error(`Login failed: ${error.message}`, error.stack); + throw error; + } } /**