NetCore多租户开源项目,快速后台开发企业框架,赚钱就靠她了
创始人
2024-02-25 01:27:58

今天给大家推荐一个开源项目,基于.NetCore开发的、多租户的企业开发框架。

文章目录

  • 项目简介
  • 技术架构
  • 项目结构
  • 系统功能
  • 代码生成器
  • 部分功能截图
  • 项目地址

项目简介

这是一个基于.Net和Layui、基于多数据库的多租户,敏捷开发优选框架。系统自带权限功能、数据权限、系统日志、流程表单设计、内容管理、以及系统UI组件,系统基础功能非常完善,让开发者更注重业务的开发。

框架支持代码生成、表单设计,可以极大地提升开发效率。

采用都是目前主流的技术,该项目非常适合用于Crm、OA、ERP、CMS、WMS、BI等管理型的系统。

技术架构

1、跨平台:这是基于.Net Core开发的系统,可以部署在Docker, Windows, Linux, Mac。

2、数据库支持:MySQL、Sqlserver。

3、技术栈:ASP.NET 6.0、WEB API、QuartZ、SqlSugar、Reids、RabbitMq、Jaina、Swagger、AutoFac、LayUI。

4、开发环境:Visual Studio 2022。

项目结构

图片

系统功能

1、首页:快捷入口、数据统计、报表、系统公告

2、单位组织:系统公告、租户设置、机构管理、数据权限、角色管理、岗位管理、用户管理

3、系统管理:系统设置、系统菜单、代码生成、数据字典、区域管理、表单设计、流程设计、条码规则、打印模块、条码生成记录

4、系统安全:系统日志、操作日志、访问控制、定时任务、服务器监控

5、流程中心:我的流程、待处理流程、已处理流程

6、文件中心:文件管理

7、信息中心:通知管理

8、内容管理:新闻类别、新闻管理

9、订单管理:订单信息

10、组件管理:图表列表、图标选择、颜色选择、下拉选择、文件上传、富文本编辑器、省市县区选择器、卡片表格

11、大屏幕报表

代码生成器

1、选择表

图片

2、选择列表展示字段、搜索字段、排序字段、页面样式等配置

图片

3、表单页面字段设置

图片

4、代码生成

图片

部分代码预览

实体

using System;
using System.ComponentModel.DataAnnotations;
using SqlSugar;namespace WaterCloud.Domain.GeneralManage
{
/// 
/// 创 建:超级管理员
/// 日 期:2022-11-28 20:01
/// 描 述:Articlecategory实体类
/// [SugarTable("cms_articlecategory")]
public class ArticlecategoryEntity : IEntity,ICreationAudited,IModificationAudited,IDeleteAudited{
/// 
/// 
/// [SugarColumn(ColumnName="F_Id", ColumnDescription = "",ColumnDataType = "text(50)",IsPrimaryKey = true)]
public string F_Id { get; set; }
/// 
/// 
/// [SugarColumn(ColumnName="F_FullName", ColumnDescription = "",ColumnDataType = "text(100)", IsNullable = true)]
public string F_FullName { get; set; }
/// 
/// 
/// [SugarColumn(ColumnName="F_ParentId", ColumnDescription = "",ColumnDataType = "text(50)", IsNullable = true)]
public string F_ParentId { get; set; }
/// 
/// 
/// [SugarColumn(ColumnName="F_SortCode", ColumnDescription = "",ColumnDataType = "integer")]
public int F_SortCode { get; set; }
/// 
/// 
/// [SugarColumn(ColumnName="F_Description", ColumnDescription = "",ColumnDataType = "text", IsNullable = true)]
public string F_Description { get; set; }
/// 
/// 
/// [SugarColumn(ColumnName="F_LinkUrl", ColumnDescription = "",ColumnDataType = "text(255)", IsNullable = true)]
public string F_LinkUrl { get; set; }
/// 
/// 
/// [SugarColumn(ColumnName="F_ImgUrl", ColumnDescription = "",ColumnDataType = "text(255)", IsNullable = true)]
public string F_ImgUrl { get; set; }
/// 
/// 
/// [SugarColumn(ColumnName="F_SeoTitle", ColumnDescription = "",ColumnDataType = "text(255)", IsNullable = true)]
public string F_SeoTitle { get; set; }
/// 
/// 
/// [SugarColumn(ColumnName="F_SeoKeywords", ColumnDescription = "",ColumnDataType = "text(255)", IsNullable = true)]
public string F_SeoKeywords { get; set; }
/// 
/// 
/// [SugarColumn(ColumnName="F_SeoDescription", ColumnDescription = "",ColumnDataType = "text(255)", IsNullable = true)]
public string F_SeoDescription { get; set; }
/// 
/// 
/// [SugarColumn(ColumnName="F_IsHot", ColumnDescription = "",ColumnDataType = "integer", IsNullable = true)]
public int? F_IsHot { get; set; }
/// 
/// 
/// [SugarColumn(ColumnName="F_EnabledMark", ColumnDescription = "",ColumnDataType = "integer", IsNullable = true)]
public int? F_EnabledMark { get; set; }
/// 
/// 
/// [SugarColumn(ColumnName="F_DeleteMark", ColumnDescription = "",ColumnDataType = "integer", IsNullable = true)]
public int? F_DeleteMark { get; set; }
/// 
/// 
/// [SugarColumn(ColumnName="F_CreatorTime", ColumnDescription = "",ColumnDataType = "text", IsNullable = true)]
public string F_CreatorTime { get; set; }
/// 
/// 
/// [SugarColumn(ColumnName="F_CreatorUserId", ColumnDescription = "",ColumnDataType = "text(50)", IsNullable = true)]
public string F_CreatorUserId { get; set; }
/// 
/// 
/// [SugarColumn(ColumnName="F_LastModifyTime", ColumnDescription = "",ColumnDataType = "text", IsNullable = true)]
public string F_LastModifyTime { get; set; }
/// 
/// 
/// [SugarColumn(ColumnName="F_LastModifyUserId", ColumnDescription = "",ColumnDataType = "text(50)", IsNullable = true)]
public string F_LastModifyUserId { get; set; }
/// 
/// 
/// [SugarColumn(ColumnName="F_DeleteTime", ColumnDescription = "",ColumnDataType = "text", IsNullable = true)]
public string F_DeleteTime { get; set; }
/// 
/// 
/// [SugarColumn(ColumnName="F_DeleteUserId", ColumnDescription = "",ColumnDataType = "text(50)", IsNullable = true)]
public string F_DeleteUserId { get; set; }}
}

