lin-cms-dotnetcore功能模块的设计

先来回答以下问题。

1.什么是cms?

Content Management System,内容管理系统。

2.dotnetcore是什么?

.NET Core,是由Microsoft开发,目前在.NET Foundation(一个非营利的开源组织)下进行管理,采用宽松的MIT协议,可构建各种软件,包括Web应用程序、移动应用程序、桌面应用程序、云服务、微服务、API、游戏和物联网应用程序。

3.lin-cms 是什么?

Lin-CMS 是林间有风团队经过大量项目实践所提炼出的一套内容管理系统框架。Lin-CMS 可以有效的帮助开发者提高 CMS 的开发效率,

Lin的定位在于实现一套 CMS的解决方案,管理系统的基础框架,提供了不同的后端,不同的前端实现,后端也支持不同的数据库,是一套前后端完整的解决方案

目前官方团队维护 lin-cms-vue,lin-cms-spring-boot,lin-cms-koa,lin-cms-flask 社区维护了 lin-cms-tp5,lin-cms-react,lin-cms-dotnetcore,即已支持vue,react二种前端框架,java,nodejs,python,php,c#等五种后端语言。

lin-cms-vue(官方)

  • https://github.com/TaleLin/lin-cms-vue

  • ???? Vue+ElementUI构建的CMS开发框架,

  • 林间有风团队经过大量项目实践所提炼出的一套内容管理系统框架

  • 内置了 CMS 中最为常见的需求:用户管理、权限管理、日志系统等

lin-cms-koa(官方)

  • python

  • https://github.com/TaleLin/lin-cms-koa

  • ????使用Node.JS KOA构建的CMS开发框架

lin-cms-flask(官方)

  • node.js

  • https://github.com/TaleLin/lin-cms-flask

  • ????A simple and practical CMS implememted by flask

lin-cms-spring-boot(官方)

  • java

  • https://github.com/TaleLin/lin-cms-spring-boot

  • ???? 基于SpringBoot的CMS/DMS/管理系统开发框架

lin-cms-tp5(社区)

  • php 被官方fork。

  • https://github.com/TaleLin/lin-cms-tp5

  • ???? A simple and practical CMS implememted by ThinkPHP 5.1

lin-cms-react(社区)

  • https://github.com/Bongkai/lin-cms-react

  • ???? React+Antd构建的CMS开发框架

lin-cms-dotnetcore(社区)

  • C#

  • ????A simple and practical CMS implemented by .NET Core 3.1 一个简单实用、基于.NET Core

  • https://github.com/luoyunchong/lin-cms-dotnetcore

  • .NET Core 3.1实现的CMS;前后端分离、Docker部署、OAtuh2授权登录、自动化部署DevOps、GitHub Action同步至Gitee

4.lin-cms-dotnetcore有哪些特点?

基于.NET Core3.1实现的LIN-CMS-VUE后端API,并增加了博客模块。目前实现简约的权限管理系统、基础字典项管理、随笔专栏,评论点赞、关注用户、技术频道(标签分类)、消息通知,标签等仿掘金模块。

功能模块的设计

基础权限模块

  • 用户信息:邮件、用户名(唯一)、昵称、头像、分组、是否激活、手机号、是否是Admin、个性签名

    •  注册/登录

    •  上传头像

    •  修改个人密码

    •  用户基本信息修改

    •  用户增删改,配置分组

  • 绑定第三方账号

    •  GitHub登录

    •  QQ 登录

  • 分组信息:是否静态分组(无法删除,无法修改分组编码)、名称可以修改

    •  分组增删改

    •  分组配置权限

  • 文件管理

    •  本地文件上传

    •  七牛云存储

    •  文件去重,秒传

  • 系统日志:请求方法、路径、http返回码、时间、用户昵称、用户id、访问哪个权限、 日志信息

    •  记录系统请求的日志

    •  异常日志

  • 设置管理:name(键),value(值),provider_name(提供名),provider_key(提供者值)

    •  设置新增修改删除

    •  所有设置

比如存某用户选择的是markdown还是富文本。

name="Article.Editor",
value="markdown" 或 "富文本",
provider_name为"User",
provider_key为用户Id

或存储七牛云的某一个配置

name="Qiniu.AK",
value="asfadsfadf23rft66S4XM2GIK7FxfqefauYkcAyNGDAc" ,
provider_name为"Qiniu"或自己定义的字符串
provider_key为空

