package com.qqflow.engine.domain.system.controller; import com.qqflow.engine.common.Result; import com.qqflow.engine.common.util.SecurityUtils; import com.qqflow.engine.config.security.LoginUser; import com.qqflow.engine.domain.system.assembler.UserAssembler; import com.qqflow.engine.domain.system.dto.LoginDTO; import com.qqflow.engine.domain.system.dto.UserDTO; import com.qqflow.engine.domain.system.entity.SysUser; import com.qqflow.engine.domain.system.service.SysUserService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletRequest; import jakarta.validation.Valid; import org.springframework.web.bind.annotation.*; import java.util.HashMap; import java.util.Map; @Tag(name = "认证管理") @RestController @RequestMapping("/auth") public class AuthController { @Resource private SysUserService sysUserService; @Operation(summary = "用户登录") @PostMapping("/login") public Result> login(@Valid @RequestBody LoginDTO loginDTO) { String token = sysUserService.login(loginDTO); Map map = new HashMap<>(); map.put("token", token); return Result.ok(map); } @Operation(summary = "用户登出") @PostMapping("/logout") public Result logout(HttpServletRequest request) { String token = request.getHeader("Authorization"); sysUserService.logout(token); return Result.ok(); } @Operation(summary = "刷新token") @PostMapping("/refresh") public Result> refresh(HttpServletRequest request) { String token = request.getHeader("Authorization"); String newToken = sysUserService.refreshToken(token); Map map = new HashMap<>(); map.put("token", newToken); return Result.ok(map); } @Operation(summary = "获取当前登录用户信息") @GetMapping("/info") public Result info() { LoginUser loginUser = SecurityUtils.getLoginUser(); if (loginUser == null) { return Result.error(401, "未登录"); } SysUser user = sysUserService.getByUsername(loginUser.getUsername()); return Result.ok(UserAssembler.toDTO(user)); } }