# AlipayAccount MVC 实现文档 ## 📋 概述 本文档记录了参照 `WechatpayAccount` 模型创建 `AlipayAccount` 相关 MVC 组件的完整过程。 --- ## ✅ 已完成的工作 ### 1. 模型 (Model) **文件位置**: `app/Models/AlipayAccount.php` ```php model->paginate(10); return view($this->bladePath . ".index", compact("data")); } } ``` **功能说明**: - 继承 `CommonController`,自动获得 CRUD 功能 - 定义视图路径、URL前缀、模型名称 - `index()` 方法:分页显示支付宝账号列表(每页10条) --- ### 3. 表单构建器 (Form) **文件位置**: `app/Forms/AlipayAccountForm.php` ```php add("id", Field::HIDDEN); $this->add("name", Field::TEXT, ["label" => "名称", "rules" => "required"]); $this->add("appid", Field::TEXT, ["label" => "应用ID", "rules" => "required"]); $this->add("public_key", Field::TEXTAREA, [ "label" => "应用公钥", "rules" => "required", "attr" => ["rows" => 4] ]); $this->add("alipay_key", Field::TEXTAREA, [ "label" => "支付宝密钥", "rules" => "required", "attr" => ["rows" => 4] ]); $this->add('buttons', 'buttongroup', [ "splitted" => true, "buttons" => [ ["label" => "保存", "attr" => ["class" => "btn btn-primary mr-1", "type" => "submit"]], ["label" => "返回", "attr" => ["class" => "btn btn-light btn-back", "type" => "button"]] ] ]); } } ``` **字段说明**: - `id`: 隐藏字段,用于编辑时传递ID - `name`: 账号名称(必填) - `appid`: 支付宝应用ID(必填) - `public_key`: 应用公钥(必填,多行文本框) - `alipay_key`: 支付宝密钥(必填,多行文本框) - `buttons`: 保存和返回按钮组 --- ### 4. 视图文件 (Views) #### 4.1 列表页面 **文件位置**: `resources/views/admin/alipay-account/index.blade.php` **更新内容**: - 表头字段:名称、应用ID、应用公钥、操作 - 数据显示:`$row->appid` 和 `Str::limit($row->public_key, 50)` - 公钥字段限制显示前50个字符,避免过长 **功能**: - 显示支付宝账号列表 - 创建新账号按钮 - 编辑、删除操作按钮 - 分页功能 #### 4.2 创建/编辑页面 **文件位置**: `resources/views/admin/alipay-account/create.blade.php` **内容**: - 继承 `admin.layouts.layout` 布局 - 包含表单构建器生成的表单 - 支持创建和编辑两种模式 --- ### 5. 路由配置 **文件位置**: `routes/web.php` (第69行) ```php \App\Models\CommonModel::generateCurdRouter("AlipayAccountController", "alipay-account"); ``` **自动生成的路由**: | 方法 | URI | 动作 | 说明 | |------|-----|------|------| | GET | `/admin/alipay-account` | index | 列表页 | | GET | `/admin/alipay-account/create` | create | 创建页 | | POST | `/admin/alipay-account/store` | store | 保存新建 | | GET | `/admin/alipay-account/edit?id={id}` | edit | 编辑页 | | POST | `/admin/alipay-account/update/{id}` | update | 保存编辑 | | POST | `/admin/alipay-account/delete` | delete | 删除 | **权限控制**: - 需要通过 `authorize:admin` 中间件(管理员身份验证) - 需要通过 `rbac:admin` 中间件(基于角色的权限验证) --- ## 📊 数据库结构 **表名**: `alipay_account` | 字段名 | 类型 | 说明 | |--------|------|------| | id | BIGINT | 主键ID | | name | VARCHAR | 账号名称 | | appid | VARCHAR | 应用ID | | public_key | VARCHAR | 应用公钥 | | alipay_key | VARCHAR | 支付宝密钥 | | created_at | TIMESTAMP | 创建时间 | | updated_at | TIMESTAMP | 更新时间 | | deleted_at | TIMESTAMP | 软删除时间 | --- ## 🔄 与 WechatpayAccount 的对比 | 项目 | WechatpayAccount | AlipayAccount | |------|------------------|---------------| | 商户标识字段 | `mchid` (商户ID) | `appid` (应用ID) | | 密钥字段 | `key` (商户密钥) | `public_key` + `alipay_key` | | 字段类型 | TEXT | TEXTAREA (多行) | | 字段数量 | 3个核心字段 | 4个核心字段 | **主要区别**: 1. 支付宝使用应用ID代替商户ID 2. 支付宝需要两个密钥:应用公钥和支付宝密钥 3. 密钥字段较长,使用多行文本框输入 --- ## 🚀 使用说明 ### 访问管理页面 1. **登录后台**: 访问 `/admin/login` 2. **进入列表页**: 访问 `/admin/alipay-account` 3. **创建账号**: 点击"创建支付宝账号"按钮 4. **填写信息**: - 名称:给账号起一个便于识别的名称 - 应用ID:从支付宝开放平台获取 - 应用公钥:从支付宝开放平台生成 - 支付宝密钥:从支付宝开放平台获取 ### 开发集成 ```php // 获取所有支付宝账号 $accounts = AlipayAccount::all(); // 获取单个账号 $account = AlipayAccount::find($id); // 创建账号 $account = new AlipayAccount(); $account->name = "测试账号"; $account->appid = "2021xxxxx"; $account->public_key = "MIIBIjAN..."; $account->alipay_key = "MIIEvgI..."; $account->save(); // 更新账号 $account = AlipayAccount::find($id); $account->name = "新名称"; $account->save(); // 软删除 $account->delete(); // 包含已删除记录 $accounts = AlipayAccount::withTrashed()->get(); ``` --- ## ✅ 验证清单 - [x] 模型文件创建完成 - [x] 控制器文件创建完成 - [x] 表单构建器创建完成 - [x] 视图文件已更新(字段匹配数据库) - [x] 路由配置已添加 - [x] 无 Linter 错误 - [x] 继承关系正确(SoftDeletesModel、CommonController) - [x] 权限中间件已配置 - [x] 遵循项目命名规范 --- ## 📝 注意事项 1. **密钥安全**: 密钥字段包含敏感信息,建议: - 在列表页只显示部分内容(已实现) - 考虑加密存储 - 严格控制访问权限 2. **表单验证**: - 所有字段均为必填 - 前端验证由表单构建器自动处理 - 可根据需要添加后端验证规则 3. **软删除**: - 删除操作不会真正删除数据 - 可通过 `withTrashed()` 查询已删除记录 - 可使用 `restore()` 恢复数据 4. **扩展功能**: - 如需关联项目,参考 `Project` 表中的 `alipay_account_id` 字段 - 可添加账号验证功能 - 可添加账号余额查询功能 --- ## 🎯 后续建议 1. **添加账号验证功能**: 在保存时调用支付宝API验证配置是否正确 2. **添加使用统计**: 记录每个账号的使用次数和交易金额 3. **添加状态字段**: 标记账号启用/禁用状态 4. **添加备注字段**: 记录账号用途和相关说明 5. **日志记录**: 记录账号的创建、修改、删除操作 --- ## 📞 技术支持 如有问题,请参考: - Laravel 7.x 官方文档: https://laravel.com/docs/7.x - Laravel Form Builder: https://github.com/kristijanhusak/laravel-form-builder - 支付宝开放平台: https://open.alipay.com/ --- **创建时间**: 2025-10-13 **创建者**: AI Assistant **基于模板**: WechatpayAccount MVC