.net 快速开发框架开源
DF.OpenAPI开源系统
前后端分离,开箱即用,java经典功能.net也具备
系统介绍
DF.OpenAPI是基于Admin.NET二开的,是一个开源的多租户后台管理系统。采用前后端分离技术(前端使用vue.js,后端使用.net 3~.net6,及.net core3.0,支持docker及各类平台部署,数据库支持多种类型db、及orm框架),在原有基础上做了大量功能扩充。
- 后端.net框架:集成EF Core、多租户、多种缓存、数据校验、鉴权、单机事件总线、跨进程(分布式)事件总线、动态API、通讯、远程请求、分布式任务调度、gRPC、consul服务治理、性能追踪等众多黑科技。
- 前端功能:用户、角色(功能、数据权限)、职位、组织机构、菜单、字典、日志、多应用管理、文件管理、分布式定时任务、工作流、报表、在线聊天、代码生成、数据模型管理、ChatGpt外放收费api等功能。
- 部署方式前后端:支持windows\linux docker
如果项目对您开发有帮助,请在gitee源码中,点击右上角⭐Star⭐关注 ,感谢支持开源!
源码地址:DF.OpenAPI。
目前开源内容除企业功能(报表、流程、聊天)外,其它功能均已开源。如需获取企业功能完整功能源码,请与作者联系。
帮助文档可参考:
Furion帮助文档(收费):Furion
antd vue帮助文档:antd vue
OpenAPI帮助文档:请参考系统内部MD文档 MD管理
项目采用:DDD模型进行二次改造。
前端技术:vue-antd-pro(组件:antd vue1.7.8),vue2.6.1、vuex3.6.2
后端技术:.net6.0框架(微服务架构)
在线体验
开发者租户:演示环境【超管】权限暂不开放
管理员:用户名:Admin,密码:123456。目前部分删除功能做了禁用,防止误操作,影响其它人员体验。
地址:http://116.198.234.36:8088/ 流程各节点审批人员账号:
用户名 | 密码 |
---|---|
liuyi | 123456 |
chener | 123456 |
zhangsan | 123456 |
wangwu | 123456 |
zhaoliu | 123456 |
lisi123 | 123456 |
zhouba | 123456 |
sunqi | 123456 |
建议流程测试使用chener登录发起,此用户有完整的上下级组织关系。 |
技术交流QQ:270204536
微信二维码:
系统扩充功能(只列出与原系统差异化功能)
平台管理
- 开发管理
- 系统配置
- 缓存管理(新增)
新增缓存管理功能,可对当前运行系统中所有缓存key值进行查看或修改。支持权限控制(默认只有超级管理员可修改,其它用户只可查看)。
- 系统监控
- 服务监控
优化原状态监控频次,从原来的3秒改为10一检测;同时支持页面在有开启或关闭状态时,只有服务页面处理激活状态时,才会向服务器请求检测,降低了非激活页面时无效请求损耗;后端采集数据采用缓存机制,提高效率;另增加了系统其它信息采集维度。
- 任务调度
- 任务管理
1.1 扩充了任务级别类型(支持:后台服务、系统任务、自定义任务)
原系统只支持用户定时类的自定义任务。
后台任务:指编码服务实现类中,继承了BackgroundService实现的后台服务(权限:只读)
系统任务:指编码服务实现类中,基于ISpareTimeWorker实现的系统服务,且编码指定TaskSystemType=TaskSystemType.System。(权限:只读)
自定义任务:是通过任务调度管理,在管理平台新建的定时任务、或编码服务ISpareTimeWorker基于实现的系统服务,且编码指定TaskSystemType=TaskSystemType.Custom。(权限:编辑、修改、停止、启动)
1.2 列表支持任务集群运行状态显示
1.3 新增了微服务下任务集群管理(支持集群任务查看、编辑、单个开关、批量开关操作)
- 开发示例
罗列了百度ECharts各类使用示例、G2Plot统计图库、Peity图表库 - 代码生成
- 数据源表管理
开发框架在原有code-frist、DB-frist基础上,提供了可视化的建表操作,及联动代码生成操作。
支持表:增、删、改、关联关系、索引。
支持表字段:增、删、改、主键…… - 代码生成
支持直接生成到项目中、或生成代码压缩包下载到本地。
支持前端操作界面、后端API、业务逻辑、DB实体等一键生成。(支持code-frist\db-frist\数据源表一键生成管理能页面) - 表单设计器
增加了二次自开发组件(城市乡区、部门选择器、人员选择器、电子签名)
*注:相关组件可自行二开或联系开源作者有偿二开
运营管理
支持多租户管理
系统管理
- 组织架构
- 机构管理
增加机类型:一级……四级,用于API付费,根据不同级别设定不同分销价格。 - 职位管理
增加:是否管理,用于流程审批时,指定审批人(部门负责人)时使用。
- 权限管理
- 用户管理
管理员类型:增加后台API作业用户(后台服务调用接口时,专供服务权限验证的用户)。此功能只有超级管理员可见。其它用户新建用户时默认为普通用户
增加:直属上级,用于流程审批时,指定审批人(上级)时使用
增加:审批者开关,用于流程审批时,指定审批人(部门审批人)时使用 - 角色管理
增加:角色类型(集团、加盟商、门店),默认为集团。此功能只有超级管理员可见
- 通知公告
- 公告管理
支持:超文本内容发送、站点超连接页面指定数据跳转、外部超连接,支持指定成员发送 - 已收公告
支持:超文本内容、站点超连接页面指定数据跳转、外部超连接
- 文件管理
- 系统文件
支持文件下载、图片预览。
企业功能(新增)
此应用模块下,提供了强大的流程审批、报表管理模块。
- 流程管理
- 我的事务
1.1 审批首页
用于总览查看流程任务、及全新任务发起
开始发起操作,表单内容填写
设置审批人员
点击保存(保存到草稿箱)。点击提交则发起申请
1.2 待我处理
此处功能为,所有待我审批的任务,需要逐一进行审批。
可对发起人的任务表单进行修改。
审批功能有:同意、拒绝、转交、抄送、退回、加签、跟踪。评论
审批意见填写:支持审批意见、文件、图片、电子签名
另一个流程在发起后,所有参与的审批人员均可查看流程:表单、审批人、流程图、流转记录、流转进度。
表单:
审批人员清单
流程图
流转记录
流转进度
1.3 已处理的
此功能为,所有已经我管理的任务,可进行查看。另如果在刚审批后,后续审批人还未开始时,系统是支持撤回的,撤回修改后可重新审批。
1.4 抄送我的
此功能为,所有抄送我的审批任务,可供查看
1.5 我跟踪的
当审批人员在审批时,开启了跟踪,则跟踪任务会在此功能列表中显示,任务的每个审批进度,跟踪人员均能收到进度通知消息。
1.6 我发起的
此处为用户发起的任务列表,可查看任务流转进度。
发起后可支持的操作:
撤回:
当用户发刚发起后,未经其它人员审批时,这时是可以进行撤回,重新修改后发起的。
催办:
当任务比较紧急时,用户可发起催办。催办后的任务会标记为加急,同时审批人员回收到催办通知。
作废:
用户可随时作废发起的任务。
1.7 我的草稿
所有发起的审批,在未提交之前均回存入草稿。这时可修改、提交、删除。 - 流程管理
1.1 流程实例
实例管理人员,会有此功能。可对自己负责的流程实例进行管理。可进行批量操作:
退回:
退回后实例将被退返到发起人的草稿箱,并通知流程发起人重新提交流程
挂起、激活:
用于将任务暂停、和恢复操作
作废:
将申请人的任务进行作废
1.2 分组管理
此功能管理人员使用,可为任务模板进行分组。
1.3 模板管理
核心功能,用于新建、修改、删除流程模板
可对流程模板进行管理
模板编辑,分为四步:基础信息、表单设计、流程设计、更多配置
基础信息:
表单设计:
流程设计:
节点设置-审批设置:
节点设置-表单权限:
节点设置-高级设置:
节点设置-通知设置
可根据需要自定义通知消息模板
更多配置(打印)
- 报表管理
- 数据源管理
提供报表,所需数据库的数据源维护。
系统支持多种数据库,目前支持主流关系数据库,非关库(nosql)可与作者沟通有偿提供,或自行二开 - 数据集管理
报表所有的数据集管理。
数据集内容维护:
目前数据集支持sql、API请求、JSON数据集、其它类型可自行二开,或与作者沟通有偿提供。 - 模板管理
报表支持文本模板(word形式)、表格模板(excel形式)
文本模板
文本预览
文本打印
可导出word文档。
表格模板
表格预览
表格打印(如果打印选区超出A4纸大小:超高、超宽,系统会自动分页打印)
支持导出excel文件。
- 智能大屏
提供多种大屏模板示例,作者收集了70+大屏示例,如有需要可和作者沟通。 - MD管理
支持markdown文档,增、删、改、预览。(管理员可操作)
普通用户只可查看文档。此处理文档主要是针对系统使用、开发的帮助文档。
ChatAPI(新增)
此应用模块用于付费chatGPT-Api调用服务。针对使用的不同GPT模型、调用次数、请求返回数据长短计费。(目前系统只提供了管理、展示部分的功能,核心计费及OpenAI接口没有接入生产,OpenAI暂不生效)。
后端源码会开放计费API项目的调用,但OpenAi对接接口暂不提供开源。
系统常规设置
支持用户对界面个性化设置,并将设置信息保存到云端。用户在不同设备上均可以自己的界面设置进行办公。
设置功能如下:
- 界面自定义配色:
- 菜单keepAlives模式:
如果开启后,则页面会本地缓存,每次切换功能时不刷新页面数据,可提高访问速度。
如果关闭后,则关闭页面缓存,每次切换功能页均会发新数据。关闭后多页签模式的顶部菜单会显示刷新页面菜单。
顶层菜单栏按钮
帮助(新增):支持跳转到作者源码开源地址。
全屏:系统全屏开关。
通知:支持通知、公告,最新6条信息展示,支持一键标记已读。
消息发送:支持即时(在线、离线)聊天消息收发-(功能内部IM)
当在未打开聊天面板时,收到消息会以系统提示的方式弹出,点击可打开面板。
打开后的面板,支持文字、表情、图片发送。支持全员群发消息
消息发送,增加AI助手
支持系统内部不同应用下页面跳转,及数据过滤:
站内点转示例链接:
#/welcome?route=entFlowHome&appCode=enterprise&command=shareDetail&id=543672182898757
route:功能路由
appCode:应用code
command、id:自定义参数,可在跳转的页面根据参数,实现数据过滤逻辑
.net 框架新增功能
架构采用DDD模型
后端源码目录结构
API授权验证
原项目前后端分离、API请求采用JWT+TOKEN进行认证,但未做API权限管理及验证(这样攻击者只要知道要攻击的功能页面API,则可以使用小权限用户TOKEN来调用其无权限的功能API,例如:删除所有用户等恶性操作)。
扩充了API权限验证后,未设置权限的用户通过token调用API是无权访问的。
微服务功能
例如:跨平台事件总线、跨服务跟踪等。
架构核心思想:高内聚、低耦合、高性能、高可用,以业务角度(分析上下文界限,建模。业务分域->域建模->存储建模->存储实现)
- 支持consul微服务注册及发现,支持实时检测可用节点,负载算法:平均、随机、加权
- 支持多种配置方式:(数据库配置、环境变量、本地配置、云配置中心:apollo配置)
- 扩展分布式消息总线,支持分布式事务,保障微服务CAP原则(通过 EventId & CreatedTime 组合约束 保证不重复消费事件、通过消息队列中间件保障数据可靠性)。中件间封装Rabbitmq、kafka、zookeeper(分布式链路 cqrs、命令总线、EDA、事件驱动、事件溯源、消息队列)。
最后达到一点事件发布,随机分散多个定阅节点中只有一个有权响应(可有效防止事件消息重复处理) - 封装执行程序性能分析器、及跨服务性能跟踪(MiniProfiler、Prometheus)
- 断路器由consul计算熔断(自动健康检测)
外放付费API
可快速创建自己的付费API,支持认证、授权、计费、及后端统计分析
多种通信协议
支持http/https/GRPC/WebSocket,支持GRPC根据服务自动生成protos文件生成
支持DB代码:codefrist、dbfrist、和UI操作生成
项目、代码命名规范
【工程命名规范】
公司名缩写.项目名称:大驼峰命名
【模块命名规范】
公司名称缩写.项目名称.DDD所属层.功能类型.业务模块
所属层(Presentation、Application、Domain、Infrastructure、Plugins、Tools、Test)
功能类型(非必要项。WebApi、GrpcApi、WebApp、ClientServices……)
【文件夹命名规范】
大驼峰命名
【类名】:大驼峰命名、基类:Base+大驼峰
【接口】:I+大驼峰命名
【常量】:全部大写,每个单词之间用_连接
【枚举】:大驼峰命名
【私有变量、参数名】:小驼峰命名
【属性】:大驼峰命名
【函数】:大驼峰命名
【类内部只读变量】:_+小驼峰
未来计划功能
- 整理合并.net Furion开源最新版框架,使框架支持到8.0+
- 整理加入大屏设计器,基于datav.
- 前端增加桌面系统WPF\WINFORM平台。
特别鸣谢
Furion:Furion: 让 .NET 开发更简单,更通用,更流行。
Ant Design of Vue:https://1x.antdv.com/docs/vue/introduce-cn
k-form-design:k-form-design: 基于vue Ant-Design 的表单设计器,快速开发
Zack.EFCore.Batch:https://github.com/yangzhongke/Zack.EFCore.Batch
smart-flow-design:smart-flow-design: 仿钉钉 飞书 雀书 流程审批 设计 前端 http://47.109.22.115:10090/
luckysheet:https://github.com/dream-num/Luckysheet
相关文章:

