NetCore多租户开源项目,快速后台开发企业框架,赚钱就靠她了

本文介绍了一个基于.NET Core的开源企业开发框架,支持多数据库、权限管理、代码生成和表单设计,适用于CRM、OA等管理系统,使用了ASP.NET 6.0、LayUI等技术栈。

今天给大家推荐一个开源项目,基于.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
{
/// <summary>
/// 创 建:超级管理员
/// 日 期:2022-11-28 20:01
/// 描 述:Articlecategory实体类
/// </summary>
    [SugarTable("cms_articlecategory")]
public class ArticlecategoryEntity : IEntity<ArticlecategoryEntity>,ICreationAudited,IModificationAudited,IDeleteAudited
    {
/// <summary>
/// 
/// </summary>
        [SugarColumn(ColumnName="F_Id", ColumnDescription = "",ColumnDataType = "text(50)",IsPrimaryKey = true)]
public string F_Id { get; set; }
/// <summary>
/// 
/// </summary>
        [SugarColumn(ColumnName="F_FullName", ColumnDescription = "",ColumnDataType = "text(100)", IsNullable = true)]
public string F_FullName { get; set; }
/// <summary>
/// 
/// </summary>
        [SugarColumn(ColumnName="F_ParentId", ColumnDescription = "",ColumnDataType = "text(50)", IsNullable = true)]
public string F_ParentId { get; set; }
/// <summary>
/// 
/// </summary>
        [SugarColumn(ColumnName="F_SortCode", ColumnDescription = "",ColumnDataType = "integer")]
public int F_SortCode { get; set; }
/// <summary>
/// 
/// </summary>
        [SugarColumn(ColumnName="F_Description", ColumnDescription = "",ColumnDataType = "text", IsNullable = true)]
public string F_Description { get; set; }
/// <summary>
/// 
/// </summary>
        [SugarColumn(ColumnName="F_LinkUrl", ColumnDescription = "",ColumnDataType = "text(255)", IsNullable = true)]
public string F_LinkUrl { get; set; }
/// <summary>
/// 
/// </summary>
        [SugarColumn(ColumnName="F_ImgUrl", ColumnDescription = "",ColumnDataType = "text(255)", IsNullable = true)]
public string F_ImgUrl { get; set; }
/// <summary>
/// 
/// </summary>
        [SugarColumn(ColumnName="F_SeoTitle", ColumnDescription = "",ColumnDataType = "text(255)", IsNullable = true)]
public string F_SeoTitle { get; set; }
/// <summary>
/// 
/// </summary>
        [SugarColumn(ColumnName="F_SeoKeywords", ColumnDescription = "",ColumnDataType = "text(255)", IsNullable = true)]
public string F_SeoKeywords { get; set; }
/// <summary>
/// 
/// </summary>
        [SugarColumn(ColumnName="F_SeoDescription", ColumnDescription = "",ColumnDataType = "text(255)", IsNullable = true)]
public string F_SeoDescription { get; set; }
/// <summary>
/// 
/// </summary>
        [SugarColumn(ColumnName="F_IsHot", ColumnDescription = "",ColumnDataType = "integer", IsNullable = true)]
public int? F_IsHot { get; set; }
/// <summary>
/// 
/// </summary>
        [SugarColumn(ColumnName="F_EnabledMark", ColumnDescription = "",ColumnDataType = "integer", IsNullable = true)]
public int? F_EnabledMark { get; set; }
/// <summary>
/// 
/// </summary>
        [SugarColumn(ColumnName="F_DeleteMark", ColumnDescription = "",ColumnDataType = "integer", IsNullable = true)]
public int? F_DeleteMark { get; set; }
/// <summary>
/// 
/// </summary>
        [SugarColumn(ColumnName="F_CreatorTime", ColumnDescription = "",ColumnDataType = "text", IsNullable = true)]
public string F_CreatorTime { get; set; }
/// <summary>
/// 
/// </summary>
        [SugarColumn(ColumnName="F_CreatorUserId", ColumnDescription = "",ColumnDataType = "text(50)", IsNullable = true)]
public string F_CreatorUserId { get; set; }
/// <summary>
/// 
/// </summary>
        [SugarColumn(ColumnName="F_LastModifyTime", ColumnDescription = "",ColumnDataType = "text", IsNullable = true)]
public string F_LastModifyTime { get; set; }
/// <summary>
/// 
/// </summary>
        [SugarColumn(ColumnName="F_LastModifyUserId", ColumnDescription = "",ColumnDataType = "text(50)", IsNullable = true)]
public string F_LastModifyUserId { get; set; }
/// <summary>
/// 
/// </summary>
        [SugarColumn(ColumnName="F_DeleteTime", ColumnDescription = "",ColumnDataType = "text", IsNullable = true)]
public string F_DeleteTime { get; set; }
/// <summary>
/// 
/// </summary>
        [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
{
    /// <summary>
    /// 创 建:超级管理员
    /// 日 期:2022-11-28 20:26
    /// 描 述:Articlecategory控制器类
    /// </summary>
    [Area("GeneralManage")]
    public class ArticlecategoryController :  BaseController
    {
        public ArticlecategoryService _service {get;set;}

        #region 获取数据
        [HandlerAjaxOnly]
        [IgnoreAntiforgeryToken]
        public async Task<ActionResult> GetGridJson(SoulPage<ArticlecategoryEntity> 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<ActionResult> GetListJson(string keyword)
        {
            var data = await _service.GetList(keyword);
            return Content(data.ToJson());
        }

        [HttpGet]
        [HandlerAjaxOnly]
        public async Task<ActionResult> GetFormJson(string keyValue)
        {
            var data = await _service.GetLookForm(keyValue);
            return Content(data.ToJson());
        }
        #endregion

        #region 提交数据
        [HttpPost]
        [HandlerAjaxOnly]
        public async Task<ActionResult> 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<ActionResult> 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 -

推荐阅读

DM平台,不仅仅是一个netcore后台开发框架,他也是一个企业快速开发解决方案。只用拖拉和编写一些简单的JavaScript即可实现业务功能创建和复杂的逻辑关系,能让初学者更快的入门并投入到团队的项目开发中去。让开发者注重专注业务,其余有平台来封装技术细节,降低技术难度,从而节省人力成本,缩短项目周期,提高软件安全质量。DM平台是作者和自己的开发团队结合了多年开发经验,以及各方面的应用案例,把多个开源框架的优势和特殊功能集中进行优中选优,进行了二次开发后,完成了一次全部重构,也纳入很多新的思想。不管是从开发者模式、底层架构、逻辑处理还是到用户界面,用户交互体验上都有了与众不同、独竖一帜的表现,集百家之长成自家之源。努力为大中小微企业打造全方位企业快速开发解决方案。零代码开发是指开发简单功能模块时可一键生成无须代码,如果开发复杂模块只需学习DM平台的插件功能,书写JavaScript代码调用相关Api函数即可实现,对程序初学者可快速入门并参与项目开发。在表单设计、视图设计、审批流程等方面DM平台采用可视化操作,所见即所得;平台采用NetCore框架开源,支持前后端分离,具有可运行在国外国内系统的跨平台性;平台支持多语言、多币种,可以后台直接配置即可;
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程乐趣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值