cms 管理员维护模块

  •  标签管理:名称、图片,是否启用/禁用,排序、文章数量、用户关注数量。

    •  标签增删改

    •  标签列表,禁用

    •  校正文章数量

  •  技术频道:封面图、名称、是否启用/禁用、排序、编码、备注描述、下属标签.一个技术频道对应多个标签

    •  技术频道增删改

    •  列表、禁用

  •  随笔管理:

    •  审核随笔/拉黑

    •  管理员删除随笔

  •  评论管理

    •  后台审核通过/拉黑

    •  管理员删除评论

  •  字典类别管理:编码,名称,排序

    •  增删改查

  •  字典管理::编码,名称,排序,类别:如随笔类型(原创、转载、翻译)

    •  增删改查

cms 用户端模块

  • 技术频道

    •  首页展示技术频道

    •  选择技术频道后,可再根据标签查询文章

  • 分类专栏管理:发布随笔时可选择单个分类。

    •  分类增删改(随笔数量、图片、名称、排序)

    •  分类列表,仅查看、编辑自己创建的分类专栏

  • 标签:统计每个标签下多少个文章、多少人关注

    •  标签列表

    •  无限加载

    •  最新/最热 根据标签名称模糊查询

    •  已关注的标签

    •  热门标签

  • 随笔

    •  支持目录导航(滚动时,固定至顶部位置),展示字数统计、预计阅读时长;

    •  作者介绍:头像,昵称,签名,随笔数;

    •  展示文章类型:原创、转载、翻译

    •  相关文章

    •  推荐文章

    •  支持markdown,增删改(仅自己的随笔),修正分类专栏中的随笔数量

    •  支持富文本编辑随笔

    •  列表无限加载,按标签查询随笔

    •  点赞随笔

    • 随笔详情页

  • 评论

    •  用户关闭评论时,无法对随笔进行评论

    •  评论随笔(内容支持超链接、emoji)

    •  删除自己的评论

    •  点赞评论

    •  回复评论

  • 关注

    •  关注/取消关注用户

    •  关注/取消关注标签

    •  我关注的用户发随笔

  • 个人主页

    •  关注的用户

    •  粉丝

    •  关注的标签

    •  用户专栏分类展示

    •  最新发布的随笔

    • 随笔

    • 关注

  • 设置

    •  编辑器设置,(可切换markdown/富文本)

    •  代码风格配置(tango、native、monokai、github、solarized-light、vs)

    •  密码修改:快速登录的账号,初次设置时可留空

    •  个人资料更新

    • 个人主页设置

    • 安全设置

    • 博客设置

  • 消息

    •  评论:点赞评论、评论随笔、回复评论

    •  喜欢和赞:点赞随笔、点赞评论

    •  关注,谁谁关注了你

脑图分享

http://naotu.baidu.com/file/6532431a2e1f0c37c93c5ffd1dd5b49c?token=87690a9bc64fbae1

分组

分为三种

id  name        info
1	Admin	    系统管理员
2	CmsAdmin	内容管理员
3	User	    普通用户

审计日志

大多数表存在如下8个字段,用于记录行的变化状态,is_deleted为软删除,执行删除操作时,将其状态置为true,默认实体类继承 FullAduitEntity 即可拥有以下8个字段。该设计参考ABP中的实现。FullAduitEntity为泛型,默认id为long类型,FullAduitEntity<Guid>,即可改变主键类型,默认LinUser表主键long,保持create_user_id,delete_user_id,update_user_id都与LinUser的主键相同


id	                bigint
create_user_id  	bigint
create_time	        datetime
is_deleted	        bit
delete_user_id  	bigint
delete_time	        datetime
update_user_id	    bigint
update_time	        datetime

相关技术

  • 数据库相关:ORM:FreeSql+DataBase:MySQL5.6

  • ASP.NET Core3.1+WebAPI+RESTful

  • 简化对象映射:AutoMapper

  • 身份认证框架:IdentityServer4

  • Json Web令牌:JWT

  • 文档API:Swagger(Swashbuckle.AspNetCore)

  • 序列化:Newtonsoft.Json

  • 测试框架:Xunit

  • 日志 Serilog

  • 依赖注入服务AutoFac

  • 通用扩展方法 Z.ExtensionMethods

  • 云存储:七牛云 MQiniu.Core

  • 分布式事务、EventBus:DotNeteCore.CAP

  • GitHub第三方授权登录AspNet.Security.OAuth.GitHub

  • QQ第三方授权登录AspNet.Security.OAuth.QQ

  • Docker

  • Azure DevOps

  • 健康检查AspNetCore.HealthChecks.UI.Client

  • GitHub Action同步至Gitee

