lin-cms-dotnetcore功能模塊的設計

lin-cms-dotnetcore功能模塊的設計

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、個性簽名
    • [x] 註冊/登錄
    • [x] 上傳頭像
    • [x] 修改個人密碼
    • [x] 用戶基本信息修改
    • [x] 用戶增刪改,配置分組
  • 綁定第三方賬號
    • [x] GitHub登錄
    • [x] QQ 登錄
    • [ ] Gitee登錄
  • 分組信息:是否靜態分組(無法刪除,無法修改分組編碼)、名稱可以修改
    • [x] 分組增刪改
    • [x] 分組配置權限
  • 文件管理
    • [x] 本地文件上傳
    • [x] 七牛雲存儲
    • [x] 文件去重,秒傳
  • 系統日誌:請求方法、路徑、http返回碼、時間、用戶昵稱、用戶id、訪問哪個權限、 日誌信息
    • [x] 記錄系統請求的日誌
    • [ ] 異常日誌
  • 設置管理:name(鍵),value(值),provider_name(提供名),provider_key(提供者值)
    • [x] 設置新增修改刪除
    • [x] 所有設置

比如存某用戶選擇的是markdown還是富文本。

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

或存儲七牛雲的某一個配置

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

cms 管理員維護模塊

  • [x] 標籤管理:名稱、圖片,是否啟用/禁用,排序、文章數量、用戶關注數量。
    • [x] 標籤增刪改
    • [x] 標籤列表,禁用
    • [x] 校正文章數量
  • [x] 技術頻道:封面圖、名稱、是否啟用/禁用、排序、編碼、備註描述、下屬標籤.一個技術頻道對應多個標籤
    • [x] 技術頻道增刪改
    • [x] 列表、禁用
  • [x] 隨筆管理:
    • [x] 審核隨筆/拉黑
    • [x] 管理員刪除隨筆
  • [x] 評論管理
    • [x] 後台審核通過/拉黑
    • [x] 管理員刪除評論
  • [x] 字典類別管理:編碼,名稱,排序
    • [x] 增刪改查
  • [x] 字典管理::編碼,名稱,排序,類別:如隨筆類型(原創、轉載、翻譯)
    • [x] 增刪改查

cms 用戶端模塊

  • 技術頻道
    • [x] 首頁展示技術頻道
    • [x] 選擇技術頻道后,可再根據標籤查詢文章
  • 分類專欄管理:發布隨筆時可選擇單個分類。
    • [x] 分類增刪改(隨筆數量、圖片、名稱、排序)
    • [x] 分類列表,僅查看、編輯自己創建的分類專欄
  • 標籤:統計每個標籤下多少個文章、多少人關注
    • [x] 標籤列表
    • [x] 無限加載
    • [x] 最新/最熱 根據標籤名稱模糊查詢
    • [x] 已關注的標籤
    • [x] 熱門標籤
  • 隨筆
    • [x] 支持markdown,增刪改(僅自己的隨筆),修正分類專欄中的隨筆數量
    • [x] 支持富文本編輯隨筆
    • [x] 列表無限加載,按標籤查詢隨筆
    • [x] 點贊隨筆
    • 隨筆詳情頁
      • [x] 支持目錄導航(滾動時,固定至頂部位置),展示字數統計、預計閱讀時長;
      • [x] 作者介紹:頭像,昵稱,簽名,隨筆數;
      • [x] 展示文章類型:原創、轉載、翻譯
      • [ ] 相關文章
      • [ ] 推薦文章
  • 評論
    • [ ] 用戶關閉評論時,無法對隨筆進行評論
    • [ ] 評論隨筆(內容支持超鏈接、emoji)
    • [x] 刪除自己的評論
    • [x] 點贊評論
    • [x] 回複評論
  • 關注
    • [x] 關注/取消關注用戶
    • [x] 關注/取消關註標簽
    • [x] 我關注的用戶發隨筆
  • 個人主頁
    • 隨筆
      • [x] 用戶專欄分類展示
      • [x] 最新發布的隨筆
    • 關注
      • [x] 關注的用戶
      • [x] 粉絲
      • [x] 關注的標籤
  • 設置
    • 個人主頁設置
      • [x] 個人資料更新
    • 安全設置
      • [x] 密碼修改:快速登錄的賬號,初次設置時可留空
    • 博客設置
      • [x] 編輯器設置,(可切換markdown/富文本)
      • [x] 代碼風格配置(tango、native、monokai、github、solarized-light、vs)
  • 消息
    • [x] 評論:點贊評論、評論隨筆、回複評論
    • [x] 喜歡和贊:點贊隨筆、點贊評論
    • [x] 關注,誰誰關注了你

腦圖分享

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:對倉儲,應用服務或工具類進行測試

