dbmsv3 init...1

This commit is contained in:
choi.jh 2025-10-22 17:53:07 +09:00
parent 3b675cc332
commit 2bbf2a5704
10 changed files with 216 additions and 267 deletions

View File

@ -6,5 +6,6 @@ use App\Entities\Equipment\ServerPartEntity;
interface ServerPartInterface extends EquipmentInterface interface ServerPartInterface extends EquipmentInterface
{ {
public function setServerPart(string $action, ServerPartEntity $serverPartEntity, array $serverPartDatas): ServerPartEntity; public function setServerPart(ServerPartEntity $serverPartEntity): void;
public function unsetServerPart(ServerPartEntity $serverPartEntity): void;
} }

View File

@ -6,5 +6,5 @@ use App\Entities\PaymentEntity;
interface PaymentInterface interface PaymentInterface
{ {
public function setPayment(string $action, PaymentEntity $paymentEntity, array $formDatas): PaymentEntity; public function setPayment(PaymentEntity $paymentEntity): mixed;
} }

View File

@ -53,28 +53,18 @@ class AccountService extends CustomerService implements PaymentInterface
} }
return $this->getClientService()->setAccount($formDatas['status'], $entity, intval($formDatas['amount'])); return $this->getClientService()->setAccount($formDatas['status'], $entity, intval($formDatas['amount']));
} }
public function setPayment(string $action, PaymentEntity $paymentEntity, array $paymentDatas): PaymentEntity public function setPayment(PaymentEntity $paymentEntity): AccountEntity
{ {
switch ($action) { $formDatas = [
case 'create': 'clientinfo_uid' => $paymentEntity->getClientInfoUID(),
$formDatas = [ 'bank' => null,
'clientinfo_uid' => $paymentEntity->getClientInfoUID(), 'title' => "[결제차감] {$paymentEntity->getTitle()}",
'bank' => null, 'issue_at' => date('Y-m-d H:i:s'),
'title' => "[결제차감] {$paymentEntity->getTitle()}", 'amount' => $paymentEntity->getAmount(),
'issue_at' => date('Y-m-d H:i:s'), 'status' => STATUS['WITHDRAWAL'],
'alias' => array_key_exists('alias', $paymentDatas) ? $paymentDatas['alias'] : null, ];
'amount' => $paymentEntity->getAmount(), $this->setBalance($formDatas);
'status' => STATUS['WITHDRAWAL'], return parent::create($formDatas);
];
$this->setBalance($formDatas);
parent::create($formDatas);
break;
// case 'modify':
// case 'delete':
default:
throw new \Exception(__METHOD__ . "에서 오류발생: {$action}는 지원하지 않는 기능입니다.");
}
return $paymentEntity;
} }
//기본 기능부분 //기본 기능부분
//생성 //생성

View File

