725f89ae246b91e40ab5ab8a3bebc52db2b8274d
Introduces tiered packaging fee configuration for stores by adding OrderPackagingFeeMode and PackagingFeeTiers fields to StoreFee. Updates DTOs, validators, handlers, and mapping logic to support both fixed and tiered packaging fee modes. Adds StoreFeeTierHelper for tier normalization and serialization, and includes a database migration to persist the new fields.
外卖SaaS系统 (TakeoutSaaS)
项目简介
外卖SaaS系统是一个基于.NET 10的多租户外卖管理平台,为中小型餐饮企业提供完整的外卖业务解决方案。系统采用现代化的技术栈,支持商家管理、菜品管理、订单处理、配送管理、支付集成等核心功能。
核心特性
- 多租户架构:支持多租户数据隔离,SaaS模式运营
- 商家管理:完善的商家入驻、门店管理、菜品管理功能
- 订单管理:订单全生命周期管理,实时状态跟踪
- 配送管理:配送任务、路线规划、第三方配送对接
- 支付集成:支持微信、支付宝等多种支付方式
- 营销功能:优惠券、满减活动、会员积分
- 字典管理:系统字典、租户覆盖、批量导入导出、缓存监控
- 数据分析:实时数据统计、经营报表、趋势分析
- 安全可靠:JWT认证、权限控制、数据加密
技术栈
后端技术
- .NET 10:最新的.NET平台
- ASP.NET Core Web API:RESTful API服务
- Entity Framework Core 10:最新ORM框架
- Dapper 2.1+:高性能数据访问
- PostgreSQL 16+:主数据库
- Redis 7.0+:分布式缓存
- RabbitMQ 3.12+:消息队列
开发框架
- AutoMapper:对象映射
- FluentValidation:数据验证
- Serilog:结构化日志
- MediatR:CQRS模式
- Hangfire:后台任务
- Swagger:API文档
运行条件
开发环境要求
- .NET SDK 10.0 或更高版本
- PostgreSQL 16+
- Redis 7.0+
- RabbitMQ 3.12+(可选)
- Docker Desktop(推荐,用于容器化开发)
推荐IDE
- Visual Studio 2022
- JetBrains Rider
- Visual Studio Code
快速开始
1. 克隆项目
git clone https://github.com/your-org/takeout-saas.git
cd takeout-saas
2. 使用Docker Compose启动依赖服务(推荐)
# 启动PostgreSQL、Redis、RabbitMQ等服务
docker-compose up -d
# 查看服务状态
docker-compose ps
3. 配置数据库连接
编辑 src/TakeoutSaaS.Api/appsettings.Development.json
4. 执行数据库迁移
cd src/TakeoutSaaS.Api
dotnet ef database update
5. 运行项目
dotnet run
访问 API 文档:
- 管理后台 AdminApi Swagger:http://localhost:5001/api/docs
- 小程序/用户端 MiniApi Swagger:http://localhost:5002/api/docs
字典管理
最后更新日期:2025-12-30
功能概述
- 系统/业务字典分组与字典项管理
- 租户覆盖:隐藏系统项、自定义字典项、拖拽排序
- CSV/JSON 批量导入导出
- 两级缓存(Memory + Redis)与缓存监控指标
配置要点
ConnectionStrings:Redis:Redis 连接字符串Database:DataSources:DictionaryDatabase:字典库读写连接Dictionary:Cache:SlidingExpiration:字典缓存滑动过期CacheWarmup:DictionaryCodes:缓存预热字典编码列表
公告管理
最后更新日期:2025-12-20
功能概述
- 支持平台公告与租户公告统一管理(TenantId=0 代表平台公告)
- 状态机:草稿 → 已发布 → 已撤销(已发布不可编辑)
- 支持目标受众过滤与未读/已读能力
快速开始(示例流程)
- 创建公告(草稿)
- 发布公告(进入 Published)
- 应用端获取可见公告列表与未读公告
stateDiagram-v2
[*] --> Draft
Draft --> Published: publish
Published --> Revoked: revoke
Revoked --> Published: republish
关键概念
Status:Draft/Published/Revoked,已发布不可编辑RowVersion:并发控制字段(Base64)TargetType/TargetParameters:目标受众过滤
相关文档
docs/api/announcements-api.mddocs/permissions/announcement-permissions.mddocs/adr/0001-announcement-status-state-machine.mddocs/observability/announcement-events.mddocs/migrations/announcement-status-migration.mddocs/technical-debt.md
项目结构
TakeoutSaaS/
├── 0_Document/ # 项目文档
│ ├── 01_项目概述.md
│ ├── 02_技术架构.md
│ ├── 03_数据库设计.md
│ ├── 04A_管理后台API.md
│ ├── 04B_小程序API.md
│ ├── 05_部署运维.md
│ └── 06_开发规范.md
├── src/
│ ├── TakeoutSaaS.AdminApi/ # 管理后台 Web API
│ ├── TakeoutSaaS.MiniApi/ # 小程序/用户端 Web API
│ ├── TakeoutSaaS.Application/ # 应用层
│ ├── TakeoutSaaS.Domain/ # 领域层
│ ├── TakeoutSaaS.Infrastructure/ # 基础设施层
│ └── TakeoutSaaS.Shared/ # 共享层
├── tests/
│ ├── TakeoutSaaS.UnitTests/ # 单元测试
│ └── TakeoutSaaS.IntegrationTests/ # 集成测试
├── docker-compose.yml # Docker编排文件
└── README.md
测试说明
运行单元测试
dotnet test tests/TakeoutSaaS.UnitTests
运行集成测试
dotnet test tests/TakeoutSaaS.IntegrationTests
部署说明
Docker部署
# 构建镜像
docker build -t takeout-saas-api:latest .
# 运行容器
docker run -d -p 8080:80 --name takeout-api takeout-saas-api:latest
详细部署文档请参考:部署运维文档
文档
- 项目概述 - 系统介绍和业务说明
- 技术架构 - 技术栈和架构设计
- 数据库设计 - 数据模型和表结构
- API接口设计 - RESTful API规范
- 部署运维 - 部署和运维指南
- 开发规范 - 代码规范和最佳实践
开发规范
请遵循项目的开发规范
贡献指南
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'feat: Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 创建 Pull Request
许可证
本项目采用 MIT 许可证
联系方式
协作者
感谢所有为本项目做出贡献的开发者!
⭐ 如果这个项目对你有帮助,请给我们一个星标!
Description
Languages
C#
100%