功能特性

  • [x] Azure Devops CI/CD構建
  • [x] GitHub Action實現 GitHub Gitee代碼同步
  • [x] .Net Core結合AspNetCoreRateLimit實現限流
  • [x] 方法級別權限控制
  • 社交賬號管理:支持多種第三社交賬號登錄,不干涉原用戶數據,實現第三方賬號管理
  • 多語言
  • [x] 全局敏感詞處理
  • 日誌記錄,方便線上排查錯誤
  • [ ] 支持多種數據庫,並測試,
    • [x] Mysql
    • [ ] Postgresql
    • [ ] Sql Server
    • [ ] SQlite

產品設計-評論模塊的設計

下面我們來設計一個評論模塊,需要注意的是,一個評論模塊也有不同的方式。從展示形式,排序規則,按鈕功能設計,操作等方式都有詳細的分析設計,大家可以參考who shi pm 中的文章http://www.woshipm.com/pd/3548139.html,這裏主要講解下展式方式中的主題式的應用。

1.主題式

相信很多人都刷過抖音,他的評論主題式的強化版。

特點為前三個是熱門評論(喜歡最多的評論),將評論分為二級,第一級採用時間倒序,第二級按照時間正序,有助於理解上下文關係。

可以總結為如下功能點

用戶操作:

  • [x] 評論隨筆(內容支持超鏈接、emoji)
  • [x] 點贊評論/取消點贊
  • [x] 回複評論
  • [x] 刪除自己的評論

運營操作:

  • [x] 審核通過/拉黑評論
  • [x] 刪除任何評論
  • [x] 拉黑后的显示邏輯。(保留當前區塊、显示內容為:該評論因違規被拉黑)
  • 刪除:(如果是二級評論,直接軟刪除,如果是一級評論,軟刪除子評論和當前評論-需要提前提醒用戶)

交互設計

  • 評論的字數長度(500)、emoji。
  • 點贊交互-動畫、消息通知/推送
  • 評論區域元素,需要有明確可點擊的區域,會跳轉到哪個地方。

優化

  • 精選或者叫置頂評論
  • 該文章是否開放評論功能。
  • 熱門評論(點贊最多的評論)
  • 標註哪些評論是作者,標準哪些評論被用戶點贊。
  • @邏輯,emoji,舉報等

2 平鋪式

特點是不區分子父節點關係,比如現在博客園(大多數的主題),微信朋友圈,github。
不過博客園,github,回復時,可選擇引用回復,方便用戶理解上下文關係。

3.蓋樓式

這種方式有點這種感覺 》>-,即.net core中間件請求方式。當回復越來越多時,显示的效果就越誇張。一層套一層的显示上下文的關係。下圖是網易新聞的評論效果。

排行榜見解

排行榜從心理學上分析,主要從四個方面影響着您:尋找權威 、參与比較 、關注主流 、自我確認。

如何設計一個簡單的排行榜呢。。

在一個博客隨筆中,我們設計一個3天、七天(周榜)、30天(月榜)、全部的榜單。以瀏覽量(權重1)、點贊量(20)、評論量(30)。權重可自己定義。

1.默認取最新的隨筆

前台傳create_time時,使用如下sql

select * from `blog_article` order by create_time desc;

2.傳排序方式為最近n天的熱榜時。

參數:THREE_DAYS_HOTTEST(三天)、WEEKLY_HOTTEST(七天)、MONTHLY_HOTTEST(一個月)、HOTTEST(全部)

mysql 查詢當前日期時間前三天數據

select date_sub(now() ,interval 3 day);

根據權重查詢

select * from `blog_article` a 
where a.`create_time`>(select date_sub(now() ,interval 3 day))
order by (a.`view_hits` + a.`likes_quantity` * 20 + a.`comment_quantity` * 30) DESC, a.`create_time` DESC

更多參考

  • 評論區如何設計?
  • 萬字長文深度分析:產品排行榜的設計和玩法
  • 想知道誰是你的最佳用戶?基於Redis實現排行榜周期榜與最近N期榜

lin-cms 開源地址分享

  • 後端接口 https://github.com/luoyunchong/lin-cms-dotnetcore
  • 管理後台UI https://github.com/luoyunchong/lin-cms-vue
  • 前端UIhttps://github.com/luoyunchong/lin-cms-vvlog

Demo

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

    • 普通用戶:710277267@qq.com
    • 密碼:123qwe
  • 管理員 lin-cms-vue https://cms.baimocore.cn/

    • 管理員: admin
    • 密碼:123qwe

預覽圖

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※想知道最厲害的網頁設計公司"嚨底家"!

※幫你省時又省力,新北清潔一流服務好口碑

※別再煩惱如何寫文案,掌握八大原則!

※產品缺大量曝光嗎?你需要的是一流包裝設計!