dbms_init...1

This commit is contained in:
choi.jh 2025-07-08 11:39:49 +09:00
parent 2f99e33763
commit 4f5bc4ca0d
20 changed files with 123 additions and 120 deletions

View File

@ -67,22 +67,6 @@ class ServiceController extends CustomerController
return $result; return $result;
} }
//Index,FieldForm관련 //Index,FieldForm관련
//추가관련
protected function create_process(array $formDatas): void
{
//수정자 정보 자동추가용
$formDatas['user_uid'] = $this->getMyAuth()->getUIDByAuthInfo();
//부모처리
parent::create_process($formDatas);
}
//수정관련
protected function modify_process(mixed $entity, array $formDatas): void
{
//수정자 정보 자동추가용
$formDatas['user_uid'] = $this->getMyAuth()->getUIDByAuthInfo();
//부모처리
parent::modify_process($entity, $formDatas);
}
//View 관련 //View 관련
protected function view_process(mixed $entity): void protected function view_process(mixed $entity): void
{ {

View File

@ -78,22 +78,6 @@ class ServicePaymentController extends CustomerController
return $result; return $result;
} }
//Index,FieldForm관련 //Index,FieldForm관련
//추가관련
protected function create_process(array $formDatas): void
{
//수정자 정보 자동추가용
$formDatas['user_uid'] = $this->getMyAuth()->getUIDByAuthInfo();
//부모처리
parent::create_process($formDatas);
}
//수정관련
protected function modify_process(mixed $entity, array $formDatas): void
{
//수정자 정보 자동추가용
$formDatas['user_uid'] = $this->getMyAuth()->getUIDByAuthInfo();
//부모처리
parent::modify_process($entity, $formDatas);
}
//View 관련 //View 관련
protected function view_process(mixed $entity): void protected function view_process(mixed $entity): void
{ {

View File

@ -53,7 +53,9 @@ class Payment extends BaseController
foreach ($this->getServiceItemService()->getEntities(['serviceinfo_uid' => $serviceEntity->getPK()]) as $itemEntity) { foreach ($this->getServiceItemService()->getEntities(['serviceinfo_uid' => $serviceEntity->getPK()]) as $itemEntity) {
//결제정보 ServicePaymentService에 월별 결제만 신규등록 //결제정보 ServicePaymentService에 월별 결제만 신규등록
if ($itemEntity->getBillingCycle() == "month") { if ($itemEntity->getBillingCycle() == "month") {
$this->getServicePaymentService()->createByServiceItem($itemEntity); //결제정보 ServicePaymentService에 등록
$this->getServicePaymentService()->setServiceItemEntity($itemEntity);
$this->getServicePaymentService()->create([]);
} }
} }
} }

File diff suppressed because one or more lines are too long

View File

