# CRICS_V3 - 酒店客房智能控制系统

## 项目概述

CRICS（Customer Room Intelligent Control System）是一套酒店客房智能控制系统，用于管理酒店客房的智能设备控制、状态监控和数据统计等功能。

---

## 技术框架

### 开发环境
- **IDE**: Visual Studio 2010+
- **目标框架**: .NET Framework 4.0
- **解决方案格式**: VS 2010 Solution Format Version 11.00

### 核心技术栈

| 分类 | 技术/框架 | 版本 | 说明 |
|------|----------|------|------|
| **Web框架** | ASP.NET MVC | 2.0 | Web应用程序框架 |
| **IoC容器** | Spring.NET | 1.3.x | 依赖注入、AOP支持 |
| **ORM框架** | NHibernate | 3.0 | 对象关系映射 |
| **数据库** | SQL Server | - | 关系型数据库 |
| **缓存** | Redis (CSRedis) | - | 分布式缓存 |
| **缓存** | Memcached | - | 内存缓存 |
| **日志** | log4net | 1.2.10 | 日志记录框架 |
| **JSON处理** | Newtonsoft.Json | 6.0 | JSON序列化/反序列化 |
| **通信协议** | UDP | - | RCU主机通信 |
| **消息队列** | MQTT (M2Mqtt) | 4.3 | 消息传输 |
| **任务调度** | FluentScheduler | 4.1.2 | 定时任务调度 |
| **Excel处理** | NPOI | - | Excel文件读写 |
| **HTTP客户端** | RestSharp | 105.2.3 | REST API调用 |
| **JWT** | jose-jwt | - | JWT令牌处理 |

### 前端技术
- **UI框架**: EasyUI 1.4.2
- **JavaScript库**: jQuery

---

## 项目结构

```
CRICS_V3_1124/
├── CRICS_V3_1124.sln          # 解决方案文件
├── README.md                   # 项目说明文档
├── Para.prom                   # 参数配置文件
├── Para_copy.yaml              # YAML配置文件
│
├── WebSite/                    # Web应用程序（主项目）
│   ├── Controllers/            # MVC控制器
│   ├── Views/                  # 视图模板
│   ├── Models/                 # 视图模型
│   ├── Config/                 # Spring.NET配置
│   ├── api/                    # API接口
│   ├── Core/                   # 核心业务逻辑
│   ├── Job/                    # 定时任务
│   ├── Scripts/                # JavaScript脚本
│   ├── Styles/                 # CSS样式
│   ├── Images/                 # 图片资源
│   └── easyui-1.4.2/          # EasyUI前端框架
│
├── RCUHost/                    # RCU主机通信服务
│   ├── Implement/              # 接口实现
│   │   ├── HostServer.cs       # UDP服务器核心
│   │   ├── *Receiver.cs        # 各类命令接收器
│   │   └── ReceiverContext.cs  # 接收器上下文
│   ├── Protocols/              # 通信协议定义
│   ├── Config/                 # 配置文件
│   ├── RCUHostCommon/          # 通用工具类
│   ├── NewUDP/                 # 新版UDP处理
│   └── TimingHelper/           # 定时辅助工具
│
├── Domain/                     # 领域模型层
│   ├── *.cs                    # 实体类定义
│   └── *.hbm.xml              # NHibernate映射文件
│
├── Dao/                        # 数据访问层
│   ├── I*Repository.cs         # 仓储接口
│   ├── Implement/              # 仓储实现
│   └── RepositoryBase`1.cs     # 泛型仓储基类
│
├── Service/                    # 业务逻辑层
│   ├── I*Manager.cs            # 服务接口
│   ├── Implement/              # 服务实现
│   └── GenericManagerBase`1.cs # 泛型服务基类
│
├── Common/                     # 公共工具库
│   ├── CSRedisCacheHelper.cs   # Redis缓存帮助类
│   ├── MemoryCacheHelper.cs    # 内存缓存帮助类
│   ├── AliyunSMSHelper.cs      # 阿里云短信帮助类
│   ├── ExcelHelper.cs          # Excel帮助类
│   ├── HttpWebRequestHelper.cs # HTTP请求帮助类
│   ├── Tools.cs                # 通用工具类
│   ├── BLWMQTT.cs              # MQTT客户端
│   ├── XiaoDuOperation.cs      # 小度音箱操作
│   ├── TianMaoOperation.cs     # 天猫精灵操作
│   ├── RokidOperation.cs       # Rokid操作
│   └── ...                     # 其他工具类
│
├── CommonEntity/               # 公共实体层
│   ├── CacheDTO.cs             # 缓存数据传输对象
│   ├── CacheKey.cs             # 缓存键定义
│   ├── DataTongJi.cs           # 数据统计实体
│   └── ...                     # 其他实体类
│
├── ConsoleApplication1/        # 控制台测试程序1
├── ConsoleApplication2/        # 控制台测试程序2
├── ConsoleApplication3/        # 控制台测试程序3
├── ConsoleApplication666/      # 控制台测试程序
├── test/                       # 测试项目
├── MyIPY/                      # Python互操作项目
│
├── DBSql/                      # 数据库脚本
│   └── crics.sql               # 数据库初始化脚本
│
├── lib/                        # 第三方依赖库
│   ├── Spring.NET/             # Spring.NET程序集
│   ├── NHibernate/             # NHibernate程序集
│   ├── Redis/                  # Redis客户端
│   ├── Memcached/              # Memcached客户端
│   ├── log4net/                # 日志组件
│   ├── NPOI/                   # Excel处理组件
│   ├── RestSharp/              # REST客户端
│   ├── jwt/                    # JWT组件
│   ├── M2Mqtt.Net/             # MQTT客户端
│   ├── taskschedule/           # 任务调度组件
│   └── ...                     # 其他依赖
│
└── CA/                         # 证书/许可证文件
```

