<?php
if (!defined('__TYPECHO_ROOT_DIR__')) exit;

function Mirai_api_level_info($db, $user) {
    if (!$user->hasLogin()) {
        return ['code' => 401, 'msg' => '请先登录', 'need_login' => true];
    }
    $uid = (int)$user->uid;
    $level = Mirai_levelGet($uid);
    $exp = Mirai_expGet($uid);
    $max = Mirai_levelGetMax();
    $nextExp = Mirai_levelGetExpThreshold($level + 1);
    $currentExp = Mirai_levelGetExpThreshold($level);
    $isMax = $level >= $max;

    $progress = 0;
    if (!$isMax && $nextExp > $currentExp) {
        $progress = min(100, round(($exp - $currentExp) / ($nextExp - $currentExp) * 100));
    } elseif ($isMax) {
        $progress = 100;
    }

    return ['code' => 0, 'data' => [
        'level' => $level,
        'level_name' => Mirai_levelGetName($level),
        'level_icon' => Mirai_levelGetIcon($level),
        'exp' => $exp,
        'next_exp' => $isMax ? 0 : $nextExp,
        'progress' => $progress,
        'is_max' => $isMax,
        'all_levels' => Mirai_levelGetAllLevels(),
    ]];
}
