본문 바로가기
회고

TIL_211122

코동이 2021. 11. 22.

1. Facts(사실, 객관)

 

- 홈페이지 일시불 결제 배송완료 스케쥴러 개발

 

2. Feelings(느낌, 주관)

 홈페이지에서 일시불 결제를 하면 배송현황을 마이페이지에서 확인할 수 있습니다. 그런데, 물류파트가 연동되지 않았기 때문에, 실시간으로 물건 조회현황을 볼 수는 없습니다. 배송현황은 크게 결제완료, 배송준비중, 배송중, 배송완료, 결제취소 4가지로 구분하는데, 기간 시스템에서 출고의뢰, 출고확정, 설치완료, 취소 등의 구분칼럼을 보고 관리자가 직접 입력합니다. 이 번거로운 과정을 자동화하기 위해서 스케쥴러를 사용하도록 했습니다. 만약에 기간 시스템의 배송현황 칼럼들이 바뀐다면, 스케쥴러로 감지해서 확인하는 것입니다. 그렇게 많은 주문 건이 있지는 않지만, 나름 스케쥴러 감지를 통해서 현업의 업무를 줄이게 되었습니다. 문제는 2개의 DB 서버를 이용하는데, 스케쥴러로 INSERT할 때 배송 정보 업데이트가 2번 발생하는 것입니다. 고민 끝에, 등록과 동시에 중복된 내용을 한번 삭제하는 것으로 문제를 해결했습니다.

 

3. Findings (배운 점)

	//취소 자동 업데이트(스케쥴링)
	@Scheduled(cron = "0 15 6,9,12,15,18,0 * * *")
	public void updateDeliveryStatusToCancel() {
		scheDulerService.updateDeliveryStatusToCancel();
	}
	
	//배송중 자동 업데이트(스케쥴링)
	@Scheduled(cron = "20 15 6,9,12,15,18,0 * * *")
	public void updateDeliveryStatusToShipping() {
		scheDulerService.updateDeliveryStatusToShipping();
	}
	
	//배송완료 자동 업데이트(스케쥴링) 
	@Scheduled(cron = "40 15 6,9,12,15,18,0 * * *")
	public void updateDeliveryStatusToDeliveryFinished() {
		scheDulerService.updateDeliveryStatusToDeliveryFinished();
	}

 

cron으로 3시간 주기의 시간을 정하고 스케쥴러를 통해서 기간 시스템의 설치상태를 확인한다. 

 

    @Override
	public void updateDeliveryStatusToCancel() {
		Calendar calendar = Calendar.getInstance();
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        log.info("::::::: 취소된 주문 조회 ::::::: {}", dateFormat.format(calendar.getTime()));
		List<Payment> paymentList = schedulerDao.selectDeliveryStatusNotCanceled();
		if(paymentList.size() != 0) {
	        log.info("스케줄 실행 : " + dateFormat.format(calendar.getTime()));
			log.info("::::::: 취소완료로 업데이트 스케줄러 start ::::::: {}", dateFormat.format(calendar.getTime()));
			
			for(Payment payment : paymentList)
				schedulerDao.insertDeliveryStatusToCancel(payment);
			
			schedulerDao.deleteDeliveryStatusDuplicated("취소완료");
			log.info("::::::: 취소완료로 업데이트 스케줄러 end ::::::: {}", paymentList.size());
		}

 

Calendar와 SimpleDateFormat을 이용해 스케쥴러 동작의 로그도 남기고, 기간 시스템을 확인하여 변화를 감지한다.

쿼리를 통해, 새롭게 바뀐 부분이 있다면 해당 부분을 업데이트하고, 중복되어 등록되는 배송현황을 하나 삭제한다.

 

4. Affirmation (자기 선언)

나는 주도적으로 필요한 개발을 찾아서 제안하는 사람이다

반응형

'회고' 카테고리의 다른 글

TIL_211124  (0) 2021.11.25
TIL_211123  (0) 2021.11.23
TIL_211117  (0) 2021.11.17
TIL_211115  (0) 2021.11.16
TIL_211111  (0) 2021.11.12