dbmsv4 init...3

This commit is contained in:
최준흠 2025-12-15 10:50:30 +09:00
parent 6a40881839
commit bec3fe8ec4
6 changed files with 52 additions and 33 deletions

View File

@ -79,7 +79,7 @@ class ServiceController extends CustomerController
public function alternative_create_form(int $uid): string|RedirectResponse public function alternative_create_form(int $uid): string|RedirectResponse
{ {
try { try {
$this->action_init_process(__FUNCTION__, $this->request->getVar()); $this->action_init_process(__FUNCTION__, ['uid' => $uid]);
return $this->action_render_process(__FUNCTION__, $this->getViewDatas(), $this->request->getVar('ActionTemplate') ?? 'server'); return $this->action_render_process(__FUNCTION__, $this->getViewDatas(), $this->request->getVar('ActionTemplate') ?? 'server');
} catch (\Throwable $e) { } catch (\Throwable $e) {
return $this->action_redirect_process('error', static::class . '->' . __FUNCTION__ . "에서 {$this->getTitle()} 대체서버 추가폼 오류:" . $e->getMessage()); return $this->action_redirect_process('error', static::class . '->' . __FUNCTION__ . "에서 {$this->getTitle()} 대체서버 추가폼 오류:" . $e->getMessage());
@ -96,8 +96,11 @@ class ServiceController extends CustomerController
} }
//서비스정보 가져오기 //서비스정보 가져오기
$entity = $this->service->getEntity($uid); $entity = $this->service->getEntity($uid);
if (!$entity instanceof ServiceEntity) {
throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: {$uid}에 해당하는 서비스정보을 찾을수 없습니다.");
}
//대체서버 추가 //대체서버 추가
service('equipment_serverservice')->attachToService($entity, $serverinfo_uid); service('equipment_serverservice')->attatchToService($entity, $serverinfo_uid);
return $this->action_redirect_process('info', static::class . '->' . __FUNCTION__ . "에서 {$this->getTitle()} 대체서버 추가가 완료되었습니다."); return $this->action_redirect_process('info', static::class . '->' . __FUNCTION__ . "에서 {$this->getTitle()} 대체서버 추가가 완료되었습니다.");
} catch (\Throwable $e) { } catch (\Throwable $e) {
return $this->action_redirect_process('error', static::class . '->' . __FUNCTION__ . "에서 {$this->getTitle()} 대체서버 추가 오류:" . $e->getMessage()); return $this->action_redirect_process('error', static::class . '->' . __FUNCTION__ . "에서 {$this->getTitle()} 대체서버 추가 오류:" . $e->getMessage());
@ -120,7 +123,7 @@ class ServiceController extends CustomerController
} }
//서버번호 와 서비스 제목 설정용 //서버번호 와 서비스 제목 설정용
$formDatas = []; $formDatas = [];
$formDatas['serverinfo_uid'] = $serverinfo_uid; $formDatas['serverinfo_uid'] = $serverEntity->getPK();
$formDatas['title'] = $serverEntity->getCustomTitle(); $formDatas['title'] = $serverEntity->getCustomTitle();
//대체서버를 메인서버로 설정 //대체서버를 메인서버로 설정
$this->service->modify($uid, $formDatas); $this->service->modify($uid, $formDatas);
@ -142,10 +145,10 @@ class ServiceController extends CustomerController
//서비스정보 가져오기 //서비스정보 가져오기
$entity = $this->service->getEntity($uid); $entity = $this->service->getEntity($uid);
if (!$entity instanceof ServiceEntity) { if (!$entity instanceof ServiceEntity) {
throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: 해당하는 서비스정보을 찾을수 없습니다."); throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: {$uid}해당하는 서비스정보을 찾을수 없습니다.");
} }
//대체서버 해지 //대체서버 해지
service('equipment_serverservice')->detachFromService($entity, $serverinfo_uid); service('equipment_serverservice')->deatchFromService($serverinfo_uid);
return $this->action_redirect_process('info', static::class . '->' . __FUNCTION__ . "에서 {$this->getTitle()} 대체서버 해지가 완료되었습니다."); return $this->action_redirect_process('info', static::class . '->' . __FUNCTION__ . "에서 {$this->getTitle()} 대체서버 해지가 완료되었습니다.");
} catch (\Throwable $e) { } catch (\Throwable $e) {
return $this->action_redirect_process('error', static::class . '->' . __FUNCTION__ . "에서 {$this->getTitle()} 대체서버 해지 오류:" . $e->getMessage()); return $this->action_redirect_process('error', static::class . '->' . __FUNCTION__ . "에서 {$this->getTitle()} 대체서버 해지 오류:" . $e->getMessage());

View File

@ -118,7 +118,6 @@ abstract class CommonForm
//Validation용 //Validation용
final public function validate(array $formDatas): bool final public function validate(array $formDatas): bool
{ {
dd($this);
if ($this->_validation === null) { if ($this->_validation === null) {
throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: Validation 서비스가 초기화되지 않았습니다."); throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: Validation 서비스가 초기화되지 않았습니다.");
} }

View File

@ -218,7 +218,6 @@ abstract class CommonService
//관리자 정보추가용 //관리자 정보추가용
$formDatas['user_uid'] = $this->getAuthContext()->getUID(); $formDatas['user_uid'] = $this->getAuthContext()->getUID();
// 데이터 검증 // 데이터 검증
// dd($this->getFormService());
if (!$this->getFormService()->validate($formDatas)) { if (!$this->getFormService()->validate($formDatas)) {
throw new ValidationException( throw new ValidationException(
implode("\n", service('validation')->getErrors()) implode("\n", service('validation')->getErrors())

View File

@ -4,6 +4,7 @@ namespace App\Services\Customer;
use App\DTOs\Customer\ServiceDTO; use App\DTOs\Customer\ServiceDTO;
use App\Entities\Customer\ServiceEntity; use App\Entities\Customer\ServiceEntity;
use App\Entities\Equipment\ServerEntity;
use App\Forms\Customer\ServiceForm; use App\Forms\Customer\ServiceForm;
use App\Helpers\Customer\ServiceHelper; use App\Helpers\Customer\ServiceHelper;
use App\Models\Customer\ServiceModel; use App\Models\Customer\ServiceModel;
@ -210,7 +211,7 @@ class ServiceService extends CustomerService
throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생:Return Type은 ServiceEntity만 가능"); throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생:Return Type은 ServiceEntity만 가능");
} }
//서버정보 연결 //서버정보 연결
service('equipment_serverservice')->attachToService($entity, $entity->getServerInfoUID()); service('equipment_serverservice')->attatchToService($entity, $entity->getServerInfoUID());
//서비스비용 설정 //서비스비용 설정
$entity = $this->saveAmount($entity); $entity = $this->saveAmount($entity);
//결제정보 생성 //결제정보 생성
@ -226,14 +227,19 @@ class ServiceService extends CustomerService
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만 가능");
} }
//서버정보 연결 신규서버로 변경되었으면 신규서버 추가 //신규 서비스 서버의 비용으로 재계산 서비스 금액 설정
if ($oldEntity->getServerInfoUID() !== $entity->getServerInfoUID()) {
service('equipment_serverservice')->attachToService($entity, $entity->getServerInfoUID());
}
//서비스비용 설정
$entity = $this->saveAmount($entity); $entity = $this->saveAmount($entity);
//결제정보 생성 //기존 서비스용 결제비용 과 신규 서버스용으로 결제비용이 다르면 수정
service('paymentservice')->modifyByService($entity); if ($oldEntity->getAmount() !== $entity->getAmount()) {
service('paymentservice')->modifyByService($oldEntity, $entity);
}
//서버정보 연결 신규서버로 변경
if ($oldEntity->getServerInfoUID() !== $entity->getServerInfoUID()) {
//기존서버는 대체서버로 변경
service('equipment_serverservice')->modifyByService($oldEntity->getServerInfoUID());
//신규서버는 메인서버로 추가
service('equipment_serverservice')->attatchToService($entity, $entity->getServerInfoUID());
}
return $entity; return $entity;
} }
//List 검색용 //List 검색용

