dbmsv3 init...1

This commit is contained in:
choi.jh 2025-10-22 17:00:04 +09:00
parent 4ae8f548df
commit 3b675cc332
21 changed files with 386 additions and 423 deletions

View File

@ -156,12 +156,8 @@ class ServiceController extends CustomerController
if (!$entity instanceof ServiceEntity) { if (!$entity instanceof ServiceEntity) {
throw new \Exception("{$uid}에 대한 정보를 찾을수 없습니다."); throw new \Exception("{$uid}에 대한 정보를 찾을수 없습니다.");
} }
$formDatas = $this->getService()->getFormDatas();
if (!array_key_exists('serverinfo_uid', $formDatas)) {
throw new \Exception("서비스의 메인서버로 설정할 서버정보가 없습니다.");
}
//서버정보설정 //서버정보설정
$this->getService()->changeServer($entity, $formDatas); $this->getService()->changeServer($entity, $this->getService()->getFormDatas());
$db->transCommit(); $db->transCommit();
return $this->getResultSuccess('메인서버 설정이 바뀌었습니다.'); return $this->getResultSuccess('메인서버 설정이 바뀌었습니다.');
} catch (\Exception $e) { } catch (\Exception $e) {

View File

@ -161,7 +161,6 @@ abstract class CommonController extends BaseController
$this->getService()->setFormFilters(); $this->getService()->setFormFilters();
$this->getService()->setFormRules(); $this->getService()->setFormRules();
$this->doValidations(); $this->doValidations();
$this->getService()->getFormDatas();
$this->entity = $this->create_process($this->getService()->getFormDatas()); $this->entity = $this->create_process($this->getService()->getFormDatas());
$db->transCommit(); $db->transCommit();
return $this->getResultSuccess(); return $this->getResultSuccess();

View File

@ -4,8 +4,8 @@
"settings": { "settings": {
"width": 3000, "width": 3000,
"height": 3000, "height": 3000,
"scrollTop": -1890.7873, "scrollTop": -600.7873,
"scrollLeft": -626, "scrollLeft": -1689,
"zoomLevel": 0.79, "zoomLevel": 0.79,
"show": 511, "show": 511,
"database": 4, "database": 4,
@ -5002,7 +5002,7 @@
"comment": "관리자정보", "comment": "관리자정보",
"dataType": "INT", "dataType": "INT",
"default": "", "default": "",
"options": 8, "options": 0,
"ui": { "ui": {
"keys": 2, "keys": 2,
"widthName": 60, "widthName": 60,
@ -5011,7 +5011,7 @@
"widthDefault": 60 "widthDefault": 60
}, },
"meta": { "meta": {
"updateAt": 1755506997919, "updateAt": 1761105786867,
"createAt": 1750829265309 "createAt": 1750829265309
} }
}, },
@ -7882,7 +7882,7 @@
"comment": "서비스정보", "comment": "서비스정보",
"dataType": "INT", "dataType": "INT",
"default": "", "default": "",
"options": 8, "options": 0,
"ui": { "ui": {
"keys": 2, "keys": 2,
"widthName": 80, "widthName": 80,
@ -7891,7 +7891,7 @@
"widthDefault": 60 "widthDefault": 60
}, },
"meta": { "meta": {
"updateAt": 1755653435161, "updateAt": 1761105782772,
"createAt": 1755653412891 "createAt": 1755653412891
} }
}, },
@ -9697,7 +9697,7 @@
"id": "e74Cc4zZztxyoazM_ssbu", "id": "e74Cc4zZztxyoazM_ssbu",
"identification": false, "identification": false,
"relationshipType": 16, "relationshipType": 16,
"startRelationshipType": 2, "startRelationshipType": 1,
"start": { "start": {
"tableId": "Jq5Qkun2FzQhCGKANIVOZ", "tableId": "Jq5Qkun2FzQhCGKANIVOZ",
"columnIds": [ "columnIds": [
@ -10005,7 +10005,7 @@
"id": "S-DADUvespt-XHt1mSG1Q", "id": "S-DADUvespt-XHt1mSG1Q",
"identification": false, "identification": false,
"relationshipType": 8, "relationshipType": 8,
"startRelationshipType": 2, "startRelationshipType": 1,
"start": { "start": {
"tableId": "B8haiEbPc1lRBWTv1g25G", "tableId": "B8haiEbPc1lRBWTv1g25G",
"columnIds": [ "columnIds": [

File diff suppressed because one or more lines are too long

View File

@ -18,10 +18,6 @@ class ClientEntity extends CustomerEntity
{ {
return sprintf("[%s]%s", $this->getSite(), $title ? $title : $this->getTitle()); return sprintf("[%s]%s", $this->getSite(), $title ? $title : $this->getTitle());
} }
final public function getCode(): string
{
return $this->attributes['code'];
}
public function getName(): string public function getName(): string
{ {
return $this->attributes['name']; return $this->attributes['name'];

View File

@ -1,5 +0,0 @@
<?php
namespace App\Interfaces\Customer;
interface CustomerInterface {}

View File

@ -1,10 +0,0 @@
<?php
namespace App\Interfaces\Customer;
use App\Entities\Customer\ServiceEntity;
interface ServiceInterface extends CustomerInterface
{
public function setService(string $action, ServiceEntity $serviceEntity, array $formDatas): ServiceEntity;
}

View File

@ -6,5 +6,8 @@ use App\Entities\Equipment\ServerEntity;
interface ServerInterface extends EquipmentInterface interface ServerInterface extends EquipmentInterface
{ {
public function setServer(string $action, ServerEntity $serverEntity, array $formDatas): ServerEntity; //서버 생성
public function setServer(ServerEntity $serverEntity): void;
//서버 해지
public function unsetServer(ServerEntity $serverEntity): void;
} }

View File

@ -16,7 +16,6 @@ class ClientModel extends CustomerModel
protected $allowedFields = [ protected $allowedFields = [
"uid", "uid",
"user_uid", "user_uid",
"code",
"site", "site",
"role", "role",
"name", "name",
@ -71,7 +70,6 @@ class ClientModel extends CustomerModel
//입력전 코드처리 //입력전 코드처리
final public function create(array $formDatas): ClientEntity final public function create(array $formDatas): ClientEntity
{ {
$formDatas['code'] = $formDatas['site'] . "_c" . uniqid();
// 관리자 UID는 현재 인증된 사용자로 설정 // 관리자 UID는 현재 인증된 사용자로 설정
$formDatas['user_uid'] = $this->getMyAuth()->getUIDByAuthInfo(); $formDatas['user_uid'] = $this->getMyAuth()->getUIDByAuthInfo();
return parent::create($formDatas); return parent::create($formDatas);

View File

@ -100,7 +100,6 @@ class ServerModel extends EquipmentModel
//입력전 코드처리 //입력전 코드처리
final public function create(array $formDatas): ServerEntity final public function create(array $formDatas): ServerEntity
{ {
$formDatas['code'] = $formDatas['site'] . "_s" . uniqid();
// 관리자 UID는 현재 인증된 사용자로 설정 // 관리자 UID는 현재 인증된 사용자로 설정
$formDatas['user_uid'] = $this->getMyAuth()->getUIDByAuthInfo(); $formDatas['user_uid'] = $this->getMyAuth()->getUIDByAuthInfo();
return parent::create($formDatas); return parent::create($formDatas);

View File

@ -83,7 +83,7 @@ class AccountService extends CustomerService implements PaymentInterface
$this->setBalance($formDatas); $this->setBalance($formDatas);
$entity = parent::create($formDatas); $entity = parent::create($formDatas);
//Log처리 //Log처리
$this->getMylogService()->create(['title' => "[{$entity->getTitle()}] 예치금 처리", ['status'] => $entity->getStatus()]); $this->getMylogService()->create(['title' => "[{$entity->getTitle()}] 예치금 처리", 'status' => $entity->getStatus()]);
return $entity; return $entity;
} }
//List 검색용 //List 검색용

View File

@ -54,7 +54,7 @@ class CouponService extends CustomerService
$this->setBalance($formDatas); $this->setBalance($formDatas);
$entity = parent::create($formDatas); $entity = parent::create($formDatas);
//Log처리 //Log처리
$this->getMylogService()->create(['title' => "[{$entity->getTitle()}] 쿠폰 처리", ['status'] => $entity->getStatus()]); $this->getMylogService()->create(['title' => "[{$entity->getTitle()}] 쿠폰 처리", 'status' => $entity->getStatus()]);
return $entity; return $entity;
} }
} }

View File

@ -53,7 +53,7 @@ class PointService extends CustomerService
$this->setBalance($formDatas); $this->setBalance($formDatas);
$entity = parent::create($formDatas); $entity = parent::create($formDatas);
//Log처리 //Log처리
$this->getMylogService()->create(['title' => "[{$entity->getTitle()}] 포인트 처리", ['status'] => $entity->getStatus()]); $this->getMylogService()->create(['title' => "[{$entity->getTitle()}] 포인트 처리", 'status' => $entity->getStatus()]);
return $entity; return $entity;
} }
} }

View File

@ -181,37 +181,28 @@ class ServiceService extends CustomerService
$day = $lastDayOfNextMonth; $day = $lastDayOfNextMonth;
} }
// 일(day)을 설정 // 일(day)을 설정
$date->setDate( $date->setDate((int)$date->format('Y'), (int)$date->format('m'), $day);
(int)$date->format('Y'),
(int)$date->format('m'),
$day
);
// 최종 결과 리턴 (YYYY-MM-DD) // 최종 결과 리턴 (YYYY-MM-DD)
return $date->format('Y-m-d'); return $date->format('Y-m-d');
} }
//조정된 금액 설정 //총 서비스금액 설정
final public function getCaculatedAmount(ServiceEntity $entity): int private function getCaculatedAmount(ServiceEntity $entity): int
{ {
$serverAmount = $this->getServerService()->getCaculatedAmount($entity->getServerEntity());
//총서비스금액 계산 //총서비스금액 계산
//기본:상면비+회선비+서버금액(price)+서버파트연결(월비용)-할인액 //기본:상면비+회선비+서버금액(price)+서버파트연결(월비용)-할인액
$caculatedAmount = $entity->getRack() + $entity->getLine() + $entity->getServerEntity()->getPrice(); $caculatedAmount = $entity->getRack() + $entity->getLine() + $serverAmount - $entity->getSale();
// echo "기본금액: {$entity->getRack()} + {$entity->getLine()} + {$entity->getServerEntity()->getPrice()} = {$caculatedAmount}\n";
//해당 서비스(서버) 관련 결제방식(Billing)이 Month인 ServerPart 전체를 다시 검사하여 월청구액을 합산한다.
foreach ($this->getServerPartService()->getEntities(['serverinfo_uid' => $entity->getServerEntity()->getPK()]) as $serverPartEntity) {
if ($serverPartEntity->getBilling() === PAYMENT['BILLING']['MONTH']) { //월비용일때만 적용
$caculatedAmount += $serverPartEntity->getTotalAmount(); //단가*Cnt
}
}
// echo "총서비스금액: {$caculatedAmount} - 할인액: {$entity->getSale()} = 최종금액: " . ($caculatedAmount - $entity->getSale()) . "\n"; // echo "총서비스금액: {$caculatedAmount} - 할인액: {$entity->getSale()} = 최종금액: " . ($caculatedAmount - $entity->getSale()) . "\n";
// exit; // exit;
return $caculatedAmount - $entity->getSale(); return $caculatedAmount;
} }
//서비스 총금액설정 public function setAmount(int $uid): serviceEntity
final public function setAmount(ServiceEntity $entity): ServiceEntity
{ {
$entity = parent::modify($entity, ['amount' => $this->getCaculatedAmount($entity)]); $entity = $this->getEntity($uid);
$entity = $this->getPaymentService()->setService('modify', $entity, []); if (!$entity instanceof ServiceEntity) {
return $entity; throw new \Exception(__METHOD__ . "에서 오류발생: [{$uid}]에 대한 서비스정보를 찾을수 없습니다.");
}
return parent::modify($entity, ['amount' => $this->getCaculatedAmount($entity)]);;
} }
//기본 기능부분 //기본 기능부분
//FieldForm관련용 //FieldForm관련용
@ -230,50 +221,68 @@ class ServiceService extends CustomerService
//생성 //생성
public function create(array $formDatas): ServiceEntity public function create(array $formDatas): ServiceEntity
{ {
//신규등록(월청구액 전달값 그대로 사용하므로 getCaculatedAmount 필요없음)
$entity = parent::create($formDatas);
if (!array_key_exists('serverinfo_uid', $formDatas)) { if (!array_key_exists('serverinfo_uid', $formDatas)) {
throw new \Exception(__METHOD__ . "에서 오류발생: 서버가 지정되지 않았습니다."); throw new \Exception(__METHOD__ . "에서 오류발생: 서버가 지정되지 않았습니다.");
} }
//서버등록 //서비스 정보 생성
$entity = $this->getServerService()->setService('create', $entity, $formDatas); $entity = parent::create($formDatas);
//전체 서비스금액 설정 //지정된 서버정보에 서비스 설정
$entity = $this->getPaymentService()->setService('create', $entity, $formDatas); $serverEntity = $this->getServerService()->setService($entity, $entity->getServerInfoUID());
$entity = parent::modify($entity, ['paymentifo_uid' => $entity->getPaymentEntity()->getPK()]); //서비스 총금액 설정
//Log처리 $entity = $this->setAmount($entity->getUID());
$this->getMylogService()->create(['title' => "[{$entity->getTitle()}] 서비스정보 추가", ['status'] => $entity->getStatus()]); //결제정보 등록
$paymentEntity = $this->getPaymentService()->createService($entity);
//추가 필수정보 수정용
$entity = parent::modify($entity, [
'serverinfo_id' => $serverEntity->getPK(),
'payment_uid' => $paymentEntity->getPK()
]);
//Log정보 등록
$this->getMylogService()->create([
'title' => "[{$entity->getCustomTitle()}] 서비스정보 추가",
'status' => $entity->getStatus(),
]);
return $entity; return $entity;
} }
//수정 //수정
public function modify(mixed $entity, array $formDatas): ServiceEntity public function modify(mixed $entity, array $formDatas): ServiceEntity
{ {
//수정전 정보 if (!array_key_exists('serverinfo_uid', $formDatas)) {
$oldEntity = clone $entity; //반드시 clone 할것 throw new \Exception(__METHOD__ . "에서 오류발생: 서버가 지정되지 않았습니다.");
}
//기존서버정보 해지
$this->getServerService()->unsetService($entity, $entity->getServerInfoUID());
//서비스 정보 수정 //서비스 정보 수정
$entity = parent::modify($entity, $formDatas); $entity = parent::modify($entity, $formDatas);
//기존 서버정보와 다르다면 서버변경 //지정된 서버정보에 서비스 설정
if ($oldEntity->getServerEntity()->getPK() != $formDatas['serverinfo_uid']) { $serverEntity = $this->getServerService()->setService($entity, $entity->getServerInfoUID());
//기존서버처리 //서비스 총금액 설정
$oldEntity = $this->getServerService()->setService('delete', $oldEntity, ['serverinfo_uid' => $oldEntity->getServerInfoUID()]); $entity = $this->setAmount($entity->getUID());
//수정할신규서버처리 //결제정보 수정
$entity = $this->getServerService()->setService('create', $entity, $formDatas); $paymentEntity = $this->getPaymentService()->modifyService($entity);
} //추가 필수정보 수정용
//전체 서비스 금액 재계산 후 설정 $entity = parent::modify($entity, [
$entity = $this->setAmount($entity); 'serverinfo_id' => $serverEntity->getPK(),
//Log처리 'payment_uid' => $paymentEntity->getPK()
$this->getMylogService()->create(['title' => "[{$entity->getTitle()}] 서비스 수정", ['status'] => $entity->getStatus()]); ]);
//Log정보 등록
$this->getMylogService()->create([
'title' => "[{$entity->getCustomTitle()}] 서비스정보 수정",
'status' => $entity->getStatus(),
]);
return $entity; return $entity;
} }
//삭제 //삭제
public function delete(mixed $entity): ServiceEntity public function delete(mixed $entity): ServiceEntity
{ {
//서비스서버해지 //기존서버정보 해지
foreach ($this->getServerService()->getEntities(['serviceinfo_uid' => $entity->getPK()]) as $serverEntity) { $this->getServerService()->unsetService($entity, $entity->getServerInfoUID());
$this->getServerService()->setService('delete', $entity, ['serverinfo_uid' => $serverEntity->getPK()]);
}
$entity = parent::delete($entity); $entity = parent::delete($entity);
//Log처리 //Log정보 등록
$this->getMylogService()->create(['title' => "[{$entity->getTitle()}] 서비스 해지", ['status'] => $entity->getStatus()]); $this->getMylogService()->create([
'title' => "[{$entity->getTitle()}] 서비스 해지",
'status' => $entity->getStatus()
]);
return $entity; return $entity;
} }
//비고(History)설정 //비고(History)설정
@ -281,42 +290,41 @@ class ServiceService extends CustomerService
{ {
return parent::modify($entity, $formDatas); return parent::modify($entity, $formDatas);
} }
//대체서버추가(가격변동은 없음) //대체서버추가
public function addServer(ServiceEntity $entity, array $formDatas): ServiceEntity public function addServer(ServiceEntity $entity, array $formDatas): ServiceEntity
{ {
if (!array_key_exists('serverinfo_uid', $formDatas)) { if (!array_key_exists('serverinfo_uid', $formDatas)) {
throw new \Exception(__METHOD__ . "에서 오류발생:대체서버가 지정되지 않았습니다."); throw new \Exception(__METHOD__ . "에서 오류발생:대체서버가 지정되지 않았습니다.");
} }
$formDatas['type'] = 'alternative'; //대체서버로 등록하기위해 필요 $this->getServerService()->setService($entity, $formDatas['serverinfo_uid'], SERVER['TYPES']['ALTERNATIVE']);
return $this->getServerService()->setService('create', $entity, $formDatas); return $entity;
} }
//대체서버를 메인서버로 설정 //대체서버를 메인서버로 설정
public function changeServer(ServiceEntity $entity, array $formDatas): ServiceEntity public function changeServer(ServiceEntity $entity, array $formDatas): ServiceEntity
{ {
//수정전 정보 if (!array_key_exists('serverinfo_uid', $formDatas)) {
$oldEntity = clone $entity; //반드시 clone 할것 throw new \Exception(__METHOD__ . "에서 오류발생:메인서버로 전환할 대체서버가 지정되지 않았습니다.");
//기존 서버의 Type정보가져오기 위함
$oldServerEntity = $oldEntity->getServerEntity();
if (!$oldServerEntity instanceof ServerEntity) {
throw new \Exception(__METHOD__ . "에서 오류발생: 기존 메인 서버정보를 찾을수 없습니다.");
} }
$type = $oldServerEntity->getType(); //기존 메인서버정보 가져오기
//기존메인서버 정보를 대체서버로 변경 $serverEntity = $this->getServerService()->getEntity($entity->getServerInfoUID());
$oldEntity = $this->getServerService()->setService('modify', $oldEntity, ['type' => SERVER['TYPES']['ALTERNATIVE']]); if (!$serverEntity instanceof ServerEntity) {
//서비스정보 수정 throw new \Exception(__METHOD__ . "에서 오류발생: {$entity->getServerInfoUID()}에 대한 서버정보를 찾을수 없습니다.");
$entity = parent::modify($entity, $formDatas);
//메인서버로 선정된 대체서버정보 Type을 기존 메인서버의 Type으로 변경
$entity = $this->getServerService()->setService('modify', $entity, ['type' => $type]);
//전체 서비스 금액 재계산 후 설정
return $this->setAmount($entity);
} }
//대체서버해지(대체서버는 해지는 가격변동은 없음) //지정된 대체서버의 Type을 메인서버의 Type으로 전환
$this->getServerService()->setService($entity, $formDatas['serverinfo_uid'], $serverEntity->getType());
return $this->modify($entity, $formDatas);
}
//대체서버해지
public function terminateServer(ServiceEntity $entity, array $formDatas): ServiceEntity public function terminateServer(ServiceEntity $entity, array $formDatas): ServiceEntity
{ {
if (!array_key_exists('serverinfo_uid', $formDatas)) {
throw new \Exception(__METHOD__ . "에서 오류발생:메인서버로 전환할 대체서버가 지정되지 않았습니다.");
}
if ($entity->getServerEntity()->getPK() === $formDatas['serverinfo_uid']) { if ($entity->getServerEntity()->getPK() === $formDatas['serverinfo_uid']) {
throw new \Exception(__METHOD__ . "에서 오류발생: 서비스의 메인 서버정보는 해지할 수 없습니다."); throw new \Exception(__METHOD__ . "에서 오류발생: 서비스의 메인 서버정보는 해지할 수 없습니다.");
} }
//대체서버해지 //대체서버해지
return $this->getServerService()->setService('delete', $entity, ['serverinfo_uid' => $formDatas['serverinfo_uid']]); $this->getServerService()->unsetService($entity, $formDatas['serverinfo_uid']);
return $entity;
} }
} }

