準備html
源碼地址: https://github.com/NewLifeX/NewLife.Cubegit
演示地址:http://cube.newlifex.com 能夠直接註冊用戶以及選用第三方登陸github
單點登陸:htts://sso.newlifex.comweb
講課視頻1:https://pan.baidu.com/s/1zEUkG7YXnVdvTLq6dJBhzgsql
講課視頻2:https://pan.baidu.com/s/10omTlET99DF-4cgG2bObzw數據庫
開始json
1.初識魔方 魔方後臺結構介紹bootstrap
魔方是一個基於ASP.NET MVC的多角色的權限管理系統,新版本的設計目標是全部頁面封裝在DLL裏邊,經過覆蓋修改視圖,作到極簡化的使用xcode
1登陸緩存
其中集成了SSO單點登陸及第三方OAuth登陸,其中既能夠做爲OAuth客戶端也能夠做爲OAuth服務端,能夠本身內部發佈一個sso服務器端,只須要發佈cube.dll,xcode.dll,core.dll三個dll的空項目便可
1.1頂部菜單欄
頂部菜單有欄目點擊及用戶修改註銷等功能
1.2工做臺首頁
應用系統:地址能夠解決Nginx轉發的路徑不對的問題
域名地址:多ip或者Nginx代理的顯示
重啓系統功能特別有用(緩存沒有更新,配置沒有生效,重啓後會從新加載,輕量級重啓,不用iis整個重啓
程序集列表:能夠分析是否缺乏第三方組件的引用
.netcore session不建議使用,因此之後儘可能不用session
內部版本,後邊兩個字段是編譯出來的,編譯時間來自於內部版本好比2.4.6805.17968,其中內部版本號6805基於2000年1月1日的天數,後邊的17968字段是後邊的秒數除以2的一個結果
1.3左側區域菜單
菜單是樹狀的多層菜單,菜單樹是內存計算的,1000對之內會總體緩存,所以菜單更新後不必定實時顯示,由於有緩存,須要重啓一下
2.系統菜單中的4個基本功能
用戶
記錄每一個用戶,能夠對用戶信息進行管理,其中清除密碼功能比較特別,清除密碼後能夠任意密碼登陸,登陸密碼做爲新密碼存儲在數據庫中
日誌
日誌做爲系統的安全與審計,是不能修改,添加,刪除的.其中包含操做記錄,訪問統計等
角色
系統默認了管理員,遊客,普通用戶,高級用戶等幾個角色,其中在第一個默認登陸系統的帳號會自動替換爲管理員角色,admin自動降級爲遊客,角色與名稱能夠根據本身的業務進行修改,其中咱們支持多角色,一個主角色,多個次要角色,多角色是或的關係,只要有權限都支持.
菜單
對系統菜單與業務菜單進行編輯與修改,其中系統菜單裏邊修改事後必定要勾選上必要,否則會被魔方初始化覆蓋,其中可見指的是是否在左側菜單欄中顯示,能夠自定義權限
業務菜單
系統啓動後會自動掃描區域與控制器,將區域做爲一級菜單加載到數據庫,將控制器做爲二級子菜單加載到區域菜單下邊,其中菜單名字經過[DisplayName("菜單名稱")]來註解
3.高級功能
3.1魔方設置
基本設置
對系統的一些基本設置,包括全局調試,日誌等級,日誌目錄,插件服務器設置等
系統設置
對系統的名稱進行設置,登陸頁,頁面頭部的名稱,其中開發者模式的開關控制着頁面的sql輸出,以及高級功能裏邊的生成Form表單與生成List數據頁的視圖,啓用與否表明整個魔方系統是否啓用
數據中間設置
xcode中間件設置,其中最重要的反向工程設置,默認爲on,這個時候會根據實體文件對數據表進行檢測,其中會新增字段,不能刪除與修改字段,緩存時間通常是10秒,能夠設置默認的備份數據庫目錄,主要針對sqlite文件數據庫
魔方設置
顯示時間控制,做爲整個頁面的數據庫查詢時間的一個輔助開發功能設置
插件服務器設置,這個是全部的插件以及資源服務器的一個設置
工做臺頁面設置,做爲一個後臺權限系統登陸進來展現的首頁
佈局頁設置,是整個mvc佈局頁的一個設置
密碼登陸,啓用註冊,自動註冊強行綁定用戶設置都是跟用戶相關的一些設置
下拉框選擇,其中下拉框開啓後樣式爲bootstrap,頁面加載會比較耗時,若是追求極速,能夠考慮關閉下拉框選擇
SSL做爲https的強制使用
3.2文件
在線的文件管理系統,能夠直接上傳bin文件以及下載sqlite的備份文件下載到本地
3.3頁面右邊高級功能
清空數據表:其中清空表是checkident操做,會把自增ID從新從1開始
刪除所有:刪除當前符合查詢條件的所有記錄
導出xml與json,按照xml或者json格式導出當前符合查詢條件的記錄
導出excel,測試過最多導出過90w的記錄
生成Form表單:生成表單視圖模版文件,能夠隨意修改視圖頁面
生成List數據模版,隨意修改列表數據頁
4.魔方項目引用及使用
4.1魔方dll的引用
新建.NET Framework MVC項目
在新建項目中右鍵選擇管理Nuget包中搜索NewLife.cube而後安裝到本項目中,該cube.dll會自動引入XCode.dll與core.dll,其中cube所需的資源包,項目會自動下載到Content目錄下邊
安裝完成後會在目錄生成Model.xml與Build.tt文件,其中Model.xml文件是數據庫參考文件
數據庫模型文件詳細說明見圖所標識:
Index爲默認主鍵索引,其中表名+主鍵名稱會在實體類Biz.cs中自動生成擴展屬性
4.2實體的生成
在build.tt文件上右鍵選擇運行自定義工具就會在Model.xml文件中設定的目錄下生成實體文件.cs數據文件,biz.cs業務文件,分部類,一個類放在多個文件裏邊,biz.cs只是在第一次生成,之後不會覆蓋生成,.cs每次更新表都會從新生成
4.3魔方的使用區域與控制器
在項目上右鍵在彈出菜單中選擇添加,在子菜單中點擊區域按鈕新增區域Areas,即在左側新建一個一級菜單
我新建了一個Test的區域,修改區域的AreaRegistration文件,將繼承修改成AreaRegistrationBase,並使用註解[DisplayName("區域名稱即一級菜單的名稱")]的方式爲該菜單的名稱
新建控制器繼承自EntityController<實體類>,會自動生成一個二級子菜單,經過註解[DisplayName("二級菜單的名稱")]
運行獲得該實體列表頁,要想列表中某些字段不顯示,只須要在控制器中的構造方法裏邊輸入ListFields.Remove("列名」)
public class MyUserController : EntityController<Log> { public MyUserController() { ListFields.Remove(Log._.CreateUserID); } }
4.4高級按鈕生成表單與列表的視圖文件
生成模版文件後,點擊工程的顯示全部按鈕,而後在對應的控制器的view目錄下將模版文件包括在項目中,這個時候能夠對模版進行任意覆蓋修改,本身能夠多修改運行試試效果,特別注意
須要在views下邊的webconfig文件中加入 如下的命名空間
<add namespace="NewLife" />
<add namespace="NewLife.Cube" />
<add namespace="NewLife.Reflection" />
<add namespace="NewLife.Web" />
<add namespace="XCode" />
<add namespace="XCode.Membership" />
5.魔方的精髓 模版覆蓋
5.1模版介紹
模版分爲表單模版Form.cshtml,列表模版List.cshtml,佈局模版,每一個模版能夠分別單獨覆蓋,能夠局部總體覆蓋,真正作到任意覆蓋,其中最重要的是能夠根據優先級順序進行總體局部覆蓋,須要整站覆蓋直接修改 Ace_Layout.cshtml
其中優先級順序依次爲項目Views-->控制器Views-->Areas Views-->魔方內置Views
列表模版詳細說明以下:整個模版分爲_List_Toolbar.cshtml,_List_Data.cshtml,_List_Pager.cshtml
其中_List_Data.cshtml又包含兩部分數據部分:_List_Data_Item.cshtml 與 操做部分:_List_Data_Action.cshtml
_List_Toolbar.cshtml是最複雜的功能其中包含批量操做_List_Toolbar_Batch.cshtml,日期搜索_List_Search.cshtml對應(_DateRange.cshtml)不知爲什麼要這樣多一個search的頁面,不敢揣摩聖意,關鍵字查詢_List_Toolbar_Search.cshtml,高級按鈕功能,_List_Toolbar_Adv.cshtml
如今示例一下修改Search的查詢:首先在控制器中重載一下Search方法,在實體中實現Search的高級搜索方法
protected override IEnumerable<UserOnline> Search(Pager p) { var id = p["id"];//取當前頁面的id值 //p["q"]關鍵字的值 return UserOnline.Search(p["q"],p); }
最後可使用自定義工具RazorGenerator將視圖文件編譯成DLL文件,能夠聯機搜索安裝
當項目Views同時使用cshtml文件與DLL的時候優先使用cshtml文件
神奇黑科技:http://cube.newlifex.com/School/Class/json?q=11&Sort=ID&Desc=True&key=abcdefg
魔方支持json,xml導出數據,其中key爲token,q爲關鍵字,sort是排序字段