dbmsv2 init...1

This commit is contained in:
choi.jh 2025-09-23 17:42:41 +09:00
parent 8ca711f32b
commit b50267cdf8
17 changed files with 88 additions and 178 deletions

View File

@ -4,8 +4,6 @@ namespace App\Controllers\Admin\Customer;
use App\Entities\Customer\ClientEntity; use App\Entities\Customer\ClientEntity;
use App\Services\Customer\ClientService; use App\Services\Customer\ClientService;
use App\Services\Customer\ServiceService;
use App\Services\Equipment\ServerService;
use CodeIgniter\HTTP\RedirectResponse; use CodeIgniter\HTTP\RedirectResponse;
use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface; use CodeIgniter\HTTP\ResponseInterface;
@ -37,17 +35,7 @@ class ClientController extends CustomerController
//생성 전처리, 관리자 UID는 현재 인증된 사용자로 설정 //생성 전처리, 관리자 UID는 현재 인증된 사용자로 설정
$formDatas['user_uid'] = $this->getService()->getMyAuth()->getUIDByAuthInfo(); $formDatas['user_uid'] = $this->getService()->getMyAuth()->getUIDByAuthInfo();
//생성처리 //생성처리
$entity = parent::create_process($formDatas); return parent::create_process($formDatas);
// 생성 후처리, Client 코드값 재정의
$format = env("Client.Prefix.{$formDatas['site']}.code.format", false);
if (!$format) {
throw new \Exception(__METHOD__ . "에서 code의 code의 format[Client.Prefix.{$formDatas['site']}.code.format] 정의되지 않았습니다.");
}
$this->getService()->modify(
$entity,
['code' => sprintf($format, (int) $entity->getPK() + 1000)]
);
return $entity;
} }
//수정관련 //수정관련
protected function modify_process(mixed $entity, array $formDatas): ClientEntity protected function modify_process(mixed $entity, array $formDatas): ClientEntity

View File

@ -49,34 +49,4 @@ class ServerController extends EquipmentController
} }
return $result; return $result;
} }
//생성
protected function create_form_process(): void
{
//Form 기본값정의
$format = env("Server.Prefix.code.format", false);
if (!$format) {
throw new \Exception(__METHOD__ . "에서 code의 format[Server.Prefix.code.format]이 정의되지 않았습니다.");
}
$formDatas = $this->getService()->getFormDatas();
$formDatas['code'] = $this->getService()->getLastestCode(
$format,
(int)env("Server.Default.code", 0)
);
$this->getService()->setFormDatas($formDatas);
parent::create_form_process();
}
//생성
protected function create_process(array $formDatas): ServerEntity
{
//코드 패턴체크
$this->getService()->codeCheck($formDatas);
return parent::create_process($formDatas);
}
//수정
protected function modify_process(mixed $entity, array $formDatas): ServerEntity
{
//코드 패턴체크
$this->getService()->codeCheck($formDatas);
return parent::modify_process($entity, $formDatas);
}
} }

View File

@ -29,19 +29,4 @@ class SwitchController extends EquipmentController
return $this->_service; return $this->_service;
} }
//Index,FieldForm관 //Index,FieldForm관
protected function create_process(array $formDatas): SwitchEntity
{
//코드 패턴체크
$pattern = env("Switch.Prefix.code.pattern", false);
if (!$pattern) {
throw new \Exception(__METHOD__ . "에서 code의 prefix[Switch.Prefix.code.pattern]가 정의되지 않았습니다.");
}
if (!array_key_exists('code', $formDatas)) {
throw new \Exception("Switch코드가 정의되지 않았습니다");
}
if (!preg_match($pattern, $formDatas['code'])) {
throw new \Exception("Switch코드[{$formDatas['code']}의 형식이 맞지않습니다");
}
return parent::create_process($formDatas);
}
} }

View File

