2
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
package com.example.demo.user;
|
||||
|
||||
import com.example.demo.auth.JwtService;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/user")
|
||||
public class UserController {
|
||||
|
||||
private final UserService userService;
|
||||
private final JwtService jwtService;
|
||||
|
||||
public UserController(UserService userService, JwtService jwtService) {
|
||||
this.userService = userService;
|
||||
this.jwtService = jwtService;
|
||||
}
|
||||
|
||||
private Long ensureUserId(String authorization) {
|
||||
Map<String,Object> claims = jwtService.parseClaims(authorization);
|
||||
Object uid = claims.get("userId");
|
||||
if (uid == null) throw new IllegalArgumentException("未登录");
|
||||
return ((Number) uid).longValue();
|
||||
}
|
||||
|
||||
@GetMapping("/me")
|
||||
public ResponseEntity<?> me(@RequestHeader(name = "Authorization", required = false) String authorization,
|
||||
@RequestHeader(name = "X-User-Id", required = false) Long userIdHeader) {
|
||||
Long userId = userIdHeader != null ? userIdHeader : ensureUserId(authorization);
|
||||
var body = userService.getProfile(userId);
|
||||
return ResponseEntity.ok(body == null ? java.util.Map.of() : body);
|
||||
}
|
||||
|
||||
@PutMapping("/me")
|
||||
public ResponseEntity<?> update(@RequestHeader(name = "Authorization", required = false) String authorization,
|
||||
@RequestHeader(name = "X-User-Id", required = false) Long userIdHeader,
|
||||
@RequestBody UserService.UpdateProfileRequest req) {
|
||||
Long userId = userIdHeader != null ? userIdHeader : ensureUserId(authorization);
|
||||
userService.updateProfile(userId, req);
|
||||
return ResponseEntity.ok().build();
|
||||
}
|
||||
|
||||
@PutMapping("/me/password")
|
||||
public ResponseEntity<?> changePassword(@RequestHeader(name = "Authorization", required = false) String authorization,
|
||||
@RequestHeader(name = "X-User-Id", required = false) Long userIdHeader,
|
||||
@RequestBody UserService.ChangePasswordRequest req) {
|
||||
Long userId = userIdHeader != null ? userIdHeader : ensureUserId(authorization);
|
||||
userService.changePassword(userId, req);
|
||||
return ResponseEntity.ok().build();
|
||||
}
|
||||
|
||||
@PutMapping("/me/phone")
|
||||
public ResponseEntity<?> changePhone(@RequestHeader(name = "Authorization", required = false) String authorization,
|
||||
@RequestHeader(name = "X-User-Id", required = false) Long userIdHeader,
|
||||
@RequestBody UserService.ChangePhoneRequest req) {
|
||||
Long userId = userIdHeader != null ? userIdHeader : ensureUserId(authorization);
|
||||
userService.changePhone(userId, req);
|
||||
return ResponseEntity.ok().build();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user