diff --git a/app/Config/Constants.php b/app/Config/Constants.php index d40e674..03867d1 100644 --- a/app/Config/Constants.php +++ b/app/Config/Constants.php @@ -435,6 +435,41 @@ define( define("SERVICE", [ "NEW_INTERVAL" => $_ENV['SERVICE_NEW_INTERVAL'] ?? $_SERVER['SERVICE_NEW_INTERVAL'] ?? 7, ]); +define("SERVER", [ + "TYPES" => [ + "NORMAL" => 'normal', + "DEFENCE" => 'defence', + "DEDICATED" => 'dedicated', + "VPN" => 'vpn', + "EVENT" => 'event', + "TEST" => 'test', + "ALTERNATIVE" => 'alternative', + "INHOUSE" => 'inhouse', + "COLOCATION" => 'colocation', + ], + "OS" => [ + "CENTOS7" => "CentOS7", + "CENTOS8" => "CentOS8", + "CENTOS9" => "CentOS9", + "CENTOS10" => "CentOS10", + "UBUNTU20.04" => "Ubuntu20.04", + "UBUNTU22.04" => "Ubuntu22.04", + "UBUNTU23.04" => "Ubuntu23.04", + "UBUNTU24.04" => "Ubuntu24.04", + "UBUNTU25.04" => "Ubuntu25.04", + "DEBIAN10" => "Debian10", + "DEBIAN11" => "Debian11", + "DEBIAN12" => "Debian12", + "WINDOWS10" => "Windows10", + "WINDOWS11" => "Windows11", + "WINDOWS2008R2" => "Windows2008R2", + "WINDOWS2012R2" => "Windows2012R2", + "WINDOWS2016R2" => "Windows2016R2", + "WINDOWS2019R2" => "Windows2019R2", + "WINDOWS2022R2" => "Windows2022R2", + "WINDOWS2024R2" => "Windows2024R2", + ], +]); //서버파트 관련 define("SERVERPART", [ "CNT_RANGE" => array_combine(range(1, 10), range(1, 10)), diff --git a/app/Forms/Part/DISKForm.php b/app/Forms/Part/DISKForm.php index 77e3be7..e65b5dd 100644 --- a/app/Forms/Part/DISKForm.php +++ b/app/Forms/Part/DISKForm.php @@ -14,6 +14,7 @@ class DISKForm extends PartForm "title", "price", "used", + "format", "stock", ]; $filters = [ @@ -27,14 +28,14 @@ class DISKForm extends PartForm break; case 'modify': case 'modify_form': - $fields = [...$fields, "format", 'status']; + $fields = [...$fields, 'status']; break; case 'view': - $fields = [...$fields, "format", 'status', 'created_at']; + $fields = [...$fields, 'status', 'created_at']; break; case 'index': case 'download': - $fields = [...$fields, "format", 'status', 'created_at']; + $fields = [...$fields, 'status', 'created_at']; break; } $this->setFormFields($fields); diff --git a/app/Language/ko/Equipment/Server.php b/app/Language/ko/Equipment/Server.php index f55df8e..3e0fcb9 100644 --- a/app/Language/ko/Equipment/Server.php +++ b/app/Language/ko/Equipment/Server.php @@ -22,42 +22,21 @@ return [ "serverpartinfo" => "부품정보", ], "TYPE" => [ - 'normal' => "일반", - 'defence' => "방어", - 'dedicated' => "전용", - 'vpn' => "VPN", - 'event' => "이벤트", - 'test' => "테스트", - 'alternative' => "대체", - 'ours' => "자사용", - 'colocation' => "코로케이션", + SERVER['TYPES']['NORMAL'] => "일반", + SERVER['TYPES']['DEFENCE'] => "방어", + SERVER['TYPES']['DEDICATED'] => "전용", + SERVER['TYPES']['VPN'] => "VPN", + SERVER['TYPES']['EVENT'] => "이벤트", + SERVER['TYPES']['TEST'] => "테스트", + SERVER['TYPES']['ALTERNATIVE'] => "대체", + SERVER['TYPES']['INHOUSE'] => "자사용", + SERVER['TYPES']['COLOCATION'] => "코로케이션", ], + "OS" => SERVER['OS'], "STATUS" => [ STATUS['AVAILABLE'] => "사용가능", STATUS['OCCUPIED'] => "서비스중", STATUS['TERMINATED'] => "서비스해지", STATUS['FORBIDDEN'] => "사용불가", ], - "OS" => [ - "CENTOS7" => "CentOS7", - "CENTOS8" => "CentOS8", - "CENTOS9" => "CentOS9", - "CENTOS10" => "CentOS10", - "UBUNTU20.04" => "Ubuntu20.04", - "UBUNTU22.04" => "Ubuntu22.04", - "UBUNTU23.04" => "Ubuntu23.04", - "UBUNTU24.04" => "Ubuntu24.04", - "UBUNTU25.04" => "Ubuntu25.04", - "DEBIAN10" => "Debian10", - "DEBIAN11" => "Debian11", - "DEBIAN12" => "Debian12", - "WINDOWS10" => "Windows10", - "WINDOWS11" => "Windows11", - "WINDOWS2008R2" => "Windows2008R2", - "WINDOWS2012R2" => "Windows2012R2", - "WINDOWS2016R2" => "Windows2016R2", - "WINDOWS2019R2" => "Windows2019R2", - "WINDOWS2022R2" => "Windows2022R2", - "WINDOWS2024R2" => "Windows2024R2", - ], ]; diff --git a/app/Language/ko/Part/DISK.php b/app/Language/ko/Part/DISK.php index f1f40ae..cb31b23 100644 --- a/app/Language/ko/Part/DISK.php +++ b/app/Language/ko/Part/DISK.php @@ -6,7 +6,7 @@ return [ 'price' => "기본가", 'used' => "사용갯수", 'stock' => "재고", - 'format' => "포맷", + 'format' => "포맷대기", 'status' => "상태", 'updated_at' => "수정일", 'created_at' => "작성일", diff --git a/app/Services/Customer/ServiceService.php b/app/Services/Customer/ServiceService.php index 1ac08a2..c931458 100644 --- a/app/Services/Customer/ServiceService.php +++ b/app/Services/Customer/ServiceService.php @@ -105,7 +105,7 @@ class ServiceService extends CustomerService return $date->format('Y-m-d'); } // 서비스금액관련처리 - private function getCalculatedAmount(int $rack_price, int $line_price, int $sale_price, $serverinfo_uid): int + private function getCalculatedAmount(int $rack_price, int $line_price, int $sale_price, int $serverinfo_uid): int { //총 서비스금액 구하기 $server_amount = service('equipment_serverservice')->getCalculatedAmount($serverinfo_uid); @@ -150,9 +150,12 @@ class ServiceService extends CustomerService } protected function create_process(array $formDatas): ServiceEntity { + if (empty($formDatas['serverinfo_uid'])) { + throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: 서버가 지정되지 않았습니다."); + } //생성폼에는 없는 필수항목 지정용(code) $formDatas['code'] = $formDatas['site'] . "_s" . uniqid(); - //총서비스금액 + //정의된 서버로 서비스금액 계산 $formDatas['amount'] = $this->getCalculatedAmount($formDatas['rack'], $formDatas['line'], $formDatas['sale'], $formDatas['serverinfo_uid']); //서비스 생성 $entity = parent::create_process($formDatas); @@ -171,22 +174,19 @@ class ServiceService extends CustomerService { //변경전 정보 $oldEntity = clone $entity; - - //수정폼에는 없는 필수항목 지정용(code,amount) + //수정폼에는 없는 필수항목 지정용(code) $formDatas['code'] = $entity->getCode(); - $formDatas['amount'] = $entity->getAmount(); + //정의된 서버로 서비스금액 계산 + $formDatas['amount'] = $this->getCalculatedAmount($formDatas['rack'], $formDatas['line'], $formDatas['sale'], $formDatas['serverinfo_uid']); //서비스 수정 $entity = parent::modify_process($entity, $formDatas); if (!$entity instanceof ServiceEntity) { throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생:Return Type은 ServiceEntity만 가능"); } - //신규 서비스 서버의 비용으로 재계산 서비스 금액 설정 - $entity = $this->updateAmount($entity); //기존 서비스용 결제비용 과 신규 서버스용으로 결제비용이 다르면 수정 service('paymentservice')->modifyByService($oldEntity, $entity); //서버정보 연결 신규서버로 변경 if ($oldEntity->getServerInfoUid() !== $entity->getServerInfoUid()) { - // throw new RuntimeException("{$oldEntity->getServerInfoUid()} !== {$entity->getServerInfoUid()}"); service('equipment_serverservice')->modifyByService($oldEntity, $entity); } return $entity; diff --git a/app/Services/Equipment/ServerPartService.php b/app/Services/Equipment/ServerPartService.php index add645c..92d4f54 100644 --- a/app/Services/Equipment/ServerPartService.php +++ b/app/Services/Equipment/ServerPartService.php @@ -75,15 +75,19 @@ class ServerPartService extends EquipmentService } private function getFormDatasForServerPart(array $formDatas): array { - if (!array_key_exists('serverinfo_uid', $formDatas)) { + if (empty($formDatas['serverinfo_uid'])) { throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: 서버번호가 지정되지 않았습니다."); } - if (!array_key_exists('type', $formDatas)) { + if (empty($formDatas['type'])) { throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: 부품형식이 지정되지 않았습니다."); } - if (!array_key_exists('billing', $formDatas)) { + if (empty($formDatas['billing'])) { throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: 청구방법이 지정되지 않았습니다."); } + // 키가 없거나(Undefined), null, '', 0, false 중 하나라도 해당되면 실행 + if (empty($formDatas['part_uid'])) { + throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: 파트번호가 지정되지 않았습니다."); + } //서버정보 가져오기 $serverEntity = service('equipment_serverservice')->getEntity($formDatas['serverinfo_uid']); if (!$serverEntity instanceof ServerEntity) { diff --git a/app/Services/Equipment/ServerService.php b/app/Services/Equipment/ServerService.php index 2b25c4c..ee61eec 100644 --- a/app/Services/Equipment/ServerService.php +++ b/app/Services/Equipment/ServerService.php @@ -232,9 +232,9 @@ class ServerService extends EquipmentService if (!$entity instanceof ServerEntity) { throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: {$serviceEntity->getServerInfoUid()}에 해당하는 서비스의 신규 메인 서버정보을 찾을수 없습니다."); } - //신규 메인서버는 기존 메인서버의 타입으로 설정 식뉴규서버는 메인서버로 추가 + //신규 메인서버는 기존 메인서버의 서버타입을 전달받아 설정 메인서버로 추가 $this->attatchToService($serviceEntity, $entity->getPK(), ['type' => $oldEntity->getType()]); - //기존서버는 대체서버로 변경 + //기존서버는 대체서버로 변경 대체서버로 유지시킴 parent::modify_process($oldEntity, ['type' => 'alternative']); } //해지처리