View File

@ -264,24 +264,36 @@ class ServerService extends EquipmentService
//OrderBy 처리 //OrderBy 처리
//서비스관련 //서비스관련
//Service 결제데이터 가져오기 public function attatchToService(ServiceEntity $serviceEntity, $uid): void
public function attachToService(ServiceEntity $serviceEntity, int $uid): void
{ {
$entity = $this->getEntity($uid); $entity = $this->getEntity($uid);
if (!$entity instanceof ServerEntity) { if (!$entity instanceof ServerEntity) {
throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: 해당하는 서버정보을 찾을수 없습니다."); throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: {$uid}해당하는 서버정보을 찾을수 없습니다.");
} }
$formDatas = [];
$formDatas['serviceinfo_uid'] = $serviceEntity->getPK(); $formDatas['serviceinfo_uid'] = $serviceEntity->getPK();
$formDatas["clientinfo_uid"] = $serviceEntity->getClientInfoUID(); $formDatas["clientinfo_uid"] = $serviceEntity->getClientInfoUID();
$formDatas['status'] = $formDatas['status'] ?? STATUS['OCCUPIED']; $formDatas['status'] = $formDatas['status'] ?? STATUS['OCCUPIED'];
parent::modify_process($entity, $formDatas); parent::modify_process($entity, $formDatas);
} }
public function detachFromService(int|ServerEntity $uid): void public function modifyByService($uid): void
{ {
$entity = $this->getEntity($uid); $entity = $this->getEntity($uid);
if (!$entity instanceof ServerEntity) { if (!$entity instanceof ServerEntity) {
throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: 해당하는 서버정보을 찾을수 없습니다."); throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: {$uid}해당하는 서버정보을 찾을수 없습니다.");
} }
$formDatas = [];
$formDatas['type'] = 'alternative';
parent::modify_process($entity, $formDatas);
}
//해지처리
public function deatchFromService($uid): void
{
$entity = $this->getEntity($uid);
if (!$entity instanceof ServerEntity) {
throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: {$uid}에 해당하는 서버정보을 찾을수 없습니다.");
}
$formDatas = [];
$formDatas['serviceinfo_uid'] = NULL; $formDatas['serviceinfo_uid'] = NULL;
$formDatas["clientinfo_uid"] = NULL; $formDatas["clientinfo_uid"] = NULL;
$formDatas["switchinfo_uid"] = NULL; $formDatas["switchinfo_uid"] = NULL;

View File

@ -279,7 +279,7 @@ class PaymentService extends CommonService
} }
//서비스관련 //서비스관련
private function getFormDatasByService(ServiceEntity $serviceEntity, array $formDatas = []): array private function getFormDatasFromService(ServiceEntity $serviceEntity, array $formDatas = []): array
{ {
$formDatas['serviceinfo_uid'] = $serviceEntity->getPK(); $formDatas['serviceinfo_uid'] = $serviceEntity->getPK();
$formDatas["clientinfo_uid"] = $serviceEntity->getClientInfoUID(); $formDatas["clientinfo_uid"] = $serviceEntity->getClientInfoUID();
@ -297,28 +297,28 @@ class PaymentService extends CommonService
} }
public function createByService(ServiceEntity $serviceEntity): PaymentEntity public function createByService(ServiceEntity $serviceEntity): PaymentEntity
{ {
$formDatas = $this->getFormDatasByService($serviceEntity); $formDatas = $this->getFormDatasFromService($serviceEntity);
return parent::create_process($formDatas); return parent::create_process($formDatas);
} }
public function modifyByService(ServiceEntity $serviceEntity): PaymentEntity public function modifyByService(ServiceEntity $oldServiceEntity, ServiceEntity $serviceEntity): PaymentEntity
{ {
//서비스정보의 청구방식이 Month이고 지급기한일과 같고,상태가 UNPAID인 결제정보 가져와서 결제정보 수정 //기존 서비스정보의 청구방식이 Month이고 지급기한일과 같고,상태가 UNPAID인 결제정보 가져와서 결제정보 수정
$entity = $this->getEntity([ $entity = $this->getEntity([
'serviceinfo_uid' => $serviceEntity->getPK(), 'serviceinfo_uid' => $oldServiceEntity->getPK(),
'billing' => PAYMENT['BILLING']['MONTH'], 'billing' => PAYMENT['BILLING']['MONTH'],
'billing_at' => $serviceEntity->getBillingAt(), 'billing_at' => $oldServiceEntity->getBillingAt(),
'status' => STATUS['UNPAID'] 'status' => STATUS['UNPAID']
]); ]);
if (!$entity instanceof PaymentEntity) { //해당조건에 맞는게 없으면 생성 if (!$entity instanceof PaymentEntity) { //해당조건에 맞는게 없으면 생성
$entity = $this->createByService($serviceEntity); throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: 기존 서비스정보의 {$oldServiceEntity->getPK()}에 해당하는 결제정보가 존재하지 않습니다.");
} else {
$formDatas = $this->getFormDatasByService($serviceEntity);
$entity = parent::modify_process($entity, $formDatas);
} }
//신규 서비스정보에 맞게 수정
$formDatas = $this->getFormDatasFromService($serviceEntity);
$entity = parent::modify_process($entity, $formDatas);
return $entity; return $entity;
} }
//서버파트별 일회성 관련 //서버파트별 일회성 관련
private function getFormDatasByServerPart(ServerPartEntity $serverPartEntity, array $formDatas = []): array private function getFormDatasFromServerPart(ServerPartEntity $serverPartEntity, array $formDatas = []): array
{ {
if ($serverPartEntity->getServiceInfoUID() === null) { if ($serverPartEntity->getServiceInfoUID() === null) {
throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: 서비스정보가 정의되지 않아 일회성 상품을 설정하실수 없습니다."); throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: 서비스정보가 정의되지 않아 일회성 상품을 설정하실수 없습니다.");
@ -338,7 +338,7 @@ class PaymentService extends CommonService
if ($serverPartEntity->getServiceInfoUID() === null) { if ($serverPartEntity->getServiceInfoUID() === null) {
throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: 서비스정보가 정의되지 않아 일회성 상품을 설정하실수 없습니다."); throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: 서비스정보가 정의되지 않아 일회성 상품을 설정하실수 없습니다.");
} }
$formDatas = $this->getFormDatasByServerPart($serverPartEntity); $formDatas = $this->getFormDatasFromServerPart($serverPartEntity);
return parent::create_process($formDatas); return parent::create_process($formDatas);
} }
public function modifyByServerPart(ServerPartEntity $serverPartEntity): PaymentEntity public function modifyByServerPart(ServerPartEntity $serverPartEntity): PaymentEntity
@ -356,7 +356,7 @@ class PaymentService extends CommonService
if (!$entity instanceof PaymentEntity) { if (!$entity instanceof PaymentEntity) {
$entity = $this->createByServerPart($serverPartEntity); $entity = $this->createByServerPart($serverPartEntity);
} else { } else {
$formDatas = $this->getFormDatasByServerPart($serverPartEntity); $formDatas = $this->getFormDatasFromServerPart($serverPartEntity);
$entity = parent::modify_process($entity, $formDatas); $entity = parent::modify_process($entity, $formDatas);
} }
return $entity; return $entity;