Kinit
后 端 采 用 现代、快速 (高性能 ) FastAPI 异步框 架 +自 动生成 交互 式 API文 档 + (强制 类型约束)Pydantic + (高 效率 )SQLAlchemy 2.0;- PC
端 采 用 vue-element-plus-admin 、Vue3、Element Plus、TypeScript等 主流 技 术开发; 移 动端采 用 uni-app,Vue2,uView 2为主要 技 术开发;后 端 加入 Typer命令 行 应用,简单化 数 据 初 始 化 ,数 据 表 模型 迁移等 操作 ;后 端 新 加入 根 据 配置 的 ORM模型 ,自 动生成 CRUD代 码;定 时任务功能 ,采 用 APScheduler定 时任务框架 + Redis消息 队列 + MongoDB持久 存 储;- 权限认证
使用 (哈希)密 码和 JWT Bearer令 牌 的 OAuth2,支持 多 终端认证系 统。 支持 加 载动态权限 菜 单,多 方式 轻松权限控 制 ,按钮级别权限控 制 。已 加入 常 见的 MySQL + MongoDB + Redis数 据 库异步 操作 。支持 docker-compose部署 方式 - 开箱
即 用 的中 后 台 解 决方案 ,可 以用来 作 为新项目的 启动模 版 ,也可用 于学习参考 。并且时刻关注着 最新 技 术动向 ,尽 可能 的 第 一 时间更新 。 与 vue-element-plus-admin前 端 框 架 时刻保持 同 步 更新 。
vue-element-plus-admin:
RuoYi
django-vue-admin:django-vue-admin
2024-4-25
PC
搜索 :kinit- 扫码:
- 账号:15020221010
密 码:kinit2022
测试账户:
- 账号:15020240125
密 码:test
目前 只 支持 生成 接 口 代 码目前 只 支持 使用 脚本 方式 运行,后 续会更新 到 页面操作 代 码是根 据 手 动配置 的 ORM模型 来 生成 的 ,支持 参 数 同 步 ,比 如默认值,是 否 为空...
scripts/crud_generate/main.py
该功
-
schema
序列 化 代 码schema
文 件名 称 会 使用 设置的 en_name名称 ,如果文 件 已 经存在 会 先 执行删除,再 创建。schema
代 码内容 生成 完成 后 ,同 时会将 新 创建的 class在 __init__.py
文 件 中 导入。 -
dal
数 据 操作 代 码dal
文 件名 称 会 使用 默 认的crud.py
文 件名 称 ,目前 不 支持 自 定 义。如果 dal
文 件 已 经存在 ,并且已 经有代 码内容 ,那 么会将 新 的 模型 dal class追加 到 文 件 最 后 ,并会合 并文件 内 导入的 module。 -
param 请求
参 数 代 码param
文 件 名取 名 方式 与 schema一致 。会 创建出 默 认最简的 param class。 -
view 视图
代 码view
文 件名 称 同 样会使用 默 认的view.py
文 件名 称 ,目前 不 支持 自 定 义。如果 view
文 件 已 经存在 ,与 dal 执行操作 一致 。
if __name__ == '__main__':
from apps.vadmin.auth.models import VadminUser
crud = CrudGenerate(VadminUser, "用 户", "user")
# 只 打 印代 码,不 执行创建写 入
crud.generate_codes()
# 创建并写入 代 码
crud.main()
UserDal
B站 视频
gitee
github
-
菜 单管理 :配置 系 统菜单,操作 权限,按钮权限标识、后 端 接 口 权限等 。 -
部 门管理 :支持 无限层级部 门配置 。 -
角 色 管理 :角 色 菜 单权限 ,角 色部 门权限 分配 。 -
用 户管理 :用 户是系 统操作者 ,该功能 主要 完成 系 统用户配置 。 -
个人
主 页:配置 用 户个人 信 息 ,密 码修改 等 。 -
字典 管理 :对系统中经常使用 的 一些较为固定的数据进行维护。 -
文 件 上 传:对接阿 里 云 OSS与本 地 存 储。 -
登 录认证:目前 支持 用 户使用 手 机 号 +密 码登录方式 ,手 机 验证码登录方式 。说明:
新建 用 户密码默认为手 机 号 后 六 位 ;说明:
用 户在第 一 次 登 录时,必须修 改 当 前 用 户密码。 -
系 统配置 :对本系 统环境 信 息 进行动态配置 网站标题,LOGO,描述,ICO,备案
号 ,底部 内容 ,微 信 小 程 序 信 息 ,等 等 -
用 户分布 :接 入 高 德地 图显示 各 地区 用 户分布 情 况 -
数 据 概 览:提供 两种数 据 统计展示 模 板 ,更 直 观的查看数 据 统计情 况 -
智慧 大 屏 :大 屏 展示 办公
室 空 气质量 实时检测数 据 分析 -
登 录日志 :用 户登录日志 记录和 查询。 -
操作 日 志 :系 统用户每次 操作 功 能 时的详细记录。 -
接 口 文 档:提供 自 动生成 的 交互 式 API文 档,与 ReDoc文 档 -
导入导出:灵活
支持 数 据 导入导出功 能 -
已 加入 常 见的Redis
、MySQL
、MongoDB
数 据 库异步 操作 。 -
命令 行 操作 :新 加入 Typer
命令 行 应用,简单化 数 据 初 始 化 ,数 据 表 模型 迁移。 -
定 时任务:在 线操作 (添加 、修 改 、删除)任 务调度 包含 查看任 务执行 结果日 志 。
-
登 录认证:支持 用 户使用 手 机 号 +密 码方式 登 录,微 信 手 机 号 一 键登录方式 。说明:
新建 用 户密码默认为手 机 号 后 六 位 ;说明:
用 户在第 一 次 登 录时,必须修 改 当 前 用 户密码。 -
导航栏:
首 页、我 的 、工作 台 -
我 的 基 础功能 :编辑资料、头像修 改 、密 码修改 、常 见问题、关于我 们等
- Python3:
熟 悉 python3基 础语法 - FastAPI -
熟 悉后台 接 口 Web框 架 - SQLAlchemy 2.0 -
数 据 数 据 库操作 - Typer -
熟 悉命令 行 工具 的 使用 - MySQL
和 MongoDB和 Redis -熟 悉数据 存 储数据 库 - iP查询
接 口 文 档:IP查询第 三 方 服 务,有 1000次 的 免 费次数
- node
和 git - 项目开发环境 - Vite -
熟 悉 vite特性 - Vue3 -
熟 悉 Vue基 础语法 - TypeScript -
熟 悉TypeScript
基本 语法 - Es6+ -
熟 悉 es6基本 语法 - Vue-Router-Next -
熟 悉 vue-router基本 使用 - Element-Plus - element-plus
基本 使用 - vue3-json-viewer:简单
易 用 的 json内容 展示 组件,适配vue3和 vite。 高德 地 图API (amap.com):地 图 JSAPI 2.0是 高德 开放平台 免 费提供 的 第 四 代 Web地 图渲染 引擎。
- uni-app -
熟 悉 uni-app基本 语法 - Vue2 -
熟 悉 Vue基 础语法 - uView UI 2:uView UI 组件
的 基本 使用 - uni-read-pages :
自 动读取pages.json
所有 配置 。 - uni-simple-router :
在 uni-app中 使用 vue-router的 方式 进行跳 转路由 ,路 由 拦截。
- Python3 -
熟 悉 python3基 础语法 - APScheduler -
熟 悉定时任务框架 - MongoDB
和 Redis -熟 悉数据 存 储数据 库
获取
git clone https://gitee.com/ktianc/kinit.git
Python == 3.10 (其他版本 均 未 测试)
nodejs >= 14.0 (推荐使用 最新 稳定版 )
Mysql >= 8.0
MongoDB (推荐使用 最新 稳定版 )
Redis (推荐使用 最新 稳定版 )
-
安 装 依 赖cd kinit-api pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
-
修 改 项目环境配置 修 改 application/settings.py
文 件 #
安全 警告 :不要 在 生 产中打 开调试运行 ! DEBUG = True # 如果当 前 为开发环境 则改为 True,如果为生产环境 则改为 False -
修 改 项目数 据 库配置 信 息 在 application/config
目 录中-
development.py:开发环境
-
production.py:
生 产环境
# Mysql
数 据 库配置 项 # 连接引擎官 方 文 档:https://www.osgeo.cn/sqlalchemy/core/engines.html #数 据 库链接 配置 说明:mysql+asyncmy://数 据 库用户名:数 据 库密码@数 据 库地址 :数 据 库端口 /数 据 库名称 SQLALCHEMY_DATABASE_URL = "mysql+asyncmy://数 据 库用户名:数 据 库密码@数 据 库地址 :数 据 库端口 /数 据 库名称 " SQLALCHEMY_DATABASE_TYPE = "mysql" # Redis数 据 库配置 REDIS_DB_ENABLE = True REDIS_DB_URL = "redis://:密 码@地 址 :端 口 /数 据 库" # MongoDB数 据 库配置 MONGO_DB_ENABLE = True MONGO_DB_NAME = "数 据 库名称 " MONGO_DB_URL = f"mongodb://用 户名:密 码@地 址 :端 口 /?authSource={MONGO_DB_NAME}" #阿 里 云 对象存 储OSS配置 #阿 里 云 账号AccessKey拥有所有 API的 访问权限,风险很高。强烈 建 议您创建并使用 RAM用 户进行 API访问或 日常 运维,请登录RAM控 制 台 创建RAM用 户。 # yourEndpoint填 写 Bucket所在 地域 对应的 Endpoint。以华东1(杭州 )为例, # Endpoint填 写 为https://oss-cn-hangzhou.aliyuncs.com。 # * [accessKeyId] {String}:通 过阿里 云 控 制 台 创建的 AccessKey。 # * [accessKeySecret] {String}:通 过阿里 云 控 制 台 创建的 AccessSecret。 # * [bucket] {String}:通 过控制 台 或 PutBucket创建的 bucket。 # * [endpoint] {String}:bucket所在 的 区域 ,默 认oss-cn-hangzhou。 ALIYUN_OSS = { "accessKeyId": "accessKeyId", "accessKeySecret": "accessKeySecret", "endpoint": "endpoint", "bucket": "bucket", "baseUrl": "baseUrl" } # 获取IP地 址 归属地 #文 档:https://user.ip138.com/ip/doc IP_PARSE_ENABLE = True IP_PARSE_TOKEN = "IP_PARSE_TOKEN" -
-
并在
alembic.ini
文 件 中 配置 数 据 库信息 ,用 于数据 库映射 # mysql+pymysql://
数 据 库用户名:数 据 库密码@数 据 库地址 :数 据 库端口 /数 据 库名称 [dev] # 开发环境 version_locations = %(here)s/alembic/versions_dev sqlalchemy.url = mysql+pymysql://root:123456@127.0.0.1/kinit [pro] #生 产环境 version_locations = %(here)s/alembic/versions_pro sqlalchemy.url = mysql+pymysql://root:123456@127.0.0.1/kinit -
创建
数 据 库mysql> create database kinit; # 创建
数 据 库 mysql> use kinit; #使用 已 创建的 数 据 库 mysql> set names utf8; # 设置编码 -
初 始 化 数 据 库数据 # 项目
根 目 录下执行,需提前 创建好 数 据 库 #会 自 动将模型 迁移到 数 据 库,并生成 初 始 化 数 据 # 执行前 请确认执行 的 环境与 settings.py文 件 中 配置 的 DEBUG一致 # (生 产环境 ) python3 main.py init # (开发环境) python3 main.py init --env dev -
修 改 项目基本 配置 信 息 修 改 数 据 库表 - vadmin_system_settings中 的 关键信 息 #
阿 里 云 短信 配置 sms_access_key sms_access_key_secret sms_sign_name_1 sms_template_code_1 sms_sign_name_2 sms_template_code_2 #高德 地 图配置 map_key #微 信 小 程 序 配置 wx_server_app_id wx_server_app_secret # 邮箱配置 email_access email_password email_server email_port -
启动
# 进入项目
根 目 录下执行 python3 main.py run
安 装 依 赖
cd kinit-admin
pnpm install
- 运行
pnpm run dev
打 包
pnpm run build:pro
-
安 装 依 赖#
安 装 依 赖库 pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ #第 三 方 源 : 1.阿 里 源 : https://mirrors.aliyun.com/pypi/simple/ -
修 改 项目数 据 库配置 信 息 在 application/config
目 录中-
development.py:开发环境
-
production.py:
生 产环境
# MongoDB
数 据 库配置 #与 接 口 是 同 一个数据库 MONGO_DB_NAME = "数 据 库名称 " MONGO_DB_URL = f"mongodb://用 户名:密 码@地 址 :端 口 /?authSource={MONGO_DB_NAME}" # Redis数 据 库配置 #与 接 口 是 同 一个数据库 REDIS_DB_URL = "redis://:密 码@地 址 :端 口 /数 据 库名称 " -
-
启动
python3 main.py
- 访问
地 址 :http://localhost:5000 (默 认为此地址 ,如有修 改 请按照 配置 文 件 ) - 账号:
15020221010
密 码:kinit2022
接 口 地 址 :http://localhost:9000/docs (默 认为此地址 ,如有修 改 请按照 配置 文 件 )
-
获取
代 码git clone https://gitee.com/ktianc/kinit.git
-
修 改 项目环境配置 :-
修 改 API端 :文 件 路 径 为:kinit-api/application/settings.py
#
安全 警告 :不要 在 生 产中打 开调试运行 ! DEBUG = False #生 产环境 应该改 为 False -
修 改定 时任务端:文 件 路 径 为:kinit-task/application/settings.py
#
安全 警告 :不要 在 生 产中打 开调试运行 ! DEBUG = False #生 产环境 应该改 为 False
-
-
(如果
没 有安 装 数 据 库则不 需要 这一操作 )如果已 有 Mysql或 者 Redis或 者 MongoDB数 据 库,请执行 以下 操作 :请先
在 对应数 据 库中创建用 户名以及数 据 库,并修改 以下 数 据 库连接 改 为已有 的 数 据 库连接 -
修 改 API端 配置 文 件 :文 件 路 径 为:kinit-api/application/config/production.py
# Mysql
数 据 库配置 项 # 连接引擎官 方 文 档:https://www.osgeo.cn/sqlalchemy/core/engines.html #数 据 库连接 配置 说明:mysql+asyncmy://数 据 库用户名:数 据 库密码@数 据 库地址 :数 据 库端口 /数 据 库名称 SQLALCHEMY_DATABASE_URL = "mysql+asyncmy://root:123456@177.8.0.7:3306/kinit" # Redis数 据 库配置 #格式 :"redis://:密 码@地 址 :端 口 /数 据 库名称 " REDIS_DB_ENABLE = True REDIS_DB_URL = "redis://:123456@177.8.0.5:6379/1" # MongoDB数 据 库配置 #格式 :mongodb://用 户名:密 码@地 址 :端 口 /?authSource=数 据 库名称 MONGO_DB_ENABLE = True MONGO_DB_NAME = "kinit" MONGO_DB_URL = f"mongodb://kinit:123456@177.8.0.6:27017/?authSource={MONGO_DB_NAME}" -
修 改定 时任务配置 文 件 文 件 路 径 为:kinit-task/application/config/production.py
# Redis
数 据 库配置 #与 接 口 是 同 一个数据库 #格式 :"redis://:密 码@地 址 :端 口 /数 据 库名称 " REDIS_DB_ENABLE = True REDIS_DB_URL = "redis://:123456@177.8.0.5:6379/1" # MongoDB数 据 库配置 #与 接 口 是 同 一个数据库 #格式 :mongodb://用 户名:密 码@地 址 :端 口 /?authSource=数 据 库名称 MONGO_DB_ENABLE = True MONGO_DB_NAME = "kinit" MONGO_DB_URL = f"mongodb://kinit:123456@177.8.0.6:27017/?authSource={MONGO_DB_NAME}" -
将 已 有 的 数 据 库在docker-compose.yml
文 件 中 注 释
-
-
配置 阿 里 云 OSS与 IP解析 接 口 地 址 (可 选)文 件 路 径 :kinit-api/application/config/production.py
#
阿 里 云 对象存 储OSS配置 #阿 里 云 账号AccessKey拥有所有 API的 访问权限,风险很高。强烈 建 议您创建并使用 RAM用 户进行 API访问或 日常 运维,请登录RAM控 制 台 创建RAM用 户。 # yourEndpoint填 写 Bucket所在 地域 对应的 Endpoint。以华东1(杭州 )为例, # Endpoint填 写 为https://oss-cn-hangzhou.aliyuncs.com。 # * [accessKeyId] {String}:通 过阿里 云 控 制 台 创建的 AccessKey。 # * [accessKeySecret] {String}:通 过阿里 云 控 制 台 创建的 AccessSecret。 # * [bucket] {String}:通 过控制 台 或 PutBucket创建的 bucket。 # * [endpoint] {String}:bucket所在 的 区域 ,默 认oss-cn-hangzhou。 ALIYUN_OSS = { "accessKeyId": "accessKeyId", "accessKeySecret": "accessKeySecret", "endpoint": "endpoint", "bucket": "bucket", "baseUrl": "baseUrl" } # 获取IP地 址 归属地 #文 档:https://user.ip138.com/ip/doc IP_PARSE_ENABLE = False IP_PARSE_TOKEN = "IP_PARSE_TOKEN" -
前 端 项目打 包 :cd kinit-admin #
安 装 依 赖包 pnpm install #打 包 pnpm run build:pro
# 启动并创建 所有 容器
docker-compose up -d
# 初 始 化 数 据
docker-compose exec kinit-api python3 main.py init
# 重 启所有 容器
docker-compose restart
# 其他命令 :
# 停止 所有 容器
docker-compose down
# 查看所有 容器 状 态
docker-compose ps -a
- 访问
地 址 :http://localhost (默 认为此地址 ,如有修 改 请按照 配置 文 件 ) - 账号:
15020221010
密 码:kinit2022
接 口 地 址 :http://localhost:9000/docs (默 认为此地址 ,如有修 改 请按照 配置 文 件 )
你可以
Pull Request:
- Fork
代 码 - 创建
自己 的 分 支 :git checkout -b feat/xxxx
提 交你的 修 改 :git commit -am 'feat(function): add xxxxx'
- 推送您的
分 支 :git push origin feat/xxxx
提 交pull request
Chrome 80+
浏览
IE | Edge | Firefox | Chrome | Safari |
---|---|---|---|---|
not support | last 2 versions | last 2 versions | last 2 versions | last 2 versions |
图1
图2
图3
图4