From 192bb72251b07b009a9413a892b9c28407e8bef4 Mon Sep 17 00:00:00 2001 From: Grand-cocoa <1075576561@qq.com49111108+grand-cocoa@users.noreply.github.com> Date: Wed, 12 Nov 2025 17:32:10 +0800 Subject: [PATCH] =?UTF-8?q?feat(auth):=20=E6=B7=BB=E5=8A=A0=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 AuthController 中新增 getUserInfo 接口,用于获取当前登录用户的信息 - 创建 UserInfoVO 类,封装用户 ID、用户名和头像信息 - 在 AuthService 中实现 getUserInfo 方法,从数据库查询用户并转换为 UserInfoVO - 头像字段使用 Base64 编码返回- 使用 StpUtil 获取当前登录用户的 ID 进行查询 --- .../animo/auth/controller/AuthController.java | 15 ++++++++--- .../kane/animo/auth/domain/vo/UserInfoVO.java | 26 +++++++++++++++++++ .../kane/animo/auth/service/AuthService.java | 7 +++++ .../auth/service/impl/AuthServiceImpl.java | 25 ++++++++++++++++++ 4 files changed, 69 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/kane/animo/auth/domain/vo/UserInfoVO.java diff --git a/src/main/java/com/kane/animo/auth/controller/AuthController.java b/src/main/java/com/kane/animo/auth/controller/AuthController.java index 0d6d2f8..279c612 100644 --- a/src/main/java/com/kane/animo/auth/controller/AuthController.java +++ b/src/main/java/com/kane/animo/auth/controller/AuthController.java @@ -1,13 +1,11 @@ package com.kane.animo.auth.controller; import com.kane.animo.auth.domain.form.LoginForm; +import com.kane.animo.auth.domain.vo.UserInfoVO; import com.kane.animo.auth.service.AuthService; import com.kane.animo.model.R; import jakarta.annotation.Resource; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; /** * 认证 @@ -40,4 +38,13 @@ public class AuthController { public R register(@RequestBody LoginForm from) { return service.register(from); } + + /** + * 获取用户信息 + * @return 用户信息 + */ + @GetMapping("/getUserInfo") + public R getUserInfo() { + return R.success(service.getUserInfo()); + } } diff --git a/src/main/java/com/kane/animo/auth/domain/vo/UserInfoVO.java b/src/main/java/com/kane/animo/auth/domain/vo/UserInfoVO.java new file mode 100644 index 0000000..a32c541 --- /dev/null +++ b/src/main/java/com/kane/animo/auth/domain/vo/UserInfoVO.java @@ -0,0 +1,26 @@ +package com.kane.animo.auth.domain.vo; + +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 用户信息 + * @author Kane + * @since 2025/11/12 16:50 + */ +@Data +@Accessors(chain = true) +public class UserInfoVO { + /** + * 用户ID + */ + private Long userId; + /** + * 用户名 + */ + private String name; + /** + * 头像 + */ + private String avatar; +} diff --git a/src/main/java/com/kane/animo/auth/service/AuthService.java b/src/main/java/com/kane/animo/auth/service/AuthService.java index 1391bc6..3f98905 100644 --- a/src/main/java/com/kane/animo/auth/service/AuthService.java +++ b/src/main/java/com/kane/animo/auth/service/AuthService.java @@ -1,6 +1,7 @@ package com.kane.animo.auth.service; import com.kane.animo.auth.domain.form.LoginForm; +import com.kane.animo.auth.domain.vo.UserInfoVO; import com.kane.animo.model.R; /** @@ -22,4 +23,10 @@ public interface AuthService { * @return 注册结果 */ R register(LoginForm from); + + /** + * 获取用户信息 + * @return 用户信息 + */ + UserInfoVO getUserInfo(); } diff --git a/src/main/java/com/kane/animo/auth/service/impl/AuthServiceImpl.java b/src/main/java/com/kane/animo/auth/service/impl/AuthServiceImpl.java index 7f1d9b2..6aaf327 100644 --- a/src/main/java/com/kane/animo/auth/service/impl/AuthServiceImpl.java +++ b/src/main/java/com/kane/animo/auth/service/impl/AuthServiceImpl.java @@ -5,6 +5,7 @@ import cn.dev33.satoken.stp.StpUtil; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.kane.animo.auth.domain.User; import com.kane.animo.auth.domain.form.LoginForm; +import com.kane.animo.auth.domain.vo.UserInfoVO; import com.kane.animo.auth.mapper.UserMapper; import com.kane.animo.auth.service.AuthService; import com.kane.animo.exception.ServiceException; @@ -12,6 +13,9 @@ import com.kane.animo.model.R; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; +import java.io.IOException; +import java.util.Base64; + /** * 认证服务 * @author Kane @@ -64,4 +68,25 @@ public class AuthServiceImpl implements AuthService { userMapper.insert(user); return login(from); } + + /** + * 获取用户信息 + * + * @return 用户信息 + */ + @Override + public UserInfoVO getUserInfo() { + User one = new LambdaQueryChainWrapper<>(userMapper) + .eq(User::getId, StpUtil.getLoginIdAsLong()) + .one(); + String avatar = null; + try { + avatar = Base64.getEncoder().encodeToString(one.getAvatar().readAllBytes()); + } catch (Exception ignored) { + } + return new UserInfoVO() + .setName(one.getUser()) + .setUserId(one.getId()) + .setAvatar(avatar); + } }