서비스 두개를 하나의 엔드포인트로 설정했을때 둘 중 하나라도 실행안되면 나머지도 실행안되도록

keep_going·2023년 5월 15일
0

문제해결

목록 보기
32/36
  • 문제)
    결제는 안됐는데(500에러)
    contract 테이블에 데이터 입력되고
    selling 테이블에 status 상태 바뀜(99)
  • 해결)
    @transactional 걸어줌
    꼭 서비스에만 걸어야 하는게 아니라 메서드가 실행되는 로직에 걸어주면 되는것이야
	@PostMapping("/api/add/payment/test")
	@Transactional
	public ResponseEntity<ContractAndPaymentDTO> addConAndPay(@RequestBody ContractAndPaymentDTO conAndPayDto, @RequestParam String type) {
	    try {
	        ContractAddDTO contractDto = conAndPayDto.getContractDto();
	        Contract contractInfo = contractService.save(contractDto, type);
	        sellingService.updateSelling(contractDto.getSellingId(), type); // 여기까진 실행됨
	        
	        PaymentAddDTO paymentDto = conAndPayDto.getPaymentDto();
	        paymentDto.setContractId(contractInfo.getId());
	        Payment paymentInfo = paymentService.addPayment(paymentDto);
	        
	        System.out.println("페이먼트디티오" + paymentDto);
	        
	        ContractAndPaymentDTO contractAndPaymentDTO = new ContractAndPaymentDTO();
	        contractAndPaymentDTO.setContractDto(contractDto);
	        contractAndPaymentDTO.setPaymentDto(paymentDto);

	        return new ResponseEntity<>(contractAndPaymentDTO, HttpStatus.OK);		
	    } catch (Exception e) {
	        return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
	    }
	}
profile
keep going

0개의 댓글