feat(api): 新增获取所有开发者列表接口并添加OpenAPI文档
添加了获取所有开发者列表的API端点,支持分页查询并返回开发者信息及其应用统计 同时新增了完整的OpenAPI规范文档,描述所有API端点的详细参数和响应格式
This commit is contained in:
67
api.php
67
api.php
@@ -9,6 +9,7 @@
|
|||||||
* - /api.php?t=gettagapp&id={tagid} - 获取某标签里的APP列表
|
* - /api.php?t=gettagapp&id={tagid} - 获取某标签里的APP列表
|
||||||
* - /api.php?t=getdeveloperapp&id={developerid} - 获取某开发者的APP列表
|
* - /api.php?t=getdeveloperapp&id={developerid} - 获取某开发者的APP列表
|
||||||
* - /api.php?t=getdeveloperinfo&id={developerid} - 获取开发者信息
|
* - /api.php?t=getdeveloperinfo&id={developerid} - 获取开发者信息
|
||||||
|
* - /api.php?t=getalldevelopers - 获取所有开发者列表
|
||||||
* - /api.php?t=getacc - 获取所有公告
|
* - /api.php?t=getacc - 获取所有公告
|
||||||
* - /api.php?t=getcount - 获取计数信息
|
* - /api.php?t=getcount - 获取计数信息
|
||||||
* - /api.php?t=getappversions&id={appid} - 获取某个应用的版本列表
|
* - /api.php?t=getappversions&id={appid} - 获取某个应用的版本列表
|
||||||
@@ -71,6 +72,9 @@ switch ($apiType) {
|
|||||||
case 'getappversions':
|
case 'getappversions':
|
||||||
getAppVersions();
|
getAppVersions();
|
||||||
break;
|
break;
|
||||||
|
case 'getalldevelopers':
|
||||||
|
getAllDevelopers();
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
showApiEndpoints();
|
showApiEndpoints();
|
||||||
break;
|
break;
|
||||||
@@ -115,6 +119,7 @@ function showApiEndpoints() {
|
|||||||
'/api.php?t=gettagapp&id={tagid}' => '获取某标签里的APP列表',
|
'/api.php?t=gettagapp&id={tagid}' => '获取某标签里的APP列表',
|
||||||
'/api.php?t=getdeveloperapp&id={developerid}' => '获取某开发者的APP列表',
|
'/api.php?t=getdeveloperapp&id={developerid}' => '获取某开发者的APP列表',
|
||||||
'/api.php?t=getdeveloperinfo&id={developerid}' => '获取开发者信息',
|
'/api.php?t=getdeveloperinfo&id={developerid}' => '获取开发者信息',
|
||||||
|
'/api.php?t=getalldevelopers' => '获取所有开发者列表',
|
||||||
'/api.php?t=getacc' => '获取所有公告',
|
'/api.php?t=getacc' => '获取所有公告',
|
||||||
'/api.php?t=getcount' => '获取计数信息(如所有APP的数量、开发者的数量等)',
|
'/api.php?t=getcount' => '获取计数信息(如所有APP的数量、开发者的数量等)',
|
||||||
'/api.php?t=getappversions&id={appid}' => '获取某个应用的版本列表'
|
'/api.php?t=getappversions&id={appid}' => '获取某个应用的版本列表'
|
||||||
@@ -544,6 +549,68 @@ function getCountInfo() {
|
|||||||
sendSuccessResponse($counts);
|
sendSuccessResponse($counts);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取所有开发者列表
|
||||||
|
*/
|
||||||
|
function getAllDevelopers() {
|
||||||
|
global $conn;
|
||||||
|
|
||||||
|
// 获取分页参数
|
||||||
|
$page = isset($_GET['page']) ? max(1, intval($_GET['page'])) : 1;
|
||||||
|
$limit = isset($_GET['limit']) ? min(100, max(1, intval($_GET['limit']))) : 20;
|
||||||
|
$offset = ($page - 1) * $limit;
|
||||||
|
|
||||||
|
// 获取总数量
|
||||||
|
$countSql = "SELECT COUNT(*) as total FROM developers";
|
||||||
|
$countResult = $conn->query($countSql);
|
||||||
|
$total = $countResult->fetch_assoc()['total'] ?? 0;
|
||||||
|
$totalPages = ceil($total / $limit);
|
||||||
|
|
||||||
|
// 获取开发者列表
|
||||||
|
$sql = "SELECT id, username, email, created_at FROM developers ORDER BY created_at DESC LIMIT ?, ?";
|
||||||
|
$stmt = $conn->prepare($sql);
|
||||||
|
$stmt->bind_param("ii", $offset, $limit);
|
||||||
|
$stmt->execute();
|
||||||
|
$result = $stmt->get_result();
|
||||||
|
|
||||||
|
$developers = [];
|
||||||
|
while ($row = $result->fetch_assoc()) {
|
||||||
|
// 获取每个开发者的应用数量
|
||||||
|
$appCountSql = "SELECT COUNT(*) as count FROM apps WHERE developer_id = ? AND status = 'approved' AND is_approved = 1";
|
||||||
|
$appCountStmt = $conn->prepare($appCountSql);
|
||||||
|
$appCountStmt->bind_param("i", $row['id']);
|
||||||
|
$appCountStmt->execute();
|
||||||
|
$appCountResult = $appCountStmt->get_result();
|
||||||
|
$appCount = $appCountResult->fetch_assoc()['count'] ?? 0;
|
||||||
|
$row['app_count'] = $appCount;
|
||||||
|
|
||||||
|
// 获取每个开发者的总下载量
|
||||||
|
$downloadCountSql = "SELECT SUM(download_count) as count FROM app_versions
|
||||||
|
JOIN apps ON app_versions.app_id = apps.id
|
||||||
|
WHERE apps.developer_id = ?";
|
||||||
|
$downloadCountStmt = $conn->prepare($downloadCountSql);
|
||||||
|
$downloadCountStmt->bind_param("i", $row['id']);
|
||||||
|
$downloadCountStmt->execute();
|
||||||
|
$downloadCountResult = $downloadCountStmt->get_result();
|
||||||
|
$downloadCount = $downloadCountResult->fetch_assoc()['count'] ?? 0;
|
||||||
|
$row['total_downloads'] = $downloadCount;
|
||||||
|
|
||||||
|
$developers[] = $row;
|
||||||
|
}
|
||||||
|
|
||||||
|
$response = [
|
||||||
|
'developers' => $developers,
|
||||||
|
'pagination' => [
|
||||||
|
'total' => $total,
|
||||||
|
'page' => $page,
|
||||||
|
'limit' => $limit,
|
||||||
|
'totalPages' => $totalPages
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
sendSuccessResponse($response);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取指定应用的版本列表
|
* 获取指定应用的版本列表
|
||||||
*/
|
*/
|
||||||
|
|||||||
1091
apidocs/openapi.json
Normal file
1091
apidocs/openapi.json
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user