MSuMshk 725f89ae24 feat: Add tiered packaging fee support for stores
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.
2026-01-26 09:26:49 +08:00
2025-12-01 13:26:05 +08:00
2025-11-23 01:25:20 +08:00
2026-01-06 04:11:34 +00:00
2026-01-05 10:26:11 +08:00
2025-12-30 19:56:24 +08:00

外卖SaaS系统 (TakeoutSaaS)

项目简介

外卖SaaS系统是一个基于.NET 10的多租户外卖管理平台为中小型餐饮企业提供完整的外卖业务解决方案。系统采用现代化的技术栈支持商家管理、菜品管理、订单处理、配送管理、支付集成等核心功能。

核心特性

  • 多租户架构支持多租户数据隔离SaaS模式运营
  • 商家管理:完善的商家入驻、门店管理、菜品管理功能
  • 订单管理:订单全生命周期管理,实时状态跟踪
  • 配送管理:配送任务、路线规划、第三方配送对接
  • 支付集成:支持微信、支付宝等多种支付方式
  • 营销功能:优惠券、满减活动、会员积分
  • 字典管理:系统字典、租户覆盖、批量导入导出、缓存监控
  • 数据分析:实时数据统计、经营报表、趋势分析
  • 安全可靠JWT认证、权限控制、数据加密

技术栈

后端技术

  • .NET 10:最新的.NET平台
  • ASP.NET Core Web APIRESTful API服务
  • Entity Framework Core 10最新ORM框架
  • Dapper 2.1+:高性能数据访问
  • PostgreSQL 16+:主数据库
  • Redis 7.0+:分布式缓存
  • RabbitMQ 3.12+:消息队列

开发框架

  • AutoMapper:对象映射
  • FluentValidation:数据验证
  • Serilog:结构化日志
  • MediatRCQRS模式
  • Hangfire:后台任务
  • SwaggerAPI文档

运行条件

开发环境要求

  • .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 文档:

字典管理

最后更新日期2025-12-30

功能概述

  • 系统/业务字典分组与字典项管理
  • 租户覆盖:隐藏系统项、自定义字典项、拖拽排序
  • CSV/JSON 批量导入导出
  • 两级缓存Memory + Redis与缓存监控指标

配置要点

  • ConnectionStrings:RedisRedis 连接字符串
  • Database:DataSources:DictionaryDatabase:字典库读写连接
  • Dictionary:Cache:SlidingExpiration:字典缓存滑动过期
  • CacheWarmup:DictionaryCodes:缓存预热字典编码列表

公告管理

最后更新日期2025-12-20

功能概述

  • 支持平台公告与租户公告统一管理TenantId=0 代表平台公告)
  • 状态机:草稿 → 已发布 → 已撤销(已发布不可编辑)
  • 支持目标受众过滤与未读/已读能力

快速开始(示例流程)

  1. 创建公告(草稿)
  2. 发布公告(进入 Published
  3. 应用端获取可见公告列表与未读公告
stateDiagram-v2
  [*] --> Draft
  Draft --> Published: publish
  Published --> Revoked: revoke
  Revoked --> Published: republish

关键概念

  • StatusDraft/Published/Revoked已发布不可编辑
  • RowVersion并发控制字段Base64
  • TargetType/TargetParameters:目标受众过滤

相关文档

  • docs/api/announcements-api.md
  • docs/permissions/announcement-permissions.md
  • docs/adr/0001-announcement-status-state-machine.md
  • docs/observability/announcement-events.md
  • docs/migrations/announcement-status-migration.md
  • docs/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

详细部署文档请参考:部署运维文档

文档

开发规范

请遵循项目的开发规范

贡献指南

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'feat: Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 创建 Pull Request

许可证

本项目采用 MIT 许可证

联系方式

协作者

感谢所有为本项目做出贡献的开发者!


如果这个项目对你有帮助,请给我们一个星标!

Description
No description provided
Readme 6.4 MiB
Languages
C# 100%