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

function Mirai_api_referral_users($db, $user) {
    if (!$user->hasLogin()) {
        return ['code' => 401, 'msg' => '请先登录', 'need_login' => true];
    }
    $uid = (int)$user->uid;
    $page = max(1, (int)($_POST['page'] ?? 1));
    $pageSize = min(50, max(1, (int)($_POST['pageSize'] ?? 20)));

    $refTable = Mirai_pointsTable('mirai_referrals');
    $offset = ($page - 1) * $pageSize;

    $count = $db->fetchRow($db->select(['COUNT(*)' => 'cnt'])->from($refTable)->where('referrer_uid = ?', $uid));
    $total = (int)($count['cnt'] ?? 0);

    $rows = $db->fetchAll($db->select()->from($refTable)
        ->where('referrer_uid = ?', $uid)
        ->order('created', \Typecho\Db::SORT_DESC)
        ->limit($pageSize)
        ->offset($offset));

    $users = [];
    foreach ($rows as $row) {
        $u = $db->fetchRow($db->select('uid', 'name', 'screenName', 'avatar')->from('table.users')->where('uid = ?', $row['uid']));
        $users[] = [
            'uid' => (int)$row['uid'],
            'name' => $u['screenName'] ?? $u['name'] ?? '',
            'avatar' => $u['avatar'] ?? '',
            'bind_type' => $row['bind_type'],
            'created' => (int)$row['created'],
        ];
    }

    return ['code' => 0, 'data' => ['list' => $users, 'total' => $total, 'page' => $page, 'pageSize' => $pageSize]];
}
