dbmsv3 init...1
This commit is contained in:
parent
4ae8f548df
commit
3b675cc332
@ -156,12 +156,8 @@ class ServiceController extends CustomerController
|
||||
if (!$entity instanceof ServiceEntity) {
|
||||
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();
|
||||
return $this->getResultSuccess('메인서버 설정이 바뀌었습니다.');
|
||||
} catch (\Exception $e) {
|
||||
|
||||
@ -161,7 +161,6 @@ abstract class CommonController extends BaseController
|
||||
$this->getService()->setFormFilters();
|
||||
$this->getService()->setFormRules();
|
||||
$this->doValidations();
|
||||
$this->getService()->getFormDatas();
|
||||
$this->entity = $this->create_process($this->getService()->getFormDatas());
|
||||
$db->transCommit();
|
||||
return $this->getResultSuccess();
|
||||
|
||||
@ -4,8 +4,8 @@
|
||||
"settings": {
|
||||
"width": 3000,
|
||||
"height": 3000,
|
||||
"scrollTop": -1890.7873,
|
||||
"scrollLeft": -626,
|
||||
"scrollTop": -600.7873,
|
||||
"scrollLeft": -1689,
|
||||
"zoomLevel": 0.79,
|
||||
"show": 511,
|
||||
"database": 4,
|
||||
@ -5002,7 +5002,7 @@
|
||||
"comment": "관리자정보",
|
||||
"dataType": "INT",
|
||||
"default": "",
|
||||
"options": 8,
|
||||
"options": 0,
|
||||
"ui": {
|
||||
"keys": 2,
|
||||
"widthName": 60,
|
||||
@ -5011,7 +5011,7 @@
|
||||
"widthDefault": 60
|
||||
},
|
||||
"meta": {
|
||||
"updateAt": 1755506997919,
|
||||
"updateAt": 1761105786867,
|
||||
"createAt": 1750829265309
|
||||
}
|
||||
},
|
||||
@ -7882,7 +7882,7 @@
|
||||
"comment": "서비스정보",
|
||||
"dataType": "INT",
|
||||
"default": "",
|
||||
"options": 8,
|
||||
"options": 0,
|
||||
"ui": {
|
||||
"keys": 2,
|
||||
"widthName": 80,
|
||||
@ -7891,7 +7891,7 @@
|
||||
"widthDefault": 60
|
||||
},
|
||||
"meta": {
|
||||
"updateAt": 1755653435161,
|
||||
"updateAt": 1761105782772,
|
||||
"createAt": 1755653412891
|
||||
}
|
||||
},
|
||||
@ -9697,7 +9697,7 @@
|
||||
"id": "e74Cc4zZztxyoazM_ssbu",
|
||||
"identification": false,
|
||||
"relationshipType": 16,
|
||||
"startRelationshipType": 2,
|
||||
"startRelationshipType": 1,
|
||||
"start": {
|
||||
"tableId": "Jq5Qkun2FzQhCGKANIVOZ",
|
||||
"columnIds": [
|
||||
@ -10005,7 +10005,7 @@
|
||||
"id": "S-DADUvespt-XHt1mSG1Q",
|
||||
"identification": false,
|
||||
"relationshipType": 8,
|
||||
"startRelationshipType": 2,
|
||||
"startRelationshipType": 1,
|
||||
"start": {
|
||||
"tableId": "B8haiEbPc1lRBWTv1g25G",
|
||||
"columnIds": [
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -18,10 +18,6 @@ class ClientEntity extends CustomerEntity
|
||||
{
|
||||
return sprintf("[%s]%s", $this->getSite(), $title ? $title : $this->getTitle());
|
||||
}
|
||||
final public function getCode(): string
|
||||
{
|
||||
return $this->attributes['code'];
|
||||
}
|
||||
public function getName(): string
|
||||
{
|
||||
return $this->attributes['name'];
|
||||
|
||||
@ -1,5 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Interfaces\Customer;
|
||||
|
||||
interface CustomerInterface {}
|
||||
@ -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;
|
||||
}
|
||||
@ -6,5 +6,8 @@ use App\Entities\Equipment\ServerEntity;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
@ -16,7 +16,6 @@ class ClientModel extends CustomerModel
|
||||
protected $allowedFields = [
|
||||
"uid",
|
||||
"user_uid",
|
||||
"code",
|
||||
"site",
|
||||
"role",
|
||||
"name",
|
||||
@ -71,7 +70,6 @@ class ClientModel extends CustomerModel
|
||||
//입력전 코드처리
|
||||
final public function create(array $formDatas): ClientEntity
|
||||
{
|
||||
$formDatas['code'] = $formDatas['site'] . "_c" . uniqid();
|
||||
// 관리자 UID는 현재 인증된 사용자로 설정
|
||||
$formDatas['user_uid'] = $this->getMyAuth()->getUIDByAuthInfo();
|
||||
return parent::create($formDatas);
|
||||
|
||||
@ -100,7 +100,6 @@ class ServerModel extends EquipmentModel
|
||||
//입력전 코드처리
|
||||
final public function create(array $formDatas): ServerEntity
|
||||
{
|
||||
$formDatas['code'] = $formDatas['site'] . "_s" . uniqid();
|
||||
// 관리자 UID는 현재 인증된 사용자로 설정
|
||||
$formDatas['user_uid'] = $this->getMyAuth()->getUIDByAuthInfo();
|
||||
return parent::create($formDatas);
|
||||
|
||||
@ -83,7 +83,7 @@ class AccountService extends CustomerService implements PaymentInterface
|
||||
$this->setBalance($formDatas);
|
||||
$entity = parent::create($formDatas);
|
||||
//Log처리
|
||||
$this->getMylogService()->create(['title' => "[{$entity->getTitle()}] 예치금 처리", ['status'] => $entity->getStatus()]);
|
||||
$this->getMylogService()->create(['title' => "[{$entity->getTitle()}] 예치금 처리", 'status' => $entity->getStatus()]);
|
||||
return $entity;
|
||||
}
|
||||
//List 검색용
|
||||
|
||||
@ -54,7 +54,7 @@ class CouponService extends CustomerService
|
||||
$this->setBalance($formDatas);
|
||||
$entity = parent::create($formDatas);
|
||||
//Log처리
|
||||
$this->getMylogService()->create(['title' => "[{$entity->getTitle()}] 쿠폰 처리", ['status'] => $entity->getStatus()]);
|
||||
$this->getMylogService()->create(['title' => "[{$entity->getTitle()}] 쿠폰 처리", 'status' => $entity->getStatus()]);
|
||||
return $entity;
|
||||
}
|
||||
}
|
||||
|
||||
@ -53,7 +53,7 @@ class PointService extends CustomerService
|
||||
$this->setBalance($formDatas);
|
||||
$entity = parent::create($formDatas);
|
||||
//Log처리
|
||||
$this->getMylogService()->create(['title' => "[{$entity->getTitle()}] 포인트 처리", ['status'] => $entity->getStatus()]);
|
||||
$this->getMylogService()->create(['title' => "[{$entity->getTitle()}] 포인트 처리", 'status' => $entity->getStatus()]);
|
||||
return $entity;
|
||||
}
|
||||
}
|
||||
|
||||
@ -181,37 +181,28 @@ class ServiceService extends CustomerService
|
||||
$day = $lastDayOfNextMonth;
|
||||
}
|
||||
// 일(day)을 설정
|
||||
$date->setDate(
|
||||
(int)$date->format('Y'),
|
||||
(int)$date->format('m'),
|
||||
$day
|
||||
);
|
||||
$date->setDate((int)$date->format('Y'), (int)$date->format('m'), $day);
|
||||
// 최종 결과 리턴 (YYYY-MM-DD)
|
||||
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)+서버파트연결(월비용)-할인액
|
||||
$caculatedAmount = $entity->getRack() + $entity->getLine() + $entity->getServerEntity()->getPrice();
|
||||
// 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
|
||||
}
|
||||
}
|
||||
$caculatedAmount = $entity->getRack() + $entity->getLine() + $serverAmount - $entity->getSale();
|
||||
// echo "총서비스금액: {$caculatedAmount} - 할인액: {$entity->getSale()} = 최종금액: " . ($caculatedAmount - $entity->getSale()) . "\n";
|
||||
// exit;
|
||||
return $caculatedAmount - $entity->getSale();
|
||||
return $caculatedAmount;
|
||||
}
|
||||
//서비스 총금액설정
|
||||
final public function setAmount(ServiceEntity $entity): ServiceEntity
|
||||
public function setAmount(int $uid): serviceEntity
|
||||
{
|
||||
$entity = parent::modify($entity, ['amount' => $this->getCaculatedAmount($entity)]);
|
||||
$entity = $this->getPaymentService()->setService('modify', $entity, []);
|
||||
return $entity;
|
||||
$entity = $this->getEntity($uid);
|
||||
if (!$entity instanceof ServiceEntity) {
|
||||
throw new \Exception(__METHOD__ . "에서 오류발생: [{$uid}]에 대한 서비스정보를 찾을수 없습니다.");
|
||||
}
|
||||
return parent::modify($entity, ['amount' => $this->getCaculatedAmount($entity)]);;
|
||||
}
|
||||
//기본 기능부분
|
||||
//FieldForm관련용
|
||||
@ -230,50 +221,68 @@ class ServiceService extends CustomerService
|
||||
//생성
|
||||
public function create(array $formDatas): ServiceEntity
|
||||
{
|
||||
//신규등록(월청구액 전달값 그대로 사용하므로 getCaculatedAmount 필요없음)
|
||||
$entity = parent::create($formDatas);
|
||||
if (!array_key_exists('serverinfo_uid', $formDatas)) {
|
||||
throw new \Exception(__METHOD__ . "에서 오류발생: 서버가 지정되지 않았습니다.");
|
||||
}
|
||||
//서버등록
|
||||
$entity = $this->getServerService()->setService('create', $entity, $formDatas);
|
||||
//전체 서비스금액 설정
|
||||
$entity = $this->getPaymentService()->setService('create', $entity, $formDatas);
|
||||
$entity = parent::modify($entity, ['paymentifo_uid' => $entity->getPaymentEntity()->getPK()]);
|
||||
//Log처리
|
||||
$this->getMylogService()->create(['title' => "[{$entity->getTitle()}] 서비스정보 추가", ['status'] => $entity->getStatus()]);
|
||||
//서비스 정보 생성
|
||||
$entity = parent::create($formDatas);
|
||||
//지정된 서버정보에 서비스 설정
|
||||
$serverEntity = $this->getServerService()->setService($entity, $entity->getServerInfoUID());
|
||||
//서비스 총금액 설정
|
||||
$entity = $this->setAmount($entity->getUID());
|
||||
//결제정보 등록
|
||||
$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;
|
||||
}
|
||||
//수정
|
||||
public function modify(mixed $entity, array $formDatas): ServiceEntity
|
||||
{
|
||||
//수정전 정보
|
||||
$oldEntity = clone $entity; //반드시 clone 할것
|
||||
//서비스정보 수정
|
||||
$entity = parent::modify($entity, $formDatas);
|
||||
//기존 서버정보와 다르다면 서버변경
|
||||
if ($oldEntity->getServerEntity()->getPK() != $formDatas['serverinfo_uid']) {
|
||||
//기존서버처리
|
||||
$oldEntity = $this->getServerService()->setService('delete', $oldEntity, ['serverinfo_uid' => $oldEntity->getServerInfoUID()]);
|
||||
//수정할신규서버처리
|
||||
$entity = $this->getServerService()->setService('create', $entity, $formDatas);
|
||||
if (!array_key_exists('serverinfo_uid', $formDatas)) {
|
||||
throw new \Exception(__METHOD__ . "에서 오류발생: 서버가 지정되지 않았습니다.");
|
||||
}
|
||||
//전체 서비스 금액 재계산 후 설정
|
||||
$entity = $this->setAmount($entity);
|
||||
//Log처리
|
||||
$this->getMylogService()->create(['title' => "[{$entity->getTitle()}] 서비스 수정", ['status'] => $entity->getStatus()]);
|
||||
//기존서버정보 해지
|
||||
$this->getServerService()->unsetService($entity, $entity->getServerInfoUID());
|
||||
//서비스 정보 수정
|
||||
$entity = parent::modify($entity, $formDatas);
|
||||
//지정된 서버정보에 서비스 설정
|
||||
$serverEntity = $this->getServerService()->setService($entity, $entity->getServerInfoUID());
|
||||
//서비스 총금액 설정
|
||||
$entity = $this->setAmount($entity->getUID());
|
||||
//결제정보 수정
|
||||
$paymentEntity = $this->getPaymentService()->modifyService($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;
|
||||
}
|
||||
//삭제
|
||||
public function delete(mixed $entity): ServiceEntity
|
||||
{
|
||||
//서비스서버해지
|
||||
foreach ($this->getServerService()->getEntities(['serviceinfo_uid' => $entity->getPK()]) as $serverEntity) {
|
||||
$this->getServerService()->setService('delete', $entity, ['serverinfo_uid' => $serverEntity->getPK()]);
|
||||
}
|
||||
//기존서버정보 해지
|
||||
$this->getServerService()->unsetService($entity, $entity->getServerInfoUID());
|
||||
$entity = parent::delete($entity);
|
||||
//Log처리
|
||||
$this->getMylogService()->create(['title' => "[{$entity->getTitle()}] 서비스 해지", ['status'] => $entity->getStatus()]);
|
||||
//Log정보 등록
|
||||
$this->getMylogService()->create([
|
||||
'title' => "[{$entity->getTitle()}] 서비스 해지",
|
||||
'status' => $entity->getStatus()
|
||||
]);
|
||||
return $entity;
|
||||
}
|
||||
//비고(History)설정
|
||||
@ -281,42 +290,41 @@ class ServiceService extends CustomerService
|
||||
{
|
||||
return parent::modify($entity, $formDatas);
|
||||
}
|
||||
//대체서버추가(가격변동은 없음)
|
||||
//대체서버추가
|
||||
public function addServer(ServiceEntity $entity, array $formDatas): ServiceEntity
|
||||
{
|
||||
if (!array_key_exists('serverinfo_uid', $formDatas)) {
|
||||
throw new \Exception(__METHOD__ . "에서 오류발생:대체서버가 지정되지 않았습니다.");
|
||||
}
|
||||
$formDatas['type'] = 'alternative'; //대체서버로 등록하기위해 필요
|
||||
return $this->getServerService()->setService('create', $entity, $formDatas);
|
||||
$this->getServerService()->setService($entity, $formDatas['serverinfo_uid'], SERVER['TYPES']['ALTERNATIVE']);
|
||||
return $entity;
|
||||
}
|
||||
//대체서버를 메인서버로 설정
|
||||
public function changeServer(ServiceEntity $entity, array $formDatas): ServiceEntity
|
||||
{
|
||||
//수정전 정보
|
||||
$oldEntity = clone $entity; //반드시 clone 할것
|
||||
//기존 서버의 Type정보가져오기 위함
|
||||
$oldServerEntity = $oldEntity->getServerEntity();
|
||||
if (!$oldServerEntity instanceof ServerEntity) {
|
||||
throw new \Exception(__METHOD__ . "에서 오류발생: 기존 메인 서버정보를 찾을수 없습니다.");
|
||||
if (!array_key_exists('serverinfo_uid', $formDatas)) {
|
||||
throw new \Exception(__METHOD__ . "에서 오류발생:메인서버로 전환할 대체서버가 지정되지 않았습니다.");
|
||||
}
|
||||
$type = $oldServerEntity->getType();
|
||||
//기존메인서버 정보를 대체서버로 변경
|
||||
$oldEntity = $this->getServerService()->setService('modify', $oldEntity, ['type' => SERVER['TYPES']['ALTERNATIVE']]);
|
||||
//서비스정보 수정
|
||||
$entity = parent::modify($entity, $formDatas);
|
||||
//메인서버로 선정된 대체서버정보 Type을 기존 메인서버의 Type으로 변경
|
||||
$entity = $this->getServerService()->setService('modify', $entity, ['type' => $type]);
|
||||
//전체 서비스 금액 재계산 후 설정
|
||||
return $this->setAmount($entity);
|
||||
//기존 메인서버정보 가져오기
|
||||
$serverEntity = $this->getServerService()->getEntity($entity->getServerInfoUID());
|
||||
if (!$serverEntity instanceof ServerEntity) {
|
||||
throw new \Exception(__METHOD__ . "에서 오류발생: {$entity->getServerInfoUID()}에 대한 서버정보를 찾을수 없습니다.");
|
||||
}
|
||||
//지정된 대체서버의 Type을 메인서버의 Type으로 전환
|
||||
$this->getServerService()->setService($entity, $formDatas['serverinfo_uid'], $serverEntity->getType());
|
||||
return $this->modify($entity, $formDatas);
|
||||
}
|
||||
//대체서버해지(대체서버는 해지는 가격변동은 없음)
|
||||
//대체서버해지
|
||||
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']) {
|
||||
throw new \Exception(__METHOD__ . "에서 오류발생: 서비스의 메인 서버정보는 해지할 수 없습니다.");
|
||||
}
|
||||
//대체서버해지
|
||||
return $this->getServerService()->setService('delete', $entity, ['serverinfo_uid' => $formDatas['serverinfo_uid']]);
|
||||
$this->getServerService()->unsetService($entity, $formDatas['serverinfo_uid']);
|
||||
return $entity;
|
||||
}
|
||||
}
|
||||
|
||||
@ -204,45 +204,38 @@ class ServerPartService extends EquipmentService implements ServerInterface
|
||||
return $formDatas;
|
||||
}
|
||||
//서버정보 설정
|
||||
final public function setServer(string $action, ServerEntity $serverEntity, array $serverFormDatas): ServerEntity
|
||||
public function setServer(ServerEntity $serverEntity): void
|
||||
{
|
||||
switch ($action) {
|
||||
case 'create':
|
||||
$server_type = strtoupper($serverEntity->getTitle()); //서버의 Title로 구분해서 기본부품 추가
|
||||
foreach (SERVERPART['SERVER_PARTTYPES'] as $parttype) {
|
||||
//해당 server_type의 정의된 상수값이 있으면
|
||||
if (array_key_exists($server_type, SERVERPART[$parttype])) {
|
||||
foreach (SERVERPART[$parttype][$server_type] as $serverpart) {
|
||||
$formDatas = [];
|
||||
$formDatas['serverinfo_uid'] = $serverEntity->getPK();
|
||||
$formDatas["part_uid"] = $serverpart["UID"];
|
||||
$formDatas['billing'] = PAYMENT['BILLING']['BASE'];
|
||||
$formDatas['type'] = $parttype;
|
||||
$formDatas['cnt'] = $serverpart["CNT"];
|
||||
$formDatas['extra'] = $serverpart["EXTRA"];
|
||||
$formDatas = $this->setDefaultPartByServer($parttype, $formDatas);
|
||||
//서버연결정보 생성
|
||||
parent::create($formDatas);
|
||||
}
|
||||
}
|
||||
$server_type = $serverEntity->getTitle(); //대소문자구분 필요->서버의 Title로 구분해서 기본부품 추가
|
||||
foreach (SERVERPART['SERVER_PARTTYPES'] as $parttype) {
|
||||
//해당 server_type의 정의된 상수값이 있으면
|
||||
if (array_key_exists($server_type, SERVERPART[$parttype])) {
|
||||
foreach (SERVERPART[$parttype][$server_type] as $serverpart) {
|
||||
$formDatas = [];
|
||||
$formDatas['serverinfo_uid'] = $serverEntity->getPK();
|
||||
$formDatas["part_uid"] = $serverpart["UID"];
|
||||
$formDatas['billing'] = PAYMENT['BILLING']['BASE'];
|
||||
$formDatas['type'] = $parttype;
|
||||
$formDatas['cnt'] = $serverpart["CNT"];
|
||||
$formDatas['extra'] = $serverpart["EXTRA"];
|
||||
$formDatas = $this->setDefaultPartByServer($parttype, $formDatas);
|
||||
//서버연결정보 생성
|
||||
parent::create($formDatas);
|
||||
}
|
||||
break;
|
||||
case 'delete':
|
||||
//서버정보에 해당하는 ServerPart정보 모두 회수처리 후 서버정보에 기본 ServerPart를 다시 등록해준다.
|
||||
foreach ($this->getEntities(['serverinfo_uid' => $serverEntity->getPK()]) as $entity) {
|
||||
//Type에 따른 부품서비스 정의
|
||||
$this->getPartService($entity->getType())->setServerPart('delete', $entity, []);
|
||||
//서버연결정보 식제
|
||||
parent::delete($entity);
|
||||
}
|
||||
//서버정보에 기본 ServerPart를 다시 등록해준다.
|
||||
$this->setServer('create', $serverEntity, []);
|
||||
break;
|
||||
default:
|
||||
throw new \Exception(__METHOD__ . "에서 오류발생:{$action}은 정의되지 않은 작업입니다.");
|
||||
// break;
|
||||
}
|
||||
}
|
||||
return $serverEntity;
|
||||
}
|
||||
public function unsetServer(ServerEntity $serverEntity): void
|
||||
{
|
||||
//서버정보에 해당하는 ServerPart정보 모두 회수처리 후 서버정보에 기본 ServerPart를 다시 등록해준다.
|
||||
foreach ($this->getEntities(['serverinfo_uid' => $serverEntity->getPK()]) as $entity) {
|
||||
//Type에 따른 부품서비스 정의
|
||||
$this->getPartService($entity->getType())->setServerPart('delete', $entity, []);
|
||||
//서버연결정보 식제
|
||||
parent::delete($entity);
|
||||
}
|
||||
//서버정보에 기본 ServerPart를 다시 등록해준다.
|
||||
$this->setServer($serverEntity);
|
||||
}
|
||||
//partEntity 정보 추가
|
||||
protected function getEntity_process(mixed $entity): ServerPartEntity
|
||||
@ -395,7 +388,7 @@ class ServerPartService extends EquipmentService implements ServerInterface
|
||||
case PAYMENT['BILLING']['MONTH']: //월별과금일때만 처리
|
||||
if ($entity->getServiceInfoUID() !== null) { //서비스가 정의되어 있으면
|
||||
//서비스 금액만 재계산변경
|
||||
$this->getServiceService()->setAmount($this->getServiceService()->getEntity($entity->getServiceInfoUID()));
|
||||
$this->getServiceService()->setAmount($entity->getServiceInfoUID());
|
||||
}
|
||||
break;
|
||||
case PAYMENT['BILLING']['ONETIME']: //일회성일때만 처리
|
||||
|
||||
@ -5,7 +5,6 @@ namespace App\Services\Equipment;
|
||||
use App\Entities\Customer\ServiceEntity;
|
||||
use App\Entities\Equipment\ServerEntity;
|
||||
use App\Helpers\Equipment\ServerHelper;
|
||||
use App\Interfaces\Customer\ServiceInterface;
|
||||
use App\Models\Equipment\ServerModel;
|
||||
use App\Services\Customer\ServiceService;
|
||||
use App\Services\Equipment\EquipmentService;
|
||||
@ -13,7 +12,7 @@ use App\Services\Equipment\ServerPartService;
|
||||
use App\Services\Part\IPService;
|
||||
use App\Services\Part\SWITCHService;
|
||||
|
||||
class ServerService extends EquipmentService implements ServiceInterface
|
||||
class ServerService extends EquipmentService
|
||||
{
|
||||
private ?ServiceService $_serviceService = null;
|
||||
private ?ServerPartService $_serverPartService = null;
|
||||
@ -169,6 +168,7 @@ class ServerService extends EquipmentService implements ServiceInterface
|
||||
}
|
||||
return $rows;
|
||||
}
|
||||
//서버 Title별 카운트수
|
||||
final public function getStockCount(): array
|
||||
{
|
||||
$builder = $this->getModel()->select('title,COUNT(*) AS cnt')->groupBy('title')->builder();
|
||||
@ -179,73 +179,59 @@ class ServerService extends EquipmentService implements ServiceInterface
|
||||
}
|
||||
return $rows;
|
||||
}
|
||||
//서비스정보 설정
|
||||
public function setService(string $action, ServiceEntity $serviceEntity, array $serviceFormDatas): ServiceEntity
|
||||
//총 서버금액 설정()
|
||||
//기본:서버금액(price)+서버파트연결(월비용)
|
||||
final public function getCaculatedAmount(ServerEntity $entity): int
|
||||
{
|
||||
switch ($action) {
|
||||
case 'create':
|
||||
if (!array_key_exists('serverinfo_uid', $serviceFormDatas)) {
|
||||
throw new \Exception(__METHOD__ . "에서 {$action}오류발생: 서버가 지정되지 않았습니다.\n" . var_export($serviceFormDatas, true));
|
||||
}
|
||||
$entity = $this->getEntity($serviceFormDatas['serverinfo_uid']);
|
||||
if (!$entity instanceof ServerEntity || $entity->getStatus() != STATUS['AVAILABLE']) {
|
||||
throw new \Exception(__METHOD__ . "에서 {$action}오류발생: {$serviceFormDatas['serverinfo_uid']}에 대한 서버정보를 찾을수 없거나, 사용가능 서버가 아닙니다.");
|
||||
}
|
||||
$formDatas = [];
|
||||
//대체서버 추가용인지 확인
|
||||
if (array_key_exists('type', $serviceFormDatas)) {
|
||||
$formDatas['type'] = $serviceFormDatas['type'];
|
||||
}
|
||||
$formDatas['clientinfo_uid'] = $serviceEntity->getClientInfoUID();
|
||||
$formDatas['serviceinfo_uid'] = $serviceEntity->getPK();
|
||||
$formDatas['status'] = STATUS['OCCUPIED'];
|
||||
$entity = parent::modify($entity, $formDatas);
|
||||
break;
|
||||
case 'modify':
|
||||
$entity = $serviceEntity->getServerEntity();
|
||||
if (!$entity instanceof ServerEntity) {
|
||||
throw new \Exception(__METHOD__ . "에서 {$action}오류발생: {$serviceFormDatas['serverinfo_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['clientinfo_uid'] = null;
|
||||
$formDatas['serviceinfo_uid'] = null;
|
||||
$formDatas['format_at'] = date("Y-m-d");
|
||||
$formDatas['status'] = STATUS['AVAILABLE'];
|
||||
$entity = parent::modify($selectedEntity, $formDatas);
|
||||
//서버파트정보해지
|
||||
$this->getServerPartService()->setServer('delete', $entity, []);
|
||||
break;
|
||||
default:
|
||||
throw new \Exception(__METHOD__ . "에서 오류발생:{$action}은 정의되지 않은 작업입니다.");
|
||||
// break;
|
||||
$caculatedAmount = $entity->getPrice();
|
||||
//해당 서비스(서버) 관련 결제방식(Billing)이 Month인 ServerPart 전체를 다시 검사하여 월청구액을 합산한다.
|
||||
foreach ($this->getServerPartService()->getEntities(['serverinfo_uid' => $entity->getPK()]) as $serverPartEntity) {
|
||||
if ($serverPartEntity->getBilling() === PAYMENT['BILLING']['MONTH']) { //월비용일때만 적용
|
||||
$caculatedAmount += $serverPartEntity->getTotalAmount(); //단가*Cnt
|
||||
}
|
||||
}
|
||||
return $caculatedAmount;
|
||||
}
|
||||
//서비스 생성
|
||||
public function setService(ServiceEntity $serviceEntity, int $uid, string $type = ""): ServerEntity
|
||||
{
|
||||
$entity = $this->getEntity($uid);
|
||||
if (!$entity instanceof ServerEntity) {
|
||||
throw new \Exception(__METHOD__ . "에서 {$action}->setServerEntity오류발생:결제정보를 찾을수 없습니다.");
|
||||
throw new \Exception(__METHOD__ . "에서 오류발생: [{$uid}]에 대한 서버정보를 찾을수 없습니다.");
|
||||
}
|
||||
return $serviceEntity->setServerEntity($entity);
|
||||
$formDatas = [];
|
||||
$formDatas['clientinfo_uid'] = $serviceEntity->getClientInfoUID();
|
||||
$formDatas['serviceinfo_uid'] = $serviceEntity->getPK();
|
||||
if ($type !== "") { //대체서버 추가
|
||||
$formDatas['type'] = $type;
|
||||
}
|
||||
$formDatas['status'] = STATUS['OCCUPIED'];
|
||||
return $this->modify($entity, $formDatas);
|
||||
}
|
||||
//서비스 해지
|
||||
public function unsetService(ServiceEntity $serviceEntity, int $uid): void
|
||||
{
|
||||
//서버정보 가져오기
|
||||
$entity = $this->getEntity($uid);
|
||||
if (!$entity instanceof ServerEntity) {
|
||||
throw new \Exception(__METHOD__ . "에서 오류발생: [{$uid}]에 대한 서버정보를 찾을수 없습니다.");
|
||||
}
|
||||
$formDatas = [];
|
||||
$formDatas['clientinfo_uid'] = null;
|
||||
$formDatas['serviceinfo_uid'] = null;
|
||||
$formDatas['format_at'] = date("Y-m-d");
|
||||
$formDatas['status'] = STATUS['AVAILABLE'];
|
||||
//Switch정보 해지
|
||||
if ($entity->getSwitch() !== null) { //기존 서버정보에 Switch가 정의되어 있으면
|
||||
$this->getSwitchService()->unsetServer($entity);
|
||||
}
|
||||
//IP정보해지
|
||||
if ($entity->getIP() !== null) { //기존 서버정보에 IP가 정의되어 있으면
|
||||
$this->getIPService()->unsetServer($entity);
|
||||
}
|
||||
//서버파트정보해지
|
||||
$this->getServerPartService()->unsetServer($entity);
|
||||
$this->modify($entity, $formDatas);
|
||||
}
|
||||
//기본 기능부분
|
||||
//FieldForm관련용
|
||||
@ -266,23 +252,32 @@ class ServerService extends EquipmentService implements ServiceInterface
|
||||
//서버정보 생성
|
||||
$entity = parent::create($formDatas);
|
||||
//서버의 Type별 서버파트정보등록(서버파트연결 자동등록용)
|
||||
$entity = $this->getServerPartService()->setServer('create', $entity, []);
|
||||
$this->getServerPartService()->setServer($entity);
|
||||
if ($entity->getSwitch() !== null) { //Switch가 정의되어 있으면
|
||||
$entity = $this->getSwitchService()->setServer('create', $entity, []);
|
||||
$this->getSwitchService()->setServer($entity);
|
||||
}
|
||||
// dd($entity);
|
||||
if ($entity->getIP() !== null) { //IP가 정의되어 있으면
|
||||
$entity = $this->getIPService()->setServer('create', $entity, []);
|
||||
$this->getIPService()->setServer($entity);
|
||||
}
|
||||
//Log처리
|
||||
$this->getMylogService()->create(['title' => "[{$entity->getTitle()}] 서버 추가", ['status'] => $entity->getStatus()]);
|
||||
$this->getMylogService()->create([
|
||||
'title' => "[{$entity->getTitle()}] 서버 추가",
|
||||
'status' => $entity->getStatus()
|
||||
]);
|
||||
return $entity;
|
||||
}
|
||||
//수정
|
||||
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처리
|
||||
if (array_key_exists('ip', $formDatas) && !$formDatas['ip']) {
|
||||
$formDatas['ip'] = null;
|
||||
@ -290,25 +285,20 @@ class ServerService extends EquipmentService implements ServiceInterface
|
||||
//서버정보 수정
|
||||
$entity = parent::modify($entity, $formDatas);
|
||||
//서비스가 연결되어 있고 대체서버가 아니면, 서비스정보수정(청구액수정)
|
||||
if ($entity->getServiceInfoUID() !== null && $entity->getType() !== "alternative") {
|
||||
$this->getServiceService()->setAmount($this->getServiceService()->getEntity($entity->getServiceInfoUID()));
|
||||
}
|
||||
//Switch정보 수정
|
||||
if ($oldEntity->getSwitch() !== null) { //기존 서버정보에 Switch가 정의되어 있으면
|
||||
$oldEntity = $this->getSwitchService()->setServer('delete', $oldEntity, []);
|
||||
if ($entity->getServiceInfoUID() !== null && $entity->getType() !== SERVER['TYPES']['ALTERNATIVE']) {
|
||||
$this->getServiceService()->setAmount($entity->getServiceInfoUID());
|
||||
}
|
||||
if ($entity->getSwitch() !== null) { //Switch가 정의되어 있으면
|
||||
$entity = $this->getSwitchService()->setServer('create', $entity, []);
|
||||
}
|
||||
//IP정보 수정
|
||||
if ($oldEntity->getIP() !== null) { //기존 서버정보에 IP가 정의되어 있으면
|
||||
$oldEntity = $this->getIPService()->setServer('delete', $oldEntity, []);
|
||||
$this->getSwitchService()->setServer($entity);
|
||||
}
|
||||
if ($entity->getIP() !== null) { //IP가 정의되어 있으면
|
||||
$entity = $this->getIPService()->setServer('create', $entity, []);
|
||||
$this->getIPService()->setServer($entity);
|
||||
}
|
||||
//Log처리
|
||||
$this->getMylogService()->create(['title' => "[{$entity->getTitle()}] 서버 수정", ['status'] => $entity->getStatus()]);
|
||||
$this->getMylogService()->create([
|
||||
'title' => "[{$entity->getTitle()}] 서버 수정",
|
||||
'status' => $entity->getStatus()
|
||||
]);
|
||||
return $entity;
|
||||
}
|
||||
//삭제
|
||||
@ -318,11 +308,22 @@ class ServerService extends EquipmentService implements ServiceInterface
|
||||
if ($entity->getServiceInfoUID() !== null || $entity->getStatus() !== STATUS['AVAILABLE']) {
|
||||
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);
|
||||
//Log처리
|
||||
$this->getMylogService()->create(['title' => "[{$entity->getTitle()}] 서버 삭제", ['status'] => $entity->getStatus()]);
|
||||
$this->getMylogService()->create([
|
||||
'title' => "[{$entity->getTitle()}] 서버 삭제",
|
||||
'status' => $entity->getStatus()
|
||||
]);
|
||||
return $entity;
|
||||
}
|
||||
//List 검색용
|
||||
|
||||
@ -2,6 +2,8 @@
|
||||
|
||||
namespace App\Services;
|
||||
|
||||
use App\Entities\Customer\ServiceEntity;
|
||||
use App\Entities\MyLogEntity;
|
||||
use App\Helpers\MyLogHelper;
|
||||
use App\Models\MyLogModel;
|
||||
use App\Services\CommonService;
|
||||
|
||||
@ -112,48 +112,41 @@ class IPService extends PartService implements ServerInterface
|
||||
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['clientinfo_uid'] = $serverEntity->getClientInfoUID();
|
||||
$formDatas['serviceinfo_uid'] = $serverEntity->getServiceInfoUID();
|
||||
$formDatas['serverinfo_uid'] = $serverEntity->getPK();
|
||||
$formDatas['status'] = STATUS['OCCUPIED'];
|
||||
if (!array_key_exists('status', $formDatas)) {
|
||||
throw new \Exception(__METHOD__ . ":에서 {$action}오류발생: IP상태가 설정되지 않았습니다.");
|
||||
}
|
||||
//IP정보에서 해당하는 IP가 있으면 가져와서 사용중인지 체크 후 수정
|
||||
$entity = $this->getEntity(['ip' => $serverEntity->getIP()]);
|
||||
if ($entity instanceof IPEntity) {
|
||||
if ($entity->getStatus() !== STATUS['AVAILABLE']) {
|
||||
throw new \Exception(__METHOD__ . ":에서 {$action}오류발생: {$serverEntity->getIP()}는 사용중인 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'] = $serverEntity->getClientInfoUID() ?? null;
|
||||
$formDatas['status'] = STATUS['AVAILABLE'];
|
||||
if (!array_key_exists('status', $formDatas)) {
|
||||
throw new \Exception(__METHOD__ . ":에서 {$action}오류발생: IP상태가 설정되지 않았습니다.");
|
||||
}
|
||||
//IP정보가져와서 있으면 수정
|
||||
$entity = $this->getEntity(['ip' => $serverEntity->getIP()]);
|
||||
if ($entity instanceof IPEntity) {
|
||||
$entity = parent::modify($entity, $formDatas);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw new \Exception(__METHOD__ . ":에서 {$action}오류발생: 정의되지 않은 작업입니다.");
|
||||
// break;
|
||||
$formDatas = [];
|
||||
$formDatas['clientinfo_uid'] = $serverEntity->getClientInfoUID();
|
||||
$formDatas['serviceinfo_uid'] = $serverEntity->getServiceInfoUID();
|
||||
$formDatas['serverinfo_uid'] = $serverEntity->getPK();
|
||||
$formDatas['status'] = STATUS['OCCUPIED'];
|
||||
if (!array_key_exists('status', $formDatas)) {
|
||||
throw new \Exception(__METHOD__ . ":에서 오류발생: IP상태가 설정되지 않았습니다.");
|
||||
}
|
||||
//IP정보에서 해당하는 IP가 있으면 가져와서 사용중인지 체크 후 수정
|
||||
$entity = $this->getEntity(['ip' => $serverEntity->getIP()]);
|
||||
if ($entity instanceof IPEntity) {
|
||||
if ($entity->getStatus() !== STATUS['AVAILABLE']) {
|
||||
throw new \Exception(__METHOD__ . ":에서 오류발생: {$serverEntity->getIP()}는 사용중인 IP입니다.");
|
||||
}
|
||||
$entity = parent::modify($entity, $formDatas);
|
||||
}
|
||||
}
|
||||
public function unsetServer(ServerEntity $serverEntity): void
|
||||
{
|
||||
$formDatas = [];
|
||||
$formDatas['clientinfo_uid'] = null;
|
||||
$formDatas['serviceinfo_uid'] = null;
|
||||
$formDatas['serverinfo_uid'] = null;
|
||||
$formDatas['old_clientinfo_uid'] = $serverEntity->getClientInfoUID() ?? null;
|
||||
$formDatas['status'] = STATUS['AVAILABLE'];
|
||||
if (!array_key_exists('status', $formDatas)) {
|
||||
throw new \Exception(__METHOD__ . ":에서 오류발생: IP상태가 설정되지 않았습니다.");
|
||||
}
|
||||
//IP정보가져와서 있으면 수정
|
||||
$entity = $this->getEntity(['ip' => $serverEntity->getIP()]);
|
||||
if ($entity instanceof IPEntity) {
|
||||
$entity = parent::modify($entity, $formDatas);
|
||||
}
|
||||
return $serverEntity;
|
||||
}
|
||||
|
||||
//서버파트관련 작업
|
||||
|
||||
@ -91,48 +91,41 @@ class SWITCHService extends PartService implements ServerInterface
|
||||
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['clientinfo_uid'] = $serverEntity->getClientInfoUID();
|
||||
$formDatas['serviceinfo_uid'] = $serverEntity->getServiceInfoUID();
|
||||
$formDatas['serverinfo_uid'] = $serverEntity->getPK();
|
||||
$formDatas['status'] = STATUS['OCCUPIED'];
|
||||
if (!array_key_exists('status', $formDatas)) {
|
||||
throw new \Exception(__METHOD__ . ":에서 {$action}오류발생: Switch상태가 설정되지 않았습니다.");
|
||||
}
|
||||
//Switch정보에서 해당하는 Switch가 있으면 가져와서 사용중인지 체크 후 수정
|
||||
$entity = $this->getEntity(['code' => $serverEntity->getSwitch()]);
|
||||
if ($entity instanceof SWITCHEntity) {
|
||||
if ($entity->getStatus() !== STATUS['AVAILABLE']) {
|
||||
throw new \Exception(__METHOD__ . ":에서 {$action}오류발생: {$serverEntity->getSwitch()}는 사용중인 Switch입니다.");
|
||||
}
|
||||
$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'] = $serverEntity->getClientInfoUID() ?? null;
|
||||
$formDatas['status'] = STATUS['AVAILABLE'];
|
||||
if (!array_key_exists('status', $formDatas)) {
|
||||
throw new \Exception(__METHOD__ . ":에서 {$action}오류발생: Switch상태가 설정되지 않았습니다.");
|
||||
}
|
||||
//Switch정보가져와서 있으면 수정
|
||||
$entity = $this->getEntity(['code' => $serverEntity->getSwitch()]);
|
||||
if ($entity instanceof SWITCHEntity) {
|
||||
$entity = parent::modify($entity, $formDatas);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw new \Exception(__METHOD__ . ":에서 {$action}오류발생: 정의되지 않은 작업입니다.");
|
||||
// break;
|
||||
$formDatas = [];
|
||||
$formDatas['clientinfo_uid'] = $serverEntity->getClientInfoUID();
|
||||
$formDatas['serviceinfo_uid'] = $serverEntity->getServiceInfoUID();
|
||||
$formDatas['serverinfo_uid'] = $serverEntity->getPK();
|
||||
$formDatas['status'] = STATUS['OCCUPIED'];
|
||||
if (!array_key_exists('status', $formDatas)) {
|
||||
throw new \Exception(__METHOD__ . ":에서 오류발생: Switch상태가 설정되지 않았습니다.");
|
||||
}
|
||||
//Switch정보에서 해당하는 Switch가 있으면 가져와서 사용중인지 체크 후 수정
|
||||
$entity = $this->getEntity(['code' => $serverEntity->getSwitch()]);
|
||||
if ($entity instanceof SWITCHEntity) {
|
||||
if ($entity->getStatus() !== STATUS['AVAILABLE']) {
|
||||
throw new \Exception(__METHOD__ . ":에서 오류발생: {$serverEntity->getSwitch()}는 사용중인 Switch입니다.");
|
||||
}
|
||||
$entity = parent::modify($entity, $formDatas);
|
||||
}
|
||||
}
|
||||
public function unsetServer(ServerEntity $serverEntity): void
|
||||
{
|
||||
$formDatas = [];
|
||||
$formDatas['clientinfo_uid'] = null;
|
||||
$formDatas['serviceinfo_uid'] = null;
|
||||
$formDatas['serverinfo_uid'] = null;
|
||||
$formDatas['old_clientinfo_uid'] = $serverEntity->getClientInfoUID() ?? null;
|
||||
$formDatas['status'] = STATUS['AVAILABLE'];
|
||||
if (!array_key_exists('status', $formDatas)) {
|
||||
throw new \Exception(__METHOD__ . ":에서 오류발생: Switch상태가 설정되지 않았습니다.");
|
||||
}
|
||||
//Switch정보가져와서 있으면 수정
|
||||
$entity = $this->getEntity(['code' => $serverEntity->getSwitch()]);
|
||||
if ($entity instanceof SWITCHEntity) {
|
||||
$entity = parent::modify($entity, $formDatas);
|
||||
}
|
||||
return $serverEntity;
|
||||
}
|
||||
//서버파트관련 작업
|
||||
public function setServerPart(string $action, ServerPartEntity $serverPartEntity, array $serverPartDatas): ServerPartEntity
|
||||
|
||||
@ -7,15 +7,13 @@ use App\Entities\Customer\ServiceEntity;
|
||||
use App\Entities\Equipment\ServerPartEntity;
|
||||
use App\Entities\PaymentEntity;
|
||||
use App\Helpers\PaymentHelper;
|
||||
use App\Interfaces\Customer\ServiceInterface;
|
||||
use App\Interfaces\Equipment\ServerPartInterface;
|
||||
use App\Models\PaymentModel;
|
||||
use App\Services\CommonService;
|
||||
use App\Services\Customer\AccountService;
|
||||
use App\Services\Customer\ServiceService;
|
||||
use App\Services\Equipment\ServerPartService;
|
||||
|
||||
class PaymentService extends CommonService implements ServiceInterface, ServerPartInterface
|
||||
class PaymentService extends CommonService
|
||||
{
|
||||
private ?ServiceService $_serviceService = null;
|
||||
private ?ServerPartService $_serverPartService = null;
|
||||
@ -110,73 +108,56 @@ class PaymentService extends CommonService implements ServiceInterface, ServerPa
|
||||
}
|
||||
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['clientinfo_uid'] = $serviceEntity->getClientInfoUID();
|
||||
$formDatas['serviceinfo_uid'] = $serviceEntity->getPK();
|
||||
$formDatas['serverinfo_uid'] = $serviceEntity->getServerInfoUID();
|
||||
$formDatas['title'] = sprintf(
|
||||
"[%s/%s] %s 서비스비용",
|
||||
$serviceEntity->getServerEntity()->getCode(),
|
||||
$serviceEntity->getServerEntity()->getIP(),
|
||||
date("Y년 n월", strtotime($serviceEntity->getBillingAt()))
|
||||
);
|
||||
$formDatas['amount'] = $serviceEntity->getAmount();
|
||||
$formDatas['billing'] = PAYMENT['BILLING']['MONTH'];
|
||||
$formDatas['billing_at'] = $serviceEntity->getBillingAt();
|
||||
$entity = parent::create($formDatas);
|
||||
break;
|
||||
case 'modify': //서비스 가격 수정용
|
||||
if ($serviceEntity->getPaymentUID() === null) {
|
||||
throw new \Exception(__METHOD__ . "에서 {$action}오류발생:서비스정보에 결제정보가 정의되지 않았습니다.");
|
||||
}
|
||||
$entity = $this->getEntity($serviceEntity->getPaymentUID());
|
||||
if (!$entity instanceof PaymentEntity) {
|
||||
throw new \Exception(__METHOD__ . "에서 {$action}오류발생:결제정보를 찾을수 없습니다.");
|
||||
}
|
||||
if ($entity->getStatus() === STATUS['PAID']) {
|
||||
throw new \Exception(__METHOD__ . "에서 {$action}오류발생:결제완료된 서비스는 수정할수 없습니다.");
|
||||
}
|
||||
$formDatas = [];
|
||||
$formDatas['clientinfo_uid'] = $serviceEntity->getClientInfoUID();
|
||||
$formDatas['serviceinfo_uid'] = $serviceEntity->getPK();
|
||||
$formDatas['serverinfo_uid'] = $serviceEntity->getServerInfoUID();
|
||||
$formDatas['title'] = sprintf(
|
||||
"[%s/%s] %s 서비스비용",
|
||||
$serviceEntity->getServerEntity()->getCode(),
|
||||
$serviceEntity->getServerEntity()->getIP(),
|
||||
date("Y년 n월", strtotime($serviceEntity->getBillingAt()))
|
||||
);
|
||||
$formDatas['amount'] = $serviceEntity->getAmount();
|
||||
$formDatas['billing'] = PAYMENT['BILLING']['MONTH'];
|
||||
$formDatas['billing_at'] = $serviceEntity->getBillingAt();
|
||||
$entity = parent::modify($entity, $formDatas);
|
||||
break;
|
||||
case 'delete':
|
||||
if ($serviceEntity->getPaymentUID() === null) {
|
||||
throw new \Exception(__METHOD__ . "에서 {$action}오류발생:서비스정보에 결제정보가 정의되지 않았습니다.");
|
||||
}
|
||||
$entity = $this->getEntity($serviceEntity->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;
|
||||
}
|
||||
$formDatas = [];
|
||||
$formDatas['clientinfo_uid'] = $serviceEntity->getClientInfoUID();
|
||||
$formDatas['serviceinfo_uid'] = $serviceEntity->getPK();
|
||||
$formDatas['serverinfo_uid'] = $serviceEntity->getServerInfoUID();
|
||||
$formDatas['title'] = sprintf(
|
||||
"[%s/%s] %s 서비스비용",
|
||||
$serviceEntity->getServerEntity()->getCode(),
|
||||
$serviceEntity->getServerEntity()->getIP(),
|
||||
date("Y년 n월", strtotime($serviceEntity->getBillingAt()))
|
||||
);
|
||||
$formDatas['amount'] = $serviceEntity->getAmount();
|
||||
$formDatas['billing'] = PAYMENT['BILLING']['MONTH'];
|
||||
$formDatas['billing_at'] = $serviceEntity->getBillingAt();
|
||||
return $this->create($formDatas);
|
||||
}
|
||||
//서비스 변경
|
||||
public function modifyService(ServiceEntity $serviceEntity): PaymentEntity
|
||||
{
|
||||
$entity = $this->getEntity($serviceEntity->getPaymentUID());
|
||||
if (!$entity instanceof PaymentEntity) {
|
||||
throw new \Exception(__METHOD__ . "에서 {$action}->setPaymentEntity오류발생:결제정보를 찾을수 없습니다.");
|
||||
throw new \Exception(__METHOD__ . "에서 오류발생:결제정보를 찾을수 없습니다.");
|
||||
}
|
||||
$formDatas = [];
|
||||
$formDatas['clientinfo_uid'] = $serviceEntity->getClientInfoUID();
|
||||
$formDatas['serviceinfo_uid'] = $serviceEntity->getPK();
|
||||
$formDatas['serverinfo_uid'] = $serviceEntity->getServerInfoUID();
|
||||
$formDatas['title'] = sprintf(
|
||||
"[%s/%s] %s 서비스비용",
|
||||
$serviceEntity->getServerEntity()->getCode(),
|
||||
$serviceEntity->getServerEntity()->getIP(),
|
||||
date("Y년 n월", strtotime($serviceEntity->getBillingAt()))
|
||||
);
|
||||
$formDatas['amount'] = $serviceEntity->getAmount();
|
||||
$formDatas['billing'] = PAYMENT['BILLING']['MONTH'];
|
||||
$formDatas['billing_at'] = $serviceEntity->getBillingAt();
|
||||
return $this->modify($entity, $formDatas);
|
||||
}
|
||||
//서비스 해지
|
||||
public function deleteService(ServiceEntity $serviceEntity): void
|
||||
{
|
||||
if ($serviceEntity->getPaymentUID() !== null) {
|
||||
$entity = $this->getEntity($serviceEntity->getPaymentUID());
|
||||
if (!$entity instanceof PaymentEntity) {
|
||||
throw new \Exception(__METHOD__ . "에서 오류발생:결제정보를 찾을수 없습니다.");
|
||||
}
|
||||
$this->delete($entity);
|
||||
}
|
||||
return $serviceEntity->setPaymentEntity($entity);
|
||||
}
|
||||
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();
|
||||
$entity = parent::create($formDatas);
|
||||
//Log처리
|
||||
$this->getMylogService()->create(['title' => "[{$entity->getTitle()}] 일회성 결제", ['status'] => $entity->getStatus()]);
|
||||
$this->getMylogService()->create([
|
||||
'title' => "[{$entity->getTitle()}] 일회성 결제",
|
||||
'status' => $entity->getStatus()
|
||||
]);
|
||||
return $entity;
|
||||
}
|
||||
//월과금용 일괄결제처리(결제는 무조건 예치금으로만 처리)
|
||||
public function batchjob(mixed $entity, array $formDatas): mixed
|
||||
{
|
||||
if (!$entity instanceof PaymentEntity) {
|
||||
throw new \Exception(__METHOD__ . "에서 오류발생:결제정보가 정의되지 않았습니다.");
|
||||
}
|
||||
//결제 완료 처리 후 추가정보 처리
|
||||
$formDatas['status'] = STATUS['PAID'];
|
||||
$entity = parent::batchjob($entity, $formDatas);
|
||||
//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, []);
|
||||
}
|
||||
//결제정보 삭제
|
||||
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 검색용
|
||||
//OrderBy 처리
|
||||
final public function setOrderBy(mixed $field = null, mixed $value = null): void
|
||||
|
||||
@ -8,9 +8,6 @@
|
||||
<div class="accordion-item">
|
||||
<a href="/admin/board?category=<?= BOARD['CATEGORY']['NOTICE'] ?>"><?= ICONS['SERVICE_ITEM_LINE'] ?>공지사항</a>
|
||||
</div>
|
||||
<div class="accordion-item">
|
||||
<a href="/admin/board?category=<?= BOARD['CATEGORY']['WORKING'] ?>"><?= ICONS['SERVICE_ITEM_SERVER'] ?>작업일지</a>
|
||||
</div>
|
||||
<div class="accordion-item">
|
||||
<a href="/admin/board?category=<?= BOARD['CATEGORY']['REQUESTTASK'] ?>"><?= ICONS['SERVICE_ITEM_SERVER'] ?>요청업무</a>
|
||||
</div>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user