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); + } }