_db = \Config\Database::connect(); } public function getServiceService(): ServiceService { if (!$this->_serviceService) { $this->_serviceService = new ServiceService($this->request); } return $this->_serviceService; } public function getServiceItemService(): ServiceItemService { if (!$this->_servicItemeService) { $this->_servicItemeService = new ServiceItemService($this->request); } return $this->_servicItemeService; } public function getServicePaymentService(): ServicePaymentService { if (!$this->_servicePaymentService) { $this->_servicePaymentService = new ServicePaymentService($this->request); } return $this->_servicePaymentService; } public function billing(): void { //Transaction Start $this->getServiceService()->getModel()->transStart(); try { //서비스중 결제일이 오늘인 서비스 모두 연장처리 $this->getServiceService()->extendBillingAt(date('Y-m-d'), DEFAULTS['STATUS']); //결제일이 오늘보다 큰 서비스가져오기 foreach ($this->getServiceService()->getEntities(['billing_at >' => date("Y-m-d")]) as $serviceEntity) { // echo $serviceEntity->getPK() . ":" . $serviceEntity->getBillingAt() . "\n"; foreach ($this->getServiceItemService()->getEntities(['serviceinfo_uid' => $serviceEntity->getPK()]) as $itemEntity) { //결제정보 ServicePaymentService에 월별 결제만 신규등록 if ($itemEntity->getBillingCycle() == "month") { $this->getServicePaymentService()->createPaymentByServiceItem($itemEntity); } } } // echo $this->getServiceService()->getModel()->getLastQuery() . "\n"; log_message("notice", "Billing 작업을 완료하였습니다."); $this->getServiceService()->getModel()->transCommit(); } catch (\Exception $e) { //Transaction Rollback $this->getServiceService()->getModel()->transRollback(); log_message( "error", "Billing 작업을 실패하였습니다.\n--------------\n" . $e->getMessage() . "\n--------------\n" ); } } }