From 3c9d6d78d118d94bb1b16041206fc033a42c80ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=B5=9C=EC=A4=80=ED=9D=A0?= Date: Tue, 6 Jan 2026 13:09:07 +0900 Subject: [PATCH] dbmsv4 init...4 --- app/Entities/UserSNSEntity.php | 4 + app/Forms/CommonForm.php | 34 +-- app/Forms/Part/PartForm.php | 3 +- app/Services/Auth/AuthService.php | 18 +- app/Services/Auth/GoogleService.php | 17 +- app/Services/Auth/LocalService.php | 17 +- app/Services/BoardService.php | 41 +--- app/Services/CommonService.php | 210 +++++++++--------- app/Services/Customer/ClientService.php | 33 +-- app/Services/Customer/ServiceService.php | 41 +--- .../Customer/Wallet/AccountService.php | 33 +-- .../Customer/Wallet/CouponService.php | 33 +-- app/Services/Customer/Wallet/PointService.php | 33 +-- app/Services/Equipment/CHASSISService.php | 35 +-- app/Services/Equipment/LineService.php | 33 +-- app/Services/Equipment/ServerPartService.php | 35 +-- app/Services/Equipment/ServerService.php | 37 +-- app/Services/MylogService.php | 45 +--- app/Services/Part/CPUService.php | 33 +-- app/Services/Part/CSService.php | 33 +-- app/Services/Part/DISKService.php | 33 +-- app/Services/Part/IPService.php | 37 +-- app/Services/Part/RAMService.php | 33 +-- app/Services/Part/SOFTWAREService.php | 33 +-- app/Services/Part/SWITCHService.php | 33 +-- app/Services/PaymentService.php | 81 +++---- app/Services/UserService.php | 33 +-- 27 files changed, 233 insertions(+), 818 deletions(-) diff --git a/app/Entities/UserSNSEntity.php b/app/Entities/UserSNSEntity.php index fd920c7..96ecb48 100644 --- a/app/Entities/UserSNSEntity.php +++ b/app/Entities/UserSNSEntity.php @@ -31,4 +31,8 @@ class UserSNSEntity extends CommonEntity { return $this->attributes['email']; } + public function getParent(): int|string + { + return $this->attributes['user_uid']; + } } diff --git a/app/Forms/CommonForm.php b/app/Forms/CommonForm.php index 2ed4849..ed0f77b 100644 --- a/app/Forms/CommonForm.php +++ b/app/Forms/CommonForm.php @@ -92,7 +92,8 @@ abstract class CommonForm } final public function setIndexFilters(array $fields): void { - $this->_indexFilters = $fields;; + $this->_indexFilters = $fields; + ; } final public function getIndexFilters(): array { @@ -100,7 +101,8 @@ abstract class CommonForm } final public function setBatchjobFilters(array $fields): void { - $this->_batchjobFilters = $fields;; + $this->_batchjobFilters = $fields; + ; } final public function getBatchjobFilters(): array { @@ -136,12 +138,18 @@ abstract class CommonForm throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: Validation 서비스가 초기화되지 않았습니다."); } - $dynamicRules = []; - try { + $dynamicRules = []; + + // 0. Ensure all scalar inputs are strings to prevent trim() error on PHP 8.1+ + foreach ($formDatas as $key => $value) { + if (is_scalar($value) && !is_string($value)) { + $formDatas[$key] = (string) $value; + } + } // 1. 현재 서비스의 필드 라벨 정보 로드 (언어 파일 기반) $formFields = $this->getFormFields(); - $formRules = $this->getFormRules(); + $formRules = $this->getFormRules(); if (empty($formRules)) { throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: 지정된 Form RULE이 없습니다."); @@ -222,11 +230,11 @@ abstract class CommonForm } break; case $this->getAttribute('title_field'): - $formRules[$field] = sprintf("required|trim|string%s", in_array($action, ["create", "create_form"]) ? "|is_unique[{$this->getAttribute('table')}.{$field}]" : ""); + $formRules[$field] = sprintf("required|trim|string%s", in_array($action, ["create", "create_form"]) ? "|is_unique[{$this->getAttribute('table')}.{$field}]" : ""); break; case "code": // a-zA-Z → 영문 대소문자,0-9 → 숫자,가-힣 → 한글 완성형,\- → 하이픈 - $formRules[$field] = sprintf("required|regex_match[/^[a-zA-Z0-9가-힣\-\_]+$/]|min_length[4]%s", in_array($action, ["create"]) ? "|is_unique[{$this->getAttribute('table')}.{$field}]" : ""); + $formRules[$field] = sprintf("required|regex_match[/^[a-zA-Z0-9가-힣\-\_]+$/]|min_length[4]%s", in_array($action, ["create"]) ? "|is_unique[{$this->getAttribute('table')}.{$field}]" : ""); break; case "user_uid": $formRules[$field] = "required|numeric"; @@ -234,18 +242,18 @@ abstract class CommonForm case "clientinfo_uid": case "serviceinfo_uid": case "serverinfo_uid": - $formRules[$field] = "permit_empty|numeric"; + $formRules[$field] = "permit_empty|numeric"; break; case 'picture': - $formRules[$field] = "is_image[{$field}]|mime_in[{$field},image/jpg,image/jpeg,image/gif,image/png,image/webp]|max_size[{$field},300]|max_dims[{$field},2048,768]"; + $formRules[$field] = "is_image[{$field}]|mime_in[{$field},image/jpg,image/jpeg,image/gif,image/png,image/webp]|max_size[{$field},300]|max_dims[{$field},2048,768]"; break; case "updated_at": case "created_at": case "deleted_at": - $formRules[$field] = "permit_empty|trim|valid_date"; + $formRules[$field] = "permit_empty|trim|valid_date"; break; default: - $formRules[$field] = "permit_empty|trim|string"; + $formRules[$field] = "permit_empty|trim|string"; break; } return $formRules; @@ -257,9 +265,9 @@ abstract class CommonForm default: if (in_array($action, ['create_form', 'modify_form', 'alternative_create_form'])) { if (array_key_exists($field, $formDatas)) { - $where = sprintf("status = '%s' OR %s='%s'", STATUS['AVAILABLE'], $this->getAttribute('pk_field'), $formDatas[$field]); + $where = sprintf("status = '%s' OR %s='%s'", STATUS['AVAILABLE'], $this->getAttribute('pk_field'), $formDatas[$field]); } else { - $where = sprintf("status = '%s'", STATUS['AVAILABLE']); + $where = sprintf("status = '%s'", STATUS['AVAILABLE']); } $entities = $service->getEntities([$where => null]); } else { diff --git a/app/Forms/Part/PartForm.php b/app/Forms/Part/PartForm.php index 7eab39f..f7338b5 100644 --- a/app/Forms/Part/PartForm.php +++ b/app/Forms/Part/PartForm.php @@ -23,13 +23,14 @@ abstract class PartForm extends CommonForm break; case "price": case "stock": + case "used": $formRules[$field] = "required|numeric"; break; case "status": $formRules[$field] = "permit_empty|trim|string"; break; default: - $formRules = parent::getFormRule($action, $field, $formRules); + $formRules = parent::getFormRule($action, $field, $formRules); break; } return $formRules; diff --git a/app/Services/Auth/AuthService.php b/app/Services/Auth/AuthService.php index cbb3539..5f0a5bd 100644 --- a/app/Services/Auth/AuthService.php +++ b/app/Services/Auth/AuthService.php @@ -11,7 +11,8 @@ use App\Services\CommonService; abstract class AuthService extends CommonService { - private $_helper = null; + protected string $helperClass = AuthHelper::class; + protected function __construct(CommonModel $model) { parent::__construct($model); @@ -21,22 +22,9 @@ abstract class AuthService extends CommonService { return UserEntity::class; } - abstract public function getFormService(): mixed; - final public function getHelper(): AuthHelper - { - if ($this->_helper === null) { - $this->_helper = new AuthHelper(); - $this->_helper->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_helper; - } //로그인 abstract protected function login_process(array $formDatas): UserEntity; - final public function login(LocalDTO|GoogleDTO $dto): UserEntity + final public function login(LocalDTO|GoogleDTO $dto): UserEntity { $entity = $this->login_process($dto->toArray()); //인증 세션처리 diff --git a/app/Services/Auth/GoogleService.php b/app/Services/Auth/GoogleService.php index 7daeefe..3f628c1 100644 --- a/app/Services/Auth/GoogleService.php +++ b/app/Services/Auth/GoogleService.php @@ -11,7 +11,8 @@ use CodeIgniter\Exceptions\PageNotFoundException; class GoogleService extends AuthService { - private $_form = null; + protected string $formClass = GoogleForm::class; + public function __construct(UserModel $model, private CURL $socket) { parent::__construct($model); @@ -25,20 +26,6 @@ class GoogleService extends AuthService { return GoogleDTO::class; } - public function getFormService(): GoogleForm - { - if ($this->_form === null) { - $this->_form = new GoogleForm(); - $this->_form->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false), - ]); - } - return $this->_form; - } protected function getEntity_process(mixed $entity): UserEntity { return $entity; diff --git a/app/Services/Auth/LocalService.php b/app/Services/Auth/LocalService.php index dcc6a8b..1d30578 100644 --- a/app/Services/Auth/LocalService.php +++ b/app/Services/Auth/LocalService.php @@ -10,7 +10,8 @@ use RuntimeException; class LocalService extends AuthService { - private $_form = null; + protected string $formClass = LocalForm::class; + public function __construct(UserModel $model) { parent::__construct($model); @@ -24,20 +25,6 @@ class LocalService extends AuthService { return LocalDTO::class; } - public function getFormService(): LocalForm - { - if ($this->_form === null) { - $this->_form = new LocalForm(); - $this->_form->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false), - ]); - } - return $this->_form; - } protected function getEntity_process(mixed $entity): UserEntity { return $entity; diff --git a/app/Services/BoardService.php b/app/Services/BoardService.php index 46f4bd7..a8c2cd6 100644 --- a/app/Services/BoardService.php +++ b/app/Services/BoardService.php @@ -10,8 +10,9 @@ use App\DTOs\BoardDTO; class BoardService extends CommonService { - private $_form = null; - private $_helper = null; + protected string $formClass = BoardForm::class; + protected string $helperClass = BoardHelper::class; + public function __construct(BoardModel $model) { parent::__construct($model); @@ -29,47 +30,11 @@ class BoardService extends CommonService { return BoardEntity::class; } - public function getFormService(): BoardForm - { - if ($this->_form === null) { - $this->_form = new BoardForm(); - $this->_form->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_form; - } - public function getHelper(): BoardHelper - { - if ($this->_helper === null) { - $this->_helper = new BoardHelper(); - $this->_helper->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_helper; - } //기본 기능부분 protected function getEntity_process(mixed $entity): BoardEntity { return $entity; } - protected function create_process(array $formDatas): BoardEntity - { - return parent::create_process($formDatas); - } - protected function modify_process($entity, array $formDatas): BoardEntity - { - return parent::modify_process($entity, $formDatas); - } //List 검색용 //FormFilter 조건절 처리 //검색어조건절처리 diff --git a/app/Services/CommonService.php b/app/Services/CommonService.php index 2fd977f..ec941a1 100644 --- a/app/Services/CommonService.php +++ b/app/Services/CommonService.php @@ -18,12 +18,80 @@ abstract class CommonService private ?AuthContext $_authContext = null; private array $_classPaths = []; protected $title = null; - protected function __construct(protected CommonModel $model) {} + + protected ?object $_form = null; + protected ?object $_helper = null; + + protected string $formClass = ''; + protected string $helperClass = ''; + + protected function __construct(protected CommonModel $model) + { + } + abstract public function getDTOClass(): string; abstract public function createDTO(array $formDatas): CommonDTO; abstract public function getEntityClass(): string; - abstract public function getFormService(): mixed; - abstract public function getHelper(): mixed; + + /** + * 공통 트랜잭션 래퍼 + */ + final protected function dbTransaction(callable $callback, string $functionName = ''): mixed + { + $db = \Config\Database::connect(); + try { + $db->transException(true)->transStart(); + $result = $callback($db); + $db->transComplete(); + return $result; + } catch (DatabaseException $e) { + $errorMessage = sprintf( + "\n----[%s]에서 트랜잭션 실패: DB 오류----\n%s\n%s\n------------------------------\n", + static::class . '->' . ($functionName ?: 'dbTransaction'), + $this->model->getLastQuery() ?? "No Query Available", + $e->getMessage() + ); + log_message('error', $errorMessage); + throw new RuntimeException($errorMessage, $e->getCode(), $e); + } catch (\Throwable $e) { + $db->transRollback(); + throw new RuntimeException($e->getMessage(), $e->getCode(), $e); + } + } + + public function getFormService(): mixed + { + if ($this->_form === null && $this->formClass) { + $this->_form = new $this->formClass(); + if (method_exists($this->_form, 'setAttributes')) { + $this->_form->setAttributes([ + 'pk_field' => $this->getPKField(), + 'title_field' => $this->getTitleField(), + 'table' => $this->model->getTable(), + 'useAutoIncrement' => $this->model->useAutoIncrement(), + 'class_path' => $this->getClassPaths(false) + ]); + } + } + return $this->_form; + } + + public function getHelper(): mixed + { + if ($this->_helper === null && $this->helperClass) { + $this->_helper = new $this->helperClass(); + if (method_exists($this->_helper, 'setAttributes')) { + $this->_helper->setAttributes([ + 'pk_field' => $this->getPKField(), + 'title_field' => $this->getTitleField(), + 'table' => $this->model->getTable(), + 'useAutoIncrement' => $this->model->useAutoIncrement(), + 'class_path' => $this->getClassPaths(false) + ]); + } + } + return $this->_helper; + } final public function getAuthContext(): AuthContext { if ($this->_authContext === null) { @@ -37,11 +105,11 @@ abstract class CommonService } final public function getPKField(): string { - return $this->model->getPKField(); + return $this->model->getPKField(); } final public function getTitleField(): string { - return $this->model->getTitleField(); + return $this->model->getTitleField(); } final public function getClassPaths($isArray = true, $delimeter = DIRECTORY_SEPARATOR): array|string @@ -50,9 +118,9 @@ abstract class CommonService } final public function getNextPK(): int { - $pkField = $this->getPKField(); + $pkField = $this->getPKField(); $row = $this->model->selectMax($pkField)->get()->getRow(); - return isset($row->{$pkField}) ? ((int)$row->{$pkField} + 1) : 1; + return isset($row->{$pkField}) ? ((int) $row->{$pkField} + 1) : 1; } /** * 단일 엔티티를 조회합니다. @@ -149,9 +217,9 @@ abstract class CommonService if ($insertID > 0) { $pk = $insertID; } - } elseif ($this->model->useAutoIncrement() && is_numeric($result) && (int)$result > 0) { + } elseif ($this->model->useAutoIncrement() && is_numeric($result) && (int) $result > 0) { // save()가 성공적인 INSERT 후 PK를 반환하는 경우를 대비 (CI4의 동작) - $pk = (int)$result; + $pk = (int) $result; } // 최종적으로 PK가 유효한지 확인합니다. if (empty($pk)) { @@ -179,10 +247,10 @@ abstract class CommonService protected function create_process(array $formDatas): CommonEntity { try { - $this->getFormService()->action_init_process('create', $formDatas); - // 데이터 검증 - $this->getFormService()->validate($formDatas); - // 💡 동적으로 가져온 Entity 클래스 이름으로 instanceof 검사 + if ($formService = $this->getFormService()) { + $formService->action_init_process('create', $formDatas); + $formService->validate($formDatas); + } $entityClass = $this->getEntityClass(); $entity = new $entityClass($formDatas); if (!$entity instanceof $entityClass) { @@ -193,44 +261,29 @@ abstract class CommonService throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생:" . $e->getMessage()); } } + final public function create(array $formDatas): CommonEntity { - $db = \Config\Database::connect(); - try { - //트랜잭션 도중 DB 오류가 발생하면 DatabaseException을 던지도록 설정 - $db->transException(true)->transStart(); - //관리자 정보추가용 + return $this->dbTransaction(function () use ($formDatas) { $formDatas['user_uid'] = $this->getAuthContext()->getUID(); - $entity = $this->create_process($formDatas); - $db->transComplete(); - return $entity; - } catch (DatabaseException $e) { - // DatabaseException을 포착하면 자동으로 롤백 처리됨 - throw new RuntimeException(sprintf( - "\n----[%s]에서 트랜잭션 실패: DB 오류----\n%s\n%s\n------------------------------\n", - static::class . '->' . __FUNCTION__, - $this->model->getLastQuery(), - $e->getMessage() - ), $e->getCode(), $e); - } catch (\Throwable $e) { - $db->transRollback(); // 예외 발생 시 수동으로 롤백 - throw new RuntimeException($e->getMessage()); - } + return $this->create_process($formDatas); + }, __FUNCTION__); } //수정용 protected function modify_process($entity, array $formDatas): CommonEntity { try { - $this->getFormService()->action_init_process('modify', $formDatas); - // 2. 사용자 입력값(formDatas)을 Entity에 주입 - // fill()을 사용하면 Entity 내부에서 어떤 값이 변경되었는지(Dirty) 추적 시작 + if ($formService = $this->getFormService()) { + $formService->action_init_process('modify', $formDatas); + } $entity->fill($formDatas); if (!$entity->hasChanged()) { return $entity; } - // 데이터 검증 - $this->getFormService()->validate($entity->toArray()); + if ($formService = $this->getFormService()) { + $formService->validate($entity->toArray()); + } return $this->save_process($entity); } catch (\Throwable $e) { throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생:" . $e->getMessage() . "\n" . var_export($entity)); @@ -239,31 +292,14 @@ abstract class CommonService final public function modify(string|int $uid, array $formDatas): CommonEntity { - $db = \Config\Database::connect(); - try { - $db->transException(true)->transStart(); + return $this->dbTransaction(function () use ($uid, $formDatas) { $entity = $this->getEntity($uid); if (!$entity) { throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: {$uid}에 해당하는 정보을 찾을수 없습니다."); } - //관리자 정보추가용 $formDatas['user_uid'] = $this->getAuthContext()->getUID(); - $entity = $this->modify_process($entity, $formDatas); - // 트랜잭션 완료 및 커밋 - $db->transComplete(); - return $entity; - } catch (DatabaseException $e) { - // DatabaseException을 포착하면 자동으로 롤백 처리됨 - throw new RuntimeException(sprintf( - "\n----[%s]에서 트랜잭션 실패: DB 오류----\n%s\n%s\n------------------------------\n", - static::class . '->' . __FUNCTION__, - $this->model->getLastQuery(), - $e->getMessage() - ), $e->getCode(), $e); - } catch (\Throwable $e) { - $db->transRollback(); // 예외 발생 시 수동으로 롤백 - throw new RuntimeException($e->getMessage()); - } + return $this->modify_process($entity, $formDatas); + }, __FUNCTION__); } //배치 작업용 수정 @@ -274,30 +310,22 @@ abstract class CommonService } final public function batchjob(array $uids, array $formDatas): array { - $db = \Config\Database::connect(); - try { - //트랜잭션 도중 DB 오류가 발생하면 DatabaseException을 던지도록 설정 - $db->transException(true)->transStart(); + return $this->dbTransaction(function () use ($uids, $formDatas) { $entities = []; foreach ($uids as $uid) { $entity = $this->getEntity($uid); if (!$entity) { throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: {$uid}에 해당하는 정보을 찾을수 없습니다."); } - // 💡 동적으로 가져온 Entity 클래스 이름으로 instanceof 검사 $entityClass = $this->getEntityClass(); if (!$entity instanceof $entityClass) { throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생:Return Type은 {$entityClass}만 가능"); } - //관리자 정보추가용 $formDatas['user_uid'] = $this->getAuthContext()->getUID(); $entities[] = $this->batchjob_process($entity, $formDatas); } return $entities; - } catch (\Throwable $e) { - $db->transRollback(); // 예외 발생 시 수동으로 롤백 - throw new RuntimeException($e->getMessage()); - } + }, __FUNCTION__); } //삭제용 (일반) @@ -314,8 +342,7 @@ abstract class CommonService } final public function delete(string|int $uid): CommonEntity { - $db = \Config\Database::connect(); - try { + return $this->dbTransaction(function () use ($uid) { if (!$uid) { throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 삭제에 필요한 PrimaryKey 가 정의 되지 않았습니다."); } @@ -323,28 +350,12 @@ abstract class CommonService if (!$entity) { throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: {$uid}에 해당하는 정보을 찾을수 없습니다."); } - // 💡 동적으로 가져온 Entity 클래스 이름으로 instanceof 검사 $entityClass = $this->getEntityClass(); if (!$entity instanceof $entityClass) { throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생:Return Type은 {$entityClass}만 가능"); } - $db->transException(true)->transStart(); - $entity = $this->delete_process($entity); - // 트랜잭션 완료 및 커밋 - $db->transComplete(); - return $entity; - } catch (DatabaseException $e) { - // DatabaseException을 포착하면 자동으로 롤백 처리됨 - throw new RuntimeException(sprintf( - "\n----[%s]에서 트랜잭션 실패: DB 오류----\n%s\n%s\n------------------------------\n", - __FUNCTION__, - $this->model->getLastQuery(), - $e->getMessage() - ), $e->getCode(), $e); - } catch (\Throwable $e) { - $db->transRollback(); // 예외 발생 시 수동으로 롤백 - throw new RuntimeException($e->getMessage()); - } + return $this->delete_process($entity); + }, __FUNCTION__); } //삭제용 (배치 작업) @@ -356,38 +367,21 @@ abstract class CommonService final public function batchjob_delete(array $uids): array { - $db = \Config\Database::connect(); - try { - $db->transException(true)->transStart(); - //일괄작업처리 + return $this->dbTransaction(function () use ($uids) { $entities = []; foreach ($uids as $uid) { $entity = $this->getEntity($uid); if (!$entity) { throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: {$uid}에 해당하는 정보을 찾을수 없습니다."); } - // 💡 동적으로 가져온 Entity 클래스 이름으로 instanceof 검사 $entityClass = $this->getEntityClass(); if (!$entity instanceof $entityClass) { throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생:Return Type은 {$entityClass}만 가능"); } $entities[] = $this->batchjob_delete_process($entity); } - // 트랜잭션 완료 및 커밋 - $db->transComplete(); return $entities; - } catch (DatabaseException $e) { - // DatabaseException을 포착하면 자동으로 롤백 처리됨 - throw new RuntimeException(sprintf( - "\n----[%s]에서 트랜잭션 실패: DB 오류----\n%s\n%s\n------------------------------\n", - __FUNCTION__, - $this->model->getLastQuery(), - $e->getMessage() - ), $e->getCode(), $e); - } catch (\Throwable $e) { - $db->transRollback(); // 예외 발생 시 수동으로 롤백 - throw new RuntimeException($e->getMessage()); - } + }, __FUNCTION__); } //Index용 @@ -430,7 +424,7 @@ abstract class CommonService if ($field !== null && $value !== null) { $this->model->orderBy(sprintf("%s.%s %s", $this->model->getTable(), $field, $value)); } else { - $this->model->orderBy(sprintf("%s.%s %s", $this->model->getTable(), $this->getPKField(), "DESC")); + $this->model->orderBy(sprintf("%s.%s %s", $this->model->getTable(), $this->getPKField(), "DESC")); } } } diff --git a/app/Services/Customer/ClientService.php b/app/Services/Customer/ClientService.php index 1b4c38e..ee975b1 100644 --- a/app/Services/Customer/ClientService.php +++ b/app/Services/Customer/ClientService.php @@ -12,8 +12,9 @@ use RuntimeException; class ClientService extends CustomerService { - private $_form = null; - private $_helper = null; + protected string $formClass = ClientForm::class; + protected string $helperClass = ClientHelper::class; + public function __construct(ClientModel $model) { parent::__construct($model); @@ -31,34 +32,6 @@ class ClientService extends CustomerService { return ClientEntity::class; } - public function getFormService(): ClientForm - { - if ($this->_form === null) { - $this->_form = new ClientForm(); - $this->_form->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_form; - } - public function getHelper(): ClientHelper - { - if ($this->_helper === null) { - $this->_helper = new ClientHelper(); - $this->_helper->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_helper; - } //기본 기능부분 protected function getEntity_process(mixed $entity): ClientEntity { diff --git a/app/Services/Customer/ServiceService.php b/app/Services/Customer/ServiceService.php index fb5230b..e20ea10 100644 --- a/app/Services/Customer/ServiceService.php +++ b/app/Services/Customer/ServiceService.php @@ -13,8 +13,9 @@ use RuntimeException; class ServiceService extends CustomerService { - private $_form = null; - private $_helper = null; + protected string $formClass = ServiceForm::class; + protected string $helperClass = ServiceHelper::class; + public function __construct(ServiceModel $model) { parent::__construct($model); @@ -32,34 +33,6 @@ class ServiceService extends CustomerService { return ServiceEntity::class; } - public function getFormService(): ServiceForm - { - if ($this->_form === null) { - $this->_form = new ServiceForm(); - $this->_form->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_form; - } - public function getHelper(): ServiceHelper - { - if ($this->_helper === null) { - $this->_helper = new ServiceHelper(); - $this->_helper->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_helper; - } //추가 기능 //interval을 기준으로 최근 신규 서비스정보 가져오기 final public function getNewServiceEntities(int $interval, string $status = STATUS['AVAILABLE']): array @@ -90,17 +63,17 @@ class ServiceService extends CustomerService // 입력된 날짜를 DateTime 객체로 변환 $date = new DateTimeImmutable($entity->getBillingAt(), new DateTimeZone('Asia/Tokyo')); // 현재 일(day)을 저장 - $day = (int)$date->format('d'); + $day = (int) $date->format('d'); // 다음달로 이동 (DateInterval 사용) $date->modify('first day of next month'); // 다음달의 마지막 날 계산 - $lastDayOfNextMonth = (int)$date->format('t'); + $lastDayOfNextMonth = (int) $date->format('t'); // 현재 날짜가 다음달의 마지막 날보다 크면 -> 마지막 날로 설정 if ($day > $lastDayOfNextMonth) { $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'); } @@ -109,7 +82,7 @@ class ServiceService extends CustomerService { //총 서비스금액 구하기 $server_amount = service('equipment_serverservice')->getCalculatedAmount($serverinfo_uid); - return (int)$server_amount + $rack_price + $line_price - $sale_price; + return (int) $server_amount + $rack_price + $line_price - $sale_price; } final public function updateAmount(ServiceEntity $entity): ServiceEntity { diff --git a/app/Services/Customer/Wallet/AccountService.php b/app/Services/Customer/Wallet/AccountService.php index 9568582..ee3a2ed 100644 --- a/app/Services/Customer/Wallet/AccountService.php +++ b/app/Services/Customer/Wallet/AccountService.php @@ -14,8 +14,9 @@ use RuntimeException; class AccountService extends WalletService { const CLIENTINFO_BALANCE_FIELD = 'account_balance'; - private $_form = null; - private $_helper = null; + protected string $formClass = AccountForm::class; + protected string $helperClass = AccountHelper::class; + public function __construct(AccountModel $model) { parent::__construct($model); @@ -33,34 +34,6 @@ class AccountService extends WalletService { return AccountEntity::class; } - public function getFormService(): AccountForm - { - if ($this->_form === null) { - $this->_form = new AccountForm(); - $this->_form->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_form; - } - public function getHelper(): AccountHelper - { - if ($this->_helper === null) { - $this->_helper = new AccountHelper(); - $this->_helper->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_helper; - } //기본 기능부분 protected function getEntity_process(mixed $entity): AccountEntity { diff --git a/app/Services/Customer/Wallet/CouponService.php b/app/Services/Customer/Wallet/CouponService.php index 7e9c312..b7653a9 100644 --- a/app/Services/Customer/Wallet/CouponService.php +++ b/app/Services/Customer/Wallet/CouponService.php @@ -14,8 +14,9 @@ use RuntimeException; class CouponService extends WalletService { const CLIENTINFO_BALANCE_FIELD = 'coupon_balance'; - private $_form = null; - private $_helper = null; + protected string $formClass = CouponForm::class; + protected string $helperClass = CouponHelper::class; + public function __construct(CouponModel $model) { parent::__construct($model); @@ -33,34 +34,6 @@ class CouponService extends WalletService { return CouponEntity::class; } - public function getFormService(): CouponForm - { - if ($this->_form === null) { - $this->_form = new CouponForm(); - $this->_form->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_form; - } - public function getHelper(): CouponHelper - { - if ($this->_helper === null) { - $this->_helper = new CouponHelper(); - $this->_helper->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_helper; - } //기본 기능부분 protected function getEntity_process(mixed $entity): CouponEntity { diff --git a/app/Services/Customer/Wallet/PointService.php b/app/Services/Customer/Wallet/PointService.php index c0eb987..572aa54 100644 --- a/app/Services/Customer/Wallet/PointService.php +++ b/app/Services/Customer/Wallet/PointService.php @@ -14,8 +14,9 @@ use RuntimeException; class PointService extends WalletService { const CLIENTINFO_BALANCE_FIELD = 'point_balance'; - private $_form = null; - private $_helper = null; + protected string $formClass = PointForm::class; + protected string $helperClass = PointHelper::class; + public function __construct(PointModel $model) { parent::__construct($model); @@ -33,34 +34,6 @@ class PointService extends WalletService { return PointEntity::class; } - public function getFormService(): PointForm - { - if ($this->_form === null) { - $this->_form = new PointForm(); - $this->_form->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_form; - } - public function getHelper(): PointHelper - { - if ($this->_helper === null) { - $this->_helper = new PointHelper(); - $this->_helper->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_helper; - } //기본 기능부분 protected function getEntity_process(mixed $entity): PointEntity { diff --git a/app/Services/Equipment/CHASSISService.php b/app/Services/Equipment/CHASSISService.php index 0ad2aee..a7fd59a 100644 --- a/app/Services/Equipment/CHASSISService.php +++ b/app/Services/Equipment/CHASSISService.php @@ -13,8 +13,9 @@ use RuntimeException; class CHASSISService extends EquipmentService { - private $_form = null; - private $_helper = null; + protected string $formClass = CHASSISForm::class; + protected string $helperClass = CHASSISHelper::class; + public function __construct(CHASSISModel $model) { parent::__construct($model); @@ -32,34 +33,6 @@ class CHASSISService extends EquipmentService { return CHASSISEntity::class; } - public function getFormService(): CHASSISForm - { - if ($this->_form === null) { - $this->_form = new CHASSISForm(); - $this->_form->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_form; - } - public function getHelper(): CHASSISHelper - { - if ($this->_helper === null) { - $this->_helper = new CHASSISHelper(); - $this->_helper->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_helper; - } //기본 기능부분 protected function getEntity_process(mixed $entity): CHASSISEntity { @@ -91,7 +64,7 @@ class CHASSISService extends EquipmentService /** @var CHASSISEntity $entity IDE에 entity type알려주기*/ $entity = $this->getEntity($serverEntity->getChassisInfoUid()); //파트정보의 사용가능한 갯수 , 사용갯수 비교 - if ($entity->getAvailable() < 1) { + if ($entity->getAvailable() < 1) { throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 현재 사용가능한 {$serverEntity->getTitle()} 샷시가 없습니다."); } $formDatas['used'] = $entity->getUsed() + 1; diff --git a/app/Services/Equipment/LineService.php b/app/Services/Equipment/LineService.php index 49aba7a..f79e26a 100644 --- a/app/Services/Equipment/LineService.php +++ b/app/Services/Equipment/LineService.php @@ -13,8 +13,9 @@ use RuntimeException; class LineService extends EquipmentService { use UtilTrait; - private $_form = null; - private $_helper = null; + protected string $formClass = LineForm::class; + protected string $helperClass = LineHelper::class; + public function __construct(LineModel $model) { parent::__construct($model); @@ -32,34 +33,6 @@ class LineService extends EquipmentService { return LineEntity::class; } - public function getFormService(): LineForm - { - if ($this->_form === null) { - $this->_form = new LineForm(); - $this->_form->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_form; - } - public function getHelper(): LineHelper - { - if ($this->_helper === null) { - $this->_helper = new LineHelper(); - $this->_helper->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_helper; - } //기본 기능부분 protected function getEntity_process(mixed $entity): LineEntity { diff --git a/app/Services/Equipment/ServerPartService.php b/app/Services/Equipment/ServerPartService.php index d8749c1..69f664d 100644 --- a/app/Services/Equipment/ServerPartService.php +++ b/app/Services/Equipment/ServerPartService.php @@ -16,8 +16,9 @@ use RuntimeException; class ServerPartService extends EquipmentService { - private $_form = null; - private $_helper = null; + protected string $formClass = ServerPartForm::class; + protected string $helperClass = ServerPartHelper::class; + public function __construct(ServerPartModel $model) { parent::__construct($model); @@ -35,34 +36,6 @@ class ServerPartService extends EquipmentService { return ServerPartEntity::class; } - public function getFormService(): ServerPartForm - { - if ($this->_form === null) { - $this->_form = new ServerPartForm(); - $this->_form->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_form; - } - public function getHelper(): ServerPartHelper - { - if ($this->_helper === null) { - $this->_helper = new ServerPartHelper(); - $this->_helper->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_helper; - } //각 파트별 서비스 private function getPartService(string $type): PartService { @@ -103,7 +76,7 @@ class ServerPartService extends EquipmentService if (!$serviceEntity instanceof ServiceEntity) { } //해당 파트정보에 고객번호,서비스번호 설정 - $formDatas['clientinfo_uid'] = $serverEntity->getClientInfoUid(); + $formDatas['clientinfo_uid'] = $serverEntity->getClientInfoUid(); $formDatas['serviceinfo_uid'] = $serverEntity->getServiceInfoUid(); //해당 파트정보의 Title을 서버파트정보의 Titlte 설정 $formDatas['title'] = $partEntity->getTitle(); diff --git a/app/Services/Equipment/ServerService.php b/app/Services/Equipment/ServerService.php index ee61eec..6b7e20d 100644 --- a/app/Services/Equipment/ServerService.php +++ b/app/Services/Equipment/ServerService.php @@ -13,8 +13,9 @@ use RuntimeException; class ServerService extends EquipmentService { - private $_form = null; - private $_helper = null; + protected string $formClass = ServerForm::class; + protected string $helperClass = ServerHelper::class; + public function __construct(ServerModel $model) { parent::__construct($model); @@ -32,34 +33,6 @@ class ServerService extends EquipmentService { return ServerEntity::class; } - public function getFormService(): ServerForm - { - if ($this->_form === null) { - $this->_form = new ServerForm(); - $this->_form->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_form; - } - public function getHelper(): ServerHelper - { - if ($this->_helper === null) { - $this->_helper = new ServerHelper(); - $this->_helper->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_helper; - } final public function getTotalServiceCount(array $where = []): array { $totalCounts = [ @@ -217,10 +190,10 @@ class ServerService extends EquipmentService } $formDatas['serviceinfo_uid'] = $serviceEntity->getPK(); $formDatas["clientinfo_uid"] = $serviceEntity->getClientInfoUid(); - $formDatas['status'] = $formDatas['status'] ?? STATUS['OCCUPIED']; + $formDatas['status'] = $formDatas['status'] ?? STATUS['OCCUPIED']; parent::modify_process($entity, $formDatas); } - public function modifyByService(ServiceENtity $oldServiceEntity, ServiceEntity $serviceEntity): void + public function modifyByService(ServiceENtity $oldServiceEntity, ServiceEntity $serviceEntity): void { //기존 메인서버 정보 $oldEntity = $this->getEntity($oldServiceEntity->getServerInfoUid()); diff --git a/app/Services/MylogService.php b/app/Services/MylogService.php index 84bcec6..14ef72c 100644 --- a/app/Services/MylogService.php +++ b/app/Services/MylogService.php @@ -12,8 +12,9 @@ use App\DTOs\MylogDTO; class MylogService extends CommonService implements PipelineStepInterface { - private $_form = null; - private $_helper = null; + protected string $formClass = MylogForm::class; + protected string $helperClass = MylogHelper::class; + public function __construct(MylogModel $model) { parent::__construct($model); @@ -31,34 +32,6 @@ class MylogService extends CommonService implements PipelineStepInterface { return MylogEntity::class; } - public function getFormService(): MylogForm - { - if ($this->_form === null) { - $this->_form = new MylogForm(); - $this->_form->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_form; - } - public function getHelper(): MylogHelper - { - if ($this->_helper === null) { - $this->_helper = new MylogHelper(); - $this->_helper->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_helper; - } /** * LogService는 START/SUCCESS/FAILURE 로그를 기록합니다. * LogService는 파이프라인의 시작과 끝에서만 Executor에 의해 직접 호출됩니다. @@ -72,9 +45,9 @@ class MylogService extends CommonService implements PipelineStepInterface } log_message('debug', $message); $this->create([ - 'title' => "{$context->action} 작업 {$status} 로그", + 'title' => "{$context->action} 작업 {$status} 로그", 'content' => $message, - 'status' => $status, + 'status' => $status, 'user_uid' => $context->auth->getUID(), ]); } @@ -90,12 +63,4 @@ class MylogService extends CommonService implements PipelineStepInterface { return $entity; } - protected function create_process(array $formDatas): MylogEntity - { - return parent::create_process($formDatas); - } - protected function modify_process($entity, array $formDatas): MylogEntity - { - return parent::modify_process($entity, $formDatas); - } } diff --git a/app/Services/Part/CPUService.php b/app/Services/Part/CPUService.php index c70dba0..abc20a4 100644 --- a/app/Services/Part/CPUService.php +++ b/app/Services/Part/CPUService.php @@ -12,8 +12,9 @@ use RuntimeException; class CPUService extends PartType1Service { - private $_form = null; - private $_helper = null; + protected string $formClass = CPUForm::class; + protected string $helperClass = CPUHelper::class; + public function __construct(CPUModel $model) { parent::__construct($model); @@ -31,34 +32,6 @@ class CPUService extends PartType1Service { return CPUEntity::class; } - public function getFormService(): CPUForm - { - if ($this->_form === null) { - $this->_form = new CPUForm(); - $this->_form->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_form; - } - public function getHelper(): CPUHelper - { - if ($this->_helper === null) { - $this->_helper = new CPUHelper(); - $this->_helper->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_helper; - } //기본 기능부분 protected function getEntity_process(mixed $entity): CPUEntity { diff --git a/app/Services/Part/CSService.php b/app/Services/Part/CSService.php index a69a60a..4c67a35 100644 --- a/app/Services/Part/CSService.php +++ b/app/Services/Part/CSService.php @@ -12,8 +12,9 @@ use App\DTOs\Part\CSDTO; class CSService extends PartType2Service { - private $_form = null; - private $_helper = null; + protected string $formClass = CSForm::class; + protected string $helperClass = CSHelper::class; + public function __construct(CSModel $model) { parent::__construct($model); @@ -31,34 +32,6 @@ class CSService extends PartType2Service { return CSEntity::class; } - public function getFormService(): CSForm - { - if ($this->_form === null) { - $this->_form = new CSForm(); - $this->_form->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_form; - } - public function getHelper(): CSHelper - { - if ($this->_helper === null) { - $this->_helper = new CSHelper(); - $this->_helper->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_helper; - } //기본 기능부분 protected function getEntity_process(mixed $entity): CSEntity { diff --git a/app/Services/Part/DISKService.php b/app/Services/Part/DISKService.php index 8f4ef07..e35e924 100644 --- a/app/Services/Part/DISKService.php +++ b/app/Services/Part/DISKService.php @@ -13,8 +13,9 @@ use App\DTOs\Part\DISKDTO; class DISKService extends PartType1Service { - private $_form = null; - private $_helper = null; + protected string $formClass = DISKForm::class; + protected string $helperClass = DISKHelper::class; + public function __construct(DISKModel $model) { parent::__construct($model); @@ -32,34 +33,6 @@ class DISKService extends PartType1Service { return DISKEntity::class; } - public function getFormService(): DISKForm - { - if ($this->_form === null) { - $this->_form = new DISKForm(); - $this->_form->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_form; - } - public function getHelper(): DISKHelper - { - if ($this->_helper === null) { - $this->_helper = new DISKHelper(); - $this->_helper->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_helper; - } //기본 기능부분 protected function getEntity_process(mixed $entity): DISKEntity { diff --git a/app/Services/Part/IPService.php b/app/Services/Part/IPService.php index 5a7da67..639d205 100644 --- a/app/Services/Part/IPService.php +++ b/app/Services/Part/IPService.php @@ -14,8 +14,9 @@ use RuntimeException; class IPService extends PartType3Service { - private $_form = null; - private $_helper = null; + protected string $formClass = IPForm::class; + protected string $helperClass = IPHelper::class; + public function __construct(IPModel $model) { parent::__construct($model); @@ -33,34 +34,6 @@ class IPService extends PartType3Service { return IPEntity::class; } - public function getFormService(): IPForm - { - if ($this->_form === null) { - $this->_form = new IPForm(); - $this->_form->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_form; - } - public function getHelper(): IPHelper - { - if ($this->_helper === null) { - $this->_helper = new IPHelper(); - $this->_helper->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_helper; - } //기본 기능부분 protected function getEntity_process(mixed $entity): IPEntity { @@ -93,8 +66,8 @@ class IPService extends PartType3Service { $entity = $this->create_process([ 'lineinfo_uid' => $lineEntity->getPK(), - 'ip' => $ip, - 'status' => STATUS['AVAILABLE'], + 'ip' => $ip, + 'status' => STATUS['AVAILABLE'], ]); if (!$entity instanceof IPEntity) { throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 {$lineEntity->getTitle()}의 {$ip} 생성을 실패하였습니다."); diff --git a/app/Services/Part/RAMService.php b/app/Services/Part/RAMService.php index 251d2ea..09b5857 100644 --- a/app/Services/Part/RAMService.php +++ b/app/Services/Part/RAMService.php @@ -12,8 +12,9 @@ use App\DTOs\Part\RAMDTO; class RAMService extends PartType1Service { - private $_form = null; - private $_helper = null; + protected string $formClass = RAMForm::class; + protected string $helperClass = RAMHelper::class; + public function __construct(RAMModel $model) { parent::__construct($model); @@ -31,34 +32,6 @@ class RAMService extends PartType1Service { return RAMEntity::class; } - public function getFormService(): RAMForm - { - if ($this->_form === null) { - $this->_form = new RAMForm(); - $this->_form->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_form; - } - public function getHelper(): RAMHelper - { - if ($this->_helper === null) { - $this->_helper = new RAMHelper(); - $this->_helper->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_helper; - } //기본 기능부분 protected function getEntity_process(mixed $entity): RAMEntity { diff --git a/app/Services/Part/SOFTWAREService.php b/app/Services/Part/SOFTWAREService.php index e468b4d..4131c5e 100644 --- a/app/Services/Part/SOFTWAREService.php +++ b/app/Services/Part/SOFTWAREService.php @@ -13,8 +13,9 @@ use App\DTOs\Part\SOFTWAREDTO; class SOFTWAREService extends PartType1Service { - private $_form = null; - private $_helper = null; + protected string $formClass = SOFTWAREForm::class; + protected string $helperClass = SOFTWAREHelper::class; + public function __construct(SOFTWAREModel $model) { parent::__construct($model); @@ -32,34 +33,6 @@ class SOFTWAREService extends PartType1Service { return SOFTWAREEntity::class; } - public function getFormService(): SOFTWAREForm - { - if ($this->_form === null) { - $this->_form = new SOFTWAREForm(); - $this->_form->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_form; - } - public function getHelper(): SOFTWAREHelper - { - if ($this->_helper === null) { - $this->_helper = new SOFTWAREHelper(); - $this->_helper->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_helper; - } //기본 기능부분 protected function getEntity_process(mixed $entity): SOFTWAREEntity { diff --git a/app/Services/Part/SWITCHService.php b/app/Services/Part/SWITCHService.php index d01fc09..b17186d 100644 --- a/app/Services/Part/SWITCHService.php +++ b/app/Services/Part/SWITCHService.php @@ -14,8 +14,9 @@ use App\DTOs\Part\SWITCHDTO; class SWITCHService extends PartType3Service { - private $_form = null; - private $_helper = null; + protected string $formClass = SWITCHForm::class; + protected string $helperClass = SWITCHHelper::class; + public function __construct(SWITCHModel $model) { parent::__construct($model); @@ -33,34 +34,6 @@ class SWITCHService extends PartType3Service { return SWITCHEntity::class; } - public function getFormService(): SWITCHForm - { - if ($this->_form === null) { - $this->_form = new SWITCHForm(); - $this->_form->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_form; - } - public function getHelper(): SWITCHHelper - { - if ($this->_helper === null) { - $this->_helper = new SWITCHHelper(); - $this->_helper->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_helper; - } //기본 기능부분 protected function getEntity_process(mixed $entity): SWITCHEntity { diff --git a/app/Services/PaymentService.php b/app/Services/PaymentService.php index f26f28e..e6e84cc 100644 --- a/app/Services/PaymentService.php +++ b/app/Services/PaymentService.php @@ -18,8 +18,9 @@ use RuntimeException; class PaymentService extends CommonService { - private $_form = null; - private $_helper = null; + protected string $formClass = PaymentForm::class; + protected string $helperClass = PaymentHelper::class; + public function __construct(PaymentModel $model) { parent::__construct($model); @@ -37,34 +38,6 @@ class PaymentService extends CommonService { return new PaymentDTO($formDatas); } - public function getFormService(): PaymentForm - { - if ($this->_form === null) { - $this->_form = new PaymentForm(); - $this->_form->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_form; - } - public function getHelper(): PaymentHelper - { - if ($this->_helper === null) { - $this->_helper = new PaymentHelper(); - $this->_helper->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_helper; - } //총 미납건수, 금액 final public function getUnPaids(string $group, array $where = []): array { @@ -125,7 +98,7 @@ class PaymentService extends CommonService break; default: throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생: {$pay}는 지정되지 않은 지불방식입니다."); - // break; + // break; } return $walletService; } @@ -146,7 +119,8 @@ class PaymentService extends CommonService } //지불이 완료된경우 지불처리 if ($entity->getStatus() === STATUS['PAID']) { - $this->getWalletService($entity->getPay())->withdrawalByPayment($entity);; + $this->getWalletService($entity->getPay())->withdrawalByPayment($entity); + ; } //선결제인경우 서비스정보에 결제일 변경용 if ($entity->getBilling() === PAYMENT['BILLING']['PREPAYMENT']) { @@ -171,7 +145,8 @@ class PaymentService extends CommonService } //지불이 된경우 지불처리 if ($entity->getStatus() === STATUS['PAID']) { - $this->getWalletService($entity->getPay())->withdrawalByPayment($entity);; + $this->getWalletService($entity->getPay())->withdrawalByPayment($entity); + ; } //선결제인경우 서비스정보에 결제일 변경용 if ($entity->getBilling() === PAYMENT['BILLING']['PREPAYMENT']) { @@ -192,9 +167,9 @@ class PaymentService extends CommonService { if (!array_key_exists($clientEntity->getPK(), $rows)) { $rows[$clientEntity->getPK()] = [ - 'name' => $clientEntity->getName(), + 'name' => $clientEntity->getName(), 'total_amount' => 0, - 'services' => [], + 'services' => [], ]; } if (!array_key_exists($serviceEntity->getPK(), $rows[$clientEntity->getPK()]['services'])) { @@ -203,10 +178,10 @@ class PaymentService extends CommonService throw new RuntimeException(static::class . '->' . __FUNCTION__ . "에서 오류발생:[{$serviceEntity->getServerInfoUid()}]에 대한 서버정보를 찾을 수 없습니다."); } $rows[$clientEntity->getPK()]['services'][$serviceEntity->getPK()] = [ - 'ip' => $serverEntity->getIP(), + 'ip' => $serverEntity->getIP(), 'billing_at' => $serviceEntity->getBillingAt(), - 'amount' => 0, - 'items' => [], + 'amount' => 0, + 'items' => [], ]; } //entities에 총 결제금액 설정 @@ -224,12 +199,12 @@ class PaymentService extends CommonService { $formDatas['serviceinfo_uid'] = $serviceEntity->getPK(); $formDatas["clientinfo_uid"] = $serviceEntity->getClientInfoUid(); - $formDatas['amount'] = $serviceEntity->getAmount(); - $formDatas['billing'] = $formDatas['billing'] ?? PAYMENT['BILLING']['MONTH']; - $formDatas['billing_at'] = $serviceEntity->getBillingAt(); - $formDatas['pay'] = $formDatas['pay'] ?? PAYMENT['PAY']['ACCOUNT']; - $formDatas['status'] = $formDatas['status'] ?? STATUS['UNPAID']; - $formDatas['title'] = sprintf( + $formDatas['amount'] = $serviceEntity->getAmount(); + $formDatas['billing'] = $formDatas['billing'] ?? PAYMENT['BILLING']['MONTH']; + $formDatas['billing_at'] = $serviceEntity->getBillingAt(); + $formDatas['pay'] = $formDatas['pay'] ?? PAYMENT['PAY']['ACCOUNT']; + $formDatas['status'] = $formDatas['status'] ?? STATUS['UNPAID']; + $formDatas['title'] = sprintf( "%s %s 서비스비용", $formDatas['title'] ?? $serviceEntity->getTitle(), DateTime::createFromFormat('Y-m-d', $formDatas['billing_at'])->format('Y년 m월') @@ -247,8 +222,8 @@ class PaymentService extends CommonService $entity = $this->getEntity([ 'serviceinfo_uid' => $oldServiceEntity->getPK(), 'billing' => PAYMENT['BILLING']['MONTH'], - 'billing_at' => $oldServiceEntity->getBillingAt(), - 'status' => STATUS['UNPAID'] + 'billing_at' => $oldServiceEntity->getBillingAt(), + 'status' => STATUS['UNPAID'] ]); if (!$entity instanceof PaymentEntity) { //해당조건에 맞는게 없으면 생성 log_message('error', sprintf( @@ -272,12 +247,12 @@ class PaymentService extends CommonService $formDatas['serviceinfo_uid'] = $serverPartEntity->getServiceInfoUid(); $formDatas["clientinfo_uid"] = $serverPartEntity->getClientInfoUid(); $formDatas["serverpartinfo_uid"] = $serverPartEntity->getPK(); - $formDatas['amount'] = $serverPartEntity->getCalculatedAmount(); - $formDatas['billing'] = $formDatas['billing'] ?? PAYMENT['BILLING']['ONETIME']; - $formDatas['billing_at'] = $serverPartEntity->getBillingAt(); - $formDatas['pay'] = $formDatas['pay'] ?? PAYMENT['PAY']['ACCOUNT']; - $formDatas['status'] = $formDatas['status'] ?? STATUS['UNPAID']; - $formDatas['title'] = sprintf("%s 일회성비용", $formDatas['title'] ?? $serverPartEntity->getCustomTitle()); + $formDatas['amount'] = $serverPartEntity->getCalculatedAmount(); + $formDatas['billing'] = $formDatas['billing'] ?? PAYMENT['BILLING']['ONETIME']; + $formDatas['billing_at'] = $serverPartEntity->getBillingAt(); + $formDatas['pay'] = $formDatas['pay'] ?? PAYMENT['PAY']['ACCOUNT']; + $formDatas['status'] = $formDatas['status'] ?? STATUS['UNPAID']; + $formDatas['title'] = sprintf("%s 일회성비용", $formDatas['title'] ?? $serverPartEntity->getCustomTitle()); return $formDatas; } public function createByServerPart(ServerPartEntity $serverPartEntity): PaymentEntity @@ -299,7 +274,7 @@ class PaymentService extends CommonService 'serviceinfo_uid' => $oldServerPartEntity->getServiceInfoUid(), 'billing' => $oldServerPartEntity->getBilling(), 'billing_at' => $oldServerPartEntity->getBillingAt(), - 'status' => STATUS['UNPAID'] + 'status' => STATUS['UNPAID'] ]); if (!$entity instanceof PaymentEntity) { //해당조건에 맞는게 없으면 생성 log_message('error', sprintf( diff --git a/app/Services/UserService.php b/app/Services/UserService.php index c5ef152..d2c738d 100644 --- a/app/Services/UserService.php +++ b/app/Services/UserService.php @@ -12,8 +12,9 @@ use App\DTOs\UserDTO; class UserService extends CommonService { - private $_form = null; - private $_helper = null; + protected string $formClass = UserForm::class; + protected string $helperClass = UserHelper::class; + public function __construct(UserModel $model) { parent::__construct($model); @@ -31,34 +32,6 @@ class UserService extends CommonService { return UserEntity::class; } - public function getFormService(): UserForm - { - if ($this->_form === null) { - $this->_form = new UserForm(); - $this->_form->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_form; - } - public function getHelper(): UserHelper - { - if ($this->_helper === null) { - $this->_helper = new UserHelper(); - $this->_helper->setAttributes([ - 'pk_field' => $this->getPKField(), - 'title_field' => $this->getTitleField(), - 'table' => $this->model->getTable(), - 'useAutoIncrement' => $this->model->useAutoIncrement(), - 'class_path' => $this->getClassPaths(false) - ]); - } - return $this->_helper; - } //기본 기능부분 protected function getEntity_process(mixed $entity): UserEntity {