_userModel)) { $this->_userModel = new UserModel(); } return $this->_userModel; } protected function setUserPointByMangboard(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); } protected function setUserLevelByMangboard(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); } }