add
This commit is contained in:
68
backend/src/main/java/com/flower/user/AddressController.java
Normal file
68
backend/src/main/java/com/flower/user/AddressController.java
Normal file
@@ -0,0 +1,68 @@
|
||||
package com.flower.user;
|
||||
|
||||
import com.flower.common.ApiException;
|
||||
import com.flower.common.ApiResponse;
|
||||
import com.flower.security.AuthContext;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/addresses")
|
||||
public class AddressController {
|
||||
private final AddressRepository addressRepository;
|
||||
|
||||
public AddressController(AddressRepository addressRepository) {
|
||||
this.addressRepository = addressRepository;
|
||||
}
|
||||
|
||||
@GetMapping
|
||||
public ApiResponse<List<Address>> list() {
|
||||
return ApiResponse.ok(addressRepository.findByUserId(AuthContext.get().getId()));
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
public ApiResponse<Address> create(@RequestBody Address address) {
|
||||
address.setUserId(AuthContext.get().getId());
|
||||
if (Boolean.TRUE.equals(address.getIsDefault())) {
|
||||
clearDefault();
|
||||
}
|
||||
return ApiResponse.ok(addressRepository.save(address));
|
||||
}
|
||||
|
||||
@PutMapping("/{id}")
|
||||
public ApiResponse<Address> update(@PathVariable Long id, @RequestBody Address address) {
|
||||
Address exists = addressRepository.findById(id)
|
||||
.orElseThrow(() -> new ApiException(404, "地址不存在"));
|
||||
if (!exists.getUserId().equals(AuthContext.get().getId())) {
|
||||
throw new ApiException(403, "无权限");
|
||||
}
|
||||
address.setId(id);
|
||||
address.setUserId(exists.getUserId());
|
||||
if (Boolean.TRUE.equals(address.getIsDefault())) {
|
||||
clearDefault();
|
||||
}
|
||||
return ApiResponse.ok(addressRepository.save(address));
|
||||
}
|
||||
|
||||
@DeleteMapping("/{id}")
|
||||
public ApiResponse<Void> delete(@PathVariable Long id) {
|
||||
Address exists = addressRepository.findById(id)
|
||||
.orElseThrow(() -> new ApiException(404, "地址不存在"));
|
||||
if (!exists.getUserId().equals(AuthContext.get().getId())) {
|
||||
throw new ApiException(403, "无权限");
|
||||
}
|
||||
addressRepository.deleteById(id);
|
||||
return ApiResponse.ok(null);
|
||||
}
|
||||
|
||||
private void clearDefault() {
|
||||
List<Address> addresses = addressRepository.findByUserId(AuthContext.get().getId());
|
||||
for (Address item : addresses) {
|
||||
if (Boolean.TRUE.equals(item.getIsDefault())) {
|
||||
item.setIsDefault(false);
|
||||
addressRepository.save(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user