tyt-api-nest/src/auth/auth.controller.ts
EL c830a2131e 患者列表改为服务端分页/筛选:支持 page、pageSize、keyword、doctorId 参数
患者详情页支持“编辑手术”流程:单手术直接编辑,多手术先进入手术列表选择
手术弹窗新增编辑模式:禁用设备结构增删,仅允许修改既有手术及设备字段
新增更新手术 API:PATCH /b/patients/:patientId/surgeries/:surgeryId
生命周期查询改为 B 端接口:GET /b/patients/:id/lifecycle
手术提交后支持回到详情并保持手术标签页,提升连续操作效率
2026-03-26 03:47:52 +08:00

81 lines
2.9 KiB
TypeScript

import { Body, Controller, Get, Post, UseGuards } from '@nestjs/common';
import { ApiBearerAuth, ApiOperation, ApiTags } from '@nestjs/swagger';
import { Throttle } from '@nestjs/throttler';
import { AuthService } from './auth.service.js';
import { AccessTokenGuard } from './access-token.guard.js';
import { CurrentActor } from './current-actor.decorator.js';
import type { ActorContext } from '../common/actor-context.js';
import { CreateSystemAdminDto } from './dto/create-system-admin.dto.js';
import { MiniappPhoneLoginDto } from './dto/miniapp-phone-login.dto.js';
import { MiniappPhoneLoginConfirmDto } from './dto/miniapp-phone-login-confirm.dto.js';
import { PasswordLoginConfirmDto } from './dto/password-login-confirm.dto.js';
import { LoginDto } from '../users/dto/login.dto.js';
/**
* 认证控制器:提供系统管理员创建、登录、获取当前登录用户信息接口。
*/
@ApiTags('认证')
@Controller('auth')
export class AuthController {
constructor(private readonly authService: AuthService) {}
/**
* 创建系统管理员(需引导密钥)。
*/
@Post('system-admin')
@Throttle({ default: { limit: 3, ttl: 60_000 } })
@ApiOperation({ summary: '创建系统管理员' })
createSystemAdmin(@Body() dto: CreateSystemAdminDto) {
return this.authService.createSystemAdmin(dto);
}
/**
* 院内账号密码登录:后台与小程序均可复用。
*/
@Post('login')
@Throttle({ default: { limit: 5, ttl: 60_000 } })
@ApiOperation({ summary: '院内账号密码登录' })
login(@Body() dto: LoginDto) {
return this.authService.login(dto);
}
@Post('login/confirm')
@Throttle({ default: { limit: 10, ttl: 60_000 } })
@ApiOperation({ summary: '院内账号密码多账号确认登录' })
confirmLogin(@Body() dto: PasswordLoginConfirmDto) {
return this.authService.confirmLogin(dto);
}
@Post('miniapp/b/phone-login')
@Throttle({ default: { limit: 5, ttl: 60_000 } })
@ApiOperation({ summary: 'B 端小程序手机号登录' })
miniAppBLogin(@Body() dto: MiniappPhoneLoginDto) {
return this.authService.miniAppBLogin(dto);
}
@Post('miniapp/b/phone-login/confirm')
@Throttle({ default: { limit: 10, ttl: 60_000 } })
@ApiOperation({ summary: 'B 端小程序多账号确认登录' })
miniAppBConfirmLogin(@Body() dto: MiniappPhoneLoginConfirmDto) {
return this.authService.miniAppBConfirmLogin(dto);
}
@Post('miniapp/c/phone-login')
@Throttle({ default: { limit: 5, ttl: 60_000 } })
@ApiOperation({ summary: 'C 端小程序手机号登录' })
miniAppCLogin(@Body() dto: MiniappPhoneLoginDto) {
return this.authService.miniAppCLogin(dto);
}
/**
* 获取当前登录用户信息。
*/
@Get('me')
@UseGuards(AccessTokenGuard)
@ApiBearerAuth('bearer')
@ApiOperation({ summary: '获取当前用户信息' })
me(@CurrentActor() actor: ActorContext) {
return this.authService.me(actor);
}
}