# DF.OpenAPI.OpenSource **Repository Path**: tao-wen/df.-open-api.-open-source ## Basic Information - **Project Name**: DF.OpenAPI.OpenSource - **Description**: DF.OpenAPI开源版本 - **Primary Language**: C# - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 18 - **Created**: 2024-09-06 - **Last Updated**: 2024-09-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ![logo.png](/Upload/Default/558655061409861.png) 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](https://gitee.com/jidengfeng/df.-open-api.-open-source.git)。 目前开源内容除企业功能(报表、流程、聊天)外,其它功能均已开源。如需获取企业功能完整功能源码,请与作者联系。 **帮助文档可参考:** Furion帮助文档(收费):[Furion](https://furion.net/docs/category/appendix/) antd vue帮助文档:[antd vue](https://1x.antdv.com/docs/vue/introduce-cn) OpenAPI帮助文档:请参考系统内部MD文档 [MD管理](http://116.198.234.36:8088/#/entmarkdownsmgr) 项目采用:DDD模型进行二次改造。 前端技术:vue-antd-pro(组件:antd vue1.7.8),vue2.6.1、vuex3.6.2 后端技术:.net6.0框架(微服务架构) ![ai.gif](/Upload/Default/ai.gif) ![image.png](/Upload/Default/552260662353989.png) ![image.png](/Upload/Default/558644793282629.png) ![image.png](/Upload/Default/558644641513541.png) ![image.png](/Upload/Default/558644951552069.png) ![image.png](/Upload/Default/558645064265797.png) ![image.png](/Upload/Default/558645280346181.png) ![image.png](/Upload/Default/558645476253765.png) ![image.png](/Upload/Default/554534189789253.png) ![AI截图.png](/Upload/Default/561781412216901.png) ### 在线体验 开发者租户:演示环境【超管】权限暂不开放 管理员:用户名:Admin,密码:123456。目前部分删除功能做了禁用,防止误操作,影响其它人员体验。 地址:[http://116.198.234.36:8088/](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 ### 微信二维码: ## 系统扩充功能(只列出与原系统差异化功能) ### 平台管理 - 开发管理 1. 系统配置 ![image.png](/Upload/Default/550048392798277.png) 2. 缓存管理(新增) 新增缓存管理功能,可对当前运行系统中所有缓存key值进行查看或修改。支持权限控制(默认只有超级管理员可修改,其它用户只可查看)。 ![image.png](/Upload/Default/554535349411909.png) - 系统监控 1. 服务监控 优化原状态监控频次,从原来的3秒改为10一检测;同时支持页面在有开启或关闭状态时,只有服务页面处理激活状态时,才会向服务器请求检测,降低了非激活页面时无效请求损耗;后端采集数据采用缓存机制,提高效率;另增加了系统其它信息采集维度。 ![image.png](/Upload/Default/554534189789253.png) - 任务调度 1. 任务管理 1.1 扩充了任务级别类型(支持:后台服务、系统任务、自定义任务) 原系统只支持用户定时类的自定义任务。 **后台任务**:指编码服务实现类中,继承了BackgroundService实现的后台服务(权限:只读) **系统任务**:指编码服务实现类中,基于ISpareTimeWorker实现的系统服务,且编码指定TaskSystemType=TaskSystemType.System。(权限:只读) **自定义任务**:是通过任务调度管理,在管理平台新建的定时任务、或编码服务ISpareTimeWorker基于实现的系统服务,且编码指定TaskSystemType=TaskSystemType.Custom。(权限:编辑、修改、停止、启动) 1.2 列表支持任务集群运行状态显示 ![image.png](/Upload/Default/550480996167749.png) 1.3 新增了微服务下任务集群管理(支持集群任务查看、编辑、单个开关、批量开关操作) ![image.png](/Upload/Default/550481455497285.png) - 开发示例 罗列了百度ECharts各类使用示例、G2Plot统计图库、Peity图表库 - 代码生成 1. 数据源表管理 开发框架在原有code-frist、DB-frist基础上,提供了可视化的建表操作,及联动代码生成操作。 支持表:增、删、改、关联关系、索引。 ![image.png](/Upload/Default/550488898928709.png) 支持表字段:增、删、改、主键…… ![image.png](/Upload/Default/550489136754757.png) 2. 代码生成 支持直接生成到项目中、或生成代码压缩包下载到本地。 支持前端操作界面、后端API、业务逻辑、DB实体等一键生成。(支持code-frist\db-frist\数据源表一键生成管理能页面) ![image.png](/Upload/Default/550490538860613.png) ![image.png](/Upload/Default/550491012497477.png) ![image.png](/Upload/Default/550491311566917.png) 3. 表单设计器 增加了二次自开发组件(城市乡区、部门选择器、人员选择器、电子签名) *注:相关组件可自行二开或联系开源作者有偿二开 ![image.png](/Upload/Default/550487404081221.png) ### 运营管理 支持多租户管理 ### 系统管理 - 组织架构 1. 机构管理 增加机类型:一级……四级,用于API付费,根据不同级别设定不同分销价格。 2. 职位管理 增加:是否管理,用于流程审批时,指定审批人(部门负责人)时使用。 - 权限管理 1. 用户管理 管理员类型:增加后台API作业用户(后台服务调用接口时,专供服务权限验证的用户)。此功能只有超级管理员可见。其它用户新建用户时默认为普通用户 增加:直属上级,用于流程审批时,指定审批人(上级)时使用 增加:审批者开关,用于流程审批时,指定审批人(部门审批人)时使用 2. 角色管理 增加:角色类型(集团、加盟商、门店),默认为集团。此功能只有超级管理员可见 - 通知公告 1. 公告管理 支持:超文本内容发送、站点超连接页面指定数据跳转、外部超连接,支持指定成员发送 2. 已收公告 支持:超文本内容、站点超连接页面指定数据跳转、外部超连接 ![image.png](/Upload/Default/551797101269061.png) - 文件管理 1. 系统文件 支持文件下载、图片预览。 ### 企业功能(新增) 此应用模块下,提供了强大的流程审批、报表管理模块。 - 流程管理 1. 我的事务 1.1 审批首页 用于总览查看流程任务、及全新任务发起 ![image.png](/Upload/Default/551880841748549.png) 开始发起操作,表单内容填写 ![image.png](/Upload/Default/551881152188485.png) 设置审批人员 ![image.png](/Upload/Default/551881541615685.png) 点击保存(保存到草稿箱)。点击提交则发起申请 1.2 待我处理 此处功能为,所有待我审批的任务,需要逐一进行审批。 ![image.png](/Upload/Default/551882395222085.png) 可对发起人的任务表单进行修改。 **审批功能有:同意、拒绝、转交、抄送、退回、加签、跟踪。评论** 审批意见填写:支持审批意见、文件、图片、电子签名 ![image.png](/Upload/Default/551883182297157.png) 另一个流程在发起后,所有参与的审批人员均可查看流程:表单、审批人、流程图、流转记录、流转进度。 表单: ![image.png](/Upload/Default/551885307895877.png) 审批人员清单 ![image.png](/Upload/Default/551885403349061.png) 流程图 ![image.png](/Upload/Default/551885516488773.png) 流转记录 ![image.png](/Upload/Default/551885607518277.png) 流转进度 ![image.png](/Upload/Default/551885765726277.png) 1.3 已处理的 此功能为,所有已经我管理的任务,可进行查看。另如果在刚审批后,后续审批人还未开始时,系统是支持撤回的,撤回修改后可重新审批。 ![image.png](/Upload/Default/551884570218565.png) 1.4 抄送我的 此功能为,所有抄送我的审批任务,可供查看 1.5 我跟踪的 当审批人员在审批时,开启了**跟踪**,则跟踪任务会在此功能列表中显示,任务的每个审批进度,跟踪人员均能收到进度通知消息。 1.6 我发起的 此处为用户发起的任务列表,可查看任务流转进度。 发起后可支持的操作: 撤回: 当用户发刚发起后,未经其它人员审批时,这时是可以进行撤回,重新修改后发起的。 催办: 当任务比较紧急时,用户可发起催办。催办后的任务会标记为加急,同时审批人员回收到催办通知。 作废: 用户可随时作废发起的任务。 ![image.png](/Upload/Default/551888988721221.png) 1.7 我的草稿 所有发起的审批,在未提交之前均回存入草稿。这时可修改、提交、删除。 ![image.png](/Upload/Default/551889807515717.png) 2. 流程管理 1.1 流程实例 实例管理人员,会有此功能。可对自己负责的流程实例进行管理。可进行批量操作: 退回: 退回后实例将被退返到发起人的草稿箱,并通知流程发起人重新提交流程 挂起、激活: 用于将任务暂停、和恢复操作 作废: 将申请人的任务进行作废 1.2 分组管理 此功能管理人员使用,可为任务模板进行分组。 1.3 模板管理 核心功能,用于新建、修改、删除流程模板 ![image.png](/Upload/Default/551892249149509.png) 可对流程模板进行管理 ![image.png](/Upload/Default/551892520824901.png) ![image.png](/Upload/Default/551892589781061.png) 模板编辑,分为四步:基础信息、表单设计、流程设计、更多配置 基础信息: ![image.png](/Upload/Default/551893073944645.png) 表单设计: ![image.png](/Upload/Default/551893342859333.png) 流程设计: ![image.png](/Upload/Default/551893845979205.png) 节点设置-审批设置: ![image.png](/Upload/Default/551896752820293.png) 节点设置-表单权限: ![image.png](/Upload/Default/551894251081797.png) 节点设置-高级设置: ![image.png](/Upload/Default/551894409556037.png) ![image.png](/Upload/Default/551894719553605.png) 节点设置-通知设置 ![image.png](/Upload/Default/551894989234245.png) 可根据需要自定义通知消息模板 更多配置(打印) ![image.png](/Upload/Default/551895568584773.png) - 报表管理 1. 数据源管理 提供报表,所需数据库的数据源维护。 ![image.png](/Upload/Default/551901297471557.png) ![image.png](/Upload/Default/551901419307077.png) 系统支持多种数据库,目前支持主流关系数据库,非关库(nosql)可与作者沟通有偿提供,或自行二开 2. 数据集管理 报表所有的数据集管理。 ![image.png](/Upload/Default/551902037516357.png) 数据集内容维护: ![image.png](/Upload/Default/551902320054341.png) 目前数据集支持sql、API请求、JSON数据集、其它类型可自行二开,或与作者沟通有偿提供。 3. 模板管理 报表支持文本模板(word形式)、表格模板(excel形式) **文本模板** ![image.png](/Upload/Default/551903329054789.png) ![image.png](/Upload/Default/551904244813893.png) 文本预览 ![image.png](/Upload/Default/551908733829189.png) 文本打印 ![image.png](/Upload/Default/551908904194117.png) **可导出word文档。** **表格模板** ![image.png](/Upload/Default/551904477675589.png) 表格预览 ![image.png](/Upload/Default/551907981365317.png) 表格打印(如果打印选区超出A4纸大小:超高、超宽,系统会自动分页打印) ![image.png](/Upload/Default/551908129288261.png) **支持导出excel文件。** - 智能大屏 提供多种大屏模板示例,作者收集了70+大屏示例,如有需要可和作者沟通。 - MD管理 支持markdown文档,增、删、改、预览。(管理员可操作) 普通用户只可查看文档。此处理文档主要是针对系统使用、开发的帮助文档。 ### ChatAPI(新增) 此应用模块用于付费chatGPT-Api调用服务。针对使用的不同GPT模型、调用次数、请求返回数据长短计费。(目前系统只提供了管理、展示部分的功能,核心计费及OpenAI接口没有接入生产,OpenAI暂不生效)。 后端源码会开放计费API项目的调用,但OpenAi对接接口暂不提供开源。 ### 系统常规设置 支持用户对界面个性化设置,并将设置信息保存到云端。用户在不同设备上均可以自己的界面设置进行办公。 ![image.png](/Upload/Default/551814281912389.png) 设置功能如下: ![image.png](/Upload/Default/551815709249605.png) - 界面自定义配色: ![image.png](/Upload/Default/551815976931397.png) - 菜单keepAlives模式: 如果开启后,则页面会本地缓存,每次切换功能时不刷新页面数据,可提高访问速度。 如果关闭后,则关闭页面缓存,每次切换功能页均会发新数据。关闭后多页签模式的顶部菜单会显示刷新页面菜单。 ![image.png](/Upload/Default/551815480066117.png) ### 顶层菜单栏按钮 帮助(新增):支持跳转到作者源码开源地址。 全屏:系统全屏开关。 通知:支持通知、公告,最新6条信息展示,支持一键标记已读。 ![image.png](/Upload/Default/551811400446021.png) ### 消息发送:支持即时(在线、离线)聊天消息收发-(功能内部IM) ![image.png](/Upload/Default/551816306122821.png) 当在未打开聊天面板时,收到消息会以系统提示的方式弹出,点击可打开面板。 ![image.png](/Upload/Default/551812508848197.png) 打开后的面板,支持文字、表情、图片发送。**支持全员群发消息** ![image.png](/Upload/Default/551812858970181.png) ### 消息发送,增加AI助手 ![AI截图1.png](/Upload/Default/561782261973061.png) ### 支持系统内部不同应用下页面跳转,及数据过滤: 站内点转示例链接: #/welcome?route=entFlowHome&appCode=enterprise&command=shareDetail&id=543672182898757 route:功能路由 appCode:应用code command、id:自定义参数,可在跳转的页面根据参数,实现数据过滤逻辑 ## .net 框架新增功能 ### 架构采用DDD模型 ![Image_proc.jpg](/Upload/Default/554563927371845.jpg) ### 后端源码目录结构 ![image.png](/Upload/Default/555085571596357.png) ### API授权验证 原项目前后端分离、API请求采用JWT+TOKEN进行认证,但未做API权限管理及验证(这样攻击者只要知道要攻击的功能页面API,则可以使用小权限用户TOKEN来调用其无权限的功能API,例如:删除所有用户等恶性操作)。 扩充了API权限验证后,未设置权限的用户通过token调用API是无权访问的。 ### 微服务功能 例如:跨平台事件总线、跨服务跟踪等。 架构核心思想:高内聚、低耦合、高性能、高可用,以业务角度(分析上下文界限,建模。业务分域->域建模->存储建模->存储实现) 1. 支持consul微服务注册及发现,支持实时检测可用节点,负载算法:平均、随机、加权 2. 支持多种配置方式:(数据库配置、环境变量、本地配置、云配置中心:apollo配置) 3. 扩展分布式消息总线,支持分布式事务,保障微服务CAP原则(通过 EventId & CreatedTime 组合约束 保证不重复消费事件、通过消息队列中间件保障数据可靠性)。中件间封装Rabbitmq、kafka、zookeeper(分布式链路 cqrs、命令总线、EDA、事件驱动、事件溯源、消息队列)。 最后达到一点事件发布,随机分散多个定阅节点中只有一个有权响应(可有效防止事件消息重复处理) 4. 封装执行程序性能分析器、及跨服务性能跟踪(MiniProfiler、Prometheus) 5. 断路器由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+大驼峰命名 【常量】:全部大写,每个单词之间用_连接 【枚举】:大驼峰命名 【私有变量、参数名】:小驼峰命名 【属性】:大驼峰命名 【函数】:大驼峰命名 【类内部只读变量】:_+小驼峰 ## 未来计划功能 1. 整理合并.net Furion开源最新版框架,使框架支持到8.0+ 2. 整理加入大屏设计器,基于datav. 3. 前端增加桌面系统WPF\WINFORM平台。 ## 特别鸣谢 Furion:[https://gitee.com/dotnetchina/Furion](https://gitee.com/dotnetchina/Furion) Ant Design of Vue:[https://1x.antdv.com/docs/vue/introduce-cn](https://1x.antdv.com/docs/vue/introduce-cn) k-form-design:[https://gitee.com/kcz66/k-form-design](https://gitee.com/kcz66/k-form-design) Zack.EFCore.Batch:[https://github.com/yangzhongke/Zack.EFCore.Batch](https://github.com/yangzhongke/Zack.EFCore.Batch) smart-flow-design:[https://gitee.com/crowncloud/smart-flow-design](https://gitee.com/crowncloud/smart-flow-design) luckysheet:[https://github.com/dream-num/Luckysheet](https://github.com/dream-num/Luckysheet)