package com.accounting.controller; import com.accounting.dto.AccountRequest; import com.accounting.dto.AccountResponse; import com.accounting.entity.User; import com.accounting.mapper.UserMapper; import com.accounting.service.AccountService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.security.core.Authentication; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.web.bind.annotation.*; @Tag(name = "账户管理", description = "账户管理接口") @RestController @RequestMapping("/api/accounts") public class AccountController { @Autowired private AccountService accountService; @Autowired private UserMapper userMapper; @Operation(summary = "获取账户信息") @GetMapping public ResponseEntity getAccount(Authentication authentication) { Long userId = getUserId(authentication); AccountResponse response = accountService.getAccountBalance(userId); return ResponseEntity.ok(response); } @Operation(summary = "更新账户信息") @PutMapping public ResponseEntity updateAccount( @RequestBody AccountRequest request, Authentication authentication) { Long userId = getUserId(authentication); AccountResponse response = accountService.updateAccount(userId, request); return ResponseEntity.ok(response); } @Operation(summary = "更新账户余额") @PutMapping("/balance") public ResponseEntity updateAccountBalance( @RequestBody AccountRequest request, Authentication authentication) { Long userId = getUserId(authentication); AccountResponse response = accountService.updateAccountBalance(userId, request.getInitialBalance()); return ResponseEntity.ok(response); } private Long getUserId(Authentication authentication) { UserDetails userDetails = (UserDetails) authentication.getPrincipal(); String username = userDetails.getUsername(); User user = userMapper.selectOne( new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper() .eq(User::getUsername, username) ); return user != null ? user.getId() : null; } }