@ -230,7 +230,7 @@ class ServerPartService extends EquipmentService implements ServerInterface
//서버정보에 해당하는 ServerPart정보 모두 회수처리 후 서버정보에 기본 ServerPart를 다시 등록해준다. //서버정보에 해당하는 ServerPart정보 모두 회수처리 후 서버정보에 기본 ServerPart를 다시 등록해준다.
foreach ($this->getEntities(['serverinfo_uid' => $serverEntity->getPK()]) as $entity) { foreach ($this->getEntities(['serverinfo_uid' => $serverEntity->getPK()]) as $entity) {
//Type에 따른 부품서비스 정의 //Type에 따른 부품서비스 정의
$this->getPartService($entity->getType())->setServerPart('delete', $entity, []); $this->getPartService($entity->getType())->unsetServerPart($entity);
//서버연결정보 식제 //서버연결정보 식제
parent::delete($entity); parent::delete($entity);
} }
@ -301,7 +301,7 @@ class ServerPartService extends EquipmentService implements ServerInterface
$entity = parent::create($formDatas); $entity = parent::create($formDatas);
//후처리작업 //후처리작업
//Type에 따른 부품서비스 정의 //Type에 따른 부품서비스 정의
$this->getPartService($entity->getType())->setServerPart('create', $entity, $formDatas); $this->getPartService($entity->getType())->setServerPart($entity);
//서비스 및 결제정보 처리 //서비스 및 결제정보 처리
switch ($entity->getBilling()) { switch ($entity->getBilling()) {
case PAYMENT['BILLING']['MONTH']: //월별과금일때만 처리 case PAYMENT['BILLING']['MONTH']: //월별과금일때만 처리
@ -312,9 +312,9 @@ class ServerPartService extends EquipmentService implements ServerInterface
$this->getServiceService()->setAmount($this->getServiceService()->getEntity($entity->getServiceInfoUID())); $this->getServiceService()->setAmount($this->getServiceService()->getEntity($entity->getServiceInfoUID()));
break; break;
case PAYMENT['BILLING']['ONETIME']: //일회성일때만 처리 case PAYMENT['BILLING']['ONETIME']: //일회성일때만 처리
$entity = $this->getPaymentService()->setServerPart('create', $entity, $formDatas); $paymentEntity = $this->getPaymentService()->createServerPart($entity);
//결제정보PK정의 //결제정보PK정의
$entity = parent::modify($entity, ['payment_uid' => $entity->getPaymentEntity()->getPK()]); $entity = parent::modify($entity, ['payment_uid' => $paymentEntity->getPK()]);
break; break;
case PAYMENT['BILLING']['BASE']: //기본처리 case PAYMENT['BILLING']['BASE']: //기본처리
//아무처리 않함 //아무처리 않함
@ -339,7 +339,7 @@ class ServerPartService extends EquipmentService implements ServerInterface
throw new \Exception("서버 정보가 지정되지 않았습니다."); throw new \Exception("서버 정보가 지정되지 않았습니다.");
} }
//수정전 정보 //수정전 정보
$oldEntity = clone $entity; //반드시 clone 할것 $this->getPartService($entity->getType())->unsetServerPart($entity);
//서버연결정보 수정 //서버연결정보 수정
$formDatas["clientinfo_uid"] = $serverEntity->getClientInfoUID(); $formDatas["clientinfo_uid"] = $serverEntity->getClientInfoUID();
$formDatas["serviceinfo_uid"] = $serverEntity->getServiceInfoUID(); $formDatas["serviceinfo_uid"] = $serverEntity->getServiceInfoUID();
@ -347,8 +347,7 @@ class ServerPartService extends EquipmentService implements ServerInterface
$entity = parent::modify($entity, $formDatas); $entity = parent::modify($entity, $formDatas);
//후처리작업 //후처리작업
//Type에 따른 부품서비스 정의 //Type에 따른 부품서비스 정의
$this->getPartService($entity->getType())->setServerPart('delete', $oldEntity, $formDatas); $this->getPartService($entity->getType())->setServerPart($entity);
$this->getPartService($entity->getType())->setServerPart('create', $entity, $formDatas);
//서비스 및 결제정보 처리 //서비스 및 결제정보 처리
switch ($entity->getBilling()) { switch ($entity->getBilling()) {
case PAYMENT['BILLING']['MONTH']: //월별과금일때만 처리 case PAYMENT['BILLING']['MONTH']: //월별과금일때만 처리
@ -358,11 +357,10 @@ class ServerPartService extends EquipmentService implements ServerInterface
} }
break; break;
case PAYMENT['BILLING']['ONETIME']: //일회성일때만 처리 case PAYMENT['BILLING']['ONETIME']: //일회성일때만 처리
if ($oldEntity->getPaymentUID() !== null) { //결제정보가 정의되어 있으면
$oldEntity = $this->getPaymentService()->setServerPart('delete', $entity, []);
}
if ($entity->getPaymentUID() !== null) { //결제정보가 정의되어 있으면 if ($entity->getPaymentUID() !== null) { //결제정보가 정의되어 있으면
$entity = $this->getPaymentService()->setServerPart('create', $entity, $formDatas); $paymentEntity = $this->getPaymentService()->modifyServerPart($entity);
//결제정보PK정의
$entity = parent::modify($entity, ['payment_uid' => $paymentEntity->getPK()]);
} }
break; break;
case PAYMENT['BILLING']['BASE']: //기본처리 case PAYMENT['BILLING']['BASE']: //기본처리
@ -380,7 +378,7 @@ class ServerPartService extends EquipmentService implements ServerInterface
public function delete(mixed $entity): ServerPartEntity public function delete(mixed $entity): ServerPartEntity
{ {
//Type에 따른 부품서비스 정의 //Type에 따른 부품서비스 정의
$this->getPartService($entity->getType())->setServerPart('delete', $entity, []); $this->getPartService($entity->getType())->unsetServerPart($entity);
//서버연결정보 식제 //서버연결정보 식제
parent::delete($entity); parent::delete($entity);
//서비스 및 결제정보 후처리작업 //서비스 및 결제정보 후처리작업
@ -393,7 +391,7 @@ class ServerPartService extends EquipmentService implements ServerInterface
break; break;
case PAYMENT['BILLING']['ONETIME']: //일회성일때만 처리 case PAYMENT['BILLING']['ONETIME']: //일회성일때만 처리
if ($entity->getPaymentUID() !== null) { //결제정보가 정의되어 있으면 if ($entity->getPaymentUID() !== null) { //결제정보가 정의되어 있으면
$entity = $this->getPaymentService()->setServerPart('delete', $entity, []); $this->getPaymentService()->deleteServerPart($entity);
} }
break; break;
case PAYMENT['BILLING']['BASE']: //기본처리 case PAYMENT['BILLING']['BASE']: //기본처리

View File

@ -96,47 +96,40 @@ class CSService extends PartService
} }
//서버파트관련 작업 //서버파트관련 작업
public function setServerPart(string $action, ServerPartEntity $serverPartEntity, array $serverPartDatas): ServerPartEntity public function setServerPart(ServerPartEntity $serverPartEntity): void
{ {
switch ($action) { $formDatas = [];
case 'create': $formDatas['clientinfo_uid'] = $serverPartEntity->getClientInfoUID();
$formDatas = []; $formDatas['serviceinfo_uid'] = $serverPartEntity->getServiceInfoUID();
$formDatas['clientinfo_uid'] = $serverPartEntity->getClientInfoUID(); $formDatas['serverinfo_uid'] = $serverPartEntity->getServerInfoUID();
$formDatas['serviceinfo_uid'] = $serverPartEntity->getServiceInfoUID(); $formDatas['status'] = STATUS['OCCUPIED'];
$formDatas['serverinfo_uid'] = $serverPartEntity->getServerInfoUID(); if (!array_key_exists('status', $formDatas)) {
$formDatas['status'] = STATUS['OCCUPIED']; throw new \Exception(__METHOD__ . "에서 오류발생: CS상태가 설정되지 않았습니다.");
if (!array_key_exists('status', $formDatas)) {
throw new \Exception(__METHOD__ . "에서 오류발생: CS상태가 설정되지 않았습니다.");
}
//CS정보가져오기
$entity = $this->getEntity($serverPartEntity->getPartUID());
if (!$entity instanceof CSEntity) {
throw new \Exception("{$serverPartEntity->getPartUID()}에 해당하는 CS정보를 찾을수없습니다.");
}
//CS정보 수정
$entity = parent::modify($entity, $formDatas);
break;
case 'delete': //반드시 serverPartEntity 사용해야함
$formDatas = [];
$formDatas['clientinfo_uid'] = null;
$formDatas['serviceinfo_uid'] = null;
$formDatas['serverinfo_uid'] = null;
$formDatas['status'] = STATUS['AVAILABLE'];
if (!array_key_exists('status', $formDatas)) {
throw new \Exception(__METHOD__ . "에서 오류발생: CS상태가 설정되지 않았습니다.");
}
//CS정보가져오기
$entity = $this->getEntity($serverPartEntity->getPartUID());
if (!$entity instanceof CSEntity) {
throw new \Exception("{$serverPartEntity->getPartUID()}에 해당하는 CS정보를 찾을수없습니다.");
}
//CS정보 수정
$entity = parent::modify($entity, $formDatas);
break;
default:
$entity = parent::setServerPart($action, $serverPartEntity, $serverPartDatas);
break;
} }
return $serverPartEntity; //CS정보가져오기
$entity = $this->getEntity($serverPartEntity->getPartUID());
if (!$entity instanceof CSEntity) {
throw new \Exception("{$serverPartEntity->getPartUID()}에 해당하는 CS정보를 찾을수없습니다.");
}
//CS정보 수정
parent::modify($entity, $formDatas);
}
public function unsetServerPart(ServerPartEntity $serverPartEntity): void
{
$formDatas = [];
$formDatas['clientinfo_uid'] = null;
$formDatas['serviceinfo_uid'] = null;
$formDatas['serverinfo_uid'] = null;
$formDatas['status'] = STATUS['AVAILABLE'];
if (!array_key_exists('status', $formDatas)) {
throw new \Exception(__METHOD__ . "에서 오류발생: CS상태가 설정되지 않았습니다.");
}
//CS정보가져오기
$entity = $this->getEntity($serverPartEntity->getPartUID());
if (!$entity instanceof CSEntity) {
throw new \Exception("{$serverPartEntity->getPartUID()}에 해당하는 CS정보를 찾을수없습니다.");
}
//CS정보 수정
parent::modify($entity, $formDatas);
} }
} }