@ -9,9 +9,9 @@ class ClientEntity extends CustomerEntity
const PK = ClientModel::PK; const PK = ClientModel::PK;
const TITLE = ClientModel::TITLE; const TITLE = ClientModel::TITLE;
//타 객체정의 부분 //타 객체정의 부분
public function getSerialCode(): string public function getCode(): string
{ {
return $this->attributes['code']; return $this->attributes['code'] ?? "null";
} }
public function getName(): string public function getName(): string
{ {

View File

@ -71,7 +71,11 @@ class ClientHelper extends CustomerHelper
{ {
switch ($action) { switch ($action) {
case 'modify': case 'modify':
$action = !$this->getMyAuth()->isAccessRole(['security']) ? $viewDatas['cnt'] : parent::getListButton($action, $label, $viewDatas, $extras); if (!$this->getMyAuth()->isAccessRole(['security'])) {
$action = $viewDatas['entity']->getCode();
} else {
$action = parent::getListButton($action, $viewDatas['entity']->getCode(), $viewDatas, $extras);
}
break; break;
case 'create': case 'create':
case 'delete': case 'delete':

View File

@ -2,6 +2,7 @@
return [ return [
'title' => "고객정보", 'title' => "고객정보",
'label' => [ 'label' => [
'code' => "고객코드",
'email' => "메일", 'email' => "메일",
'phone' => "연락처", 'phone' => "연락처",
'role' => "권한", 'role' => "권한",

View File

@ -10,7 +10,7 @@ abstract class CommonModel extends Model
protected $table = ''; protected $table = '';
protected $primaryKey = ''; protected $primaryKey = '';
protected $useAutoIncrement = true; protected $useAutoIncrement = true;
protected $returnType = 'array'; // protected $returnType = 'array';
protected $useSoftDeletes = false; protected $useSoftDeletes = false;
protected $protectFields = true; protected $protectFields = true;
@ -108,17 +108,14 @@ abstract class CommonModel extends Model
return $rule; return $rule;
} }
// create, modify 직전 작업용 작업 // create, modify 직전 작업용 작업
protected function convertEntityData(string $action, string $field, array $formDatas, mixed $entity): mixed protected function convert_process(string $action, string $field, array $formDatas): mixed
{ {
if (!array_key_exists($field, $formDatas)) {
return $entity;
}
switch ($field) { switch ($field) {
case $this->getPKField(): case $this->getPKField():
// $formDatas에 전달된 값이 없는 경우 // $formDatas에 전달된 값이 없는 경우
if (!array_key_exists($field, $formDatas)) { if (!array_key_exists($field, $formDatas)) {
$randomBytes = bin2hex(random_bytes(32)); $randomBytes = bin2hex(random_bytes(32));
$entity->$field = sprintf( $convertedData = sprintf(
'%08s-%04s-%04x-%04x-%12s', '%08s-%04s-%04x-%04x-%12s',
substr($randomBytes, 0, 8), substr($randomBytes, 0, 8),
substr($randomBytes, 8, 4), substr($randomBytes, 8, 4),
@ -126,29 +123,62 @@ abstract class CommonModel extends Model
substr($randomBytes, 16, 4), substr($randomBytes, 16, 4),
substr($randomBytes, 20, 12) substr($randomBytes, 20, 12)
); );
} else {
$entity->$field = $formDatas[$field];
} }
break; break;
case "editor": // content 등 textarea를 사용한 Field case "editor": // content 등 textarea를 사용한 Field
case "detail": //content등 textarea를 사용한 Field case "detail": //content등 textarea를 사용한 Field
case "content": // content 등 textarea를 사용한 Field case "content": // content 등 textarea를 사용한 Field
case "discription": // content 등 textarea를 사용한 Field case "discription": // content 등 textarea를 사용한 Field
$entity->$field = htmlentities($formDatas[$field], ENT_QUOTES); $convertedData = htmlentities($formDatas[$field], ENT_QUOTES);
break; break;
default: default:
$entity->$field = $formDatas[$field]; $convertedData = $formDatas[$field];
break; break;
} }
return $convertedData;
}
protected function create_process(array $formDatas): mixed
{
// 최종 저장 시 오류 발생하면
if (!$this->save($formDatas)) {
$message = sprintf(
"\n------%s 오류-----\n%s\n------------------------------\n",
__METHOD__,
var_export($this->errors(), true)
);
LogCollector::debug($message);
throw new \Exception($message);
}
if (!class_exists($this->returnType)) {
throw new \RuntimeException(__METHOD__ . "에서 returnType: {$this->returnType}이 정의되지 않았습니다.");
}
return new $this->returnType($formDatas);
}
final public function create(array $formDatas): mixed
{
// LogCollector::debug("입력내용");
// LogCollector::debug(var_export($formDatas, true));
foreach (array_keys($formDatas) as $field) {
if (array_key_exists($field, $formDatas)) {
$formDatas[$field] = $this->convert_process(__FUNCTION__, $field, $formDatas);
}
}
// primaryKey가 자동입력이 아니면
if (!$this->useAutoIncrement) {
$pkField = $this->getPKField();
$formDatas[$pkField] = $this->generateUUID();
}
$entity = $this->create_process($formDatas);
// primaryKey가 자동입력이면
if ($this->useAutoIncrement) {
$pkField = $this->getPKField();
$entity->$pkField = $this->getInsertID();
}
return $entity; return $entity;
} }
protected function modify_process(mixed $entity): mixed
final protected function save_process(mixed $entity): mixed
{ {
// 최종 변경사항이 없으면
// if (!$entity->hasChanged()) {
// return $entity;
// }
// 최종 저장 시 오류 발생하면 // 최종 저장 시 오류 발생하면
if (!$this->save($entity)) { if (!$this->save($entity)) {
$message = sprintf( $message = sprintf(
@ -161,29 +191,6 @@ abstract class CommonModel extends Model
} }
return $entity; return $entity;
} }
public function create(array $formDatas, mixed $entity): mixed
{
// LogCollector::debug("입력내용");
// LogCollector::debug(var_export($formDatas, true));
foreach (array_keys($formDatas) as $field) {
$entity = $this->convertEntityData(__FUNCTION__, $field, $formDatas, $entity);
}
// primaryKey가 자동입력이 아니면
if (!$this->useAutoIncrement) {
$pkField = $this->getPKField();
$entity->$pkField = $this->generateUUID();
}
$entity = $this->save_process($entity);
// primaryKey가 자동입력이면
if ($this->useAutoIncrement) {
$pkField = $this->getPKField();
$entity->$pkField = $this->getInsertID();
}
// LogCollector::debug("[{$entity->getPK()}/{$entity->getTitle()}] 입력 후 내용");
// LogCollector::debug(var_export($entity->toArray(), true));
return $entity;
}
final public function modify(mixed $entity, array $formDatas): mixed final public function modify(mixed $entity, array $formDatas): mixed
{ {
// 저장하기 전에 데이터 값 변경이 필요한 Field // 저장하기 전에 데이터 값 변경이 필요한 Field
@ -191,13 +198,15 @@ abstract class CommonModel extends Model
// LogCollector::debug(var_export($formDatas, true)); // LogCollector::debug(var_export($formDatas, true));
// LogCollector::debug(var_export($entity->toArray(), true)); // LogCollector::debug(var_export($entity->toArray(), true));
foreach (array_keys($formDatas) as $field) { foreach (array_keys($formDatas) as $field) {
$entity = $this->convertEntityData(__FUNCTION__, $field, $formDatas, $entity); if (array_key_exists($field, $formDatas)) {
$entity->$field = $this->convert_process(__FUNCTION__, $field, $formDatas);
}
} }
//수정일추가 //수정일추가
$entity->setUpdatedAt(date("Y-m-d H:i:s")); $entity->setUpdatedAt(date("Y-m-d H:i:s"));
// LogCollector::debug("[{$entity->getPK()}/{$entity->getTitle()}] 변경 후 내용"); // LogCollector::debug("[{$entity->getPK()}/{$entity->getTitle()}] 변경 후 내용");
// LogCollector::debug(var_export($entity->toArray(), true)); // LogCollector::debug(var_export($entity->toArray(), true));
return $this->save_process($entity); return $this->modify_process($entity);
} }
//List 검색용 //List 검색용

View File

@ -52,17 +52,18 @@ class ClientModel extends CustomerModel
} }
return $rule; return $rule;
} }
//Create용
protected function create_process(array $formDatas): ClientEntity
{
$entity = parent::create_process($formDatas);
//고객코드 Code 자동 생성 후 수정
$code = 'C' . str_pad($entity->getPK(), 4, '0', STR_PAD_LEFT);
return $this->modify($entity, ['code' => $code]);
}
//List 검색용 //List 검색용
public function setList_WordFilter(string $word): void public function setList_WordFilter(string $word): void
{ {
$this->orLike(self::TABLE . '.email', $word, 'both'); $this->orLike(self::TABLE . '.email', $word, 'both');
parent::setList_WordFilter($word); parent::setList_WordFilter($word);
} }
public function create(array $formDatas, mixed $entity): mixed
{
$entity = parent::create($formDatas, $entity);
$code = 'C' . str_pad($entity->getPK(), 4, '0', STR_PAD_LEFT);
$this->update($entity->getPK(), ['code' => $code]);
return $entity;
}
} }

View File

@ -55,20 +55,20 @@ class UserModel extends CommonModel
} }
return $rule; return $rule;
} }
protected function convertEntityData(string $action, string $field, array $formDatas, mixed $entity): mixed protected function convert_process(string $action, string $field, array $formDatas): mixed
{ {
switch ($field) { switch ($field) {
case "passwd": case "passwd":
$entity->$field = password_hash($formDatas[$field], PASSWORD_DEFAULT); $convertedData = password_hash($formDatas[$field], PASSWORD_DEFAULT);
break; break;
case "confirmpassword": case "confirmpassword":
$entity->$field = password_hash($formDatas[$field], PASSWORD_DEFAULT); $convertedData = password_hash($formDatas[$field], PASSWORD_DEFAULT);
break; break;
default: default:
$entity = parent::convertEntityData($action, $field, $formDatas, $entity); $convertedData = parent::convert_process($action, $field, $formDatas);
break; break;
} }
return $entity; return $convertedData;
} }
//List 검색용 //List 검색용
public function setList_WordFilter(string $word): void public function setList_WordFilter(string $word): void

