This commit is contained in:
王子琦
2026-01-13 13:55:40 +08:00
parent 6affd0c77e
commit f58e05d962
72 changed files with 3251 additions and 0 deletions

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