# TopskyHotelManagementSystem-WebApi
**Repository Path**: java-and-net/topsky-hotel-management-system-web-api
## Basic Information
- **Project Name**: TopskyHotelManagementSystem-WebApi
- **Description**: 基于.Net10搭配SQLSugar框架构建的TS酒店管理系统后端API项目,主要服务于WinForm Client和Vue3 Web端,欢迎Start&Fork
- **Primary Language**: C#
- **License**: MIT
- **Default Branch**: Main
- **Homepage**: https://www.oscode.top/project/4.html
- **GVP Project**: No
## Statistics
- **Stars**: 22
- **Forks**: 20
- **Created**: 2021-07-28
- **Last Updated**: 2026-01-24
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Net10, Docker, Csharp, MySQL, JWT
## README

TopskyHotelManagementSystem-WebApi
### :pray: 感谢以下开源项目:
1. ##### Autofac——An addictive .NET IoC container。[Autofac, MIT开源协议](https://github.com/autofac/Autofac)
2. ##### SqlSugar——国内最受欢迎ORM框架。 [SQLSugar, MIT开源协议](https://gitee.com/dotnetchina/SqlSugar)
3. ##### Mailkit——A cross-platform .NET library for IMAP, POP3, and SMTP。[Mailkit, MIT开源协议](https://github.com/jstedfast/MailKit)
4. ##### NSwag——The OpenAPI/Swagger API toolchain for .NET and TypeScript。[NSwag, MIT开源协议](https://github.com/NSwag/NSwag)
5. ##### Newtonsoft.Json——Json.NET is a popular high-performance JSON framework for .NET。[Newtonsoft.Json, MIT开源协议](https://github.com/JamesNK/Newtonsoft.Json)
6. ##### quartznet——Open-source job scheduling system for .NET。[Quartz.NET, Apache2.0开源协议](https://github.com/quartznet/quartznet)
### :exclamation: 本项目介绍:
本项目是基于.Net10构建的TS酒店管理系统后端API项目,欢迎Start&Fork
1、一切开发请遵照MIT开源协议进行。
2、有bug欢迎提出issue!
3、本项目当前已支持多数据库以及一键建库建表,具体代码可以参考InitializeDatabase方法。
4、本项目已基于SQL Sugar框架支持多数据库(主流),以下是目前已通过测试的数据库表格:
| 数据库 | 版本 | 支持建库建表(Y/N) | 通过(Y/N) |
| ---------- | ---------------- | ----------------- | ---------------------------------------------------- |
| MariaDB | 10.11.10-MariaDB | Y | Y |
| PostgreSQL | 130020 | Y | Y |
| MySQL | 5.7+ | Y | Y |
| SQL Server | 2022 | Y | Y |
| Oracle | Unknown | N | 请参照SQLSugar文档([果糖网](https://www.donet5.com)) |
| SQLite | Unknown | N | N |
### :thought_balloon: 开发目的:
主要用于现有的C/S项目酒店管理系统升级2.0后实现前后端分离的WebAPI接口,本项目不包含任何UI界面。
### :mag_right: 系统开发环境:
操作系统:Windows 11(x64)
开发工具:Microsoft Visual Studio 2022(系统最新版本)
数据库:MariaDB
数据库管理工具:DbGate
开发语言:C#语言、LINQ语言
开发平台:.Net
开发框架:.Net 10
开发技术:.NET 10 WebAPI
### :open_file_folder: 系统结构:
```
EOM.TSHotelManagement.Web
├─ .git
├─ .gitignore
├─ EOM.TSHotelManagement.Service
│ ├─ EOM.TSHotelManagement.Service.csproj
├─ EOM.TSHotelManagement.Contract
│ ├─ EOM.TSHotelManagement.Contract.csproj
├─ EOM.TSHotelManagement.Domain
│ ├─ EOM.TSHotelManagement.Domain.csproj
├─ EOM.TSHotelManagement.Data
│ ├─ EOM.TSHotelManagement.Data.csproj
├─ EOM.TSHotelManagement.Migration
│ ├─ EOM.TSHotelManagement.Migration.csproj
├─ EOM.TSHotelManagement.Web.sln
├─ EOM.TSHotelManagement.API
│ ├─ Controllers
│ ├─ EOM.TSHotelManagement.API.csproj
│ ├─ EOM.TSHotelManagement.API.csproj.user
│ ├─ EOM.TSHotelManagement.API.xml
│ ├─ Program.cs
│ ├─ appsettings.Development.json
│ ├─ appsettings.json
├─ LICENSE
├─ README.en.md
└─ README.md
```
### :chart_with_upwards_trend: 系统数据库关系图(由PDMAN软件生成) :loudspeaker:
[数据库关系图](https://oscode.top/project/tshotel/db_design.html)
### :exclamation: 项目作者:
**Jackson(即本账号,项目组长,核心代码编写和后期项目整合)**
**Benjamin(开发,项目代码编写)**
**Bin(数据库,提供数据库管理支持)**
**易开元(后期维护和开发)**
### :computer: 项目运行部署(执行下面步骤前需先安装.NET 10 SDK和Runtime):
**下载并安装Microsoft Visual Studio Professional 2026及以上版本,并通过下载Zip包解压,打开.sln后缀格式文件运行。**
### :inbox_tray: Docker运行部署(以Ubuntu为例,参数需按实际进行填写):
```
docker run -d \
--name tshotel-api \
-v /app/config:/app/config \
-v /app/keys:/app/keys \
-e ASPNETCORE_ENVIRONMENT=docker \
-e DefaultDatabase=MariaDB \
-e MariaDBConnectStr=Server=yourdatabase;Database=tshoteldb;User=tshoteldb;Password=yourdatabasepassword; \
-e InitializeDatabase=true \
-e Jwt__Key=your_key \
-e Jwt__ExpiryMinutes=20 \
-e Lsky__Enabled=true \
-e Lsky__BaseAddress=https://yourdomain.com/api/v1 \
-e Lsky__Email=domain@domain.com \
-e Lsky__Password=your_password \
-e Lsky__UploadApi=/upload \
-e Lsky__GetTokenApi=/tokens \
-e Mail__Enabled=true \
-e Mail__Host=smtp.domain.com \
-e Mail__UserName=domain@domain.com \
-e Mail__Password=your_password \
-e Mail__Port=465 \
-e Mail__EnableSsl=true \
-e Mail__DisplayName=TSHotel-Administrator \
-e ExpirationSettings__NotifyDaysBefore=3 \
-e ExpirationSettings__CheckIntervalMinutes=5 \
-e JobKeys__0=ReservationExpirationCheckJob \
-e AllowedOrigins__0=http://localhost:8080 \
-e AllowedOrigins__1=https://www.yourdomain.com \
-e SoftwareVersion=2.2.8-202601101804 \
-p 63001:8080 \
yjj6731/tshotel-management-system-api:latest
```
| 参数名称 | 参数说明 | 必填(Y/N) | 默认值 | 可选值 |
|------|------|---------|-----|-----|
|name|容器名称|Y|N/A|N/A|
|DefaultDatabase|默认数据库|Y|N/A|MariaDB/MySql/SqlServer/PgSql|
|ASPNETCORE_ENVIRONMENT|系统环境(决定Dataprotection Key的生成位置以及环境判断)|Y|docker|docker|
|{默认数据库(e.g:MariaDB/MySql/SqlServer/PgSql)}ConnectStr|对应数据库链接字符串|Y|N/A|N/A|
|Jwt__Key|JWT Key|Y|N/A|N/A|
|Jwt__ExpiryMinutes|token有效时间/分钟|Y|20|N/A|
|Lsky__Enabled|是否启用兰空图床集成|Y|false|true/false|
|Lsky__BaseAddress|兰空图床基础地址|Y|N/A|N/A|
|Lsky__Email|兰空图床账户邮箱|Y|N/A|N/A|
|Lsky__Password|兰空图床账户密码|Y|N/A|N/A|
|Lsky__UploadApi|兰空图床上传图片接口|Y|N/A|N/A|
|Lsky__GetTokenApi|兰空图床获取tokens接口|Y|N/A|N/A|
|Mail__Enabled|是否启用邮件服务|Y|true|true/false|
|Mail__Host|邮箱smtp协议地址|Y|N/A|N/A|
|Mail__UserName|邮箱smtp协议地址|Y|N/A|N/A|
|Mail__Port|邮箱smtp端口|Y|465|N/A|
|Mail__Password|邮箱密码|Y|N/A|N/A|
|Mail__EnableSsl|是否启用SSL|Y|true|true/false|
|Mail__DisplayName|发送邮件人显示名称|Y|N/A|N/A|
|InitializeDatabase|初始化数据库|N|true|true/false|
|ExpirationSettings__NotifyDaysBefore|提前通知天数|Y|3|a few days|
|ExpirationSettings__CheckIntervalMinutes|通知检查间隔|Y|5|a few minutes|
|AllowedOrigins__0|允许域站点,用于开发环境|Y|http://localhost:8080|http://localhost:8080|
|AllowedOrigins__1|允许域站点,用于生产环境|Y|https://www.yourdomain.com|https://www.yourdomain.com|
|SoftwareVersion|软件版本号,用于标记说明|N|N/A|N/A|
### :inbox_tray: 数据库运行部署(本地):
**强烈推荐,以下第一种方式进行数据库部署**
1.自动建库建表
在appsettings.json填写对应的DefaultDatabase参数和对应的数据库链接字符串,然后保存运行项目即可一键自动建表建库(前提本地安装了对应的数据库和开启服务)
2.手动建库建表(注意:文件夹内的数据库脚本可能非最新版本,因此推荐以上第一种方式!!!)
通过可视化管理工具打开/数据库脚本/xxx版本,依次执行tshotel-backstage-dbscript-table.sql文件进行数据库与数据表建立。
随后打开tshotel-backstage-dbscript-data.sql文件进行数据导入。
[](https://gitee.com/java-and-net/topsky-hotel-manager-system-web-api)