View File

@ -54,25 +54,17 @@ class DISKService extends PartService
} }
//서버파트관련 작업 //서버파트관련 작업
public function setServerPart(string $action, ServerPartEntity $serverPartEntity, array $serverPartDatas): ServerPartEntity public function unsetServerPart(ServerPartEntity $serverPartEntity): void
{ {
switch ($action) { //부품정보가져오기
case 'delete': //반드시 serverPartEntity 사용해야함 $entity = $this->getEntity($serverPartEntity->getPartUID());
//부품정보가져오기 if (!$entity) {
$entity = $this->getEntity($serverPartEntity->getPartUID()); throw new \Exception("{$serverPartEntity->getPartUID()}에 해당하는 부품정보를 찾을수없습니다.");
if (!$entity) {
throw new \Exception("{$serverPartEntity->getPartUID()}에 해당하는 부품정보를 찾을수없습니다.");
}
//부품정보에 서버정보 설정 및 서비스,고객정보 정의
if ($entity->getStock() < $serverPartEntity->getCnt()) {
throw new \Exception("현재 재고수[{$entity->getStock()}]보다 지정하신 갯수({$serverPartEntity->getCnt()})가 더 많습니다.");
}
$entity = parent::modify($entity, ['format' => $entity->getFormat() + $serverPartEntity->getCnt()]);
break;
default:
$entity = parent::setServerPart($action, $serverPartEntity, $serverPartDatas);
break;
} }
return $serverPartEntity; //부품정보에 서버정보 설정 및 서비스,고객정보 정의
if ($entity->getStock() < $serverPartEntity->getCnt()) {
throw new \Exception("현재 재고수[{$entity->getStock()}]보다 지정하신 갯수({$serverPartEntity->getCnt()})가 더 많습니다.");
}
parent::modify($entity, ['format' => $entity->getFormat() + $serverPartEntity->getCnt()]);
} }
} }

