From 9e59170a4b61b81a324f14c70f8c6dbc0c6e2460 Mon Sep 17 00:00:00 2001 From: ktianc Date: Mon, 3 Jul 2023 23:49:23 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E6=96=B0=E5=8A=A0=E5=85=A5?= =?UTF-8?q?=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 95 +++- images/new/1688392266702.jpg | Bin 0 -> 85341 bytes kinit-admin/src/api/vadmin/system/task.ts | 33 ++ .../ContentWrap/src/ContentWrap.vue | 2 +- kinit-admin/src/styles/index.less | 6 + kinit-admin/src/styles/var.css | 2 + kinit-admin/src/utils/dict.ts | 4 +- .../system/record/task/components/Detail.vue | 20 + .../record/task/components/task.data.ts | 115 +++++ .../views/vadmin/system/record/task/index.vue | 138 ++++++ .../vadmin/system/task/components/Write.vue | 112 +++++ .../system/task/components/task.data.ts | 326 ++++++++++++++ .../src/views/vadmin/system/task/index.vue | 289 ++++++++++++ kinit-api/application/settings.py | 10 +- kinit-api/apps/vadmin/auth/views.py | 1 - kinit-api/apps/vadmin/record/crud.py | 9 +- .../apps/vadmin/record/schemas/__init__.py | 2 +- .../apps/vadmin/record/schemas/operation.py | 7 +- kinit-api/apps/vadmin/record/views.py | 10 +- kinit-api/apps/vadmin/system/crud.py | 334 +++++++++++++- .../apps/vadmin/system/params/__init__.py | 1 + kinit-api/apps/vadmin/system/params/task.py | 30 ++ .../apps/vadmin/system/schemas/__init__.py | 1 + kinit-api/apps/vadmin/system/schemas/task.py | 33 ++ kinit-api/apps/vadmin/system/views.py | 97 ++++- kinit-api/core/crud.py | 2 +- kinit-api/core/data_types.py | 23 + kinit-api/core/database.py | 19 +- kinit-api/core/event.py | 8 +- kinit-api/core/middleware.py | 6 +- kinit-api/core/mongo/__init__.py | 13 - kinit-api/core/mongo/database_manage.py | 47 -- kinit-api/core/mongo/mongo_manage.py | 82 ---- kinit-api/core/mongo_manage.py | 165 +++++++ kinit-api/utils/tools.py | 2 +- kinit-task/.gitignore | 32 ++ kinit-task/README.md | 410 ++++++++++++++++++ kinit-task/application/__init__.py | 7 + kinit-task/application/config/__init__.py | 0 kinit-task/application/config/development.py | 23 + kinit-task/application/config/production.py | 23 + kinit-task/application/settings.py | 51 +++ kinit-task/core/__init__.py | 7 + kinit-task/core/listener.py | 57 +++ kinit-task/core/logger.py | 30 ++ kinit-task/core/mongo/__init__.py | 7 + kinit-task/core/mongo/mongo_manage.py | 118 +++++ kinit-task/core/redis/__init__.py | 7 + kinit-task/core/redis/redis_manage.py | 37 ++ kinit-task/core/scheduler.py | 347 +++++++++++++++ kinit-task/logs/.gitkeep | 0 kinit-task/main.py | 164 +++++++ kinit-task/requirements.txt | 11 + kinit-task/tasks/__init__.py | 7 + kinit-task/tasks/test/__init__.py | 7 + kinit-task/tasks/test/main.py | 26 ++ 56 files changed, 3217 insertions(+), 198 deletions(-) create mode 100644 images/new/1688392266702.jpg create mode 100644 kinit-admin/src/api/vadmin/system/task.ts create mode 100644 kinit-admin/src/views/vadmin/system/record/task/components/Detail.vue create mode 100644 kinit-admin/src/views/vadmin/system/record/task/components/task.data.ts create mode 100644 kinit-admin/src/views/vadmin/system/record/task/index.vue create mode 100644 kinit-admin/src/views/vadmin/system/task/components/Write.vue create mode 100644 kinit-admin/src/views/vadmin/system/task/components/task.data.ts create mode 100644 kinit-admin/src/views/vadmin/system/task/index.vue create mode 100644 kinit-api/apps/vadmin/system/params/task.py create mode 100644 kinit-api/apps/vadmin/system/schemas/task.py delete mode 100644 kinit-api/core/mongo/__init__.py delete mode 100644 kinit-api/core/mongo/database_manage.py delete mode 100644 kinit-api/core/mongo/mongo_manage.py create mode 100644 kinit-api/core/mongo_manage.py create mode 100644 kinit-task/.gitignore create mode 100644 kinit-task/README.md create mode 100644 kinit-task/application/__init__.py create mode 100644 kinit-task/application/config/__init__.py create mode 100644 kinit-task/application/config/development.py create mode 100644 kinit-task/application/config/production.py create mode 100644 kinit-task/application/settings.py create mode 100644 kinit-task/core/__init__.py create mode 100644 kinit-task/core/listener.py create mode 100644 kinit-task/core/logger.py create mode 100644 kinit-task/core/mongo/__init__.py create mode 100644 kinit-task/core/mongo/mongo_manage.py create mode 100644 kinit-task/core/redis/__init__.py create mode 100644 kinit-task/core/redis/redis_manage.py create mode 100644 kinit-task/core/scheduler.py create mode 100644 kinit-task/logs/.gitkeep create mode 100644 kinit-task/main.py create mode 100644 kinit-task/requirements.txt create mode 100644 kinit-task/tasks/__init__.py create mode 100644 kinit-task/tasks/test/__init__.py create mode 100644 kinit-task/tasks/test/main.py diff --git a/README.md b/README.md index 5e43a30..016b572 100644 --- a/README.md +++ b/README.md @@ -19,13 +19,14 @@ Kinit 是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用。 -- 后端采用 Python 语言现代、快速(高性能) [FastAPI](https://fastapi.tiangolo.com/zh/) 异步框架 + [SQLAlchemy](https://www.sqlalchemy.org/) 异步操作 [MySQL](https://www.mysql.com/) 数据库。 -- PC端采用 [vue-element-plus-admin](https://gitee.com/kailong110120130/vue-element-plus-admin) 、[Vue3](https://cn.vuejs.org/guide/introduction.html)、[Element Plus](https://element-plus.gitee.io/zh-CN/guide/design.html)、[TypeScript](https://www.tslang.cn/)等主流技术开发。 -- 移动端采用 [uni-app](https://uniapp.dcloud.net.cn/component/),[Vue2](https://v2.cn.vuejs.org/v2/guide/),[uView 2](https://www.uviewui.com/components/intro.html)为主要技术开发 -- 新加入 [Typer](https://typer.tiangolo.com/) 命令行应用,简单化数据初始化,数据表模型迁移。 +- 后端采用 Python 语言现代、快速(高性能) [FastAPI](https://fastapi.tiangolo.com/zh/) 异步框架 + [SQLAlchemy](https://www.sqlalchemy.org/) 异步操作 [MySQL](https://www.mysql.com/) 数据库; +- PC端采用 [vue-element-plus-admin](https://gitee.com/kailong110120130/vue-element-plus-admin) 、[Vue3](https://cn.vuejs.org/guide/introduction.html)、[Element Plus](https://element-plus.gitee.io/zh-CN/guide/design.html)、[TypeScript](https://www.tslang.cn/)等主流技术开发; +- 移动端采用 [uni-app](https://uniapp.dcloud.net.cn/component/),[Vue2](https://v2.cn.vuejs.org/v2/guide/),[uView 2](https://www.uviewui.com/components/intro.html)为主要技术开发; +- 后端加入 [Typer](https://typer.tiangolo.com/) 命令行应用,简单化数据初始化,数据表模型迁移等操作; +- 新加入定时任务功能,采用 [APScheduler](https://github.com/agronholm/apscheduler) 定时任务框架 + [Redis](https://redis.io/) 消息队列 + [MongoDB](https://www.mongodb.com/) 持久存储; - 权限认证使用[(哈希)密码和 JWT Bearer 令牌的 OAuth2](https://fastapi.tiangolo.com/zh/tutorial/security/oauth2-jwt/),支持多终端认证系统。 - 支持加载动态权限菜单,多方式轻松权限控制,按钮级别权限控制。 -- 已加入常见的`Redis`、`MYSQL`、`MongoDB`数据库异步操作。 +- 已加入常见的 [MySQL](https://www.mysql.com/) + [MongoDB](https://www.mongodb.com/) + [Redis](https://redis.io/) 数据库异步操作。 - 开箱即用的中后台解决方案,可以用来作为新项目的启动模版,也可用于学习参考。并且时刻关注着最新技术动向,尽可能的第一时间更新。 - 与 [vue-element-plus-admin](https://gitee.com/kailong110120130/vue-element-plus-admin) 前端框架时刻保持同步更新。 @@ -119,6 +120,8 @@ github地址:https://github.com/vvandk/kinit - [x] 命令行操作:新加入 `Typer` 命令行应用,简单化数据初始化,数据表模型迁移。 +- [x] 定时任务:在线操作(添加、修改、删除)任务调度包含查看任务执行结果日志。 + ## 移动端内置功能 - [x] 登录认证:支持用户使用手机号+密码方式登录,微信手机号一键登录方式。 @@ -133,10 +136,9 @@ github地址:https://github.com/vvandk/kinit ## TODO -- [ ] 考虑支持多机部署方案,如果接口使用多机,那么用户是否支持统一认证 -- [ ] **自动化编排服务:使用docker-compose部署项目** -- [ ] **定时任务:定时执行数据库备份** -- [ ] **可视化低代码表单:接入低代码表单,https://vform666.com/vform3.html?from=element_plus** +- [ ] 多租户方案 +- [ ] 自动化编排服务:使用docker-compose部署项目 +- [ ] 可视化低代码表单:接入低代码表单,[vform3](https://vform666.com/vform3.html?from=element_plus) ## 前序准备 @@ -145,7 +147,8 @@ github地址:https://github.com/vvandk/kinit - [Python3](https://www.python.org/downloads/windows/):熟悉 python3 基础语法 - [FastAPI](https://fastapi.tiangolo.com/zh/) - 熟悉后台接口 Web 框架. - [Typer](https://typer.tiangolo.com/) - 熟悉命令行工具的使用 -- [MySQL](https://www.mysql.com/) 和 [MongoDB](https://www.mongodb.com/) - 熟悉数据存储数据库 +- [MySQL](https://www.mysql.com/) 和 [MongoDB](https://www.mongodb.com/) 和 [Redis](https://redis.io/) - 熟悉数据存储数据库 +- [iP查询接口文档](https://user.ip138.com/ip/doc):IP查询第三方服务,有1000次的免费次数 ### PC端 @@ -157,30 +160,23 @@ github地址:https://github.com/vvandk/kinit - [Vue-Router-Next](https://gitee.com/link?target=https%3A%2F%2Fnext.router.vuejs.org%2F) - 熟悉 vue-router 基本使用 - [Element-Plus](https://gitee.com/link?target=https%3A%2F%2Felement-plus.org%2F) - element-plus 基本使用 - [Mock.js](https://gitee.com/link?target=https%3A%2F%2Fgithub.com%2Fnuysoft%2FMock) - mockjs 基本语法 +- [vue3-json-viewer](https://gitee.com/isfive/vue3-json-viewer):简单易用的json内容展示组件,适配vue3和vite。 +- [SortableJS/vue.draggable.next](https://github.com/SortableJS/vue.draggable.next):Vue 组件 (Vue.js 3.0) 允许拖放和与视图模型数组同步。 +- [高德地图API (amap.com)](https://lbs.amap.com/api/jsapi-v2/guide/webcli/map-vue1):地图 JSAPI 2.0 是高德开放平台免费提供的第四代 Web 地图渲染引擎。 ### 移动端 - [uni-app](https://uniapp.dcloud.net.cn/component/) - 熟悉 uni-app 基本语法 - [Vue2](https://v2.cn.vuejs.org/v2/guide/) - 熟悉 Vue 基础语法 - [uView UI 2](https://www.uviewui.com/components/intro.html):uView UI 组件的基本使用 - -### 依赖包 - -#### PC端 - -- [vue3-json-viewer](https://gitee.com/isfive/vue3-json-viewer):简单易用的json内容展示组件,适配vue3和vite。 -- [vue3-slide-verify](https://github.com/monoplasty/vue3-slide-verify):滑块验证码插件 vue3 + typescript。 -- [SortableJS/vue.draggable.next](https://github.com/SortableJS/vue.draggable.next):Vue 组件 (Vue.js 3.0) 允许拖放和与视图模型数组同步。 -- [高德地图API (amap.com)](https://lbs.amap.com/api/jsapi-v2/guide/webcli/map-vue1):地图 JSAPI 2.0 是高德开放平台免费提供的第四代 Web 地图渲染引擎, 以 WebGL 为主要绘图手段,本着“更轻、更快、更易用”的服务原则,广泛采用了各种前沿技术,交互体验、视觉体验大幅提升,同时提供了众多新增能力和特性。 - -#### 移动端 - - [uni-read-pages](https://github.com/SilurianYang/uni-read-pages) :自动读取 `pages.json` 所有配置。 - [uni-simple-router](https://hhyang.cn/v2/start/quickstart.html) :在uni-app中使用vue-router的方式进行跳转路由,路由拦截。 -#### 后端 +### 定时任务 -- [iP查询接口文档](https://user.ip138.com/ip/doc):IP查询第三方服务,有1000次的免费次数 +- [Python3](https://www.python.org/downloads/windows/) -熟悉 python3 基础语法 +- [APScheduler](https://github.com/agronholm/apscheduler) - 熟悉定时任务框架 +- [MongoDB](https://www.mongodb.com/) 和 [Redis](https://redis.io/) - 熟悉数据存储数据库 ## 安装和使用 @@ -323,6 +319,12 @@ Redis (推荐使用最新稳定版) # 微信小程序配置 wx_server_app_id wx_server_app_secret + + # 邮箱配置 + email_access + email_password + email_server + email_port ``` 6. 启动 @@ -354,6 +356,51 @@ pnpm run dev pnpm run build:pro ``` +### 定时任务 + +1. 安装依赖 + + ``` + # 安装依赖库 + pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ + + # 第三方源: + 1. 阿里源: https://mirrors.aliyun.com/pypi/simple/ + ``` + +2. 修改项目数据库配置信息 + + 在 `application/config` 目录中 + + - development.py:开发环境 + + - production.py:生产环境 + + ```python + """ + MongoDB 数据库配置 + + 与接口是同一个数据库 + """ + MONGO_DB_NAME = "数据库名称" + MONGO_DB_URL = f"mongodb://用户名:密码@地址:端口/?authSource={MONGO_DB_NAME}" + + + """ + Redis 数据库配置 + + 与接口是同一个数据库 + """ + REDIS_DB_URL = "redis://:密码@地址:端口/数据库名称" + ``` + +3. 启动 + + ``` + python3 main.py + ``` + + ### 访问项目 - 访问地址:http://localhost:5000 (默认为此地址,如有修改请按照配置文件) diff --git a/images/new/1688392266702.jpg b/images/new/1688392266702.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d35a930a00b0cd6804d3d67b6fe591db9d8f765b GIT binary patch literal 85341 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 literal 0 HcmV?d00001 diff --git a/kinit-admin/src/api/vadmin/system/task.ts b/kinit-admin/src/api/vadmin/system/task.ts new file mode 100644 index 0000000..32c73d2 --- /dev/null +++ b/kinit-admin/src/api/vadmin/system/task.ts @@ -0,0 +1,33 @@ +import request from '@/config/axios' + +export const getTaskListApi = (params: any): Promise => { + return request.get({ url: '/vadmin/system/tasks', params }) +} + +export const addTaskListApi = (data: any): Promise => { + return request.post({ url: '/vadmin/system/tasks', data }) +} + +export const delTaskListApi = (dataId: string): Promise => { + return request.delete({ url: `/vadmin/system/tasks?_id=${dataId}` }) +} + +export const putTaskListApi = (dataId: string, data: any): Promise => { + return request.put({ url: `/vadmin/system/tasks?_id=${dataId}`, data }) +} + +export const getTaskApi = (dataId: string): Promise => { + return request.get({ url: `/vadmin/system/task?_id=${dataId}` }) +} + +export const getTaskGroupOptionsApi = (): Promise => { + return request.get({ url: '/vadmin/system/task/group/options' }) +} + +export const getTaskRecordListApi = (params: any): Promise => { + return request.get({ url: '/vadmin/system/task/records', params }) +} + +export const runOnceTaskApi = (dataId: string): Promise => { + return request.post({ url: `/vadmin/system/task?_id=${dataId}` }) +} diff --git a/kinit-admin/src/components/ContentWrap/src/ContentWrap.vue b/kinit-admin/src/components/ContentWrap/src/ContentWrap.vue index 4538fc0..e1bc6d6 100644 --- a/kinit-admin/src/components/ContentWrap/src/ContentWrap.vue +++ b/kinit-admin/src/components/ContentWrap/src/ContentWrap.vue @@ -14,7 +14,7 @@ defineProps({