dbmsv4 init...3

This commit is contained in:
최준흠 2025-12-19 17:40:30 +09:00
parent 8c72f8dc10
commit 2230998b0f
7 changed files with 67 additions and 48 deletions

View File

@ -435,6 +435,41 @@ define(
define("SERVICE", [ define("SERVICE", [
"NEW_INTERVAL" => $_ENV['SERVICE_NEW_INTERVAL'] ?? $_SERVER['SERVICE_NEW_INTERVAL'] ?? 7, "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", [ define("SERVERPART", [
"CNT_RANGE" => array_combine(range(1, 10), range(1, 10)), "CNT_RANGE" => array_combine(range(1, 10), range(1, 10)),

View File

@ -14,6 +14,7 @@ class DISKForm extends PartForm
"title", "title",
"price", "price",
"used", "used",
"format",
"stock", "stock",
]; ];
$filters = [ $filters = [
@ -27,14 +28,14 @@ class DISKForm extends PartForm
break; break;
case 'modify': case 'modify':
case 'modify_form': case 'modify_form':
$fields = [...$fields, "format", 'status']; $fields = [...$fields, 'status'];
break; break;
case 'view': case 'view':
$fields = [...$fields, "format", 'status', 'created_at']; $fields = [...$fields, 'status', 'created_at'];
break; break;
case 'index': case 'index':
case 'download': case 'download':
$fields = [...$fields, "format", 'status', 'created_at']; $fields = [...$fields, 'status', 'created_at'];
break; break;
} }
$this->setFormFields($fields); $this->setFormFields($fields);

View File

@ -22,42 +22,21 @@ return [
"serverpartinfo" => "부품정보", "serverpartinfo" => "부품정보",
], ],
"TYPE" => [ "TYPE" => [
'normal' => "일반", SERVER['TYPES']['NORMAL'] => "일반",
'defence' => "방어", SERVER['TYPES']['DEFENCE'] => "방어",
'dedicated' => "전용", SERVER['TYPES']['DEDICATED'] => "전용",
'vpn' => "VPN", SERVER['TYPES']['VPN'] => "VPN",
'event' => "이벤트", SERVER['TYPES']['EVENT'] => "이벤트",
'test' => "테스트", SERVER['TYPES']['TEST'] => "테스트",
'alternative' => "대체", SERVER['TYPES']['ALTERNATIVE'] => "대체",
'ours' => "자사용", SERVER['TYPES']['INHOUSE'] => "자사용",
'colocation' => "코로케이션", SERVER['TYPES']['COLOCATION'] => "코로케이션",
], ],
"OS" => SERVER['OS'],
"STATUS" => [ "STATUS" => [
STATUS['AVAILABLE'] => "사용가능", STATUS['AVAILABLE'] => "사용가능",
STATUS['OCCUPIED'] => "서비스중", STATUS['OCCUPIED'] => "서비스중",
STATUS['TERMINATED'] => "서비스해지", STATUS['TERMINATED'] => "서비스해지",
STATUS['FORBIDDEN'] => "사용불가", 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",
],
]; ];

View File

@ -6,7 +6,7 @@ return [
'price' => "기본가", 'price' => "기본가",
'used' => "사용갯수", 'used' => "사용갯수",
'stock' => "재고", 'stock' => "재고",
'format' => "포맷", 'format' => "포맷대기",
'status' => "상태", 'status' => "상태",
'updated_at' => "수정일", 'updated_at' => "수정일",
'created_at' => "작성일", 'created_at' => "작성일",

View File

@ -105,7 +105,7 @@ class ServiceService extends CustomerService
return $date->format('Y-m-d'); 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); $server_amount = service('equipment_serverservice')->getCalculatedAmount($serverinfo_uid);
@ -150,9 +150,12 @@ class ServiceService extends CustomerService
} }
protected function create_process(array $formDatas): ServiceEntity protected function create_process(array $formDatas): ServiceEntity
{ {
if (empty($formDatas['serverinfo_uid'])) {
throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: 서버가 지정되지 않았습니다.");
}
//생성폼에는 없는 필수항목 지정용(code) //생성폼에는 없는 필수항목 지정용(code)
$formDatas['code'] = $formDatas['site'] . "_s" . uniqid(); $formDatas['code'] = $formDatas['site'] . "_s" . uniqid();
//총서비스금액 //정의된 서버로 서비스금액 계산
$formDatas['amount'] = $this->getCalculatedAmount($formDatas['rack'], $formDatas['line'], $formDatas['sale'], $formDatas['serverinfo_uid']); $formDatas['amount'] = $this->getCalculatedAmount($formDatas['rack'], $formDatas['line'], $formDatas['sale'], $formDatas['serverinfo_uid']);
//서비스 생성 //서비스 생성
$entity = parent::create_process($formDatas); $entity = parent::create_process($formDatas);
@ -171,22 +174,19 @@ class ServiceService extends CustomerService
{ {
//변경전 정보 //변경전 정보
$oldEntity = clone $entity; $oldEntity = clone $entity;
//수정폼에는 없는 필수항목 지정용(code)
//수정폼에는 없는 필수항목 지정용(code,amount)
$formDatas['code'] = $entity->getCode(); $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); $entity = parent::modify_process($entity, $formDatas);
if (!$entity instanceof ServiceEntity) { if (!$entity instanceof ServiceEntity) {
throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생:Return Type은 ServiceEntity만 가능"); throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생:Return Type은 ServiceEntity만 가능");
} }
//신규 서비스 서버의 비용으로 재계산 서비스 금액 설정
$entity = $this->updateAmount($entity);
//기존 서비스용 결제비용 과 신규 서버스용으로 결제비용이 다르면 수정 //기존 서비스용 결제비용 과 신규 서버스용으로 결제비용이 다르면 수정
service('paymentservice')->modifyByService($oldEntity, $entity); service('paymentservice')->modifyByService($oldEntity, $entity);
//서버정보 연결 신규서버로 변경 //서버정보 연결 신규서버로 변경
if ($oldEntity->getServerInfoUid() !== $entity->getServerInfoUid()) { if ($oldEntity->getServerInfoUid() !== $entity->getServerInfoUid()) {
// throw new RuntimeException("{$oldEntity->getServerInfoUid()} !== {$entity->getServerInfoUid()}");
service('equipment_serverservice')->modifyByService($oldEntity, $entity); service('equipment_serverservice')->modifyByService($oldEntity, $entity);
} }
return $entity; return $entity;

View File

@ -75,15 +75,19 @@ class ServerPartService extends EquipmentService
} }
private function getFormDatasForServerPart(array $formDatas): array private function getFormDatasForServerPart(array $formDatas): array
{ {
if (!array_key_exists('serverinfo_uid', $formDatas)) { if (empty($formDatas['serverinfo_uid'])) {
throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: 서버번호가 지정되지 않았습니다."); throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: 서버번호가 지정되지 않았습니다.");
} }
if (!array_key_exists('type', $formDatas)) { if (empty($formDatas['type'])) {
throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: 부품형식이 지정되지 않았습니다."); throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: 부품형식이 지정되지 않았습니다.");
} }
if (!array_key_exists('billing', $formDatas)) { if (empty($formDatas['billing'])) {
throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: 청구방법이 지정되지 않았습니다."); 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']); $serverEntity = service('equipment_serverservice')->getEntity($formDatas['serverinfo_uid']);
if (!$serverEntity instanceof ServerEntity) { if (!$serverEntity instanceof ServerEntity) {

View File

@ -232,9 +232,9 @@ class ServerService extends EquipmentService
if (!$entity instanceof ServerEntity) { if (!$entity instanceof ServerEntity) {
throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: {$serviceEntity->getServerInfoUid()}에 해당하는 서비스의 신규 메인 서버정보을 찾을수 없습니다."); throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: {$serviceEntity->getServerInfoUid()}에 해당하는 서비스의 신규 메인 서버정보을 찾을수 없습니다.");
} }
//신규 메인서버는 기존 메인서버의 타입으로 설정 식뉴규서버는 메인서버로 추가 //신규 메인서버는 기존 메인서버의 서버타입을 전달받아 설정 메인서버로 추가
$this->attatchToService($serviceEntity, $entity->getPK(), ['type' => $oldEntity->getType()]); $this->attatchToService($serviceEntity, $entity->getPK(), ['type' => $oldEntity->getType()]);
//기존서버는 대체서버로 변경 //기존서버는 대체서버로 변경 대체서버로 유지시킴
parent::modify_process($oldEntity, ['type' => 'alternative']); parent::modify_process($oldEntity, ['type' => 'alternative']);
} }
//해지처리 //해지처리