View File

@ -150,51 +150,44 @@ class IPService extends PartService implements ServerInterface
} }
//서버파트관련 작업 //서버파트관련 작업
public function setServerPart(string $action, ServerPartEntity $serverPartEntity, array $serverPartDatas): ServerPartEntity public function setServerPart(ServerPartEntity $serverPartEntity): void
{ {
switch ($action) { $formDatas = [];
case 'create': $formDatas['clientinfo_uid'] = $serverPartEntity->getClientInfoUID();
$formDatas = []; $formDatas['serviceinfo_uid'] = $serverPartEntity->getServiceInfoUID();
$formDatas['clientinfo_uid'] = $serverPartEntity->getClientInfoUID(); $formDatas['serverinfo_uid'] = $serverPartEntity->getServerInfoUID();
$formDatas['serviceinfo_uid'] = $serverPartEntity->getServiceInfoUID(); $formDatas['status'] = STATUS['OCCUPIED'];
$formDatas['serverinfo_uid'] = $serverPartEntity->getServerInfoUID(); if (!array_key_exists('status', $formDatas)) {
$formDatas['status'] = STATUS['OCCUPIED']; throw new \Exception(__METHOD__ . ":에서 오류발생: IP상태가 설정되지 않았습니다.");
if (!array_key_exists('status', $formDatas)) {
throw new \Exception(__METHOD__ . ":에서 {$action}오류발생: IP상태가 설정되지 않았습니다.");
}
//IP정보가져오기
$entity = $this->getEntity($serverPartEntity->getPartUID());
if (!$entity instanceof IPEntity) {
throw new \Exception("{$serverPartEntity->getPartUID()}에 해당하는 IP정보를 찾을수없습니다.");
}
if ($entity->getStatus() !== STATUS['AVAILABLE']) {
throw new \Exception(__METHOD__ . ":에서 {$action}오류발생: {$entity->getIP()}는 사용중인 IP입니다.");
}
//IP정보 수정
$entity = parent::modify($entity, $formDatas);
break;
case 'delete': //반드시 serverPartEntity 사용해야함
$formDatas = [];
$formDatas['clientinfo_uid'] = null;
$formDatas['serviceinfo_uid'] = null;
$formDatas['serverinfo_uid'] = null;
$formDatas['old_clientinfo_uid'] = $serverPartEntity->getClientInfoUID() ?? null;
$formDatas['status'] = STATUS['AVAILABLE'];
if (!array_key_exists('status', $formDatas)) {
throw new \Exception(__METHOD__ . ":에서 {$action}오류발생: IP상태가 설정되지 않았습니다.");
}
//IP정보가져오기
$entity = $this->getEntity($serverPartEntity->getPartUID());
if (!$entity instanceof IPEntity) {
throw new \Exception("{$serverPartEntity->getPartUID()}에 해당하는 IP정보를 찾을수없습니다.");
}
//IP정보 수정
$entity = parent::modify($entity, $formDatas);
break;
default:
$entity = parent::setServerPart($action, $serverPartEntity, $serverPartDatas);
break;
} }
return $serverPartEntity; //IP정보가져오기
$entity = $this->getEntity($serverPartEntity->getPartUID());
if (!$entity instanceof IPEntity) {
throw new \Exception("{$serverPartEntity->getPartUID()}에 해당하는 IP정보를 찾을수없습니다.");
}
if ($entity->getStatus() !== STATUS['AVAILABLE']) {
throw new \Exception(__METHOD__ . ":에서 오류발생: {$entity->getIP()}는 사용중인 IP입니다.");
}
//IP정보 수정
parent::modify($entity, $formDatas);
}
public function unsetServerPart(ServerPartEntity $serverPartEntity): void
{
$formDatas = [];
$formDatas['clientinfo_uid'] = null;
$formDatas['serviceinfo_uid'] = null;
$formDatas['serverinfo_uid'] = null;
$formDatas['old_clientinfo_uid'] = $serverPartEntity->getClientInfoUID() ?? null;
$formDatas['status'] = STATUS['AVAILABLE'];
if (!array_key_exists('status', $formDatas)) {
throw new \Exception(__METHOD__ . ":에서 오류발생: IP상태가 설정되지 않았습니다.");
}
//IP정보가져오기
$entity = $this->getEntity($serverPartEntity->getPartUID());
if (!$entity instanceof IPEntity) {
throw new \Exception("{$serverPartEntity->getPartUID()}에 해당하는 IP정보를 찾을수없습니다.");
}
//IP정보 수정
parent::modify($entity, $formDatas);
} }
} }

