








AccountGo SaaS 项目深度分析报告
1. 项目概述
项目名称: AccountGo SaaS - 会计与账单管理工具
项目用途: AccountGo 是一个基于SaaS(软件即服务)模式的多租户会计与账单管理系统,面向中小企业提供在线会计、发票管理、账单处理、支付管理等财务服务。系统支持超级管理员管理多个租户(公司),每个租户拥有独立的客户、供应商、发票、账单等数据。
技术栈:
后端框架: Laravel 9.x (PHP 8.0.2+)
认证系统: Laravel Fortify + Laravel Jetstream
权限管理: Spatie Laravel Permission (角色/权限)
API认证: Laravel Sanctum
数据库: MySQL (默认字符串长度191)
前端: Blade模板引擎 + Tailwind CSS
支付集成: Stripe, PayPal, Paystack, Flutterwave, Razorpay, Paytm, Mercado Pago, Mollie, Skrill, CoinGate, PaymentWall
数据导入导出: Maatwebsite Excel (Laravel Excel)
短信通知: Twilio
云存储: AWS S3, Wasabi
验证码: noCaptcha (Google reCAPTCHA)
条形码: milon/barcode
安装器: rachidlaasri/laravel-installer
2. 功能模块
2.1 仪表盘模块 (Dashboard)
超级管理员仪表盘: 显示总用户数、付费用户数、总订单数、订单金额、计划统计、最热销计划、订单图表
公司仪表盘: 显示最新收入/支出、收入/支出分类图表、收支柱状图/折线图、税率统计、分类统计、银行账户余额、发票/账单统计
2.2 发票管理模块 (Invoice)
发票创建、编辑、删除、查看 发票状态管理: Draft(草稿) → Sent(已发送) → Unpaid(未付) → Partially Paid(部分支付) → Paid(已付) 发票产品/服务项管理 发票支付记录与跟踪 发票复制、发送邮件、付款提醒 发票PDF生成与下载 发票模板设置(10种模板: New York, Toronto, Rio, London, Istanbul, Mumbai, Hong Kong, Tokyo, Sydney, Paris) 发票颜色自定义、导出(Excel)、运费显示设置、折扣应用
2.3 账单管理模块 (Bill)
账单创建、编辑、删除、查看 账单状态管理: Draft → Sent → Unpaid → Partially Paid → Paid 账单产品项管理、支付记录、复制、发送邮件 账单PDF生成与下载、模板设置、导出(Excel)
2.4 报价单管理模块 (Proposal)
报价单创建、编辑、删除、状态变更 报价单转换为发票、复制、发送邮件 报价单PDF生成、模板设置、在线支付
2.5 预付金管理模块 (Retainer)
预付金创建、编辑、删除、状态管理 预付金转换为发票、支付记录 预付金PDF生成、模板设置、在线支付
2.6 客户管理模块 (Customer)
客户CRUD操作、账单信息(billing)与配送信息(shipping) 客户对账单查看、密码重置、独立登录门户 客户仪表盘(发票图表、进度统计)、导出/导入(Excel)、余额管理
2.7 供应商管理模块 (Vender)
供应商CRUD操作、账单信息与配送信息 供应商对账单查看、独立登录门户、仪表盘 供应商导出/导入(Excel)、余额管理
2.8 收入管理模块 (Revenue)
收入记录创建、编辑、删除 收入按日期/分类/客户筛选、导出(Excel)
2.9 支出管理模块 (Payment/Expense)
支出记录创建、编辑、删除 支出按日期/分类/供应商筛选、导出(Excel)
2.10 银行账户管理 (Bank Account)
银行账户CRUD、账户余额管理
2.11 转账管理 (Transfer)
银行账户间转账、转账记录查看
2.12 交易记录 (Transaction)
所有交易流水查看、交易导出(Excel)
2.13 产品/服务管理 (Product Service)
产品/服务CRUD、分类管理、单位管理 产品库存管理(Product Stock)、导出/导入(Excel)
2.14 税务管理 (Tax)
税率CRUD、多税率支持
2.15 信用票据 (Credit Note)
发票信用票据创建、编辑、删除 自定义信用票据、金额抵扣发票
2.16 借记票据 (Debit Note)
账单借记票据创建、编辑、删除 自定义借记票据、金额抵扣账单
2.17 会计科目表 (Chart of Account)
会计科目CRUD、科目类型管理(资产、负债、权益、收入、支出) 科目子类型管理、科目余额计算(借方/贷方/净额)
2.18 日记账分录 (Journal Entry)
日记账分录创建、编辑、删除 借方/贷方分录、分录账户管理、日记账编号格式化
2.19 合同管理 (Contract)
合同CRUD、合同类型管理 合同描述、附件、评论、笔记 合同PDF生成与下载、电子签名(客户/公司) 合同状态编辑、邮件发送、复制
2.20 预算规划 (Budget)
预算CRUD、预算与实际对比
2.21 目标管理 (Goal)
财务目标CRUD、目标进度跟踪
2.22 资产管理 (Asset)
资产CRUD、资产跟踪
2.23 优惠券管理 (Coupon)
优惠券CRUD、应用于计划购买、使用次数限制
2.24 报表模块 (Report)
收入汇总报表、支出汇总报表、收支对比报表 税务汇总报表、利润与损失报表 发票汇总报表、账单汇总报表 产品库存报表、发票报表 账户对账单报表、资产负债表 分类账、试算平衡表 报表导出(Excel/PDF)
2.25 订阅计划管理 (Plan) - SaaS订阅
计划CRUD(名称、价格、周期、最大用户数、最大客户数、最大供应商数) 计划周期: Unlimited(无限期)、Monthly(月付)、Yearly(年付) 计划购买与支付、计划请求模块(Plan Request)
2.26 订单管理 (Order)
订单查看、订单统计(总订单数、总金额)
2.27 用户管理 (User)
用户CRUD、用户类型: super admin(超级管理员)、company(公司/租户)、普通用户 用户密码重置、语言切换、计划升级
2.28 角色权限管理 (Role & Permission)
角色CRUD (Spatie Permission)、权限CRUD、基于角色的访问控制
2.29 系统设置 (Settings)
公司设置(名称、地址、联系方式) 邮件设置(SMTP配置)、支付设置(各支付网关配置) 系统设置(货币、日期格式、时间格式) Twilio短信设置、存储设置(本地/S3/Wasabi) reCAPTCHA设置、GDPR Cookie设置、登录页设置
2.30 邮件模板 (Email Template)
邮件模板CRUD、多语言邮件模板、模板启用/禁用
2.31 语言管理
多语言支持、语言文件管理、语言创建/删除
2.32 自定义字段 (Custom Field)
自定义字段CRUD、支持多种字段类型(text/textarea/select等) 自定义字段值管理、按模块关联(customer/invoice/bill等)
2.33 着陆页管理 (Landing Page)
着陆页区域管理(10个区域) 区域内容编辑、排序
3. 项目结构
main_file/
├── app/ # 应用核心代码
│ ├── Actions/ # Fortify/Jetstream动作类
│ │ ├── Fortify/ # Fortify认证动作
│ │ └── Jetstream/ # Jetstream用户管理动作
│ ├── Console/ # Artisan命令
│ ├── Exceptions/ # 异常处理
│ ├── Exports/ # Excel导出类(发票/账单/客户等)
│ ├── Http/ # HTTP层
│ │ ├── Controllers/ # 控制器(50+个)
│ │ │ ├── Auth/ # 认证控制器(注册/登录/验证)
│ │ │ │ └── Auth-----------/ # 旧版认证控制器(备份)
│ │ │ ├── Middleware/ # 中间件(XSS/认证/CSRF等)
│ │ │ └── Requests/ # 表单验证请求类
│ │ └── Kernel.php # HTTP内核(中间件注册)
│ ├── Imports/ # Excel导入类(客户/供应商/产品)
│ ├── Mail/ # 邮件类
│ ├── Models/ # Eloquent模型(40+个)
│ ├── Providers/ # 服务提供者
│ │ ├── AppServiceProvider.php # 应用服务提供者
│ │ ├── AuthServiceProvider.php# 认证服务提供者
│ │ ├── BroadcastServiceProvider.php
│ │ ├── EventServiceProvider.php
│ │ └── RouteServiceProvider.php# 路由服务提供者
│ └── View/ # 视图组件
├── bootstrap/ # 启动文件
├── config/ # 配置文件
│ ├── app.php # 应用配置
│ ├── auth.php # 认证配置(多guard: web/customer/vender)
│ ├── database.php # 数据库配置
│ ├── fortify.php # Fortify配置
│ ├── jetstream.php # Jetstream配置
│ ├── permission.php # Spatie权限配置
│ └── ... # 其他配置
├── database/ # 数据库
│ ├── migrations/ # 迁移文件(77个)
│ └── seeders/ # 数据填充
├── lang/ # Laravel 9语言文件(en)
├── public/ # 公共资源
│ ├── assets/ # 前端资源(CSS/JS/图片)
│ │ ├── css/ # 样式文件
│ │ ├── images/ # 图片资源
│ │ └── js/ # JavaScript文件
│ └── index.php # 入口文件
├── resources/ # 前端资源
│ ├── lang/ # 语言文件(多语言)
│ │ ├── en/ # 英语(PHP文件)
│ │ ├── en.json # 英语翻译(JSON)
│ │ └── ... # 其他语言
│ └── views/ # Blade视图
│ ├── auth/ # 认证视图(登录/注册)
│ ├── contract/ # 合同视图
│ ├── customer/ # 客户视图
│ ├── invoice/ # 发票视图
│ ├── bill/ # 账单视图
│ ├── proposal/ # 报价单视图
│ ├── retainer/ # 预付金视图
│ ├── report/ # 报表视图
│ ├── settings/ # 设置视图
│ ├── layouts/ # 布局视图
│ └── ... # 其他视图
├── routes/ # 路由
│ ├── web.php # Web路由(1008行)
│ └── auth.php # 认证路由
├── storage/ # 存储目录
├── stubs/ # 模型存根
├── tests/ # 测试
├── vendor/ # Composer依赖
├── composer.json # Composer配置
└── package.json # NPM配置4. 核心业务逻辑
4.1 发票业务流程
创建报价单(Proposal) → 客户确认 → 转换为发票(Invoice)
直接创建发票 → 添加产品/服务项 → 计算税额和折扣
发票状态流转: Draft(0) → Sent(1) → Unpaid(2) → Partially Paid(3) → Paid(4)
发票支付: 手动记录付款 / 在线支付(Stripe/PayPal等)
信用票据: 发票金额调整,创建Credit Note抵扣
发票PDF: 根据模板和颜色生成PDF,支持邮件发送
4.2 账单业务流程
创建账单(Bill) → 添加产品项 → 关联供应商
账单状态流转: Draft(0) → Sent(1) → Unpaid(2) → Partially Paid(3) → Paid(4)
账单支付: 手动记录付款到银行账户
借记票据: 账单金额调整,创建Debit Note抵扣
4.3 会计核算流程
会计科目设置: 创建科目类型(资产/负债/权益/收入/支出) → 子类型 → 具体科目
日记账分录: 每笔业务创建借贷分录 → 关联会计科目
自动分录: 发票/账单/收入/支出/支付等操作自动生成交易记录
报表生成:
试算平衡表: 汇总各科目借贷余额 资产负债表: 资产=负债+所有者权益 利润与损失表: 收入-费用=利润 分类账: 按科目查看明细
4.4 SaaS订阅流程
管理员创建计划(Plan): 设置价格、周期、用户限制
用户选择计划 → 使用优惠券(可选) → 选择支付方式
支付成功 → 订单创建(Order) → 用户计划激活
计划到期 → 降级或续费 → 计划请求(Plan Request)
4.5 多租户数据隔离
所有业务表通过
created_by字段关联到创建者(用户/公司)查询时自动过滤
created_by = 当前用户ID或created_by = 公司管理员ID超级管理员可查看所有数据,公司用户只能查看自己创建的数据
5. 核心代码
5.1 关键模型
5.2 关键控制器
5.3 关键中间件
5.4 认证Guard配置
系统配置了3个独立的认证Guard:
web: 管理员和公司用户登录
customer: 客户独立登录门户
vender: 供应商独立登录门户
6. 数据库设计
6.1 核心表及关系
users (用户/租户)
├── created_by → 多租户隔离
├── plan → plans (订阅计划)
└── type: super admin / company
customers (客户) venders (供应商)
├── created_by ├── created_by
├── balance ├── balance ├── balance
└── guard: customer └── guard: vender
invoices (发票) bills (账单)
├── customer_id ├── vender_id
├── status: 0-4 ├── status: 0-4
└── created_by └── created_by
invoice_products bill_products
├── invoice_id ├── bill_id
└── product_id └── product_id
invoice_payments bill_payments
├── invoice_id ├── bill_id
├── account_id ├── account_id
└── payment_method └── payment_method
proposals (报价单) retainers (预付金)
├── customer_id ├── customer_id
├── converted_invoice_id ├── converted_invoice_id
└── is_convert └── is_convert
contracts (合同)
├── customer
├── type → contract_types
├── contract_attachments
├── contract_comments
└── contract_notes
chart_of_accounts (会计科目)
├── type → chart_of_account_types
└── sub_type → chart_of_account_sub_types
journal_entries (日记账)
└── journal_items
├── account → chart_of_accounts
├── debit (借方)
└── credit (贷方)
transactions (交易记录)
├── user_id + user_type (多态)
├── account → bank_accounts
└── type: Credit/Debit
bank_accounts (银行账户)
└── opening_balance
product_services (产品/服务)
├── category_id → product_service_categories
├── unit_id → product_service_units
└── tax_id → taxes
settings (系统设置)
├── name + created_by (联合唯一)
└── value (text类型)
plans (订阅计划)
├── duration: Monthly/Yearly/Unlimited
└── max_users, max_customers, max_venders6.2 数据库总表数: 67张
核心业务表: 40+ 权限相关表: 5 (roles, permissions, model_has_roles, model_has_permissions, role_has_permissions) 设置表: 3 (settings, admin_payment_settings, company_payment_settings) 系统表: 3 (migrations, password_resets, failed_jobs)
7. 支付网关集成
系统集成了11种支付网关,每种都支持3种场景: 计划购买、发票支付、预付金支付。
每种支付网关的流程:
用户点击支付按钮 → 创建支付请求 跳转到支付网关页面 → 用户完成支付 支付网关回调 → 更新支付状态 → 创建交易记录
8. 多租户SaaS架构
8.1 架构模式
采用共享数据库、共享Schema的多租户模式,通过 created_by 字段实现数据隔离。
8.2 租户层级
超级管理员 (type=super admin, created_by=0)
└── 公司/租户 (type=company, created_by=超级管理员ID)
└── 普通用户 (type=company, created_by=公司管理员ID)8.3 数据隔离实现
created_by字段: 所有业务表都有
created_by字段,记录创建者ID查询过滤: 控制器中通过
created_by过滤数据User模型的currentUserId(): 获取当前用户ID用于数据过滤
Settings表: 通过
name + created_by联合唯一键实现每租户独立设置
8.4 租户功能限制
Plan模型: 定义最大用户数(max_users)、最大客户数(max_customers)、最大供应商数(max_venders)
计划到期: plan_expire_date字段控制计划有效期
功能限制: 根据计划等级限制可用功能
8.5 三大门户
管理门户 (
/): 管理员和公司用户登录,管理所有业务客户门户 (
/customer/): 客户独立登录,查看发票、合同、付款供应商门户 (
/vender/): 供应商独立登录,查看账单、付款
8.6 认证隔离
3个独立Guard: web, customer, vender 各门户独立登录/注册/密码重置 Session隔离,互不干扰
夜雨聆风