Autionmation init...
This commit is contained in:
parent
e87ce3e741
commit
1928735693
2
.gitignore
vendored
2
.gitignore
vendored
@ -20,7 +20,7 @@ application/logs/*
|
||||
|
||||
#codeigniter4
|
||||
.env
|
||||
!writeable/*
|
||||
writeable/*
|
||||
!writeable/.htaccess
|
||||
!writeable/index.html
|
||||
!writeable/caceh/index.html
|
||||
|
||||
@ -94,18 +94,18 @@ define('EVENT_PRIORITY_NORMAL', 100);
|
||||
define('EVENT_PRIORITY_HIGH', 10);
|
||||
|
||||
define('MANGBOARD', [
|
||||
'point' => ['unit' => getenv('mangboard.point.unit') ?: 1000],
|
||||
'admin' => ['level' => getenv('mangboard.admin.level') ?: 10],
|
||||
'point' => ['unit' => 1000],
|
||||
'admin' => ['level' => 10],
|
||||
'manager' => [
|
||||
'level' => [
|
||||
'min' => getenv('mangboard.manager.level.min') ?: 7,
|
||||
'max' => getenv('mangboard.manager.level.max') ?: 9,
|
||||
'min' => 6,
|
||||
'max' => 9,
|
||||
]
|
||||
],
|
||||
'user' => [
|
||||
'level' => [
|
||||
'min' => getenv('mangboard.user.level.min') ?: 1,
|
||||
'max' => getenv('mangboard.user.level.max') ?: 5,
|
||||
'min' => 1,
|
||||
'max' => 5,
|
||||
]
|
||||
],
|
||||
]);
|
||||
|
||||
@ -38,7 +38,7 @@ class Logger extends BaseConfig
|
||||
*
|
||||
* @var int|list<int>
|
||||
*/
|
||||
public $threshold = (ENVIRONMENT === 'production') ? 4 : 9;
|
||||
public $threshold = (ENVIRONMENT === 'production') ? 6 : 9;
|
||||
|
||||
/**
|
||||
* --------------------------------------------------------------------------
|
||||
|
||||
@ -9,10 +9,10 @@ $routes->get('/', 'Home::index');
|
||||
$routes->group('cli', ['namespace' => 'App\Controllers\CLI'], function ($routes) {
|
||||
$routes->group('mangboard', ['namespace' => 'App\Controllers\CLI\Mangboard'], function ($routes) {
|
||||
$routes->group('user', static function ($routes) {
|
||||
$routes->cli('point/(:num)/(:num)/(:any)', 'UserController::point/$1/$2/$3');
|
||||
});
|
||||
$routes->group('user', static function ($routes) {
|
||||
$routes->cli('level/(:num)', 'UserController::level/$1');
|
||||
$routes->cli('point', 'UserController::point');
|
||||
$routes->cli('point/(:any)', 'UserController::point/$1');
|
||||
$routes->cli('level', 'UserController::level');
|
||||
$routes->cli('level/(:any)', 'UserController::level/$1');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@ -3,7 +3,6 @@
|
||||
namespace App\Controllers\CLI\Mangboard;
|
||||
|
||||
use App\Controllers\BaseController;
|
||||
use App\Entities\Mangboard\UserEntity;
|
||||
use App\Models\Mangboard\UserModel;
|
||||
use CodeIgniter\HTTP\RequestInterface;
|
||||
use CodeIgniter\HTTP\ResponseInterface;
|
||||
@ -25,39 +24,56 @@ class UserController extends BaseController
|
||||
{
|
||||
//
|
||||
}
|
||||
public function point(string $uid, int $point, string $sign = "plus")
|
||||
{
|
||||
$msg = [];
|
||||
try {
|
||||
|
||||
$entity = $this->_model->getEntity($uid);
|
||||
if (!$entity) {
|
||||
throw new \Exception("해당 회원[{$uid}]이 없습니다.");
|
||||
public function point($id = null, $point = null, string $sign = "+")
|
||||
{
|
||||
try {
|
||||
$entitys = [];
|
||||
if ($id) {
|
||||
$entity = is_numeric($id) ? $this->_model->getEntityByPK(intval($id)) : $this->_model->getEntityByID($id);
|
||||
if (!$entity) {
|
||||
throw new \Exception(sprintf("해당 회원[%s:%s]이 없습니다.", gettype($id), $id));
|
||||
}
|
||||
if (is_numeric($point)) {
|
||||
$entitys[] = $this->_model->setPoint($entity, $point, $sign);
|
||||
}
|
||||
} else {
|
||||
$entitys = $this->_model->getEntitys();
|
||||
}
|
||||
$old_point = $entity->getPoint();
|
||||
$entity->setPoint($point, $sign);
|
||||
$entity = $this->_model->setEntity($entity);
|
||||
$msg[] = "[{$entity}] 회원님의 포인트는 {$old_point}->{$entity->getPoint()} 입니다.";
|
||||
foreach ($entitys as $entity) {
|
||||
log_message("debug", __FUNCTION__ . "=>[{$entity}] 회원님의 Point는 {$entity->getPoint()} 입니다.");
|
||||
}
|
||||
return "완료되었습니다.";
|
||||
} catch (\Exception $e) {
|
||||
$msg[] = $e->getMessage();
|
||||
log_message('error', '[ERROR] {exception}', ['exception' => $e]);
|
||||
return $e->getMessage();
|
||||
}
|
||||
return implode("\n", $msg);
|
||||
}
|
||||
|
||||
public function level(string $uid)
|
||||
public function level($id = null, $level = null)
|
||||
{
|
||||
$msg = [];
|
||||
try {
|
||||
$entity = $this->_model->getEntity($uid);
|
||||
if (!$entity) {
|
||||
throw new \Exception("해당 회원[{$uid}]이 없습니다.");
|
||||
$entitys = [];
|
||||
if ($id) {
|
||||
$entity = is_numeric($id) ? $this->_model->getEntityByPK(intval($id)) : $this->_model->getEntityByID($id);
|
||||
if (!$entity) {
|
||||
throw new \Exception(sprintf("해당 회원[%s:%s]이 없습니다.", gettype($id), $id));
|
||||
}
|
||||
if (is_numeric($level)) {
|
||||
$entitys[] = $this->_model->checkLevel($entity, $level);
|
||||
}
|
||||
} else {
|
||||
foreach ($this->_model->getEntitys() as $entity) {
|
||||
$entitys[] = $this->_model->checkLevel($entity);
|
||||
}
|
||||
}
|
||||
$old_level = $entity->getLevel();
|
||||
$entity = $this->_model->setLevel($entity);
|
||||
$msg[] = "[{$entity}] 회원님의 레벨은 {$old_level}->{$entity->getLevel()} 입니다.";
|
||||
foreach ($entitys as $entity) {
|
||||
log_message("debug", __FUNCTION__ . "=>[{$entity}] 회원님의 Level은 {$entity->getLevel()} 입니다.");
|
||||
}
|
||||
return "완료되었습니다.";
|
||||
} catch (\Exception $e) {
|
||||
$msg[] = $e->getMessage();
|
||||
log_message('error', '[ERROR] {exception}', ['exception' => $e]);
|
||||
return $e->getMessage();
|
||||
}
|
||||
return implode("\n", $msg);
|
||||
}
|
||||
}
|
||||
|
||||
@ -12,10 +12,13 @@ class UserEntity extends Entity
|
||||
|
||||
public function __toString()
|
||||
{
|
||||
return "{$this->getName()}";
|
||||
return "{$this->getPK()}:{$this->getID()}:{$this->getName()}";
|
||||
}
|
||||
|
||||
public function getUserID()
|
||||
public function getPK()
|
||||
{
|
||||
return $this->attributes['pid'];
|
||||
}
|
||||
public function getID()
|
||||
{
|
||||
return $this->attributes['user_id'];
|
||||
}
|
||||
|
||||
@ -45,11 +45,11 @@ class BaseModel extends Model
|
||||
protected $beforeDelete = [];
|
||||
protected $afterDelete = [];
|
||||
|
||||
protected function getEntity(string $uid)
|
||||
final public function getEntity()
|
||||
{
|
||||
return $this->asObject($this->returnType)->where($this->primaryKey, $uid)->first();
|
||||
return $this->asObject($this->returnType)->first();
|
||||
}
|
||||
protected function setEntity($entity)
|
||||
final protected function setEntity($entity)
|
||||
{
|
||||
if ($entity->hasChanged()) {
|
||||
if (!$this->save($entity)) {
|
||||
@ -59,7 +59,7 @@ class BaseModel extends Model
|
||||
return $entity;;
|
||||
}
|
||||
|
||||
protected function getEntitys(): array
|
||||
final public function getEntitys(): array
|
||||
{
|
||||
return $this->asObject($this->returnType)->findAll();
|
||||
}
|
||||
|
||||
@ -9,7 +9,6 @@ class UserModel extends BaseModel
|
||||
protected $table = 'mb_users';
|
||||
protected $primaryKey = 'pid';
|
||||
protected $useAutoIncrement = true;
|
||||
// protected $returnType = 'array';
|
||||
protected $returnType = UserEntity::class;
|
||||
protected $allowedFields = ['pid', 'user_id', 'passwd', 'user_name', 'user_email', 'user_state', 'user_level', 'user_point'];
|
||||
|
||||
@ -32,6 +31,17 @@ class UserModel extends BaseModel
|
||||
// 'created_at' => 'if_exist|valid_date',
|
||||
];
|
||||
|
||||
public function getEntityByPK(int $uid): null|UserEntity
|
||||
{
|
||||
$this->where($this->primaryKey, $uid);
|
||||
return $this->getEntity();
|
||||
}
|
||||
public function getEntityByID(string $id): null|UserEntity
|
||||
{
|
||||
$this->where('user_id', $id);
|
||||
return $this->getEntity();
|
||||
}
|
||||
|
||||
public function setPoint(UserEntity $entity, int $point, $sign = '+'): UserEntity
|
||||
{
|
||||
switch ($sign) {
|
||||
@ -39,38 +49,57 @@ class UserModel extends BaseModel
|
||||
if ($entity->getPoint() < $point) {
|
||||
throw new \Exception("기존포인트:{$entity->getPoint()}가 감소 포인트:-{$point} 작습니다.\n");
|
||||
}
|
||||
$entity->setPoint($entity->getPoint() - $point);
|
||||
$point = $entity->getPoint() - $point;
|
||||
break;
|
||||
case '+':
|
||||
$entity->setPoint($entity->getPoint() + $point);
|
||||
$point = $entity->getPoint() + $point;
|
||||
break;
|
||||
default:
|
||||
throw new \Exception("{$sign}에 해당하는 작업은 수행할수 없습니다.\n");
|
||||
throw new \Exception(__FUNCTION__ . "에서는 {$sign}은 사용할수 없습니다.\n");
|
||||
// break;
|
||||
}
|
||||
return $this->setEntity($entity);
|
||||
if ($entity->getPoint() != $point) {
|
||||
$old_point = $entity->getPoint();
|
||||
$entity->setPoint($point);
|
||||
$entity = $this->setEntity($entity);
|
||||
log_message("notice", __FUNCTION__ . "=>{$entity}의 Point가 {$old_point}에서 {$entity->getPoint()}로 변경되었습니다.");
|
||||
}
|
||||
return $entity;
|
||||
}
|
||||
|
||||
private function getLevelByPoint(UserEntity $entity): int
|
||||
final public function setLevel(UserEntity $entity, int $level): UserEntity
|
||||
{
|
||||
return intval($entity->getPoint() / MANGBOARD['point']['unit'] * MANGBOARD['point']['unit'] / MANGBOARD['point']['unit']);
|
||||
if ($entity->getLevel() != $level) {
|
||||
$old_level = $entity->getLevel();
|
||||
$entity->setLevel($level);
|
||||
$entity = $this->setEntity($entity);
|
||||
log_message("notice", __FUNCTION__ . "=>{$entity}의 Level이 {$old_level}에서 {$entity->getLevel()}로 변경되었습니다.");
|
||||
}
|
||||
return $entity;
|
||||
}
|
||||
final public function setLevel(UserEntity $entity): UserEntity
|
||||
final public function checkLevel(UserEntity $entity, int $level = null): UserEntity
|
||||
{
|
||||
//관리자면 변경불가
|
||||
if ($entity->getUserID() == MANGBOARD['admin']['level']) {
|
||||
return $entity;
|
||||
}
|
||||
//운영자면 변경불가
|
||||
if (MANGBOARD['manager']['level']['min'] <= $entity->getLevel() <= MANGBOARD['manager']['level']['max']) {
|
||||
return $entity;
|
||||
}
|
||||
//사용자 Point별 Level 계산
|
||||
$level = $this->getLevelByPoint($entity);
|
||||
$level = intval(is_numeric($level) ? $level : $entity->getPoint() / MANGBOARD['point']['unit'] * MANGBOARD['point']['unit'] / MANGBOARD['point']['unit']);
|
||||
|
||||
//관리자면 변경불가
|
||||
if ($entity->getLevel() == MANGBOARD['admin']['level']) {
|
||||
return $entity;
|
||||
}
|
||||
|
||||
//운영자면 7~9
|
||||
if (MANGBOARD['manager']['level']['min'] <= $entity->getLevel() && $entity->getLevel() <= MANGBOARD['manager']['level']['max']) {
|
||||
$level = $level < MANGBOARD['manager']['level']['min'] ? MANGBOARD['manager']['level']['min'] : $level;
|
||||
$level = MANGBOARD['manager']['level']['max'] < $level ? MANGBOARD['manager']['level']['max'] : $level;
|
||||
}
|
||||
// echo "point:" . $entity->getPoint() . ",level:" . $level . "\n";
|
||||
|
||||
//사용자 Level 1~5;
|
||||
$level = $level < MANGBOARD['user']['level']['min'] ? MANGBOARD['user']['level']['min'] : $level;
|
||||
$level = MANGBOARD['user']['level']['max'] < $level ? MANGBOARD['user']['level']['max'] : $level;
|
||||
$entity->setLevel($level);
|
||||
return $this->setEntity($entity);
|
||||
if (MANGBOARD['user']['level']['min'] <= $entity->getLevel() && $entity->getLevel() <= MANGBOARD['user']['level']['max']) {
|
||||
$level = $level < MANGBOARD['user']['level']['min'] ? MANGBOARD['user']['level']['min'] : $level;
|
||||
$level = MANGBOARD['user']['level']['max'] < $level ? MANGBOARD['user']['level']['max'] : $level;
|
||||
}
|
||||
// echo "point:" . $entity->getPoint() . ",level:" . $level . "\n";
|
||||
return $this->setLevel($entity, $level);
|
||||
}
|
||||
}
|
||||
|
||||
6
writable/logs/log-2024-08-27.log
Normal file
6
writable/logs/log-2024-08-27.log
Normal file
@ -0,0 +1,6 @@
|
||||
NOTICE - 2024-08-27 07:31:25 --> setPoint:3:idcjp:파란의 Point가 3314에서 4314로 변경되었습니다.
|
||||
NOTICE - 2024-08-27 07:48:01 --> setLevel3:idcjp:파란의 Level이 3에서 4로 변경되었습니다.
|
||||
DEBUG - 2024-08-27 07:59:33 --> [1:admin:슈퍼바이저] 회원님의 Level은 10 입니다.
|
||||
DEBUG - 2024-08-27 07:59:33 --> [3:idcjp:파란] 회원님의 Level은 4 입니다.
|
||||
DEBUG - 2024-08-27 07:59:50 --> [1:admin:슈퍼바이저] 회원님의 Point는 1060 입니다.
|
||||
DEBUG - 2024-08-27 07:59:50 --> [3:idcjp:파란] 회원님의 Point는 4314 입니다.
|
||||
Loading…
Reference in New Issue
Block a user