# xinhou-rocket-admin **Repository Path**: sphrz/xinhou-rocket-admin ## Basic Information - **Project Name**: xinhou-rocket-admin - **Description**: 使用Rust+Rocket+sqlx集成框架项目 本项目基于 Rust+ Rocket +sqlx 框架开发的后台管理系统,该版本已升级到Rust 1.75.0 & Rocket 0.5.0版本,旨在为多语言开发者(Java、Kotlin、Python、PHP、Rust)提供一个统一的后台管理系统的模板,屏蔽个语言的编程差异,尽可能的简化快速构建微服务系统。 - **Primary Language**: Rust - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-07-05 - **Last Updated**: 2025-10-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Xinhou Rocket Admin V1.0.0 项目文档 ## 介绍 本项目基于Rust语言的Rocket框架开发的后台管理系统,该版本已升级到Rust 1.79.0版本,旨在为多语言开发者(Java、Kotlin、Python、PHP、Rust)提供一个统一的后台管理系统的模板,屏蔽个语言的编程差异,尽可能的简化快速构建微服务系统。 ## 更新情况 ### 2024.07.12 开发需求 - [P0] 在Build阶段加入 自动扫描Controller动态路由的功能,并注册到Rocket【完成】 - [P0] 完善Logger的日志输出 & 控制台输出【完成】 - [P0] 完善Entity的方法支持自动生成字段【完成】 ### 2024.07.05 开发需求 - [P0] 完善代码自动生成部分功能【完成】 - [P0] 完善数据库连接池部分的多线程&共享部分功能【完成】 - [P0] 完善上下文的多线程&共享部分功能【完成】 - [P0] 完善上下文的配置参数统一使用ObjectDict类【完成】 - [P0] 完善初始化时的Welcome部分的功能【完成】 - [P0] 完善数据库执行SQL时的Session的拦截器部分功能【完成】 - [P0] 完善数据库自动生成表部分功能【完成】 - [P0] 去掉初始化阶段的多个实现中的函数部分功能【完成】 - [P0] 完善Redis的连接池多线程&共享部分功能【完成】 - [P0] 修复yml配置项目版本时version填入数字导致swagger不能生成的问题【完成】 - [P0] 升级框架部分依赖包的版本【完成】 - [P0] 修复远程调用时缺失配置信息的异常错误 & 远程调用错误异常【完成】 ## 内置功能 - [x] 应用分层管理:系统框架支持多apps应用场景聚合、微服务场景、单项目场景业务;同时支持通用业务逻辑business共享; - [x] 支持多模块apps应用集成调用; - [x] 支持Controller & ParamsModel 自定义接口模型; - [x] 支持Routes路由自定义函数注册; - [x] 支持Business通用业务逻辑开发,支持MVC模式; - [x] 支持Remote远程调用,同时实现重试、降级、超时异常处理; - [x] 支持R统一返回泛型&业务逻辑调用ResModel泛型支持; - [x] Swagger接口文档编写,支持入参出参泛型; - [x] 实现框架急提供yml配置文件管理:支持yml配置文件,支持环境版本,实现逻辑与springboot方式相似; - [x] Nacos集成管理:使用Nacos的注册中心&配置中心,同时实现微服务注册&心跳&调用、支持接口的重试、降级、超时的处理; - [x] 全局自动化路由管理:系统框架可以自动扫描项目下的apps下所有Controller接口; - [x] 全局AppContextBeans上下文管理:提供系统级别的全局上下文支持,提供注册实例化对象全局调用; - [x] 全局sqlx支持:框架支持面向sql的链式操作,只需要简单继承即可实现CRUD操作;同时支持事务处理; - [x] 全局操作日志:系统提供日志配置&自动生成。 - [x] 全局异常处理支持:提供了全局的异常处理、业务异常处理、自定义异常处理;同时全局拦截异常&验证错误,并提供统一错误码; - [x] 全局装饰器:提供全局装饰器,可以使接口、函数等实现 AOP 支持; - [x] 全局数据库&连接池管理:支持MySQL、PgSQL、Oracle等数据库,并内置连接池; - [x] 全局缓存&连接池管理:系统初始化支持配置缓存&连接池,也支持Utils调用; - [x] 文件上传:图片、表格、文档等文件上传下载 & OSS 上传存储 示例; - [x] Excel文件:excel&cvs数据文件导入导出下载示例; - [x] Word文件:文档的模板生成及下载示例; - [x] PDF文件:模板生成PDF及下载示例; - [x] 代码生成:提供代码自动生成,支持Entity、Dao、Service、Controller 及 前端页面模板生成; - [x] docker&k8s:支持docker镜像生成 & k8s部署 及 docker镜像&docer-compose部署; - [x] 支持服务器代理访问; ## 依赖包 - 编译打包 ~~~shell (base) shenpeng@MacBook-Pro-2023 xinhou-rocket-admin % cargo build # 编译打包 (base) shenpeng@MacBook-Pro-2023 xinhou-rocket-admin % cargo clean build # 清理&编译打包 (base) shenpeng@MacBook-Pro-2023 xinhou-rocket-admin % cargo clean # 清理编译代码 ~~~ - 命令行启动项目 ~~~shell (base) shenpeng@MacBook-Pro-2023 xinhou-rocket-admin % cargo run ~~~ ## Cargo私服配置 > 注:需要在当前用户的目录下找到 .cargo文件夹,并修改config配置文件,同时将配置写入文件;私服账号密码由运维提供; ~~~shell (base) MacBook-Pro-3:marmot-framework shenpeng$ cd ~/.cargo (base) MacBook-Pro-3:marmot-framework shenpeng$ vi config # 将配置内容复制粘贴到config文件 [source.crates-io] # 指定镜像 replace-with = 'ustc' # 你可以把 tuna 替换为 ustc 或 sjtu 或 rustcc # 中国科学技术大学 [source.ustc] registry = "git://mirrors.ustc.edu.cn/crates.io-index" # 上海交通大学 [source.sjtu] registry = "https://mirrors.sjtug.sjtu.edu.cn/git/crates.io-index" # 清华大学 [source.tuna] registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git" # rustcc社区 [source.rustcc] registry = "https://code.aliyun.com/rustcc/crates.io-index.git" (base) shenpeng@Mac-Studio xinhou-openai-admin % cargo clean build (base) shenpeng@Mac-Studio xinhou-rocket-admin % cargo run /Users/shenpeng/Works/workspaces-rust/xinhou-rocket/xinhou-rocket-admin/target/debug/xinhou-rocket-admin /Users/shenpeng/Works/workspaces-rust/xinhou-rocket/xinhou-rocket-admin/banner.txt contains: _ _ _ _ _ _ __ __ (_) _ __ | |__ ___ _ _ _ __ ___ ___ | | __ ___ | |_ __ _ __| | _ __ ___ (_) _ __ \ \/ / | | | '_ \ | '_ \ / _ \ | | | | _____ | '__| / _ \ / __| | |/ / / _ \ | __| _____ / _` | / _` | | '_ ` _ \ | | | '_ \ > < | | | | | | | | | | | (_) | | |_| | |_____| | | | (_) | | (__ | < | __/ | |_ |_____| | (_| | | (_| | | | | | | | | | | | | | /_/\_\ |_| |_| |_| |_| |_| \___/ \__,_| |_| \___/ \___| |_|\_\ \___| \__| \__,_| \__,_| |_| |_| |_| |_| |_| |_| ==================================================== Welcome to xinhou-rocket-admin ! ====================================================== Application: xinhou-rocket-admin Version: V1.0.0 芯后智能科技<开发版> Author: shenpeng Email: sp_hrz@qq.com DEPLOY_ENV: dev =================================================================== End ==================================================================== [2024-07-09T06:44:16Z INFO sqlx::query] SET sql_mode=(SELECT CONCAT(@@sql_mode, ',PIPES_AS_CONCAT,NO_ENGINE_SUBSTITUTION')),time_zone='+00:00',NAMES …; rows affected: 0, rows returned: 0, elapsed: 1.557ms SET sql_mode =( SELECT CONCAT( @ @sql_mode, ',PIPES_AS_CONCAT,NO_ENGINE_SUBSTITUTION' ) ), time_zone = '+00:00', NAMES utf8mb4 COLLATE utf8mb4_unicode_ci; [2024-07-09T06:44:16Z INFO xinhou_rocket_admin::extends::core::context::app_context_beans] Added bean: config_service [2024-07-09T06:44:16Z INFO xinhou_rocket_admin::extends::core::context::app_context_beans] Added bean: dept_service [2024-07-09T06:44:16Z INFO xinhou_rocket_admin::extends::core::context::app_context_beans] Added bean: dicts_data_service [2024-07-09T06:44:16Z INFO xinhou_rocket_admin::extends::core::context::app_context_beans] Added bean: dicts_type_service [2024-07-09T06:44:16Z INFO xinhou_rocket_admin::extends::core::context::app_context_beans] Added bean: logs_service [2024-07-09T06:44:16Z INFO xinhou_rocket_admin::extends::core::context::app_context_beans] Added bean: menu_service [2024-07-09T06:44:16Z INFO xinhou_rocket_admin::extends::core::context::app_context_beans] Added bean: post_service [2024-07-09T06:44:16Z INFO xinhou_rocket_admin::extends::core::context::app_context_beans] Added bean: role_dept_service [2024-07-09T06:44:16Z INFO xinhou_rocket_admin::extends::core::context::app_context_beans] Added bean: role_menu_service [2024-07-09T06:44:16Z INFO xinhou_rocket_admin::extends::core::context::app_context_beans] Added bean: role_service [2024-07-09T06:44:16Z INFO xinhou_rocket_admin::extends::core::context::app_context_beans] Added bean: tenant_service [2024-07-09T06:44:16Z INFO xinhou_rocket_admin::extends::core::context::app_context_beans] Added bean: user_post_service [2024-07-09T06:44:16Z INFO xinhou_rocket_admin::extends::core::context::app_context_beans] Added bean: user_role_service [2024-07-09T06:44:16Z INFO xinhou_rocket_admin::extends::core::context::app_context_beans] Added bean: user_service [2024-07-09T06:44:16Z INFO rocket::launch] 🔧 Configured for debug. [2024-07-09T06:44:16Z INFO rocket::launch::_] address: 0.0.0.0 [2024-07-09T06:44:16Z INFO rocket::launch::_] port: 8080 [2024-07-09T06:44:16Z INFO rocket::launch::_] workers: 24 [2024-07-09T06:44:16Z INFO rocket::launch::_] max blocking threads: 512 [2024-07-09T06:44:16Z INFO rocket::launch::_] ident: Rocket [2024-07-09T06:44:16Z INFO rocket::launch::_] IP header: X-Real-IP [2024-07-09T06:44:16Z INFO rocket::launch::_] limits: bytes = 8KiB, data-form = 2MiB, file = 1MiB, form = 32KiB, json = 1MiB, msgpack = 1MiB, string = 8KiB [2024-07-09T06:44:16Z INFO rocket::launch::_] temp dir: /var/folders/t1/7pyyj5kn61n9g7r77dhvk_k40000gp/T/ [2024-07-09T06:44:16Z INFO rocket::launch::_] http/2: true [2024-07-09T06:44:16Z INFO rocket::launch::_] keep-alive: 5s [2024-07-09T06:44:16Z INFO rocket::launch::_] tls: disabled [2024-07-09T06:44:16Z INFO rocket::launch::_] shutdown: ctrlc = true, force = true, signals = [SIGTERM], grace = 2s, mercy = 3s [2024-07-09T06:44:16Z INFO rocket::launch::_] log level: normal [2024-07-09T06:44:16Z INFO rocket::launch::_] cli colors: true [2024-07-09T06:44:16Z INFO rocket::launch] 📬 Routes: [2024-07-09T06:44:16Z INFO rocket::launch::_] (health) GET /health [2024-07-09T06:44:16Z INFO rocket::launch::_] (upload) POST /admin/upload [2024-07-09T06:44:16Z INFO rocket::launch::_] (save) POST /admin/user/save [2024-07-09T06:44:16Z INFO rocket::launch::_] (list) POST /admin/user/list [2024-07-09T06:44:16Z INFO rocket::launch::_] (index_index) GET /admin/index/index [2024-07-09T06:44:16Z INFO rocket::launch::_] (update) POST /admin/user/update [2024-07-09T06:44:16Z INFO rocket::launch::_] (index_banner) GET /admin/index/banner [2024-07-09T06:44:16Z INFO rocket::launch::_] (detail) GET /admin/user/detail/ [2024-07-09T06:44:16Z INFO rocket::launch::_] (delete) GET /admin/user/delete/ [2024-07-09T06:44:16Z INFO rocket::launch] 🥅 Catchers: [2024-07-09T06:44:16Z INFO rocket::launch::_] (not_found) 404 [2024-07-09T06:44:16Z INFO rocket::launch::_] (internal_error) 500 [2024-07-09T06:44:16Z INFO rocket::launch] 📡 Fairings: [2024-07-09T06:44:16Z INFO rocket::launch::_] Shield (liftoff, response, singleton) [2024-07-09T06:44:16Z INFO rocket::shield::shield] 🛡️ Shield: [2024-07-09T06:44:16Z INFO rocket::shield::shield::_] Permissions-Policy: interest-cohort=() [2024-07-09T06:44:16Z INFO rocket::shield::shield::_] X-Content-Type-Options: nosniff [2024-07-09T06:44:16Z INFO rocket::shield::shield::_] X-Frame-Options: SAMEORIGIN [2024-07-09T06:44:16Z WARN rocket::launch] 🚀 Rocket has launched from http://0.0.0.0:8080 (base) shenpeng@Mac-Studio xinhou-rocket-admin % ~~~