前言
孔乙己顯出極高興的樣子,將兩個指頭的長指甲敲著櫃檯,點頭說:“對呀,對呀!......回字有四樣寫法,你知道麼?”
大家好,我是44歲的大齡程式設計師碼農阿峰。阿峰從事程式設計二十年了,雖然沒有成為架構師,卻也用過很多種架構。幾年前開始研究JAVA企業級快速開發框架若依,後來發現了它的.net 版本實現-ZR.Admin。從此一發不可收拾,崇拜的五體投地。對它作了些改動,記錄下來。
以下是我自願加的廣告:
## ? 線上體驗
- 官方文件:http://www.izhaorui.cn/doc
- vue3.x 版本體驗:http://www.izhaorui.cn/vue3
- vue2.x 版本體驗:http://www.izhaorui.cn/admin
- 賬號密碼:admin/123456
## ? 程式碼倉庫
| 倉庫 | Github | Gitee |
| ----------- | ------ | ---------------------------------------------------------------- |
| Vue2 + Net5 | | [克隆/下載](https://gitee.com/izory/ZrAdminNetCore/) |
| Vue3 | | [克隆/下載](https://gitee.com/izory/ZRAdmin-vue) |
| Vue2 + Net7 | | [克隆/下載](https://gitee.com/izory/ZrAdminNetCore/tree/net7.0/) |
## ? 前端技術
Vue 版前端技術棧 :基於 vue2.x/vue3.x、vuex、vue-router 、vue-cli 、axios、 element-ui、echats、i18n 國際化等,前端採用 vscode 工具開發
## ? 後端技術
- 核心框架:.Net5.0/.Net7.0 + Web API + sqlsugar + swagger + signalR + IpRateLimit + Quartz.net + Redis
- 定時計劃任務:Quartz.Net 元件,支援執行程式集或者 http 網路請求
- 安全支援:過濾器(資料許可權過濾)、Sql 注入、請求偽造
- 日誌管理:NLog、登入日誌、操作日誌、定時任務日誌
- 工具類:驗證碼、豐富公共功能
- 介面限流:支援介面限流,避免惡意請求導致服務層壓力過大
- 程式碼生成:高效率開發,程式碼生成器可以一鍵生成所有前後端程式碼
- 資料字典:支援資料字典,可以方便對一些狀態進行管理
- 分庫分表:使用 orm sqlsugar 可以很輕鬆的實現分庫分庫效能優越
- 多 租 戶:支援多租戶功能
- 快取資料:內建記憶體快取和 Redis
本文主要內容:
- WEBAPI的預設路由改回swagger的介面列表
- 支援實體類主鍵是GUID
1).WEBAPI的預設路由改回swagger的介面列表
/// <summary> /// hello /// </summary> /// <returns></returns> [Route("/")] [HttpGet] public IActionResult Index() { return Ok("看到這裡頁面說明你已經成功啟動了本專案:)\n\n" + "如果覺得專案有用,打賞作者喝杯咖啡作為獎勵\n☛☛http://www.izhaorui.cn/doc/support.html\n"); }
我覺得自己很不厚道。原作者只是提醒一下用他程式碼的人 “如果覺得專案有用,打賞作者喝杯咖啡作為獎勵”。這是應該的,但是我目前失業中,等我接大學生畢業設計賺了錢我會補上的!對作者的辛勤付出表示衷心的感謝!
因為作者把預設路由搞成了這個,那程式集釋出和部署完就會被路由到這裡,開啟一個網頁就是這句話。所以對不住了直接移除即可。
2).實體類或資料庫表主鍵支援GUID
這個更簡單,ZR.ADMIN是使用SqlSugar來做ORM元件的
[SugarColumn(IsIdentity = true, IsPrimaryKey = true)] public int Cid { get; set; }
一般是使用的自增型別的整數型別來作主鍵的,而我自己經常是用GUID的,類似這樣:
/// <summary> /// 描述 :主鍵 (產品ID) /// </summary> [EpplusTableColumn(Header = "主鍵")] [SugarColumn(IsPrimaryKey = true, IsIdentity = false, ColumnName = "product_ID")] public string ProductId { get; set; }
/// <summary> /// 刪除產品資訊 /// </summary> /// <returns></returns> [HttpDelete("{ids}")] [ActionPermissionFilter(Permission = "trackingdict:mtsproduct:delete")] [Log(Title = "產品資訊", BusinessType = BusinessType.DELETE)] public IActionResult DeleteMtsProduct(string ids) { string[] idsArr = Tools.SpitGuidArrary(ids); if (idsArr.Length <= 0) { return ToResponse(ApiResult.Error($"刪除失敗Id 不能為空")); } var response = _MtsProductService.Delete(idsArr); return ToResponse(response); } public static int[] SpitIntArrary(string str, char split = ',') { if (string.IsNullOrEmpty(str)) { return Array.Empty<int>(); } string[] strIds = str.Split(split, (char)StringSplitOptions.RemoveEmptyEntries); int[] infoIdss = Array.ConvertAll(strIds, s => int.Parse(s)); return infoIdss; } /// <summary> /// 拆分多個GUID /// </summary> /// <param name="str"></param> /// <param name="split"></param> /// <returns></returns> public static string[] SpitGuidArrary(string str, char split = ',') { if (string.IsNullOrEmpty(str)) { return Array.Empty<string>(); } string[] strIds = str.Split(split, (char)StringSplitOptions.RemoveEmptyEntries); string[] infoIdss = Array.ConvertAll(strIds, s => s.ToUpper()); return infoIdss; }
直接看上面的程式碼吧,把程式碼生成器生成的"SpitIntArrary"改成“SpitGuidArrary”即可。
3)VUE3版本前端的體驗
速度挺快的,體驗也還行,就是有些不習慣,覺得不夠成熟,另外不想花太多的學習成本去學習,VUE2還不熟練呢。
文章就此結束,其實單純想幫ZR.ADMIN做個廣告。聊表心意!