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