dbms_init...1

This commit is contained in:
choi.jh 2025-06-18 13:31:28 +09:00
parent e437c1e3cd
commit 47f4267fce
31 changed files with 123 additions and 99 deletions

View File

@ -11,7 +11,9 @@ $routes->addPlaceholder('uuid', '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}
//authFilter는 추가적인 작업이 필요
//1. app/Filters/AuthFilter.php
//2. Config/Filters.php -> $aliases = ['authFilter' => AuthFilter::class]
$routes->group('cli', ['namespace' => 'App\Controllers\CLI'], function ($routes) {});
$routes->group('cli', ['namespace' => 'App\Controllers\CLI'], function ($routes) {
$routes->cli('billing', 'Payment::billing');
});
$routes->group('', ['namespace' => 'App\Controllers'], function ($routes) {
$routes->get('/', 'Home::index');
$routes->group('auth', ['namespace' => 'App\Controllers\Auth'], function ($routes) {

View File

@ -0,0 +1,77 @@
<?php
namespace App\Controllers\CLI;
use App\Controllers\BaseController;
use App\Services\Customer\ServiceService;
use App\Services\Customer\ServiceItemService;
use App\Services\Customer\ServicePaymentService;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use Psr\Log\LoggerInterface;
class Payment extends BaseController
{
private $_db = null;
private ?ServiceService $_serviceService = null;
private ?ServiceItemService $_servicItemeService = null;
private ?ServicePaymentService $_servicePaymentService = null;
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
{
parent::initController($request, $response, $logger);
// $this->_db = \Config\Database::connect();
}
public function getServiceService(): ServiceService
{
if (!$this->_serviceService) {
$this->_serviceService = new ServiceService($this->request);
}
return $this->_serviceService;
}
public function getServiceItemService(): ServiceItemService
{
if (!$this->_servicItemeService) {
$this->_servicItemeService = new ServiceItemService($this->request);
}
return $this->_servicItemeService;
}
public function getServicePaymentService(): ServicePaymentService
{
if (!$this->_servicePaymentService) {
$this->_servicePaymentService = new ServicePaymentService($this->request);
}
return $this->_servicePaymentService;
}
public function billing(): void
{
//Transaction Start
$this->getServiceService()->getModel()->transStart();
try {
//서비스중인 서버중 결제일이 오늘인 서비스 확인
//결제일이 오늘이 서비스를 모두 연장처리
$this->getServiceService()->extendBillingAt(date('Y-m-d'), DEFAULTS['STATUS']);
//결제일이 오늘보다 큰 서비스가져오기
foreach ($this->getServiceService()->getEntities(['billing_at >' => date("Y-m-d")]) as $serviceEntity) {
echo $serviceEntity->getPK() . ":" . $serviceEntity->getBillingAt() . "\n";
foreach ($this->getServiceItemService()->getEntities(['serviceinfo_uid' => $serviceEntity->getPK()]) as $itemEntity) {
if ($itemEntity->getBillingCycle() == "month") {
//결제정보 ServicePaymentService에 신규등록
$this->getServicePaymentService()->createPaymentByServiceItem($itemEntity);
}
}
}
// echo $this->getServiceService()->getModel()->getLastQuery() . "\n";
log_message("notice", "Billing 작업을 완료하였습니다.");
$this->getServiceService()->getModel()->transCommit();
} catch (\Exception $e) {
//Transaction Rollback
$this->getServiceService()->getModel()->transRollback();
log_message(
"error",
"Billing 작업을 실패하였습니다.\n--------------\n" .
$e->getMessage() .
"\n--------------\n"
);
}
}
}

View File

@ -34,7 +34,7 @@ CREATE TABLE `accountinfo` (
PRIMARY KEY (`uid`),
KEY `FK_clientinfo_TO_accountinfo` (`clientinfo_uid`),
CONSTRAINT `FK_clientinfo_TO_accountinfo` FOREIGN KEY (`clientinfo_uid`) REFERENCES `clientinfo` (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='예치금계좌';
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='예치금계좌';
/*!40101 SET character_set_client = @saved_cs_client */;
--
@ -43,7 +43,7 @@ CREATE TABLE `accountinfo` (
LOCK TABLES `accountinfo` WRITE;
/*!40000 ALTER TABLE `accountinfo` DISABLE KEYS */;
INSERT INTO `accountinfo` VALUES (1,1,'5월예치금입금','Test111',100000,'default',NULL,'2025-05-29 06:08:43'),(2,1,'5월예치금출금','Test111',50000,'out',NULL,'2025-05-29 06:09:07');
INSERT INTO `accountinfo` VALUES (1,1,'5월예치금입금','Test111',100000,'default','2025-06-17 02:09:08','2025-05-29 06:08:43'),(2,1,'5월예치금출금','Test111',50000,'out','2025-06-17 02:08:21','2025-05-29 06:09:07'),(3,3,'테스트입금333','Test333',100000,'default',NULL,'2025-06-17 02:11:41');
/*!40000 ALTER TABLE `accountinfo` ENABLE KEYS */;
UNLOCK TABLES;
@ -76,7 +76,7 @@ CREATE TABLE `clientinfo` (
LOCK TABLES `clientinfo` WRITE;
/*!40000 ALTER TABLE `clientinfo` DISABLE KEYS */;
INSERT INTO `clientinfo` VALUES (1,'user','Test111','1111','test111@co.kr',50000,0,0,'default','2025-05-29 06:09:07','2025-05-29 06:07:37'),(2,'user,vip','Test222','222','test222@co.kr',0,50,0,'default','2025-05-29 06:10:10','2025-05-29 06:07:54'),(3,'user,vip,reseller','Test333','3333','test333@co.kr',0,0,50000,'default','2025-05-29 06:10:55','2025-05-29 06:08:07'),(4,'user','Test444','4444','test444@co.kr',0,0,0,'default','2025-06-09 07:38:48','2025-05-29 06:08:17');
INSERT INTO `clientinfo` VALUES (1,'user','Test111','1111','test111@co.kr',50000,0,0,'default','2025-05-29 06:09:07','2025-05-29 06:07:37'),(2,'user,vip','Test222','222','test222@co.kr',0,50,0,'default','2025-05-29 06:10:10','2025-05-29 06:07:54'),(3,'user,vip,reseller','Test333','3333','test333@co.kr',100000,0,50000,'default','2025-06-17 02:11:41','2025-05-29 06:08:07'),(4,'user','Test444','4444','test444@co.kr',0,0,0,'default','2025-06-09 07:38:48','2025-05-29 06:08:17');
/*!40000 ALTER TABLE `clientinfo` ENABLE KEYS */;
UNLOCK TABLES;
@ -634,7 +634,7 @@ CREATE TABLE `serviceinfo_payment` (
KEY `FK_clientinfo_TO_serviceinfo_payment` (`ownerinfo_uid`),
CONSTRAINT `FK_clientinfo_TO_serviceinfo_payment` FOREIGN KEY (`ownerinfo_uid`) REFERENCES `clientinfo` (`uid`),
CONSTRAINT `FK_serviceinfo_TO_serviceinfo_payment` FOREIGN KEY (`serviceinfo_uid`) REFERENCES `serviceinfo` (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COMMENT='결제정보';
) ENGINE=InnoDB AUTO_INCREMENT=48 DEFAULT CHARSET=utf8 COMMENT='결제정보';
/*!40101 SET character_set_client = @saved_cs_client */;
--
@ -748,4 +748,4 @@ UNLOCK TABLES;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2025-06-17 11:04:42
-- Dump completed on 2025-06-18 13:10:28

View File

@ -2,7 +2,6 @@
namespace App\Services;
use CodeIgniter\HTTP\IncomingRequest;
use App\Libraries\LogCollector;
abstract class CommonService
@ -10,16 +9,20 @@ abstract class CommonService
private $_serviceDatas = [];
private $_model = null;
private $_classNames = [];
protected ?IncomingRequest $request = null;
protected function __construct(?IncomingRequest $_request = null)
private $_request = null;
protected function __construct(mixed $_request = null)
{
$this->request = $_request;
$this->_request = $_request;
}
abstract public function getModelClass(): mixed;
abstract public function getEntityClass(): mixed;
abstract public function getFormFields(): array;
abstract public function getFilterFields(): array;
abstract public function getBatchJobFields(): array;
final public function getRequest(): mixed
{
return $this->_request;
}
public function getIndexFields(): array
{
return $this->getFormFields();
@ -39,10 +42,6 @@ abstract class CommonService
{
$this->_serviceDatas[$name] = $value;
}
final public function getRequest(): IncomingRequest|null
{
return $this->request;
}
final protected function addClassName(string $className): void
{
$this->_classNames[] = $className;

View File

@ -4,14 +4,11 @@ namespace App\Services\Customer;
use App\Entities\Customer\AccountEntity;
use App\Models\Customer\AccountModel;
use CodeIgniter\HTTP\IncomingRequest;
use App\Entities\Customer\ClientEntity;
class AccountService extends CustomerService
{
protected ?IncomingRequest $request = null;
public function __construct(?IncomingRequest $request = null)
public function __construct(mixed $request = null)
{
parent::__construct($request);
$this->addClassName('Account');

View File

@ -2,16 +2,12 @@
namespace App\Services\Customer;
use CodeIgniter\HTTP\IncomingRequest;
use App\Entities\Customer\ClientEntity;
use App\Models\Customer\ClientModel;
class ClientService extends CustomerService
{
protected ?IncomingRequest $request = null;
public function __construct(?IncomingRequest $request = null)
public function __construct(mixed $request = null)
{
parent::__construct($request);
$this->addClassName('Client');

View File

@ -4,14 +4,11 @@ namespace App\Services\Customer;
use App\Entities\Customer\CouponEntity;
use App\Models\Customer\CouponModel;
use CodeIgniter\HTTP\IncomingRequest;
use App\Entities\Customer\ClientEntity;
class CouponService extends CustomerService
{
protected ?IncomingRequest $request = null;
public function __construct(?IncomingRequest $request = null)
public function __construct(mixed $request = null)
{
parent::__construct($request);
$this->addClassName('Coupon');

View File

@ -16,13 +16,12 @@ use App\Services\Equipment\Part\LineService;
use App\Services\Equipment\Part\RamService;
use App\Services\Equipment\Part\SoftwareService;
use App\Services\Equipment\Part\StorageService;
use CodeIgniter\HTTP\IncomingRequest;
abstract class CustomerService extends CommonService
{
private ?ClientService $_clientService = null;
private $_equipmentService = [];
protected function __construct(?IncomingRequest $request = null)
public function __construct(mixed $request = null)
{
parent::__construct($request);
$this->addClassName('Customer');

View File

@ -4,14 +4,11 @@ namespace App\Services\Customer;
use App\Entities\Customer\PointEntity;
use App\Models\Customer\PointModel;
use CodeIgniter\HTTP\IncomingRequest;
use App\Entities\Customer\ClientEntity;
class PointService extends CustomerService
{
protected ?IncomingRequest $request = null;
public function __construct(?IncomingRequest $request = null)
public function __construct(mixed $request = null)
{
parent::__construct($request);
$this->addClassName('Point');

View File

@ -5,13 +5,11 @@ namespace App\Services\Customer;
use App\Entities\Customer\ServiceHistoryEntity;
use App\Models\Customer\ServiceHistoryModel;
use App\Services\Customer\ServiceService;
use CodeIgniter\HTTP\IncomingRequest;
class ServiceHistoryService extends CustomerService
{
protected ?IncomingRequest $request = null;
private ?ServiceService $_serviceService = null;
public function __construct(?IncomingRequest $request = null)
public function __construct(mixed $request = null)
{
parent::__construct($request);
$this->addClassName('ServiceHistory');

View File

@ -5,13 +5,11 @@ namespace App\Services\Customer\ServiceItemLink;
use App\Entities\Customer\ServiceItemEntity;
use App\Entities\Equipment\Part\IpEntity;
use App\Services\Equipment\Part\IpService;
use CodeIgniter\HTTP\IncomingRequest;
class ServiceItemLinkIpService extends ServiceItemLinkService
{
protected ?IncomingRequest $request = null;
private ?IpService $_ipService = null;
public function __construct(?IncomingRequest $request = null)
public function __construct(mixed $request = null)
{
parent::__construct($request);
}

View File

@ -3,12 +3,10 @@
namespace App\Services\Customer\ServiceItemLink;
use App\Services\Customer\ServiceItemService;
use CodeIgniter\HTTP\IncomingRequest;
abstract class ServiceItemLinkService extends ServiceItemService
{
protected ?IncomingRequest $request = null;
public function __construct(?IncomingRequest $request = null)
public function __construct(mixed $request = null)
{
parent::__construct($request);
}

View File

@ -7,13 +7,11 @@ use App\Models\Customer\ServiceItemModel;
use App\Services\Customer\CustomerService;
use App\Services\Customer\ServicePaymentService;
use App\Services\Customer\ServiceService;
use CodeIgniter\HTTP\IncomingRequest;
class ServiceItemService extends CustomerService
{
protected ?IncomingRequest $request = null;
private ?ServiceService $_serviceService = null;
public function __construct(?IncomingRequest $request = null)
public function __construct(mixed $request = null)
{
parent::__construct($request);
$this->addClassName('ServiceItem');

View File

@ -2,8 +2,6 @@
namespace App\Services\Customer;
use CodeIgniter\HTTP\IncomingRequest;
use App\Entities\Customer\ServiceItemEntity;
use App\Entities\Customer\ServicePaymentEntity;
use App\Models\Customer\ServicePaymentModel;
@ -11,9 +9,8 @@ use App\Services\Customer\ServiceService;
class ServicePaymentService extends CustomerService
{
protected ?IncomingRequest $request = null;
private ?ServiceService $_serviceService = null;
public function __construct(?IncomingRequest $request = null)
public function __construct(mixed $request = null)
{
parent::__construct($request);
$this->addClassName('ServicePayment');

View File

@ -7,14 +7,12 @@ use App\Entities\Equipment\CodeEntity;
use App\Models\Customer\ServiceModel;
use App\Services\Equipment\CodeService;
use CodeIgniter\HTTP\IncomingRequest;
class ServiceService extends CustomerService
{
protected ?IncomingRequest $request = null;
private ?CodeService $_codeService = null;
private ?string $_searchIP = null;
public function __construct(?IncomingRequest $request = null)
public function __construct(mixed $request = null)
{
parent::__construct($request);
$this->addClassName('Service');
@ -93,14 +91,14 @@ class ServiceService extends CustomerService
//기본 기능부분
//다음 달로 결제일을 연장합니다.
public function extendBillingAt(ServiceEntity $entity): bool
final public function extendBillingAt(string $billing_at, string $status): bool
{
$sql = "UPDATE serviceinfo SET billing_at =
IF(DAY(billing_at) > DAY(LAST_DAY(billing_at)),
LAST_DAY(DATE_ADD(billing_at, INTERVAL 1 MONTH)),
DATE_ADD(billing_at, INTERVAL 1 MONTH)
) WHERE uid = ?";
return $this->getModel()->query($sql, [$entity->getPK()]);
) WHERE billing_at = ? AND status = ?";
return $this->getModel()->query($sql, [$billing_at, $status]);
}
public function create(array $formDatas, mixed $entity = null): ServiceEntity
{

View File

@ -4,13 +4,11 @@ namespace App\Services\Equipment;
use App\Entities\Equipment\CodeEntity;
use App\Models\Equipment\CodeModel;
use CodeIgniter\HTTP\IncomingRequest;
use App\Services\Equipment\EquipmentService;
class CodeService extends EquipmentService
{
protected ?IncomingRequest $request = null;
public function __construct(?IncomingRequest $request = null)
public function __construct(mixed $request = null)
{
parent::__construct($request);
$this->addClassName('Code');

View File

@ -4,12 +4,10 @@ namespace App\Services\Equipment;
use App\Entities\Equipment\DomainEntity;
use App\Models\Equipment\DomainModel;
use CodeIgniter\HTTP\IncomingRequest;
class DomainService extends EquipmentService
{
protected ?IncomingRequest $request = null;
public function __construct(?IncomingRequest $request = null)
public function __construct(mixed $request = null)
{
parent::__construct($request);
$this->addClassName('Domain');

View File

@ -3,11 +3,10 @@
namespace App\Services\Equipment;
use App\Services\CommonService;
use CodeIgniter\HTTP\IncomingRequest;
abstract class EquipmentService extends CommonService
{
protected function __construct(?IncomingRequest $request = null)
public function __construct(mixed $request = null)
{
parent::__construct($request);
$this->addClassName('Equipment');

View File

@ -4,12 +4,10 @@ namespace App\Services\Equipment\Part;
use App\Entities\Equipment\Part\CpuEntity;
use App\Models\Equipment\Part\CpuModel;
use CodeIgniter\HTTP\IncomingRequest;
class CpuService extends PartService
{
protected ?IncomingRequest $request = null;
public function __construct(?IncomingRequest $request = null)
public function __construct(mixed $request = null)
{
parent::__construct($request);
$this->addClassName('Cpu');

View File

@ -4,12 +4,10 @@ namespace App\Services\Equipment\Part;
use App\Entities\Equipment\Part\DefenceEntity;
use App\Models\Equipment\Part\DefenceModel;
use CodeIgniter\HTTP\IncomingRequest;
class DefenceService extends PartService
{
protected ?IncomingRequest $request = null;
public function __construct(?IncomingRequest $request = null)
public function __construct(mixed $request = null)
{
parent::__construct($request);
$this->addClassName('Defence');

View File

@ -5,12 +5,10 @@ namespace App\Services\Equipment\Part;
use App\Entities\Equipment\Part\IpEntity;
use App\Entities\Equipment\Part\LineEntity;
use App\Models\Equipment\Part\IpModel;
use CodeIgniter\HTTP\IncomingRequest;
class IpService extends PartService
{
protected ?IncomingRequest $request = null;
public function __construct(?IncomingRequest $request = null)
public function __construct(mixed $request = null)
{
parent::__construct($request);
$this->addClassName('Ip');

View File

@ -4,12 +4,10 @@ namespace App\Services\Equipment\Part;
use App\Entities\Equipment\Part\LineEntity;
use App\Models\Equipment\Part\LineModel;
use CodeIgniter\HTTP\IncomingRequest;
class LineService extends PartService
{
protected ?IncomingRequest $request = null;
public function __construct(?IncomingRequest $request = null)
public function __construct(mixed $request = null)
{
parent::__construct($request);
$this->addClassName('Line');

View File

@ -3,11 +3,10 @@
namespace App\Services\Equipment\Part;
use App\Services\Equipment\EquipmentService;
use CodeIgniter\HTTP\IncomingRequest;
abstract class PartService extends EquipmentService
{
protected function __construct(?IncomingRequest $request = null)
public function __construct(mixed $request = null)
{
parent::__construct($request);
$this->addClassName('Part');

View File

@ -4,12 +4,10 @@ namespace App\Services\Equipment\Part;
use App\Entities\Equipment\Part\RamEntity;
use App\Models\Equipment\Part\RamModel;
use CodeIgniter\HTTP\IncomingRequest;
class RamService extends PartService
{
protected ?IncomingRequest $request = null;
public function __construct(?IncomingRequest $request = null)
public function __construct(mixed $request = null)
{
parent::__construct($request);
$this->addClassName('Ram');

View File

@ -4,12 +4,10 @@ namespace App\Services\Equipment\Part;
use App\Entities\Equipment\Part\SoftwareEntity;
use App\Models\Equipment\Part\SoftwareModel;
use CodeIgniter\HTTP\IncomingRequest;
class SoftwareService extends PartService
{
protected ?IncomingRequest $request = null;
public function __construct(?IncomingRequest $request = null)
public function __construct(mixed $request = null)
{
parent::__construct($request);
$this->addClassName('Software');

View File

@ -4,12 +4,10 @@ namespace App\Services\Equipment\Part;
use App\Entities\Equipment\Part\StorageEntity;
use App\Models\Equipment\Part\StorageModel;
use CodeIgniter\HTTP\IncomingRequest;
class StorageService extends PartService
{
protected ?IncomingRequest $request = null;
public function __construct(?IncomingRequest $request = null)
public function __construct(mixed $request = null)
{
parent::__construct($request);
$this->addClassName('Storage');

View File

@ -4,13 +4,11 @@ namespace App\Services\Equipment;
use App\Entities\Equipment\ServerEntity;
use App\Models\Equipment\ServerModel;
use CodeIgniter\HTTP\IncomingRequest;
use App\Services\Equipment\EquipmentService;
class ServerService extends EquipmentService
{
protected ?IncomingRequest $request = null;
public function __construct(?IncomingRequest $request = null)
public function __construct(mixed $request = null)
{
parent::__construct($request);
$this->addClassName('Server');

View File

@ -5,12 +5,11 @@ namespace App\Services;
use App\Entities\MyLogEntity;
use App\Models\MyLogModel;
use App\Services\Auth\AuthService;
use CodeIgniter\HTTP\IncomingRequest;
use App\Libraries\LogCollector;
class MyLogService extends CommonService
{
public function __construct(?IncomingRequest $request = null)
public function __construct(mixed $request = null)
{
parent::__construct($request);
$this->addClassName('MyLog');

View File

@ -4,15 +4,13 @@ namespace App\Services;
use App\Models\UserSNSModel;
use App\Entities\UserSNSEntity;
use CodeIgniter\HTTP\IncomingRequest;
// use Google\Service\AndroidEnterprise\Resource\Users;
class UserSNSService extends CommonService
{
protected ?IncomingRequest $request = null;
public function __construct(?IncomingRequest $request = null)
public function __construct(mixed $request = null)
{
parent::__construct($request);
parent::__construct($request);;
$this->addClassName('UserSNS');
}
public function getModelClass(): UserSNSModel

View File

@ -4,12 +4,10 @@ namespace App\Services;
use App\Entities\UserEntity;
use App\Models\UserModel;
use CodeIgniter\HTTP\IncomingRequest;
class UserService extends CommonService
{
protected ?IncomingRequest $request = null;
public function __construct(?IncomingRequest $request = null)
public function __construct(mixed $request = null)
{
parent::__construct($request);
$this->addClassName('User');

View File

@ -47,7 +47,7 @@
<div class="row align-items-start p-0">
<div class="col text-start"><?= $item['item_type'] ?></div>
<div class="col text-nowrap"><?= $item['item_uid'] ?></div>
<div class="col text-end"><?= number_format($item['amount']) ?>원</div>
<div class="col text-end text-nowrap"><?= number_format($item['amount']) ?>원</div>
</div>
</li>
<?php endforeach; ?>