View File

@ -204,11 +204,9 @@ class ServerPartService extends EquipmentService implements ServerInterface
return $formDatas; return $formDatas;
} }
//서버정보 설정 //서버정보 설정
final public function setServer(string $action, ServerEntity $serverEntity, array $serverFormDatas): ServerEntity public function setServer(ServerEntity $serverEntity): void
{ {
switch ($action) { $server_type = $serverEntity->getTitle(); //대소문자구분 필요->서버의 Title로 구분해서 기본부품 추가
case 'create':
$server_type = strtoupper($serverEntity->getTitle()); //서버의 Title로 구분해서 기본부품 추가
foreach (SERVERPART['SERVER_PARTTYPES'] as $parttype) { foreach (SERVERPART['SERVER_PARTTYPES'] as $parttype) {
//해당 server_type의 정의된 상수값이 있으면 //해당 server_type의 정의된 상수값이 있으면
if (array_key_exists($server_type, SERVERPART[$parttype])) { if (array_key_exists($server_type, SERVERPART[$parttype])) {
@ -226,8 +224,9 @@ class ServerPartService extends EquipmentService implements ServerInterface
} }
} }
} }
break; }
case 'delete': public function unsetServer(ServerEntity $serverEntity): void
{
//서버정보에 해당하는 ServerPart정보 모두 회수처리 후 서버정보에 기본 ServerPart를 다시 등록해준다. //서버정보에 해당하는 ServerPart정보 모두 회수처리 후 서버정보에 기본 ServerPart를 다시 등록해준다.
foreach ($this->getEntities(['serverinfo_uid' => $serverEntity->getPK()]) as $entity) { foreach ($this->getEntities(['serverinfo_uid' => $serverEntity->getPK()]) as $entity) {
//Type에 따른 부품서비스 정의 //Type에 따른 부품서비스 정의
@ -236,13 +235,7 @@ class ServerPartService extends EquipmentService implements ServerInterface
parent::delete($entity); parent::delete($entity);
} }
//서버정보에 기본 ServerPart를 다시 등록해준다. //서버정보에 기본 ServerPart를 다시 등록해준다.
$this->setServer('create', $serverEntity, []); $this->setServer($serverEntity);
break;
default:
throw new \Exception(__METHOD__ . "에서 오류발생:{$action}은 정의되지 않은 작업입니다.");
// break;
}
return $serverEntity;
} }
//partEntity 정보 추가 //partEntity 정보 추가
protected function getEntity_process(mixed $entity): ServerPartEntity protected function getEntity_process(mixed $entity): ServerPartEntity
@ -395,7 +388,7 @@ class ServerPartService extends EquipmentService implements ServerInterface
case PAYMENT['BILLING']['MONTH']: //월별과금일때만 처리 case PAYMENT['BILLING']['MONTH']: //월별과금일때만 처리
if ($entity->getServiceInfoUID() !== null) { //서비스가 정의되어 있으면 if ($entity->getServiceInfoUID() !== null) { //서비스가 정의되어 있으면
//서비스 금액만 재계산변경 //서비스 금액만 재계산변경
$this->getServiceService()->setAmount($this->getServiceService()->getEntity($entity->getServiceInfoUID())); $this->getServiceService()->setAmount($entity->getServiceInfoUID());
} }
break; break;
case PAYMENT['BILLING']['ONETIME']: //일회성일때만 처리 case PAYMENT['BILLING']['ONETIME']: //일회성일때만 처리