View File

@ -115,9 +115,9 @@ abstract class CommonService
} }
return $rule; return $rule;
} }
public function create(array $formDatas, mixed $entity = null): mixed public function create(array $formDatas): mixed
{ {
$entity = $this->getModel()->create($formDatas, $entity ?? $this->getEntityClass()); $entity = $this->getModel()->create($formDatas);
LogCollector::info("[{$entity->getTitle()}]" . MESSAGES["CREATED"] . ":"); LogCollector::info("[{$entity->getTitle()}]" . MESSAGES["CREATED"] . ":");
return $entity; return $entity;
} }

View File

@ -57,9 +57,9 @@ class AccountService extends CustomerService
$entity = $this->getClientService()->withdrawal($entity, 'account_balance', $amount); $entity = $this->getClientService()->withdrawal($entity, 'account_balance', $amount);
} }
} }
public function create(array $formDatas, mixed $entity = null): AccountEntity public function create(array $formDatas): AccountEntity
{ {
$this->setBalance($formDatas); $this->setBalance($formDatas);
return parent::create($formDatas, $entity); return parent::create($formDatas);
} }
} }

View File

@ -97,19 +97,21 @@ class ClientService extends CustomerService
return $this->getClientService()->modify($entity, $formDatas); return $this->getClientService()->modify($entity, $formDatas);
} }
public function create(array $formDatas, mixed $entity = new ClientEntity()): ClientEntity public function create(array $formDatas): ClientEntity
{ {
//수정자 정보 자동추가용
$formDatas['user_uid'] = $this->getMyAuth()->getUIDByAuthInfo();
$formDatas['role'] = implode(DEFAULTS["DELIMITER_ROLE"], $formDatas['role']); $formDatas['role'] = implode(DEFAULTS["DELIMITER_ROLE"], $formDatas['role']);
return parent::create($formDatas, $entity ?? new ClientEntity()); return parent::create($formDatas);
} }
public function modify(mixed $entity, array $formDatas): ClientEntity public function modify(mixed $entity, array $formDatas): ClientEntity
{ {
// die(var_export($formDatas, true));
//Role을 지정이 있을경우에만 , toggle이나 batcjhjob에서는 없을수도 있으므로 //Role을 지정이 있을경우에만 , toggle이나 batcjhjob에서는 없을수도 있으므로
if (isset($formDatas['role'])) { if (isset($formDatas['role'])) {
$formDatas['role'] = implode(DEFAULTS["DELIMITER_ROLE"], $formDatas['role']); $formDatas['role'] = implode(DEFAULTS["DELIMITER_ROLE"], $formDatas['role']);
} }
// die(var_export($formDatas, true)); //수정자 정보 자동추가용
$formDatas['user_uid'] = $this->getMyAuth()->getUIDByAuthInfo();
return parent::modify($entity, $formDatas); return parent::modify($entity, $formDatas);
} }
} }

