feat(user): implement user profile management functionality
- Add user nickname update endpoint with validation - Introduce user profile update endpoint supporting nickname and password changes - Create UserProfileResponse DTO with nickname field - Add SetUserNicknameRequest DTO for nickname updates - Implement UserProfileUpdateRequest DTO for profile modifications - Refactor UserService to UserProfileService with enhanced capabilities - Update UserMapper to include nickname in result mapping - Add new error codes for nickname and profile update failures - Modify CORS configuration to allow requests from localhost:5173 - Remove obsolete AppConfig RestTemplate bean definition - Rename UserinfoResponse to UserProfileResponse for consistency - Adjust controller endpoints to use updated service and DTOs - Add transactional support for user profile updates - Improve error handling for user-related operations
This commit is contained in:
@@ -1,13 +0,0 @@
|
||||
package cn.nopj.chaos_api.config;
|
||||
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
@Configuration
|
||||
public class AppConfig {
|
||||
@Bean
|
||||
public RestTemplate restTemplate() {
|
||||
return new RestTemplate ();
|
||||
}
|
||||
}
|
||||
@@ -3,20 +3,22 @@ package cn.nopj.chaos_api.service.impl;
|
||||
import cn.nopj.chaos_api.common.constants.ErrorCode;
|
||||
import cn.nopj.chaos_api.common.exceotion.BizException;
|
||||
import cn.nopj.chaos_api.domain.entity.User;
|
||||
import cn.nopj.chaos_api.dto.request.UserProfileUpdateRequest;
|
||||
import cn.nopj.chaos_api.dto.response.RoleResponse;
|
||||
import cn.nopj.chaos_api.dto.response.UserinfoResponse;
|
||||
import cn.nopj.chaos_api.dto.response.UserProfileResponse;
|
||||
import cn.nopj.chaos_api.mapper.UserMapper;
|
||||
import cn.nopj.chaos_api.service.UserInfoService;
|
||||
import cn.nopj.chaos_api.service.UserProfileServcie;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
public class UserInfoServiceImpl implements UserInfoService {
|
||||
public class UserProfileServcieImpl implements UserProfileServcie {
|
||||
@Autowired
|
||||
private PasswordEncoder passwordEncoder;
|
||||
@Autowired
|
||||
@@ -38,16 +40,14 @@ public class UserInfoServiceImpl implements UserInfoService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<UserinfoResponse> getAllUsers() {
|
||||
public List<UserProfileResponse> getAllUsers() {
|
||||
List<User> allUserWithRoles = userMapper.findAllUserWithRoles();
|
||||
|
||||
if (allUserWithRoles == null){
|
||||
throw new RuntimeException("获取所有用户信息失败");
|
||||
}
|
||||
|
||||
return allUserWithRoles.stream().map(user -> {
|
||||
return userConverterUserinfo(user);
|
||||
}).toList();
|
||||
return allUserWithRoles.stream().map(this::userConverterUserinfo).toList();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -79,7 +79,7 @@ public class UserInfoServiceImpl implements UserInfoService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public UserinfoResponse findUserWithRoles(String username) {
|
||||
public UserProfileResponse findUserWithRoles(String username) {
|
||||
if (username == null || username.isEmpty()){
|
||||
throw new BizException(ErrorCode.USER_NOT_EXISTS);
|
||||
}
|
||||
@@ -94,16 +94,75 @@ public class UserInfoServiceImpl implements UserInfoService {
|
||||
return userConverterUserinfo(user);
|
||||
}
|
||||
|
||||
@Override
|
||||
public UserProfileResponse setUserNickname(String username, String nickname) {
|
||||
|
||||
User user = userMapper.selectByUsername(username);
|
||||
if (user == null) {
|
||||
throw new BizException(ErrorCode.USER_NOT_EXISTS);
|
||||
}
|
||||
user.setNickname(nickname);
|
||||
int i = userMapper.updateById(user);
|
||||
|
||||
log.info("更新用户昵称结果: {}", i);
|
||||
if (i == 0) {
|
||||
throw new BizException(ErrorCode.USER_UPDATE_NICKNAME_FAILED);
|
||||
}
|
||||
return userConverterUserinfo(user);
|
||||
}
|
||||
|
||||
@Override
|
||||
public UserProfileResponse setUserNickname(Long userId, String nickname) {
|
||||
User user = userMapper.selectById(userId);
|
||||
if (user == null) {
|
||||
throw new BizException(ErrorCode.USER_NOT_EXISTS);
|
||||
}
|
||||
user.setNickname(nickname);
|
||||
int i = userMapper.updateById(user);
|
||||
log.info("更新用户昵称结果: {}", i);
|
||||
if (i == 0) {
|
||||
throw new BizException(ErrorCode.USER_UPDATE_NICKNAME_FAILED);
|
||||
}
|
||||
return userConverterUserinfo(user);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public UserProfileResponse updateUserProfile(String username, UserProfileUpdateRequest request) {
|
||||
|
||||
User user = userMapper.findUserWithRolesByUsername(username);
|
||||
if (user == null) {
|
||||
throw new BizException(ErrorCode.USER_NOT_EXISTS);
|
||||
}
|
||||
|
||||
if (request.getNickname() != null){
|
||||
user.setNickname(request.getNickname());
|
||||
}
|
||||
if (request.getPassword() != null){
|
||||
user.setPassword(passwordEncoder.encode(request.getPassword()));
|
||||
}
|
||||
|
||||
int i = userMapper.updateById(user);
|
||||
|
||||
log.info("更新用户信息结果: {}", i);
|
||||
if (i == 0) {
|
||||
throw new BizException(ErrorCode.USER_UPDATE_PROFILE_FAILED);
|
||||
}
|
||||
return userConverterUserinfo(user);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* User 转 UserinfoResponse
|
||||
* @param user
|
||||
* @return
|
||||
* @param user 用户
|
||||
* @return 用户信息
|
||||
*/
|
||||
private UserinfoResponse userConverterUserinfo(User user) {
|
||||
UserinfoResponse userinfoResponse = new UserinfoResponse();
|
||||
userinfoResponse.setId(user.getId());
|
||||
userinfoResponse.setUsername(user.getUsername());
|
||||
userinfoResponse.setRoles(
|
||||
private UserProfileResponse userConverterUserinfo(User user) {
|
||||
UserProfileResponse userProfileResponse = new UserProfileResponse();
|
||||
userProfileResponse.setId(user.getId());
|
||||
userProfileResponse.setUsername(user.getUsername());
|
||||
userProfileResponse.setNickname(user.getNickname());
|
||||
userProfileResponse.setRoles(
|
||||
user.getRoles().stream().map(role -> {
|
||||
RoleResponse roleResponse = new RoleResponse();
|
||||
roleResponse.setId(role.getId());
|
||||
@@ -111,7 +170,7 @@ public class UserInfoServiceImpl implements UserInfoService {
|
||||
return roleResponse;
|
||||
}).toList()
|
||||
);
|
||||
return userinfoResponse;
|
||||
return userProfileResponse;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user