分层结构(Layers)

  • framework

    • IGeekfan.CAP.MySql:为CAP实现了配合FreeSql的事务一致性扩展

  • identityserver4

    • LinCms.IdentityServer4:使用id4授权登录

  • src

    • LinCms.Web:接口API(ASP.NET Core)

    • LinCms.Application:应用服务

    • LinCms.Application.Contracts:DTO,数据传输对象,应用服务接口

    • LinCms.Infrastructure:基础设施,数据库持久性的操作

    • LinCms.Core:该应用的核心,实体类,通用操作类,AOP扩展,分页对象,基础依赖对象接口,时间扩展方法,当前用户信息,异常类,值对象

    • LinCms.Plugins 使用单项目实现某个业务的扩展,不需要主要项目结构,可暂时忽略。

  • test

    • LinCms.Test:对仓储,应用服务或工具类进行测试

lin-cms 开源地址分享

  • 后端接口 https://github.com/luoyunchong/lin-cms-dotnetcore

  • 管理后台UI https://github.com/luoyunchong/lin-cms-vue

  • 前端UIhttps://github.com/luoyunchong/lin-cms-vvlog

功能特性

  •  Azure Devops CI/CD构建

  •  GitHub Action实现 GitHub Gitee代码同步

  •  .Net Core结合AspNetCoreRateLimit实现限流

  •  方法级别权限控制

  • 社交账号管理:支持多种第三社交账号登录,不干涉原用户数据,实现第三方账号管理

  • 多语言

  •  全局敏感词处理

  • 日志记录,方便线上排查错误

  •  支持多种数据库,并测试,

    •  Mysql

    •  Postgresql

    •  Sql Server

    •  SQlite

Demo

  • 用户端 lin-cms-vvlog https://vvlog.baimocore.cn

    • 普通用户:710277267@qq.com

    • 密码:123qwe

  • 管理员 lin-cms-vue https://cms.baimocore.cn/

    • 管理员:admin

    • 密码:123qwe

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/309160.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++二维数组作为函数参数

#include <iostream> #include <Windows.h>//版本一 省略函数 //二维数组省略一个高维函数 但低维位函数必须定义 void printf1(int a1[][3]){for(int i0; i<3; i){for(int j0; j<3; j){printf("%d\t", a1[i][j]);}printf("\n");} }//…

研发协同平台数据库死锁处理及改进

源宝导读&#xff1a;数据库死锁是高并发复杂系统都要面临课题&#xff0c;处理死锁问题没有一招制敌的标准方法&#xff0c;需要具体问题具体分析。本文将基于研发协同平台遇到的死锁案例&#xff0c;介绍从监控、分析到处理的完整过程和经验总结。一、背景研发协同平台使用的…

Java substring() 方法

substring() 方法返回字符串的子字符串。 语法 public String substring(int beginIndex)或public String substring(int beginIndex, int endIndex)参数 beginIndex – 起始索引&#xff08;包括&#xff09;, 索引从 0 开始。 endIndex – 结束索引&#xff08;不包括&…

简单说说async/await

小明用async/await写了几年的异步方法&#xff0c;但总没有完全理解里面的机制&#xff0c;他决定去请教邻居小花。小花听了小明的描述后说&#xff1a;首先你要明白异步的根本是什么&#xff1f;大白话解释异步就是&#xff1a;拉一个人&#xff08;线程&#xff09;帮着做一些…

Java设计链表(不带头结点的单链表)

设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性&#xff1a;val 和 next。val 是当前节点的值&#xff0c;next 是指向下一个节点的指针/引用。如果要使用双向链表&#xff0c;则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所…

Newtonsoft 六个超简单又实用的特性,值得一试 【下篇】

一&#xff1a;讲故事上一篇介绍的 6 个特性从园子里的反馈来看效果不错&#xff0c;那这一篇就再带来 6 个特性同大家一起欣赏。二&#xff1a;特性分析1. 像弱类型语言一样解析 json大家都知道弱类型的语言有很多&#xff0c;如: nodejs&#xff0c;python&#xff0c;php&am…

C++实现双栈结构(一个顺序表中使用两个栈)

因为平常栈中push的数据不会太多&#xff0c;为了节约空间&#xff0c;所以可以在一个顺序表中使用两个栈 结构图: 在这里我会留一个空间用来判断栈是否满&#xff01; #include <iostream> using namespace std; typedef int ElemType;class DoubleStack { private:El…

Redis凭啥这么快?只能做缓存?架构师道出了真相(颠覆你的认知)