View File

@ -17,37 +17,30 @@ abstract class PartService extends CommonService implements ServerPartInterface
} }
//서버파트관련 작업 //서버파트관련 작업
public function setServerPart(string $action, ServerPartEntity $serverPartEntity, array $serverPartDatas): ServerPartEntity public function setServerPart(ServerPartEntity $serverPartEntity): void
{ {
switch ($action) { //부품정보가져오기
case 'create': $entity = $this->getEntity($serverPartEntity->getPartUID());
//부품정보가져오기 if (!$entity) {
$entity = $this->getEntity($serverPartEntity->getPartUID()); throw new \Exception("{$serverPartEntity->getPartUID()}에 해당하는 부품정보를 찾을수없습니다.");
if (!$entity) {
throw new \Exception("{$serverPartEntity->getPartUID()}에 해당하는 부품정보를 찾을수없습니다.");
}
//부품정보에 서버정보 설정 및 서비스,고객정보 정의
if ($entity->getStock() < $serverPartEntity->getCnt()) {
throw new \Exception("현재 재고수[{$entity->getStock()}]보다 지정하신 갯수({$serverPartEntity->getCnt()})가 더 많습니다.");
}
$entity = parent::modify($entity, ['stock' => $entity->getStock() - $serverPartEntity->getCnt()]);
break;
case 'delete':
//부품정보가져오기
$entity = $this->getEntity($serverPartEntity->getPartUID());
if (!$entity) {
throw new \Exception("{$serverPartEntity->getPartUID()}에 해당하는 부품정보를 찾을수없습니다.");
}
//부품정보에 서버정보 설정 및 서비스,고객정보 정의
if ($entity->getStock() < $serverPartEntity->getCnt()) {
throw new \Exception("현재 재고수[{$entity->getStock()}]보다 지정하신 갯수({$serverPartEntity->getCnt()})가 더 많습니다.");
}
$entity = parent::modify($entity, ['stock' => $entity->getStock() + $serverPartEntity->getCnt()]);
break;
default:
throw new \Exception("{$action}은 정의되지 않은 작업입니다.");
// break;
} }
return $serverPartEntity; //부품정보에 서버정보 설정 및 서비스,고객정보 정의
if ($entity->getStock() < $serverPartEntity->getCnt()) {
throw new \Exception("현재 재고수[{$entity->getStock()}]보다 지정하신 갯수({$serverPartEntity->getCnt()})가 더 많습니다.");
}
parent::modify($entity, ['stock' => $entity->getStock() - $serverPartEntity->getCnt()]);
}
public function unsetServerPart(ServerPartEntity $serverPartEntity): void
{
//부품정보가져오기
$entity = $this->getEntity($serverPartEntity->getPartUID());
if (!$entity) {
throw new \Exception("{$serverPartEntity->getPartUID()}에 해당하는 부품정보를 찾을수없습니다.");
}
//부품정보에 서버정보 설정 및 서비스,고객정보 정의
if ($entity->getStock() < $serverPartEntity->getCnt()) {
throw new \Exception("현재 재고수[{$entity->getStock()}]보다 지정하신 갯수({$serverPartEntity->getCnt()})가 더 많습니다.");
}
parent::modify($entity, ['stock' => $entity->getStock() + $serverPartEntity->getCnt()]);
} }
} }

