患者详情页支持“编辑手术”流程:单手术直接编辑,多手术先进入手术列表选择 手术弹窗新增编辑模式:禁用设备结构增删,仅允许修改既有手术及设备字段 新增更新手术 API:PATCH /b/patients/:patientId/surgeries/:surgeryId 生命周期查询改为 B 端接口:GET /b/patients/:id/lifecycle 手术提交后支持回到详情并保持手术标签页,提升连续操作效率
81 lines
2.9 KiB
TypeScript
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);
|
|
}
|
|
}
|