Redis到底有多快Redis采用的是基于内存的采用的是单进程单线程模型的 KV 数据库&#xff0c;由C语言编写&#xff0c;官方提供的数据是可以达到100000的QPS&#xff08;每秒内查询次数&#xff09;。这个数据不比采用单进程多线程的同样基于内存的 KV 数据库 Memcached 差&…

Java面向对象编程(基础部分)

面向对象编程(基础部分) 类与对象 01&#xff1a; public class ObjectWorkDemo {public static void main(String[] args){Cat cat1 new Cat();cat1.name "Tom";cat1.age 3;cat1.color "white";Cat cat2 new Cat();cat2.name "xiaohua"…

多数组实现链表

指针和对象的实现 对象的多数组表示 #include <iostream>using namespace std; typedef int T; class multiple_array_list { private:int capacity;int **key_array;int *next_array;int *pre_array;int count;int head;int tail; public:multiple_array_list(int cap…

Blazor带我重玩前端(一)

写在前面曾经我和前端朋友聊天的时候&#xff0c;我说我希望有一天可以用C#写前端&#xff0c;不过当时更多的是美好的想象&#xff0c;这一切正变得真实……什么是Blazor我们知道浏览器可以正确解释并执行JavaScript代码&#xff0c;那么浏览器是如何执行C#代码的呢&#xff1…

Java面向对象编程(中级)

面向对象编程(中级) 包 访问修饰符 封装 01: public class Encapsulation01 {public static void main(String[] args){Person person new Person();person.name "Tom";person.setAge(30);person.setSalary(30000);} }class Person {public String name;private…

[Mvp.Blazor] 动态路由与钩子函数

&#xff08;Blazor组件的生命周期函数&#xff09;一直在学习也没有停下脚步&#xff0c;用着脑子还是挺好的&#xff0c;感觉可以更脚踏实地一下。最近偶尔也继续看了看Blazor&#xff0c;毕竟我也开源了一个项目嘛&#xff0c;基本我正式开源的项目都会负责到底&#xff0c;…

算法-找出最近点对问题

最近点对问题 找出平面上一对距离最短的点&#xff0c;时间复杂度 O&#xff08;nlgn&#xff09; using System; using System.Collections.Generic;namespace dataLearn {struct Coordinate{public float x;public float y;public Coordinate(float x,float y){this.x x;t…

算法-二分搜索-找出最大值和最小值

二分搜索问题 找出最大值和最小值 时间复杂度O&#xff08;n&#xff09; using System; using System.Collections.Generic;namespace dataLearn {class Program{static void Main(string[] args){List<int> list new List<int> { 10, 3, 6, 4, 7, 1, 9, 2 };v…

Java面向对象编程(高级)

面向对象编程(高级) 类变量和类方法 01: package ChildDemo;public class Child {private String name;public static int cnt 0;public Child(String name){this.name name;}public void join(){System.out.println(name "join the game");} }//package ChildDe…

.NET Core + Kubernetes:Volume

和 Docker 类似&#xff0c;Kubernetes 中也提供了 Volume 来实现数据卷挂载&#xff0c;但 Kubernetes 中 Volume 是基于 Pod&#xff0c;而不是容器&#xff0c;它可被 Pod 中多个容器共享&#xff0c;另外 Kubernetes 中提供比较丰富的 Volume 类型[1]&#xff0c;如&#…

算法-二分搜索-找出最大值和次大值

二分搜索 <2>找出最大值和第二大值 时间复杂度O&#xff08;n) class Program {static void Main(string[] args){List<int> list new List<int> { 10, 3, 6, 4, 7, 1, 9, 2 };var v getMax(list, 0, list.Count - 1);}static (int, int) getMax(List<…

WPF中的Data Binding调试指南

点击蓝字“大白技术控”关注我哟加个“星标★”&#xff0c;每日良时&#xff0c;好文必达&#xff01;WPF中的Data Binding如何Debug?大家平时做WPF开发&#xff0c;相信用Visual studio的小伙伴比较多。XAML代码曾经在某些特殊版本的Visual Studio中是可以加断点进行调试的&…

算法-连续项的最大和问题(最大子数组问题)三种不同解法

连续项的最大和问题 &#xff08;1&#xff09;暴力求解 时间复杂度 O&#xff08;n^2&#xff09; &#xff08;2&#xff09;分治求解 时间复杂度 O&#xff08;nlogn&#xff09; &#xff08;3&#xff09; 线性求解 时间复杂度 O&#xff08;n&#xff09; C#代码 usin…