---

## 分层架构

```
┌─────────────────────────────────────────────────────────┐
│                    表现层 (WebSite)                      │
│         Controllers / Views / Scripts / Styles          │
├─────────────────────────────────────────────────────────┤
│                    业务逻辑层 (Service)                  │
│                  I*Manager / *Manager                   │
├─────────────────────────────────────────────────────────┤
│                    数据访问层 (Dao)                      │
│               I*Repository / *Repository                │
├─────────────────────────────────────────────────────────┤
│                    领域模型层 (Domain)                   │
│              Entity Classes / HBM Mappings              │
├─────────────────────────────────────────────────────────┤
│                     基础设施层                           │
│    Common (工具类) / CommonEntity (公共实体) / RCUHost   │
└─────────────────────────────────────────────────────────┘
```

---

## 核心模块说明

### 1. RCUHost - RCU主机通信服务

RCU（Room Control Unit）主机通信服务是系统的核心组件，负责与酒店客房内的智能控制主机进行UDP通信。

**主要功能：**
- UDP服务器监听和数据接收
- 协议解析和命令分发
- 设备状态实时同步
- 心跳检测和在线状态维护
- Redis消息发布/订阅

**核心类：**
- `HostServer.cs` - UDP服务器核心实现
- `*Receiver.cs` - 各类命令接收处理器
- `ReceiverContext.cs` - 请求上下文

**支持的命令类型：**
- 0x01 - 主机注册
- 0x02 - 心跳
- 0x0E - 状态上报
- 0x32-0x36 - 新版协议命令
- 更多命令参见 `CommandType` 枚举

### 2. 智能语音设备集成

系统支持多种智能语音设备：
- **小度音箱** - 百度小度
- **天猫精灵** - 阿里天猫
- **Rokid** - Rokid智能音箱

功能包括：欢迎词播放、离房提示、设备重置等。

### 3. 缓存策略

**多级缓存架构：**
- **L1**: MemoryCache (进程内缓存)
- **L2**: Redis (分布式缓存)
- **L3**: Memcached (可选)

**缓存应用场景：**
- 主机在线状态
- 设备状态数据
- 取电状态
- 配置信息

### 4. 消息队列

使用Redis Pub/Sub进行消息通信：
- `redis-takecard_change` - 取电状态变更
- `redis-serviceinfo_change` - 服务信息变更
- `redis-on_off_line` - 上下线状态

---

## 数据库设计

**数据库**: SQL Server  
**数据库名**: CRICS

### 主要数据表

| 表名 | 说明 |
|------|------|
| tb_Host | 主机信息 |
| tb_HostModal | 主机回路模块 |
| tb_RoomType | 房间类型 |
| tb_RoomStatus | 房间状态 |
| tb_SysHotel | 酒店信息 |
| tb_SysUser | 系统用户 |
| tb_AlarmSetting | 告警设置 |
| tb_FaultRecord | 故障记录 |
| tb_HostModalEnergy | 能耗统计 |
| ... | 更多表参见DBSql |

---

## 配置文件说明

### Spring.NET 配置

配置文件位于各项目的 `Config` 目录下：

- `WebSite/Config/Controllers.xml` - 控制器依赖注入配置
- `Service/Config/*.xml` - 服务层配置
- `Dao/Config/*.xml` - 数据访问层配置
- `RCUHost/Config/*.xml` - RCU服务配置

### Web.config

主要配置项：
- 数据库连接字符串
- NHibernate配置
- log4net日志配置
- Spring.NET配置
- Redis连接配置

---

## 依赖注入

项目使用 **Spring.NET** 作为IoC容器，通过XML配置文件进行依赖注入。

**配置示例：**
```xml
<object type="WebSite.Controllers.HostController, WebSite" parent="BaseController" singleton="false">
    <property name="HostManager" ref="Manager.Host" />
    <property name="HostAirManager" ref="Manager.HostAir" />
    ...
</object>
```

---

## 开发指南

### 环境要求
- Visual Studio 2010 或更高版本
- .NET Framework 4.0
- SQL Server 2008 或更高版本
- Redis Server
- IIS (部署用)

### 项目构建
1. 使用Visual Studio打开 `CRICS_V3_1124.sln`
2. 还原NuGet包（如有）
3. 配置数据库连接字符串
4. 执行 `DBSql/crics.sql` 初始化数据库
5. 构建解决方案

### 调试运行
1. 设置 `WebSite` 为启动项目
2. 配置IIS Express或本地IIS
3. F5启动调试

---

## 主要功能模块

1. **设备控制** - 灯光、空调、窗帘、电视等
2. **状态监控** - 实时状态查看、告警通知
3. **场景管理** - 场景配置、一键控制
4. **能耗统计** - 用电量统计、能耗分析
5. **用户管理** - 权限控制、角色管理
6. **酒店管理** - 多酒店支持、分组管理
7. **API接口** - 第三方系统集成
8. **微信控制** - 微信公众号集成
9. **语音控制** - 智能音箱集成

---

## 版本信息

- **版本**: V3
- **最后更新**: 2024年12月

---

## 注意事项

1. RCU通信使用UDP协议，注意防火墙配置
2. Redis缓存需要正确配置连接信息
3. 数据库初始化脚本需要根据实际情况修改路径
4. 生产环境部署注意安全配置
