feat: 用户相关api接口

This commit is contained in:
2026-06-15 18:23:41 +08:00
parent 567bee3e8f
commit 8477e49fa0
13 changed files with 233 additions and 56 deletions

View File

@@ -0,0 +1,16 @@
package com.webgame.webgamebackend.service;
import com.webgame.webgamebackend.common.dto.user.UserInfoResponse;
/**
* 用户服务接口
*/
public interface UserService {
/**
* 获取当前登录用户的资料
*
* @return 用户信息
*/
UserInfoResponse getCurrentUserInfo();
}

View File

@@ -33,15 +33,15 @@ public class AccountServiceImpl implements AccountService {
@Override
public LoginResponse login(LoginRequest request) {
AccountEntity account = accountRepository.findByUsername(request.getUsername())
AccountEntity account = accountRepository.findByUsername(request.username())
.orElseThrow(() -> new BusinessException(ErrorCode.BAD_CREDENTIALS));
if (!passwordEncoder.matches(request.getPassword(), account.getPassword())) {
if (!passwordEncoder.matches(request.password(), account.getPassword())) {
throw new BusinessException(ErrorCode.BAD_CREDENTIALS);
}
// Sa-Token 登录
StpUtil.login(account.getId());
String token = StpUtil.getTokenValue();
log.info("用户登录成功: username={}", request.getUsername());
log.info("用户登录成功: username={}", request.username());
return new LoginResponse(token);
}
@@ -49,13 +49,13 @@ public class AccountServiceImpl implements AccountService {
@Transactional
public LoginResponse register(RegisterRequest request) {
// 检查用户名是否已存在
if (accountRepository.existsByUsername(request.getUsername())) {
if (accountRepository.existsByUsername(request.username())) {
throw new BusinessException(ErrorCode.USERNAME_EXISTS);
}
// 创建账号
AccountEntity account = new AccountEntity();
account.setUsername(request.getUsername());
account.setPassword(passwordEncoder.encode(request.getPassword()));
account.setUsername(request.username());
account.setPassword(passwordEncoder.encode(request.password()));
accountRepository.save(account);
// 创建用户资料(默认值)
UserEntity user = new UserEntity();
@@ -66,7 +66,7 @@ public class AccountServiceImpl implements AccountService {
user.setAvatar("");
userRepository.save(user);
log.info("用户注册成功: username={}", request.getUsername());
log.info("用户注册成功: username={}", request.username());
// 注册后自动登录
StpUtil.login(account.getId());
String token = StpUtil.getTokenValue();

View File

@@ -0,0 +1,31 @@
package com.webgame.webgamebackend.service.impl;
import cn.dev33.satoken.stp.StpUtil;
import com.webgame.webgamebackend.common.dto.user.UserInfoResponse;
import com.webgame.webgamebackend.common.exception.BusinessException;
import com.webgame.webgamebackend.common.exception.ErrorCode;
import com.webgame.webgamebackend.entities.UserEntity;
import com.webgame.webgamebackend.repository.UserRepository;
import com.webgame.webgamebackend.service.UserService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* 用户服务实现
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class UserServiceImpl implements UserService {
private final UserRepository userRepository;
@Override
public UserInfoResponse getCurrentUserInfo() {
String accountId = StpUtil.getLoginIdAsString();
UserEntity user = userRepository.findByAccountId(accountId)
.orElseThrow(() -> new BusinessException(ErrorCode.USER_NOT_FOUND));
return UserInfoResponse.from(user);
}
}