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

TopskyHotelManagementSystem-WebApi
### :pray: 感谢以下开源项目:
1. ##### Autofac——An addictive .NET IoC container。[Autofac, MIT开源协议](https://github.com/autofac/Autofac)
2. ##### SqlSugar——国内最受欢迎ORM框架。 [SQLSugar,Apache-2.0开源协议](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. ##### Swashbuckle.AspNetCore——Swagger tools for documenting API's built on ASP.NET Core。[SwaggerUI,MIT开源协议](https://github.com/domaindrivendev/Swashbuckle.AspNetCore)
5. ##### Newtonsoft.Json——Json.NET is a popular high-performance JSON framework for .NET。[Newtonsoft.Json,MIT开源协议](https://github.com/JamesNK/Newtonsoft.Json)
### :exclamation: 本项目介绍:
本项目是基于.Net8构建的TS酒店管理系统后端API项目,主要用于2.0升级所用,欢迎Start&Fork
1、一切开发请遵照MIT开源协议进行。
2、有bug欢迎提出issue!
3、本项目当前已支持多数据库以及一键建库建表,具体代码可以参考Startup.cs中的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/PostgreSQL/MySQL/SQL Server
数据库管理工具:DbGate
开发语言:C#语言、LINQ语言
开发平台:.Net
开发框架:.Net 8
开发技术:.NET 8 WebAPI
### :open_file_folder: 系统结构:
```
EOM.TSHotelManagement.Web
├─ .git
├─ .gitignore
├─ EOM.TSHotelManagement.Application
│ ├─ EOM.TSHotelManagement.Application.csproj
│ ├─ BaseDto
│ ├─ Business
│ ├─ Employee
│ ├─ Sys
│ ├─ SystemManagement
│ ├─ Util
├─ EOM.TSHotelManagement.Common.Contract
│ ├─ EOM.TSHotelManagement.Common.Contract.csproj
│ ├─ Business
│ ├─ Employee
│ ├─ Sys
│ ├─ SystemManagement
│ ├─ Util
├─ EOM.TSHotelManagement.Common.Core
│ ├─ EOM.TSHotelManagement.Core.csproj
│ ├─ BaseEntity.cs
│ ├─ Business
│ ├─ Employee
│ ├─ Sys
│ ├─ SystemManagement
│ ├─ Util
├─ EOM.TSHotelManagement.EntityFramework
│ ├─ EOM.TSHotelManagement.EntityFramework.csproj
│ ├─ Repository
│ │ └─ GenericRepository.cs
├─ EOM.TSHotelManagement.Migration
│ ├─ EOM.TSHotelManagement.Migration.csproj
│ ├─ EntityBuilder.cs
├─ EOM.TSHotelManagement.Web.sln
├─ EOM.TSHotelManagement.Share
│ ├─ EOM.TSHotelManagement.Share.csproj
│ ├─ Interface
├─ EOM.TSHotelManagement.WebApi
│ ├─ Controllers
│ │ ├─ Business
│ │ ├─ Sys
│ │ ├─ Employee
│ │ └─ SystemManagement
│ │ └─ Util
│ ├─ EOM.TSHotelManagement.WebApi.csproj
│ ├─ EOM.TSHotelManagement.WebApi.csproj.user
│ ├─ EOM.TSHotelManagement.WebApi.xml
│ ├─ Program.cs
│ ├─ Startup.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 8 SDK和Runtime):
**下载并安装Microsoft Visual Studio Professional 2022及以上版本,并通过下载Zip包解压,打开.sln后缀格式文件运行。**
### :inbox_tray: Docker运行部署(以Ubuntu为例):
```
docker run -d \
--name tshotel-api \
-v /app/config:/app/config \
-v /app/keys:/app/keys \
-e DefaultDatabase=MariaDB \
-e ASPNETCORE_ENVIRONMENT=docker \
-e DOCKER_ENV=true \
-e "MariaDBConnectStr=Server=host;User=tshoteldb;Password=password;Database=tshoteldb" \
-e Jwt__Issuer=Easy-Open-Meta \
-e Jwt__Audience=EOM.TSHotelManagement.WebApi \
-e Jwt__Key=Easy-Open-Meta-EfH@u4poHh544a53Sq77T \
-e Jwt__ExpiryMinutes=20 \
-e Lsky__BaseAddress=https://lsky.demo.top/api/v1 \
-e Lsky__Email=demo@demo.top \
-e Lsky__Password=demo \
-e Lsky__UploadApi=/upload \
-e Lsky__GetTokenApi=/tokens \
-e Mail__Host=smtp.demo.top \
-e Mail__UserName=demo@demo.top \
-e Mail__Password=demo \
-e Mail__Port=465 \
-e Mail__EnableSsl=true \
-e Mail__DisplayName=TSHotel-Administrator \
-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|
|DOCKER_ENV|是否为docker环境|Y|true|true|
|{默认数据库(e.g:MariaDB/MySql/SqlServer/PgSql)}ConnectStr|对应数据库链接字符串|Y|N/A|N/A|
|Jwt__Issuer|签发者标识|Y|N/A|N/A|
|Jwt__Audience|目标接收方标识|Y|N/A|N/A|
|Jwt__Key|JWT Key|Y|N/A|N/A|
|Jwt__ExpiryMinutes|token有效时间/分钟|Y|20|N/A|
|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__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|
### :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)