View File

@ -5,7 +5,6 @@ namespace App\Services\Equipment;
use App\Entities\Customer\ServiceEntity; use App\Entities\Customer\ServiceEntity;
use App\Entities\Equipment\ServerEntity; use App\Entities\Equipment\ServerEntity;
use App\Helpers\Equipment\ServerHelper; use App\Helpers\Equipment\ServerHelper;
use App\Interfaces\Customer\ServiceInterface;
use App\Models\Equipment\ServerModel; use App\Models\Equipment\ServerModel;
use App\Services\Customer\ServiceService; use App\Services\Customer\ServiceService;
use App\Services\Equipment\EquipmentService; use App\Services\Equipment\EquipmentService;
@ -13,7 +12,7 @@ use App\Services\Equipment\ServerPartService;
use App\Services\Part\IPService; use App\Services\Part\IPService;
use App\Services\Part\SWITCHService; use App\Services\Part\SWITCHService;
class ServerService extends EquipmentService implements ServiceInterface class ServerService extends EquipmentService
{ {
private ?ServiceService $_serviceService = null; private ?ServiceService $_serviceService = null;
private ?ServerPartService $_serverPartService = null; private ?ServerPartService $_serverPartService = null;
@ -169,6 +168,7 @@ class ServerService extends EquipmentService implements ServiceInterface
} }
return $rows; return $rows;
} }
//서버 Title별 카운트수
final public function getStockCount(): array final public function getStockCount(): array
{ {
$builder = $this->getModel()->select('title,COUNT(*) AS cnt')->groupBy('title')->builder(); $builder = $this->getModel()->select('title,COUNT(*) AS cnt')->groupBy('title')->builder();
@ -179,73 +179,59 @@ class ServerService extends EquipmentService implements ServiceInterface
} }
return $rows; return $rows;
} }
//서비스정보 설정 //총 서버금액 설정()
public function setService(string $action, ServiceEntity $serviceEntity, array $serviceFormDatas): ServiceEntity //기본:서버금액(price)+서버파트연결(월비용)
final public function getCaculatedAmount(ServerEntity $entity): int
{ {
switch ($action) { $caculatedAmount = $entity->getPrice();
case 'create': //해당 서비스(서버) 관련 결제방식(Billing)이 Month인 ServerPart 전체를 다시 검사하여 월청구액을 합산한다.
if (!array_key_exists('serverinfo_uid', $serviceFormDatas)) { foreach ($this->getServerPartService()->getEntities(['serverinfo_uid' => $entity->getPK()]) as $serverPartEntity) {
throw new \Exception(__METHOD__ . "에서 {$action}오류발생: 서버가 지정되지 않았습니다.\n" . var_export($serviceFormDatas, true)); if ($serverPartEntity->getBilling() === PAYMENT['BILLING']['MONTH']) { //월비용일때만 적용
$caculatedAmount += $serverPartEntity->getTotalAmount(); //단가*Cnt
} }
$entity = $this->getEntity($serviceFormDatas['serverinfo_uid']); }
if (!$entity instanceof ServerEntity || $entity->getStatus() != STATUS['AVAILABLE']) { return $caculatedAmount;
throw new \Exception(__METHOD__ . "에서 {$action}오류발생: {$serviceFormDatas['serverinfo_uid']}에 대한 서버정보를 찾을수 없거나, 사용가능 서버가 아닙니다."); }
//서비스 생성
public function setService(ServiceEntity $serviceEntity, int $uid, string $type = ""): ServerEntity
{
$entity = $this->getEntity($uid);
if (!$entity instanceof ServerEntity) {
throw new \Exception(__METHOD__ . "에서 오류발생: [{$uid}]에 대한 서버정보를 찾을수 없습니다.");
} }
$formDatas = []; $formDatas = [];
//대체서버 추가용인지 확인
if (array_key_exists('type', $serviceFormDatas)) {
$formDatas['type'] = $serviceFormDatas['type'];
}
$formDatas['clientinfo_uid'] = $serviceEntity->getClientInfoUID(); $formDatas['clientinfo_uid'] = $serviceEntity->getClientInfoUID();
$formDatas['serviceinfo_uid'] = $serviceEntity->getPK(); $formDatas['serviceinfo_uid'] = $serviceEntity->getPK();
if ($type !== "") { //대체서버 추가
$formDatas['type'] = $type;
}
$formDatas['status'] = STATUS['OCCUPIED']; $formDatas['status'] = STATUS['OCCUPIED'];
$entity = parent::modify($entity, $formDatas); return $this->modify($entity, $formDatas);
break; }
case 'modify': //서비스 해지
$entity = $serviceEntity->getServerEntity(); public function unsetService(ServiceEntity $serviceEntity, int $uid): void
{
//서버정보 가져오기
$entity = $this->getEntity($uid);
if (!$entity instanceof ServerEntity) { if (!$entity instanceof ServerEntity) {
throw new \Exception(__METHOD__ . "에서 {$action}오류발생: {$serviceFormDatas['serverinfo_uid']}에 대한 서버정보를 찾을수 없거나, 사용가능 서버가 아닙니다."); throw new \Exception(__METHOD__ . "에서 오류발생: [{$uid}]에 대한 서버정보를 찾을수 없습니다.");
}
$formDatas = [];
if (array_key_exists('type', $serviceFormDatas)) {
$formDatas['type'] = $serviceFormDatas['type'];
}
$entity = parent::modify($entity, $formDatas);
break;
case 'delete':
if (!array_key_exists('serverinfo_uid', $serviceFormDatas)) {
throw new \Exception(__METHOD__ . "에서 {$action}오류발생: 서버가 지정되지 않았습니다.");
}
$selectedEntity = null;
foreach ($this->getEntities(['serviceinfo_uid' => $serviceEntity->getPK()]) as $entity) {
if ($entity->getPK() == $serviceFormDatas['serverinfo_uid']) {
if ($serviceEntity->getServerEntity()->getPK() == $entity->getPK()) {
throw new \Exception(__METHOD__ . "에서 {$action}오류발생: 서비스의 메인 서버정보는 해지할 수 없습니다.");
}
$selectedEntity = $entity;
break;
}
}
if (!$selectedEntity instanceof ServerEntity) {
throw new \Exception(__METHOD__ . "에서 {$action}오류발생: 해지 할 서버정보를 찾을수 없습니다.");
} }
$formDatas = []; $formDatas = [];
$formDatas['clientinfo_uid'] = null; $formDatas['clientinfo_uid'] = null;
$formDatas['serviceinfo_uid'] = null; $formDatas['serviceinfo_uid'] = null;
$formDatas['format_at'] = date("Y-m-d"); $formDatas['format_at'] = date("Y-m-d");
$formDatas['status'] = STATUS['AVAILABLE']; $formDatas['status'] = STATUS['AVAILABLE'];
$entity = parent::modify($selectedEntity, $formDatas); //Switch정보 해지
if ($entity->getSwitch() !== null) { //기존 서버정보에 Switch가 정의되어 있으면
$this->getSwitchService()->unsetServer($entity);
}
//IP정보해지
if ($entity->getIP() !== null) { //기존 서버정보에 IP가 정의되어 있으면
$this->getIPService()->unsetServer($entity);
}
//서버파트정보해지 //서버파트정보해지
$this->getServerPartService()->setServer('delete', $entity, []); $this->getServerPartService()->unsetServer($entity);
break; $this->modify($entity, $formDatas);
default:
throw new \Exception(__METHOD__ . "에서 오류발생:{$action}은 정의되지 않은 작업입니다.");
// break;
}
if (!$entity instanceof ServerEntity) {
throw new \Exception(__METHOD__ . "에서 {$action}->setServerEntity오류발생:결제정보를 찾을수 없습니다.");
}
return $serviceEntity->setServerEntity($entity);
} }
//기본 기능부분 //기본 기능부분
//FieldForm관련용 //FieldForm관련용
@ -266,23 +252,32 @@ class ServerService extends EquipmentService implements ServiceInterface
//서버정보 생성 //서버정보 생성
$entity = parent::create($formDatas); $entity = parent::create($formDatas);
//서버의 Type별 서버파트정보등록(서버파트연결 자동등록용) //서버의 Type별 서버파트정보등록(서버파트연결 자동등록용)
$entity = $this->getServerPartService()->setServer('create', $entity, []); $this->getServerPartService()->setServer($entity);
if ($entity->getSwitch() !== null) { //Switch가 정의되어 있으면 if ($entity->getSwitch() !== null) { //Switch가 정의되어 있으면
$entity = $this->getSwitchService()->setServer('create', $entity, []); $this->getSwitchService()->setServer($entity);
} }
// dd($entity);
if ($entity->getIP() !== null) { //IP가 정의되어 있으면 if ($entity->getIP() !== null) { //IP가 정의되어 있으면
$entity = $this->getIPService()->setServer('create', $entity, []); $this->getIPService()->setServer($entity);
} }
//Log처리 //Log처리
$this->getMylogService()->create(['title' => "[{$entity->getTitle()}] 서버 추가", ['status'] => $entity->getStatus()]); $this->getMylogService()->create([
'title' => "[{$entity->getTitle()}] 서버 추가",
'status' => $entity->getStatus()
]);
return $entity; return $entity;
} }
//수정 //수정
public function modify(mixed $entity, array $formDatas): ServerEntity public function modify(mixed $entity, array $formDatas): ServerEntity
{ {
//수정전 정보 //수정전 정보
$oldEntity = clone $entity; //반드시 clone 할것 //Switch정보 수정
if ($entity->getSwitch() !== null) { //기존 서버정보에 Switch가 정의되어 있으면
$this->getSwitchService()->unsetServer($entity);
}
//IP정보 수정
if ($entity->getSwitch() !== null) { //기존 서버정보에 IP가 정의되어 있으면
$this->getIPService()->unsetServer($entity);
}
//ip값이 없으면 null처리 //ip값이 없으면 null처리
if (array_key_exists('ip', $formDatas) && !$formDatas['ip']) { if (array_key_exists('ip', $formDatas) && !$formDatas['ip']) {
$formDatas['ip'] = null; $formDatas['ip'] = null;
@ -290,25 +285,20 @@ class ServerService extends EquipmentService implements ServiceInterface
//서버정보 수정 //서버정보 수정
$entity = parent::modify($entity, $formDatas); $entity = parent::modify($entity, $formDatas);
//서비스가 연결되어 있고 대체서버가 아니면, 서비스정보수정(청구액수정) //서비스가 연결되어 있고 대체서버가 아니면, 서비스정보수정(청구액수정)
if ($entity->getServiceInfoUID() !== null && $entity->getType() !== "alternative") { if ($entity->getServiceInfoUID() !== null && $entity->getType() !== SERVER['TYPES']['ALTERNATIVE']) {
$this->getServiceService()->setAmount($this->getServiceService()->getEntity($entity->getServiceInfoUID())); $this->getServiceService()->setAmount($entity->getServiceInfoUID());
}
//Switch정보 수정
if ($oldEntity->getSwitch() !== null) { //기존 서버정보에 Switch가 정의되어 있으면
$oldEntity = $this->getSwitchService()->setServer('delete', $oldEntity, []);
} }
if ($entity->getSwitch() !== null) { //Switch가 정의되어 있으면 if ($entity->getSwitch() !== null) { //Switch가 정의되어 있으면
$entity = $this->getSwitchService()->setServer('create', $entity, []); $this->getSwitchService()->setServer($entity);
}
//IP정보 수정
if ($oldEntity->getIP() !== null) { //기존 서버정보에 IP가 정의되어 있으면
$oldEntity = $this->getIPService()->setServer('delete', $oldEntity, []);
} }
if ($entity->getIP() !== null) { //IP가 정의되어 있으면 if ($entity->getIP() !== null) { //IP가 정의되어 있으면
$entity = $this->getIPService()->setServer('create', $entity, []); $this->getIPService()->setServer($entity);
} }
//Log처리 //Log처리
$this->getMylogService()->create(['title' => "[{$entity->getTitle()}] 서버 수정", ['status'] => $entity->getStatus()]); $this->getMylogService()->create([
'title' => "[{$entity->getTitle()}] 서버 수정",
'status' => $entity->getStatus()
]);
return $entity; return $entity;
} }
//삭제 //삭제
@ -318,11 +308,22 @@ class ServerService extends EquipmentService implements ServiceInterface
if ($entity->getServiceInfoUID() !== null || $entity->getStatus() !== STATUS['AVAILABLE']) { if ($entity->getServiceInfoUID() !== null || $entity->getStatus() !== STATUS['AVAILABLE']) {
throw new \Exception("서비스중인 서버는 삭제하실수 없습니다."); throw new \Exception("서비스중인 서버는 삭제하실수 없습니다.");
} }
//Switch정보 해지
if ($entity->getSwitch() !== null) { //기존 서버정보에 Switch가 정의되어 있으면
$this->getSwitchService()->unsetServer($entity);
}
//IP정보해지
if ($entity->getIP() !== null) { //기존 서버정보에 IP가 정의되어 있으면
$this->getIPService()->unsetServer($entity);
}
//서버파트정보해지 //서버파트정보해지
$entity = $this->getServerPartService()->setServer('delete', $entity, []); $this->getServerPartService()->unsetServer($entity);
$entity = parent::delete($entity); $entity = parent::delete($entity);
//Log처리 //Log처리
$this->getMylogService()->create(['title' => "[{$entity->getTitle()}] 서버 삭제", ['status'] => $entity->getStatus()]); $this->getMylogService()->create([
'title' => "[{$entity->getTitle()}] 서버 삭제",
'status' => $entity->getStatus()
]);
return $entity; return $entity;
} }
//List 검색용 //List 검색용

