# Parking **Repository Path**: ymjake/Parking ## Basic Information - **Project Name**: Parking - **Description**: This is a learning template focused on Clean Architecture - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-25 - **Last Updated**: 2026-01-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🚗 停车计费系统设计文档 本系统为一个基于整洁架构(Clean Architecture + DDD)设计的停车计费程序。 --- ## 📌 核心业务需求 - 车牌识别系统会在车辆入场和出场的时候调用计费程序,系统会记录入场时间,并在出场时根据计费规则计算应付款。 - 付费后15分钟内可以离场,超过15分钟要补费。系统会判断是否在免费离场时间内,否则校验是否已支付足够费用。 - 车辆入场或出场失败的时候,需要通知管理员进行报警处理,确保异常情况被及时响应。 - 计费程序提供查询当前某个车牌号应付款的能力,供前端或其他系统调用。 - 支付系统会在用户付款成功后,通知计费程序进行记录,更新支付金额和时间。 - 用户可以查看某个车牌号过去的停车记录,包括入场时间、出场时间、支付金额等信息。 - 管理员可以查看当前在场车辆总数,以及某一天的营业额,便于运营统计和管理。 - 计费规则为每小时1块,不足一小时按1小时计算,向上取整。 --- ## 🌐 API 接口设计 | 方法 | 路径 | 功能说明 | |------|--------------------------------------------|----------| | `GET` | `/api/v1/parking/{licensePlateNo}/fee` | 查询当前应付款 | | `POST` | `/api/v1/parking/enter` | 车辆入场 | | `POST` | `/api/v1/parking/exit` | 车辆出场 | | `GET` | `/api/v1/parking/{licensePlateNo}` | 查询当前停车状态 | | `GET` | `/api/v1/parking/history/{licensePlateNo}` | 查询历史记录 | | `GET` | `/api/v1/parking/summary/{date}` | 查询在场车辆数与每日营业额 | | `POST` | `/api/v1/parking/pay` | 支付停车费通知 | --- ## 🧱 架构概览(整洁架构) - **Domain**:聚合根 `Parking`,领域事件(入场、支付、出场),业务规则封装。 - **Application**:CQRS 用例,规约模式,跨切抽象(时间、报警服务等)。 - **Infrastructure**:EF Core + PostgreSQL,Outbox 模式。 - **SharedKernel**:聚合根基类、领域事件接口。 - **测试分层**:支持领域单测、应用集成测试、API 功能测试,使用 Testcontainers + Respawn 提升测试隔离与效率。 --- ## 📚 推荐学习资源 - Milan Jovanovic YouTube 频道:[https://www.youtube.com/c/MilanJovanovicTech](https://www.youtube.com/c/MilanJovanovicTech) - bitbone 哔哔哩哩 [https://space.bilibili.com/24690212](https://space.bilibili.com/24690212) ---