@ -4,13 +4,13 @@
"settings": { "settings": {
"width": 3000, "width": 3000,
"height": 3000, "height": 3000,
"scrollTop": -1121.7873, "scrollTop": -1642.7873,
"scrollLeft": -1298, "scrollLeft": -144.3986,
"zoomLevel": 0.79, "zoomLevel": 0.79,
"show": 511, "show": 511,
"database": 4, "database": 4,
"databaseName": "", "databaseName": "",
"canvasType": "@dineug/erd-editor/builtin-schema-sql", "canvasType": "ERD",
"language": 1, "language": 1,
"tableNameCase": 4, "tableNameCase": 4,
"columnNameCase": 2, "columnNameCase": 2,
@ -340,7 +340,6 @@
"comment": "PART정보", "comment": "PART정보",
"columnIds": [ "columnIds": [
"2HB01q46-mugMjuOz85YG", "2HB01q46-mugMjuOz85YG",
"InO1oDu66d2I2e84cDrpF",
"OGYYobEerCY_Fsb8dqU0D", "OGYYobEerCY_Fsb8dqU0D",
"1q8jG5dQKdD35_XYimkSk", "1q8jG5dQKdD35_XYimkSk",
"HYB03rpc8hol5HFnZGtAi", "HYB03rpc8hol5HFnZGtAi",
@ -381,7 +380,7 @@
"color": "" "color": ""
}, },
"meta": { "meta": {
"updateAt": 1758087644044, "updateAt": 1758615408174,
"createAt": 1745819764138 "createAt": 1745819764138
} }
}, },

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -16,18 +16,25 @@ return [
'deleted_at' => "삭제일", 'deleted_at' => "삭제일",
"serverpartinfo" => "부품정보", "serverpartinfo" => "부품정보",
], ],
"TYPE" => [
'HP' => "HP",
"INTEL" => "INTEL",
"AMD" => "AMD",
],
"TITLE" => [ "TITLE" => [
'HP DL360 Gen6' => "HP DL360 Gen6", "HP DL360 Gen6" => "HP DL360 Gen6",
"HP DL360 Gen7" => "HP DL360 Gen7", "HP DL360 Gen7" => "HP DL360 Gen7",
"HP DL360 Gen8" => "HP DL360 Gen8", "HP DL360 Gen8" => "HP DL360 Gen8",
"HP DL360 Gen9" => "HP DL360 Gen9", "HP DL360 Gen9" => "HP DL360 Gen9",
"HP DL360 Gen10" => "HP DL360 Gen10", "HP DL360 Gen10" => "HP DL360 Gen10",
"Hitach HA3000" => "Hitach HA3000", "Hitach HA3000" => "Hitach HA3000",
], "INTEL I3" => "INTEL I3",
"TYPE" => [ "INTEL I5" => "INTEL I5",
'hp' => "HP", "INTEL I7" => "INTEL I7",
"del" => "DELL", "INTEL I9" => "INTEL I9",
"etc" => "조립", "AMD Z2" => "AMD Ryzen Z2",
"AMD AI-5" => "AMD AI-5",
"AMD Threadripper" => "AMD Threadripper",
], ],
"STATUS" => [ "STATUS" => [
STATUS['AVAILABLE'] => "사용가능", STATUS['AVAILABLE'] => "사용가능",

View File

@ -13,19 +13,11 @@ class ClientProcess implements MigrationProcessInterface
$this->db = $db; $this->db = $db;
} }
private function getClientCode(string $site, string $client_code): string
{
$format = env("Client.Prefix.{$site}.code.format", false);
if (!$format) {
throw new \Exception(__METHOD__ . "에서 code의 prefix[Client.Prefix.{$site}.code.format]가 정의되지 않았습니다.");
}
return sprintf($format, (int)substr($client_code, 1));
}
public function process(array $row, int $cnt): void public function process(array $row, int $cnt): void
{ {
$temps = []; $temps = [];
$temps['site'] = 'prime'; $temps['site'] = 'prime';
$temps['code'] = $this->getClientCode($temps['site'], $row['Client_Code']); $temps['code'] = $temps['site'] . "_c" . uniqid();
$temps['user_uid'] = 1; $temps['user_uid'] = 1;
$temps['role'] = $row['Client_Reseller'] == 30 ? "reseller" : "user"; $temps['role'] = $row['Client_Reseller'] == 30 ? "reseller" : "user";
$temps['name'] = $row['Client_Name']; $temps['name'] = $row['Client_Name'];

View File

@ -14,14 +14,6 @@ class SwitchCodeProcess implements MigrationProcessInterface
} }
public function process(array $row, int $cnt): void public function process(array $row, int $cnt): void
{ {
$pattern = env("Switch.Prefix.code.pattern", false);
if (!$pattern) {
throw new \Exception(__METHOD__ . "에서 code의 prefix[Switch.Prefix.code.pattern]가 정의되지 않았습니다.");
}
if (!preg_match($pattern, $row['service_sw'])) {
echo "{$cnt} {$row['service_sw']}-> SKIP SWITCHCODE\n";
return;
}
$temps = []; $temps = [];
$temps['code'] = trim($row['service_sw']); $temps['code'] = trim($row['service_sw']);
$temps['status'] = SwitchEntity::DEFAULT_STATUS; // Assuming SwitchEntity has a STATUS_DEFAULT constant $temps['status'] = SwitchEntity::DEFAULT_STATUS; // Assuming SwitchEntity has a STATUS_DEFAULT constant

View File

@ -73,6 +73,12 @@ abstract class CommonModel extends Model
$data[8] = chr(ord($data[8]) & 0x3f | 0x80); // variant 10 $data[8] = chr(ord($data[8]) & 0x3f | 0x80); // variant 10
return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4)); return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));
} }
// final public function getLastestCode(string $format, int $default): string
// {
// $entity = $this->selectMax($this->primaryKey)->first();
// $pk = (int) ($entity->getPK() ?? $default); // 정수로 강제 변환
// return sprintf($format, date('ymd'), $pk + 1);
// }
public function getFormRule(string $action, string $field): string public function getFormRule(string $action, string $field): string
{ {
if (is_array($field)) { if (is_array($field)) {

View File

@ -67,4 +67,10 @@ class ClientModel extends CustomerModel
} }
return $rule; return $rule;
} }
//입력전 코드처리
public function create(array $formDatas): ClientEntity
{
$formDatas['code'] = $formDatas['site'] . "_c" . uniqid();
return parent::create($formDatas);
}
} }

