# API管理工具PHP
**Repository Path**: cgw0822/xw_api_php_v1
## Basic Information
- **Project Name**: API管理工具PHP
- **Description**: thinkphp框架的api管理系统
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-05-15
- **Last Updated**: 2026-06-10
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# XW API PHP V1
基于 ThinkPHP 8 的 APP 后端管理系统,包含后台管理、用户接口、应用下载页、安装向导、权限菜单、系统配置、论坛、商城、卡密、笔记、用户资料审核等模块。
## 合法使用声明
本项目仅供合法合规的学习、研究、内部管理、业务系统搭建与二次开发使用。
严禁将本项目用于任何违反适用法律法规的活动。使用者应自行确保部署、运营、二次开发、接口调用、数据处理及相关业务行为符合适用法律法规、监管要求和平台规则。
因使用者使用本项目产生的任何法律责任及风险,均由使用者自行承担,与项目作者及贡献者无关。
安装向导中已加入合法使用协议,用户必须阅读并勾选同意后才可以继续安装。不同意本声明者,请立即停止安装和使用本项目。
协议存根:本项目以开源形式发布,仓库中的公开协议文件共同构成本项目的使用约束。后续协议及授权说明以仓库中公开发布的最新版本为准。继续使用本项目即视为同意遵守仓库中最新协议说明。
## 支持作者
如果这个项目帮你节省了时间,或者你希望它继续维护下去,可以自愿请作者喝杯奶茶。
不强制、不影响使用,一块两块是心意,十块八块是动力。感谢每一位愿意支持开源维护的小伙伴。
| 微信支持 | 支付宝支持 |
| --- | --- |
|
|
|
## 功能概览
- 可视化安装向导:访问 `/install` 配置数据库、后端地址和超级管理员。
- 后台权限体系:角色、菜单、管理员账号、管理员日志。
- APP 管理:APP 列表、扩展、下载页、系统通知。
- 用户体系:用户列表、资料审核、徽章与称号。
- 业务模块:论坛、笔记、商城订单、卡密、支付/提现配置。
- 系统配置:邮件、短信、上传、支付、发送日志。
- 接口文档:访问 `/docs/api` 查看接口兼容说明。
- **积分系统**:用户积分余额、积分记录、积分排行榜、每日任务。
- **会员系统**:会员等级、特权管理、VIP开通、开通记录。
- **活动中心**:活动列表、活动详情、参与活动、我的活动。
- **优惠券系统**:优惠券管理、优惠券领取、我的优惠券。
- **工单系统**:用户工单提交、工单回复、工单评价、后台工单管理。
- **反馈系统**:意见反馈提交、反馈列表、后台反馈管理。
- **文件管理**:文件上传、文件列表、文件分享、文件下载。
- **数据统计**:运营概览、用户统计、订单统计、每日数据报表。
- **内容审核**:内容审核队列、关键词过滤、审核记录。
- **消息通知**:系统通知、互动通知、未读标记、通知列表。
- **社交功能**:点赞、收藏、关注、粉丝、互动统计。
- **性能监控**:请求耗时、内存占用、慢查询分析、性能统计。
- **生活工具**:IP查询、天气、手机号归属、身份证验证、快递、汇率、日历、二维码。
- **AI聊天**:支持6大主流AI模型、对话管理、配置管理、后台监控。
## V2 & V3 & V4 & V5 新增功能模块(2026-05-23)
### 用户端 API (61个)
| 模块 | 接口 | 说明 |
|------|------|------|
| **积分** | `GET /user/credit/info` | 获取用户积分信息和等级 |
| | `GET /user/credit/logs` | 获取积分变动记录 |
| | `GET /user/credit/rank` | 获取积分排行榜 |
| **会员** | `GET /user/vip/info` | 获取VIP状态和剩余时间 |
| | `GET /user/vip/levels` | 获取所有会员等级列表 |
| | `POST /user/vip/upgrade` | 开通会员升级服务 |
| | `GET /user/vip/records` | 获取VIP开通记录 |
| **活动** | `GET /user/activity/list` | 获取进行中的活动列表 |
| | `GET /user/activity/detail` | 获取活动详情和奖励 |
| | `POST /user/activity/signup` | 参与活动报名 |
| | `GET /user/activity/my` | 获取我的活动参与记录 |
| **优惠券** | `GET /user/coupon/list` | 获取我的优惠券列表 |
| | `GET /user/coupon/available` | 获取可领取的优惠券 |
| | `POST /user/coupon/receive` | 领取优惠券 |
| **工单** | `POST /user/ticket/create` | 创建工单 |
| | `GET /user/ticket/list` | 获取工单列表 |
| | `GET /user/ticket/detail` | 获取工单详情 |
| | `POST /user/ticket/reply` | 回复工单 |
| | `POST /user/ticket/rate` | 评价工单 |
| **反馈** | `POST /user/feedback/submit` | 提交意见反馈 |
| | `GET /user/feedback/list` | 获取我的反馈列表 |
| **任务** | `GET /user/task/daily` | 获取每日任务列表 |
| | `POST /user/task/complete` | 完成任务获取积分 |
| **文件** | `POST /user/file/upload` | 上传文件 |
| | `GET /user/file/list` | 获取文件列表 |
| | `POST /user/file/share` | 开启/关闭文件分享 |
| | `GET /user/file/shared` | 通过分享码获取文件 |
| | `POST /user/file/delete` | 删除文件 |
| **生活工具** | `GET /user/tool/ip-info` | IP地址信息查询 |
| | `GET /user/tool/weather` | 城市天气查询 |
| | `GET /user/tool/phone-location` | 手机号归属地查询 |
| | `GET /user/tool/idcard-verify` | 身份证验证 |
| | `GET /user/tool/express` | 快递查询 |
| | `GET /user/tool/exchange-rate` | 汇率转换 |
| | `GET /user/tool/calendar` | 日历/节假日查询 |
| | `GET /user/tool/qrcode` | 二维码生成 |
| **通知** | `GET /user/notification/index` | 获取通知列表 |
| | `GET /user/notification/unread-count` | 获取未读数量 |
| | `POST /user/notification/mark-read` | 标记单个已读 |
| | `POST /user/notification/mark-all-read` | 标记全部已读 |
| **社交** | `POST /user/social/like` | 点赞/取消点赞 |
| | `GET /user/social/like-status` | 点赞状态和数量 |
| | `POST /user/social/collect` | 收藏/取消收藏 |
| | `GET /user/social/collect-status` | 收藏状态 |
| | `GET /user/social/my-collections` | 我的收藏列表 |
| | `POST /user/social/follow` | 关注/取消关注 |
| | `GET /user/social/follow-status` | 关注状态和统计 |
| | `GET /user/social/my-follows` | 我的关注列表 |
| | `GET /user/social/my-fans` | 我的粉丝列表 |
| **AI聊天** | `GET /user/ai/config` | 获取AI配置和可用模型 |
| | `POST /user/ai/save_config` | 保存用户AI配置 |
| | `POST /user/ai/chat` | 发送聊天消息 |
| | `GET /user/ai/chats` | 获取聊天会话列表 |
| | `GET /user/ai/chat_detail` | 获取聊天详情和历史记录 |
| | `POST /user/ai/delete_chat` | 删除单个会话 |
| | `POST /user/ai/clear_chats` | 清空所有会话 |
### 后台管理 API (40个)
| 模块 | 接口 | 说明 |
|------|------|------|
| **统计** | `GET /admin/statistics/overview` | 获取运营概览数据 |
| | `GET /admin/statistics/user` | 获取用户数据趋势 |
| | `GET /admin/statistics/order` | 获取订单数据趋势 |
| **活动** | `GET /admin/activity-mgmt/index` | 活动列表管理 |
| | `POST /admin/activity-mgmt/save` | 添加/编辑活动 |
| | `POST /admin/activity-mgmt/delete` | 删除活动 |
| **优惠券** | `GET /admin/coupon-mgmt/index` | 优惠券列表管理 |
| | `POST /admin/coupon-mgmt/save` | 添加/编辑优惠券 |
| | `POST /admin/coupon-mgmt/delete` | 删除优惠券 |
| **工单** | `GET /admin/ticket-mgmt/index` | 工单列表管理 |
| | `GET /admin/ticket-mgmt/detail` | 工单详情和回复 |
| | `POST /admin/ticket-mgmt/reply` | 管理员回复工单 |
| | `POST /admin/ticket-mgmt/close` | 关闭工单 |
| **反馈** | `GET /admin/feedback-mgmt/index` | 反馈列表管理 |
| | `POST /admin/feedback-mgmt/reply` | 管理员回复反馈 |
| | `POST /admin/feedback-mgmt/delete` | 删除反馈 |
| **监控** | `GET /admin/monitor/stats` | 性能统计概览 |
| | `GET /admin/monitor/slow-requests` | 慢查询列表 |
| | `POST /admin/monitor/cleanup` | 清理历史监控数据 |
| **通知** | `GET /admin/notification/index` | 通知列表 |
| | `POST /admin/notification/send` | 发送单个通知 |
| | `POST /admin/notification/send_batch` | 批量发送通知 |
| | `POST /admin/notification/delete` | 删除通知 |
| **积分** | `GET /admin/credit/index` | 用户积分列表 |
| | `GET /admin/credit/logs` | 积分变动记录 |
| | `POST /admin/credit/add` | 手动增加积分 |
| | `POST /admin/credit/reduce` | 手动扣减积分 |
| **内容审核** | `GET /admin/audit/index` | 审核列表 |
| | `POST /admin/audit/approve` | 审核通过 |
| | `POST /admin/audit/reject` | 审核拒绝 |
| | `POST /admin/audit/delete` | 删除审核记录 |
| **会员** | `GET /admin/vip/levels` | 会员等级列表 |
| | `POST /admin/vip/save_level` | 保存等级 |
| | `POST /admin/vip/delete_level` | 删除等级 |
| | `GET /admin/vip/records` | 会员记录列表 |
| | `POST /admin/vip/set_vip` | 手动设置会员 |
| **AI配置** | `GET /admin/ai-config/index` | AI配置列表 |
| | `POST /admin/ai-config/save` | 保存AI配置 |
| | `POST /admin/ai-config/delete` | 删除AI配置 |
| | `GET /admin/ai-config/stats` | 聊天统计数据 |
| | `GET /admin/ai-config/chat_logs` | 聊天记录列表 |
| | `GET /admin/ai-config/chat_log_detail` | 聊天记录详情 |
| | `POST /admin/ai-config/delete_chat_log` | 删除聊天记录 |
### 数据库升级
从 V1 升级到 V5 需要执行三个升级脚本:
1. `database/upgrade_v2.sql` - V2 模块表(18张)
2. `database/upgrade_v3.sql` - V3 通知/社交/监控表(6张)
3. `database/upgrade_v5_ai.sql` - V5 AI聊天表(4张)
| 表名 | 说明 |
|------|------|
| `user_credits` | 用户积分表 |
| `user_credit_logs` | 积分变动记录表 |
| `vip_levels` | 会员等级表 |
| `user_vip_records` | 会员开通记录表 |
| `activities` | 活动表 |
| `activity_records` | 活动参与记录表 |
| `coupons` | 优惠券表 |
| `user_coupons` | 用户优惠券表 |
| `tickets` | 工单表 |
| `ticket_replies` | 工单回复表 |
| `feedbacks` | 意见反馈表 |
| `user_files` | 用户文件管理表 |
| `content_audits` | 内容审核表 |
| `filter_words` | 过滤词表 |
| `statistics_daily` | 每日统计表 |
| `daily_tasks` | 每日任务表 |
| `user_daily_task_logs` | 用户任务记录表 |
| `share_records` | 分享记录表 |
| `user_notifications` | 用户通知表 |
| `user_likes` | 点赞表 |
| `user_collections` | 收藏表 |
| `user_follows` | 用户关注表 |
| `performance_monitor` | 性能监控表 |
| `ai_configs` | AI配置表 |
| `user_ai_configs` | 用户AI配置表 |
| `ai_chats` | AI聊天会话表 |
| `ai_chat_messages` | AI聊天消息表 |
### 升级步骤
1. 备份现有数据库
2. 执行 `database/upgrade_v2.sql` 升级脚本
3. 执行 `database/upgrade_v3.sql` 升级脚本
4. 执行 `database/upgrade_v5_ai.sql` 升级脚本
5. 清除运行时缓存:`rm -rf runtime/cache/*`
6. 重启 PHP 服务
## 环境要求
- PHP >= 8.0
- MySQL >= 5.7,推荐 MySQL 8.0
- Nginx 或 Apache
- Composer
- PHP 扩展:PDO、pdo_mysql、mbstring、openssl、fileinfo、curl
## 宝塔面板部署教程
### 1. 创建站点
登录宝塔面板 → **网站** → **添加站点**:
| 配置项 | 填写内容 |
|--------|---------|
| 域名 | 你的域名或 IP 地址 |
| 根目录 | 选择你拉取的项目目录 |
| PHP 版本 | 选择 **PHP 8.0 及以上** |
| 数据库 | 选择 **MySQL**,创建数据库(记住数据库名、用户名、密码) |
### 2. 安装 PHP 扩展
宝塔面板 → **软件商店** → 找到 **PHP-8.x** → 点击 **设置**:
1. 选择 **安装扩展** 标签页
2. 找到 **fileinfo**,点击 **安装**(等待安装完成)
3. 确认以下扩展已启用:`PDO`、`pdo_mysql`、`mbstring`、`openssl`、`fileinfo`、`curl`
### 3. 解除禁用函数
项目依赖 Composer 安装,需要用到部分被宝塔默认禁用的函数。
宝塔面板 → **软件商店** → **PHP-8.x** → **设置** → **禁用函数** 标签页:
在列表中搜索以下函数,找到后点击 **删除**(解除禁用):
| 函数 | 用途 |
|------|------|
| `putenv` | Composer 环境变量管理 |
| `proc_open` | Composer 解压安装依赖包 |
解除后点击 **重启 PHP** 生效。
> 只需在 PHP-CLI 配置中解除即可,不影响网站安全。
### 4. 设置运行目录
在站点设置中:
1. 进入 **网站** → 点击你的站点 → **设置**
2. 选择 **网站目录**
3. 将 **运行目录** 修改为 `/public`
4. 点击 **保存**
### 5. 配置伪静态
站点设置 → **伪静态** → 选择 **ThinkPHP 规则** → 点击 **保存**。
### 6. 拉取代码并安装依赖
通过 **文件** 管理或 SSH 终端将代码上传到站点根目录,然后执行:
```bash
# 进入站点根目录
cd /www/wwwroot/你的目录
# 安装 Composer 依赖(如未安装 Composer,需先安装)
composer install
# 设置目录权限
chown -R www:www runtime public/storage
chmod -R 755 runtime public/storage
```
> 如果提示 `fileinfo` 扩展缺失,请回到第 2 步确认扩展已正确安装并重启 PHP。
### 7. 完成安装
浏览器访问:
```text
http://你的域名/install
```
按照安装向导填写数据库信息、管理员账号密码,完成安装后自动跳转到后台登录页。
### 8. 设置定时任务(推荐)
宝塔面板 → **计划任务** → **添加任务**:
| 配置项 | 填写内容 |
|--------|---------|
| 任务类型 | **Shell 脚本** |
| 任务名称 | `xw_api 系统维护` |
| 执行周期 | **每分钟**(N 分钟:1) |
| 脚本内容 | `php /www/wwwroot/你的目录/cron/maintenance.php` |
该任务会每分钟执行一次,自动关闭超时未支付订单、清理过期验证码和 Token。
### 常见宝塔部署问题
**Q:访问站点显示 404**
检查站点运行目录是否设置为 `/public`,以及伪静态规则是否选择了 ThinkPHP。
**Q:`composer install` 报 `fileinfo` 缺失**
回到宝塔 PHP 设置 → 安装扩展 → 安装 fileinfo,安装后重启 PHP 服务。
**Q:`composer install` 报 `putenv()` 或 `proc_open()` 未定义**
宝塔默认禁用了这些函数。回到宝塔 PHP 设置 → 禁用函数,搜索并删除 `putenv` 和 `proc_open`,重启 PHP 后重试。
**Q:安装页一直转圈/白屏**
检查数据库连接信息是否正确,确认 MySQL 服务已启动。
## 快速部署
1. 拉取代码:
```bash
git clone https://gitee.com/cgw0822/xw_api_php_v1.git
cd xw_api_php_v1
```
2. 安装依赖:
```bash
composer install
```
3. 配置运行目录权限:
```bash
chown -R www:www runtime public/storage
chmod -R 755 runtime public/storage
```
4. Web 站点运行目录指向:
```text
public
```
5. 打开安装页:
```text
http://你的域名/install
```
安装页会完成数据库连接、数据表初始化、后台超级管理员创建、`.env` 写入和 `runtime/install.lock` 生成。
## 安装说明
首次访问项目时,如果系统未安装,会自动跳转到 `/install`。
安装页需要填写:
- 数据库地址、端口、数据库名、用户名、密码、字符集。
- 是否自动创建数据库。
- 后端访问地址,例如 `https://api.example.com`。
- 超级管理员账号和密码。
- 阅读并同意合法使用协议,承诺不用于违法犯罪或违规活动。
安装成功后会跳转到:
```text
/admin/login/index
```
如果需要重新安装,请谨慎删除:
```text
runtime/install.lock
```
同时确认是否需要清空或更换数据库,避免旧数据继续生效。
## 配置文件
项目使用 `.env` 保存运行配置,仓库不会提交真实 `.env`。
示例配置见:
```text
.example.env
```
主要配置项:
```env
APP_DEBUG = true
DB_TYPE = mysql
DB_HOST = 127.0.0.1
DB_NAME = your_database
DB_USER = your_user
DB_PASS = your_password
DB_PORT = 3306
DB_CHARSET = utf8mb4
BACKEND_URL = https://api.example.com
DEFAULT_LANG = zh-cn
```
## Nginx 伪静态
站点根目录应指向 `public`,推荐 Nginx 配置:
```nginx
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}
```
### Nginx 安全配置建议
推荐补充以下安全配置,防止敏感文件泄露和非法访问:
```nginx
# 禁止访问敏感文件和目录
location ~* /(runtime|\.env|\.git|\.svn|composer\.(json|lock)|vendor|thinkphp) {
deny all;
}
# 禁止直接访问 .sql .log .md 等文件
location ~* \.(sql|log|env|yml)$ {
deny all;
}
# 禁止存储目录执行 PHP
location ~ ^/storage/.*\.php$ {
deny all;
}
```
如果使用宝塔面板,可选择 ThinkPHP 伪静态规则。
## 常用入口
- 首页跳转:`/`
- 安装向导:`/install`
- 后台登录:`/admin/login/index`
- 后台快捷入口:`/admin`
- 接口文档:`/docs/api`
- 通用接口:`/api/:action`
- 用户接口:`/user/:action`、`/user/:controller/:action`
- 下载页:`/code/:code`
- 下载跳转:`/code/:code/download`
- 扩展页:`/expand/:appid`
## 目录结构
```text
app/ 应用代码
app/controller/admin/ 后台控制器
app/controller/user/ 用户接口控制器
app/service/ 业务服务与安装服务
config/ ThinkPHP 配置
database/ 数据库结构文件
docs/ 文档
public/ Web 入口与静态资源
route/ 路由配置
runtime/ 运行时缓存、日志、安装锁
view/ 页面模板
```
## 后台权限
安装器会初始化:
- `admin_roles`
- `admin_menus`
- `admin_role_menu`
- 超级管理员账号
超级管理员默认绑定完整菜单权限。已安装项目登录后台时,也会自动补齐缺失菜单和超级管理员权限绑定。
## 开发命令
启动内置服务:
```bash
php think run
```
查看路由:
```bash
php think route:list
```
检查 PHP 语法:
```bash
find app route config -name "*.php" -print -exec php -l {} \;
```
## 定时任务
建议通过 crontab 配置以下定时任务确保系统正常运行:
```bash
# 每分钟执行一次系统维护(关闭超时订单、清理过期 Token/验证码/日志)
* * * * * php /你的项目路径/cron/maintenance.php
```
## 上传与运行时文件
以下文件或目录不会提交到仓库:
- `.env`
- `vendor/`
- `runtime/*`
- `public/.user.ini`
- `composer.lock`
部署新环境时需要执行 `composer install` 重新安装依赖。
## 常见问题
### 安装时报 `.env Permission denied`
说明 PHP 运行用户没有权限写 `.env` 或项目根目录。请确认项目目录属于 Web 运行用户,例如:
```bash
chown -R www:www /www/wwwroot/你的项目目录
```
当前安装器会优先使用临时文件替换 `.env`,正常情况下只要项目根目录可写即可。
### 后台菜单不完整
退出后台后重新登录,系统会自动同步完整菜单和超级管理员权限。
也可以进入后台的菜单管理、角色管理检查菜单绑定关系。
### 静态资源 404
确认站点运行目录是否指向 `public`,并确认 `public/static` 已存在。
### 数据库连接失败
检查数据库地址、端口、账号密码、数据库名和 MySQL 远程访问权限。如果安装页勾选“自动创建数据库”,数据库账号必须拥有创建数据库权限。
## License
本项目基于 ThinkPHP 8 开发,框架遵循 Apache-2.0 协议。项目业务代码请按实际授权范围使用。