# 软件商店 **Repository Path**: byusi/software-store ## Basic Information - **Project Name**: 软件商店 - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-01 - **Last Updated**: 2025-12-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 软件商店API文档 > [获取用户token](/Get-User-Token.md) ## 基本信息 - **基础URL**: `https://software-store-interface.properos.cn/` - **请求格式**: 支持 `application/x-www-form-urlencoded` 和 `multipart/form-data` - **响应格式**: JSON - **字符编码**: UTF-8 ## 目录 1. [认证与授权](#认证与授权) 2. [应用管理](#应用管理) 3. [评论系统](#评论系统) 4. [搜索与筛选](#搜索与筛选) 5. [用户相关](#用户相关) 6. [管理员接口](#管理员接口) ## 通用响应格式 ```json { "status": "success" | "error", "message": "描述信息", "data": {}, // 成功时的数据 "error_code": 500 // 错误时的错误码(可选) } ``` ## 认证与授权 ### 用户认证 系统通过 `token` 参数进行用户身份验证,需要在需要用户登录的接口中传递。 **参数说明**: - `token` (string, required): 用户认证令牌 ## 应用管理 ### 1. 上传应用 **Endpoint**: `/api.php?action=upload_app` **方法**: POST **认证**: 需要 **参数**: | 参数名 | 类型 | 必需 | 说明 | |--------|------|------|------| | token | string | 是 | 用户令牌 | | package_name | string | 是 | 应用包名(唯一标识) | | name | string | 是 | 应用名称 | | version | string | 是 | 版本号 | | version_code | int | 是 | 版本代码 | | description | string | 是 | 应用描述(最少10字符) | | download_url | string | 是 | 下载链接 | | update_log | string | 否 | 更新日志 | | categories | JSON数组 | 否 | 分类ID数组 | | icon | file | 否 | 应用图标(图片文件) | | promo_images | file[] | 否 | 宣传图片数组(最多5张) | **成功响应**: ```json { "status": "success", "message": "应用上传成功,等待审核", "data": { "app_id": 123, "app_url": "https://.../app_detail.html?id=123", "package_name": "com.example.app", "name": "示例应用", "status": "pending" } } ``` ### 2. 编辑应用 **Endpoint**: `/api.php?action=edit_app` **方法**: POST **认证**: 需要(只能编辑自己的应用) **参数**: | 参数名 | 类型 | 必需 | 说明 | |--------|------|------|------| | token | string | 是 | 用户令牌 | | app_id | int | 是 | 应用ID | | name | string | 否 | 应用名称 | | version | string | 否 | 版本号 | | version_code | int | 否 | 版本代码 | | description | string | 否 | 应用描述 | | update_log | string | 否 | 更新日志 | | download_url | string | 否 | 下载链接 | | icon | file | 否 | 新图标(替换原图标) | | promo_images | file[] | 否 | 新宣传图片(替换原图片) | **响应**: ```json { "status": "success", "message": "应用更新成功,等待重新审核", "data": { "app_id": 123, "app_url": "https://.../app_detail.html?id=123" } } ``` ### 3. 获取应用列表 **Endpoint**: `/api.php?action=get_apps` **方法**: GET **参数**: | 参数名 | 类型 | 必需 | 说明 | |--------|------|------|------| | type | string | 否 | 列表类型:`all`(默认)、`hot`(热门)、`new`(最新) | | page | int | 否 | 页码(默认1) | | limit | int | 否 | 每页数量(默认20) | | category_id | int | 否 | 分类ID筛选 | **成功响应**: ```json { "status": "success", "data": { "apps": [ { "id": 123, "package_name": "com.example.app", "name": "示例应用", "version": "1.0.0", "description": "应用描述", "icon_path": "uploads/icons/icon.png", "promo_images": ["img1.jpg", "img2.jpg"], "downloads": 1000, "likes": 50, "uploader_username": "user1", "app_url": "https://.../app_detail.html?id=123", "download_url_api": "https://.../api.php?action=download_app&app_id=123", "categories": [ {"id": 1, "name": "游戏"}, {"id": 2, "name": "娱乐"} ] } ], "pagination": { "current_page": 1, "per_page": 20, "total": 100, "total_pages": 5 }, "filters": { "type": "all", "category_id": null } } } ``` ### 4. 获取应用详情 **Endpoint**: `/api.php?action=get_app_detail` **方法**: GET **参数**: | 参数名 | 类型 | 必需 | 说明 | |--------|------|------|------| | app_id | int | 是 | 应用ID | **成功响应**: ```json { "status": "success", "data": { "id": 123, "package_name": "com.example.app", "name": "示例应用", "version": "1.0.0", "version_code": 100, "description": "详细描述", "update_log": "更新日志内容", "download_url": "https://.../app.apk", "icon_path": "uploads/icons/icon.png", "promo_images": ["img1.jpg", "img2.jpg"], "downloads": 1000, "likes": 50, "created_at": "2024-01-01 12:00:00", "uploader_username": "user1", "uploader_info": { "username": "user1", "uid": "user_123", "registration_time": "2023-12-01" }, "app_url": "https://.../app_detail.html?id=123", "download_url_api": "https://.../api.php?action=download_app&app_id=123", "categories": [ {"id": 1, "name": "游戏"}, {"id": 2, "name": "娱乐"} ] } } ``` ### 5. 下载应用 **Endpoint**: `/api.php?action=download_app` **方法**: GET **参数**: | 参数名 | 类型 | 必需 | 说明 | |--------|------|------|------| | app_id | int | 是 | 应用ID | **成功响应**: ```json { "status": "success", "data": { "download_url": "https://.../app.apk", "app_name": "示例应用", "package_name": "com.example.app", "version": "1.0.0", "total_downloads": 1001 } } ``` ### 6. 获取热门应用 **Endpoint**: `/api.php?action=get_hot_apps` **方法**: GET **参数**: | 参数名 | 类型 | 必需 | 说明 | |--------|------|------|------| | limit | int | 否 | 返回数量(默认10) | ### 7. 获取最新应用 **Endpoint**: `/api.php?action=get_new_apps` **方法**: GET **参数**: | 参数名 | 类型 | 必需 | 说明 | |--------|------|------|------| | limit | int | 否 | 返回数量(默认10) | ## 评论系统 ### 1. 添加评论 **Endpoint**: `/api.php?action=add_comment` **方法**: POST **认证**: 需要 **参数**: | 参数名 | 类型 | 必需 | 说明 | |--------|------|------|------| | token | string | 是 | 用户令牌 | | app_id | int | 是 | 应用ID | | content | string | 是 | 评论内容(2-1000字符) | | parent_id | int | 否 | 父评论ID(用于回复) | **成功响应**: ```json { "status": "success", "message": "评论成功", "data": { "comment_id": 456, "app_id": 123 } } ``` ### 2. 获取评论 **Endpoint**: `/api.php?action=get_comments` **方法**: GET **参数**: | 参数名 | 类型 | 必需 | 说明 | |--------|------|------|------| | app_id | int | 是 | 应用ID | | page | int | 否 | 页码(默认1) | | limit | int | 否 | 每页数量(默认20) | **成功响应**: ```json { "status": "success", "data": { "comments": [ { "id": 456, "app_id": 123, "user_id": 789, "username": "user1", "content": "评论内容", "likes": 10, "is_liked": false, "created_at": "2024-01-01 12:00:00", "replies": [ { "id": 457, "parent_id": 456, "user_id": 790, "username": "user2", "content": "回复内容", "likes": 2, "is_liked": false, "created_at": "2024-01-01 12:05:00" } ] } ], "pagination": { "current_page": 1, "per_page": 20, "total": 100, "total_pages": 5 } } } ``` ### 3. 点赞评论 **Endpoint**: `/api.php?action=like_comment` **方法**: POST **认证**: 需要 **参数**: | 参数名 | 类型 | 必需 | 说明 | |--------|------|------|------| | token | string | 是 | 用户令牌 | | app_id | int | 是 | 应用ID | | comment_id | int | 是 | 评论ID | ### 4. 取消点赞评论 **Endpoint**: `/api.php?action=unlike_comment` **方法**: POST **认证**: 需要 **参数**: 同上 ## 搜索与筛选 ### 1. 搜索应用 **Endpoint**: `/api.php?action=search_apps` **方法**: GET **参数**: | 参数名 | 类型 | 必需 | 说明 | |--------|------|------|------| | keyword | string | 是 | 搜索关键词 | | page | int | 否 | 页码(默认1) | | limit | int | 否 | 每页数量(默认20) | | category_id | int | 否 | 分类筛选 | **响应格式**: 同 `get_apps` ### 2. 获取分类列表 **Endpoint**: `/api.php?action=get_categories` **方法**: GET **成功响应**: ```json { "status": "success", "data": { "categories": [ { "id": 1, "name": "游戏", "description": "游戏应用", "app_count": 50 }, { "id": 2, "name": "工具", "description": "实用工具", "app_count": 30 } ], "total": 10 } } ``` ## 用户相关 ### 1. 获取用户上传的应用 **Endpoint**: `/api.php?action=get_user_apps` **方法**: GET/POST **认证**: 查看他人应用不需要,查看自己应用需要token **参数**: | 参数名 | 类型 | 必需 | 说明 | |--------|------|------|------| | token | string | 否 | 查看自己应用时需要 | | user_id | int | 否 | 要查看的用户ID | | page | int | 否 | 页码(默认1) | | limit | int | 否 | 每页数量(默认20) | | status | string | 否 | 应用状态:`all`(默认)、`active`、`pending`、`rejected` | **成功响应**: ```json { "status": "success", "data": { "user_info": { "id": 789, "username": "user1", "stats": { "total": 10, "active": 8, "pending": 1, "rejected": 1 } }, "apps": [...], // 应用列表 "pagination": {...} } } ``` ### 2. 获取用户评论 **Endpoint**: `/api.php?action=get_user_comments` **方法**: GET/POST **认证**: 查看他人评论不需要,查看自己评论需要token **参数**: | 参数名 | 类型 | 必需 | 说明 | |--------|------|------|------| | token | string | 否 | 查看自己评论时需要 | | user_id | int | 否 | 要查看的用户ID | | page | int | 否 | 页码(默认1) | | limit | int | 否 | 每页数量(默认20) | ### 3. 更新用户资料 **Endpoint**: `/api.php?action=update_user_profile` **方法**: POST **认证**: 需要 **参数**: | 参数名 | 类型 | 必需 | 说明 | |--------|------|------|------| | token | string | 是 | 用户令牌 | | avatar | file | 否 | 头像图片 | | display_name | string | 否 | 显示名称 | | bio | string | 否 | 个人简介 | ### 4. 获取用户资料 **Endpoint**: `/api.php?action=get_user_profile` **方法**: GET **参数**: | 参数名 | 类型 | 必需 | 说明 | |--------|------|------|------| | user_id | int | 是 | 用户ID | **成功响应**: ```json { "status": "success", "data": { "id": 789, "username": "user1", "uid": "user_123", "registration_time": "2023-12-01", "avatar": "uploads/avatars/avatar.png", "display_name": "昵称", "bio": "个人简介", "stats": { "total_apps": 10, "total_downloads": 5000, "total_likes": 200 } } } ``` ## 管理员接口 **基础URL**: `/admin.php` ### 1. 管理员登录验证 **Endpoint**: `/admin.php?action=admin_login` **方法**: POST **参数**: | 参数名 | 类型 | 必需 | 说明 | |--------|------|------|------| | token | string | 是 | 用户令牌 | ### 2. 获取待审核应用 **Endpoint**: `/admin.php?action=get_pending_apps` **方法**: GET/POST **认证**: 需要管理员权限 **参数**: | 参数名 | 类型 | 必需 | 说明 | |--------|------|------|------| | token | string | 是 | 管理员令牌 | | page | int | 否 | 页码(默认1) | | limit | int | 否 | 每页数量(默认20) | ### 3. 获取所有应用 **Endpoint**: `/admin.php?action=get_all_apps` **方法**: GET/POST **认证**: 需要管理员权限 **参数**: | 参数名 | 类型 | 必需 | 说明 | |--------|------|------|------| | token | string | 是 | 管理员令牌 | | status | string | 否 | 筛选状态:`all`(默认)、`active`、`pending`、`rejected` | | page | int | 否 | 页码(默认1) | | limit | int | 否 | 每页数量(默认20) | ### 4. 批准应用 **Endpoint**: `/admin.php?action=approve_app` **方法**: POST **认证**: 需要管理员权限 **参数**: | 参数名 | 类型 | 必需 | 说明 | |--------|------|------|------| | token | string | 是 | 管理员令牌 | | app_id | int | 是 | 应用ID | ### 5. 拒绝应用 **Endpoint**: `/admin.php?action=reject_app` **方法**: POST **认证**: 需要管理员权限 **参数**: | 参数名 | 类型 | 必需 | 说明 | |--------|------|------|------| | token | string | 是 | 管理员令牌 | | app_id | int | 是 | 应用ID | | reason | string | 否 | 拒绝原因 | ### 6. 删除应用 **Endpoint**: `/admin.php?action=delete_app` **方法**: POST **认证**: 需要管理员权限 **参数**: | 参数名 | 类型 | 必需 | 说明 | |--------|------|------|------| | token | string | 是 | 管理员令牌 | | app_id | int | 是 | 应用ID | ### 7. 获取统计信息 **Endpoint**: `/admin.php?action=get_stats` **方法**: GET/POST **认证**: 需要管理员权限 **参数**: | 参数名 | 类型 | 必需 | 说明 | |--------|------|------|------| | token | string | 是 | 管理员令牌 | **成功响应**: ```json { "status": "success", "data": { "total_apps": 100, "pending_apps": 5, "active_apps": 90, "total_downloads": 50000, "total_likes": 2000, "today_apps": 3, "today_downloads": 150, "total_uploaders": 50, "top_categories": [ {"name": "游戏", "app_count": 40}, {"name": "工具", "app_count": 30} ] } } ``` ### 8. 获取用户统计 **Endpoint**: `/admin.php?action=get_user_stats` **方法**: GET/POST **认证**: 需要管理员权限 **参数**: | 参数名 | 类型 | 必需 | 说明 | |--------|------|------|------| | token | string | 是 | 管理员令牌 | | page | int | 否 | 页码(默认1) | | limit | int | 否 | 每页数量(默认20) | ### 9. 获取最近活动 **Endpoint**: `/admin.php?action=get_recent_activities` **方法**: GET/POST **认证**: 需要管理员权限 **参数**: | 参数名 | 类型 | 必需 | 说明 | |--------|------|------|------| | token | string | 是 | 管理员令牌 | | limit | int | 否 | 返回数量(默认20) | ## 错误码参考 | 错误码 | 说明 | |--------|------| | 400 | 请求参数错误 | | 401 | 未授权访问 | | 403 | 权限不足 | | 404 | 资源不存在 | | 409 | 资源冲突(如包名已存在) | | 500 | 服务器内部错误 | ## 注意事项 1. 所有需要认证的接口都必须传递有效的 `token` 参数 2. 文件上传接口支持 `multipart/form-data` 格式 3. 分页参数 `page` 从1开始 4. 应用状态说明: - `pending`: 待审核 - `active`: 已通过审核 - `rejected`: 审核被拒 5. 图片上传限制: - 图标:建议 512x512 像素 - 宣传图:建议 1280x720 像素 - 支持格式:jpg, jpeg, png, gif - 大小限制:5MB