View File

@ -79,7 +79,7 @@ class ServiceModel extends CustomerModel
//입력전 코드처리 //입력전 코드처리
public function create(array $formDatas): ServiceEntity public function create(array $formDatas): ServiceEntity
{ {
$formDatas['code'] = "s" . time(); $formDatas['code'] = $formDatas['site'] . "_s" . uniqid();
return parent::create($formDatas); return parent::create($formDatas);
} }
} }

View File

@ -39,6 +39,7 @@ class ServerModel extends EquipmentModel
case "serviceinfo_uid": case "serviceinfo_uid":
$rule = "permit_empty|numeric"; $rule = "permit_empty|numeric";
break; break;
case "code":
case "title": case "title":
$rule = "required|trim|string"; $rule = "required|trim|string";
break; break;
@ -79,11 +80,10 @@ class ServerModel extends EquipmentModel
return $value; return $value;
} }
//기본기능 //기본기능
//create용 장비코드 마지막번호 가져오기 //입력전 임시코드처리
final public function getLastestCode(string $format, int $default): string public function create(array $formDatas): ServerEntity
{ {
$entity = $this->selectMax($this->primaryKey)->first(); $formDatas['code'] = "m" . uniqid();
$pk = (int) ($entity->getPK() ?? $default); // 정수로 강제 변환 return parent::create($formDatas);
return sprintf($format, date('ymd'), $pk + 1);
} }
} }

View File

