Untitled
unknown
plain_text
a year ago
5.0 kB
4
Indexable
@RestController @RequestMapping("/deals") public class DealController { private final DealService dealService; @Autowired public DealController(DealService dealService) { this.dealService = dealService; } @PostMapping public ResponseEntity<Deal> createDeal(@RequestBody Deal deal) { Deal createdDeal = dealService.createDeal(deal); return ResponseEntity.ok(createdDeal); } @PostMapping("/{dealId}/buy") public ResponseEntity<String> buyDeal(@PathVariable int dealId, @RequestParam int userId) { boolean success = dealService.buyDeal(dealId, userId); if (success) { return ResponseEntity.ok("Deal purchased successfully"); } else { return ResponseEntity.badRequest().body("Failed to purchase deal"); } } @PutMapping("/{dealId}") public ResponseEntity<String> updateDeal(@PathVariable int dealId, @RequestBody Deal updatedDeal) { // Logic to update deal using dealId and updatedDeal data return ResponseEntity.ok("Deal updated successfully"); } @DeleteMapping("/{dealId}") public ResponseEntity<String> endDeal(@PathVariable int dealId) { // Logic to end a deal by dealId return ResponseEntity.ok("Deal ended successfully"); } // Other API endpoints for additional functionalities } @Service public class DealServiceImpl implements DealService { private static final Logger LOGGER = LoggerFactory.getLogger(DealServiceImpl.class); @Autowired private DealRepository dealRepository; @Autowired private PurchaseHistoryRepository purchaseHistoryRepository; @Override @Transactional public Deal createDeal(Deal deal) { validateDealInput(deal); try { return dealRepository.save(deal); } catch (Exception e) { LOGGER.error("Error occurred while creating deal: {}", e.getMessage()); throw new RuntimeException("Failed to create deal"); } } // Other methods private void validateDealInput(Deal deal) { // Implement input validation for Deal object // For example, check if price, start time, and end time are valid if (deal.getPrice() <= 0 || deal.getStartTime().isAfter(deal.getEndTime())) { throw new IllegalArgumentException("Invalid deal details"); } } } @RestController @RequestMapping("/deals") public class DealController { private final DealService dealService; @Autowired public DealController(DealService dealService) { this.dealService = dealService; } @PostMapping public ResponseEntity<Deal> createDeal(@RequestBody Deal deal) { Deal createdDeal = dealService.createDeal(deal); return ResponseEntity.ok(createdDeal); } // Other endpoints @PutMapping("/{dealId}") public ResponseEntity<String> updateDeal(@PathVariable int dealId, @RequestBody Deal updatedDeal) { if (updatedDeal.getDealId() != dealId) { return ResponseEntity.badRequest().body("Deal ID mismatch"); } // Implement update logic return ResponseEntity.ok("Deal updated successfully"); } @DeleteMapping("/{dealId}") public ResponseEntity<String> endDeal(@PathVariable int dealId) { // Implement end deal logic return ResponseEntity.ok("Deal ended successfully"); } } @Service public class DealServiceImpl implements DealService { private static final Logger LOGGER = LoggerFactory.getLogger(DealServiceImpl.class); @Autowired private DealRepository dealRepository; @Autowired private PurchaseHistoryRepository purchaseHistoryRepository; @Override @Transactional public Deal createDeal(Deal deal) { validateDealInput(deal); try { return dealRepository.save(deal); } catch (Exception e) { LOGGER.error("Error occurred while creating deal: {}", e.getMessage()); throw new RuntimeException("Failed to create deal"); } } @Override public boolean userAlreadyPurchased(Deal deal, int userId) { return purchaseHistoryRepository.existsByUserIdAndDealId(userId, deal.getDealId()); } @Override @Transactional public boolean buyDeal(int dealId, int userId) { Deal deal = dealRepository.findById(dealId).orElse(null); if (deal != null && canBuyDeal(deal, userId)) { deal.setItemsSold(deal.getItemsSold() + 1); dealRepository.save(deal); return true; } return false; } private boolean canBuyDeal(Deal deal, int userId) { LocalDateTime currentTime = LocalDateTime.now(); return currentTime.isBefore(deal.getEndTime()) && deal.getItemsSold() < deal.getItemsAvailable() && !userAlreadyPurchased(deal, userId); } private void validateDealInput(Deal deal) { // Validation logic } }
Editor is loading...
Leave a Comment