View File

@ -2,6 +2,8 @@
namespace App\Services; namespace App\Services;
use App\Entities\Customer\ServiceEntity;
use App\Entities\MyLogEntity;
use App\Helpers\MyLogHelper; use App\Helpers\MyLogHelper;
use App\Models\MyLogModel; use App\Models\MyLogModel;
use App\Services\CommonService; use App\Services\CommonService;

View File

@ -112,28 +112,27 @@ class IPService extends PartService implements ServerInterface
parent::setOrderBy($field, $value); parent::setOrderBy($field, $value);
} }
//서버관련 작업 //서버관련 작업
public function setServer(string $action, ServerEntity $serverEntity, array $serverDatas): ServerEntity public function setServer(ServerEntity $serverEntity): void
{ {
switch ($action) {
case 'create':
$formDatas = []; $formDatas = [];
$formDatas['clientinfo_uid'] = $serverEntity->getClientInfoUID(); $formDatas['clientinfo_uid'] = $serverEntity->getClientInfoUID();
$formDatas['serviceinfo_uid'] = $serverEntity->getServiceInfoUID(); $formDatas['serviceinfo_uid'] = $serverEntity->getServiceInfoUID();
$formDatas['serverinfo_uid'] = $serverEntity->getPK(); $formDatas['serverinfo_uid'] = $serverEntity->getPK();
$formDatas['status'] = STATUS['OCCUPIED']; $formDatas['status'] = STATUS['OCCUPIED'];
if (!array_key_exists('status', $formDatas)) { if (!array_key_exists('status', $formDatas)) {
throw new \Exception(__METHOD__ . ":에서 {$action}오류발생: IP상태가 설정되지 않았습니다."); throw new \Exception(__METHOD__ . ":에서 오류발생: IP상태가 설정되지 않았습니다.");
} }
//IP정보에서 해당하는 IP가 있으면 가져와서 사용중인지 체크 후 수정 //IP정보에서 해당하는 IP가 있으면 가져와서 사용중인지 체크 후 수정
$entity = $this->getEntity(['ip' => $serverEntity->getIP()]); $entity = $this->getEntity(['ip' => $serverEntity->getIP()]);
if ($entity instanceof IPEntity) { if ($entity instanceof IPEntity) {
if ($entity->getStatus() !== STATUS['AVAILABLE']) { if ($entity->getStatus() !== STATUS['AVAILABLE']) {
throw new \Exception(__METHOD__ . ":에서 {$action}오류발생: {$serverEntity->getIP()}는 사용중인 IP입니다."); throw new \Exception(__METHOD__ . ":에서 오류발생: {$serverEntity->getIP()}는 사용중인 IP입니다.");
} }
$entity = parent::modify($entity, $formDatas); $entity = parent::modify($entity, $formDatas);
} }
break; }
case 'delete': //반드시 serverPartEntity 사용해야함 public function unsetServer(ServerEntity $serverEntity): void
{
$formDatas = []; $formDatas = [];
$formDatas['clientinfo_uid'] = null; $formDatas['clientinfo_uid'] = null;
$formDatas['serviceinfo_uid'] = null; $formDatas['serviceinfo_uid'] = null;
@ -141,19 +140,13 @@ class IPService extends PartService implements ServerInterface
$formDatas['old_clientinfo_uid'] = $serverEntity->getClientInfoUID() ?? null; $formDatas['old_clientinfo_uid'] = $serverEntity->getClientInfoUID() ?? null;
$formDatas['status'] = STATUS['AVAILABLE']; $formDatas['status'] = STATUS['AVAILABLE'];
if (!array_key_exists('status', $formDatas)) { if (!array_key_exists('status', $formDatas)) {
throw new \Exception(__METHOD__ . ":에서 {$action}오류발생: IP상태가 설정되지 않았습니다."); throw new \Exception(__METHOD__ . ":에서 오류발생: IP상태가 설정되지 않았습니다.");
} }
//IP정보가져와서 있으면 수정 //IP정보가져와서 있으면 수정
$entity = $this->getEntity(['ip' => $serverEntity->getIP()]); $entity = $this->getEntity(['ip' => $serverEntity->getIP()]);
if ($entity instanceof IPEntity) { if ($entity instanceof IPEntity) {
$entity = parent::modify($entity, $formDatas); $entity = parent::modify($entity, $formDatas);
} }
break;
default:
throw new \Exception(__METHOD__ . ":에서 {$action}오류발생: 정의되지 않은 작업입니다.");
// break;
}
return $serverEntity;
} }
//서버파트관련 작업 //서버파트관련 작업