.net 快速开发框架开源
DF.OpenAPI开源系统 前后端分离,开箱即用,java经典功能.net也具备 系统介绍 DF.OpenAPI是基于Admin.NET二开的,是一个开源的多租户后台管理系统。采用前后端分离技术(前端使用vue.js,后端使用.net 3~.net6ÿ…...

《昇思25天学习打卡营第06天|网络构建》
网络构建 神经网络模型由神经网络层和Tensor操作构成 #实验环境已经预装了mindspore2.2.14,如需更换mindspore版本,可更改下面mindspore的版本号 !pip uninstall mindspore -y !pip install -i https://pypi.mirrors.ustc.edu.cn/simple mindspore2.2.…...

【链表】- 两两交换链表中的节点
1. 对应力扣题目连接 两两交换链表中的节点 2. 实现案例代码 public class ExchangeLinkedListsPairwise {public static void main(String[] args) {// 示例链表:[1, 2, 3, 4]ListNode head new ListNode(1);head.next new ListNode(2);head.next.next new L…...

java设计模式(四)——抽象工厂模式
一、模式介绍 改善在工厂方法模式中,扩展时新增产品类、工厂类,导致项目中类巨多的场面,减少系统的维护成本,且一个工厂可以生成多种产品,而不是同一种的产品,比如一个工厂既可以生产鞋子又可以衣服,而不是只能生产鞋子。 二、工厂方法模式 1、实现步骤 第一步: 定义…...

动物检测yolo格式数据集(水牛 、大象 、犀牛 、斑马四类)
动物检测数据集 1、下载地址: https://download.csdn.net/download/qq_15060477/89512588?spm1001.2101.3001.9500 2、数据集介绍 本数据集含有四种动物可以检测,分别是水牛 、大象 、犀牛 、斑马四类,数据集格式为yolo格式,…...

昇思25天学习打卡营第05天 | 数据变换 Transforms
昇思25天学习打卡营第05天 | 数据变换 Transforms 文章目录 昇思25天学习打卡营第05天 | 数据变换 TransformsCommon TransformsCompose Vision TransformsText TransformPythonTokenizerLookup Lambda Transforms数据处理模式Pipeline模式Eager模式 总结打卡 通常情况下的原始…...

Springboot+MySQL 公寓报修管理系统源码
功能结构图 效果图:...

jenkins 发布服务到linux服务器
1.环境准备 1.1 需要一台已经部署了jenkins的服务器,上面已经集成好了,jdk、maven、nodejs、git等基础的服务。 1.2 需要安装插件 pusblish over ssh 1.3 准备一台额外的linux服务器,安装好jdk 2.流程描述 2.1 配置jenkins,包括p…...

Appium+python自动化(三十九)-Appium自动化测试框架综合实践 - 代码实现(超详解)
1.简介 今天我们紧接着上一篇继续分享Appium自动化测试框架综合实践 - 代码实现。由于时间的关系,宏哥这里用代码给小伙伴演示两个模块:注册和登录。 2.业务模块封装 因为现在各种APP的层出不群,各式各样的。但是其大多数都有注册、登录。为…...

防止跨站脚本攻击XSS之Antisamy
目录 一、什么是跨站脚本攻击(XSS) 二、通常有哪些解决方案 三、常见的XSS攻击例子有哪些 3.1 存储型XSS攻击(黑产恶意截流,跳转不法网站) 3.2反射型XSS攻击: 四、什么是跨站请求伪造? 五…...

Python爬虫实战案例——王者荣耀皮肤抓取
大家好,我是你们的老朋友——南枫,今天我们一起来学习一下该如何抓取大家经常玩的游戏——王者荣耀里面的所有英雄的皮肤。 老规矩,直接上代码: 导入我们需要使用到的,也是唯一用到的库: 我们要抓取皮肤其…...

PyTorch计算机视觉实战:目标检测、图像处理与深度学习
本书基于真实数据集,全面系统地阐述现代计算机视觉实用技术、方法和实践,涵盖50多个计算机视觉问题。全书分为四部分:一部分介绍神经网络和PyTorch的基础知识,以及如何使用PyTorch构建并训练神经网络,包括输入数据缩放…...

4D 生物打印:将时间维度融入,打造个性化动态组织
4D 生物打印技术将时间维度融入 3D 生物打印,赋予打印出的结构动态变化的能力,使其更接近于真实组织和器官的特性。要实现这一目标,需要使用智能生物材料和智能设计策略。 智能生物材料 目前用于 4D 生物打印的智能生物材料主要包括形状记忆…...

银行清算业务功能测试解析
银行清算业务是指银行间通过账户或有关货币当地清算系统,在办理结算和支付中用以清讫双边或多边债权债务的过程和方法。按地域划分,清算业务可分为国内联行清算和国际清算。常见的清算模式包括实时全额清算、净额批量清算、大额资金转账系统及小额定时清…...

CVE-2024-6387漏洞预警:尽快升级OpenSSH
OpenSSH维护者发布了安全更新,其中包含一个严重的安全漏洞,该漏洞可能导致在基于glibc的Linux系统中使用root权限执行未经身份验证的远程代码。该漏洞的代号为regreSSHion,CVE标识符为CVE-2024-6387。它驻留在OpenSSH服务器组件(也…...

学习整理在php中使用PHPExcel读取excel表列数大于Z时读取不到的解决方案
php读取excel列数大于Z时读取不到 背景解决方案关键代码 背景 表格数据超过26列, 也就是在Z列之前没有AA列及以后的情况, 测试一直都没有问题,超过,就会获取不到数据了 解决方案 private function getExcelData(){//获取excel文…...

python sklearn机械学习-数据预处理
🌈所属专栏:【机械学习】✨作者主页: Mr.Zwq✔️个人简介:一个正在努力学技术的Python领域创作者,擅长爬虫,逆向,全栈方向,专注基础和实战分享,欢迎咨询! 您…...

搜索引擎常用语法
引号 (" "): 用双引号将词组括起来,搜索引擎将返回包含完全相同短语的结果。 示例:"人工智能发展趋势" 减号 (-): 在关键词前加上减号可以排除包含特定词语的结果。 示例:人工智能 -机器学习(排除包含 “机器…...

华为智能驾驶方案剖析
华为ADS智驾方案始终坚持激光雷达毫米波雷达摄像头的多传感器融合路线,行业降本压力下硬件配置从超配逐步转向贴合实际需求,带动整体硬件成本下降。 1)单车传感器数量呈现下降趋势,包括激光雷达从3个减配至1个、毫米波雷达从6R减配至3R、摄像…...

DDR3(一)
目录 1 SDRAM1.1 同步动态随机存储器1.2 位宽1.3 SDRAM结构1.4 SDRAM引脚图 2 SDRAM操作指令2.1 读写指令2.2 刷新和预充电2.3 配置模式寄存器2.4 读/写突发2.5 数据屏蔽 SDRAM是DDR3的基础,在学习DDR3之前,我们先来学习一下SDRAM的相关知识。 1 SDRAM …...

Eureka与Spring Cloud Bus的协同:打造智能服务发现新篇章
Eureka与Spring Cloud Bus的协同:打造智能服务发现新篇章 在微服务架构中,服务发现是实现服务间通信的关键机制。Eureka作为Netflix开源的服务发现框架,与Spring Cloud Bus的集成,提供了一种动态、响应式的服务治理解决方案。本文…...

Kafka入门到精通(三)-Kafka
Kafka简介 Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动…...

高校教师教学质量评估系统-计算机毕业设计源码03344
摘要 在高等教育中,教学质量是培养优秀人才的关键。为了提高教学质量,高校需要建立一套科学、有效的教师教学质量评估系统。本研究采用 SSM技术框架,旨在开发一款高校教师教学质量评估系统。 SSM框架作为一种成熟的Java开发框架,具…...

币界网讯,预计以太坊现货 ETF 将于 7 月中旬推出
刚刚 ETF Store 总裁 Nate Geraci 在 X (前Twitter)平台上宣布,备受数字货币市场期待的SEC以太坊现货 ETF提案,将于7 月中旬通过美国证券交易委员会(SEC)批准。Nate Geraci透露修订后的 S-1 文件将于 7 月 …...

【FFmpeg】avio_open2函数
【FFmpeg】avio_open2函数 1.avio_open21.1 创建URLContext(ffurl_open_whitelist)1.1.1 创建URLContext(ffurl_alloc)1.1.1.1 查找合适的protocol(url_find_protocol)1.1.1.2 为查找到的URLProtocol创建UR…...

技术成神之路:设计模式(二)建造者模式
1.定义 建造者模式(Builder Pattern)是一种创建型设计模式,它允许你分步骤创建复杂对象,而不必直接调用构造函数。建造者模式特别适合那些包含多个组成部分并且构造过程复杂的对象。 2. 结构 建造者模式的主要组成部分包括&#…...

基于Springboot+Vue+mysql仓库管理系统仓库进销存管理系统
博主介绍: 大家好,本人精通Java、Python、C#、C、C编程语言,同时也熟练掌握微信小程序、Php和Android等技术,能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验,能够为学生提供各类…...

爬虫scrapy库精简使用大全
一、基本命令 创建项目 scrpay startproject myapp创建爬虫文件 scrapy genspider spider_name "https://www.baidu.com"运行爬虫文件 scrapy crawl spider_name一、使用代理ip 打开中间件middlewares.py,增加以下代码 class ProxyMiddleware:def process…...

Qt - 如何在新线程 (QThread)中使用一个进程 (QProcess)?
在Qt中,QThread 用于处理后台任务,而 QProcess 用于启动和管理外部程序。如果你想在一个新的 QThread 中使用 QProcess,你需要了解 QProcess 并不是专门为在特定线程中运行而设计的。实际上,QProcess 通常在创建它的线程ÿ…...

Qt绘制多线段
最近画辅助线有刚需。 画图准备增加绘制多线段功能。 有哪些方法呢? QPainter Class | Qt GUI 5.15.17 void QPainter::drawPolyline(const QPolygon &points) QPolygon Class | Qt GUI 5.15.17 QPolygon polygon; polygon << QPoint(10, 20) <&…...