★ 主力项目 · 微服务架构

云途智报
差旅报销 SaaS 平台

多租户企业差旅报销 SaaS 平台 · Travel Expense SaaS

基于 Spring Boot 3.2 + Spring Cloud Alibaba 2022 + Vue 3 的微服务架构差旅报销 SaaS 系统。 覆盖 出差申请 → 报销录入(发票查重)→ 多级审批 → 银企直连付款 → 月结关账 → 对账报表 全业务闭环, 支持 5 个角色协同,5 个微服务独立部署。

Spring Boot 3.2Spring Cloud AlibabaNacos RedissonRabbitMQMyBatis-Plus MySQL 8.0Vue 3Element PlusDocker
SCROLL

项目截图展示

6 个核心功能模块界面 · 拖动画廊可自由旋转浏览

admin · 企业管理员首页
SCREENSHOT 企业管理员首页看板
企业管理员首页Admin Dashboard
staff · 普通员工首页
SCREENSHOT 普通员工首页看板
普通员工首页Staff Dashboard
stats · 统计管理
SCREENSHOT 统计管理
统计管理Statistics
manager · 部门主管首页
SCREENSHOT 部门主管首页看板
部门主管首页Manager Dashboard
finance · 财务人员首页
SCREENSHOT 财务人员首页看板
财务人员首页Finance Dashboard
bank · 银行异步付款
SCREENSHOT 银行异步付款
银行异步付款Bank Payment

悬停卡片放大 · 双击查看大图

核心技术亮点

围绕真实业务痛点展开的技术方案设计,每项包含"业务问题 → 技术难点 → 解决方案 → 最终行为"完整链路。

01

多租户数据隔离

Multi-Tenant Isolation

所有业务表带 tenant_id,网关 JWT 解析后 ThreadLocal 透传,绝不信任前端参数。管理员传参校验合法性,普通用户强制覆盖为上下文租户。

TenantEntity 基类ThreadLocalRoleGuard
02

分布式事务与最终一致性

Distributed Transaction & Final Consistency

审批通过场景采用 Seata AT 解决跨服务事务一致性;针对银行等外部系统调用,采用 RabbitMQ + 状态机 + 幂等实现异步付款及最终一致性。

Seata ATRabbitMQ状态机幂等
03

多级审批规则匹配

Amount-Driven Approval

按金额区间动态匹配审批规则:小额免审直接进待付款、跳过部门审批直入财务审批、默认两级审批。一级通过时实时再查规则,支持管理员中途改规则即时生效。

audit_rule 表三分支流转实时规则匹配
04

银企直连异步付款

Async Bank Payment

Redisson 防重 + MQ 异步化 + 模拟银行回调 + Lua 原子扣余额/预算。连点 10 次只提交一次,回调重复推送状态只更新一次,失败 3 次自动通知财务不再重试。

Redisson RLockLua 原子扣减状态机幂等
05

发票查重

Invoice Dedup

Redis + DB 双层查重:Redis 快速路径命中即拦截,未命中走 DB 兜底并回填。Redis 异常时降级纯 DB 查重,可用性优先。删除发票同步清理 Redis 标记。

Redis EXISTSDB 兜底TTL 30 天
06

月结关账硬约束

Month Closing Lock

关账前扫描当月单据,存在未终态单据则拒绝并列出明细。关账后 SUBMIT 拒绝、APPROVE/PAY 放行(存量单走完)。跨服务 Feign 拦截,fail-open 设计防止拖垮全站。XXL-JOB 定时扫描关账日临近(-3/-1/当天),自动向租户全体财务推送 REMIND 提醒消息。

Redisson 锁乐观锁Feign 拦截XXL-JOB 定时提醒
07

网关令牌桶限流

Gateway Rate Limiting

限流先于 JWT 校验(不消耗鉴权资源)。Redis + Lua 令牌桶:全局 QPS + 用户/IP QPS 双层。Redis 异常时 fail-open 放行,限流自身不成为单点故障。

Lua 令牌桶双层限流fail-open

系统架构

按业务领域(DDD 思想)拆分微服务,每个服务可独立部署、独立扩容。

微服务模块划分

common 公共模块 实体基类 · 工具 · 异常 · 拦截器 · RoleGuard · Redisson 锁 gateway-service :8080 · 网关 JWT 鉴权 Redis+Lua 限流 路由转发 RateLimit · JwtAuth 2 个 Filter tenant-user-service :8081 · 租户用户 登录 / JWT 签发 租户 / 部门 / 员工 角色 / 菜单 user · dept · role 5 张核心表 expense-core-service :8082 · 报销核心 出差申请 报销单 发票查验查重 trip · expense · inv 4 张核心表 audit-flow-service :8083 · 审批流 多级审批 审批规则 / 超时提醒 审批时间线 rule · flow · log 3 张核心表 finance-settle-service :8084 · 财务结算 付款 / 预算 月结关账 / 对账 统计 / 报表 pay · budget · month 3 张核心表

测试账号

DEMO CREDENTIALS · 点击右侧按钮可一键复制

企业管理员
13800138000
123456
部门主管
13800138001
123456
普通员工
13800138002
123456
财务人员
13800138003
123456