View File

@ -91,28 +91,27 @@ class SWITCHService extends PartService implements ServerInterface
parent::setOrderBy($field, $value); parent::setOrderBy($field, $value);
} }
//서버관련 작업 //서버관련 작업
public function setServer(string $action, ServerEntity $serverEntity, array $serverDatas): ServerEntity public function setServer(ServerEntity $serverEntity): void
{ {
switch ($action) {
case 'create':
$formDatas = []; $formDatas = [];
$formDatas['clientinfo_uid'] = $serverEntity->getClientInfoUID(); $formDatas['clientinfo_uid'] = $serverEntity->getClientInfoUID();
$formDatas['serviceinfo_uid'] = $serverEntity->getServiceInfoUID(); $formDatas['serviceinfo_uid'] = $serverEntity->getServiceInfoUID();
$formDatas['serverinfo_uid'] = $serverEntity->getPK(); $formDatas['serverinfo_uid'] = $serverEntity->getPK();
$formDatas['status'] = STATUS['OCCUPIED']; $formDatas['status'] = STATUS['OCCUPIED'];
if (!array_key_exists('status', $formDatas)) { if (!array_key_exists('status', $formDatas)) {
throw new \Exception(__METHOD__ . ":에서 {$action}오류발생: Switch상태가 설정되지 않았습니다."); throw new \Exception(__METHOD__ . ":에서 오류발생: Switch상태가 설정되지 않았습니다.");
} }
//Switch정보에서 해당하는 Switch가 있으면 가져와서 사용중인지 체크 후 수정 //Switch정보에서 해당하는 Switch가 있으면 가져와서 사용중인지 체크 후 수정
$entity = $this->getEntity(['code' => $serverEntity->getSwitch()]); $entity = $this->getEntity(['code' => $serverEntity->getSwitch()]);
if ($entity instanceof SWITCHEntity) { if ($entity instanceof SWITCHEntity) {
if ($entity->getStatus() !== STATUS['AVAILABLE']) { if ($entity->getStatus() !== STATUS['AVAILABLE']) {
throw new \Exception(__METHOD__ . ":에서 {$action}오류발생: {$serverEntity->getSwitch()}는 사용중인 Switch입니다."); throw new \Exception(__METHOD__ . ":에서 오류발생: {$serverEntity->getSwitch()}는 사용중인 Switch입니다.");
} }
$entity = parent::modify($entity, $formDatas); $entity = parent::modify($entity, $formDatas);
} }
break; }
case 'delete': //반드시 serverPartEntity 사용해야함 public function unsetServer(ServerEntity $serverEntity): void
{
$formDatas = []; $formDatas = [];
$formDatas['clientinfo_uid'] = null; $formDatas['clientinfo_uid'] = null;
$formDatas['serviceinfo_uid'] = null; $formDatas['serviceinfo_uid'] = null;
@ -120,19 +119,13 @@ class SWITCHService extends PartService implements ServerInterface
$formDatas['old_clientinfo_uid'] = $serverEntity->getClientInfoUID() ?? null; $formDatas['old_clientinfo_uid'] = $serverEntity->getClientInfoUID() ?? null;
$formDatas['status'] = STATUS['AVAILABLE']; $formDatas['status'] = STATUS['AVAILABLE'];
if (!array_key_exists('status', $formDatas)) { if (!array_key_exists('status', $formDatas)) {
throw new \Exception(__METHOD__ . ":에서 {$action}오류발생: Switch상태가 설정되지 않았습니다."); throw new \Exception(__METHOD__ . ":에서 오류발생: Switch상태가 설정되지 않았습니다.");
} }
//Switch정보가져와서 있으면 수정 //Switch정보가져와서 있으면 수정
$entity = $this->getEntity(['code' => $serverEntity->getSwitch()]); $entity = $this->getEntity(['code' => $serverEntity->getSwitch()]);
if ($entity instanceof SWITCHEntity) { if ($entity instanceof SWITCHEntity) {
$entity = parent::modify($entity, $formDatas); $entity = parent::modify($entity, $formDatas);
} }
break;
default:
throw new \Exception(__METHOD__ . ":에서 {$action}오류발생: 정의되지 않은 작업입니다.");
// break;
}
return $serverEntity;
} }
//서버파트관련 작업 //서버파트관련 작업
public function setServerPart(string $action, ServerPartEntity $serverPartEntity, array $serverPartDatas): ServerPartEntity public function setServerPart(string $action, ServerPartEntity $serverPartEntity, array $serverPartDatas): ServerPartEntity

