# 运费快速计算系统 **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) [![Java](https://img.shields.io/badge/Java-8+-orange.svg)](https://openjdk.java.net/) [![Spring Boot](https://img.shields.io/badge/Spring%20Boot-2.6.3-green.svg)](https://spring.io/projects/spring-boot) [![MySQL](https://img.shields.io/badge/MySQL-8.0+-blue.svg)](https://www.mysql.com/) [![Vue.js](https://img.shields.io/badge/Vue.js-3.0+-green.svg)](https://vuejs.org/) [![MyBatis-Plus](https://img.shields.io/badge/MyBatis--Plus-3.5.1-blue.svg)](https://baomidou.com/) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](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分层设计 - **模块化设计**: 各功能模块独立,便于维护和扩展 - **异常处理**: 统一的异常处理机制和响应结果封装 - **配置管理**: 灵活的配置管理和环境适配 --- **如果这个项目对您有帮助,请考虑给它一个 ⭐️**