67 lines
2.5 KiB
PHP
67 lines
2.5 KiB
PHP
<?php
|
|
|
|
namespace App\Traits;
|
|
|
|
use App\Entities\UserEntity;
|
|
use App\Models\UserModel;
|
|
|
|
trait MangboardTrait
|
|
{
|
|
private $_userModel = null;
|
|
public function getUserModel(): UserModel
|
|
{
|
|
if (is_null($this->_userModel)) {
|
|
$this->_userModel = new UserModel();
|
|
}
|
|
return $this->_userModel;
|
|
}
|
|
|
|
public function setUserPointByMangboardTrait(UserEntity $entity, int $point, $sign = '+'): UserEntity
|
|
{
|
|
switch ($sign) {
|
|
case '-':
|
|
if ($point < $point) {
|
|
throw new \Exception("기존포인트:{$point}가 감소 포인트:-{$point} 작습니다.\n");
|
|
}
|
|
$point = $point - $point;
|
|
break;
|
|
case '+':
|
|
$point = $point + $point;
|
|
break;
|
|
default:
|
|
throw new \Exception(__FUNCTION__ . "에서는 {$sign}은 사용할수 없습니다.\n");
|
|
// break;
|
|
}
|
|
$entity = $this->getUserModel()->setPoint($entity, $point);
|
|
return $this->setUserLevelByMangboardTrait($entity);
|
|
}
|
|
|
|
public function setUserLevelByMangboardTrait(UserEntity $entity): UserEntity
|
|
{
|
|
//Admin용 Level로는 변경불가
|
|
if ($entity->getLevel() == MANGBOARD['admin']['level']) {
|
|
// throw new \Exception("Admin용 Level을 변경하실수 없습니다.\n");
|
|
return $entity;
|
|
}
|
|
|
|
//사용자 Point별 Level 계산
|
|
$level = intval($entity->getPoint() / MANGBOARD['point']['unit'] * MANGBOARD['point']['unit'] / MANGBOARD['point']['unit']);
|
|
|
|
//운영자면 7~9
|
|
if (MANGBOARD['manager']['level']['min'] <= $level && $level <= 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;
|
|
if (MANGBOARD['user']['level']['min'] <= $level && $level <= 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->getUserModel()->setLevel($entity, $level);
|
|
}
|
|
}
|