addClassName('Coupon'); } public function getFormFields(): array { return [ "clientinfo_uid", "title", "cnt", "status", ]; } public function getFormFilters(): array { return [ "clientinfo_uid", "status", ]; } public function getBatchjobFields(): array { return ['status']; } public function setPayment(string $action, PaymentEntity $paymentEntity, array $paymentDatas): PaymentEntity { switch ($action) { case 'create': $this->create([ 'clientinfo_uid' => $paymentEntity->getClientInfoUID(), 'bank' => null, 'title' => "[결제차감] {$paymentEntity->getTitle()}", 'alias' => array_key_exists('alias', $paymentDatas) ? $paymentDatas['alias'] : null, 'amount' => $paymentEntity->getAmount(), 'status' => STATUS['WIDTHDRAWAL'], ]); break; // case 'update': // case 'delete': default: throw new \Exception(__METHOD__ . "에서 오류발생: {$action}는 지원하지 않는 기능입니다."); } return $paymentEntity; } //기본 기능부분 //고객예치금처리 private function setBalance(array $formDatas): void { //coupon_balance 체크 $entity = $this->getClientService()->getEntity($formDatas['clientinfo_uid']); if (!$entity instanceof ClientEntity) { throw new \Exception("{$formDatas['clientinfo_uid']}에 대한 고객정보를 찾을수 없습니다."); } $cnt = intval($formDatas['cnt']); if ($formDatas['status'] === CouponEntity::DEFAULT_STATUS) { //입금, 쿠폰추가 $entity = $this->getClientService()->deposit($entity, 'coupon_balance', $cnt); } else { // 출금, 쿠폰사용 $entity = $this->getClientService()->withdrawal($entity, 'coupon_balance', $cnt); } } public function create(array $formDatas): CouponEntity { $this->setBalance($formDatas); return parent::create($formDatas); } }