Files
PartsInquiry/backend/src/main/java/com/example/demo/user/UserController.java
2025-09-27 22:57:59 +08:00

65 lines
2.8 KiB
Java

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();
}
}