View File

@ -55,9 +55,9 @@ class CouponService extends CustomerService
$entity = $this->getClientService()->withdrawal($entity, 'coupon_balance', $amount); $entity = $this->getClientService()->withdrawal($entity, 'coupon_balance', $amount);
} }
} }
public function create(array $formDatas, mixed $entity = null): CouponEntity public function create(array $formDatas): CouponEntity
{ {
$this->setBalance($formDatas); $this->setBalance($formDatas);
return parent::create($formDatas, $entity); return parent::create($formDatas);
} }
} }

View File

@ -54,9 +54,9 @@ class PointService extends CustomerService
$entity = $this->getClientService()->withdrawal($entity, 'point_balance', $amount); $entity = $this->getClientService()->withdrawal($entity, 'point_balance', $amount);
} }
} }
public function create(array $formDatas, mixed $entity = null): PointEntity public function create(array $formDatas): PointEntity
{ {
$this->setBalance($formDatas); $this->setBalance($formDatas);
return parent::create($formDatas, $entity); return parent::create($formDatas);
} }
} }

View File

@ -88,11 +88,13 @@ class ServiceItemService extends CustomerService
} }
return $options; return $options;
} }
public function create(array $formDatas, mixed $entity = null): ServiceItemEntity public function create(array $formDatas): ServiceItemEntity
{ {
$entity = parent::create($formDatas);
//결제정보 ServicePaymentService에 등록 //결제정보 ServicePaymentService에 등록
$this->getServicePaymentService()->createByServiceItem($entity); $this->getServicePaymentService()->setServiceItemEntity($entity);
return parent::create($formDatas, $entity); $this->getServicePaymentService()->create(['user_uid' => $this->getMyAuth()->getUIDByAuthInfo()]);
return $entity;
} }
public function modify(mixed $entity, array $formDatas): ServiceItemEntity public function modify(mixed $entity, array $formDatas): ServiceItemEntity
{ {

View File

@ -11,6 +11,7 @@ use App\Services\UserService;
class ServicePaymentService extends CustomerService class ServicePaymentService extends CustomerService
{ {
private ?ServiceItemEntity $_serviceItemEntity = null;
private ?UserService $_userService = null; private ?UserService $_userService = null;
private ?ServiceService $_serviceService = null; private ?ServiceService $_serviceService = null;
public function __construct() public function __construct()
@ -66,6 +67,17 @@ class ServicePaymentService extends CustomerService
} }
return $this->_serviceService; return $this->_serviceService;
} }
public function setServiceItemEntity(ServiceItemEntity $entity): void
{
$this->_serviceItemEntity = $entity;
}
public function getServiceItemEntity(): ServiceItemEntity
{
if ($this->_serviceItemEntity === null) {
throw new \Exception("ServiceItem이 지정되지 않았습니다.");
}
return $this->_serviceItemEntity;
}
//Entity의 관련객체정의용 //Entity의 관련객체정의용
//기본 기능부분 //기본 기능부분
//FieldForm관련용 //FieldForm관련용
@ -104,8 +116,9 @@ class ServicePaymentService extends CustomerService
return $unpaids; return $unpaids;
} }
//결체처리정보 등록 : ServiceItemService에서 사용 //결체처리정보 등록 : ServiceItemService에서 사용
public function createByServiceItem(ServiceItemEntity $serviceItemEntity): ServicePaymentEntity public function create(array $formDatas): ServicePaymentEntity
{ {
$serviceItemEntity = $this->getServiceItemEntity();
$serviceEntity = $this->getServiceService()->getEntity($serviceItemEntity->getServiceUid()); $serviceEntity = $this->getServiceService()->getEntity($serviceItemEntity->getServiceUid());
if (!$serviceEntity) { if (!$serviceEntity) {
throw new \Exception("{$serviceItemEntity->getServiceUid()}에 대한 서비스정보를 찾을수 없습니다."); throw new \Exception("{$serviceItemEntity->getServiceUid()}에 대한 서비스정보를 찾을수 없습니다.");

View File

@ -201,13 +201,13 @@ class ServiceService extends CustomerService
) WHERE billing_at = ? AND status = ?"; ) WHERE billing_at = ? AND status = ?";
return $this->getModel()->query($sql, [$billing_at, $status]); return $this->getModel()->query($sql, [$billing_at, $status]);
} }
public function create(array $formDatas, mixed $entity = null): ServiceEntity public function create(array $formDatas): ServiceEntity
{ {
//code의 경우 서비스중으로 설정작업 //code의 경우 서비스중으로 설정작업
$this->getCodeService()->setStatus($formDatas['codeinfo_uid'], CodeEntity::STATUS_OCCUPIED); $this->getCodeService()->setStatus($formDatas['codeinfo_uid'], CodeEntity::STATUS_OCCUPIED);
//switch의 경우 서비스중으로 설정작업 //switch의 경우 서비스중으로 설정작업
$this->getSwitchService()->setStatus($formDatas['switchinfo_uid'], SwitchEntity::STATUS_OCCUPIED); $this->getSwitchService()->setStatus($formDatas['switchinfo_uid'], SwitchEntity::STATUS_OCCUPIED);
return parent::create($formDatas, $entity); return parent::create($formDatas);
} }
public function modify(mixed $entity, array $formDatas): ServiceEntity public function modify(mixed $entity, array $formDatas): ServiceEntity
{ {

View File

@ -66,11 +66,12 @@ class IpService extends PartService
} }
public function createByLineInfo(LineEntity $entity, string $ip): IpEntity public function createByLineInfo(LineEntity $entity, string $ip): IpEntity
{ {
$formDatas = []; $formDatas = [
$formDatas['lineinfo_uid'] = $entity->getPK(); 'lineinfo_uid' => $entity->getPK(),
$formDatas['ip'] = $ip; 'ip' => $ip,
$formDatas['status'] = DEFAULTS['STATUS']; 'status' => DEFAULTS['STATUS'],
return $this->create($formDatas, new IpEntity()); ];
return $this->create($formDatas);
} }
//상태변경 //상태변경

View File

@ -41,10 +41,10 @@ class UserService extends CommonService
{ {
return ['id', 'name', 'email', 'mobile', 'role', 'status']; return ['id', 'name', 'email', 'mobile', 'role', 'status'];
} }
public function create(array $formDatas, mixed $entity = null): UserEntity public function create(array $formDatas): UserEntity
{ {
$formDatas['role'] = implode(DEFAULTS["DELIMITER_ROLE"], $formDatas['role']); $formDatas['role'] = implode(DEFAULTS["DELIMITER_ROLE"], $formDatas['role']);
return parent::create($formDatas, $entity ?? new UserEntity()); return parent::create($formDatas);
} }
public function modify(mixed $entity, array $formDatas): UserEntity public function modify(mixed $entity, array $formDatas): UserEntity
{ {