@ -76,10 +76,8 @@ class ClientService extends CustomerService
} }
return $this->_paymentService; return $this->_paymentService;
} }
//기본 기능부분
//압금(쿠폰:추가)처리 //압금(쿠폰:추가)처리
public function deposit(ClientEntity $entity, string $field, int $amount): ClientEntity final public function deposit(ClientEntity $entity, string $field, int $amount): ClientEntity
{ {
switch ($field) { switch ($field) {
case 'account_balance': case 'account_balance':
@ -108,7 +106,7 @@ class ClientService extends CustomerService
return $this->getClientService()->modify($entity, $formDatas); return $this->getClientService()->modify($entity, $formDatas);
} }
//출금(쿠폰:사용)처리 //출금(쿠폰:사용)처리
public function withdrawal(ClientEntity $entity, string $field, int $amount): ClientEntity final public function withdrawal(ClientEntity $entity, string $field, int $amount): ClientEntity
{ {
switch ($field) { switch ($field) {
case 'account_balance': case 'account_balance':
@ -136,7 +134,8 @@ class ClientService extends CustomerService
$formDatas = [$field => $amount]; $formDatas = [$field => $amount];
return $this->getClientService()->modify($entity, $formDatas); return $this->getClientService()->modify($entity, $formDatas);
} }
//기본 기능부분
//생성
public function create(array $formDatas): ClientEntity public function create(array $formDatas): ClientEntity
{ {
$formDatas['role'] = implode(DEFAULTS["DELIMITER_ROLE"], $formDatas['role']); $formDatas['role'] = implode(DEFAULTS["DELIMITER_ROLE"], $formDatas['role']);

View File

@ -137,31 +137,7 @@ class ServiceService extends CustomerService
} }
return $this->_serverPartService; return $this->_serverPartService;
} }
//기본 기능부분 //create용 서비스코드 마지막번호 가져오기
public function getFormOption(string $field, array $options = []): array
{
switch ($field) {
case 'serverinfo_uid':
$options = $this->getServerService()->getEntities();
break;
case 'CPU':
case 'RAM':
case 'DISK':
case 'OS':
case 'DB':
case 'SOFTWARE':
case 'SWITCH':
case 'IP':
case 'CS':
$options = $this->getServerService()->getFormOption($field, $options);
break;
default:
$options = parent::getFormOption($field, $options);
break;
}
return $options;
}
//FieldForm관련용
//interval을 기준으로 최근 신규 서비스정보 가져오기 //interval을 기준으로 최근 신규 서비스정보 가져오기
final public function getEntitiesByNewService(int $interval, string $status = ServiceEntity::DEFAULT_STATUS): array final public function getEntitiesByNewService(int $interval, string $status = ServiceEntity::DEFAULT_STATUS): array
{ {
@ -238,6 +214,31 @@ class ServiceService extends CustomerService
return $total_amount; return $total_amount;
} }
//기본기능 //기본기능
//기본 기능부분
//FieldForm관련용
public function getFormOption(string $field, array $options = []): array
{
switch ($field) {
case 'serverinfo_uid':
$options = $this->getServerService()->getEntities();
break;
case 'CPU':
case 'RAM':
case 'DISK':
case 'OS':
case 'DB':
case 'SOFTWARE':
case 'SWITCH':
case 'IP':
case 'CS':
$options = $this->getServerService()->getFormOption($field, $options);
break;
default:
$options = parent::getFormOption($field, $options);
break;
}
return $options;
}
//Action 기능 //Action 기능
private function action_process(ServiceEntity $entity, string $action): ServiceEntity private function action_process(ServiceEntity $entity, string $action): ServiceEntity
{ {

View File

@ -50,13 +50,7 @@ class PartService extends EquipmentService
//OrderBy 처리 //OrderBy 처리
public function setOrderBy(mixed $field = null, mixed $value = null): void public function setOrderBy(mixed $field = null, mixed $value = null): void
{ {
$this->getModel()->orderBy('code ASC'); $this->getModel()->orderBy('type ASC,uid ASC');
parent::setOrderBy($field, $value); parent::setOrderBy($field, $value);
} }
public function create(array $formDatas): PartEntity
{
$entity = parent::create($formDatas);
return $this->modify($entity, ['code' => $entity->getType() . $entity->getPK()]);
}
} }

View File

@ -20,7 +20,6 @@ class ServerService extends EquipmentService
public function getFormFields(): array public function getFormFields(): array
{ {
return [ return [
"code",
"type", "type",
"title", "title",
"price", "price",
@ -87,26 +86,6 @@ class ServerService extends EquipmentService
} }
return $entity; return $entity;
} }
//create용 장비코드 마지막번호 가져오기
final public function getLastestCode(string $format, int $default): string
{
return $this->getModel()->getLastestCode($format, $default);
}
final public function codeCheck(array $formDatas)
{
//코드 패턴체크
$pattern = env("Server.Prefix.code.pattern", false);
if (!$pattern) {
throw new \Exception(__METHOD__ . "에서 code의 prefix[Server.Prefix.code.pattern]가 정의되지 않았습니다.");
}
if (!array_key_exists('code', $formDatas)) {
throw new \Exception("Server코드가 정의되지 않았습니다");
}
if (!preg_match($pattern, $formDatas['code'])) {
throw new \Exception("Server코드[{$formDatas['code']}의 형식이 맞지않습니다");
}
}
//기본 기능부분
//FieldForm관련용 //FieldForm관련용
public function getFormOption(string $field, $options = []): array public function getFormOption(string $field, $options = []): array
{ {