# PMS 模块二次开发 ToDoList ## 阶段 0: 项目初始化与理解 - [x] **阅读核心文档:** - [x] 仔细阅读《PMS数据模型.md》,完全理解PMS核心表的结构、字段定义、关系以及主键/外键/索引规范。 - [x] 仔细阅读《PMS需求.md》,明确PMS核心模块 [P0] 阶段必须实现的功能需求(房态、订单核心生命周期、基础财务支付、租户级系统管理基础)。 - [x] 通读《RuoYi-Vue-Plus二次开发最佳实践.md》,重点关注以下章节: - Chapter 1: 引言 (文档目的, 模块化特性, **二次开发核心原则**, **Cursor使用优势**) - Chapter 2: 环境准备与项目结构 (前后端环境, **前后端项目结构**, **代码生成器与Cursor协同**) - Chapter 3: 模块深入分析 (用户管理模块的启示) - Chapter 4: 后端开发最佳实践 (Cursor辅助技巧, 模块设计, 分层约定, Domain对象规范) - Chapter 5: 前端开发最佳实践 (Cursor辅助技巧, 项目结构, 功能模块开发规范, 组件案例, 前后端交互) - Chapter 6: 前后端协作规范 - Chapter 7: 代码规范与风格 - Chapter 8: 新模块添加流程与实践 - [x] **环境与工具准备:** - [x] 确保后端开发环境 (JDK, Maven, Redis, MySQL) 符合《最佳实践》Chapter 2.1 要求。 - [x] 确保前端开发环境 (Node.js, pnpm) 符合《最佳实践》Chapter 2.1 要求。 - [x] 安装并配置好 Cursor IDE,将整个 `ruoyi-vue-plus` 项目导入工作区。 - [x] (可选)在 Cursor 中为项目设置特定上下文,如关键模块路径、技术栈等,以便更好地辅助开发。 ## 阶段 1: 后端开发 - 模块搭建与核心表结构 - [ ] **创建后端Maven子模块 `ruoyi-pms`** (参考《最佳实践》Chapter 2.2, 4.2, 8.3): - [ ] 在 `ruoyi-vue-plus/ruoyi-modules` 目录下创建新的 Maven 子模块 `ruoyi-pms`。 - [ ] 配置 `ruoyi-pms/pom.xml`: - [ ] 设置 `` 指向 `ruoyi-modules`。 - [ ] 添加必要的公共模块依赖 (如: `ruoyi-common-core`, `ruoyi-common-mybatis`, `ruoyi-common-web`, `ruoyi-common-satoken`, `ruoyi-common-excel`, `ruoyi-common-translate`, `ruoyi-common-tenant`)。 - [ ] 在项目根目录 `pom.xml` 和 `ruoyi-modules/pom.xml` 的 `` 部分注册 `ruoyi-pms`。 - [ ] **创建后端基础包结构** (参考《最佳实践》Chapter 4.2): - [ ] 在 `ruoyi-pms/src/main/java/` 下创建基础包,例如 `org.dromara.pms`。 - [ ] 在 `org.dromara.pms` 下创建标准分层包:`controller`, `service`, `service.impl`, `mapper`, `domain` (包含 `entity`, `bo`, `vo`)。 - [ ] **数据库表创建与初始化**: - [ ] **执行SQL脚本**: 确保已在开发数据库中执行 `script/sql/pms_tables.sql` 文件,创建所有PMS相关的表。 - [ ] **验证表结构**: 对照《PMS数据模型.md》仔细检查已创建的表结构、字段类型、约束、索引是否正确。 - [ ] **验证基础数据**: 确认 `pms_core_channels` 和 `pms_finance_payment_methods` 表的基础数据已按 `pms_tables.sql` 中的`INSERT`语句正确插入。 - [ ] **集成新模块到系统**: - [ ] (如果需要)在 `ruoyi-admin` 模块的 `application.yml` 中,确保新模块的包路径 (如 `org.dromara.pms`) 被扫描到。 - [ ] (如果需要)配置MyBatis Plus扫描新模块的Mapper XML文件路径。 - [ ] **后端国际化资源文件**: - [ ] 在 `ruoyi-pms/src/main/resources/` 下创建 `i18n` 目录。 - [ ] 在 `i18n` 目录下创建基础的国际化属性文件,如 `messages_zh_CN.properties` 和 `messages_en_US.properties`。 ## 阶段 2: 后端开发 - 核心业务功能 [P0] **通用后端开发规范 (参考《最佳实践》Chapter 4 & 7.1):** - [ ] 遵循分层架构约定 (Controller -> Service -> Mapper)。 - [ ] 严格区分 Entity, BO, VO 的职责和使用场景。 - [ ] 使用 MapStruct Plus (`@AutoMapper`) 进行对象转换。 - [ ] Service 层实现类的方法应添加 `@Transactional` 注解。 - [ ] Controller 层方法应添加 `@Log` 操作日志注解和 `@SaCheckPermission` 权限注解。 - [ ] BO 对象字段使用 JSR 303/380 注解进行参数校验。 - [ ] VO 对象字段按需使用 `@Translation` 和 `@Sensitive` 注解。 - [ ] 编写清晰的 Javadoc 注释和行内注释。 - [ ] 使用 Cursor 辅助生成代码、分析逻辑、优化代码。 **具体功能模块开发:** - [ ] **代码生成器应用 (可选但推荐)** (参考《最佳实践》Chapter 2.4): - [ ] 针对《PMS数据模型.md》中定义的核心表 (如 `pms_room_types`, `pms_room_rooms`, `pms_core_orders` 等),使用若依代码生成器生成初始的 Entity, Mapper, Service, Controller, BO, VO。 - [ ] **Cursor辅助**: "请Cursor分析代码生成器为 `pms_room_types` 表生成的后端代码,并指出哪些部分需要根据《PMS需求.md》和《最佳实践》进行调整。" - [ ] **1. 房型管理 (`pms_room_types`)**: - [ ] **Domain**: 创建/调整 `PmsRoomType`, `PmsRoomTypeBo`, `PmsRoomTypeVo`。 - [ ] **Mapper**: 创建/调整 `PmsRoomTypeMapper.java` 和对应的 `PmsRoomTypeMapper.xml`。 - [ ] **Service**: 创建/调整 `IPmsRoomTypeService.java` 和 `PmsRoomTypeServiceImpl.java` (实现CRUD逻辑)。 - [ ] **Controller**: 创建/调整 `PmsRoomTypeController.java` (暴露RESTful API)。 - [ ] **2. 房间管理 (`pms_room_rooms`)**: - [ ] **Domain**: `PmsRoomRoom`, `PmsRoomRoomBo`, `PmsRoomRoomVo`. - [ ] **Mapper**: `PmsRoomRoomMapper.java` & XML. - [ ] **Service**: `IPmsRoomRoomService.java` & Impl (CRUD, 更新房间状态/清洁状态逻辑). - [ ] **Controller**: `PmsRoomRoomController.java`. - [ ] **3. 房间锁定 (`pms_room_locks`)**: - [ ] **Domain**: `PmsRoomLock`, `PmsRoomLockBo`, `PmsRoomLockVo`. - [ ] **Mapper**: `PmsRoomLockMapper.java` & XML. - [ ] **Service**: `IPmsRoomLockService.java` & Impl (CRUD). - [ ] **Controller**: `PmsRoomLockController.java`. - [ ] **4. 核心订单管理 (`pms_core_orders`, `pms_core_order_items`)** (参考《PMS需求.md》4.2.2 [P0]): - [ ] **Domain**: - `PmsCoreOrder`, `PmsCoreOrderBo`, `PmsCoreOrderVo` (应包含订单项列表). - `PmsCoreOrderItem`, `PmsCoreOrderItemBo`, `PmsCoreOrderItemVo`. - [ ] **Mapper**: `PmsCoreOrderMapper`, `PmsCoreOrderItemMapper` & XMLs. - [ ] **Service**: `IPmsCoreOrderService`, `IPmsCoreOrderItemService` & Impls (实现订单创建、查询、修改、取消、状态流转核心逻辑;订单项增删改查). - [ ] 实现订单状态转换逻辑 (pending_confirmation -> confirmed -> checked_in -> checked_out / cancelled / no_show). - [ ] 订单创建时关联/创建 `cmn_contacts` (基础字段)。 - [ ] 订单创建时关联 `pms_core_channels`。 - [ ] 订单创建/确认时,自动创建或关联 `pms_finance_folios`。 - [ ] **Controller**: `PmsCoreOrderController`. - [ ] **5. 订单来源渠道 (`pms_core_channels`)**: - [ ] **Domain**: `PmsCoreChannel`, `PmsCoreChannelBo`, `PmsCoreChannelVo`. - [ ] **Mapper**: `PmsCoreChannelMapper` & XML. - [ ] **Service**: `IPmsCoreChannelService` & Impl (CRUD). - [ ] **Controller**: `PmsCoreChannelController`. - [ ] **6. 财务-账单管理 (`pms_finance_folios`)** (参考《PMS需求.md》4.2.3 [P0]): - [ ] **Domain**: `PmsFinanceFolio`, `PmsFinanceFolioBo`, `PmsFinanceFolioVo` (应包含交易流水列表). - [ ] **Mapper**: `PmsFinanceFolioMapper` & XML. - [ ] **Service**: `IPmsFinanceFolioService` & Impl (CRUD, 更新账单状态, 计算余额逻辑 - 应用层计算). - [ ] **Controller**: `PmsFinanceFolioController`. - [ ] **7. 财务-交易流水 (`pms_finance_transactions`)**: - [ ] **Domain**: `PmsFinanceTransaction`, `PmsFinanceTransactionBo`, `PmsFinanceTransactionVo`. - [ ] **Mapper**: `PmsFinanceTransactionMapper` & XML. - [ ] **Service**: `IPmsFinanceTransactionService` & Impl (CRUD, 关联 `pms_finance_payment_methods`). - [ ] **Controller**: `PmsFinanceTransactionController`. - [ ] **8. 财务-支付方式 (`pms_finance_payment_methods`)**: - [ ] **Domain**: `PmsFinancePaymentMethod`, `PmsFinancePaymentMethodBo`, `PmsFinancePaymentMethodVo`. - [ ] **Mapper**: `PmsFinancePaymentMethodMapper` & XML. - [ ] **Service**: `IPmsFinancePaymentMethodService` & Impl (CRUD). - [ ] **Controller**: `PmsFinancePaymentMethodController`. - [ ] **9. 财务-附加费用项目 (`pms_finance_extra_charge_items`)**: - [ ] **Domain**: `PmsFinanceExtraChargeItem`, `PmsFinanceExtraChargeItemBo`, `PmsFinanceExtraChargeItemVo`. - [ ] **Mapper**: `PmsFinanceExtraChargeItemMapper` & XML. - [ ] **Service**: `IPmsFinanceExtraChargeItemService` & Impl (CRUD). - [ ] **Controller**: `PmsFinanceExtraChargeItemController`. - [ ] **10. 价格规则 (`pms_room_pricing_rules`)**: - [ ] **Domain**: `PmsRoomPricingRule`, `PmsRoomPricingRuleBo`, `PmsRoomPricingRuleVo`. - [ ] **Mapper**: `PmsRoomPricingRuleMapper` & XML. - [ ] **Service**: `IPmsRoomPricingRuleService` & Impl (CRUD). - [ ] **Controller**: `PmsRoomPricingRuleController`. - [ ] **11. 联系人基础 (`cmn_contacts`)** (P0阶段主要为订单关联所需字段): - [ ] **Domain**: `CmnContact`, `CmnContactBo`, `CmnContactVo` (仅包含P0阶段所需字段,如姓名、电话). - [ ] **Mapper**: `CmnContactMapper` & XML. - [ ] **Service**: `ICmnContactService` & Impl (提供基础的联系人查询、创建接口供订单模块调用). - [ ] **Controller**: (P0阶段可能不需要完整独立的Controller,主要通过订单业务间接操作). - [ ] **12. 租户/部门特定配置 (`pms_tenant_settings`, `pms_mp_settings`)**: - [ ] **Domain**: `PmsTenantSetting`, `PmsTenantSettingBo`, `PmsTenantSettingVo` & 类似的 `PmsMpSetting` 对象. - [ ] **Mapper**: `PmsTenantSettingMapper`, `PmsMpSettingMapper` & XMLs. - [ ] **Service**: `IPmsTenantSettingService`, `IPmsMpSettingService` & Impls (CRUD, 按 group/key 查询). - [ ] **Controller**: `PmsTenantSettingController`, `PmsMpSettingController`. - [ ] **13. 租户用户设备 (`pms_tenant_user_devices`)**: (用于民宿管理小程序推送等) - [ ] **Domain**: `PmsTenantUserDevice`, `PmsTenantUserDeviceBo`, `PmsTenantUserDeviceVo`. - [ ] **Mapper**: `PmsTenantUserDeviceMapper` & XML. - [ ] **Service**: `IPmsTenantUserDeviceService` & Impl (CRUD, 设备注册/更新逻辑). - [ ] **Controller**: `PmsTenantUserDeviceController`. - [ ] **API文档**: - [ ] 为所有Controller和DTO添加清晰的Swagger/Knife4j注解 (参考《最佳实践》Chapter 8.3)。 ## 阶段 3: 前端开发 - 核心管理界面 [P0] (Soybean Admin Pro) **通用前端开发规范 (参考《最佳实践》Chapter 5 & 7.2):** - [ ] 遵循 Soybean Admin Pro 的项目结构和编码规范。 - [ ] 使用 Vue 3 Composition API + `