更新 README.md
This commit is contained in:
838
README.md
838
README.md
@@ -2,8 +2,836 @@
|
|||||||
|
|
||||||
为Fuxsto-v4虚拟主机系统版本归档,发布时间:2025-3-7
|
为Fuxsto-v4虚拟主机系统版本归档,发布时间:2025-3-7
|
||||||
|
|
||||||
使用方法:
|
# Fuxsto Host V4 详细使用文档
|
||||||
- 1.git clone https://git.hztecha.com/admin/Fuxsto-V4.git
|
|
||||||
- 2.然后放入网站目录
|
## 📋 目录
|
||||||
- 3.启动nginx或apache(请注意设置伪静态,文件中用apache的伪静态,可转成nginx:https://www.toolnb.com/tools/rewriteTools.html)
|
- [项目简介](#项目简介)
|
||||||
- 其他的自己摸索,我只是发布,希望有人能写好MD文档发我,感激不尽)
|
- [系统要求](#系统要求)
|
||||||
|
- [安装部署](#安装部署)
|
||||||
|
- [数据库配置](#数据库配置)
|
||||||
|
- [功能模块详解](#功能模块详解)
|
||||||
|
- [API接口文档](#api接口文档)
|
||||||
|
- [管理后台使用](#管理后台使用)
|
||||||
|
- [产品模块开发](#产品模块开发)
|
||||||
|
- [系统维护](#系统维护)
|
||||||
|
- [常见问题](#常见问题)
|
||||||
|
- [更新日志](#更新日志)
|
||||||
|
|
||||||
|
## 🚀 项目简介
|
||||||
|
|
||||||
|
Fuxsto Host V4 是一个基于 PHP + MySQL 的虚拟主机管理系统,提供用户注册、产品购买、业务管理等功能。系统采用前后端分离架构,前端使用 Vue.js,后端使用 PHP。
|
||||||
|
|
||||||
|
### 主要特性
|
||||||
|
- 🔐 用户认证系统(集成第三方登录)
|
||||||
|
- 💰 积分和余额双货币系统
|
||||||
|
- 📦 产品管理和购买系统
|
||||||
|
- ⏰ 自动到期提醒和清理
|
||||||
|
- 📊 用户仪表板
|
||||||
|
- 🔧 模块化产品架构
|
||||||
|
- 📧 邮件通知系统
|
||||||
|
|
||||||
|
## 💻 系统要求
|
||||||
|
|
||||||
|
### 服务器环境
|
||||||
|
- **Web服务器**: Apache 2.4+ 或 Nginx 1.18+
|
||||||
|
- **PHP版本**: PHP 7.4+ (推荐 PHP 8.0+)
|
||||||
|
- **数据库**: MySQL 5.7+ 或 MariaDB 10.3+
|
||||||
|
- **内存**: 最小 512MB,推荐 1GB+
|
||||||
|
- **存储**: 最小 1GB 可用空间
|
||||||
|
|
||||||
|
### PHP扩展要求
|
||||||
|
```bash
|
||||||
|
# 必需扩展
|
||||||
|
php-mysqli
|
||||||
|
php-json
|
||||||
|
php-session
|
||||||
|
php-curl
|
||||||
|
php-mbstring
|
||||||
|
|
||||||
|
# 可选扩展(推荐)
|
||||||
|
php-gd
|
||||||
|
php-zip
|
||||||
|
php-xml
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🛠️ 安装部署
|
||||||
|
|
||||||
|
### 1. 下载项目
|
||||||
|
```bash
|
||||||
|
# 方式一:Git克隆
|
||||||
|
git clone https://git.hztecha.com/admin/Fuxsto-V4.git
|
||||||
|
cd Fuxsto-V4
|
||||||
|
|
||||||
|
# 方式二:直接下载解压
|
||||||
|
# 下载后解压到网站根目录
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. 文件权限设置
|
||||||
|
```bash
|
||||||
|
# Linux/Unix 系统
|
||||||
|
chmod -R 755 /path/to/fuxsto-v4/
|
||||||
|
chmod -R 777 /path/to/fuxsto-v4/Log/
|
||||||
|
|
||||||
|
# Windows 系统
|
||||||
|
# 确保 IIS_IUSRS 或 IUSR 用户有读写权限
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Web服务器配置
|
||||||
|
|
||||||
|
#### Apache 配置
|
||||||
|
```apache
|
||||||
|
# .htaccess 文件(项目根目录)
|
||||||
|
RewriteEngine On
|
||||||
|
|
||||||
|
# 处理前端路由
|
||||||
|
RewriteCond %{REQUEST_FILENAME} !-f
|
||||||
|
RewriteCond %{REQUEST_FILENAME} !-d
|
||||||
|
RewriteCond %{REQUEST_URI} ^/Dashboard
|
||||||
|
RewriteRule ^Dashboard/(.*)$ /Dashboard/index.html [L]
|
||||||
|
|
||||||
|
# API路由重写
|
||||||
|
RewriteCond %{REQUEST_FILENAME} !-f
|
||||||
|
RewriteCond %{REQUEST_FILENAME} !-d
|
||||||
|
RewriteRule ^Main/(.+)$ /Main/$1/index.php [L]
|
||||||
|
|
||||||
|
# 静态文件缓存
|
||||||
|
<FilesMatch "\.(css|js|png|jpg|jpeg|gif|ico|svg)$">
|
||||||
|
ExpiresActive On
|
||||||
|
ExpiresDefault "access plus 1 month"
|
||||||
|
</FilesMatch>
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Nginx 配置
|
||||||
|
```nginx
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name your-domain.com;
|
||||||
|
root /path/to/fuxsto-v4;
|
||||||
|
index index.html index.php;
|
||||||
|
|
||||||
|
# 前端路由处理
|
||||||
|
location /Dashboard {
|
||||||
|
try_files $uri $uri/ /Dashboard/index.html;
|
||||||
|
}
|
||||||
|
|
||||||
|
# API路由处理
|
||||||
|
location ~ ^/Main/(.+)$ {
|
||||||
|
try_files $uri /Main/$1/index.php;
|
||||||
|
}
|
||||||
|
|
||||||
|
# PHP处理
|
||||||
|
location ~ \.php$ {
|
||||||
|
fastcgi_pass 127.0.0.1:9000;
|
||||||
|
fastcgi_index index.php;
|
||||||
|
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||||
|
include fastcgi_params;
|
||||||
|
}
|
||||||
|
|
||||||
|
# 静态文件缓存
|
||||||
|
location ~* \.(css|js|png|jpg|jpeg|gif|ico|svg)$ {
|
||||||
|
expires 1M;
|
||||||
|
add_header Cache-Control "public, immutable";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🗄️ 数据库配置
|
||||||
|
|
||||||
|
### 1. 创建数据库
|
||||||
|
```sql
|
||||||
|
CREATE DATABASE fuxstohostv4 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. 创建数据表
|
||||||
|
|
||||||
|
#### 用户表 (users)
|
||||||
|
```sql
|
||||||
|
CREATE TABLE `users` (
|
||||||
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`username` varchar(50) NOT NULL UNIQUE,
|
||||||
|
`password` varchar(255) NOT NULL,
|
||||||
|
`qq` varchar(20) DEFAULT NULL,
|
||||||
|
`score` int(11) DEFAULT 100,
|
||||||
|
`balance` decimal(10,2) DEFAULT 0.00,
|
||||||
|
`status` enum('active','inactive','banned') DEFAULT 'active',
|
||||||
|
`last_sign_in_date` date DEFAULT NULL,
|
||||||
|
`register_time` timestamp DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
`register_ip` varchar(45) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_username` (`username`),
|
||||||
|
KEY `idx_status` (`status`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 产品表 (products)
|
||||||
|
```sql
|
||||||
|
CREATE TABLE `products` (
|
||||||
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`product_id` varchar(50) NOT NULL UNIQUE,
|
||||||
|
`name` varchar(100) NOT NULL,
|
||||||
|
`description` text,
|
||||||
|
`price` decimal(10,2) NOT NULL,
|
||||||
|
`currency_type` enum('score','balance') DEFAULT 'score',
|
||||||
|
`stock` int(11) DEFAULT 0,
|
||||||
|
`limit_per_user` int(11) DEFAULT 1,
|
||||||
|
`subscription_period` int(11) DEFAULT 30,
|
||||||
|
`module` varchar(50) NOT NULL,
|
||||||
|
`category_1` varchar(50) DEFAULT NULL,
|
||||||
|
`category_2` varchar(50) DEFAULT NULL,
|
||||||
|
`sort_order` int(11) DEFAULT 0,
|
||||||
|
`status` enum('visible','hidden') DEFAULT 'visible',
|
||||||
|
`created_at` timestamp DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
`updated_at` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_product_id` (`product_id`),
|
||||||
|
KEY `idx_status` (`status`),
|
||||||
|
KEY `idx_category` (`category_1`, `category_2`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 购买记录表 (purchases)
|
||||||
|
```sql
|
||||||
|
CREATE TABLE `purchases` (
|
||||||
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`user_id` int(11) NOT NULL,
|
||||||
|
`product_id` varchar(50) NOT NULL,
|
||||||
|
`purchase_id` varchar(50) NOT NULL UNIQUE,
|
||||||
|
`name` varchar(100) NOT NULL,
|
||||||
|
`purchase_time` timestamp DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
`expiry_time` datetime NOT NULL,
|
||||||
|
`status` enum('pending_activation','activated','expiring','expired') DEFAULT 'pending_activation',
|
||||||
|
`subscription_period` int(11) NOT NULL,
|
||||||
|
`extra_data` text,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_user_id` (`user_id`),
|
||||||
|
KEY `idx_purchase_id` (`purchase_id`),
|
||||||
|
KEY `idx_status` (`status`),
|
||||||
|
KEY `idx_expiry` (`expiry_time`),
|
||||||
|
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. 修改数据库连接配置
|
||||||
|
|
||||||
|
编辑 <mcfile name="Hv4.Function.php" path="Main/Hv4.Function.php"></mcfile> 文件:
|
||||||
|
|
||||||
|
```php
|
||||||
|
function 数据库运行($sql) {
|
||||||
|
// 数据库连接参数 - 请修改为您的数据库信息
|
||||||
|
$servername = "localhost"; // 数据库服务器地址
|
||||||
|
$username = "your_db_username"; // 数据库用户名
|
||||||
|
$password = "your_db_password"; // 数据库密码
|
||||||
|
$dbname = "fuxstohostv4"; // 数据库名称
|
||||||
|
|
||||||
|
// 其余代码保持不变...
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔧 功能模块详解
|
||||||
|
|
||||||
|
### 1. 用户认证系统
|
||||||
|
|
||||||
|
#### 登录流程
|
||||||
|
1. 用户访问首页,点击登录按钮
|
||||||
|
2. 系统重定向到第三方认证服务 (auth.fuxsto.cn)
|
||||||
|
3. 用户完成认证后回调到 <mcfile name="CallBack.php" path="Main/Login/CallBack.php"></mcfile>
|
||||||
|
4. 系统自动注册新用户或登录现有用户
|
||||||
|
5. 设置 Session 并跳转到 Dashboard
|
||||||
|
|
||||||
|
#### 认证配置
|
||||||
|
在 <mcfile name="index.php" path="Main/Login/index.php"></mcfile> 中配置:
|
||||||
|
```php
|
||||||
|
$AppName = "Fuxsto Host V5"; // 应用名称
|
||||||
|
$AppLogo = "https://hv4.fuxsto.cn/favicon.ico"; // 应用图标
|
||||||
|
$AppInfo = "未注册的账号会自动注册!"; // 应用说明
|
||||||
|
$AppUrl = "https://hv4.fuxsto.cn"; // 应用地址
|
||||||
|
$AppCallBackUrl = "https://hv4.fuxsto.cn/Main/Login/CallBack.php"; // 回调地址
|
||||||
|
$AppField = array("qq","id","username","password","register_time","register_ip"); // 需要的字段
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. 积分和余额系统
|
||||||
|
|
||||||
|
#### 货币类型
|
||||||
|
- **积分 (score)**: 通过签到获得,用于购买免费产品
|
||||||
|
- **余额 (balance)**: 充值获得,用于购买付费产品
|
||||||
|
|
||||||
|
#### 签到系统
|
||||||
|
- 每日签到获得 80-200 随机积分
|
||||||
|
- 防止重复签到机制
|
||||||
|
- 签到状态检查:<mcfile name="CheckIn/index.php" path="Main/CheckIn/index.php"></mcfile>
|
||||||
|
|
||||||
|
### 3. 产品管理系统
|
||||||
|
|
||||||
|
#### 产品结构
|
||||||
|
```php
|
||||||
|
// 产品基本信息
|
||||||
|
$产品元数据 = [
|
||||||
|
'product_id' => 'unique_product_id',
|
||||||
|
'name' => '产品名称',
|
||||||
|
'price' => 100,
|
||||||
|
'currency_type' => 'score', // 或 'balance'
|
||||||
|
'stock' => 10,
|
||||||
|
'limit_per_user' => 1,
|
||||||
|
'subscription_period' => 30, // 天数
|
||||||
|
'module' => 'HK-FREE-EP', // 产品模块
|
||||||
|
'category_1' => '虚拟主机',
|
||||||
|
'category_2' => '免费版'
|
||||||
|
];
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 购买流程
|
||||||
|
1. 用户选择产品
|
||||||
|
2. 系统检查库存和限购
|
||||||
|
3. 验证用户余额/积分
|
||||||
|
4. 扣除费用
|
||||||
|
5. 调用产品模块开通服务
|
||||||
|
6. 记录购买信息
|
||||||
|
7. 更新库存
|
||||||
|
|
||||||
|
### 4. 产品模块系统
|
||||||
|
|
||||||
|
#### 模块结构
|
||||||
|
```
|
||||||
|
ProductsModule/
|
||||||
|
└── HK-FREE-EP/ # 产品模块目录
|
||||||
|
├── Main.php # 主要功能文件
|
||||||
|
└── s.html # 产品展示页面
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 模块必需函数
|
||||||
|
```php
|
||||||
|
// Main.php 中必须实现的函数
|
||||||
|
|
||||||
|
// 开通产品
|
||||||
|
function 开通产品($产品元数据, $产品唯一标识符) {
|
||||||
|
// 实现产品开通逻辑
|
||||||
|
return [
|
||||||
|
'code' => 200,
|
||||||
|
'msg' => '开通成功',
|
||||||
|
'data' => [] // 额外数据
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
// 展示产品
|
||||||
|
function 展示产品($业务元数据, $产品元数据) {
|
||||||
|
// 返回产品展示页面HTML
|
||||||
|
return file_get_contents('s.html');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除业务
|
||||||
|
function 删除业务($业务元数据, $产品元数据) {
|
||||||
|
// 实现业务删除逻辑
|
||||||
|
return ['code' => 200, 'msg' => '删除成功'];
|
||||||
|
}
|
||||||
|
|
||||||
|
// 生成唯一字符串
|
||||||
|
function 唯一字符串() {
|
||||||
|
return 唯一随机字符串(10);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📡 API接口文档
|
||||||
|
|
||||||
|
### 基础响应格式
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"code": 200,
|
||||||
|
"msg": "操作成功或数据内容"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 用户相关接口
|
||||||
|
|
||||||
|
#### 1. 用户信息获取
|
||||||
|
- **接口**: `GET /Main/GetInfo/`
|
||||||
|
- **说明**: 获取当前登录用户信息
|
||||||
|
- **响应**:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"code": 200,
|
||||||
|
"msg": {
|
||||||
|
"id": 1,
|
||||||
|
"username": "testuser",
|
||||||
|
"qq": "123456789",
|
||||||
|
"score": 150,
|
||||||
|
"balance": "10.50",
|
||||||
|
"can_check": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2. 每日签到
|
||||||
|
- **接口**: `POST /Main/CheckIn/`
|
||||||
|
- **说明**: 用户每日签到获取积分
|
||||||
|
- **响应**:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"code": 200,
|
||||||
|
"msg": "获得积分 120"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 产品相关接口
|
||||||
|
|
||||||
|
#### 1. 获取商品列表
|
||||||
|
- **接口**: `GET /Main/GetGoods/`
|
||||||
|
- **说明**: 获取所有可见商品,按分类组织
|
||||||
|
- **响应**:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"虚拟主机": {
|
||||||
|
"免费版": [
|
||||||
|
{
|
||||||
|
"product_id": "hk-free-001",
|
||||||
|
"name": "香港免费主机",
|
||||||
|
"price": "100",
|
||||||
|
"currency_type": "积分",
|
||||||
|
"stock": 10,
|
||||||
|
"description": "免费虚拟主机"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2. 购买商品
|
||||||
|
- **接口**: `POST /Main/BuyGoods/`
|
||||||
|
- **参数**:
|
||||||
|
- `product_id`: 产品ID
|
||||||
|
- **响应**:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"code": 200,
|
||||||
|
"msg": "开通成功"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 3. 获取用户产品
|
||||||
|
- **接口**: `GET /Main/GetProducts/`
|
||||||
|
- **说明**: 获取用户已购买的产品列表
|
||||||
|
- **响应**:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"code": 200,
|
||||||
|
"msg": [
|
||||||
|
{
|
||||||
|
"purchase_id": "abc123",
|
||||||
|
"name": "香港免费主机",
|
||||||
|
"purchase_time": "2025-01-01 10:00:00",
|
||||||
|
"expiry_time": "2025-01-31 10:00:00",
|
||||||
|
"status": "activated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 4. 查看产品详情
|
||||||
|
- **接口**: `GET /Main/ViewProduct/?id=purchase_id`
|
||||||
|
- **说明**: 查看具体产品的详细信息和管理界面
|
||||||
|
- **响应**: 返回产品模块的HTML页面
|
||||||
|
|
||||||
|
## 🎛️ 管理后台使用
|
||||||
|
|
||||||
|
### 访问地址
|
||||||
|
- 前台首页: `http://your-domain.com/`
|
||||||
|
- 用户仪表板: `http://your-domain.com/Dashboard/`
|
||||||
|
|
||||||
|
### Dashboard 功能
|
||||||
|
|
||||||
|
#### 1. 用户中心
|
||||||
|
- 显示用户基本信息
|
||||||
|
- 积分和余额显示
|
||||||
|
- 每日签到功能
|
||||||
|
|
||||||
|
#### 2. 产品管理
|
||||||
|
- 查看已购买产品
|
||||||
|
- 产品状态监控
|
||||||
|
- 到期时间提醒
|
||||||
|
|
||||||
|
#### 3. 商品购买
|
||||||
|
- 浏览可用商品
|
||||||
|
- 按分类筛选
|
||||||
|
- 一键购买功能
|
||||||
|
|
||||||
|
### 前端技术栈
|
||||||
|
- **Vue.js 3**: 主框架
|
||||||
|
- **Element Plus**: UI组件库
|
||||||
|
- **Axios**: HTTP请求库
|
||||||
|
- **Varlet UI**: 移动端组件库
|
||||||
|
|
||||||
|
## 🔨 产品模块开发
|
||||||
|
|
||||||
|
### 创建新产品模块
|
||||||
|
|
||||||
|
#### 1. 创建模块目录
|
||||||
|
```bash
|
||||||
|
mkdir ProductsModule/YOUR-MODULE-NAME
|
||||||
|
cd ProductsModule/YOUR-MODULE-NAME
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2. 创建 Main.php
|
||||||
|
```php
|
||||||
|
<?php
|
||||||
|
// 开通产品函数
|
||||||
|
function 开通产品($产品元数据, $产品唯一标识符) {
|
||||||
|
// 在这里实现您的产品开通逻辑
|
||||||
|
// 例如:调用第三方API、创建账户等
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 示例:创建虚拟主机账户
|
||||||
|
$result = createHostingAccount([
|
||||||
|
'username' => $产品唯一标识符,
|
||||||
|
'domain' => $产品元数据['name'],
|
||||||
|
'plan' => 'free'
|
||||||
|
]);
|
||||||
|
|
||||||
|
if ($result['success']) {
|
||||||
|
return [
|
||||||
|
'code' => 200,
|
||||||
|
'msg' => '开通成功',
|
||||||
|
'data' => [
|
||||||
|
'username' => $result['username'],
|
||||||
|
'password' => $result['password'],
|
||||||
|
'control_panel' => $result['cpanel_url']
|
||||||
|
]
|
||||||
|
];
|
||||||
|
} else {
|
||||||
|
return [
|
||||||
|
'code' => 500,
|
||||||
|
'msg' => '开通失败:' . $result['error']
|
||||||
|
];
|
||||||
|
}
|
||||||
|
} catch (Exception $e) {
|
||||||
|
return [
|
||||||
|
'code' => 500,
|
||||||
|
'msg' => '系统错误:' . $e->getMessage()
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 展示产品函数
|
||||||
|
function 展示产品($业务元数据, $产品元数据) {
|
||||||
|
// 读取展示页面模板
|
||||||
|
$html = file_get_contents(__DIR__ . '/s.html');
|
||||||
|
|
||||||
|
// 替换模板变量
|
||||||
|
$html = str_replace('<业务元数据>', json_encode($业务元数据), $html);
|
||||||
|
$html = str_replace('<产品元数据>', json_encode($产品元数据), $html);
|
||||||
|
|
||||||
|
return $html;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除业务函数
|
||||||
|
function 删除业务($业务元数据, $产品元数据) {
|
||||||
|
try {
|
||||||
|
// 实现删除逻辑
|
||||||
|
$extra_data = json_decode($业务元数据['extra_data'], true);
|
||||||
|
|
||||||
|
// 示例:删除虚拟主机账户
|
||||||
|
$result = deleteHostingAccount($extra_data['username']);
|
||||||
|
|
||||||
|
return [
|
||||||
|
'code' => 200,
|
||||||
|
'msg' => '删除成功'
|
||||||
|
];
|
||||||
|
} catch (Exception $e) {
|
||||||
|
return [
|
||||||
|
'code' => 500,
|
||||||
|
'msg' => '删除失败:' . $e->getMessage()
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 生成唯一字符串
|
||||||
|
function 唯一字符串() {
|
||||||
|
return 唯一随机字符串(10);
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 3. 创建展示页面 s.html
|
||||||
|
```html
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="zh-CN">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>产品管理</title>
|
||||||
|
<script src="https://cdn.fss.fuxsto.cn/d/vue@3/dist/vue.global.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="app">
|
||||||
|
<div class="product-info">
|
||||||
|
<h2>{{ productName }}</h2>
|
||||||
|
<p>购买时间: {{ purchaseTime }}</p>
|
||||||
|
<p>到期时间: {{ expiryTime }}</p>
|
||||||
|
<p>状态: {{ status }}</p>
|
||||||
|
|
||||||
|
<div v-if="productData.username">
|
||||||
|
<h3>账户信息</h3>
|
||||||
|
<p>用户名: {{ productData.username }}</p>
|
||||||
|
<p>密码: {{ productData.password }}</p>
|
||||||
|
<a :href="productData.control_panel" target="_blank">控制面板</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
const { createApp } = Vue;
|
||||||
|
|
||||||
|
createApp({
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
businessData: <业务元数据>,
|
||||||
|
productMeta: <产品元数据>,
|
||||||
|
productData: {}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
productName() {
|
||||||
|
return this.businessData.name;
|
||||||
|
},
|
||||||
|
purchaseTime() {
|
||||||
|
return this.businessData.purchase_time;
|
||||||
|
},
|
||||||
|
expiryTime() {
|
||||||
|
return this.businessData.expiry_time;
|
||||||
|
},
|
||||||
|
status() {
|
||||||
|
return this.businessData.status;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
// 解析额外数据
|
||||||
|
if (this.businessData.extra_data) {
|
||||||
|
this.productData = JSON.parse(this.businessData.extra_data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).mount('#app');
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
```
|
||||||
|
|
||||||
|
### 添加产品到数据库
|
||||||
|
```sql
|
||||||
|
INSERT INTO `products` (
|
||||||
|
`product_id`, `name`, `description`, `price`, `currency_type`,
|
||||||
|
`stock`, `limit_per_user`, `subscription_period`, `module`,
|
||||||
|
`category_1`, `category_2`, `sort_order`, `status`
|
||||||
|
) VALUES (
|
||||||
|
'your-product-001',
|
||||||
|
'您的产品名称',
|
||||||
|
'产品描述',
|
||||||
|
100,
|
||||||
|
'score',
|
||||||
|
50,
|
||||||
|
1,
|
||||||
|
30,
|
||||||
|
'YOUR-MODULE-NAME',
|
||||||
|
'主分类',
|
||||||
|
'子分类',
|
||||||
|
100,
|
||||||
|
'visible'
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔧 系统维护
|
||||||
|
|
||||||
|
### 1. 自动化任务
|
||||||
|
|
||||||
|
#### 到期提醒任务
|
||||||
|
- **文件**: <mcfile name="ExpiryReminder.php" path="Main/System/ExpiryReminder.php"></mcfile>
|
||||||
|
- **功能**: 检查即将到期的产品,发送邮件提醒
|
||||||
|
- **运行**: 建议每天运行一次
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 添加到 crontab
|
||||||
|
0 9 * * * /usr/bin/php /path/to/fuxsto-v4/Main/System/ExpiryReminder.php
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 过期产品清理
|
||||||
|
- **文件**: <mcfile name="ExpiredProductsCleaner.php" path="Main/System/ExpiredProductsCleaner.php"></mcfile>
|
||||||
|
- **功能**: 清理已过期的产品,释放资源
|
||||||
|
- **运行**: 建议每天运行一次
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 添加到 crontab
|
||||||
|
0 2 * * * /usr/bin/php /path/to/fuxsto-v4/Main/System/ExpiredProductsCleaner.php
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. 日志管理
|
||||||
|
|
||||||
|
#### 日志位置
|
||||||
|
- 到期提醒日志: `Log/ExpiryReminder/ExpiryReminder_YYYY-MM-DD.log`
|
||||||
|
- 系统日志: `Main/System/Log/`
|
||||||
|
|
||||||
|
#### 日志清理
|
||||||
|
```bash
|
||||||
|
# 清理30天前的日志
|
||||||
|
find /path/to/fuxsto-v4/Log -name "*.log" -mtime +30 -delete
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. 数据库维护
|
||||||
|
|
||||||
|
#### 定期优化
|
||||||
|
```sql
|
||||||
|
-- 优化表
|
||||||
|
OPTIMIZE TABLE users, products, purchases;
|
||||||
|
|
||||||
|
-- 清理过期数据
|
||||||
|
DELETE FROM purchases WHERE status = 'expired' AND expiry_time < NOW() - INTERVAL 30 DAY;
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 备份脚本
|
||||||
|
```bash
|
||||||
|
#!/bin/bash
|
||||||
|
# 数据库备份脚本
|
||||||
|
DATE=$(date +%Y%m%d_%H%M%S)
|
||||||
|
mysqldump -u username -p password fuxstohostv4 > backup_$DATE.sql
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. 性能监控
|
||||||
|
|
||||||
|
#### 关键指标
|
||||||
|
- 数据库连接数
|
||||||
|
- 响应时间
|
||||||
|
- 错误率
|
||||||
|
- 磁盘使用率
|
||||||
|
|
||||||
|
#### 监控脚本示例
|
||||||
|
```php
|
||||||
|
<?php
|
||||||
|
// 简单的健康检查脚本
|
||||||
|
include_once "Main/Hv4.Function.php";
|
||||||
|
|
||||||
|
$health = [
|
||||||
|
'database' => false,
|
||||||
|
'disk_space' => false,
|
||||||
|
'response_time' => 0
|
||||||
|
];
|
||||||
|
|
||||||
|
// 检查数据库连接
|
||||||
|
$start_time = microtime(true);
|
||||||
|
$result = 数据库运行("SELECT 1");
|
||||||
|
$health['response_time'] = microtime(true) - $start_time;
|
||||||
|
$health['database'] = ($result !== false);
|
||||||
|
|
||||||
|
// 检查磁盘空间
|
||||||
|
$free_space = disk_free_space('.');
|
||||||
|
$total_space = disk_total_space('.');
|
||||||
|
$usage_percent = (1 - $free_space / $total_space) * 100;
|
||||||
|
$health['disk_space'] = ($usage_percent < 90);
|
||||||
|
|
||||||
|
header('Content-Type: application/json');
|
||||||
|
echo json_encode($health);
|
||||||
|
?>
|
||||||
|
```
|
||||||
|
|
||||||
|
## ❓ 常见问题
|
||||||
|
|
||||||
|
### 1. 安装问题
|
||||||
|
|
||||||
|
**Q: 数据库连接失败**
|
||||||
|
A: 检查以下几点:
|
||||||
|
- 数据库服务是否启动
|
||||||
|
- 连接参数是否正确
|
||||||
|
- 用户权限是否足够
|
||||||
|
- 防火墙是否阻止连接
|
||||||
|
|
||||||
|
**Q: 伪静态不生效**
|
||||||
|
A:
|
||||||
|
- Apache: 确保 mod_rewrite 模块已启用
|
||||||
|
- Nginx: 检查配置文件中的 rewrite 规则
|
||||||
|
- 确保 .htaccess 文件存在且可读
|
||||||
|
|
||||||
|
### 2. 功能问题
|
||||||
|
|
||||||
|
**Q: 登录后跳转到空白页**
|
||||||
|
A: 检查以下几点:
|
||||||
|
- Session 是否正常启动
|
||||||
|
- Dashboard 目录权限
|
||||||
|
- JavaScript 控制台是否有错误
|
||||||
|
|
||||||
|
**Q: 产品购买失败**
|
||||||
|
A:
|
||||||
|
- 检查库存是否充足
|
||||||
|
- 验证用户余额/积分
|
||||||
|
- 查看产品模块是否正确加载
|
||||||
|
- 检查数据库表结构
|
||||||
|
|
||||||
|
**Q: 邮件发送失败**
|
||||||
|
A:
|
||||||
|
- 检查邮件服务器配置
|
||||||
|
- 验证 SMTP 设置
|
||||||
|
- 查看邮件发送日志
|
||||||
|
|
||||||
|
### 3. 性能问题
|
||||||
|
|
||||||
|
**Q: 页面加载缓慢**
|
||||||
|
A:
|
||||||
|
- 启用 PHP OPcache
|
||||||
|
- 配置静态文件缓存
|
||||||
|
- 优化数据库查询
|
||||||
|
- 使用 CDN 加速
|
||||||
|
|
||||||
|
**Q: 数据库查询慢**
|
||||||
|
A:
|
||||||
|
- 添加适当的索引
|
||||||
|
- 优化 SQL 查询
|
||||||
|
- 定期清理过期数据
|
||||||
|
- 考虑读写分离
|
||||||
|
|
||||||
|
### 4. 安全问题
|
||||||
|
|
||||||
|
**Q: 如何防止 SQL 注入**
|
||||||
|
A:
|
||||||
|
- 使用参数化查询
|
||||||
|
- 验证和过滤用户输入
|
||||||
|
- 定期更新 PHP 版本
|
||||||
|
- 启用错误日志监控
|
||||||
|
|
||||||
|
**Q: 如何保护敏感信息**
|
||||||
|
A:
|
||||||
|
- 数据库密码使用环境变量
|
||||||
|
- 启用 HTTPS
|
||||||
|
- 定期更换密钥
|
||||||
|
- 限制文件访问权限
|
||||||
|
|
||||||
|
## 📝 更新日志
|
||||||
|
|
||||||
|
### V4.0.0 (2025-03-07)
|
||||||
|
- 🎉 初始版本发布
|
||||||
|
- ✨ 用户认证系统
|
||||||
|
- ✨ 产品管理系统
|
||||||
|
- ✨ 积分余额系统
|
||||||
|
- ✨ 自动化任务系统
|
||||||
|
- ✨ 模块化架构
|
||||||
|
|
||||||
|
### 计划功能
|
||||||
|
- 📊 管理员后台
|
||||||
|
- 💳 在线支付集成
|
||||||
|
- 📱 移动端优化
|
||||||
|
- 🔔 实时通知系统
|
||||||
|
- 📈 数据统计分析
|
||||||
|
|
||||||
|
## 🤝 技术支持
|
||||||
|
|
||||||
|
### 联系方式
|
||||||
|
- 项目地址: https://git.hztecha.com/admin/Fuxsto-V4.git
|
||||||
|
- 问题反馈: 请在项目仓库提交 Issue
|
||||||
|
- 技术交流: 加入官方QQ群
|
||||||
|
|
||||||
|
### 贡献指南
|
||||||
|
1. Fork 项目
|
||||||
|
2. 创建功能分支
|
||||||
|
3. 提交更改
|
||||||
|
4. 推送到分支
|
||||||
|
5. 创建 Pull Request
|
||||||
|
|
||||||
|
### 开源协议
|
||||||
|
本项目采用 MIT 协议,详见 LICENSE 文件。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**注意**: 本文档会持续更新,请关注最新版本。如有疑问或建议,欢迎提交 Issue 或 Pull Request。
|
||||||
Reference in New Issue
Block a user