# transfer_tool
**Repository Path**: linz0212/transfer_tool
## Basic Information
- **Project Name**: transfer_tool
- **Description**: transfer_tool
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-01-31
- **Last Updated**: 2026-01-31
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 转账系统
## 项目简介
一个现代化的转账管理系统,采用前后端分离架构,前端使用 Vue 3 + Element Plus,后端采用 ThinkPHP 6 框架。
---
## 技术栈
### 前端
- **框架**: Vue 3 (Composition API)
- **UI 组件库**: Element Plus
- **构建工具**: Vite
- **HTTP 客户端**: Axios
- **状态管理**: Pinia
- **路由**: Vue Router 4
- **样式预处理**: Sass/SCSS
- **包管理**: npm/yarn
### 后端
- **框架**: ThinkPHP 6
- **PHP 版本**: >= 7.1
- **数据库**: MySQL 5.7+
- **缓存**: Redis (可选)
- **ORM**: ThinkPHP 数据库查询构造器
- **API 规范**: RESTful
---
## 项目结构
```
transfer_tool/
├── frontend/ # 前端项目
│ ├── public/ # 静态资源
│ ├── src/
│ │ ├── api/ # API 接口调用
│ │ ├── components/ # 通用组件
│ │ ├── views/ # 页面组件
│ │ ├── stores/ # Pinia 状态管理
│ │ ├── router/ # 路由配置
│ │ ├── utils/ # 工具函数
│ │ ├── styles/ # 全局样式
│ │ ├── App.vue # 根组件
│ │ └── main.ts # 入口文件
│ ├── package.json
│ └── vite.config.ts
│
├── backend/ # 后端项目
│ ├── app/
│ │ ├── controller/ # 控制器
│ │ ├── model/ # 模型
│ │ ├── validate/ # 验证规则
│ │ ├── middleware/ # 中间件
│ │ └── service/ # 业务逻辑层
│ ├── config/ # 配置文件
│ ├── database/
│ │ ├── migrations/ # 数据库迁移
│ │ └── seeders/ # 数据填充
│ ├── public/ # 入口文件
│ │ └── index.php
│ ├── route/ # 路由定义
│ ├── composer.json
│ └── .env.example
│
└── README.md
```
---
## 快速开始
### 前端部分
#### 1. 环境准备
```bash
# 需要 Node.js >= 14.0
node -v
npm -v
```
#### 2. 安装依赖
```bash
cd frontend
npm install
# 或使用 yarn
yarn install
```
#### 3. 启动开发服务器
```bash
npm run dev
# 访问 http://localhost:5173
```
#### 4. 生产构建
```bash
npm run build
```
### 后端部分
#### 1. 环境准备
```bash
# 需要 PHP >= 7.1 以及相关扩展
php -v
composer -v
```
#### 2. 安装依赖
```bash
cd backend
composer install
```
#### 3. 环境配置
```bash
# 复制环境配置文件
cp .env.example .env
# 生成应用密钥
php think key:generate
```
#### 4. 数据库配置
编辑 `.env` 文件,配置数据库连接:
```env
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=transfer_system
DB_USERNAME=root
DB_PASSWORD=your_password
DB_PREFIX=tp_
```
#### 5. 数据库迁移
```bash
php think migrate:run
```
#### 6. 启动开发服务器
```bash
php think serve
# 访问 http://localhost:8000
```
---
## 前端规范
### 目录约定
- `api/` - 所有 API 接口调用函数
- `components/` - 可复用的 Vue 组件
- `views/` - 页面级组件
- `stores/` - Pinia 状态管理模块
- `router/` - Vue Router 路由配置
- `utils/` - 工具函数和辅助函数
- `styles/` - 全局样式文件
### 代码规范
#### Vue 单文件组件
```vue
```
#### API 调用
```typescript
// src/api/transfer.ts
import axios from 'axios'
const api = axios.create({
baseURL: import.meta.env.VITE_API_URL,
timeout: 5000
})
export const transferApi = {
// 获取转账列表
getList(params: any) {
return api.get('/transfer', { params })
},
// 创建转账
create(data: any) {
return api.post('/transfer', data)
},
// 获取详情
getDetail(id: string | number) {
return api.get(`/transfer/${id}`)
}
}
```
### 命名约定
- 组件名: PascalCase (如 `TransferForm.vue`)
- 文件名: kebab-case (如 `transfer-form.vue`)
- 变量/函数: camelCase (如 `getUserInfo()`)
- 常量: UPPER_SNAKE_CASE (如 `MAX_RETRY_COUNT`)
---
## 后端规范
### 目录约定
- `app/controller/` - 控制器层,处理请求和响应
- `app/model/` - 数据模型,与数据表对应
- `app/validate/` - 请求验证规则
- `app/middleware/` - 中间件
- `app/service/` - 业务逻辑层
- `config/` - 应用配置文件
- `database/migrations/` - 数据库迁移脚本
- `route/` - 路由定义文件
### 代码规范
#### 路由定义
```php
prefix('api/v1/');
```
#### 控制器
```php
request->param('page', 1);
$limit = $this->request->param('limit', 15);
$list = Transfer::paginate([
'list_rows' => $limit,
'page' => $page
]);
return json($list);
}
/**
* 创建转账
*/
public function create()
{
$data = $this->request->post();
// 验证
$validate = new TransferValidate();
if (!$validate->check($data)) {
return json(['message' => $validate->getError()], 400);
}
$transfer = Transfer::create($data);
return json($transfer);
}
/**
* 获取详情
*/
public function detail($id)
{
$transfer = Transfer::find($id);
if (!$transfer) {
return json(['message' => '记录不存在'], 404);
}
return json($transfer);
}
}
```
#### 数据模型
```php
'float',
'created_at' => 'datetime',
];
}
```
#### 验证规则
```php
'require|string',
'to_account|接收账户' => 'require|string|different:from_account',
'amount|转账金额' => 'require|float|gt:0',
];
protected $message = [
'from_account.require' => '发送账户不能为空',
'to_account.different' => '转入账户不能与转出账户相同',
'amount.gt' => '转账金额必须大于0',
];
}
```
### API 响应规范
```php
// 成功响应
{
"code": 0,
"message": "操作成功",
"data": {
// 数据内容
}
}
// 错误响应
{
"code": 400,
"message": "错误信息描述",
"data": null
}
```
---
## 数据库设计
### 转账表结构
```sql
CREATE TABLE `tp_transfer` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,
`from_account` varchar(50) NOT NULL COMMENT '发送账户',
`to_account` varchar(50) NOT NULL COMMENT '接收账户',
`amount` decimal(10, 2) NOT NULL COMMENT '转账金额',
`status` tinyint DEFAULT 0 COMMENT '状态: 0-待处理, 1-成功, 2-失败',
`remark` varchar(255) COMMENT '备注',
`created_at` timestamp DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
KEY `idx_from_account` (`from_account`),
KEY `idx_to_account` (`to_account`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
```
---
## 部署指南
### 前端部署
1. 执行生产构建: `npm run build`
2. 将 `dist/` 目录部署到 Web 服务器
3. 配置 Web 服务器处理 Vue Router 的路由
### 后端部署
1. 上传项目文件到服务器
2. 运行 `composer install --no-dev`
3. 配置 `.env` 文件
4. 运行数据库迁移: `php think migrate:run`
5. 配置 Web 服务器指向 `public/index.php`
---
## 常见问题
### Q: 前端如何跨域访问后端 API?
A: 在 `vite.config.ts` 中配置代理,或在后端配置 CORS 中间件。
### Q: 如何实现用户认证?
A: 建议使用 JWT Token,前端存储在 localStorage,每次请求时在 Authorization 头中携带。
### Q: 数据库迁移失败怎么办?
A: 检查 `.env` 文件的数据库配置,确保数据库存在且连接正常。
---
## 贡献指南
1. Fork 项目
2. 创建特性分支: `git checkout -b feature/AmazingFeature`
3. 提交更改: `git commit -m 'Add AmazingFeature'`
4. 推送到分支: `git push origin feature/AmazingFeature`
5. 提交 Pull Request
---
## 许可证
本项目采用 MIT 许可证。详见 LICENSE 文件。
---
## 联系方式
如有问题或建议,欢迎提交 Issue 或联系开发团队。