From 93dbd857e09289775885fb58570ee57585af1b78 Mon Sep 17 00:00:00 2001 From: zihluwang Date: Tue, 21 Apr 2026 14:20:45 +0800 Subject: [PATCH] feat: add update and delete operations for Firearm, including error handling --- .../controller/FirearmController.java | 13 +++++++++- .../service/FirearmService.java | 26 ++++++++++++++++++- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/onixbyte/deltaforceguide/controller/FirearmController.java b/src/main/java/com/onixbyte/deltaforceguide/controller/FirearmController.java index 2f723fe..817291e 100644 --- a/src/main/java/com/onixbyte/deltaforceguide/controller/FirearmController.java +++ b/src/main/java/com/onixbyte/deltaforceguide/controller/FirearmController.java @@ -48,5 +48,16 @@ public class FirearmController { public FirearmResponse addFirearm(@Validated @RequestBody FirearmRequest request) { return firearmService.addFirearm(request); } -} + @Operation(description = "更新指定武器的数据") + @PutMapping("/{id}") + public FirearmResponse updateFirearm(@PathVariable Long id, @Validated @RequestBody FirearmRequest request) { + return firearmService.updateFirearm(id, request); + } + + @Operation(description = "删除指定武器的数据") + @DeleteMapping("/{id}") + public void deleteFirearm(@PathVariable Long id) { + firearmService.deleteFirearm(id); + } +} diff --git a/src/main/java/com/onixbyte/deltaforceguide/service/FirearmService.java b/src/main/java/com/onixbyte/deltaforceguide/service/FirearmService.java index dc7f090..3b69c15 100644 --- a/src/main/java/com/onixbyte/deltaforceguide/service/FirearmService.java +++ b/src/main/java/com/onixbyte/deltaforceguide/service/FirearmService.java @@ -5,6 +5,7 @@ import com.onixbyte.deltaforceguide.domain.dto.FirearmResponse; import com.onixbyte.deltaforceguide.domain.dto.PageResponse; import com.onixbyte.deltaforceguide.domain.entity.Firearm; import com.onixbyte.deltaforceguide.enumeration.FirearmType; +import com.onixbyte.deltaforceguide.exeption.BizException; import com.onixbyte.deltaforceguide.repository.FirearmRepository; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -52,5 +53,28 @@ public class FirearmService { return FirearmResponse.from(firearm); } -} + @Transactional + public FirearmResponse updateFirearm(Long id, FirearmRequest request) { + var firearm = firearmRepository.findById(id) + .orElseThrow(() -> new BizException(HttpStatus.NOT_FOUND, "Firearm not found: " + id)); + + firearm.setName(request.name()); + firearm.setType(request.type()); + firearm.setLevel(request.level()); + firearm.setCalibre(request.calibre()); + firearm.setFireRate(request.fireRate()); + firearm.setArmourDamage(request.armourDamage()); + firearm.setBodyDamage(request.bodyDamage()); + firearm.setReview(request.review()); + + return FirearmResponse.from(firearmRepository.save(firearm)); + } + + @Transactional + public void deleteFirearm(Long id) { + Firearm firearm = firearmRepository.findById(id) + .orElseThrow(() -> new BizException(HttpStatus.NOT_FOUND, "Firearm not found: " + id)); + firearmRepository.delete(firearm); + } +}