控制器

using System;
using System.Linq;
using System.Threading.Tasks;
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc;
using WaterCloud.Code;
using WaterCloud.Domain.GeneralManage;
using WaterCloud.Service;
using Microsoft.AspNetCore.Authorization;
using WaterCloud.Service.GeneralManage;namespace WaterCloud.Web.Areas.GeneralManage.Controllers
{/// /// 创 建:超级管理员/// 日 期:2022-11-28 20:26/// 描 述:Articlecategory控制器类/// [Area("GeneralManage")]public class ArticlecategoryController :  BaseController{public ArticlecategoryService _service {get;set;}#region 获取数据[HandlerAjaxOnly][IgnoreAntiforgeryToken]public async Task GetGridJson(SoulPage pagination, string keyword){if (string.IsNullOrEmpty(pagination.field)){pagination.field = "F_Id";pagination.order = "desc";}var data = await _service.GetLookList(pagination,keyword);return Content(pagination.setData(data).ToJson());}[HttpGet][HandlerAjaxOnly]public async Task GetListJson(string keyword){var data = await _service.GetList(keyword);return Content(data.ToJson());}[HttpGet][HandlerAjaxOnly]public async Task GetFormJson(string keyValue){var data = await _service.GetLookForm(keyValue);return Content(data.ToJson());}#endregion#region 提交数据[HttpPost][HandlerAjaxOnly]public async Task SubmitForm(ArticlecategoryEntity entity, string keyValue){try{await _service.SubmitForm(entity, keyValue);return await Success("操作成功。", "", keyValue);}catch (Exception ex){return await Error(ex.Message, "", keyValue);}}[HttpPost][HandlerAjaxOnly][HandlerAuthorize]public async Task DeleteForm(string keyValue){try{await _service.DeleteForm(keyValue);return await Success("操作成功。", "", keyValue, DbLogType.Delete);}catch (Exception ex){return await Error(ex.Message, "", keyValue, DbLogType.Delete);}}#endregion}
}

部分功能截图

系统公告

图片

租户设置

图片

机构管理

图片

数据权限

图片

系统菜单

图片

区域管理

图片

表单设计

图片

流程设计

图片

系统日志

图片

操作日志

图片

访问控制

图片

定时任务

图片

服务器监控

图片

图表列表

图片

通知管理

图片

大屏幕报表

图片

项目地址

https://gitee.com/qian_wei_hong/WaterCloud

- End -

推荐阅读

  • 用C#自己动手写个操作系统,爽!

  • C#程序采用AOT发布,真的可以避免被反编译?

  • 盘点5个C#实用的Word、PPT、Excel、Mail第三方库

  • 盘点6个.NetCore+Vue前后端分离的开源项目

  • 推荐一个数据可视化大屏幕报表开源系统

相关内容

热门资讯

苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...