View File

@ -7,15 +7,13 @@ use App\Entities\Customer\ServiceEntity;
use App\Entities\Equipment\ServerPartEntity; use App\Entities\Equipment\ServerPartEntity;
use App\Entities\PaymentEntity; use App\Entities\PaymentEntity;
use App\Helpers\PaymentHelper; use App\Helpers\PaymentHelper;
use App\Interfaces\Customer\ServiceInterface;
use App\Interfaces\Equipment\ServerPartInterface;
use App\Models\PaymentModel; use App\Models\PaymentModel;
use App\Services\CommonService; use App\Services\CommonService;
use App\Services\Customer\AccountService; use App\Services\Customer\AccountService;
use App\Services\Customer\ServiceService; use App\Services\Customer\ServiceService;
use App\Services\Equipment\ServerPartService; use App\Services\Equipment\ServerPartService;
class PaymentService extends CommonService implements ServiceInterface, ServerPartInterface class PaymentService extends CommonService
{ {
private ?ServiceService $_serviceService = null; private ?ServiceService $_serviceService = null;
private ?ServerPartService $_serverPartService = null; private ?ServerPartService $_serverPartService = null;
@ -110,11 +108,9 @@ class PaymentService extends CommonService implements ServiceInterface, ServerPa
} }
return $unPaids; return $unPaids;
} }
//서비스정보 설정 //서비스 생성
final public function setService(string $action, ServiceEntity $serviceEntity, array $serviceFormDatas): ServiceEntity public function createService(ServiceEntity $serviceEntity): PaymentEntity
{ {
switch ($action) {
case 'create': //서비스 가격 추가용
$formDatas = []; $formDatas = [];
$formDatas['clientinfo_uid'] = $serviceEntity->getClientInfoUID(); $formDatas['clientinfo_uid'] = $serviceEntity->getClientInfoUID();
$formDatas['serviceinfo_uid'] = $serviceEntity->getPK(); $formDatas['serviceinfo_uid'] = $serviceEntity->getPK();
@ -128,18 +124,14 @@ class PaymentService extends CommonService implements ServiceInterface, ServerPa
$formDatas['amount'] = $serviceEntity->getAmount(); $formDatas['amount'] = $serviceEntity->getAmount();
$formDatas['billing'] = PAYMENT['BILLING']['MONTH']; $formDatas['billing'] = PAYMENT['BILLING']['MONTH'];
$formDatas['billing_at'] = $serviceEntity->getBillingAt(); $formDatas['billing_at'] = $serviceEntity->getBillingAt();
$entity = parent::create($formDatas); return $this->create($formDatas);
break;
case 'modify': //서비스 가격 수정용
if ($serviceEntity->getPaymentUID() === null) {
throw new \Exception(__METHOD__ . "에서 {$action}오류발생:서비스정보에 결제정보가 정의되지 않았습니다.");
} }
//서비스 변경
public function modifyService(ServiceEntity $serviceEntity): PaymentEntity
{
$entity = $this->getEntity($serviceEntity->getPaymentUID()); $entity = $this->getEntity($serviceEntity->getPaymentUID());
if (!$entity instanceof PaymentEntity) { if (!$entity instanceof PaymentEntity) {
throw new \Exception(__METHOD__ . "에서 {$action}오류발생:결제정보를 찾을수 없습니다."); throw new \Exception(__METHOD__ . "에서 오류발생:결제정보를 찾을수 없습니다.");
}
if ($entity->getStatus() === STATUS['PAID']) {
throw new \Exception(__METHOD__ . "에서 {$action}오류발생:결제완료된 서비스는 수정할수 없습니다.");
} }
$formDatas = []; $formDatas = [];
$formDatas['clientinfo_uid'] = $serviceEntity->getClientInfoUID(); $formDatas['clientinfo_uid'] = $serviceEntity->getClientInfoUID();
@ -154,29 +146,18 @@ class PaymentService extends CommonService implements ServiceInterface, ServerPa
$formDatas['amount'] = $serviceEntity->getAmount(); $formDatas['amount'] = $serviceEntity->getAmount();
$formDatas['billing'] = PAYMENT['BILLING']['MONTH']; $formDatas['billing'] = PAYMENT['BILLING']['MONTH'];
$formDatas['billing_at'] = $serviceEntity->getBillingAt(); $formDatas['billing_at'] = $serviceEntity->getBillingAt();
$entity = parent::modify($entity, $formDatas); return $this->modify($entity, $formDatas);
break;
case 'delete':
if ($serviceEntity->getPaymentUID() === null) {
throw new \Exception(__METHOD__ . "에서 {$action}오류발생:서비스정보에 결제정보가 정의되지 않았습니다.");
} }
//서비스 해지
public function deleteService(ServiceEntity $serviceEntity): void
{
if ($serviceEntity->getPaymentUID() !== null) {
$entity = $this->getEntity($serviceEntity->getPaymentUID()); $entity = $this->getEntity($serviceEntity->getPaymentUID());
if (!$entity instanceof PaymentEntity) { if (!$entity instanceof PaymentEntity) {
throw new \Exception(__METHOD__ . "에서 {$action}오류발생:결제정보를 찾을수 없습니다."); throw new \Exception(__METHOD__ . "에서 오류발생:결제정보를 찾을수 없습니다.");
} }
if ($entity->getStatus() === STATUS['PAID']) { $this->delete($entity);
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 $serviceEntity->setPaymentEntity($entity);
} }
final public function setServerPart(string $action, ServerPartEntity $serverPartEntity, array $servicePartFormDatas): ServerPartEntity final public function setServerPart(string $action, ServerPartEntity $serverPartEntity, array $servicePartFormDatas): ServerPartEntity
{ {
@ -289,20 +270,40 @@ class PaymentService extends CommonService implements ServiceInterface, ServerPa
$formDatas['clientinfo_uid'] = $serviceEntity->getClientInfoUID(); $formDatas['clientinfo_uid'] = $serviceEntity->getClientInfoUID();
$entity = parent::create($formDatas); $entity = parent::create($formDatas);
//Log처리 //Log처리
$this->getMylogService()->create(['title' => "[{$entity->getTitle()}] 일회성 결제", ['status'] => $entity->getStatus()]); $this->getMylogService()->create([
'title' => "[{$entity->getTitle()}] 일회성 결제",
'status' => $entity->getStatus()
]);
return $entity; return $entity;
} }
//월과금용 일괄결제처리(결제는 무조건 예치금으로만 처리) //월과금용 일괄결제처리(결제는 무조건 예치금으로만 처리)
public function batchjob(mixed $entity, array $formDatas): mixed public function batchjob(mixed $entity, array $formDatas): mixed
{ {
if (!$entity instanceof PaymentEntity) {
throw new \Exception(__METHOD__ . "에서 오류발생:결제정보가 정의되지 않았습니다.");
}
//결제 완료 처리 후 추가정보 처리 //결제 완료 처리 후 추가정보 처리
$formDatas['status'] = STATUS['PAID']; $formDatas['status'] = STATUS['PAID'];
$entity = parent::batchjob($entity, $formDatas); $entity = parent::batchjob($entity, $formDatas);
//Log처리 //Log처리
$this->getMylogService()->create(['title' => "[{$entity->getTitle()}] 월과금 결제", ['status'] => $entity->getStatus()]); $this->getMylogService()->create([
'title' => "[{$entity->getTitle()}] 월과금 결제",
'status' => $entity->getStatus()
]);
//예치금처리 //예치금처리
return $this->getAccountService()->setPayment('create', $entity, []); return $this->getAccountService()->setPayment('create', $entity, []);
} }
//결제정보 삭제
public function delete(mixed $entity): PaymentEntity
{
if (!$entity instanceof PaymentEntity) {
throw new \Exception(__METHOD__ . "에서 오류발생:결제정보가 정의되지 않았습니다.");
}
if ($entity->getStatus() === STATUS['PAID']) {
throw new \Exception(__METHOD__ . "에서 오류발생:결제완료된 서비스는 삭제할수 없습니다.");
}
return parent::delete($entity);
}
//List 검색용 //List 검색용
//OrderBy 처리 //OrderBy 처리
final public function setOrderBy(mixed $field = null, mixed $value = null): void final public function setOrderBy(mixed $field = null, mixed $value = null): void

View File

@ -8,9 +8,6 @@
<div class="accordion-item"> <div class="accordion-item">
<a href="/admin/board?category=<?= BOARD['CATEGORY']['NOTICE'] ?>"><?= ICONS['SERVICE_ITEM_LINE'] ?>공지사항</a> <a href="/admin/board?category=<?= BOARD['CATEGORY']['NOTICE'] ?>"><?= ICONS['SERVICE_ITEM_LINE'] ?>공지사항</a>
</div> </div>
<div class="accordion-item">
<a href="/admin/board?category=<?= BOARD['CATEGORY']['WORKING'] ?>"><?= ICONS['SERVICE_ITEM_SERVER'] ?>작업일지</a>
</div>
<div class="accordion-item"> <div class="accordion-item">
<a href="/admin/board?category=<?= BOARD['CATEGORY']['REQUESTTASK'] ?>"><?= ICONS['SERVICE_ITEM_SERVER'] ?>요청업무</a> <a href="/admin/board?category=<?= BOARD['CATEGORY']['REQUESTTASK'] ?>"><?= ICONS['SERVICE_ITEM_SERVER'] ?>요청업무</a>
</div> </div>