View File

@ -128,47 +128,40 @@ class SWITCHService extends PartService implements ServerInterface
} }
} }
//서버파트관련 작업 //서버파트관련 작업
public function setServerPart(string $action, ServerPartEntity $serverPartEntity, array $serverPartDatas): ServerPartEntity public function setServerPart(ServerPartEntity $serverPartEntity): void
{ {
switch ($action) { $formDatas = [];
case 'create': $formDatas['clientinfo_uid'] = $serverPartEntity->getClientInfoUID();
$formDatas = []; $formDatas['serviceinfo_uid'] = $serverPartEntity->getServiceInfoUID();
$formDatas['clientinfo_uid'] = $serverPartEntity->getClientInfoUID(); $formDatas['serverinfo_uid'] = $serverPartEntity->getServerInfoUID();
$formDatas['serviceinfo_uid'] = $serverPartEntity->getServiceInfoUID(); $formDatas['status'] = STATUS['OCCUPIED'];
$formDatas['serverinfo_uid'] = $serverPartEntity->getServerInfoUID(); if (!array_key_exists('status', $formDatas)) {
$formDatas['status'] = STATUS['OCCUPIED']; throw new \Exception(__METHOD__ . "에서 오류발생: SWITCH상태가 설정되지 않았습니다.");
if (!array_key_exists('status', $formDatas)) {
throw new \Exception(__METHOD__ . "에서 오류발생: SWITCH상태가 설정되지 않았습니다.");
}
//SWITCH정보가져오기
$entity = $this->getEntity($serverPartEntity->getPartUID());
if (!$entity instanceof SWITCHEntity) {
throw new \Exception("{$serverPartEntity->getPartUID()}에 해당하는 SWITCH정보를 찾을수없습니다.");
}
//SWITCH정보 수정
$entity = parent::modify($entity, $formDatas);
break;
case 'delete': //반드시 oldServerPartEntity 사용해야함
$formDatas = [];
$formDatas['clientinfo_uid'] = null;
$formDatas['serviceinfo_uid'] = null;
$formDatas['serverinfo_uid'] = null;
$formDatas['status'] = STATUS['AVAILABLE'];
if (!array_key_exists('status', $formDatas)) {
throw new \Exception(__METHOD__ . "에서 오류발생: SWITCH상태가 설정되지 않았습니다.");
}
//SWITCH정보가져오기
$entity = $this->getEntity($serverPartEntity->getPartUID());
if (!$entity instanceof SWITCHEntity) {
throw new \Exception("{$serverPartEntity->getPartUID()}에 해당하는 SWITCH정보를 찾을수없습니다.");
}
//SWITCH정보 수정
$entity = parent::modify($entity, $formDatas);
break;
default:
$entity = parent::setServerPart($action, $serverPartEntity, $serverPartDatas);
break;
} }
return $serverPartEntity; //SWITCH정보가져오기
$entity = $this->getEntity($serverPartEntity->getPartUID());
if (!$entity instanceof SWITCHEntity) {
throw new \Exception("{$serverPartEntity->getPartUID()}에 해당하는 SWITCH정보를 찾을수없습니다.");
}
//SWITCH정보 수정
parent::modify($entity, $formDatas);
}
public function unsetServerPart(ServerPartEntity $serverPartEntity): void
{
$formDatas = [];
$formDatas['clientinfo_uid'] = null;
$formDatas['serviceinfo_uid'] = null;
$formDatas['serverinfo_uid'] = null;
$formDatas['status'] = STATUS['AVAILABLE'];
if (!array_key_exists('status', $formDatas)) {
throw new \Exception(__METHOD__ . "에서 오류발생: SWITCH상태가 설정되지 않았습니다.");
}
//SWITCH정보가져오기
$entity = $this->getEntity($serverPartEntity->getPartUID());
if (!$entity instanceof SWITCHEntity) {
throw new \Exception("{$serverPartEntity->getPartUID()}에 해당하는 SWITCH정보를 찾을수없습니다.");
}
//SWITCH정보 수정
parent::modify($entity, $formDatas);
} }
} }

