三方物流平台-BMS财务账单结算中心
1 项目概述
1.1 项目背景
随着物流平台业务的快速发展,订单量、货主数量、承运商数量持续增长,原有的人工计费、对账、结算模式已无法满足业务需求,主要问题包括:
-
跨境、冷链、装卸等特殊业务场景的计费规则复杂,人工处理效率低、错误率高
-
货主对账、承运商结算周期长,客户满意度低
-
资金回笼慢,逾期风险高
-
缺乏有效的数据分析支持,无法支撑经营决策
1.2 运营定位
BMS(Billing Management System)财务账单结算中心是物流平台的运营核心枢纽,承载着从订单计费到资金回笼的全链路财务运营工作。系统不仅支撑内部财务结算,更为货主、承运商、司机等外部角色提供自助服务能力,是平台实现业财一体化的关键系统。
1.3 架构目标
|
目标维度 |
量化指标 |
说明 |
|---|---|---|
|
高可用 |
核心服务可用性≥99.9% |
支持7×24小时业务运行 |
|
高性能 |
支持10万级账单日处理量计费响应时间<100ms报表查询时间<5秒 |
满足业务峰值需求 |
|
可扩展 |
支持灵活的计费规则配置适配多种业务场景 |
支撑业务快速迭代 |
|
安全合规 |
符合会计准则满足税务要求数据安全合规 |
满足监管要求 |
|
易集成 |
提供标准API接口支持与OMS/WMS/TMS/ERP系统对接 |
打通上下游系统 |
1.4 运营挑战与应对
|
挑战类型 |
具体问题 |
系统应对策略 |
|---|---|---|
|
场景复杂 |
跨境/冷链/装卸等特殊业务计费规则差异大 |
灵活的计费规则引擎,支持可视化配置 |
|
多方协同 |
货主对账、承运商结算、银行回款等多方交互 |
统一门户+消息推送+在线确认 |
|
时效要求 |
计费延迟影响结算,对账超期导致回款慢 |
自动触发+定时任务+逾期预警 |
|
数据准确性 |
计费差异引发客户投诉,影响平台信誉 |
AI智能校验+差异自动识别 |
|
资金风险 |
客户逾期、坏账损失 |
信用管理+账龄分析+催收流程 |
1.5 运营价值
|
价值维度 |
量化指标 |
业务收益 |
|---|---|---|
|
效率提升 |
结算周期缩短50% |
从订单完成到收款≤30天 |
|
成本降低 |
计费人力成本减少60% |
自动计费替代人工核算 |
|
风险控制 |
坏账率降低至≤1% |
智能预警+信用管理 |
|
客户满意 |
客户满意度≥4.5分 |
自助对账+实时查询 |
|
数据洞察 |
毛利分析覆盖率100% |
按订单/客户/线路/仓库多维分析 |
2 业务架构设计
2.1 核心运营场景
flowchart LR
subgraph 计费运营
A1[订单完成] --> A2[自动计费]
A2 --> A3[费用校验]
A3 --> A4[异常预警]
end
subgraph 账单运营
B1[账单生成] --> B2[对账确认]
B2 --> B3[开票收款]
B3 --> B4[凭证生成]
end
subgraph 结算运营
C1[承运商结算] --> C2[应付核销]
C2 --> C3[付款执行]
C3 --> C4[银行对接]
end
subgraph 分析运营
D1[收入分析] --> D2[成本分析]
D2 --> D3[毛利分析]
D3 --> D4[决策支持]
end
A4 --> B1
B4 --> C1
C4 --> D1
2.2 运营分层模型
graph TB
subgraph 运营决策层
D1[战略分析]
D2[毛利分析]
D3[客户分层]
D4[线路效益]
end
subgraph 运营管理层
M1[账单管理]
M2[对账管理]
M3[收款管理]
M4[付款管理]
end
subgraph 运营执行层
E1[自动计费]
E2[账单生成]
E3[催收执行]
E4[凭证生成]
end
subgraph 运营支撑层
S1[合同管理]
S2[价格管理]
S3[规则引擎]
S4[预警中心]
end
D1 --> M1
D2 --> M2
M1 --> E1
M2 --> E2
M3 --> E3
M4 --> E4
S1 --> E1
S2 --> E1
S3 --> E2
S4 --> E3
2.3 运营服务域划分
|
服务域 |
核心服务 |
运营职责 |
关键运营指标 |
|---|---|---|---|
|
合同域 |
bms-contract |
合同全生命周期管理、价格体系维护 |
合同覆盖率、价格准确率 |
|
计费域 |
bms-billing |
自动计费、费用校验、异常处理 |
计费及时率、准确率 |
|
应收域 |
bms-receivable |
账单生成、对账、开票、收款 |
回款率、逾期率 |
|
应付域 |
bms-payable |
承运商结算、付款执行 |
付款及时率、结算误差率 |
|
报表域 |
bms-report |
收入分析、成本分析、盈利分析 |
分析覆盖率、数据延迟 |
|
配置域 |
bms-config |
运营参数、规则配置、预警设置 |
配置准确率、规则覆盖率 |
2.4 运营能力矩阵
|
能力域 |
能力项 |
能力描述 |
自动化程度 |
|---|---|---|---|
|
计费能力 |
自动计费 |
订单完成自动触发计费,支持批量计费 |
全自动 |
|
规则引擎 |
可视化配置计费规则,支持阶梯/淡旺季/区间价 |
半自动 |
|
|
智能校验 |
AI识别计费异常,自动标记差异 |
全自动 |
|
|
账单能力 |
账单生成 |
按月/周/单维度生成账单,支持账单拆分合并 |
全自动 |
|
对账确认 |
线上对账确认,支持差异申诉 |
半自动 |
|
|
批量操作 |
批量对账/开票/收款/付款 |
半自动 |
|
|
资金能力 |
收款管理 |
收款认领/核销,支持部分核销 |
半自动 |
|
付款管理 |
付款审批/执行,支持银企直连 |
半自动 |
|
|
凭证生成 |
自动生成凭证,支持ERP导出 |
全自动 |
|
|
分析能力 |
实时分析 |
实时收入/成本/毛利看板 |
全自动 |
|
定期报表 |
自动生成运营周报/月报 |
全自动 |
|
|
趋势预测 |
基于历史数据预测回款/成本趋势 |
全自动 |
3 应用架构设计
3.1 微服务模块设计
|
服务名称 |
服务说明 |
核心运营功能 |
运营角色 |
|---|---|---|---|
|
bms-contract |
合同与报价服务 |
合同模板管理、阶梯报价配置、淡旺季价格、有效期预警 |
商务运营、财务运营 |
|
bms-billing |
智能计费服务 |
多业务计费(仓储/操作/运输/跨境/冷链/装卸)、规则引擎、自动校验 |
计费运营 |
|
bms-receivable |
应收管理服务 |
账单池管理、对账确认、开票申请、收款认领、逾期催收 |
应收运营、信用运营 |
|
bms-payable |
应付管理服务 |
承运商结算、司机结费、装卸结算、付款审批 |
应付运营、成本运营 |
|
bms-report |
运营分析服务 |
收入/成本/毛利分析、账龄分析、KPI看板、运营周报 |
分析运营、管理层 |
|
bms-config |
运营配置服务 |
计费规则配置、预警阈值配置、催收策略配置 |
系统运营 |
3.2 应用架构图
graph TB
subgraph 前端层
PC[PC运营管理端<br/>MateClaw Admin]
Mobile[移动运营APP<br/>MateClaw App]
Shipper[货主门户<br/>MateClaw H5]
Carrier[承运商门户<br/>MateClaw H5]
end
subgraph 网关层
Gateway[Spring Cloud Gateway<br/>yudao-cloud]
end
subgraph 应用服务层
subgraph 运营域
Contract[bms-contract<br/>yudao-cloud模块]
Billing[bms-billing<br/>yudao-cloud模块]
Receivable[bms-receivable<br/>yudao-cloud模块]
Payable[bms-payable<br/>yudao-cloud模块]
Report[bms-report<br/>yudao-cloud模块]
Config[bms-config<br/>yudao-cloud模块]
end
end
subgraph 中台服务层
Workflow[工作流引擎<br/>yudao-cloud]
Rule[规则引擎<br/>Drools]
Schedule[定时任务<br/>XXL-JOB]
Message[消息中心<br/>yudao-cloud]
end
PC --> Gateway
Mobile --> Gateway
Shipper --> Gateway
Carrier --> Gateway
Gateway --> Contract
Gateway --> Billing
Gateway --> Receivable
Gateway --> Payable
Gateway --> Report
Gateway --> Config
Billing --> Workflow
Billing --> Rule
Receivable --> Message
Payable --> Schedule
Receivable --> Schedule
4 技术架构设计
4.1 技术选型(运营导向)
|
分类 |
技术 |
版本 |
运营适配说明 |
|---|---|---|---|
|
后端框架 |
yudao-cloud |
最新版 |
提供完善的工作流引擎,支持运营审批流程;内置定时任务,支撑结算运营;统一的日志监控,保障运营可追溯 |
|
前端框架 |
MateClaw |
最新版 |
多终端适配,支持PC端运营管理、移动端随时处理;响应式设计,适配不同办公场景 |
|
数据库 |
MySQL |
8.0+ |
财务数据强一致性;支持大事务;丰富索引支撑运营查询 |
|
缓存 |
Redis |
7.0+ |
热点数据缓存加速运营查询;分布式锁保障计费并发安全 |
|
消息队列 |
RabbitMQ |
3.12+ |
异步解耦保障计费性能;延迟消息支撑逾期预警;消息追踪便于运营排查 |
|
搜索引擎 |
Elasticsearch |
8.x |
运营报表全文检索;账单/凭证多维查询 |
|
分布式事务 |
Seata |
2.0+ |
AT模式支撑跨服务计费;TCC模式支撑对账核销 |
|
分布式调度 |
XXL-JOB |
2.3+ |
定时生成账单、自动发送对账、逾期催收任务 |
|
工作流 |
yudao-cloud Flowable |
最新版 |
支持多级审批、流程可视化;适用于合同审批、付款审批等场景 |
|
规则引擎 |
Drools |
8.x |
复杂计费规则配置;支持动态规则调整 |
4.2 技术架构图
graph TB
subgraph 前端层
PC[PC运营管理端<br/>MateClaw Admin]
Mobile[移动运营APP<br/>MateClaw App]
Shipper[货主门户<br/>MateClaw H5]
Carrier[承运商门户<br/>MateClaw H5]
end
subgraph 网关层
Gateway[Spring Cloud Gateway<br/>yudao-cloud]
Config[配置中心Nacos]
Registry[注册中心Nacos]
end
subgraph 业务服务层
Billing[bms-billing<br/>yudao-cloud模块]
Contract[bms-contract<br/>yudao-cloud模块]
Receivable[bms-receivable<br/>yudao-cloud模块]
Payable[bms-payable<br/>yudao-cloud模块]
Report[bms-report<br/>yudao-cloud模块]
Config[bms-config<br/>yudao-cloud模块]
end
subgraph 基础设施层
DB[(MySQL<br/>yudao-cloud)]
Cache[(Redis<br/>yudao-cloud)]
MQ[RabbitMQ<br/>yudao-cloud]
ES[(Elasticsearch)]
Flow[Flowable<br/>工作流引擎]
Rule[Drools<br/>规则引擎]
Job[XXL-JOB<br/>调度中心]
end
subgraph 外部系统
ERP[用友/金蝶]
Invoice[电子发票]
Bank[银企直连]
OMS[OMS系统]
WMS[WMS系统]
TMS[TMS系统]
end
PC --> Gateway
Mobile --> Gateway
Shipper --> Gateway
Carrier --> Gateway
Gateway --> Contract
Gateway --> Billing
Gateway --> Receivable
Gateway --> Payable
Gateway --> Report
Gateway --> Config
Billing --> DB
Contract --> DB
Receivable --> DB
Payable --> DB
Report --> DB
Config --> DB
Billing --> Cache
Contract --> Cache
Receivable --> Cache
Payable --> Cache
Billing --> MQ
Receivable --> MQ
Payable --> MQ
Billing --> Flow
Receivable --> Flow
Payable --> Flow
Billing --> Rule
Receivable --> Job
Payable --> Job
Report --> Job
Report --> ES
Billing --> OMS
Billing --> WMS
Billing --> TMS
Receivable --> ERP
Payable --> ERP
Receivable --> Invoice
Payable --> Bank
4.3 yudao-cloud架构适配
4.3.1 项目结构
yudao-cloud-bms
├── yudao-module-bms-api
├── yudao-module-bms-framework
├── yudao-module-bms-contract
├── yudao-module-bms-billing
├── yudao-module-bms-receivable
├── yudao-module-bms-payable
├── yudao-module-bms-report
└── yudao-module-bms-config
4.3.2 核心代码规范
Controller层示例(基于yudao-cloud):
@Controller
@RequestMapping("/bms/contract")
public class BmsContractController extends BaseController {
@Autowired
private BmsContractService contractService;
@PreAuthorize("@ss.hasPermission('bms:contract:create')")
@PostMapping("/create")
@Operation(summary = "创建合同")
public CommonResult<Long> createContract(@Valid @RequestBody BmsContractCreateReqVO reqVO) {
Long id = contractService.createContract(reqVO);
return success(id);
}
@PreAuthorize("@ss.hasPermission('bms:contract:query')")
@GetMapping("/page")
@Operation(summary = "分页查询合同")
public CommonResult<PageResult<BmsContractRespVO>> getContractPage(
@Valid BmsContractPageReqVO pageReqVO) {
PageResult<BmsContractRespVO> pageResult = contractService.getContractPage(pageReqVO);
return success(pageResult);
}
}
Service层示例:
@Service
@Validated
public class BmsContractServiceImpl implements BmsContractService {
@Resource
private BmsContractMapper contractMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public Long createContract(BmsContractCreateReqVO reqVO) {
BmsContractDO contract = BeanUtils.copyProperties(reqVO, BmsContractDO.class);
contract.setStatus(ContractStatusEnum.DRAFT.getStatus());
contractMapper.insert(contract);
return contract.getId();
}
@Override
public PageResult<BmsContractRespVO> getContractPage(BmsContractPageReqVO pageReqVO) {
PageResult<BmsContractDO> pageResult = contractMapper.selectPage(pageReqVO);
return BeanUtils.toBean(pageResult, BmsContractRespVO.class);
}
}
数据权限注解使用:
@DataPermission({
@DataColumn(key = "deptId", value = "dept_id"),
@DataColumn(key = "userId", value = "user_id")
})
public List<BmsContractDO> selectContractList(@Param("param") BmsContractPageReqVO reqVO) {
return contractMapper.selectList(reqVO);
}
4.4 MateClaw前端架构设计
4.4.1 前端项目结构
mateclaw-bms
├── src
│ ├── api
│ │ └── bms
│ │ ├── contract.ts
│ │ ├── billing.ts
│ │ ├── receivable.ts
│ │ └── report.ts
│ ├── views
│ │ ├── bms
│ │ │ ├── contract
│ │ │ ├── billing
│ │ │ ├── receivable
│ │ │ ├── payable
│ │ │ └── report
│ │ └── components
│ │ ├── bill-form
│ │ ├── price-config
│ │ └── chart-viewer
│ └── types
│ └── bms
├── .env.development
├── .env.production
└── vite.config.ts
4.4.2 API调用示例
// src/api/bms/contract.ts
import request from '@/config/axios'
export interface ContractVO {
id?: number
contractNo?: string
customerId?: number
customerName?: string
startDate?: Date
endDate?: Date
status?: number
createTime?: Date
}
export interface ContractPageReqVO {
pageNo?: number
pageSize?: number
contractNo?: string
customerId?: number
status?: number
}
// 创建合同
export const createContract = (data: ContractVO) => {
return request.post({ url: '/bms/contract/create', data })
}
// 分页查询合同
export const getContractPage = (params: ContractPageReqVO) => {
return request.get({ url: '/bms/contract/page', params })
}
// 更新合同
export const updateContract = (data: ContractVO) => {
return request.put({ url: '/bms/contract/update', data })
}
4.4.3 页面组件示例
<template>
<DgPage header="合同管理">
<DgCard>
<DgFormRef
v-model:formData="searchForm"
:schema="searchFormSchema"
@submit="handleSearch"
/>
<DgTable
:columns="tableColumns"
:data="tableData"
:loading="tableLoading"
:pagination="pagination"
@change-page="handleSearch"
/>
</DgCard>
</DgPage>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import { DgPage, DgCard, DgFormRef, DgTable } from '@dgiot/dg-vue-components'
import { getContractPage } from '@/api/bms/contract'
const searchForm = ref({})
const tableData = ref([])
const tableLoading = ref(false)
const pagination = ref({ pageNo: 1, pageSize: 10, total: 0 })
const searchFormSchema = [
{ field: 'contractNo', label: '合同编号', component: 'Input' },
{ field: 'status', label: '状态', component: 'Select', componentProps: { options: statusOptions } }
]
const tableColumns = [
{ title: '合同编号', dataIndex: 'contractNo' },
{ title: '客户名称', dataIndex: 'customerName' },
{ title: '开始日期', dataIndex: 'startDate' },
{ title: '结束日期', dataIndex: 'endDate' },
{ title: '状态', dataIndex: 'status', render: (text: number) => statusMap[text] },
{ title: '操作', key: 'action', render: (_, record) => h(Operate, { record }) }
]
const handleSearch = async () => {
tableLoading.value = true
try {
const res = await getContractPage({ ...searchForm.value, ...pagination.value })
tableData.value = res.list
pagination.value.total = res.total
} finally {
tableLoading.value = false
}
}
onMounted(() => handleSearch())
</script>
5 数据架构设计
5.1 核心运营数据表
|
表名 |
表说明 |
核心字段 |
运营索引 |
|---|---|---|---|
|
bms_contract |
合同主表 |
contract_id, contract_no, customer_id, sign_date, start_date, end_date, total_amount, status |
customer_id, status, end_date |
|
bms_contract_rule |
合同规则表 |
rule_id, contract_id, rule_type, rule_config, priority |
contract_id |
|
bms_price |
价格配置表 |
price_id, contract_id, product_type, unit_price, min_quantity, max_quantity, effective_date |
contract_id, product_type |
|
bms_billing_task |
计费任务表 |
task_id, order_id, order_type, trigger_type, status, execute_time |
status, execute_time, order_id |
|
bms_billing_detail |
计费明细表 |
detail_id, task_id, order_id, fee_type, amount, quantity, unit, rule_id |
task_id, order_id, fee_type |
|
bms_bill |
账单主表 |
bill_id, bill_no, bill_type, customer_id, carrier_id, period_start, period_end, total_amount, status |
customer_id, status, period_start |
|
bms_bill_item |
账单明细表 |
item_id, bill_id, detail_id, fee_type, amount, description |
bill_id |
|
bms_reconciliation |
对账记录表 |
recon_id, bill_id, customer_id, status, diff_amount, diff_reason, confirm_time, confirm_by |
bill_id, status, customer_id |
|
bms_receivable |
应收记录表 |
receivable_id, bill_id, invoice_no, payment_date, amount, received_amount, status, overdue_days |
bill_id, status, payment_date |
|
bms_payable |
应付记录表 |
payable_id, bill_id, payment_date, amount, paid_amount, status, carrier_id |
bill_id, status, carrier_id |
|
bms_collection |
催收记录表 |
collection_id, receivable_id, collection_type, collection_date, collection_amount, result, next_follow_date |
receivable_id, collection_date |
|
bms_voucher |
凭证记录表 |
voucher_id, bill_id, voucher_no, voucher_type, amount, export_status, export_time, erp_voucher_no |
bill_id, export_status |
|
bms_settlement |
结算记录表 |
settlement_id, bill_id, settlement_type, amount, settlement_date, operator_id |
bill_id, settlement_date |
5.2 数据关系图
erDiagram
CONTRACT ||--o{ CONTRACT_RULE : defines
CONTRACT ||--o{ PRICE : includes
CONTRACT ||--o{ BILL : generates
ORDER ||--o{ BILLING_TASK : triggers
BILLING_TASK ||--o{ BILLING_DETAIL : creates
BILL ||--|{ BILL_ITEM : contains
BILL ||--o{ RECONCILIATION : has
BILL ||--o{ RECEIVABLE : creates
BILL ||--o{ PAYABLE : creates
BILL ||--o{ VOUCHER : generates
RECEIVABLE ||--o{ COLLECTION : triggers
RECEIVABLE ||--o{ SETTLEMENT : completes
CUSTOMER ||--o{ CONTRACT : signs
CUSTOMER ||--o{ BILL : receives
CUSTOMER ||--o{ RECEIVABLE : owes
CARRIER ||--o{ BILL : receives
CARRIER ||--o{ PAYABLE : receives
5.3 数据运营保障
|
保障项 |
策略 |
实现方式 |
|---|---|---|
|
数据准确性 |
计费数据双重校验 |
规则校验+AI校验 |
|
数据完整性 |
关键字段必填校验 |
数据库约束+应用层校验 |
|
数据一致性 |
分布式事务保障 |
Seata AT模式 |
|
数据可追溯 |
全链路操作日志 |
统一日志平台+traceId |
|
数据安全 |
敏感数据加密 |
AES加密+脱敏展示 |
|
数据备份 |
定时备份+异地备份 |
每日增量+每周全量备份 |
|
数据归档 |
历史数据归档 |
超期数据归档到冷存储 |
6 API架构设计
6.1 接口运营规范
|
规范项 |
说明 |
yudao-cloud适配 |
|---|---|---|
|
协议 |
HTTPS/RESTful |
Spring Cloud标准 |
|
数据格式 |
JSON |
@RequestBody/ResponseBody |
|
认证方式 |
OAuth2.0 + JWT |
yudao-cloud Security |
|
权限控制 |
接口级权限 |
@PreAuthorize注解 |
|
数据权限 |
租户/部门隔离 |
@DataPermission注解 |
|
响应格式 |
统一包装 |
GlobalResult统一返回 |
|
链路追踪 |
traceId |
yudao-cloud Trace |
|
限流熔断 |
Sentinel |
注解驱动 |
6.2 运营核心API
|
服务 |
接口路径 |
方法 |
运营功能 |
运营场景 |
|---|---|---|---|---|
|
合同运营 |
POST /api/bms/contract/create |
创建合同 |
新签合同录入 |
商务签约 |
|
PUT /api/bms/contract/{id}/renew |
合同续约 |
到期自动续约 |
客户维护 |
|
|
GET /api/bms/contract/{id}/prices |
查询价格 |
价格明细查询 |
价格核对 |
|
|
POST /api/bms/contract/{id}/prices |
配置价格 |
阶梯/淡旺季价格 |
价格调整 |
|
|
计费运营 |
POST /api/bms/billing/trigger |
触发计费 |
单笔/批量计费 |
异常补计 |
|
GET /api/bms/billing/details |
查询明细 |
费用明细追溯 |
客户查询 |
|
|
POST /api/bms/billing/verify |
人工校验 |
异常费用审核 |
差异处理 |
|
|
GET /api/bms/billing/exceptions |
异常列表 |
异常账单查询 |
问题排查 |
|
|
账单运营 |
POST /api/bms/bill/generate |
生成账单 |
手动生成账单 |
补单处理 |
|
GET /api/bms/bill/pool |
账单池 |
待处理账单查询 |
日常运营 |
|
|
POST /api/bms/bill/split |
账单拆分 |
账单按需拆分 |
客户要求 |
|
|
POST /api/bms/bill/merge |
账单合并 |
多单合并处理 |
客户要求 |
|
|
对账运营 |
POST /api/bms/recon/send |
发送对账 |
批量发送对账 |
月底对账 |
|
POST /api/bms/recon/confirm |
对账确认 |
在线确认对账 |
客户操作 |
|
|
POST /api/bms/recon/dispute |
差异申诉 |
提交差异申诉 |
客户异议 |
|
|
GET /api/bms/recon/pending |
待确认列表 |
待确认对账查询 |
跟进催办 |
|
|
收款运营 |
POST /api/bms/receivable/claim |
收款认领 |
银行流水匹配 |
收款认领 |
|
POST /api/bms/receivable/writeoff |
收款核销 |
应收款核销 |
收款处理 |
|
|
GET /api/bms/receivable/aging |
账龄分析 |
逾期账龄查询 |
催收管理 |
|
|
POST /api/bms/receivable/remind |
逾期提醒 |
发送催收通知 |
逾期催收 |
|
|
付款运营 |
POST /api/bms/payable/settle |
发起结算 |
承运商结算 |
付款执行 |
|
POST /api/bms/payable/approve |
付款审批 |
多级审批流 |
财务审批 |
|
|
POST /api/bms/payable/execute |
付款执行 |
银企直连付款 |
付款处理 |
|
|
GET /api/bms/payable/pending |
待付款列表 |
待付款查询 |
付款安排 |
|
|
报表运营 |
GET /api/bms/report/revenue |
收入报表 |
多维度收入分析 |
经营分析 |
|
GET /api/bms/report/cost |
成本报表 |
多维度成本分析 |
成本管控 |
|
|
GET /api/bms/report/profit |
毛利报表 |
利润分析 |
效益评估 |
|
|
GET /api/bms/report/dashboard |
运营看板 |
核心指标看板 |
日常监控 |
6.3 运营通知接口
|
通知类型 |
触发场景 |
推送方式 |
接口路径 |
|---|---|---|---|
|
账单通知 |
账单生成/变更 |
短信/邮件/站内信 |
POST /api/bms/notify/bill |
|
对账通知 |
对账发送/确认/差异 |
短信/邮件/站内信 |
POST /api/bms/notify/recon |
|
收款通知 |
收款到账/核销 |
短信/站内信 |
POST /api/bms/notify/payment |
|
逾期预警 |
逾期前3/7/15天 |
短信/邮件/站内信 |
POST /api/bms/notify/overdue |
|
付款通知 |
付款成功/失败 |
短信/站内信 |
POST /api/bms/notify/settle |
6.4 统一响应格式
{
"code": 200,
"message": "success",
"data": {
"billId": "BLL2024010001",
"billNo": "YZ2024010001",
"billType": "RECEIVABLE",
"customerId": "CUS001",
"totalAmount": 12500.00,
"status": "CONFIRMED",
"createTime": "2024-01-15 10:30:00"
},
"traceId": "abc123def456",
"timestamp": 1705303800000
}
7 业务流程设计
7.1 计费运营流程
flowchart TD
subgraph 计费触发
A1[订单完成] --> A2[出入库确认]
A2 --> A3[运输签收]
A3 --> A4{触发条件}
end
subgraph 费用计算
A4 -->|满足| B1[获取合同价格]
B1 --> B2[匹配计费规则]
B2 --> B3[费用逐项计算]
B3 --> B4[费用汇总]
end
subgraph 智能校验
B4 --> C1[AI校验]
C1 --> C2{异常识别}
C2 -->|正常| C3[通过]
C2 -->|异常| C4[标记差异]
C4 --> C5[预警通知]
end
subgraph 账单生成
C3 --> D1[生成计费明细]
D1 --> D2[按客户汇总]
D2 --> D3[生成应收账单]
D2 --> D4[生成应付账单]
end
subgraph 消息通知
D3 --> E1[推送货主]
D4 --> E2[推送承运商]
E1 --> E3[短信/邮件/站内信]
E2 --> E3
end
7.2 对账运营流程
flowchart TD
subgraph 对账准备
A1[账单周期结束] --> A2[生成对账清单]
A2 --> A3[发送对账通知]
A3 --> A4[等待客户确认]
end
subgraph 在线对账
A4 --> B1{客户反馈}
B1 -->|无异议| B2[确认对账]
B1 -->|有异议| B3[提交差异申诉]
B3 --> B4[运营审核]
B4 --> B5{申诉结果}
B5 -->|成立| B6[调整账单]
B5 -->|不成立| B7[沟通解释]
B6 --> B8[确认对账]
B7 --> B1
end
subgraph 对账完成
B2 --> C1[生成对账确认单]
B8 --> C1
C1 --> C2[解锁开票]
C2 --> C3[进入开票流程]
end
7.3 收款运营流程
flowchart TD
subgraph 到账认领
A1[客户付款] --> A2[银行收款流水]
A2 --> A3[系统自动匹配]
A3 --> A4{匹配结果}
A4 -->|自动匹配| A5[确认收款]
A4 -->|无法匹配| A6[人工认领]
A6 --> A7[运营审核]
A7 --> A8{审核结果}
A8 -->|通过| A5
A8 -->|拒绝| A9[退回处理]
end
subgraph 收款核销
A5 --> B1[获取应收账单]
B1 --> B2{金额匹配}
B2 -->|全额| B3[全额核销]
B2 -->|部分| B4[部分核销]
B4 --> B5[更新账龄]
B3 --> B6[生成收款凭证]
B5 --> B6
end
subgraph 逾期催收
B6 --> C1{是否逾期}
C1 -->|是| C2[触发催收]
C2 --> C3[发送催收通知]
C3 --> C4[记录催收结果]
C4 --> C5{催收效果}
C5 -->|成功| C6[收款认领]
C5 -->|失败| C7[升级处理]
C7 --> C8[法务介入]
end
7.4 承运商结算运营流程
flowchart TD
subgraph 结算数据准备
A1[运输完成] --> A2[生成运输记录]
A2 --> A3[关联运单数据]
A3 --> A4[计算应付费用]
end
subgraph 应付生成
A4 --> B1[按承运商汇总]
B1 --> B2[生成应付账单]
B2 --> B3[发送承运商确认]
B3 --> B4{确认结果}
B4 -->|确认| B5[进入付款]
B4 -->|异议| B6[差异处理]
B6 --> B5
end
subgraph 付款执行
B5 --> C1[发起付款申请]
C1 --> C2[运营审批]
C2 --> C3{审批结果}
C3 -->|通过| C4[提交银行]
C3 -->|拒绝| C5[退回修改]
C4 --> C6[银企直连付款]
C6 --> C7[付款成功通知]
end
8 安全架构设计
8.1 运营权限体系
|
角色 |
权限范围 |
操作限制 |
适用岗位 |
|---|---|---|---|
|
运营总监 |
全模块 |
无限制 |
高层管理 |
|
运营经理 |
本部门数据 |
查看所有报表 |
部门管理 |
|
计费专员 |
计费模块 |
仅计费操作 |
计费运营 |
|
应收专员 |
应收模块 |
仅应收操作 |
应收运营 |
|
应付专员 |
应付模块 |
仅应付操作 |
应付运营 |
|
财务专员 |
账单/凭证 |
仅查看审批 |
财务审核 |
|
货主用户 |
本企业数据 |
仅本企业 |
外部货主 |
|
承运商用户 |
本企业数据 |
仅本企业 |
外部承运商 |
8.2 运营安全策略
|
安全维度 |
策略 |
技术实现 |
|---|---|---|
|
身份认证 |
OAuth2.0 + JWT |
yudao-cloud Security |
|
权限控制 |
RBAC + 数据权限 |
@PreAuthorize + @DataPermission |
|
操作审计 |
全操作日志记录 |
ELK审计日志 |
|
敏感操作 |
二次验证/审批 |
金额阈值+多级审批 |
|
数据加密 |
传输加密+存储加密 |
HTTPS + AES |
|
接口安全 |
限流+熔断+防刷 |
Sentinel |
|
合规审计 |
财务报表审计 |
凭证追溯 |
8.3 运营合规要求
|
合规项 |
要求 |
系统实现 |
|---|---|---|
|
财务合规 |
符合会计准则 |
凭证自动生成+ERP对接 |
|
数据合规 |
敏感数据保护 |
加密存储+脱敏展示 |
|
审计合规 |
操作可追溯 |
全链路日志+traceId |
|
税务合规 |
发票规范管理 |
电子发票集成+校验 |
8.4 yudao-cloud安全配置示例
@Configuration
public class BmsSecurityConfiguration {
@Bean
public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception {
httpSecurity
// 登录配置
.formLogin()
.loginPage("/login")
.loginProcessingUrl("/api/auth/login")
.defaultSuccessUrl("/", true)
.and()
// 登出配置
.logout()
.logoutUrl("/api/auth/logout")
.logoutSuccessHandler(new LogoutSuccessHandler() {
@Override
public void onLogoutSuccess(HttpServletRequest request,
HttpServletResponse response,
Authentication authentication)
throws IOException {
response.setStatus(HttpServletResponse.SC_OK);
response.getWriter().println("Logout successful");
}
})
.and()
// CSRF 禁用
.csrf().disable()
// 安全策略
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.authorizeHttpRequests(authz -> authz
.requestMatchers("/bms/contract/**").hasAuthority("bms:contract")
.requestMatchers("/bms/billing/**").hasAuthority("bms:billing")
.requestMatchers("/bms/receivable/**").hasAuthority("bms:receivable")
.anyRequest().authenticated()
);
return httpSecurity.build();
}
}
9 部署架构设计
9.1 部署拓扑(运营视角)
graph TB
subgraph 接入层
LB[Nginx负载均衡]
WAF[WAF防火墙]
end
subgraph 网关层
Gateway[Spring Cloud Gateway<br/>yudao-cloud]
Config[配置中心Nacos]
Registry[注册中心Nacos]
end
subgraph 运营服务层
Contract[bms-contract<br/>合同运营服务]
Billing[bms-billing<br/>计费运营服务]
Receivable[bms-receivable<br/>应收运营服务]
Payable[bms-payable<br/>应付运营服务]
Report[bms-report<br/>报表运营服务]
Config[bms-config<br/>配置运营服务]
end
subgraph 运营支撑层
MQ[RabbitMQ消息队列]
Schedule[XXL-JOB定时任务]
Monitor[Prometheus+Grafana]
Log[ELK日志中心]
Tracing[Jaeger链路追踪]
end
subgraph 运营数据层
DB[(MySQL<br/>运营数据库)]
Cache[(Redis<br/>运营缓存)]
ES[(Elasticsearch<br/>运营分析库)]
end
subgraph 运营接入终端
PC[PC运营管理端<br/>MateClaw]
Mobile[移动运营APP<br/>MateClaw]
Shipper[货主门户<br/>MateClaw H5]
Carrier[承运商门户<br/>MateClaw H5]
end
LB --> WAF
WAF --> Gateway
Gateway --> Contract
Gateway --> Billing
Gateway --> Receivable
Gateway --> Payable
Gateway --> Report
Gateway --> Config
Contract --> DB
Billing --> DB
Receivable --> DB
Payable --> DB
Report --> DB
Config --> DB
Billing --> Cache
Contract --> Cache
Billing --> MQ
Receivable --> MQ
Payable --> MQ
Report --> ES
Billing --> Schedule
Receivable --> Schedule
Payable --> Schedule
Contract --> Monitor
Billing --> Monitor
Receivable --> Monitor
Payable --> Monitor
PC --> Gateway
Mobile --> Gateway
Shipper --> Gateway
Carrier --> Gateway
9.2 运营高可用设计
|
高可用策略 |
实现方式 |
运营保障 |
|---|---|---|
|
服务冗余 |
每个服务至少2实例 |
自动故障转移 |
|
数据库主从 |
主从自动切换 |
数据零丢失 |
|
缓存集群 |
Redis Cluster |
热点数据高可用 |
|
消息持久化 |
RabbitMQ镜像队列 |
消息不丢失 |
|
定时任务高可用 |
XXL-JOB路由策略 |
任务不重复执行 |
|
限流熔断 |
Sentinel降级规则 |
保护核心服务 |
|
多活部署 |
异地容灾 |
灾难快速恢复 |
10 运营控体系
10.1 运营监控指标
|
监控维度 |
核心指标 |
告警阈值 |
告警方式 |
|---|---|---|---|
|
计费监控 |
计费成功率 |
<99% |
短信+邮件 |
|
计费响应时间 |
>500ms |
邮件 |
|
|
计费异常率 |
>0.5% |
短信 |
|
|
账单监控 |
账单生成延迟 |
>5分钟 |
邮件 |
|
对账确认率 |
<95% |
短信 |
|
|
收款监控 |
逾期率 |
>5% |
短信+邮件 |
|
回款率 |
<90% |
短信 |
|
|
系统监控 |
服务可用性 |
<99.9% |
电话+短信 |
|
DB连接数 |
>80% |
邮件 |
|
|
MQ队列堆积 |
>10000 |
短信 |
10.2 运营看板设计
|
看板类型 |
展示内容 |
刷新频率 |
使用角色 |
|---|---|---|---|
|
实时监控看板 |
今日计费量、待对账、待收款、待付款 |
实时 |
运营全员 |
|
账单运营看板 |
账单状态分布、对账进度、逾期账单 |
每5分钟 |
账单运营 |
|
收款运营看板 |
回款进度、逾期分布、催收效果 |
每日 |
应收运营 |
|
成本运营看板 |
应付汇总、付款计划、成本趋势 |
每日 |
应付运营 |
|
经营分析看板 |
收入/成本/毛利、客户排名、线路效益 |
每日 |
管理层 |
10.3 运营告警处理
flowchart TD
A[告警触发] --> B{告警级别}
B -->|严重| C[立即处理]
B -->|重要| D[4小时内处理]
B -->|一般| E[24小时内处理]
C --> F[值班人员响应]
D --> G[运营主管响应]
E --> H[运营专员响应]
F --> I{是否解决}
G --> I
H --> I
I -->|解决| J[告警关闭]
I -->|未解决| K[升级处理]
K --> L[部门经理介入]
10.4 Prometheus监控配置
更多推荐



所有评论(0)