Compare commits

..

2 Commits

Author SHA1 Message Date
71bd2bb31b feat: 实现用户信息管理 2025-06-25 16:45:08 +08:00
eb7d8f92d1 feat: 增加用户预约信息返回预约id 2025-06-24 20:09:56 +08:00
6 changed files with 91 additions and 5 deletions

View File

@ -1,17 +1,17 @@
package github.benjamin.equipreservebackend.controller;
import github.benjamin.equipreservebackend.dto.LoginRequest;
import github.benjamin.equipreservebackend.dto.UserDTO;
import github.benjamin.equipreservebackend.entity.Role;
import github.benjamin.equipreservebackend.vo.LoginResponse;
import github.benjamin.equipreservebackend.response.ResponseResult;
import github.benjamin.equipreservebackend.entity.User;
import github.benjamin.equipreservebackend.response.ResponseResult;
import github.benjamin.equipreservebackend.security.SecurityUser;
import github.benjamin.equipreservebackend.service.UserService;
import github.benjamin.equipreservebackend.utils.JwtUtil;
import github.benjamin.equipreservebackend.vo.LoginResponse;
import github.benjamin.equipreservebackend.vo.UserVO;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -31,4 +31,17 @@ public class UserController {
List<String> roles = securityUser.getRoles().stream().map(Role::getCode).toList();
return ResponseResult.success(new LoginResponse(user.getId(), user.getName(), roles, token));
}
@GetMapping("/userdetail/{id}")
public ResponseResult<UserVO> getUserVO(@PathVariable Long id) {
return ResponseResult.success(userService.getUserVO(id));
}
@PatchMapping("/user/{id}")
public ResponseResult<UserVO> updateUser(@PathVariable Long id,
@RequestBody UserDTO dto) {
userService.updateUser(id, dto);
return ResponseResult.success(userService.getUserVO(id));
}
}

View File

@ -0,0 +1,12 @@
package github.benjamin.equipreservebackend.dto;
import lombok.Data;
@Data
public class UserDTO {
private String name;
private String phone;
private String password;
}

View File

@ -1,11 +1,17 @@
package github.benjamin.equipreservebackend.service;
import github.benjamin.equipreservebackend.dto.UserDTO;
import github.benjamin.equipreservebackend.entity.User;
import github.benjamin.equipreservebackend.security.SecurityUser;
import github.benjamin.equipreservebackend.vo.UserVO;
public interface UserService {
User login(String username, String password);
SecurityUser loadSecurityUserById(Long userId);
UserVO getUserVO(Long id);
void updateUser(Long id, UserDTO dto);
}

View File

@ -1,18 +1,24 @@
package github.benjamin.equipreservebackend.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import github.benjamin.equipreservebackend.dto.UserDTO;
import github.benjamin.equipreservebackend.entity.Role;
import github.benjamin.equipreservebackend.entity.Team;
import github.benjamin.equipreservebackend.entity.User;
import github.benjamin.equipreservebackend.exception.ApiException;
import github.benjamin.equipreservebackend.mapper.RoleMapper;
import github.benjamin.equipreservebackend.mapper.TeamMapper;
import github.benjamin.equipreservebackend.mapper.UserMapper;
import github.benjamin.equipreservebackend.response.ResponseCode;
import github.benjamin.equipreservebackend.security.SecurityUser;
import github.benjamin.equipreservebackend.service.UserService;
import github.benjamin.equipreservebackend.utils.JwtUtil;
import github.benjamin.equipreservebackend.utils.PasswordUtil;
import github.benjamin.equipreservebackend.vo.UserVO;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.List;
import java.util.Objects;
@ -25,6 +31,8 @@ public class UserServiceImpl implements UserService {
private final RoleMapper roleMapper;
private final TeamMapper teamMapper;
private final JwtUtil jwtUtil;
@Override
@ -45,4 +53,24 @@ public class UserServiceImpl implements UserService {
List<Role> roles = roleMapper.selectRoleByUserId(userId);
return new SecurityUser(user, roles);
}
@Override
public UserVO getUserVO(Long id) {
User user = userMapper.selectById(id);
Team team = teamMapper.selectById(user.getTeamId());
return new UserVO(user, team);
}
@Override
public void updateUser(Long id, UserDTO dto) {
LambdaUpdateWrapper<User> wrapper = new LambdaUpdateWrapper<User>()
.eq(User::getId, id)
.set(StringUtils.hasText(dto.getName()), User::getName, dto.getName())
.set(StringUtils.hasText(dto.getPhone()), User::getPhone, dto.getPhone());
if (StringUtils.hasText(dto.getPassword())) {
String encoded = PasswordUtil.encode(dto.getPassword());
wrapper.set(User::getPassword, encoded);
}
userMapper.update(wrapper);
}
}

View File

@ -15,6 +15,7 @@ import java.util.Map;
@NoArgsConstructor
@AllArgsConstructor
public class UserReservationVO {
private String reservationId;
private String deviceName;
private LocalDate startTime;
private LocalDate endTime;
@ -24,6 +25,7 @@ public class UserReservationVO {
private LocalDateTime createdTime;
public UserReservationVO(Reservation r, Map<Long, String> deviceNameMap) {
this.reservationId = r.getId().toString();
this.deviceName = deviceNameMap.get(r.getDeviceId());
this.startTime = r.getStartTime();
this.endTime = r.getEndTime();

View File

@ -0,0 +1,25 @@
package github.benjamin.equipreservebackend.vo;
import github.benjamin.equipreservebackend.entity.Team;
import github.benjamin.equipreservebackend.entity.User;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserVO {
private String username;
private String team;
private String name;
private String phone;
public UserVO(User u, Team t) {
this.username = u.getUsername();
this.name = u.getName();
this.phone = u.getPhone();
this.team = t.getName();
}
}