View File

@ -108,7 +108,7 @@ class PaymentService extends CommonService
} }
return $unPaids; return $unPaids;
} }
//서비스 생성 //서비스 생성(월과금 결제)
public function createService(ServiceEntity $serviceEntity): PaymentEntity public function createService(ServiceEntity $serviceEntity): PaymentEntity
{ {
$formDatas = []; $formDatas = [];
@ -159,65 +159,60 @@ class PaymentService extends CommonService
$this->delete($entity); $this->delete($entity);
} }
} }
final public function setServerPart(string $action, ServerPartEntity $serverPartEntity, array $servicePartFormDatas): ServerPartEntity //서버파트(일회성과금)
final public function createServerPart(ServerPartEntity $serverPartEntity): PaymentEntity
{ {
switch ($action) { $formDatas = [];
case 'create': //일회성 서비스 생성용 $formDatas['clientinfo_uid'] = $serverPartEntity->getClientInfoUID();
$formDatas = []; $formDatas['serviceinfo_uid'] = $serverPartEntity->getServiceInfoUID();
$formDatas['clientinfo_uid'] = $serverPartEntity->getClientInfoUID(); //서버연결정보 수정시에 필요함
$formDatas['serviceinfo_uid'] = $serverPartEntity->getServiceInfoUID(); $formDatas['serverinfo_uid'] = $serverPartEntity->getServerInfoUID();
$formDatas['serverinfo_uid'] = $serverPartEntity->getServerInfoUID(); //서버연결정보 수정시에 필요함 //타이틀은 기타의 경우 직접작성한 제목을 등록하고 아닌경우는 Part의 Title을 사용한다.
//타이틀은 기타의 경우 직접작성한 제목을 등록하고 아닌경우는 Part의 Title을 사용한다. $formDatas['title'] = $serverPartEntity->getPartEntity()->getTitle();
$formDatas['title'] = $serverPartEntity->getPartEntity()->getTitle(); $formDatas['amount'] = $serverPartEntity->getTotalAmount(); //단가*cnt
$formDatas['amount'] = $serverPartEntity->getTotalAmount(); //단가*cnt $formDatas['billing'] = $serverPartEntity->getBilling();
$formDatas['billing'] = $serverPartEntity->getBilling(); //당일결체일로 설정
//당일결체일로 설정 $formDatas['billing_at'] = date("Y-m-d");
$formDatas['billing_at'] = date("Y-m-d"); return parent::create($formDatas);
$entity = parent::create($formDatas);
break;
case 'modify': //일회성 서비스 수정용
if ($serverPartEntity->getPaymentUID() === null) {
throw new \Exception(__METHOD__ . "에서 {$action}오류발생:일회성서비스정보에 결제정보가 정의되지 않았습니다.");
}
$entity = $this->getEntity($serverPartEntity->getPaymentUID());
if (!$entity instanceof PaymentEntity) {
throw new \Exception(__METHOD__ . "에서 {$action}오류발생:결제정보를 찾을수 없습니다.");
}
if ($entity->getStatus() === STATUS['PAID']) {
throw new \Exception(__METHOD__ . "에서 {$action}오류발생:결제완료된 서비스는 수정할수 없습니다.");
}
$formDatas = [];
$formDatas['clientinfo_uid'] = $serverPartEntity->getClientInfoUID();
$formDatas['serviceinfo_uid'] = $serverPartEntity->getServiceInfoUID();
$formDatas['serverinfo_uid'] = $serverPartEntity->getServerInfoUID(); //서버연결정보 수정시에 필요함
//타이틀은 기타의 경우 직접작성한 제목을 등록하고 아닌경우는 Part의 Title을 사용한다.
$formDatas['title'] = $serverPartEntity->getPartEntity()->getTitle();
$formDatas['amount'] = $serverPartEntity->getTotalAmount(); //단가*cnt
$formDatas['billing'] = $serverPartEntity->getBilling();
$entity = parent::modify($entity, $formDatas);
break;
case 'delete':
if ($serverPartEntity->getPaymentUID() === null) {
throw new \Exception(__METHOD__ . "에서 {$action}오류발생:일회성서비스정보에 결제정보가 정의되지 않았습니다.");
}
$entity = $this->getEntity($serverPartEntity->getPaymentUID());
if (!$entity instanceof PaymentEntity) {
throw new \Exception(__METHOD__ . "에서 {$action}오류발생:결제정보를 찾을수 없습니다.");
}
if ($entity->getStatus() === STATUS['PAID']) {
throw new \Exception(__METHOD__ . "에서 {$action}오류발생:결제완료된 서비스는 수정할수 없습니다.");
}
$entity = parent::delete($entity);
break;
default:
throw new \Exception(__METHOD__ . "에서 오류발생:{$action}은 정의되지 않은 작업입니다.");
// break;
}
if (!$entity instanceof PaymentEntity) {
throw new \Exception(__METHOD__ . "에서 {$action}->setPaymentEntity오류발생:결제정보를 찾을수 없습니다.");
}
return $serverPartEntity->setPaymentEntity($entity);
} }
final public function modifyServerPart(ServerPartEntity $serverPartEntity): PaymentEntity
{
if ($serverPartEntity->getPaymentUID() === null) {
throw new \Exception(__METHOD__ . "에서 오류발생:일회성서비스정보에 결제정보가 정의되지 않았습니다.");
}
$entity = $this->getEntity($serverPartEntity->getPaymentUID());
if (!$entity instanceof PaymentEntity) {
throw new \Exception(__METHOD__ . "에서 오류발생:결제정보를 찾을수 없습니다.");
}
if ($entity->getStatus() === STATUS['PAID']) {
throw new \Exception(__METHOD__ . "에서 오류발생:결제완료된 서비스는 수정할수 없습니다.");
}
$formDatas = [];
$formDatas['clientinfo_uid'] = $serverPartEntity->getClientInfoUID();
$formDatas['serviceinfo_uid'] = $serverPartEntity->getServiceInfoUID();
//서버연결정보 수정시에 필요함
$formDatas['serverinfo_uid'] = $serverPartEntity->getServerInfoUID();
//타이틀은 기타의 경우 직접작성한 제목을 등록하고 아닌경우는 Part의 Title을 사용한다.
$formDatas['title'] = $serverPartEntity->getPartEntity()->getTitle();
$formDatas['amount'] = $serverPartEntity->getTotalAmount(); //단가*cnt
$formDatas['billing'] = $serverPartEntity->getBilling();
return parent::modify($entity, $formDatas);
}
final public function deleteServerPart(ServerPartEntity $serverPartEntity): void
{
if ($serverPartEntity->getPaymentUID() === null) {
throw new \Exception(__METHOD__ . "에서 오류발생:일회성서비스정보에 결제정보가 정의되지 않았습니다.");
}
$entity = $this->getEntity($serverPartEntity->getPaymentUID());
if (!$entity instanceof PaymentEntity) {
throw new \Exception(__METHOD__ . "에서 오류발생:결제정보를 찾을수 없습니다.");
}
if ($entity->getStatus() === STATUS['PAID']) {
throw new \Exception(__METHOD__ . "에서 오류발생:결제완료된 서비스는 수정할수 없습니다.");
}
parent::delete($entity);
}
//Invoice 관련 //Invoice 관련
public function getInvoiceData(ClientEntity $clientEntity, ServiceEntity $serviceEntity, PaymentEntity $entity, array $rows): array public function getInvoiceData(ClientEntity $clientEntity, ServiceEntity $serviceEntity, PaymentEntity $entity, array $rows): array
{ {
@ -291,7 +286,8 @@ class PaymentService extends CommonService
'status' => $entity->getStatus() 'status' => $entity->getStatus()
]); ]);
//예치금처리 //예치금처리
return $this->getAccountService()->setPayment('create', $entity, []); $this->getAccountService()->setPayment($entity);
return $entity;
} }
//결제정보 삭제 //결제정보 삭제
public function delete(mixed $entity): PaymentEntity public function delete(mixed $entity): PaymentEntity