72 lines
2.9 KiB
Java

package github.benjamin.equipreservebackend.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import github.benjamin.equipreservebackend.dto.LoginRequest;
import github.benjamin.equipreservebackend.dto.UserDTO;
import github.benjamin.equipreservebackend.entity.Role;
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.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequiredArgsConstructor
public class UserController {
private final UserService userService;
private final JwtUtil jwtUtil;
@PostMapping("/login")
public ResponseResult<LoginResponse> login(@RequestBody LoginRequest request) {
User user = userService.login(request.getUsername(), request.getPassword());
SecurityUser securityUser = userService.loadSecurityUserById(user.getId());
String token = jwtUtil.generateToken(securityUser);
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));
}
@PutMapping("/user/{id}")
public ResponseResult<UserVO> updateUser(@PathVariable Long id,
@RequestBody UserDTO dto) {
userService.updateUser(id, dto);
return ResponseResult.success(userService.getUserVO(id));
}
@PreAuthorize("hasRole('ADMIN')")
@PostMapping("/user")
public ResponseResult<?> addUser(@RequestBody UserDTO dto) {
userService.addUser(dto);
return ResponseResult.success();
}
@PreAuthorize("hasRole('ADMIN')")
@GetMapping("/user")
public ResponseResult<Page<UserVO>> getUserVOs(@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10") Integer size,
@RequestParam(required = false) String name) {
Page<User> pageRequest = new Page<>(page, size);
return ResponseResult.success(userService.getUserVOs(pageRequest, name));
}
@PreAuthorize("hasRole('ADMIN')")
@DeleteMapping("/user/{userId}")
public ResponseResult<?> deleteUser(@PathVariable("userId") Long userId) {
userService.deleteById(userId);
return ResponseResult.success();
}
}