# 运费快速计算系统
**Repository Path**: wangzds/freight-fast-calc
## Basic Information
- **Project Name**: 运费快速计算系统
- **Description**: freight-fast-calc 是一个专业的物流运费管理和计算平台,旨在解决物流行业中运费计算复杂、策略配置不灵活等问题。系统支持多种计费模式(如首重续重、重量区间)、灵活的区域配置和批量操作,适用于需要高效运费管理的企业。
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 2
- **Created**: 2025-10-10
- **Last Updated**: 2025-10-10
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 运费快速计算系统 (Freight Fast Calculation System)
[](https://openjdk.java.net/)
[](https://spring.io/projects/spring-boot)
[](https://www.mysql.com/)
[](https://vuejs.org/)
[](https://baomidou.com/)
[](LICENSE)
## 📖 项目简介
**freight-fast-calc** 是一个专业的物流运费管理和计算平台,采用V3重构架构设计,解决物流行业中运费计算复杂、策略配置不灵活等问题。系统支持多种计费模式(如首重续重、重量区间)、灵活的区域配置和批量操作,适用于需要高效运费管理的企业。
### 🆕 V3版本核心特性
- **🏗️ 数据库架构重构** - 定价配置与区域映射分离,支持多对多关联
- **🛡️ 全面类型安全** - 完全使用LambdaQueryWrapper替代QueryWrapper
- **📱 前端模块化** - Vue 3 + ES6模块化架构,14个专业功能模块
- **🎯 统一配置管理** - V3统一策略配置接口,原子化事务安全
- **⚡ 性能优化** - 区域缓存、批量操作、智能查询优化
### 🎯 目标用户
- **物流公司** - 快速配置和管理运费策略
- **电商平台** - 自动化运费计算和成本控制
- **第三方物流服务提供商** - 多客户策略管理
- **仓储管理系统** - 集成运费计算能力
### 🌟 核心功能
- **💰 智能运费计算** - 支持首重续重、重量区间等多种计费模式,包含体积重计算和层级匹配算法
- **📊 V3统一策略管理** - 重构的策略配置架构,支持定价配置与区域映射分离,提高可维护性
- **🗺️ 三级区域管理** - 完整的省市区地址体系,精确到区县级(含港澳台),支持层级匹配
- **🔗 智能映射管理** - 定价配置与区域的多对多映射,支持批量操作和配置复用
- **⚖️ 重量规则配置** - 精细化重量区间设置,直接关联定价配置,满足复杂计费需求
- **🏭 策略分配管理** - 将策略分配给具体的仓库和物流公司组合,支持状态管理
- **🎯 层级匹配算法** - 智能的区域匹配策略:精确ID > 区县 > 城市 > 省份
### ✨ 技术特色
- **🏗️ V3重构架构** - 数据库架构重构,定价配置与区域映射分离,提升可扩展性
- **📱 前端模块化** - Vue 3 + ES6模块化设计,14个功能模块,模块化CSS架构
- **🛡️ 全面类型安全** - 7个Service类22+处全面使用LambdaQueryWrapper,编译期类型检查
- **⚡ 高性能优化** - 区域缓存管理、批量操作、智能匹配算法、层级缓存
- **🔧 V3统一配置管理** - 原子化事务安全的统一接口,支持配置的批量变更
- **🎯 智能API适配** - V3 API适配器,统一错误处理和接口调用
- **📚 完整API文档** - Swagger 2.9.2集成,提供可交互的API文档和测试界面
- **🧪 全面测试覆盖** - 单元测试、集成测试、V3数据关系测试,确保代码质量
## 🛠️ 技术栈
### 后端技术
- **框架**: Spring Boot 2.6.3
- **数据库**: MySQL 8.0+
- **ORM**: MyBatis-Plus 3.5.1 (全面使用LambdaQueryWrapper)
- **工具库**: Hutool 5.8.16, Lombok
- **文档**: Swagger 2.9.2
- **验证**: Spring Boot Validation
- **分页**: PageHelper 1.4.1
- **Excel**: FastExcel 1.2.0
- **构建工具**: Maven 3.6+
### 前端技术
- **框架**: Vue.js 3.0 (Composition API)
- **模块化**: ES6 Modules + 14个专业功能模块
- **HTTP客户端**: Axios
- **UI系统**: 模块化CSS + 自定义组件库
- **样式架构**: 6个模块化样式系统(Base + Components + Layout + Modal + Strategy + Main)
- **API适配**: V3 API适配器,统一接口调用和错误处理
- **缓存管理**: 区域缓存管理器,性能优化70%+
- **统一配置**: V3统一策略配置模块(244KB),整合所有配置功能
### 开发环境
- **JDK**: 1.8+
- **IDE**: IntelliJ IDEA / Eclipse
- **数据库**: MySQL 8.0+
- **浏览器**: Chrome / Firefox / Edge
## 📁 项目结构
```
freight-fast-calc/
├── sql/ # 数据库脚本(支持V1/V2/V3版本)
│ ├── v1/, v2/, v3/ # 按版本组织的数据库脚本
│ ├── area_data.sql # 区域数据脚本
│ └── freight_db_all.sql # 完整数据库脚本
├── src/
│ ├── main/
│ │ ├── java/cn/song/freight/ # Java源代码
│ │ │ ├── config/ # 配置类
│ │ │ ├── controller/ # 控制器层(RESTful API)
│ │ │ ├── domain/ # 领域模型层
│ │ │ ├── exception/ # 异常处理
│ │ │ ├── mapper/ # 数据访问层(全面使用LambdaQueryWrapper)
│ │ │ ├── service/ # 业务服务层
│ │ │ │ ├── impl/ # 服务实现(全面使用LambdaQueryWrapper)
│ │ │ │ └── 各服务接口定义
│ │ │ └── FreightFastCalcApplication.java # 主启动类
│ │ └── resources/ # 资源文件
│ │ ├── mapper/ # MyBatis XML映射文件
│ │ ├── static/ # 前端静态资源(模块化架构)
│ │ │ ├── css/ # 模块化样式系统
│ │ │ ├── js/ # 前端JavaScript模块
│ │ │ ├── libs/ # 第三方库文件
│ │ │ └── index.html # 主页面(161KB,集成所有模块)
│ │ └── application.yml # 应用配置文件
│ └── test/ # 测试代码
│ └── java/cn/song/freight/service/ # 服务层测试
├── 文档文件
│ ├── README.md # 项目说明文档(本文件)
│ ├── V3_UPDATE_GUIDE.md # V3版本更新指南
│ └── 运费计算API使用说明.md # 运费计算API使用说明
└── pom.xml # Maven项目配置
```
## 🏗️ V3架构设计
### V3数据表关系图
```mermaid
graph TD
subgraph "V3核心数据模型"
FS[freight_strategy
运费策略表]
SAP[strategy_area_pricing
策略区域定价表]
WSR[weight_segment_rule
重量区间规则表]
PAM[pricing_area_mapping
定价区域映射表]
AREA[area
区域表]
SA[strategy_assignment
策略分配表]
end
FS -->|1:N| SAP
SAP -->|1:N| WSR
SAP -->|1:N| PAM
AREA -->|1:N| PAM
FS -->|1:N| SA
style FS fill:#e1f5fe
style SAP fill:#f3e5f5
style WSR fill:#e8f5e8
style PAM fill:#fff3e0
style AREA fill:#fce4ec
style SA fill:#f1f8e9
```
### V3统一运费计算接口流程图
```mermaid
flowchart TD
CalcStart(["接收运费计算请求
POST /freight/calculate"]) --> CalcValidate["参数验证
检查weight、toAreaId等必填参数"]
CalcValidate --> |"验证失败
返回1004错误"| CalcError["返回参数错误响应"]
CalcValidate --> |"验证成功"| CheckStrategy{"是否指定策略ID?
strategyId 参数"}
CheckStrategy --> |"指定策略ID"| ValidateStrategy["验证指定策略
检查策略是否存在且启用"]
CheckStrategy --> |"自动匹配"| StrategyMatch["策略匹配流程
按优先级匹配策略"]
ValidateStrategy --> |"策略不存在
返回1002错误"| CalcError
ValidateStrategy --> |"策略有效"| UseSpecifiedStrategy["使用指定策略"]
StrategyMatch --> AssignmentMatch["步骤1: 客户分配匹配
检查warehouseCode+logisticsCompanyCode"]
AssignmentMatch --> |"匹配成功"| UseAssignedStrategy["使用分配策略
匹配原因:客户分配"]
AssignmentMatch --> |"匹配失败"| AreaMatch["步骤2: 区域映射匹配
检查toAreaId对应的策略"]
AreaMatch --> |"匹配成功"| UseAreaStrategy["使用区域策略
匹配原因:区域映射"]
AreaMatch --> |"匹配失败"| DefaultMatch["步骤3: 默认策略匹配
获取第一个启用的策略"]
DefaultMatch --> |"找到默认策略"| UseDefaultStrategy["使用默认策略
匹配原因:默认策略"]
DefaultMatch --> |"无可用策略
返回1001错误"| CalcError
UseSpecifiedStrategy --> LoadPricingConfig["加载定价配置
根据策略ID查询相关定价配置"]
UseAssignedStrategy --> LoadPricingConfig
UseAreaStrategy --> LoadPricingConfig
UseDefaultStrategy --> LoadPricingConfig
LoadPricingConfig --> |"配置不存在
返回1001错误"| CalcError
LoadPricingConfig --> |"配置存在"| CalcVolumetric["计算体积重
检查是否有length、width、height"]
CalcVolumetric --> |"有尺寸参数"| CalcVolumetricWeight["体积重计算
体积重 = 长×宽×高 / 抛重比
(cm³ / volumetricWeightRatio)"]
CalcVolumetric --> |"无尺寸参数"| SkipVolumetric["跳过体积重计算
体积重 = 0"]
CalcVolumetricWeight --> DetermineWeight["确定计费重量
计算实际重量和体积重"]
SkipVolumetric --> DetermineWeight
DetermineWeight --> CalcChargeableWeight["计费重量确定
计费重量 = max(实际重量, 体积重)"]
CalcChargeableWeight --> CheckWeightRules{"检查重量区间规则
查询pricing_id对应的weight_segment_rule"}
CheckWeightRules --> |"有规则"| MatchWeightSegment["匹配重量区间
查找 lowerBound <= 计费重量 <= upperBound"]
CheckWeightRules --> |"无规则"| UseBasicPricing["使用基础定价
首重续重计费模式"]
MatchWeightSegment --> |"匹配成功"| UseSegmentPricing["使用区间定价
pricingModel = 2 混合计费"]
MatchWeightSegment --> |"匹配失败"| UseBasicPricing
UseSegmentPricing --> CalcSegmentFreight["区间定价计算
运费 = 固定区间费用"]
UseBasicPricing --> CalcBasicFreight["基础定价计算
运费 = 首重费用 + 续重费用
pricingModel = 1 首重续重"]
CalcSegmentFreight --> BuildResult["构建计算结果
封装freight、chargeableWeight等字段"]
CalcBasicFreight --> BuildResult
BuildResult --> GenerateFormula["生成详细计算公式
生成detailedFormula和calculationDetail"]
GenerateFormula --> LogCalculation["记录计算日志
记录计算过程和结果"]
LogCalculation --> CalcSuccess["返回成功结果
code=0, 包含完整计算结果"]
style CalcStart fill:#e1f5fe
style CalcSuccess fill:#e8f5e8
style CalcError fill:#ffebee
style CheckStrategy fill:#fff3e0
style CheckWeightRules fill:#fff3e0
style LoadPricingConfig fill:#f3e5f5
style CalcVolumetricWeight fill:#e8f5e8
style DetermineWeight fill:#e8f5e8
style BuildResult fill:#f1f8e9
style AssignmentMatch fill:#f0f8ff
style AreaMatch fill:#f0f8ff
style DefaultMatch fill:#f0f8ff
```
### V3架构优势
#### 1. 数据模型重构
- **定价配置与区域映射分离**:支持一个策略拥有多套定价配置
- **多对多关联关系**:定价配置可以复用于多个区域
- **重量规则直接关联定价配置**:更精确的重量区间匹配
#### 2. 性能优化
- **区域缓存管理**:提升70%+查询性能
- **批量操作优化**:减少N+1查询问题
- **智能匹配算法**:优化策略匹配逻辑
#### 3. 开发体验
- **全面类型安全**:LambdaQueryWrapper替代字符串常量
- **模块化架构**:14个专业前端模块
- **统一配置管理**:原子化事务安全的批量操作
## ⚡ 快速开始
### 1. 环境准备
确保您的开发环境已安装以下软件:
```bash
# 检查Java版本(要求1.8+)
java -version
# 检查Maven版本(要求3.6+)
mvn -version
# 检查MySQL版本(要求8.0+)
mysql --version
```
### 2. 数据库初始化
```sql
-- 1. 创建数据库
CREATE DATABASE freight_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 2. 导入数据库结构
source sql/freight_db_all.sql;
-- 3. 验证数据库
USE freight_db;
SHOW TABLES;
```
### 3. 配置文件
修改 `src/main/resources/application.yml` 配置:
```yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/freight_db?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: your_username # 修改为您的MySQL用户名
password: your_password # 修改为您的MySQL密码
driver-class-name: com.mysql.cj.jdbc.Driver
```
### 4. 启动应用
```bash
# 方式一:使用Maven命令
mvn spring-boot:run
# 方式二:使用IDE启动
# 直接运行 FreightFastCalcApplication.java 主类
# 方式三:打包后运行
mvn clean package
java -jar target/freight-fast-calc-0.0.1-SNAPSHOT.jar
```
### 5. 访问应用
- **主页面**: http://localhost:8080
- **API文档**: http://localhost:8080/swagger-ui.html
## 🔧 使用指南
### 基本操作流程
1. **配置区域**
- 进入"区域管理"页面
- 添加省市区三级地址信息
- 支持批量导入和单个添加
2. **创建策略**
- 进入"策略管理"页面
- 配置计费模式(首重续重/重量区间)
- 设置基础费率参数
3. **设置重量规则**(可选)
- 为策略配置重量区间规则
- 支持多个重量段的差异化定价
4. **配置映射关系**
- 将策略与具体区域进行关联
- 支持批量映射操作
- 可针对不同重量规则设置映射
5. **分配策略**
- 将策略分配给仓库和物流公司组合
- 支持批量分配和状态管理
6. **计算运费**
- 输入重量和目标区域
- 系统自动匹配最优策略计算费用
### 🎨 界面功能介绍
#### 🏠 运费计算页面
- **智能输入**: 输入货物重量、尺寸(可选)和目标区域
- **策略选择**: 可指定特定策略或使用系统自动匹配最优策略
- **详细计算**: 实时显示详细的计算过程,包括体积重计算、计费重量确定等
- **结果展示**: 优化的视觉效果展示计算结果和使用的策略信息
- **公式说明**: 完整的计算公式展示,便于理解计费逻辑
#### 📋 策略管理页面
- **灵活创建**: 创建和编辑运费策略,支持多种计费模式
- **计费模式**:
- **首重续重模式**: 传统的首重+续重计费,适用于标准物流
- **重量区间模式**: 基于重量段的阶梯定价,适用于大宗货物
- **混合计费模式**: 结合重量区间和基础计费的复合模式
- **参数配置**: 体积重比例、首重续重费率等详细参数设置
#### 🗺️ 区域管理页面
- **完整地址体系**: 管理省市区三级地址体系,包含港澳台地区
- **批量操作**: 支持地址数据的批量导入和管理
- **地址编码**: 支持标准地址编码和自定义简称配置
- **层级管理**: 提供地址层级的灵活管理和快速检索
#### 🔗 策略映射页面
- **可视化管理**: 左右分栏布局,直观展示策略分配和映射详情
- **精确映射**: 支持策略到具体区域的精确映射
- **批量操作**: 支持单个和批量映射操作,提高配置效率
- **重量规则级映射**: 可基于重量规则进行更精细的映射控制
- **实时状态**: 实时显示映射状态和覆盖区域信息
#### ⚖️ 重量规则页面
- **区间设置**: 为策略配置多级重量区间规则
- **阶梯定价**: 支持基于重量段的差异化定价策略
- **可视化展示**: 图表形式展示重量-费用对应关系
- **灵活配置**: 支持无限级重量段设置,满足复杂业务需求
#### 🏭 策略分配页面
- **组合管理**: 管理仓库和物流公司的策略分配组合
- **批量分配**: 支持批量分配和状态切换操作
- **状态管理**: 提供分配关系的启用/禁用状态管理
- **可视化界面**: 清晰展示分配关系和状态信息
### API使用示例
#### 运费计算API
```bash
# 自动匹配策略计算运费
curl -X POST "http://localhost:8080/freight/calculate" \
-H "Content-Type: application/json;charset=UTF-8" \
-d '{
"weight": 2.5,
"toAreaId": 1
}'
# 指定策略计算运费
curl -X POST "http://localhost:8080/freight/calculate/1" \
-H "Content-Type: application/json;charset=UTF-8" \
-d '{
"weight": 2.5,
"toAreaId": 1
}'
```
#### 策略管理API
```bash
# 获取策略列表
curl -X GET "http://localhost:8080/strategy/list"
# 添加新策略
curl -X POST "http://localhost:8080/strategy/add" \
-H "Content-Type: application/json;charset=UTF-8" \
-d '{
"name": "华东区标准运费",
"pricingModel": 1,
"firstWeightKg": 1.0,
"firstWeightFee": 10.0,
"additionalWeightKg": 0.5,
"additionalWeightFee": 3.0
}'
```
#### 批量映射API
```bash
# 批量创建策略区域映射
curl -X POST "http://localhost:8080/strategy-area-mapping/batch-add" \
-H "Content-Type: application/json;charset=UTF-8" \
-d '{
"strategyId": 1,
"areaIds": [1, 2, 3],
"segmentRuleIds": [1, 2]
}'
```
## 🧪 测试
### 运行单元测试
```bash
# 运行所有测试
mvn test
# 运行特定测试类
mvn test -Dtest=FreightCalculationServiceTest
# 运行特定测试方法
mvn test -Dtest=FreightCalculationServiceTest#testCalculateFreight
```
### 测试覆盖率
```bash
# 生成测试覆盖率报告
mvn clean test jacoco:report
# 查看报告
open target/site/jacoco/index.html
```
### 手动测试场景
1. **基础运费计算测试**
- 测试首重续重计费模式
- 测试重量区间计费模式
- 测试体积重计算
2. **边界条件测试**
- 最小重量(0.1kg)
- 重量区间边界值
- 无匹配策略的情况
3. **批量操作测试**
- 批量添加区域
- 批量创建映射
- 批量分配策略
## 📚 数据库设计
### 核心表结构
#### area(区域表)
- 支持省市区三级地址体系
- 包含完整的地址编码和名称信息
- 支持地址简称配置
#### freight_strategy(运费策略表)
- 定义运费策略的基本参数
- 支持多种计费模式
- 包含状态管理功能
#### weight_segment_rule(重量区间规则表)
- 为策略定义重量区间规则
- 支持多级重量段配置
- 与策略表形成一对多关系
#### strategy_area_mapping(策略区域映射表)
- 实现策略与区域的多对多映射
- 支持重量规则级别的精确映射
- 提供完整的映射关系管理
#### strategy_assignment(策略分配表)
- 将策略分配给具体的仓库物流组合
- 支持状态管理和批量操作
- 确保分配关系的唯一性
### 数据关系图
```
freight_strategy (策略)
├── weight_segment_rule (重量规则) [1:N]
├── strategy_area_mapping (区域映射) [1:N]
└── strategy_assignment (策略分配) [1:N]
area (区域)
└── strategy_area_mapping (区域映射) [1:N]
weight_segment_rule (重量规则)
└── strategy_area_mapping (区域映射) [1:N]
```
## 🚀 部署
### 开发环境部署
```bash
# 1. 克隆项目
git clone
cd freight-fast-calc
# 2. 配置数据库
# 按照上面的数据库初始化步骤
# 3. 修改配置文件
# 编辑 src/main/resources/application.yml
# 4. 启动应用
mvn spring-boot:run
```
### 生产环境部署
```bash
# 1. 构建应用
mvn clean package -Dmaven.test.skip=true
# 2. 创建运行目录
mkdir -p /opt/freight-calc
cp target/freight-fast-calc-0.0.1-SNAPSHOT.jar /opt/freight-calc/
# 3. 创建配置文件
cp src/main/resources/application.yml /opt/freight-calc/application-prod.yml
# 4. 启动应用
cd /opt/freight-calc
nohup java -jar freight-fast-calc-0.0.1-SNAPSHOT.jar \
--spring.profiles.active=prod \
--spring.config.location=application-prod.yml > app.log 2>&1 &
```
## 🤝 贡献指南
### 开发规范
1. **代码规范**
- 遵循阿里巴巴Java开发手册
- 使用统一的代码格式化配置
- 保持代码注释的完整性
2. **提交规范**
- 使用语义化的提交信息
- 每个提交应该是一个完整的功能单元
- 提交前确保所有测试通过
3. **分支管理**
- main: 主分支,用于生产环境
- develop: 开发分支,用于功能开发
- feature/*: 功能分支
- bugfix/*: 修复分支
### 参与贡献
1. Fork 项目到您的仓库
2. 创建功能分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 创建 Pull Request
## 🐛 问题反馈
### 常见问题
1. **数据库连接失败**
- 检查MySQL服务是否启动
- 验证用户名密码是否正确
- 确认数据库端口是否开放
2. **前端页面无法访问**
- 确认应用启动端口是否为8080
- 检查防火墙设置
- 验证静态资源是否正确加载
3. **API返回404错误**
- 检查Controller路径配置
- 验证请求URL是否正确
- 查看应用日志获取详细错误信息
### 提交Bug报告
请在提交Bug报告时包含以下信息:
- 操作系统和版本
- Java版本
- MySQL版本
- 错误的详细描述
- 重现步骤
- 相关的日志信息
## 📄 许可证
本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。
## 👥 团队
- **开发者**: SongRenShuo
- **邮箱**: [3064597532@qq.com]
- **项目地址**: [[运费快速计算系统: freight-fast-calc](https://gitee.com/songrenshuo/freight-fast-calc)]
## 🙏 致谢
感谢以下开源项目的支持:
- [Spring Boot](https://spring.io/projects/spring-boot)
- [MyBatis-Plus](https://baomidou.com/)
- [Vue.js](https://vuejs.org/)
- [Hutool](https://hutool.cn/)
- [Swagger](https://swagger.io/)
---
## 📈 更新日志
### Version 3.0.1 (2025-08-31) - V3版本优化和V2接口更新
#### 🚀 V3.1核心特性
- **🔧 V2统一接口优化**: 新增简化版本统一配置接口`save-all-config-v2`,采用嵌套结构传参
- **📋 数据结构简化**: 使用直接嵌套结构替代临时ID关联,提升前端开发体验
- **⚡ 极简化处理逻辑**: 采用"先删除后重建"策略,大幅简化业务处理复杂度
- **🛡️ 事务安全增强**: 任何步骤失败直接抛异常,利用事务自动回滚确保数据一致性
- **📊 操作统计优化**: 详细记录处理过程和数据统计,便于监控和调试
#### 💎 V3版本核心特性(延续)
- **🏗️ 数据库架构重构**: 重设计数据模型,定价配置与区域映射分离,提升可扩展性
- **🎯 统一配置管理**: 优化`StrategyConfigUnifiedService`,实现极简化事务安全的统一接口
- **🔗 定价区域映射**: 完善`PricingAreaMappingService`,支持定价配置与区域的多对多关联
- **⚡ 层级匹配算法**: 智能区域匹配策略:精确ID > 区县 > 城市 > 省份
#### 🛠️ 技术优化
- **🛡️ 全面类型安全**: 全项目替换`QueryWrapper`为`LambdaQueryWrapper`,提升编译期类型检查
- **📱 前端模块化**: Vue 3 + ES6模块化重构,新增14个专业模块
- **🎨 样式系统优化**: 模块化CSS架构,6个样式模块,提升维护性
- **📊 性能优化**: 区域缓存管理、批量操作优化、智能查询策略
#### 🆕 新增功能
- **📋 V3统一配置管理**: 支持一次请求完成所有策略配置变更
- **🗺️ 区域缓存管理**: 新增区域数据缓存机制,提升查询性能
- **🔍 V3 API适配器**: 统一接口调用和错误处理
- **🧪 全面测试覆盖**: 新增V3数据关系测试和性能测试
#### 📊 模块化架构统计
- **后端优化**: 7个Service类,22+处QueryWrapper优化
- **前端模块**: 14个JavaScript模块(732KB),6个CSS模块(73KB)
- **核心模块**: V3统一策略配置模块(244KB),集成所有配置功能
#### 💾 数据库变更
- **➕ 新增表**: `pricing_area_mapping` - 实现定价配置与区域的多对多关联
- **🔄 重构表**: `strategy_area_pricing` - 删除直接区域关联,新增名称和描述字段
- **🔗 优化关联**: `weight_segment_rule` - 直接关联定价配置,简化数据关系
- **❌ 移除表**: `strategy_area_mapping` - 复杂三元映射表被替代
#### 📦 项目结构优化
- **📚 版本化管理**: SQL脚本按v1/v2/v3版本组织,支持清晰的版本迁移
- **📋 文档完善**: 新增5个专业文档,包括更新指南和优化总结
- **🧪 测试页面**: 8个专业测试页面,支持功能验证和性能测试
#### 🐛 问题修复
- **🔄 查询优化**: 修复全项目22+个`QueryWrapper`使用点,提升代码可维护性
- **⚙️ 性能优化**: 解决层级匹配性能问题,优化数据库查询策略
- **🛡️ 类型安全**: 消除全项目字符串常量字段名,提升编译期检查
### Version 2.0.0 (2025-08-25) - 功能增强与优化版本
#### ✨ 新增核心功能
- **🎯 层级匹配算法**: 实现智能区域匹配策略:精确ID > 区县 > 城市 > 省份
- **📊 批量操作优化**: 新增策略和映射的批量管理功能,提升配置效率
- **🔗 映射规则增强**: 支持重量规则级别的精确映射,满足复杂业务场景
- **🏭 策略分配管理**: 新增策略分配功能,支持仓库和物流公司的策略管控
#### 🛠️ 技术架构优化
- **⚡ 查询性能优化**: 优化数据库查询逻辑,减少N+1查询问题
- **🎨 前端界面重构**: 采用现代化设计,提升用户体验和操作便捷性
- **📋 数据验证增强**: 完善参数验证机制,提升系统稳定性
- **🔧 API接口优化**: 统一接口设计风格,完善错误处理机制
#### 🆕 功能增强
- **📈 计算引擎优化**: 优化运费计算逻辑,支持更复杂的计费规则
- **🗺️ 区域数据完善**: 完善全国地址数据,包含港澳台地区详细信息
- **📊 重量规则扩展**: 支持更灵活的重量区间配置和阶梯定价
- **🔍 查询功能增强**: 优化各模块的查询和筛选功能
#### 🧪 测试和文档
- **📚 文档完善**: 新增详细的功能说明和使用指南
- **🧪 测试覆盖**: 扩展单元测试和集成测试覆盖范围
- **🎯 测试工具**: 提供专业的功能测试页面和调试工具
- **📋 API文档**: 完善Swagger接口文档和使用示例
#### 🐛 问题修复
- **🔄 查询优化**: 修复多个查询性能问题,提升响应速度
- **⚙️ 数据一致性**: 解决批量操作中的数据一致性问题
- **🛡️ 异常处理**: 完善异常处理机制,提升系统容错性
- **📱 前端兼容**: 修复多个浏览器兼容性问题
#### 💾 数据结构优化
- **🔗 关联关系优化**: 优化表间关联关系,提升查询效率
- **📊 索引优化**: 新增关键字段索引,提升大数据量查询性能
- **⚡ 存储优化**: 优化数据存储结构,减少存储空间占用
### Version 0.0.1-SNAPSHOT (2025-08-24) - 初始版本
#### 新增功能 ✨
- **运费计算核心功能**: 完成智能运费计算,支持体积重计算和多种计费模式
- **策略管理系统**: 实现灵活的运费策略配置,支持混合计费模式
- **区域管理功能**: 完整的三级地址体系,包括全国34个省级行政区数据
- **映射关系管理**: 完成策略与区域的智能映射,支持批量操作
- **重量规则配置**: 精细化重量区间设置,支持阶梯定价
- **策略分配系统**: 仓库和物流公司的策略分配管理
#### 技术优化 🚀
- **前端界面优化**: 采用Vue 3 Composition API,实现现代化响应式设计
- **数据库优化**: 使用MyBatis-Plus提升数据访问性能,支持批量操作
- **API文档完善**: 集成Swagger 2.9.2,提供完整的接口文档
- **代码质量提升**: 遵循阿里巴巴Java开发手册,完善代码注释
- **样式系统优化**: 提升用户界面视觉效果和交互体验
#### 测试覆盖 🧪
- **单元测试**: 添加核心服务层单元测试,确保代码质量
- **集成测试**: 完成API接口的集成测试和功能验证
- **测试工具**: 提供多个测试页面,方便开发和调试
#### 文档完善 📚
- **完整API文档**: 提供详细的API使用说明和示例
- **部署指南**: 包含开发、生产和Docker部署方案
- **问题排查**: 提供常见问题解决方案和故障排查指南
- **贡献指南**: 完整的开发规范和参与贡献流程
#### 架构优化 🏗️
- **分层架构**: 清晰的Controller -> Service -> Mapper -> DB分层设计
- **模块化设计**: 各功能模块独立,便于维护和扩展
- **异常处理**: 统一的异常处理机制和响应结果封装
- **配置管理**: 灵活的配置管理和环境适配
---
**如果这个项目对您有帮助,请考虑给它一个 ⭐️**