From 0639a3ef16118e5aba0591ae46ec342255a65a79 Mon Sep 17 00:00:00 2001 From: ageerle <ageerle@163.com> Date: 星期二, 25 三月 2025 09:57:53 +0800 Subject: [PATCH] fix: 1. 修复Milvus向量存储时索引越界 2. 移除无用首页 --- /dev/null | 1 ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/WeaviateVectorStore.java | 289 +++++++++++++++++++++++++++++++-------------------------- ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/MilvusVectorStore.java | 2 ruoyi-admin/src/main/java/org/ruoyi/controller/IndexController.java | 2 ruoyi-admin/src/main/resources/application-dev.yml | 3 5 files changed, 159 insertions(+), 138 deletions(-) diff --git a/ruoyi-admin/src/main/java/org/ruoyi/controller/IndexController.java b/ruoyi-admin/src/main/java/org/ruoyi/controller/IndexController.java index 4da12bc..d7e2427 100644 --- a/ruoyi-admin/src/main/java/org/ruoyi/controller/IndexController.java +++ b/ruoyi-admin/src/main/java/org/ruoyi/controller/IndexController.java @@ -20,7 +20,7 @@ */ @GetMapping("/") public String index() { - return "index.html"; + return "RuoYi-AI 鍚姩鎴愬姛锛�"; } @GetMapping("/success") diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml index 57797e6..f763d9a 100644 --- a/ruoyi-admin/src/main/resources/application-dev.yml +++ b/ruoyi-admin/src/main/resources/application-dev.yml @@ -27,7 +27,8 @@ driverClassName: com.mysql.cj.jdbc.Driver url: jdbc:mysql://43.139.70.230:3306/ruoyi-ai?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true username: ruoyi-ai - password: xx + password: eCaZ278N62k6fhYj + hikari: # 鏈�澶ц繛鎺ユ睜鏁伴噺 diff --git a/ruoyi-admin/src/main/resources/static/.gitignore b/ruoyi-admin/src/main/resources/static/.gitignore deleted file mode 100644 index 9e33968..0000000 --- a/ruoyi-admin/src/main/resources/static/.gitignore +++ /dev/null @@ -1,46 +0,0 @@ -###################################################################### -# Build Tools - -.gradle -/build/ -!gradle/wrapper/gradle-wrapper.jar - -target/ -!.mvn/wrapper/maven-wrapper.jar - -###################################################################### -# IDE - -### STS ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans - -### IntelliJ IDEA ### -.idea -*.iws -*.iml -*.ipr - -### JRebel ### -rebel.xml - -### NetBeans ### -nbproject/private/ -build/* -nbbuild/ -nbdist/ -.nb-gradle/ - -###################################################################### -# Others -*.log -*.xml.versionsBackup -*.swp - -!*/build/*.java -!*/build/*.html -!*/build/*.xml diff --git a/ruoyi-admin/src/main/resources/static/.nojekyll b/ruoyi-admin/src/main/resources/static/.nojekyll deleted file mode 100644 index e69de29..0000000 --- a/ruoyi-admin/src/main/resources/static/.nojekyll +++ /dev/null diff --git a/ruoyi-admin/src/main/resources/static/CNAME b/ruoyi-admin/src/main/resources/static/CNAME deleted file mode 100644 index 3a194c7..0000000 --- a/ruoyi-admin/src/main/resources/static/CNAME +++ /dev/null @@ -1 +0,0 @@ -plus-doc.dromara.org \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/README.md b/ruoyi-admin/src/main/resources/static/README.md deleted file mode 100644 index b50e252..0000000 --- a/ruoyi-admin/src/main/resources/static/README.md +++ /dev/null @@ -1,74 +0,0 @@ -# 妗嗘灦浠嬬粛 -- - - -- `RuoYi-Vue-Plus` 鍒嗗竷寮忛泦缇ゆ鏋� [鏂囨。璺宠浆](/ruoyi-vue-plus/home.md) -- `RuoYi-Cloud-Plus` 寰湇鍔℃鏋� [鏂囨。璺宠浆](/ruoyi-cloud-plus/home.md) -- `plus-ui` 缁熶竴 Vue3 鍓嶇椤圭洰 [鏂囨。璺宠浆](/plus-ui/home.md) -- `plus-doc` 缁熶竴鏂囨。椤圭洰 - -## 鐗瑰埆璧炲姪 - -<a href="https://gitee.com/dromara/MaxKey"><img src="https://foruda.gitee.com/images/1700187453544179968/7342304a_1766278.png" width="400px" height="100px"></a> -<a href="http://ccflow.org/?frm=ryPlus"><img src="https://foruda.gitee.com/images/1704162419429172656/d0521e59_1766278.png" width="400px" height="100px"></a> -<br> -<a href="http://www.shuduokeji.com"><img src="https://foruda.gitee.com/images/1705569347386939952/3f187980_1766278.jpeg" width="400px" height="100px"></a> -<a href="https://www.jnpfsoft.com/index.html?from=plus-doc"><img src="https://foruda.gitee.com/images/1711681233267310022/2ffbcff2_1766278.png" width="400px" height="100px"></a> -<br> -<a href="https://item.jd.com/13928958.html?from=plus-doc"><img src="https://foruda.gitee.com/images/1723791569938403230/769e98da_1766278.jpeg" width="400px" height="100px"></a> - -[濡備綍鎴愪负璧炲姪鍟� 鍔犵兢鑱旂郴浣滆�呰璋圿(/common/add_group.md) - -## 浠g爜鍦板潃 - -| 浠嬬粛 | 椤圭洰鍚� | 椤圭洰鍦板潃 | 娉ㄦ剰浜嬮」 | -|------------|:-----------------|------------------------------------------------------------------------------------------------------------------------|----------------------------| -| 馃敟 鍒嗗竷寮忛泦缇ゆ鏋� | RuoYi-Vue-Plus | - [Gitee](https://gitee.com/dromara/RuoYi-Vue-Plus)<br> - [GitHub](https://github.com/dromara/RuoYi-Vue-Plus) | 閲嶅啓RuoYi-Vue鍏ㄦ柟浣嶅崌绾�(涓嶅吋瀹瑰師妗嗘灦) | -| 馃敟 寰湇鍔℃鏋� | RuoYi-Cloud-Plus | - [Gitee](https://gitee.com/dromara/RuoYi-Cloud-Plus)<br>- [GitHub](https://github.com/dromara/RuoYi-Cloud-Plus) | 閲嶅啓RuoYi-Cloud鍏ㄦ柟浣嶅崌绾�(涓嶅吋瀹瑰師妗嗘灦) | -| 馃敟 缁熶竴鍓嶇椤圭洰 | plus-ui | - [Gitee](https://gitee.com/JavaLionLi/plus-ui)<br>- [GitHub](https://github.com/JavaLionLi/plus-ui) | Vue涓嶤loud椤圭洰閫氱敤鍓嶇 | -| 馃敟 缁熶竴鏂囨。椤圭洰 | plus-doc | - [Gitee](https://gitee.com/dromara/plus-doc)<br>- [GitHub](https://github.com/dromara/plus-doc) | 閫氱敤鏂囨。 | - - -## 涓氬姟鍔熻兘 - -| 鍔熻兘 | 浠嬬粛 | -|-------|---------------------------------------| -| 绉熸埛绠$悊 | 閰嶇疆绯荤粺绉熸埛锛屾敮鎸� SaaS 鍦烘櫙涓嬬殑澶氱鎴峰姛鑳姐�� | -| 鐢ㄦ埛绠$悊 | 鐢ㄦ埛鏄郴缁熸搷浣滆�咃紝璇ュ姛鑳戒富瑕佸畬鎴愮郴缁熺敤鎴烽厤缃�� | -| 閮ㄩ棬绠$悊 | 閰嶇疆绯荤粺缁勭粐鏈烘瀯锛堝叕鍙搞�侀儴闂ㄣ�佸皬缁勶級锛屾爲缁撴瀯灞曠幇鏀寔鏁版嵁鏉冮檺銆� | -| 宀椾綅绠$悊 | 閰嶇疆绯荤粺鐢ㄦ埛鎵�灞炴媴浠昏亴鍔°�� | -| 鑿滃崟绠$悊 | 閰嶇疆绯荤粺鑿滃崟锛屾搷浣滄潈闄愶紝鎸夐挳鏉冮檺鏍囪瘑绛夈�� | -| 瑙掕壊绠$悊 | 瑙掕壊鑿滃崟鏉冮檺鍒嗛厤銆佽缃鑹叉寜鏈烘瀯杩涜鏁版嵁鑼冨洿鏉冮檺鍒掑垎銆� | -| 瀛楀吀绠$悊 | 瀵圭郴缁熶腑缁忓父浣跨敤鐨勪竴浜涜緝涓哄浐瀹氱殑鏁版嵁杩涜缁存姢銆� | -| 鍙傛暟绠$悊 | 瀵圭郴缁熷姩鎬侀厤缃父鐢ㄥ弬鏁般�� | -| 閫氱煡鍏憡 | 绯荤粺閫氱煡鍏憡淇℃伅鍙戝竷缁存姢銆� | -| 鎿嶄綔鏃ュ織 | 绯荤粺姝e父鎿嶄綔鏃ュ織璁板綍鍜屾煡璇紱绯荤粺寮傚父淇℃伅鏃ュ織璁板綍鍜屾煡璇€�� | -| 鐧诲綍鏃ュ織 | 绯荤粺鐧诲綍鏃ュ織璁板綍鏌ヨ鍖呭惈鐧诲綍寮傚父銆� | -| 鏂囦欢绠$悊 | 绯荤粺鏂囦欢涓婁紶銆佷笅杞界瓑绠$悊銆� | -| 瀹氭椂浠诲姟 | 鍦ㄧ嚎锛堟坊鍔犮�佷慨鏀广�佸垹闄�)浠诲姟璋冨害鍖呭惈鎵ц缁撴灉鏃ュ織銆� | -| 浠g爜鐢熸垚 | 鍓嶅悗绔唬鐮佺殑鐢熸垚锛坖ava銆乭tml銆亁ml銆乻ql锛夋敮鎸丆RUD涓嬭浇 銆� | -| 绯荤粺鎺ュ彛 | 鏍规嵁涓氬姟浠g爜鑷姩鐢熸垚鐩稿叧鐨刟pi鎺ュ彛鏂囨。銆� | -| 鏈嶅姟鐩戞帶 | 鐩戣闆嗙兢绯荤粺CPU銆佸唴瀛樸�佺鐩樸�佸爢鏍堛�佸湪绾挎棩蹇椼�丼pring鐩稿叧閰嶇疆绛夈�� | -| 缂撳瓨鐩戞帶 | 瀵圭郴缁熺殑缂撳瓨淇℃伅鏌ヨ锛屽懡浠ょ粺璁$瓑銆� | -| 鍦ㄧ嚎鏋勫缓鍣� | 鎷栧姩琛ㄥ崟鍏冪礌鐢熸垚鐩稿簲鐨凥TML浠g爜銆� | -| 浣跨敤妗堜緥 | 绯荤粺鐨勪竴浜涘姛鑳芥渚� | - -## 鍏虫敞浣滆�� - -浣滆�呭崥瀹�: [https://lionli.blog.csdn.net/?type=blog](https://lionli.blog.csdn.net/?type=blog) - -鍏紬鍙�: **<鐙瓙棰嗗煙 绋嬪簭鍦�>** -<br> - - -## 鎹愮尞浣滆�� - -**浣滆�呬负鍏艰亴鍋氬紑婧�,骞虫椂杩橀渶瑕佸伐浣�,濡傛灉甯埌浜嗘偍鍙互璇蜂綔鑰呭悆涓洅楗�** -<br> -<img src="https://foruda.gitee.com/images/1725259663554875162/bd86a165_1766278.png" width="300px" height="450px" /><img src="https://foruda.gitee.com/images/1725259708005620620/22833e19_1766278.jpeg" width="300px" height="450px" /> - -## Dromara 鍏ㄥ绂� - -绀惧尯浠撳簱鍦板潃: [dromara寮�婧愮ぞ鍖篯(https://gitee.com/organizations/dromara/projects) - - - - diff --git a/ruoyi-admin/src/main/resources/static/_coverpage.md b/ruoyi-admin/src/main/resources/static/_coverpage.md deleted file mode 100644 index d84bf0d..0000000 --- a/ruoyi-admin/src/main/resources/static/_coverpage.md +++ /dev/null @@ -1,32 +0,0 @@ -<!-- _coverpage.md --> -<html> -<img src="./static/image/logo2.png" width="260px" height="260px"> -<div style="display: flex; align-content:center; justify-content: center;"> -<div > -<div style="font-weight: bold; font-size: 40px;">鐧炬惌AI</div> -<!-- <div style="font-weight: bold; font-size: 40px;margin-bottom: 30px;">澶氱鎴锋潈闄愮鐞嗙郴缁�</div> --> - -[](https://gitee.com/ageerle/ruoyi-ai) -[](https://github.com/dromara/RuoYi-Vue-Plus) -[](https://gitee.com/ageerle/ruoyi-ai/blob/master/LICENSE) -<br> -[](https://gitee.com/ageerle/ruoyi-ai) -[]() - -</div> -<div> - -</div> - -</div> -</html> - -> 鐧炬惌AI鏄竴涓暣鍚堜簡澶氱澶ц瑷�妯″瀷API鐨勫紑婧愬钩鍙帮紝瀹炵幇浜咥I瀵硅瘽銆佺粯鍥俱�佸0闊冲厠闅嗗拰绉佹湁鐭ヨ瘑搴撶瓑鍔熻兘銆� -> -> 骞冲彴閰嶅绠$悊鍚庡彴锛屾敮鎸佸井淇℃敮浠樸�佸井淇″叕浼楀彿銆佸井淇″寮�銆丼tripe鍥介檯鏀粯鍜岀櫨搴︽枃鏈鏍哥瓑杩愯惀鍔熻兘銆� -> -> 椤圭洰閲囩敤Java+Vue+Vben5鎶�鏈爤鏋勫缓锛岄伒寰狹IT License锛屽厑璁镐簩娆″紑鍙戝苟鐢ㄤ簬鍟嗕笟閿�鍞�� - -Copyright 漏 2023-2024 鐗堟潈鎵�鏈夛細ageerle@163.com 澶囨鍙凤細<a href="https://beian.miit.gov.cn/">閯侷CP澶�2023007672鍙�</a> - -[寮�濮嬩娇鐢� Let's Go](/README.md) \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/_footer.md b/ruoyi-admin/src/main/resources/static/_footer.md deleted file mode 100644 index 7f5f9a3..0000000 --- a/ruoyi-admin/src/main/resources/static/_footer.md +++ /dev/null @@ -1,2 +0,0 @@ -<!-- _footer.md 椤佃剼閰嶇疆 --> -瀵规枃妗f湁鐤戦棶锛熸杩庢偍甯姪鎴戜滑 [瀹屽杽姝ゆ枃妗(https://gitee.com/JavaLionLi/plus-doc) 锛� \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/_navbar.md b/ruoyi-admin/src/main/resources/static/_navbar.md deleted file mode 100644 index e893825..0000000 --- a/ruoyi-admin/src/main/resources/static/_navbar.md +++ /dev/null @@ -1,9 +0,0 @@ -<!-- _navbar.md --> - -* [鏂囨。瀵艰埅](/README.md) -* [Vue鐗堟湰](/ruoyi-vue-plus/home.md) -* [Cloud鐗堟湰](/ruoyi-cloud-plus/home.md) -* [鍓嶇鏂囨。](/plus-ui/home.md) -* [甯歌闂](/questions/lombok.md) -* [瑙嗛鏁欑▼](/common/video.md) -* [婕旂ず绯荤粺](/common/demo_system.md) diff --git a/ruoyi-admin/src/main/resources/static/_sidebar.md b/ruoyi-admin/src/main/resources/static/_sidebar.md deleted file mode 100644 index 0446edc..0000000 --- a/ruoyi-admin/src/main/resources/static/_sidebar.md +++ /dev/null @@ -1,16 +0,0 @@ -<!-- _sidebar.md --> -- **鐗瑰埆璧炲姪** -- [](http://ccflow.org/?frm=ryPlus) -- [](http://www.shuduokeji.com) -- [](https://www.jnpfsoft.com/index.html?from=plus-doc) - -- **寮�濮�** - - [妗嗘灦浠嬬粛](/README.md) - - [婕旂ず绯荤粺](/common/demo_system.md) - - [瀹樻柟瑙嗛鏁欑▼](/common/video.md) - - [绮変笣涓撴爮](/common/column.md) - - [鍙備笌璐$尞椤圭洰](/common/contribution.md) - - [濡備綍鎻愪氦PR](/common/pr.md) - - [濡備綍鍔犵兢](/common/add_group.md) - - [浣跨敤鑰呯櫥璁癩(/common/user_register.md) - - [榛戝悕鍗昡(/common/blacklist.md) \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/common/add_group.md b/ruoyi-admin/src/main/resources/static/common/add_group.md deleted file mode 100644 index f6957bc..0000000 --- a/ruoyi-admin/src/main/resources/static/common/add_group.md +++ /dev/null @@ -1,27 +0,0 @@ -# 鍔犵兢鏂瑰紡 -- - - -### 浜ゆ祦缇�(涓嶆彁渚涗换浣曢棶棰樿В绛� 绾氦娴�) - -**鍔� <灏忓姪鎵�> 寰俊澶囨敞 <鍔犵兢>**<br> -**瑙嗛璇剧▼鍜ㄨ鎴栧叾浠栭棶棰樺挩璇㈣鏌ョ湅涓嬫柟淇℃伅(灏忓姪鎵嬫槸鏈哄櫒浜�)** - -<img src="https://foruda.gitee.com/images/1680762410689884638/60b546ca_1766278.png" width="300" height="300"> - -### VIP缇�(浠樿垂鍔犵兢 鎻愪緵闂瑙g瓟銆佹妧鏈敮鎸併�佹妧鏈垎浜�) - -棣栧厛鎰熻阿 `RuoYi` 鎻愪緵鍒嗕韩寮�婧� 妗嗘灦鍩轰簬 `RuoYi` 閲嶅啓澶ч儴鍒嗗姛鑳藉疄鐜�<br> -椤圭洰浠g爜銆佹枃妗� 鍧囧紑婧愬厤璐瑰彲鍟嗙敤 閬靛惊寮�婧愬崗璁湪椤圭洰涓繚鐣欏紑婧愬崗璁枃浠跺嵆鍙�<br> -VIP缇ゆ槸浣滆�呮彁渚涚殑绉佷汉鏈嶅姟 涓嶄唬琛ㄧ潃椤圭洰鏀惰垂 - -> 闂棶棰樼瓑浜庡仛涔犻 鍚綔鑰呰В绛旈棶棰樼瓑浜庝範棰樿瑙�<br> -> 涓�涓汉鎺ヨЕ鐨勯棶棰樻湁闄� 涓�缇や汉鎺ヨЕ鐨勯棶棰樻棤闄� 鏃╄繘缇ゆ棭鎺ヨЕ鏇村鐨勯棶棰�(姣忓ぉ99+)<br> -> 鎵胯: 鐪嬭蹇呭洖澶� 璁╀綘鎰熷彈浣滆�呮湁澶氳瘽鐥�<br> - -涓ょ閫斿緞: -1. 璐拱瀹樻柟瑙嗛杩涚兢 [瀹樻柟瑙嗛](/common/video.md) -2. 鎵弿涓嬫柟浜岀淮鐮佷粯娆捐繘缇�(鏃犺棰�) - -鏀粯鍚庣敵璇峰姞缇ゅ嵆鍙� QQ缇ゅ彿 : **<637757165>**<br> - -**鍔犵兢鎵爜**<br> -<img src="https://foruda.gitee.com/images/1725259839682556495/2897bc86_1766278.png" width="300px" height="450px" /><img src="https://foruda.gitee.com/images/1725259806547656944/f870a5c7_1766278.jpeg" width="300px" height="450px" /> diff --git a/ruoyi-admin/src/main/resources/static/common/blacklist.md b/ruoyi-admin/src/main/resources/static/common/blacklist.md deleted file mode 100644 index 67594bd..0000000 --- a/ruoyi-admin/src/main/resources/static/common/blacklist.md +++ /dev/null @@ -1,7 +0,0 @@ -# 榛戝悕鍗� -- - - - -鍦板潃: https://github.com/QNAV/RuoYi-X-Plus -<br> -涓婃缂樼敱 浣跨敤鏈鏋朵簩娆″紑婧愬苟鏈湁浠讳綍澹版槑涓庢爣娉� 灏嗘墍鏈変唬鐮佺殑浣滆�呭悕鍏ㄩ兘鏀规垚浜嗚嚜宸� 鍓界獌鏈鏋朵唬鐮� - diff --git a/ruoyi-admin/src/main/resources/static/common/column.md b/ruoyi-admin/src/main/resources/static/common/column.md deleted file mode 100644 index b2155a3..0000000 --- a/ruoyi-admin/src/main/resources/static/common/column.md +++ /dev/null @@ -1,18 +0,0 @@ -# 绮変笣涓撴爮 -- - - -**鐢变笂鍒颁笅 浠庢槗鍒伴毦** - -> 绮変笣鏁寸悊 娆㈣繋鎶曠 - -| 浣滆�� | 鏂囨。鍦板潃 | 璇存槑 | -|---------------|---------------------------------------------------------------|--------------------| -| 鎶撹洐甯� | https://www.bilibili.com/video/BV1TG41157Ef/ | 瀛︿細闂棶棰�(灏忕櫧蹇呯湅) | -| 鎶撹洐甯� | https://www.bilibili.com/video/BV1mr4y1j75M | Vue妗嗘灦鍩虹瑙嗛涓撴爮(鏂颁汉蹇呯湅) | -| 鎶撹洐甯� | https://www.bilibili.com/video/BV1Na411u7eC | Vue妗嗘灦鏀归�犺棰戜笓鏍�(鏂颁汉蹇呯湅) | -| 鎶撹洐甯� | https://www.bilibili.com/video/BV1te4y1D7hi | 灏忕▼搴忛壌鏉冧笌uniapp鑱斿姩 | -| 鎶撹洐甯� | https://www.bilibili.com/video/BV1zt4y137UP | 鍏紬鍙烽泦鎴� | -| mayuanfei | https://note.youdao.com/s/XpvKnxAb | 鍏ラ棬涓撴爮(鏂颁汉蹇呯湅) | -| 绋嬪簭鐚夸竴鏋歘 | https://blog.csdn.net/zhaozhiqiang1981/category_12221291.html | 鐜╄浆RuoYi-Cloud-Plus | -| 绋嬪簭鐚夸竴鏋歘 | https://www.bilibili.com/video/BV1yA411r7ji/ | Cloud鐜鎼缓浠ュ強杩涢樁寮�鍙� | -| MichelleChung | https://blog.csdn.net/michelle_zhong/category_11109741.html | 婧愮爜瑙f瀽涓撴爮(杩涢樁蹇呯湅) | -| MichelleChung | https://blog.csdn.net/michelle_zhong/category_12058476.html | Cloud婧愮爜瑙f瀽涓撴爮 | diff --git a/ruoyi-admin/src/main/resources/static/common/contribution.md b/ruoyi-admin/src/main/resources/static/common/contribution.md deleted file mode 100644 index 6b5909e..0000000 --- a/ruoyi-admin/src/main/resources/static/common/contribution.md +++ /dev/null @@ -1,69 +0,0 @@ -# 鍙備笌璐$尞鐨勬柟寮� -- - - -鍙備笌璐$尞寮�婧愮殑鏂瑰紡鏈夊緢澶氱 鍚綔鑰呮潵浠嬬粛 - -## 涓哄紑婧愰」鐩偣涓�涓猄tar - -> Star鐨勫灏戝叧绯诲埌椤圭洰鑳藉惁琚洿澶氫汉鐪嬪埌 -<br> -鍚屾椂Star涔熸槸浣滆�呭墠杩涚殑鍔ㄥ姏(浣滆�呮瘡澶╅兘鍦ㄧ洴鐫�Star 娑ㄤ簡浼氬紑蹇� 璺屼簡浼氬け钀�) -<br> -<br> -> 澶у鍦ㄥ鎵惧紑婧愰」鐩殑鏃跺��, 澶у鏁版儏鍐典篃鏄細鍏堢湅Star姣旇緝澶氱殑椤圭洰 -<br> -鎵�浠ヨ缁欐偍瑙夊緱濂界殑寮�婧愰」鐩偣涓�涓皬灏忕殑Star, 璁╁ソ鐨勯」鐩兘澶熻鏇村浜虹湅鍒� -<br> - - -<br> -<font size="4">Vue鐗堟湰: [Gitee鎴戣鐐筍tar](https://gitee.com/dromara/RuoYi-Vue-Plus/stargazers) [Github鎴戣鐐筍tar](https://github.com/dromara/RuoYi-Vue-Plus)</font> -<br> -<font size="4">Cloud鐗堟湰: [Gitee鎴戣鐐筍tar](https://gitee.com/dromara/RuoYi-Cloud-Plus/stargazers) [Github鎴戣鐐筍tar](https://github.com/dromara/RuoYi-Cloud-Plus)</font> - -## 涓虹ぞ鍖哄鐞嗛棶棰� - -> Issue鏄ぞ鍖虹殑浜ゆ祦鍦� 澶у浼氬湪杩欓噷鎻愬嚭鑷繁鐨勯棶棰� 鎴栬�呮槸椤圭洰鐨勫姛鑳藉紓甯� - -> 鎻愰棶鐨勮鑼冨湪Issue鐨勬ā鏉块噷宸茬粡鍐欏ソ浜� 鎸夌収妯℃澘濉啓鏈夊姪浜庝綔鑰呮垨鑰呭叾浠栫ぞ鍖轰汉鍛樺揩閫熸湁鏁堢殑鍥炵瓟闂 - - -> 涓烘彁鍑洪棶棰樼殑灏忎紮浼寸瓟鐤� 鍙互鏈夋晥闄嶇殑甯姪鍒汉<br> -> 鑰屼笖鍙互闄嶄綆绀惧尯浜哄憳鐨勭簿鍔涘垎鏁� 浣跨簿鍔涘叏閮ㄦ姇鍏ュ埌椤圭洰璁捐鐮斿彂涓� - - -## 鏀硅繘绀惧尯鏂囨。 - -> 澶у閮界煡閬� 鎴戜滑绋嬪簭鍛橀兘涓嶆搮闀垮啓浣�<br> -> 鏈夋椂鍊欎綔鑰呮妸鏂囨。鍐欏畬浜嗕篃涓嶇煡閬撶敤鎴锋槸浠�涔堟劅瑙� 鏄惁鑳界湅鎳�<br> - -> 鎵�浠ュ弬涓庣ぞ鍖烘枃妗e缓璁剧粷瀵规槸涓�浠舵剰涔夐噸澶х殑浜嬫儏<br> -> 澶у鍙互鍦↖ssue鎻愬嚭瑙傚悗鎰� 瑙夊緱鍝湅涓嶆噦 瑙夊緱鍝簲璇ヨ缁嗚鏄�<br> -> 褰撶劧浜� 澶у涔熷彲浠ュ鏂囨。杩涜鏀硅繘鍚庢彁浜R淇敼鐢宠 - -<font size="6">鏂囨。浠撳簱: [plus-doc](https://gitee.com/JavaLionLi/plus-doc) 馃憟鐐逛粬鐐逛粬</font> - - -## 璐$尞浠g爜 - -> 鎯冲弬涓庤础鐚唬鐮佺殑灏忎紮浼� 閲嶇偣鏉ヤ簡: 浣滆�呬細缁忓父鍦↖ssue閲屽彂甯冮渶姹傝棰�<br> -> 瑙夊緱鑷繁鑳藉仛鐨勫彲浠ュ湪Issue閲岃窡浣滆�呰璁� 濡傞渶姹傝繕涓嶅娓呮櫚 鎴栬�呭仛鐨勮繃绋嬩腑閬囧埌浜嗕粈涔堥棶棰� - -<img src="https://foruda.gitee.com/images/1678936513184771725/f26349dd_1766278.png" width="550px" height="450px" /> - -> 闇�姹傜‘瀹氫簡浠ュ悗灏卞彲浠ュ紑濮嬩笓娉ㄧ殑鍐欎唬鐮佷簡<br> -> 浣嗗湪寮�濮嬪啓浠g爜涔嬪墠 涓�瀹氳鍏堢湅涓�涓嬪浣曟纭殑鎻愪氦PR - -<font size="4">涓�鐐硅浠旂粏鐪�: [濡備綍鎻愪氦PR](/common/pr.md) 馃憟鐐逛粬鐐逛粬</font> - -## 濡備綍鎴愪负椤圭洰鎴愬憳 - -> 1.瀵规鏋舵湁閲嶅ぇ璐$尞鑰�(鐢变綔鑰呬笌鍥㈤槦鎴愬憳鍒ゅ畾)<br> -> 2.瀹屾垚绀惧尯鍙戝竷鐨勪袱椤瑰鏉備换鍔�<br> -> 3.鎸佺画瀹屾垚绀惧尯鍙戝竷鐨勭畝鍗曚换鍔¤嫢骞�(浣滆�呬細鍏虫敞鍒�)<br> -> 4.鎸佺画涓虹ぞ鍖轰紭鍖栨枃妗f垨澶勭悊issue鑻ュ共(浣滆�呬細鍏虫敞鍒�)<br> - -## 椤圭洰鎴愬憳寰呴亣 - -> 1.鍙厤璐硅繘鍏ip鏀惰垂缇�<br> -> 2.姣忓勾杩樹細鍙戞斁IDEA姝g増鎺堟潈<br> - diff --git a/ruoyi-admin/src/main/resources/static/common/demo_system.md b/ruoyi-admin/src/main/resources/static/common/demo_system.md deleted file mode 100644 index 18424e9..0000000 --- a/ruoyi-admin/src/main/resources/static/common/demo_system.md +++ /dev/null @@ -1,13 +0,0 @@ -# 绯荤粺婕旂ず(璇峰ぇ瀹朵笉瑕佷贡鏀规暟鎹� 褰卞搷浠栦汉浣撻獙 璋㈣阿閰嶅悎) -- - - -**鎰熻阿 `瀛よ垷鐑熼洦` 璐$尞鐨勬紨绀烘湇鍔″櫒** - -**1鏍�2G 灏忔湇鍔″櫒 缁忎笉璧峰帇娴� 璇风悊鎬ф搷浣� 杩濊�呯洿鎺ュ皝IP** - -> 璁块棶鍦板潃: [http://43.138.9.96/](http://43.138.9.96/) - -> 鐧诲綍璐︽埛 admin/admin123 - -> Admin鐩戞帶涓績 ruoyi/123456 - -> 浠诲姟璋冨害涓績 admin/123456 diff --git a/ruoyi-admin/src/main/resources/static/common/pr.md b/ruoyi-admin/src/main/resources/static/common/pr.md deleted file mode 100644 index e9684dd..0000000 --- a/ruoyi-admin/src/main/resources/static/common/pr.md +++ /dev/null @@ -1,37 +0,0 @@ -# 濡備綍鎻愪氦PR璐$尞浠g爜 -- - - -### 姝ラ涓� Fork椤圭洰鍒拌嚜宸变粨搴� - - - -### 姝ラ浜� 鍩轰簬dev鍒嗘敮 鏂板缓涓�涓PR鍔熻兘鐐圭殑涓撳睘鍒嗘敮 - - - - -### 姝ラ涓� 浣跨敤Git宸ュ叿 灏嗚嚜宸变粨搴撶殑椤圭洰鎷夊幓鍒版湰鍦板仛浠g爜缂栧啓 - - - -### 姝ラ鍥� 浣跨敤Idea鎵撳紑椤圭洰 鍒囨崲鍒版柊寤虹殑鍔熻兘鍒嗘敮 - - - -### 姝ラ浜� 灏嗙紪鍐欏ソ鐨勪唬鐮� 鎻愪氦鍒拌嚜宸辩殑杩滅▼浠撳簱 - - - -### 姝ラ鍏� 鍒涘缓PR鐢宠(姝ゆ搷浣滃湪鑷繁浠撳簱鎴栬�呰PR鐨勪粨搴撻兘鍙互) - - - - -### 姝ラ涓� 绛夊緟浣滆�呰瘎瀹� 鎸夎姹傛洿鏀� 鐩村埌娌℃湁闂鍚庤浣滆�呭悎骞� - - - -### 璇勫鏈熼棿 濡傞渶瀵筆R鍐呭鍋氭洿鏀� 鐩存帴鍦ㄦ柊鍔熻兘鍒嗘敮鎻愪氦浠g爜鍗冲彲 -### 鏃犻渶閲嶅鎻愪氦PR鐢宠 杩欒竟浼氳嚜鍔ㄦ瘮瀵逛袱涓垎鏀殑宸紓 - - - diff --git a/ruoyi-admin/src/main/resources/static/common/user_register.md b/ruoyi-admin/src/main/resources/static/common/user_register.md deleted file mode 100644 index 9c221cd..0000000 --- a/ruoyi-admin/src/main/resources/static/common/user_register.md +++ /dev/null @@ -1,80 +0,0 @@ -# 浣跨敤鑰呯櫥璁� -- - - -**浣跨敤姝ゅ紑婧愰」鐩殑鍏徃鎴栬�呯粍缁�** -> Vue鐗堟湰鐧昏鍦板潃: https://gitee.com/dromara/RuoYi-Vue-Plus/issues/I4QP39 - -> Cloud鐗堟湰鐧昏鍦板潃: https://gitee.com/dromara/RuoYi-Cloud-Plus/issues/I4VJ7G - -| 鍏徃鍚� | 瀹樼綉 | LOGO | -|-------------------|:-------------------------------|----------------------------------------------------------------------------------------------------------------| -| 涓浗鑱旈��(闀挎槬鍒嗗叕鍙�) | http://www.10010.com | <img src="https://foruda.gitee.com/images/1679554727740431371/bd179d0f_1766278.png" width="300" height="200"> | -| 涓浗鐢典俊(婀栧崡鍒嗗叕鍙�) | http://www.189.cn/hn/ | <img src="https://foruda.gitee.com/images/1699838764871886313/61b44b7d_1766278.png" width="300" height="200"> | -| 鍗椾含鎰熺煡淇℃伅鎶�鏈湁闄愬叕鍙� | https://njgzxx.cn/ | <img src="https://foruda.gitee.com/images/1725589695335847776/10bb2088_1766278.png" width="400" height="200"> | -| 闄曡タ楠忔櫙绱㈤亾杩愯惀绠$悊鏈夐檺鍏徃 | https://www.junjingsuodao.com/ | <img src="https://foruda.gitee.com/images/1724394959451680041/24ac17ff_7408092.png" width="300" height="200"> | -| 鎮犵爜绉戞妧鏈夐檺鍏徃 | https://orise.trytowish.cn/ | <img src="https://foruda.gitee.com/images/1722916054523975884/686ee49e_8929785.png" width="200" height="200"> | -| 鑻忓窞榫欑殑淇℃伅绯荤粺鑲′唤鏈夐檺鍏徃 | http://www.longdayinfo.com/ | <img src="https://foruda.gitee.com/images/1721182313605689705/f676882a_2113976.png" width="400" height="200"> | -| 鍖椾含鏁伴�氭櫤杈剧鎶�鏈夐檺鍏徃 | http://www.bzdtech.com/ | <img src="https://foruda.gitee.com/images/1717744899576682096/7d6cf41f_1766278.png" width="400" height="200"> | -| 骞垮窞鍏叚涓冧竷绉戞妧鏈夐檺鍏徃 | https://artiversehub.ai/ | <img src="https://foruda.gitee.com/images/1716976454631958575/44abbb05_1766278.png" width="300" height="200"> | -| 瀹佹尝涓夊搧杞欢绉戞妧鏈夐檺鍏徃 | http://nbsanpin.com/ | <img src="https://foruda.gitee.com/images/1715845257022437822/1a096edc_14415359.png" width="300" height="200"> | -| 鍖椾含寰′竴绉戞妧淇℃伅鎶�鏈湁闄愬叕鍙� | https://www.yudoctor.com | <img src="https://foruda.gitee.com/images/1715157943995574211/09aa2229_1766278.png" width="400" height="200"> | -| 鎴愰兘鍗℃仼鐗瑰尰鐤楃鎶�鏈夐檺鍏徃 | http://www.scknot.com | <img src="https://foruda.gitee.com/images/1711091474880818044/96ddef90_1766278.png" width="400" height="200"> | -| 鏃犻敗绉戣壘鎬濈鎶�鏈夐檺鍏徃 | https://www.kyoeis.com | <img src="https://foruda.gitee.com/images/1710929131545545232/a87f838e_1766278.png" width="400" height="200"> | -| 娣卞湷甯傛捣鑱斿ぉ涓嬬鎶�鏈夐檺鍏徃 | www.sealinkin.com | <img src="https://foruda.gitee.com/images/1709870697911145583/453db298_1766278.png" width="400" height="200"> | -| 涓婃捣闈炲畾涔夋梾娓告湇鍔℃湁闄愬叕鍙� | http://www.anonymity.love/ | <img src="https://foruda.gitee.com/images/1706165274431234456/f4be93d3_1766278.png" width="400" height="200"> | -| 閲嶅簡濞佺埍浜戠鎶�鏈夐檺鍏徃 | https://www.51vive.com | <img src="https://foruda.gitee.com/images/1700460635019084607/f073724d_1766278.png" width="400" height="200"> | -| 涓煄鏅鸿仈锛堟垚閮斤級鍒涙柊绉戞妧鏈夐檺鍏徃 | http://www.zc-zl.com/ | <img src="https://foruda.gitee.com/images/1699841115050735040/0d6893d1_1766278.png" width="300" height="200"> | -| 娴欐睙娴蜂寒鑲′唤鏈夐檺鍏徃 | https://www.hailiangstock.com | <img src="https://foruda.gitee.com/images/1699841174631804104/fd3466fd_1766278.png" width="300" height="200"> | -| 娌冲寳闆勫畨灞辩鍜ㄨ宸ョ▼鏈夐檺鍏徃 | https://shanheqei.club/ | <img src="https://foruda.gitee.com/images/1699855302878416881/6bfdb2d5_1766278.png" width="300" height="200"> | -| 鏁拌埖(娌冲寳闆勫畨)淇℃伅绉戞妧鏈夐檺鍏徃 | http://www.shuduokeji.com | <img src="https://foruda.gitee.com/images/1698888517162767014/8a2840ff_1766278.png" width="400" height="200"> | -| 鍗楁槍榧庢绉戞妧鑲′唤鏈夐檺鍏徃 | https://www.openzt.com | <img src="https://foruda.gitee.com/images/1697701810520579719/4da9666e_1766278.png" width="400" height="200"> | -| 涓滆帪甯傜爜杞界綉缁滅鎶�鏈夐檺鍏徃 | https://www.codeload.top | <img src="https://foruda.gitee.com/images/1697618746817506398/57af2eaa_10583761.png" width="400" height="200"> | -| 鍖椾含鍐滀俊閫氱鎶�鏈夐檺璐d换鍏徃 | http://www.nxt.com.cn | <img src="https://foruda.gitee.com/images/1696428611360166577/72e7f7c4_971517.png" width="400" height="200"> | -| 涓悍鑵惧崕缃戠粶绉戞妧锛堥噸搴嗭級鏈夐檺鍏徃 | https://www.zkthwlkj.com/ | <img src="https://foruda.gitee.com/images/1695112845600729239/a16e34e2_1766278.png" width="200" height="100"> | -| 鏉窞鐮佹亽淇℃伅绉戞妧鏈夐檺鍏徃 | http://www.mh-barcode.com/ | <img src="https://foruda.gitee.com/images/1690881482450489558/2d689bc1_1766278.png" width="400" height="200"> | -| 鍗椾含鏅剁泭绉戞妧鏈夐檺鍏徃 | https://www.nanjingjingyi.com/ | <img src="https://foruda.gitee.com/images/1689576488369281878/bec504ce_1766278.png" width="400" height="200"> | -| 鍚堣偉鏅轰韩浜夸簯绉戞妧鏈夐檺鍏徃 | http://www.izxyy.com | <img src="https://foruda.gitee.com/images/1685096398913604988/e6c16816_1766278.png" width="300" height="200"> | -| 閿$畝绉戞妧 | https://www.xj-fast.com | <img src="https://foruda.gitee.com/images/1683858424104223718/172f2c2e_1766278.png" width="300" height="200"> | -| 绂忓缓浜樺墠绉戞妧鏈夐檺鍏徃 | https://genqian.top | <img src="https://foruda.gitee.com/images/1683170298723703161/891feff4_1766278.png" width="400" height="200"> | -| 鍖椾含鑱斿畤淇¢�氱鎶�鏈夐檺鍏徃 | http://www.lyxtkj.com/ | <img src="https://foruda.gitee.com/images/1680068618387237935/5e195ad8_1766278.png" width="400" height="200"> | -| 鍘﹂棬甯傜喌鏃跺厜绉戞妧鏈夐檺鍏徃 | https://www.xetsoft.com | <img src="https://foruda.gitee.com/images/1672299365177532128/f0e78c26_1766278.png" width="400" height="200"> | -| 骞垮窞娑︽瞾鏁欒偛绉戞妧鏈夐檺鍏徃 | https://www.ca163.net | <img src="https://foruda.gitee.com/images/1678976000893686992/1acbda54_1766278.png" width="400" height="200"> | -| 骞夸笢涔愬杽鏅鸿兘瑁呭鑲′唤鏈夐檺鍏徃 | https://www.china-leshan.com/ | <img src="https://foruda.gitee.com/images/1672299473733272899/2065e28c_1766278.png" width="400" height="200"> | -| 鏁板瓧姹熻タ绉戞妧鏈夐檺鍏徃 | https://www.digitaljx.com/ | <img src="https://foruda.gitee.com/images/1660527156328976445/灞忓箷鎴浘.png" width="300" height="200"> | -| 涓婃捣鏋侀攼鏄熺�氫紶鎰熸妧鏈湁闄愬叕鍙� | http://www.jrsensing.com/ | <img src="https://foruda.gitee.com/images/1669694597446652604/6997f99a_1766278.png" width="400" height="100"> | -| 鍖椾含鏁板奖浜掕仈绉戞妧鏈夐檺鍏徃 | http://www.dataflying.top/ | <img src="https://foruda.gitee.com/images/1686118090145603656/46dbe579_1766278.png" width="200" height="100"> | -| 骞垮窞鍒涙湇淇℃伅绉戞妧鏈夐檺鍏徃 | https://www.cfkjcloud.com | <img src="https://foruda.gitee.com/images/1678975960889135530/85fa904f_1766278.png" width="400" height="200"> | -| 鑼傚悕浜戞櫤绉戞妧鏈夐檺鍏徃 | http://www.winzkj.com | <img src="https://foruda.gitee.com/images/1678975967691323451/6343e6b7_1766278.png" width="400" height="200"> | -| 鎴愰兘鏃跺厜鏃呰抗绉戞妧鏈夐檺鍏徃 | https://www.ttmup.com/ | <img src="https://foruda.gitee.com/images/1678975973935607983/a0f8dce2_1766278.png" width="400" height="200"> | -| 鎴愰兘鐐奖鍏ㄦ伅绉戞妧鏈夐檺鍏徃 | http://xyqxgs.com | <img src="https://foruda.gitee.com/images/1678975979873588062/e34db081_1766278.png" width="400" height="200"> | -| 涓北鍘氬痉蹇�熸ā鍏锋湁闄愬叕鍙� | http://hordrt.com | <img src="https://foruda.gitee.com/images/1678975986213675141/7436dcb9_1766278.png" width="400" height="200"> | -| 娣卞湷甯傛繁鍗楀鏄熺鎶�鏈夐檺鍏徃 | http://www.szsnsx.com/ | <img src="https://foruda.gitee.com/images/1678975994674685698/a2c05a6e_1766278.png" width="400" height="200"> | -| 闄曡タ鍗庢亽鍐涘垱淇℃伅绉戞妧鏈夐檺鍏徃 | http://hhjc.cc | <img src="https://foruda.gitee.com/images/1678976006389002991/3786a1bc_1766278.png" width="400" height="200"> | -| 娌冲崡灏忕墰淇℃伅绉戞妧鏈夐檺鍏徃 | http://www.hnxn888.com/ | <img src="https://foruda.gitee.com/images/1681106560964010687/d8969ed2_1766278.png" width="200" height="100"> | -| 姝︽眽鍗庢櫤璁綉缁滀俊鎭妧鏈湁闄愬叕鍙� | http://www.xun188.com | <img src="https://foruda.gitee.com/images/1678975944577016382/93c4541d_1766278.png" width="200" height="100"> | -| 鏄撶◣淇℃伅鎶�鏈湁闄愬叕鍙� | https://www.etax.top | <img src="https://foruda.gitee.com/images/1678975950137235651/211a63c4_1766278.png" width="200" height="100"> | -| 骞胯タ鍗庢櫙鍩庡缓绛戣璁℃湁闄愬叕鍙� | http://www.hjcadc.com | <img src="https://foruda.gitee.com/images/1678975955216975234/e83c8c6e_1766278.png" width="200" height="100"> | -| 閾垱绉戞妧鏈夐檺鍏徃 | https://www.mcck.cn/ | <img src="https://foruda.gitee.com/images/1693967206668467582/8c234a6d_1766278.png" width="200" height="100"> | -| 瑗垮畨榧庢収缃戠粶绉戞妧鏈夐檺鍏徃 | | <img src="https://foruda.gitee.com/images/1721271356660437424/b85c5754_8776295.jpeg" width="400" height="200"> | -| 钀ュ彛榧庣憺缃戠粶绉戞妧鏈夐檺鍏徃 | | <img src="https://foruda.gitee.com/images/1715836865319520119/5dc34a5f_8693506.png" width="400" height="200"> | -| 鍗楁槍婕簱涔﹀簵鏈夐檺鍏徃 | | <img src="https://foruda.gitee.com/images/1687656369793887183/ce1a33f6_1766278.png" width="200" height="100"> | -| 骞胯タ鏂囬煬鏅鸿兘绉戞妧鏈夐檺鍏徃 | | <img src="https://foruda.gitee.com/images/1678976034543683491/8d8a1ebe_1766278.png" width="200" height="100"> | -| 璐靛窞浜跨憺绁虹鎶�鏈夐檺鍏徃 | | -| 璐靛窞鏂扮豢瑙嗙晫鐜繚绉戞妧鏈夐檺鍏徃 | | -| 婀栧崡鏅烘墠浼箰鏁版嵁绉戞妧鏈夐檺鍏徃 | | -| 寰峰窞鍟嗗偍瓒呭競鏈夐檺鍏徃 | | -| 鏇叉矁浜垮垎绉戞妧涓績 | | -| 鍗椾含鏉板害淇℃伅鎶�鏈湁闄愬叕鍙� | | -| 姝︽眽蹇嗙绉戞妧鏈夐檺鍏徃 | | -| 娴庡崡鍗冩儬缃戠粶绉戞妧鏈夐檺鍏徃 | | -| 姹熻嫃娉涜仈绉戞妧鏈夐檺鍏徃 | | -| 娌堥槼甯傛灉鍐荤綉缁滀俊鎭鎶�鏈夐檺璐d换鍏徃 | | -| 鐏靛姴绉戞妧鏈夐檺鍏徃 | | -| 浜夸笘杈鹃楗鐞嗭紙鍖椾含锛夋湁闄愬叕鍙� | | -| 娣卞湷甯傚嚡甯濈數瀛愬晢鍔℃湁闄愬叕鍙� | | -| 鎴愰兘鏁版櫤婧愯搲鍗$鎶�鏈夐檺鍏徃 | | -| 涓婃捣鎸淇℃伅绉戞妧鏈夐檺鍏徃 | | -| 閲嶅簡鍏浼氱鎶�鏈夐檺鍏徃 | | -| 鏃犻檺鍒涗紭锛堣タ瀹夛級绉戞妧鏈夐檺鍏徃 | | -| 鎯犳棌缃戠粶绉戞妧鍙戝睍鏈夐檺鍏徃 | | -| 绾虫.绉戞妧鏈夐檺鍏徃 | | - diff --git a/ruoyi-admin/src/main/resources/static/common/video.md b/ruoyi-admin/src/main/resources/static/common/video.md deleted file mode 100644 index 14fc275..0000000 --- a/ruoyi-admin/src/main/resources/static/common/video.md +++ /dev/null @@ -1,85 +0,0 @@ -# 瑙嗛鏁欑▼(鑱斿悎鍑哄搧) - -### 涓昏涓庡悗鏈熷壀杈�: `鎶撹洐甯坄 - -鎶撹洐甯堢畝浠�: B绔欑煡鍚峌P涓� B绔欓椤�: https://space.bilibili.com/520725002 - -### 鐭ヨ瘑鐐圭粺绛逛笌鍐呭瀹℃牳: `鐤媯鐨勭嫯瀛怢i` - -鐤媯鐨勭嫯瀛怢i绠�浠�: RuoYi-Vue-Plus 涓� RuoYi-Cloud-Plus 浣滆�� - -## 宸插畬缁擆煄夝煄夝煄� 浼樻儬浠�: 598(浠呴檺鍓�500鍚�) ~~鍘熶环: 698~~ - -**娉ㄦ剰: 瑙嗛閲囩敤 RuoYi-Vue-Plus 鐗堟湰 4.X 鍒嗘敮璁茶В!!! (鍐呭涓洪�氱敤鎶�鏈笌鐗堟湰鍏宠仈鎬т笉澶�)**<br> -**鍐呭涓烘鏋跺唴鎵�鐢ㄥ埌鐨勬妧鏈笌璁捐鍘熺悊(鎵撶牬涓嶇煡閬撱�佷笉浼氱敤銆佷笉鐭ュ簲鐢ㄥ満鏅瓑闂)** - -璇剧▼绠�浠�: https://www.bilibili.com/video/BV16j411D7BX/ -<br> -璇曠湅璇剧▼: https://www.bilibili.com/video/BV1uS411P7JD/ -<br> -璇曠湅璇剧▼: https://www.bilibili.com/video/BV1vLbNeuESn/ -<br> -璇曠湅璇剧▼: https://www.bilibili.com/video/BV1xV4y127KM/ -<br> -璇曠湅璇剧▼: https://www.bilibili.com/video/BV1W5v8eBEgs/ -<br> -璇剧▼鎬荤粨: https://www.bilibili.com/video/BV1734y1g7fk/ -<br> - -## 璐拱鏂瑰紡 - -**灏忔湰鐢熸剰 鐢ㄥ績褰曞埗 鎷掔粷鐮嶄环 宸叉洿鏂板埌 236 闆� 璇剧▼瀹岀粨**<br> -> 璇剧▼鍜ㄨ鎴栬喘涔拌鑱旂郴 浠锋牸598<br> -> QQ: 906670865 (鐤媯鐨勭嫯瀛怢i)<br> -> QQ: 770492966 (鎶撹洐甯�) - -## 璐拱鍓嶅父瑙侀棶棰樼瓟鐤� -> 闂1: 璐拱鍚庢槸鍚︽湁缇ゅ彲浠ヨВ绛旈棶棰�<br> -> 绛�: 璐拱鍚庢湁涓撳睘璇剧▼浠樿垂缇�(鍗冧汉澶х兢)璁插笀鍦ㄧ嚎绛旂枒 -> -> 闂2: 鏄惁鎸佺画鏇存柊 濡傛柊鐗堟湰鍔熻兘<br> -> 绛�: 璇剧▼鐩綍鍗充负鍏ㄩ儴璇剧▼鍐呭 浠ヨ绋嬬洰褰曚负鍑� 鏄庡勾澶ф浼氬嚭浜屾湡鏉ヨ鏂扮増鏈唴瀹�<br> -> 鍥犱负鎸佺画鏇存柊浼氬鑷村墠闈㈢殑鎶�鏈�佹棫 鏂拌喘涔扮殑浜烘棤娉曞強鏃跺涔犳柊鎶�鏈�<br> -> 鏁呰�岄噰鐢ㄥ垎鏈熷嚭璇剧▼鍒跺害 宸茬粡璐拱杩囩殑鑰佸鎴� 鍐嶆璐拱涓嬩竴娆′細缁欏姏搴﹂潪甯稿ぇ鐨勬姌鎵� -> -> 闂3: 鐩墠瑙嗛鏈叏閮ㄥ綍鍒跺畬鎴� 鍚庣画鏇存柊鏄惁浜屾鏀惰垂<br> -> 绛�: 瑙嗛鐩綍鍗充负鍏ㄩ儴瑙嗛鍐呭 涓�娆℃敹璐瑰悗缁洿鏂颁粛鐒跺彲鐪嬬洿鍒拌棰戝叏閮ㄦ洿鏂板畬鎴�(鏄庡勾鍑轰簩鏈熻绋嬩笉绠楀湪鍐�) -> -> 闂4: 瑙嗛濡備綍涓嬭浇濡備綍瑙傜湅<br> -> 绛�: 瑙嗛鏂囦欢宸插姞瀵� 閲囩敤涓撻棬鐨勬挱鏀惧櫒(鎾斁鍣ㄥ彧闄愬埗鎴浘褰曞睆绛変笉闄愬埗鍏朵粬杞欢浣跨敤) 鐢辩鐞嗗憳鍙戞斁鎺堟潈鐮佽鐪�<br> -> 鏀寔閫氳繃 鐧惧害浜� 鎴栬�� 闃块噷浜� 缃戠洏涓嬭浇瑙嗛璧勬簮 -> -> 闂5: 瑙嗛骞冲潎鏃堕暱鍜屾�绘椂闀垮ぇ姒傚涔�<br> -> 绛�: 瑙嗛姣忛泦鐭殑澶ф10鍒嗛挓浠ヤ笂 闀跨殑澶ф40涓垎閽熷乏鍙� 骞冲潎鏃堕暱20澶氬垎閽熸瘡闆�<br> -> 鐩墠宸茬粡褰曞埗浜�236闆嗘�绘椂闀夸负80澶氫釜灏忔椂 -> -> 闂6: 鏄惁鏈夎瑙� Cloud 鐗堟湰鐩稿叧鍐呭<br> -> 绛�: 瑙嗛涓昏璁茶В鍐呭涓烘鏋跺唴鎵�鐢ㄥ埌鐨勬妧鏈笌璁捐鍘熺悊 鏃犺浠�涔堢増鏈� 鍔熻兘鍜岃璁¢兘鏄竴鏍风殑<br> -> Cloud 鐗堟湰鍙槸澶氫簡 alibaba 鐨勫嚑涓粍浠跺畬鍏ㄥ彲浠绔欒嚜瀛� - -## 璇剧▼鐩綍 - - - - - - - - - - - - - - -## 瀛﹀憳瑙傚悗鎰� - -| | | -|---------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------| -|  |  | -|  |  | -|  |  | -|  |  | -|  |  | -|  |  | -|  |  | diff --git a/ruoyi-admin/src/main/resources/static/index.html b/ruoyi-admin/src/main/resources/static/index.html deleted file mode 100644 index 76e4432..0000000 --- a/ruoyi-admin/src/main/resources/static/index.html +++ /dev/null @@ -1,74 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head> - <meta charset="UTF-8"> - <title>plus-doc</title> - <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> - <meta name="description" content="Description"> - <meta name="viewport" - content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> - <!-- 璁剧疆娴忚鍣ㄥ浘鏍� --> - <link rel="icon" href="./static/image/favicon.ico" type="image/x-icon"/> - <link rel="shortcut icon" href="./static/image/favicon.ico" type="image/x-icon"/> - <meta charset="UTF-8"> - <!-- 榛樿涓婚 --> - <link rel="stylesheet" href="./static/css/vue.css"> -</head> -<body> -<div id="app"></div> -<script> - window.$docsify = { - // 椤圭洰鍚嶇О - name: 'ruoyi-ai', - // 浠撳簱鍦板潃锛岀偣鍑诲彸涓婅鐨凣ithub绔犻奔鐚ご鍍忎細璺宠浆鍒版鍦板潃 - repo: 'https://gitee.com/ruoyi-ai', - // 渚ц竟鏍忔敮鎸侊紝榛樿鍔犺浇鐨勬槸椤圭洰鏍圭洰褰曚笅鐨刜sidebar.md鏂囦欢 - loadSidebar: true, - // 瀵艰埅鏍忔敮鎸侊紝榛樿鍔犺浇鐨勬槸椤圭洰鏍圭洰褰曚笅鐨刜navbar.md鏂囦欢 - loadNavbar: true, - // 灏侀潰鏀寔锛岄粯璁ゅ姞杞界殑鏄」鐩牴鐩綍涓嬬殑_coverpage.md鏂囦欢 - coverpage: true, - // 鏈�澶ф敮鎸佹覆鏌撶殑鏍囬灞傜骇 - maxLevel: 5, - // 鑷畾涔変晶杈规爮鍚庨粯璁や笉浼氬啀鐢熸垚鐩綍锛岃缃敓鎴愮洰褰曠殑鏈�澶у眰绾э紙寤鸿閰嶇疆涓�2-4锛� - subMaxLevel: 4, - // 灏忓睆璁惧涓嬪悎骞跺鑸爮鍒颁晶杈规爮 - mergeNavbar: true, - // 椤佃剼鏀寔锛岄粯璁ゅ姞杞界殑鏄� _footer.md - loadFooter: true, - // 棣栭〉鍙睍绀哄皝闈紙榛樿涓篺alse锛屼笌README.md杩涜鎷兼帴锛� - onlyCover: true, - search: { - maxAge: 86400000,// 杩囨湡鏃堕棿锛屽崟浣嶆绉掞紝榛樿涓�澶� - paths: 'auto',// 娉ㄦ剰锛氫粎閫傜敤浜� paths: 'auto' 妯″紡 - placeholder: '馃憠馃憠馃憠鍦ㄨ繖閲屾悳绱㈠叧閿瓧馃憟馃憟馃憟', - noData: '鎵句笉鍒扮粨鏋�', - depth: 4, - hideOtherSidebarContent: false, - namespace: 'Docsify-Guide', - } - } -</script> -<!-- docsify鐨刯s渚濊禆 --> -<script src="./static/js/docsify.min.js"></script> -<!-- emoji琛ㄦ儏鏀寔 --> -<script src="./static/js/emoji.min.js"></script> -<!-- 鍥剧墖鏀惧ぇ缂╁皬鏀寔 --> -<script src="./static/js/zoom-image.min.js"></script> -<!-- 鎼滅储鍔熻兘鏀寔 --> -<script src="./static/js/search.min.js"></script> -<!--鍦ㄦ墍鏈夌殑浠g爜鍧椾笂娣诲姞涓�涓畝鍗曠殑Click to copy鎸夐挳鏉ュ厑璁哥敤鎴蜂粠浣犵殑鏂囨。涓交鏄撳湴澶嶅埗浠g爜--> -<script src="./static/js/docsify-copy-code.min.js"></script> - -<!-- 鍥炲埌椤堕儴 --> -<script src="./static/js/docsify-scroll-to-top.min.js"></script> -<!-- 鍒嗛〉瀵艰埅 --> -<script src="./static/js/docsify-pagination.min.js"></script> -<!-- 椤佃剼--> -<script src="./static/js/docsify-footer.min.js"></script> - -<!-- 浠g爜楂樹寒 --> -<script src="./static/js/prism-typescript.min.js"></script> -<script src="./static/js/prism-bash.min.js"></script> -</body> -</html> diff --git a/ruoyi-admin/src/main/resources/static/plus-ui/_sidebar.md b/ruoyi-admin/src/main/resources/static/plus-ui/_sidebar.md deleted file mode 100644 index 0019725..0000000 --- a/ruoyi-admin/src/main/resources/static/plus-ui/_sidebar.md +++ /dev/null @@ -1,22 +0,0 @@ -<!-- _sidebar.md --> -- **鐗瑰埆璧炲姪** -- [](http://ccflow.org/?frm=ryPlus) -- [](http://www.shuduokeji.com) -- [](https://www.jnpfsoft.com/index.html?from=plus-doc) - - -* **绠�浠�** - * [椤圭洰绠�浠媇(/plus-ui/home.md) -* **寮�鍙戞枃妗�** - * [閫氱敤鏂规硶](/plus-ui/devdoc/common_func.md) - * [寮�鍙戣鑼僝(/plus-ui/devdoc/dev_norm.md) - * [璇锋眰娴佺▼](/plus-ui/devdoc/request_process.md) - * [璺敱浣跨敤](/plus-ui/devdoc/router_use.md) - * [缁勪欢浣跨敤](/plus-ui/devdoc/component_use.md) - * [鏉冮檺浣跨敤](/plus-ui/devdoc/permissions_use.md) - * [椤电缂撳瓨](/plus-ui/devdoc/page_cache.md) - * [浣跨敤鍥炬爣](/plus-ui/devdoc/icon_use.md) - * [浣跨敤瀛楀吀](/plus-ui/devdoc/dict_use.md) - * [浣跨敤鍙傛暟](/plus-ui/devdoc/param_use.md) - * [寮傚父澶勭悊](/plus-ui/devdoc/exception_handling.md) - * [鍐呭澶嶅埗](/plus-ui/devdoc/content_copy.md) diff --git a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/common_func.md b/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/common_func.md deleted file mode 100644 index e359c03..0000000 --- a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/common_func.md +++ /dev/null @@ -1,234 +0,0 @@ -# 閫氱敤鏂规硶 -- - - - -### $tab瀵硅薄 -> `$tab`瀵硅薄鐢ㄤ簬鍋氶〉绛炬搷浣溿�佸埛鏂伴〉绛俱�佸叧闂〉绛俱�佹墦寮�椤电銆佷慨鏀归〉绛剧瓑锛屽畠瀹氫箟鍦╜plugins/tab.ts`鏂囦欢涓紝瀹冩湁濡備笅鏂规硶 -* 鎵撳紑椤电 - -```typescript -// 鎵撳紑椤电 -proxy?.$tab.openPage('/system/user'); -// 鎵撳紑椤电骞舵寚瀹氶〉绛炬爣棰� -proxy?.$tab.openPage('/system/user', '鐢ㄦ埛绠$悊'); -proxy?.$tab.openPage('/system/user', '鐢ㄦ埛绠$悊').then(() => { - // 鎵ц缁撴潫鐨勯�昏緫 -}) -``` - -* 淇敼椤电 - -```typescript -// 淇敼褰撳墠椤电 -const obj = Object.assign({}, route, { title: '鑷畾涔夋爣棰�' }); -proxy?.$tab.updatePage(obj); -``` -* 鍏抽棴椤电 - -```typescript -// 鍏抽棴褰撳墠 -proxy?.$tab.closePage(); -// 鍏抽棴鎸囧畾椤电 -const obj = { path: "/system/user", name: "User" }; -proxy?.$tab.closePage(obj); - -proxy?.$tab.closePage(obj).then(() => { - // 鎵ц缁撴潫鐨勯�昏緫 -}) -``` - -* 鍒锋柊椤电 - -```typescript -// 鍒锋柊褰撳墠椤电 -proxy?.$tab.refreshPage(); - -// 鍒锋柊鎸囧畾椤电 -const obj = { path: "/system/user", name: "User" }; -proxy?.$tab.refreshPage(obj); - -proxy?.$tab.refreshPage(obj).then(() => { - // 鎵ц缁撴潫鐨勯�昏緫 -}) -``` - -* 鍏抽棴鎵�鏈夐〉绛� - -```typescript -proxy?.$tab.closeAllPage(); - -proxy?.$tab.closeAllPage().then(() => { - // 鎵ц缁撴潫鐨勯�昏緫 -}) -``` - -* 鍏抽棴宸︿晶椤电 - -```typescript -// 鍏抽棴褰撳墠椤电鐨勫乏渚ч〉绛� -proxy?.$tab.closeLeftPage(); - -// 鍏抽棴鎸囧畾椤电鐨勫乏渚ч〉绛� -const obj = { path: "/system/user", name: "User" }; -proxy?.$tab.closeLeftPage(obj); - -proxy?.$tab.closeLeftPage(obj).then(() => { - // 鎵ц缁撴潫鐨勯�昏緫 -}) -``` - -* 鍏抽棴鍙充晶椤电 - -```typescript -// 鍏抽棴褰撳墠椤电鐨勫彸渚ч〉绛� -proxy?.$tab.closeRightPage(); - -// 鍏抽棴鎸囧畾椤电鐨勫彸渚ч〉绛� -const obj = { path: "/system/user", name: "User" }; -proxy?.$tab.closeRightPage(obj); - -proxy?.$tab.closeRightPage(obj).then(() => { - // 鎵ц缁撴潫鐨勯�昏緫 -}) -``` - -* 鍏抽棴鍏朵粬椤电 - -```typescript -proxy?.$tab.closeOtherPage(); - -const obj = { path: "/system/user", name: "User" }; -proxy?.$tab.closeOtherPage(obj); - -proxy?.$tab.closeOtherPage(obj).then(() => { - // 鎵ц缁撴潫鐨勯�昏緫 -}) -``` - -### $modal瀵硅薄 -> `$modal`瀵硅薄鐢ㄤ簬鍋氭秷鎭彁绀恒�侀�氱煡鎻愮ず銆佸璇濇鎻愰啋銆佷簩娆$‘璁ゃ�侀伄缃╃瓑锛屽畠瀹氫箟鍦╜plugins/modal.ts`鏂囦欢涓紝瀹冩湁濡備笅鏂规硶 - -* 鎻愪緵鎴愬姛銆佽鍛婂拰閿欒绛夊弽棣堜俊鎭� - -```typescript -proxy?.$modal.msg("榛樿鍙嶉"); -proxy?.$modal.msgError("閿欒鍙嶉"); -proxy?.$modal.msgSuccess("鎴愬姛鍙嶉"); -proxy?.$modal.msgWarning("璀﹀憡鍙嶉"); -``` - -* 鎻愪緵鎴愬姛銆佽鍛婂拰閿欒绛夋彁绀轰俊鎭� - -```typescript -proxy?.$modal.alert("榛樿鎻愮ず"); -proxy?.$modal.alertError("閿欒鎻愮ず"); -proxy?.$modal.alertSuccess("鎴愬姛鎻愮ず"); -proxy?.$modal.alertWarning("璀﹀憡鎻愮ず"); -``` - -* 鎻愪緵鎴愬姛銆佽鍛婂拰閿欒绛夐�氱煡淇℃伅 - -```typescript -proxy?.$modal.notify("榛樿閫氱煡"); -proxy?.$modal.notifyError("閿欒閫氱煡"); -proxy?.$modal.notifySuccess("鎴愬姛閫氱煡"); -proxy?.$modal.notifyWarning("璀﹀憡閫氱煡"); -``` - -* 鎻愪緵纭绐椾綋淇℃伅 - -```typescript -proxy?.$modal.confirm('纭淇℃伅').then(function() { - ... -}).then(() => { - ... -}).catch(() => {}); -``` - -* 鎻愪緵閬僵灞備俊鎭� - -```typescript -// 鎵撳紑閬僵灞� -proxy?.$modal.loading("姝e湪瀵煎嚭鏁版嵁锛岃绋嶅悗..."); - -// 鍏抽棴閬僵灞� -proxy?.$modal.closeLoading(); -``` - -### $auth瀵硅薄 -> `$auth`瀵硅薄鐢ㄤ簬楠岃瘉鐢ㄦ埛鏄惁鎷ユ湁鏌愶紙浜涳級鏉冮檺鎴栬鑹诧紝瀹冨畾涔夊湪`plugins/auth.ts`鏂囦欢涓紝瀹冩湁濡備笅鏂规硶 - -* 楠岃瘉鐢ㄦ埛鏉冮檺 - -```typescript -// 楠岃瘉鐢ㄦ埛鏄惁鍏峰鏌愭潈闄� -proxy?.$auth.hasPermi("system:user:add"); -// 楠岃瘉鐢ㄦ埛鏄惁鍚湁鎸囧畾鏉冮檺锛屽彧闇�鍖呭惈鍏朵腑涓�涓� -proxy?.$auth.hasPermiOr(["system:user:add", "system:user:update"]); -// 楠岃瘉鐢ㄦ埛鏄惁鍚湁鎸囧畾鏉冮檺锛屽繀椤诲叏閮ㄦ嫢鏈� -proxy?.$auth.hasPermiAnd(["system:user:add", "system:user:update"]); -``` - -* 楠岃瘉鐢ㄦ埛瑙掕壊 - -```typescript -// 楠岃瘉鐢ㄦ埛鏄惁鍏峰鏌愯鑹� -proxy?.$auth.hasRole("admin"); -// 楠岃瘉鐢ㄦ埛鏄惁鍚湁鎸囧畾瑙掕壊锛屽彧闇�鍖呭惈鍏朵腑涓�涓� -proxy?.$auth.hasRoleOr(["admin", "common"]); -// 楠岃瘉鐢ㄦ埛鏄惁鍚湁鎸囧畾瑙掕壊锛屽繀椤诲叏閮ㄦ嫢鏈� -proxy?.$auth.hasRoleAnd(["admin", "common"]); -``` - -### $cache瀵硅薄 -> `$cache`瀵硅薄鐢ㄤ簬澶勭悊缂撳瓨銆傛垜浠苟涓嶅缓璁偍鐩存帴浣跨敤`sessionStorage`鎴朻localStorage`(vue3鐗堟湰鎺ㄨ崘浣跨敤useStorage)锛屽洜涓洪」鐩殑缂撳瓨绛栫暐鍙兘鍙戠敓鍙樺寲锛岄�氳繃`$cache`瀵硅薄鍋氫竴灞傝皟鐢ㄤ唬鐞嗗垯鏄竴涓笉閿欑殑閫夋嫨銆俙$cache`鎻愪緵`session`鍜宍local`涓ょ绾у埆鐨勭紦瀛橈紝濡備笅锛� - -| 瀵硅薄鍚嶇О | 缂撳瓨绫诲瀷 | -| -------- | ---------------------------------- | -| session | 浼氳瘽绾х紦瀛橈紝閫氳繃sessionStorage瀹炵幇 | -| local | 鏈湴绾х紦瀛橈紝閫氳繃localStorage瀹炵幇 | - - -**绀轰緥** - -```typescript -// local 鏅�氬�� -proxy?.$cache.local.set('key', 'local value') -console.log(proxy?.$cache.local.get('key')) // 杈撳嚭'local value' - -// session 鏅�氬�� -proxy?.$cache.session.set('key', 'session value') -console.log(proxy?.$cache.session.get('key')) // 杈撳嚭'session value' - -// local JSON鍊� -proxy?.$cache.local.setJSON('jsonKey', { localProp: 1 }) -console.log(proxy?.$cache.local.getJSON('jsonKey')) // 杈撳嚭'{localProp: 1}' - -// session JSON鍊� -proxy?.$cache.session.setJSON('jsonKey', { sessionProp: 1 }) -console.log(proxy?.$cache.session.getJSON('jsonKey')) // 杈撳嚭'{sessionProp: 1}' - -// 鍒犻櫎鍊� -proxy?.$cache.local.remove('key') -proxy?.$cache.session.remove('key') -``` - -### $download瀵硅薄 - -> `$download`瀵硅薄鐢ㄤ簬鏂囦欢涓嬭浇锛屽畠瀹氫箟鍦╜plugins/download.ts`鏂囦欢涓紝瀹冩湁濡備笅鏂规硶 - -* 閫氳繃ossId浠庡瓨鍌ㄤ腑涓嬭浇鏂囦欢 - -``` typescript -// 榛樿涓嬭浇鏂规硶 -proxy?.$download.oss(ossId); -``` - -* 鏍规嵁璇锋眰鍦板潃涓嬭浇zip鍖� - -```typescript -const url = '/tool/gen/batchGenCode?tables=' + tableNames; -const name = 'ruoyi'; - -// 榛樿鏂规硶 -proxy?.$download.zip(url, name); -``` diff --git a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/component_use.md b/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/component_use.md deleted file mode 100644 index 18886db..0000000 --- a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/component_use.md +++ /dev/null @@ -1,55 +0,0 @@ -# 缁勪欢浣跨敤 -- - - - -vue 娉ㄥ唽缁勪欢鐨勪袱绉嶆柟寮� -鍦� `@/components` 涓嬪垱寤虹殑.vue鏂囦欢鑷姩涓哄叏灞�缁勪欢锛屽彲鐩存帴鍦ㄤ换鎰忎綅缃娇鐢ㄣ�� - -### 灞�閮ㄦ敞鍐� -鍦ㄥ搴旈〉浣跨敤`components`娉ㄥ唽缁勪欢銆� -```typescript -<script setup lang=ts> -import ComponentA from './ComponentA.vue' -</script> - -<template> - <ComponentA /> -</template> -``` - -### 鍏ㄥ眬娉ㄥ唽 -鎴戜滑鍙互浣跨敤[ Vue 搴旂敤瀹炰緥](https://cn.vuejs.org/guide/essentials/application.html)鐨� `.component()` 鏂规硶锛岃缁勪欢鍦ㄥ綋鍓� Vue 搴旂敤涓叏灞�鍙敤銆� -```typescript -import { createApp } from 'vue' - -const app = createApp({}) - -app.component( - // 娉ㄥ唽鐨勫悕瀛� - 'MyComponent', - // 缁勪欢鐨勫疄鐜� - { - /* ... */ - } -) -``` -濡傛灉浣跨敤鍗曟枃浠剁粍浠讹紝浣犲彲浠ユ敞鍐岃瀵煎叆鐨� `.vue` 鏂囦欢锛� -```typescript -import MyComponent from './App.vue' - -app.component('MyComponent', MyComponent) -``` -`.component()` 鏂规硶鍙互琚摼寮忚皟鐢細 -```typescript -app - .component('ComponentA', ComponentA) - .component('ComponentB', ComponentB) - .component('ComponentC', ComponentC) -``` -鍏ㄥ眬娉ㄥ唽鐨勭粍浠跺彲浠ュ湪姝ゅ簲鐢ㄧ殑浠绘剰缁勪欢鐨勬ā鏉夸腑浣跨敤锛� -```Typescript -// 杩欏湪褰撳墠搴旂敤鐨勪换鎰忕粍浠朵腑閮藉彲鐢� -<ComponentA/> -<ComponentB/> -<ComponentC/> -``` -鎵�鏈夌殑瀛愮粍浠朵篃鍙互浣跨敤鍏ㄥ眬娉ㄥ唽鐨勭粍浠讹紝杩欐剰鍛崇潃杩欎笁涓粍浠朵篃閮藉彲浠ュ湪褰兼鍐呴儴浣跨敤銆� \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/content_copy.md b/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/content_copy.md deleted file mode 100644 index a4150d7..0000000 --- a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/content_copy.md +++ /dev/null @@ -1,4 +0,0 @@ -# 鍐呭澶嶅埗 -- - - - -鏂囨。寤鸿涓� \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/dev_norm.md b/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/dev_norm.md deleted file mode 100644 index de714a1..0000000 --- a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/dev_norm.md +++ /dev/null @@ -1,16 +0,0 @@ -# 寮�鍙戣鑼� -- - - - -### 鏂板view -> 鍦╜@/views`鏂囦欢涓嬪垱寤哄搴旂殑鏂囦欢澶癸紝涓�鑸�т竴涓矾鐢卞搴斾竴涓枃浠讹紝 璇ユā鍧椾笅鐨勫姛鑳藉氨寤鸿鍦ㄦ湰鏂囦欢澶逛笅鍒涘缓涓�涓柊鏂囦欢澶癸紝鍚勪釜鍔熻兘妯″潡缁存姢鑷繁鐨刞utils`鎴朻components`缁勪欢銆� - -### 鏂板api -> 鍦╜@/api`鏂囦欢澶逛笅鍒涘缓鏈ā鍧楀搴旂殑api鏈嶅姟銆� -> 鍦╝pi鏈嶅姟鍚岀骇鍒涘缓`types.ts`绫诲瀷澹版槑鏂囦欢銆� - -### 鏂板缁勪欢 -> 鍦ㄥ叏灞�鐨刞@/components`鍐欎竴浜涘叏灞�鐨勭粍浠讹紝濡傚瘜鏂囨湰锛屽悇绉嶆悳绱㈢粍浠讹紝灏佽鐨勫垎椤电粍浠剁瓑绛夎兘琚叕鐢ㄧ殑缁勪欢銆� 姣忎釜椤甸潰鎴栬�呮ā鍧楃壒瀹氱殑涓氬姟缁勪欢鍒欎細鍐欏湪褰撳墠`@/views`涓嬮潰銆� -濡傦細`@/views/system/user/components/xxx.vue`銆傝繖鏍锋媶鍒嗗ぇ澶у噺杞讳簡缁存姢鎴愭湰銆� - -### 鏂板鏍峰紡 -> 椤甸潰鐨勬牱寮忓拰缁勪欢鏄竴涓亾鐞嗭紝鍏ㄥ眬鐨刞@/style`鏀剧疆涓�涓嬪叏灞�鍏敤鐨勬牱寮忥紝姣忎竴涓〉闈㈢殑鏍峰紡灏卞啓鍦ㄥ綋鍓� views涓嬮潰锛岃璁颁綇鍔犱笂scoped 灏卞彧浼氫綔鐢ㄥ湪褰撳墠缁勪欢鍐呬簡锛岄伩鍏嶉�犳垚鍏ㄥ眬鐨勬牱寮忔薄鏌撱�� \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/dict_use.md b/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/dict_use.md deleted file mode 100644 index 7c6f9ba..0000000 --- a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/dict_use.md +++ /dev/null @@ -1,4 +0,0 @@ -# 浣跨敤瀛楀吀 -- - - - -鏂囨。寤鸿涓� \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/exception_handling.md b/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/exception_handling.md deleted file mode 100644 index 8de87fa..0000000 --- a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/exception_handling.md +++ /dev/null @@ -1,4 +0,0 @@ -# 寮傚父澶勭悊 -- - - - -鏂囨。寤鸿涓� \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/icon_use.md b/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/icon_use.md deleted file mode 100644 index 923e66a..0000000 --- a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/icon_use.md +++ /dev/null @@ -1,4 +0,0 @@ -# 浣跨敤鍥炬爣 -- - - - -鏂囨。寤鸿涓� \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/page_cache.md b/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/page_cache.md deleted file mode 100644 index 0531b46..0000000 --- a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/page_cache.md +++ /dev/null @@ -1,4 +0,0 @@ -# 椤电缂撳瓨 -- - - - -鏂囨。寤鸿涓� \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/param_use.md b/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/param_use.md deleted file mode 100644 index 0cd9375..0000000 --- a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/param_use.md +++ /dev/null @@ -1,4 +0,0 @@ -# 浣跨敤鍙傛暟 -- - - - -鏂囨。寤鸿涓� \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/permissions_use.md b/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/permissions_use.md deleted file mode 100644 index e18642f..0000000 --- a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/permissions_use.md +++ /dev/null @@ -1,4 +0,0 @@ -# 鏉冮檺浣跨敤 -- - - - -鏂囨。寤鸿涓� \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/request_process.md b/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/request_process.md deleted file mode 100644 index 146f7a8..0000000 --- a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/request_process.md +++ /dev/null @@ -1,65 +0,0 @@ -# 璇锋眰娴佺▼ -- - - - -### 浜や簰娴佺▼ -涓�涓畬鏁寸殑鍓嶇UI浜や簰鍒版湇鍔″櫒绔鐞嗘祦绋嬫槸杩欐牱鐨勶細 - -1. UI 缁勪欢浜や簰鎿嶄綔锛� -2. 璋冪敤缁熶竴绠$悊鐨� api service 璇锋眰鍑芥暟锛� -3. 浣跨敤灏佽鐨� request.js 鍙戦�佽姹傦紱 -4. 鑾峰彇鏈嶅姟绔繑鍥烇紱 -5. 鏇存柊 data锛� - -涓轰簡鏂逛究绠$悊缁存姢锛岀粺涓�鐨勮姹傚鐞嗛兘鏀惧湪`@/src/api`鏂囦欢澶逛腑锛屽苟涓斾竴鑸寜鐓model`缁村害杩涜鎷嗗垎鏂囦欢锛屽锛� -``` -api/ - system/ - user/ - index.ts - types.ts - role/ - index.ts - types.ts - monitor/ - operlog/ - index.ts - types.ts - logininfor/ - index.ts - types.ts - ... -``` -> **鎻愮ず** -> 鍏朵腑`@/src/utils/request.ts`鏄熀浜� axios 鐨勫皝瑁咃紝渚夸簬缁熶竴澶勭悊 POST锛孏ET 绛夎姹傚弬鏁帮紝璇锋眰澶达紝浠ュ強閿欒鎻愮ず淇℃伅绛夈�� 瀹冨皝瑁呬簡鍏ㄥ眬request鎷︽埅鍣ㄣ�乺esponse鎷︽埅鍣ㄣ�佺粺涓�鐨勯敊璇鐞嗐�佺粺涓�鍋氫簡瓒呮椂澶勭悊銆乥aseURL璁剧疆绛夈�� - -### 璇锋眰绀轰緥 -```typescript -// @/api/system/user/index.ts -import request from '@/utils/request'; -import { AxiosPromise } from 'axios'; -import { UserQuery, UserVO } from './types'; - -export const listUser = (query: UserQuery): AxiosPromise<UserVO[]> => { - return request({ - url: '/system/user/list', - method: 'get', - params: query - }); -}; - -// @/views/system/user/index.vue -import api from '@/api/system/user'; -const res = await api.listUser(proxy?.addDateRange(queryParams.value, dateRange.value)); -``` -> **鎻愮ず** -> 濡傛灉鏈変笉鍚岀殑`baseURL`锛岀洿鎺ラ�氳繃瑕嗙洊鐨勬柟寮忥紝璁╁畠鍏锋湁涓嶅悓鐨刞baseURL`銆� -> ```typescript -> export const listUser = (query: UserQuery): AxiosPromise<UserVO[]> => { -> return request({ -> url: '/system/user/list', -> method: 'get', -> params: query, -> baseURL: process.env.BASE_API -> }); -> }; -> ``` diff --git a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/router_use.md b/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/router_use.md deleted file mode 100644 index b13812b..0000000 --- a/ruoyi-admin/src/main/resources/static/plus-ui/devdoc/router_use.md +++ /dev/null @@ -1,82 +0,0 @@ -# 璺敱浣跨敤 -- - - - -妗嗘灦鐨勬牳蹇冩槸閫氳繃璺敱鑷姩鐢熸垚瀵瑰簲瀵艰埅锛屾墍浠ラ櫎浜嗚矾鐢辩殑鍩烘湰閰嶇疆锛岃繕闇�瑕佷簡瑙f鏋舵彁渚涗簡鍝簺閰嶇疆椤广�� -### 璺敱閰嶇疆 -```typescript -// 褰撹缃� true 鐨勬椂鍊欒璺敱涓嶄細鍦ㄤ晶杈规爮鍑虹幇 濡�401锛宭ogin绛夐〉闈紝鎴栬�呭涓�浜涚紪杈戦〉闈�/edit/1 -hidden: true // (榛樿 false) - -//褰撹缃� noRedirect 鐨勬椂鍊欒璺敱鍦ㄩ潰鍖呭睉瀵艰埅涓笉鍙鐐瑰嚮 -redirect: 'noRedirect' - -// 褰撲綘涓�涓矾鐢变笅闈㈢殑 children 澹版槑鐨勮矾鐢卞ぇ浜�1涓椂锛岃嚜鍔ㄤ細鍙樻垚宓屽鐨勬ā寮�--濡傜粍浠堕〉闈� -// 鍙湁涓�涓椂锛屼細灏嗛偅涓瓙璺敱褰撳仛鏍硅矾鐢辨樉绀哄湪渚ц竟鏍�--濡傚紩瀵奸〉闈� -// 鑻ヤ綘鎯充笉绠¤矾鐢变笅闈㈢殑 children 澹版槑鐨勪釜鏁伴兘鏄剧ず浣犵殑鏍硅矾鐢� -// 浣犲彲浠ヨ缃� alwaysShow: true锛岃繖鏍峰畠灏变細蹇界暐涔嬪墠瀹氫箟鐨勮鍒欙紝涓�鐩存樉绀烘牴璺敱 -alwaysShow: true - -name: 'router-name' // 璁惧畾璺敱鐨勫悕瀛楋紝涓�瀹氳濉啓涓嶇劧浣跨敤<keep-alive>鏃朵細鍑虹幇鍚勭闂 -query: '{"id": 1, "name": "ry"}' // 璁块棶璺敱鐨勯粯璁や紶閫掑弬鏁� -roles: ['admin', 'common'] // 璁块棶璺敱鐨勮鑹叉潈闄� -permissions: ['a:a:a', 'b:b:b'] // 璁块棶璺敱鐨勮彍鍗曟潈闄� - -meta: { - title: 'title' // 璁剧疆璇ヨ矾鐢卞湪渚ц竟鏍忓拰闈㈠寘灞戜腑灞曠ず鐨勫悕瀛� - icon: 'svg-name' // 璁剧疆璇ヨ矾鐢辩殑鍥炬爣锛屾敮鎸� svg-class锛屼篃鏀寔 el-icon-x element-ui 鐨� icon - noCache: true // 濡傛灉璁剧疆涓簍rue锛屽垯涓嶄細琚� <keep-alive> 缂撳瓨(榛樿 false) - breadcrumb: false // 濡傛灉璁剧疆涓篺alse锛屽垯涓嶄細鍦╞readcrumb闈㈠寘灞戜腑鏄剧ず(榛樿 true) - affix: true // 濡傛灉璁剧疆涓簍rue锛屽畠鍒欎細鍥哄畾鍦╰ags-view涓�(榛樿 false) - - // 褰撹矾鐢辫缃簡璇ュ睘鎬э紝鍒欎細楂樹寒鐩稿搴旂殑渚ц竟鏍忋�� - // 杩欏湪鏌愪簺鍦烘櫙闈炲父鏈夌敤锛屾瘮濡傦細涓�涓枃绔犵殑鍒楄〃椤佃矾鐢变负锛�/article/list - // 鐐瑰嚮鏂囩珷杩涘叆鏂囩珷璇︽儏椤碉紝杩欐椂鍊欒矾鐢变负/article/1锛屼絾浣犳兂鍦ㄤ晶杈规爮楂樹寒鏂囩珷鍒楄〃鐨勮矾鐢憋紝灏卞彲浠ヨ繘琛屽涓嬭缃� - activeMenu: '/article/list' -} -``` -**鏅�氱ず渚�** -```json -{ - path: '/system/test', - component: Layout, - redirect: 'noRedirect', - hidden: false, - alwaysShow: true, - meta: { title: '绯荤粺绠$悊', icon : "system" }, - children: [{ - path: 'index', - component: (resolve) => require(['@/views/index'], resolve), - name: 'Test', - meta: { - title: '娴嬭瘯绠$悊', - icon: 'user' - } - }] -} -``` -**澶栭摼绀轰緥** -```json -{ - path: 'http://ruoyi.vip', - meta: { title: '鑻ヤ緷瀹樼綉', icon : "guide" } -} -``` -### 闈欐�佽矾鐢� -浠h〃閭d簺涓嶉渶瑕佸姩鎬佸垽鏂潈闄愮殑璺敱锛屽鐧诲綍椤点��404銆佺瓑閫氱敤椤甸潰锛屽湪`@/router/index.ts`閰嶇疆瀵瑰簲鐨勫叕鍏辫矾鐢便�� -### 鍔ㄦ�佽矾鐢� -浠h〃閭d簺闇�瑕佹牴鎹敤鎴峰姩鎬佸垽鏂潈闄愬苟閫氳繃addRoutes鍔ㄦ�佹坊鍔犵殑椤甸潰锛屽湪`@/store/modules/permission.ts`鍔犺浇鍚庣鎺ュ彛璺敱閰嶇疆銆� -> **鎻愮ず** -> * 鍔ㄦ�佽矾鐢卞彲浠ュ湪绯荤粺绠$悊-鑿滃崟绠$悊杩涜鏂板鍜屼慨鏀规搷浣滐紝鍓嶇鍔犺浇浼氳嚜鍔ㄨ姹傛帴鍙h幏鍙栬彍鍗曚俊鎭苟杞崲鎴愬墠绔搴旂殑璺敱銆� -> * 鍔ㄦ�佽矾鐢卞湪鐢熶骇鐜涓嬩細榛樿浣跨敤璺敱鎳掑姞杞斤紝瀹炵幇鏂瑰紡鍙傝�僱oadView鏂规硶鐨勫垽鏂�� -### 甯哥敤鏂规硶 -鎯宠璺宠浆鍒颁笉鍚岀殑椤甸潰锛屼娇鐢╜router.push`鏂规硶 -```Typescript -const router = useRouter(); -router.push({ path: "/system/user" }); -``` -璺宠浆椤甸潰骞惰缃姹傚弬鏁帮紝浣跨敤`query`灞炴�� -```Typescript -const router = useRouter(); -router.push({ path: "/system/user", query: {id: "1", name: "鑻ヤ緷"} }); -``` -鏇村浣跨敤鍙互鍙傝�僛vue-router](https://router.vuejs.org/zh/)瀹樻柟鏂囨。銆� \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/plus-ui/home.md b/ruoyi-admin/src/main/resources/static/plus-ui/home.md deleted file mode 100644 index b389b5c..0000000 --- a/ruoyi-admin/src/main/resources/static/plus-ui/home.md +++ /dev/null @@ -1,53 +0,0 @@ -# 椤圭洰绠�浠� - ---- - -## 骞冲彴绠�浠� - -- 鏈粨搴撲负鍓嶇鎶�鏈爤 [Vue3](https://v3.cn.vuejs.org) + [Element Plus](https://element-plus.org/zh-CN) + [Vite](https://cn.vitejs.dev) 鐗堟湰銆� -- 閰嶅鍚庣浠g爜浠撳簱鍦板潃 -- [RuoYi-Vue-Plus 5.X(娉ㄦ剰鐗堟湰鍙�)](https://gitee.com/dromara/RuoYi-Vue-Plus) -- [RuoYi-Cloud-Plus 2.X(娉ㄦ剰鐗堟湰鍙�)](https://gitee.com/dromara/RuoYi-Cloud-Plus) - -## 鍓嶇杩愯 - -```bash -# 鍏嬮殕椤圭洰 -git clone https://gitee.com/JavaLionLi/plus-ui.git - -# 瀹夎渚濊禆 -npm install --registry=https://registry.npmmirror.com - -# 鍚姩鏈嶅姟 -npm run dev - -# 鎺ㄨ崘浣跨敤yarn鎴杙npm鍖呯鐞嗗伐鍏� -# 鏋勫缓娴嬭瘯鐜 yarn build:stage -# 鏋勫缓鐢熶骇鐜 yarn build:prod -# 鍓嶇璁块棶鍦板潃 http://localhost:80 -``` - -## 鍚庣鏀归�� - -鍙傝�冨悗绔唬鐮佸唴 `ruoyi-gen/resources/vm/vue/v3/readme.txt` 璇存槑 - -## 鍐呯疆鍔熻兘 - -1. 绉熸埛绠$悊锛氶厤缃郴缁熺鎴凤紝鏀寔 SaaS 鍦烘櫙涓嬬殑澶氱鎴峰姛鑳姐�� -2. 鐢ㄦ埛绠$悊锛氱敤鎴锋槸绯荤粺鎿嶄綔鑰咃紝璇ュ姛鑳戒富瑕佸畬鎴愮郴缁熺敤鎴烽厤缃�� -3. 閮ㄩ棬绠$悊锛氶厤缃郴缁熺粍缁囨満鏋勶紙鍏徃銆侀儴闂ㄣ�佸皬缁勶級锛屾爲缁撴瀯灞曠幇鏀寔鏁版嵁鏉冮檺銆� -4. 宀椾綅绠$悊锛氶厤缃郴缁熺敤鎴锋墍灞炴媴浠昏亴鍔°�� -5. 鑿滃崟绠$悊锛氶厤缃郴缁熻彍鍗曪紝鎿嶄綔鏉冮檺锛屾寜閽潈闄愭爣璇嗙瓑銆� -6. 瑙掕壊绠$悊锛氳鑹茶彍鍗曟潈闄愬垎閰嶃�佽缃鑹叉寜鏈烘瀯杩涜鏁版嵁鑼冨洿鏉冮檺鍒掑垎銆� -7. 瀛楀吀绠$悊锛氬绯荤粺涓粡甯镐娇鐢ㄧ殑涓�浜涜緝涓哄浐瀹氱殑鏁版嵁杩涜缁存姢銆� -8. 鍙傛暟绠$悊锛氬绯荤粺鍔ㄦ�侀厤缃父鐢ㄥ弬鏁般�� -9. 閫氱煡鍏憡锛氱郴缁熼�氱煡鍏憡淇℃伅鍙戝竷缁存姢銆� -10. 鎿嶄綔鏃ュ織锛氱郴缁熸甯告搷浣滄棩蹇楄褰曞拰鏌ヨ锛涚郴缁熷紓甯镐俊鎭棩蹇楄褰曞拰鏌ヨ銆� -11. 鐧诲綍鏃ュ織锛氱郴缁熺櫥褰曟棩蹇楄褰曟煡璇㈠寘鍚櫥褰曞紓甯搞�� -12. 鍦ㄧ嚎鐢ㄦ埛锛氬綋鍓嶇郴缁熶腑娲昏穬鐢ㄦ埛鐘舵�佺洃鎺с�� -13. 瀹氭椂浠诲姟锛氬湪绾匡紙娣诲姞銆佷慨鏀广�佸垹闄�)浠诲姟璋冨害鍖呭惈鎵ц缁撴灉鏃ュ織銆� -14. 浠g爜鐢熸垚锛氬墠鍚庣浠g爜鐨勭敓鎴愶紙java銆乭tml銆亁ml銆乻ql锛夋敮鎸� CRUD 涓嬭浇 銆� -15. 绯荤粺鎺ュ彛锛氭牴鎹笟鍔′唬鐮佽嚜鍔ㄧ敓鎴愮浉鍏崇殑 api 鎺ュ彛鏂囨。銆� -16. 鏈嶅姟鐩戞帶锛氱洃瑙嗗綋鍓嶇郴缁� CPU銆佸唴瀛樸�佺鐩樸�佸爢鏍堢瓑鐩稿叧淇℃伅銆� -17. 缂撳瓨鐩戞帶锛氬绯荤粺鐨勭紦瀛樹俊鎭煡璇紝鍛戒护缁熻绛夈�� -18. 鍦ㄧ嚎鏋勫缓鍣細鎷栧姩琛ㄥ崟鍏冪礌鐢熸垚鐩稿簲鐨� HTML 浠g爜銆�(TS 鐗堟湰姝e湪寮�鍙戜腑銆�) diff --git a/ruoyi-admin/src/main/resources/static/questions/_sidebar.md b/ruoyi-admin/src/main/resources/static/questions/_sidebar.md deleted file mode 100644 index 2d74fb2..0000000 --- a/ruoyi-admin/src/main/resources/static/questions/_sidebar.md +++ /dev/null @@ -1,34 +0,0 @@ -<!-- _sidebar.md --> -- **鐗瑰埆璧炲姪** -- [](http://ccflow.org/?frm=ryPlus) -- [](http://www.shuduokeji.com) -- [](https://www.jnpfsoft.com/index.html?from=plus-doc) - - - -* **甯歌闂** - * [Lombok娉ㄨВ鐖嗙孩](/questions/lombok.md) - * [濡備綍浣跨敤Tomcat](/questions/use_tomcat.md) - * [濡備綍浣跨敤druid杩炴帴姹燷(/questions/use_druid.md) - * [vue涓巄oot鏁村悎閮ㄧ讲](/questions/deploy_vue.md) - * [瀵煎叆excel瀹炰綋绫讳负绌篯(/questions/import_excel.md) - * [濡備綍鍚屾椤圭洰鏇存柊](/questions/synchronous_update.md) - * [ParseException SQL瑙f瀽寮傚父](/questions/parse_exception.md) - * [swagger鐩稿叧闂](/questions/swagger.md) - * [瀹炰綋bean涓虹┖闂](/questions/bean_null.md) - * [Redis 鎶ラ敊 Permission denied](/questions/permission_denied.md) - * [鍏充簬HTTPS閰嶇疆](/questions/https_config.md) - * [鏀捐鎺ュ彛鎻愮ず璁よ瘉澶辫触](/questions/identify_fail.md) - * [鎵撳寘jar杩愯鎶ラ敊](/questions/jar_run_fail.md) - * [濡備綍鎸囧畾dubbo娉ㄥ唽ip](/questions/dubbo_ip.md) - * [Sentinel椤甸潰404闂](/questions/sentinel_404.md) - * [鏃犳硶璇诲彇nacos閰嶇疆](/questions/nacos_read_fail.md) - * [鎺ュ彛鏂囨。瀵规帴knife4j](/questions/kinfe4j.md) - * [涓嶆敮鎸丼T璇锋眰](/questions/st_not_support.md) - * [Only one connection receive subscriber allowed](/questions/only_one_subscriber.md) - * [nacos 鎶ラ敊 The Raft Group [naming_instance_metadata]](/questions/nacos_naming_instance_metadata.md) - * [unable to read meta-data for class xxx](/questions/read_metadata.md) - * [JCE cannot authenticate the provider BC](/questions/jce_cannot.md) - * [鍏充簬璇锋眰鍝嶅簲鍙傛暟瑙e瘑](/questions/api_encrypt.md) - * [鍏充簬鐧诲綍璋冭瘯姝ラ](/questions/login_step.md) - * [濡備綍瀵规帴鍥戒骇鏁版嵁搴揮(/questions/domestic_databases.md) \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/questions/api_encrypt.md b/ruoyi-admin/src/main/resources/static/questions/api_encrypt.md deleted file mode 100644 index 95b516d..0000000 --- a/ruoyi-admin/src/main/resources/static/questions/api_encrypt.md +++ /dev/null @@ -1,148 +0,0 @@ -# 鍏充簬璇锋眰鍝嶅簲鍙傛暟瑙e瘑 ---- -## 1锛氬墠绔姞瀵嗚姹� - - - -閫氳繃鎺у埗鍙拌幏鍙栧姞瀵嗙粨鏋滐細 - - - - - - -鍔犲瘑瀵嗛挜锛� - -``` -PAg/fZzpV/cz0T1fMUJMJo/LEZvwVLb4bZgtCHkbB6FQAJWlLm/RLKtQ5fOo1blMjAkY+9ryWhsAfCqoMPTU4w== -``` - -璇锋眰鍙傛暟鍔犲瘑缁撴灉锛� - -``` -F+Qxq6PzShcudDsUZHhp50lA67eBeTe63x5uGbdm/HJGgcDmjKncUk5VQm0evD8pz1sbmCbmmSl3X1D07K/qgHvP1YhjYSRBJf/M0GTfMkfOZqIkOtvfE5Z6fSFd8RYf6ji/qYxAmCiRmP/uADyJUAoBY1gMi5+zuvyHH3In/FyoFeD0rmJWvO4o4fn3n5GElHMWbP0O/HWPfgHFfg1F7bZQPuf4zAuDKQIqUG3jJTem3O97kAbTWw6lSSuYi1/8tV4cE9rq8SMSjx36/ZLSog== -``` - -### 瑙e瘑姝ラ - -1. 浣跨敤閰嶇疆鏂囦欢绉侀挜瀵瑰姞瀵嗗瘑閽ヨВ瀵� - -```java -// 鍙傛暟璇存槑锛� -// requestKey锛氬嵆璇锋眰鏍囧ご鍔犲瘑瀵嗛挜 -// privateKey锛歛pplication.yml 閰嶇疆鏂囦欢绉侀挜 -String decryptByRsa = EncryptUtils.decryptByRsa(requestKey, privateKey); -``` - -2. 瀵规楠や竴缁撴灉杩涜 Base64 瑙e瘑锛屽緱鍒� AES 鍔犲瘑瀵嗛挜 - -```java -String aesPassword = EncryptUtils.decryptByBase64(decryptByRsa); -``` - -3. 浣跨敤姝ラ浜屽緱鍒扮殑瀵嗛挜锛屽璇锋眰鍙傛暟杩涜瑙e瘑 - -```java -String decryptBody = EncryptUtils.decryptByAes(requestBody, aesPassword); -``` - -寰楀埌瑙e瘑璇锋眰鍙傛暟锛堝凡鏍煎紡鍖栵級锛� - -```json -{ - "tenantId": "000000", - "username": "admin", - "password": "admin123", - "rememberMe": false, - "uuid": "a39962b22c874f60872ef5db1cd811f5", - "code": "5", - "clientId": "e5cd7e4891bf95d1d19206ce24a7b32e", - "grantType": "password" -} -``` - -|鍙傛暟鍚峾璇存槑| -|---|---| -|tenantId| 绉熸埛id | -|username| 鐢ㄦ埛鍚� | -|password| 瀵嗙爜 | -|rememberMe| 璁颁綇瀵嗙爜 | -|uuid| - | -|code| 楠岃瘉鐮佺粨鏋� | -|clientId| 瀹㈡埛绔痠d锛堣〃 sys_client锛� | -|grantType| 鎺堟潈绫诲瀷锛堣〃 sys_client锛� | - -## 2锛氬悗绔姞瀵嗗搷搴� - -瀵硅姹備娇鐢ㄤ簡娉ㄨВ `@ApiEncrypt(response = true)` - - - -閫氳繃鎺у埗鍙拌幏鍙栧姞瀵嗙粨鏋滐細 - - - - - -鍔犲瘑瀵嗛挜锛� - -``` -MXnKYnXcXeFYWKZg8utuhDtbz54cPDcov11E1KT5l19/vMt37d4NhzzwBWnqug72SOgOK5URGaWPJSs9VdaP0Q== -``` - -鍝嶅簲鍙傛暟鍔犲瘑缁撴灉锛� - -``` -70 O63EMmwvbAyWPqDDmVOGTy+BOQnIVgKInMFNRtp8Zwzs8DEL20VgL2IslYrL8bc1u7lPhYNU/6 Q3iTYebm4EokwiG+styaT+LO3M9bUimggoAGpBTW8gCRF/34 kJaOITSRqYqYcXIJKn73+Gqn7jevyKUHyRXog/3 q/PlBdmUjNiB4gtxlOO/Vm+4 o+0 W4jcEe0xwwzV91+Ze3S6Eu/1 XN21g0iOsYT34emv/vhd9Hy3p5LfJlAHvn96x/c3MQBQUU32uM3Vkk3o6IpVHjJljE64gnGximSwB9vrmMA21xX+fq9HYioumknmDDbaY/JAKh32CDgn5M5hdaIklf08sU38r1IyvipySzrHX+ci9GmOZhP2ttCtoZ7SGvFFbNEuyojssxwxXEmJHAsG/OhIAeRXMUr3+dzDJ++XvvMuMgNJR0BMldNydFAjNOQEszgcVM1QEGwxfW5rElW8VxQaaqPyDATX+y2JrK1vdKxxdI/hF5dGpQMdU4FAEhHIftoIbD/FH4XcWJamZjJpbVtZvTkFYpbhiU7sz9MICSuKwaoSFJ8JGANc0bDdVoWpA8sXi7a27IM0pDzk9gD/FADcFGHXxPYUhENkXiUcnmg5LSdigiY4J6HrqEJdH6zNSwoGubcsXhiPdlB3V0DqcLAHFt+GYj5lcxZeqUAmixGVGCV7gSBWNiyo9/NnXcynA/EIlV3OZIvgzjWxiKzcVJ1HOKoXGEcg3Q54QNh5pCqEa7AtqVkKO7/Ffgg8nSEeCdJPzTV7zmr3n94Hn671OL8A== -``` - -### 瑙e瘑姝ラ - -1. 浣跨敤鍓嶇閰嶇疆鏂囦欢绉侀挜瀵瑰姞瀵嗗瘑閽ヨВ瀵� - -```java -// 鍙傛暟璇存槑锛� -// responseKey锛氬嵆鍝嶅簲鏍囧ご鍔犲瘑瀵嗛挜 -// privateKey锛氬墠绔� .env.development | .env.production 閰嶇疆鏂囦欢绉侀挜锛屾敞鎰忓拰鍚庣绉侀挜鍖哄垎 -String decryptByRsa = EncryptUtils.decryptByRsa(responseKey, privateKey); -``` - -2. 瀵规楠や竴缁撴灉杩涜 Base64 瑙e瘑锛屽緱鍒� AES 鍔犲瘑瀵嗛挜 - -```java -String aesPassword = EncryptUtils.decryptByBase64(decryptByRsa); -``` - -3. 浣跨敤姝ラ浜屽緱鍒扮殑瀵嗛挜锛屽鍝嶅簲鍙傛暟杩涜瑙e瘑 - -```java -String decryptBody = EncryptUtils.decryptByAes(responseBody, aesPassword); -``` - -寰楀埌瑙e瘑璇锋眰鍙傛暟锛堝凡鏍煎紡鍖栵級锛� - -```json -{ - "code": 200, - "msg": "鎿嶄綔鎴愬姛", - "data": { - "scope": null, - "openid": null, - "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJzeXNfdXNlcjoxIiwicm5TdHIiOiJjOVNWU1hRRVY4QVhFRkt4b2FrbndSSWxPczd4ajdRZCIsImNsaWVudGlkIjoiZTVjZDdlNDg5MWJmOTVkMWQxOTIwNmNlMjRhN2IzMmUiLCJ0ZW5hbnRJZCI6IjAwMDAwMCIsInVzZXJJZCI6MSwidXNlck5hbWUiOiJhZG1pbiIsImRlcHRJZCI6MTAzLCJkZXB0TmFtZSI6IueglOWPkemDqOmXqCJ9.YuaXPu6eTzJVkLyQC3ekzmPS_jXp50ykaIB2nWy11qM", - "refresh_token": null, - "expire_in": 604799, - "refresh_expire_in": null, - "client_id": "e5cd7e4891bf95d1d19206ce24a7b32e" - } -} -``` - -|鍙傛暟鍚峾璇存槑| -|---|---| -|scope| 浠ょ墝鏉冮檺 | -|openid| 鐢ㄦ埛 openid | -|access_token| 鎺堟潈浠ょ墝 | -|refresh_token| 鍒锋柊浠ょ墝 | -|expire_in| 鎺堟潈浠ょ墝 access_token 鐨勬湁鏁堟湡 | -|refresh_expire_in| 鍒锋柊浠ょ墝 refresh_token 鐨勬湁鏁堟湡 | -|clientId| 瀹㈡埛绔痠d锛堣〃 sys_client锛� | \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/questions/bean_null.md b/ruoyi-admin/src/main/resources/static/questions/bean_null.md deleted file mode 100644 index bf04048..0000000 --- a/ruoyi-admin/src/main/resources/static/questions/bean_null.md +++ /dev/null @@ -1,10 +0,0 @@ -# 瀹炰綋bean涓虹┖闂 -- - - -### 闂鎺掓煡 - -妫�鏌ユ槸鍚﹀瓨鍦� `閾惧紡璋冪敤` 娉ㄨВ `@Accessors(chain = true)` 鍒犻櫎鍗冲彲 - -### 鍘熷洜 -java 瑙勮寖 set 杩斿洖鍊间负 `void` 閾惧紡璋冪敤 set 杩斿洖鍊间负 `this`<br> -鏁呭鏁版鏋跺簳灞備娇鐢� jdk 宸ュ叿瀵艰嚧鎵句笉鍒� set 鏂规硶<br> -渚嬪: `easyexcel` `cglib` `mybatis` 绛� \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/questions/deploy_vue.md b/ruoyi-admin/src/main/resources/static/questions/deploy_vue.md deleted file mode 100644 index 348a168..0000000 --- a/ruoyi-admin/src/main/resources/static/questions/deploy_vue.md +++ /dev/null @@ -1,13 +0,0 @@ -# 鍏充簬vue涓巄oot鏁村悎閮ㄧ讲 -- - - -* [鍓嶇闈欐�佽祫婧愬浣曟暣鍚堝埌鍚庣璁块棶](https://doc.ruoyi.vip/ruoyi-vue/other/faq.html#鍓嶇闈欐�佽祫婧愬浣曟暣鍚堝埌鍚庣璁块棶) - -3.X 闇�鍦� `pom.xml` 澧炲姞璧勬簮杩囨护鎺掗櫎 - -```xml -<resource> - <directory>src/main/resources/椤甸潰鐩綍</directory> - <!-- 鍏抽棴杩囨护 --> - <filtering>false</filtering> -</resource> -``` diff --git a/ruoyi-admin/src/main/resources/static/questions/domestic_databases.md b/ruoyi-admin/src/main/resources/static/questions/domestic_databases.md deleted file mode 100644 index e79762b..0000000 --- a/ruoyi-admin/src/main/resources/static/questions/domestic_databases.md +++ /dev/null @@ -1,41 +0,0 @@ -# 濡備綍瀵规帴鍥戒骇鏁版嵁搴� - -> 1. 妗嗘灦閲囩敤 mybatis-plus 鍑犱箮鏀寔澶ч儴鍒嗗競闈笂鐨勬暟鎹簱涓旀鏋跺唴鍑犱箮娌℃湁sql璇彞瀛樺湪 -<br> -鎵�浠ヤ笉鐢ㄦ媴蹇冨吋瀹规�ч棶棰�(椤跺灏辨槸鏈変竴浜涘叧閿瓧浠�涔堢殑 瀵规帴寰堢畝鍗�) -<br> -> 2. 鍥戒骇鏁版嵁搴撳ぇ澶氶兘鍏煎涓绘祦涓夊ぇ鏁版嵁搴� mysql oracle postgresql -<br> -渚嬪 杈炬ⅵ鍏煎oracle 浜哄ぇ閲戜粨鍏煎mysql oceanbase鍏煎mysql 绛夌瓑 - -# 瀵规帴鏂瑰紡 - -### 杩欓噷鐢� `杈炬ⅵ` 鏁版嵁搴撲负渚� - -1.棣栧厛澧炲姞 jdbc渚濊禆鍖� `vue鐗堟湰鍦╮uoyi-admin妯″潡涓媊 `cloud鐗堟湰鍦╮uoyi-common-mybatis妯″潡涓媊 - - - -2.鍦ㄩ厤缃枃浠秠ml鍐呴厤缃暟鎹簱杩炴帴 - - - -3.sql鑴氭湰浣跨敤妗嗘灦鍐呰嚜甯︾殑sql鏂囦欢鏍规嵁鍏煎鐨勬暟鎹簱妯″紡 渚嬪 杈炬ⅵ鐢╫racle鐨剆ql鑴氭湰 - - - -4.鍦ㄤ唬鐮佺敓鎴愬櫒鍐� 澧炲姞瀵瑰簲鐨勬暟鎹簱鐢熸垚鍣ㄤ緷璧� 浠g爜鐢熸垚鍣ㄤ娇鐢� anyline 鏀寔鍑犵櫨绉嶆暟鎹簱鍙渶瑕佸鍔犲搴旂殑渚濊禆鍗冲彲 - - - -杩欐牱鍩烘湰灏卞畬鎴愪簡鎵�鏈夐渶瑕佸仛鐨勪簨鍙互灏濊瘯鍚姩椤圭洰浜� - -5.濡傛灉椤圭洰鍚垨鑰呰繍琛屽姩杩囩▼涓湁sql鎶ラ敊 涓嶈鎱屽熀鏈笂閮芥槸涓�浜涘叧閿瓧寮曡捣鐨� -<br> -渚嬪 杈炬ⅵ鍐呯殑`domain`灏辨槸鍏抽敭瀛� 鍦ㄦ垜浠殑`SysOssConfig`琛ㄥ唴浣跨敤`domain`杩涜鑷畾涔夌殑鍩熷悕瀛樺偍 -<br> -鎴戜滑鍙渶瑕佸湪`SysOssConfig`瀹炰綋绫荤殑`domain`灞炴�у鍔犱竴涓敞瑙e嵆鍙В鍐虫闂 -<br> -**娉ㄦ剰: 鍚勭鏁版嵁搴撳鐞嗗叧閿瓧鐨勬爣璇嗙涓嶄竴鏍锋敞鎰忔浛鎹�** - - diff --git a/ruoyi-admin/src/main/resources/static/questions/dubbo_ip.md b/ruoyi-admin/src/main/resources/static/questions/dubbo_ip.md deleted file mode 100644 index 43cb234..0000000 --- a/ruoyi-admin/src/main/resources/static/questions/dubbo_ip.md +++ /dev/null @@ -1,18 +0,0 @@ -# 濡備綍鎸囧畾dubbo娉ㄥ唽ip -- - - -## 閲嶇偣璇存槑 -浠ヤ笅鏂规硶鎸囧畾IP蹇呴』鏄湰鍦版湁缃戝崱鐨勮嚜宸卞彲浠ヨ闂殑IP 涓嶅彲浠ラ殢鎰忎贡鍐�<br> -(浜戞湇鍔″櫒鍏綉IP鏄病鏈夌綉鍗$殑) - -## 鍦╜nacos`鎸囧畾鍗忚IP鍦板潃(鍏ㄥ眬鐢熸晥) -```yml -dubbo: - protocol: - # 鎸囧畾dubbo鍗忚娉ㄥ唽ip - host: 192.168.0.100 -``` - -## docker鎸囧畾dubbo鐜鍙橀噺(鍗曟湇鍔$敓鏁�) - - - diff --git a/ruoyi-admin/src/main/resources/static/questions/https_config.md b/ruoyi-admin/src/main/resources/static/questions/https_config.md deleted file mode 100644 index e590729..0000000 --- a/ruoyi-admin/src/main/resources/static/questions/https_config.md +++ /dev/null @@ -1,27 +0,0 @@ -# 鍏充簬HTTPS閰嶇疆 -- - - -### 鍚庣 HTTPS 鏀归�� - -灏嗙敵璇风殑 `https` 璇佷功鏀剧疆鍒� `nginx` 瀵瑰簲鐩綍鍐�<br> -鏍规嵁妗嗘灦 `nginx https` 绀轰緥 鏇存敼鍚庣浠g悊涓� `https`<br> - - - -### 鐩戞帶涓績 涓� 浠诲姟璋冨害涓績 鏀归�� - -`鐩戞帶涓績` 涓� `浠诲姟璋冨害涓績` 灞炰簬绯荤粺绠℃帶鏈嶅姟<br> -搴斿湪鍐呯綉浣跨敤 涓嶅簲璇ユ毚婕忓埌澶栫綉 涔熸棤闇�閰嶇疆 `https` - -鏇存敼 `绯荤粺 -> 鑿滃崟绠$悊 -> 鐩戞帶涓績 涓� 浠诲姟璋冨害涓績` 鑿滃崟閰嶇疆<br> -灏嗗叾鏀逛负 `澶栭摼璁块棶` 璁块棶璺緞涓� **娉ㄦ剰: 濡傛灉鏄缃戜娇鐢� url闇�閰嶇疆涓� http://澶栫綉ip:绔彛** - - - - - -`nginx` 閰嶇疆 `鐙珛鐨勭鍙 杩涜鍙嶅悜浠g悊鍗冲彲璁块棶(浠g悊缂栧啓鏂瑰紡鍙傝�冨悗绔弽鍚戜唬鐞�) - -### Minio https 鏀归�� - -涓嬫柟閾炬帴鍖呭惈 minio+nginx 涓� minio鏈韩閰嶇疆https 涓ょ鏂规<br> -[缁堟瀬鐗坢inio閰嶇疆https鏁欑▼](https://blog.csdn.net/Michelle_Zhong/article/details/126484358) \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/questions/identify_fail.md b/ruoyi-admin/src/main/resources/static/questions/identify_fail.md deleted file mode 100644 index 4e25806..0000000 --- a/ruoyi-admin/src/main/resources/static/questions/identify_fail.md +++ /dev/null @@ -1,10 +0,0 @@ -# 鏀捐鎺ュ彛鎻愮ず璁よ瘉澶辫触 -- - - -## 鍙兘鐨勫師鍥� -鎺ュ彛鏀捐鍚庝笉闇�瑕乼oken鍗冲彲璁块棶<br> -浣嗘槸娌℃湁token涔熷氨鏃犳硶鑾峰彇鐢ㄦ埛淇℃伅涓庨壌鏉� - -## 瑙e喅鏂规 -鍒犻櫎鎺ュ彛涓婄殑閴存潈娉ㄨВ<br> -鍒犻櫎鎺ュ彛鍐呰幏鍙栫敤鎴蜂俊鎭姛鑳�<br> -鍒犻櫎鏁版嵁搴撳疄浣撶被 鑷姩娉ㄥ叆 `createBy` `updateBy` 鍥犱负浼氳幏鍙栫敤鎴锋暟鎹� \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/questions/import_excel.md b/ruoyi-admin/src/main/resources/static/questions/import_excel.md deleted file mode 100644 index 431863e..0000000 --- a/ruoyi-admin/src/main/resources/static/questions/import_excel.md +++ /dev/null @@ -1,4 +0,0 @@ -# 鍏充簬瀵煎叆excel瀹炰綋绫讳负绌� -- - - -* 绂佹鍦ㄥ鍏ュ疄浣撲娇鐢� `lombok` 閾惧紡璋冪敤娉ㄨВ `@Accessors(chain = true)` -* 浼氬鑷存壘涓嶅埌 `set` 鏂规硶鏃犳硶娉ㄥ叆鍐呭 \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/questions/jar_run_fail.md b/ruoyi-admin/src/main/resources/static/questions/jar_run_fail.md deleted file mode 100644 index cef9bcd..0000000 --- a/ruoyi-admin/src/main/resources/static/questions/jar_run_fail.md +++ /dev/null @@ -1,12 +0,0 @@ -# 鎵撳寘jar杩愯鎶ラ敊闂 -- - - - -**甯歌浜� windows 骞冲彴浠ュ懡浠ゆ柟寮忓惎鍔�** - -windows 骞冲彴榛樿缂栫爜涓� GBK 鎵�浠ヨ鍙栧埌鎵�鏈夌殑閰嶇疆閮芥槸涔辩爜 - -## 瑙e喅鏂规 - -闇�瑕佸湪鍛戒护澧炲姞 `-Dfile.encoding=utf-8` 鎸囧畾鏂囦欢缂栫爜 - -渚嬪: `java -Dfile.encoding=utf-8 -jar ruoyi-xxx.jar` \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/questions/jce_cannot.md b/ruoyi-admin/src/main/resources/static/questions/jce_cannot.md deleted file mode 100644 index a1baf9d..0000000 --- a/ruoyi-admin/src/main/resources/static/questions/jce_cannot.md +++ /dev/null @@ -1,3 +0,0 @@ -# 闂璇存槑 鐢变簬 OracleJDK 寮烘牎楠屽姞瀵嗚瘉涔﹀鑷� - -瑙e喅鏂规 绂佹浣跨敤 oraclejdk 鏇存崲涓哄叾浠栦緥濡� openjdk \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/questions/kinfe4j.md b/ruoyi-admin/src/main/resources/static/questions/kinfe4j.md deleted file mode 100644 index 5051a78..0000000 --- a/ruoyi-admin/src/main/resources/static/questions/kinfe4j.md +++ /dev/null @@ -1,66 +0,0 @@ -# 瀵规帴鍓嶅0鏄� - -缁忓父鏈夊皬浼欎即甯屾湜鍙互瀵规帴 knife4j - -閭d箞杩欓噷灏嗕粙缁嶅浣曚娇鐢� 妗嗘灦鐢熸垚鐨� openapi 瀵规帴 knife4j - -# 濡備綍瀵规帴 - -**閲嶇偣澹版槑: 鏈鏋剁敓鎴愭爣鍑唎penapi缁撴瀯 濡傚鎺ュ悗閬囧埌涓嶅ソ鐢ㄧ瓑闂 鐨嗕笌鏈鏋舵棤鍏�** - -knife4j 鏈韩鎻愪緵浜嗙嫭绔嬬殑鏂囨。涓棿浠� 鍙互闆舵垚鏈殑浠嬪叆 openapi - -鏂囨。鍦板潃: https://doc.xiaominfo.com/docs/middleware-sources - -**娉ㄦ剰: 姝ょ粍浠跺簲鍗曠嫭鎼炰竴涓猙oot椤圭洰 涓嶈寰�妗嗘灦閲屽仛浠讳綍浠g爜涓婄殑鏇存敼** - -浣跨敤鏂囨。鎻愪緵鐨� Cloud 妯″紡 瀵规帴鍜变滑妗嗘灦鐨� openapi 鍦板潃鍗冲彲瀹屾垚瀵规帴 - - - -vue鐗堟湰瀵规帴閰嶇疆濡備笅: - -```yml -knife4j: - enable-aggregation: true - cloud: - enable: true - routes: - - name: 婕旂ず妯″潡 - uri: localhost:8080 - location: /v3/api-docs/1.婕旂ず妯″潡 - - name: 绯荤粺妯″潡 - uri: localhost:8080 - location: /v3/api-docs/2.绯荤粺妯″潡 - - name: 浠g爜鐢熸垚妯″潡 - uri: localhost:8080 - location: /v3/api-docs/3.浠g爜鐢熸垚妯″潡 -``` - -cloud鐗堟湰瀵规帴閰嶇疆濡備笅: - -```yml -knife4j: - enable-aggregation: true - cloud: - enable: true - routes: - - name: 婕旂ず妯″潡 - uri: localhost:8080 - location: /demo/v3/api-docs - - name: 璁よ瘉鏈嶅姟 - uri: localhost:8080 - location: /auth/v3/api-docs - - name: 璧勬簮鏈嶅姟 - uri: localhost:8080 - location: /resource/v3/api-docs - - name: 绯荤粺鏈嶅姟 - uri: localhost:8080 - location: /system/v3/api-docs - - name: 鐩戞帶鏈嶅姟 - uri: localhost:8080 - location: /monitor/v3/api-docs - - name: 浠g爜鐢熸垚鏈嶅姟 - uri: localhost:8080 - location: /gen/v3/api-docs -``` \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/questions/login_step.md b/ruoyi-admin/src/main/resources/static/questions/login_step.md deleted file mode 100644 index c1d4fcc..0000000 --- a/ruoyi-admin/src/main/resources/static/questions/login_step.md +++ /dev/null @@ -1,69 +0,0 @@ -# 鍏充簬鐧诲綍璋冭瘯姝ラ - -## 1锛氬叧闂� api 鎺ュ彛鍔犲瘑 - -1. 淇敼鍚庣閰嶇疆鏂囦欢 `application.yml` - - - -2. 淇敼鍓嶇閰嶇疆鏂囦欢 `.env.development` | `.env.production` - - - -## 2锛氱櫥褰曞弬鏁� - - - -|鍙傛暟鍚峾璇存槑| -|---|---| -|tenantId| 绉熸埛id | -|username| 鐢ㄦ埛鍚� | -|password| 瀵嗙爜 | -|rememberMe| 璁颁綇瀵嗙爜 | -|uuid| - | -|code| 楠岃瘉鐮佺粨鏋� | -|clientId| 瀹㈡埛绔痠d锛堣〃 sys_client锛� | -|grantType| 鎺堟潈绫诲瀷锛堣〃 sys_client锛� | - -## 3锛氫娇鐢ㄦ帴鍙f枃妗h皟璇� - -### 3.1锛氫娇鐢ㄦ帴鍙f枃妗h姹� - -1. 閰嶇疆鎺ュ彛鏂囨。锛圼鍙傝�冩枃妗(/ruoyi-vue-plus/framework/association/doc)锛� -2. 璇锋眰鎺ュ彛 `http://localhost:8080/auth/login` - - - -### 3.2锛氫娇鐢� idea 璇锋眰 - - - - - - - -### 3.3锛氳幏鍙栭獙璇佺爜浠ュ強 uuid - -!> 楠岃瘉鐮佷互鍙� uuid 鑾峰彇鏂瑰紡锛� Redis | 鎺у埗鍙� - -鏂瑰紡涓�銆丷edis锛� - - - -> **濡傛灉娌℃湁楠岃瘉鐮佺浉鍏� key锛岃鏄庡凡缁忚繃鏈熻娓呯悊浜嗭紝鍘诲墠绔〉闈㈠埛鏂颁竴涓嬪嵆鍙��** - -鏂瑰紡浜屻�佹帶鍒跺彴锛� - - - -### 3.4锛氬叧闂獙璇佺爜 - -濡傛灉瀚岄獙璇佺爜澶夯鐑︼紝鍙互鍏抽棴锛屼慨鏀瑰悗绔厤缃枃浠� `application.yml` - - - - - -璇锋眰鍙傛暟锛� - - \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/questions/lombok.md b/ruoyi-admin/src/main/resources/static/questions/lombok.md deleted file mode 100644 index 4712515..0000000 --- a/ruoyi-admin/src/main/resources/static/questions/lombok.md +++ /dev/null @@ -1,4 +0,0 @@ -# 鍏充簬lombok娉ㄨВ鐖嗙孩 -- - - -* 宸茬煡 lombok 鎻掍欢涓� idea涓枃鎻掍欢 瀛樺湪鍏煎鎬ч棶棰� -* 绉婚櫎涓枃鎻掍欢鎴栨墜鍔ㄥ叧闂璱dea妫�鏌� \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/questions/nacos_naming_instance_metadata.md b/ruoyi-admin/src/main/resources/static/questions/nacos_naming_instance_metadata.md deleted file mode 100644 index ae35d93..0000000 --- a/ruoyi-admin/src/main/resources/static/questions/nacos_naming_instance_metadata.md +++ /dev/null @@ -1,35 +0,0 @@ -# nacos 鎶ラ敊 The Raft Group [naming_instance_metadata] -- - - -## Nacos 鏈嶅姟涓嬬嚎鎶ラ敊闂 - -闂鎻忚堪锛� - -Nacos 鏈嶅姟绠$悊 > 鏈嶅姟鍒楄〃 > 璇︽儏 > 涓嬬嚎 鎶ラ敊 - - - -鎶ラ敊璇︽儏锛� - -``` -caused: errCode: 500, errMsg: do metadata operation failed ;caused: com.alibaba.nacos.consistency.exception.ConsistencyException: The Raft Group [naming_instance_metadata] did not find the Leader node;caused: The Raft Group [naming_instance_metadata] did not find the Leader node; -``` - - - -瑙e喅鏂规锛� - -**鍒犻櫎 Nacos 鏍圭洰褰曚笅 data 鏂囦欢澶逛笅鐨� protocol 鏂囦欢澶�** - -锛堟帹鑽愪娇鐢ㄥ叏灞�鎼滅储杞欢鏌ヨ锛寃indows 鐜鏍圭洰褰曚竴鑸湪 C:\Users\鐢ㄦ埛鍚峔nacos锛� - - - -闂鍘熷洜锛� - -> Nacos 閲囩敤 raft 绠楁硶鏉ヨ绠� Leader锛屽苟涓斾細璁板綍涓婃鍚姩鐨勯泦缇ゅ湴鍧�锛屾墍浠ュ綋鎴戜滑鑷繁鐨勬湇鍔″櫒 IP 鏀瑰彉鏃�(缃戠粶鐜涓嶇ǔ瀹氾紝濡俉IFI锛� IP 鍦板潃涔熺粡甯稿彉鍖�)锛屽鑷� raft 璁板綍鐨勯泦缇ゅ湴鍧�澶辨晥锛屽鑷撮�� Leader 鍑虹幇闂銆� - - - -鍙傝�冪洰褰曪細 - -[瑙e喅鐤戦毦闂涔嬫湇鍔′笅绾挎姤锛歍he Raft Group naming_instance_metadata\] did not find the Leader node; - 鍢夌編绁ョ憺 - 鍗氬鍥� (cnblogs.com)](https://www.cnblogs.com/whl-jx911/p/16736625.html) \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/questions/nacos_read_fail.md b/ruoyi-admin/src/main/resources/static/questions/nacos_read_fail.md deleted file mode 100644 index f6cc36d..0000000 --- a/ruoyi-admin/src/main/resources/static/questions/nacos_read_fail.md +++ /dev/null @@ -1,15 +0,0 @@ -# 鏃犳硶璇诲彇nacos閰嶇疆 -- - - -### 妫�鏌� `group` 涓� `namespace` 鏄惁涓�鑷� - -濡傛灉鏈娇鐢ㄦ鏋惰嚜甯� `ry-config.sql` 鏂囦欢杩涜閰嶇疆 浼氬鑷� `namespace` 涓嶄竴鑷� 鏃犳硶鏌ヨ閰嶇疆 - -### 妫�鏌� `8848` `9848` `9849` 绔彛鏄惁寮�鍚彲鐢� - -### 妫�鏌ラ厤缃枃浠跺悕鏄惁涓�鑷� 渚嬪: "xxx" 涓� "xxx.yml" 鐨勫尯鍒� - -### 妫�鏌ユ槸鍚︽墜鍔ㄦ敼杩� `nacos` 鏁版嵁搴撴暟鎹� - -`nacos` 鏁版嵁琛ㄥ眰灞傚叧鑱� 涓嶈鑷綔鑱槑鎵嬪姩鏀规暟鎹簱 - -宸茬粡鏀硅繃鐨� 闇�瑕侀噸鏂板鍏� `ry-config.sql` 涔嬪悗鍦ㄩ〉闈㈣繘琛屾敼鏁版嵁鎿嶄綔 \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/questions/only_one_subscriber.md b/ruoyi-admin/src/main/resources/static/questions/only_one_subscriber.md deleted file mode 100644 index f8d690e..0000000 --- a/ruoyi-admin/src/main/resources/static/questions/only_one_subscriber.md +++ /dev/null @@ -1,11 +0,0 @@ -# Only one connection receive subscriber allowed -- - - -## 闂鍘熷洜 -**缁忓浜哄弽棣� 鍏卞悓鐐逛负鍏ㄩ兘鏄仛`灏忕▼搴忓紑鍙慲浣跨敤鐨刞uniapp`鍙戦�佺殑缃戠粶璇锋眰鑰屽嚭鐜拌繖绉嶉棶棰�** - -`uniapp` 閿欒璁剧疆 `Content-Type` 灏嗘墍鏈夎姹傜被鍨嬪叏閮借缃垚浜� `json` 瀵艰嚧涓嶈璇籦ody鐨勮姹備篃璇诲彇浜哹ody 鏈�缁堝鑷存姤閿� - -## 瑙e喅鏂规 - -鏂规1: 鍗囩骇 1.4.0 宸茬粡瀵硅繖绉嶄笉鍚堣鍙戠殑璇锋眰鍋氫簡鍏煎澶勭悊(琚揩)<br> -鏂规2: `uniapp` 鍐呯殑璇锋眰璁剧疆姝g‘鐨� `Content-Type` diff --git a/ruoyi-admin/src/main/resources/static/questions/parse_exception.md b/ruoyi-admin/src/main/resources/static/questions/parse_exception.md deleted file mode 100644 index 67a7a11..0000000 --- a/ruoyi-admin/src/main/resources/static/questions/parse_exception.md +++ /dev/null @@ -1,40 +0,0 @@ -# ParseException SQL瑙f瀽寮傚父 -- - - -## 寮傚父鍐呭 - -`net.sf.jsqlparser.parser.ParseException: Encountered unexpected token:` - - - -姝ゅ紓甯镐负 SQL 瑙f瀽寮傚父, 搴旀鏌� SQL 璇彞鍐呮槸鍚﹀寘鍚� SQL 鍏抽敭瀛� - -寮傚父閫氬父閮戒細鎻愪緵鍧愭爣 - - - -妫�鏌ユ姤閿� SQL 鐩稿叧鍧愭爣浣嶇疆 - - - -## 寮傚父鐢辨潵 -鐢� Mybatis-Plus 鎷︽埅鍣ㄨ繘琛� SQL 瑙f瀽瀵艰嚧<br> -甯歌鎷︽埅鍣ㄥ鑷撮棶棰� `TenantLineInnerInterceptor` `DataPermissionInterceptor` - -## 瑙e喅鏂规 - -> 灏嗗叧閿瓧澧炲姞鏍囪瘑绗﹀尯鍒紑 - -1.瀹炰綋绫诲瓧娈靛鐞�(浠ヤ笅浠呴檺浜巑ysql 鍏朵粬鏁版嵁搴撴柟娉曞悇涓嶇浉鍚�) - - - -2.鑷畾涔� SQL 鎴� XML 澶勭悊 - - - -3.Mapper鎺掗櫎 -> 鏌ョ湅鍏蜂綋浣跨敤浜嗗摢浜涙嫤鎴櫒瀵艰嚧闂 浣跨敤蹇界暐娉ㄨВ渚濇杩涜鎺掗櫎鍗冲彲 - - - - diff --git a/ruoyi-admin/src/main/resources/static/questions/permission_denied.md b/ruoyi-admin/src/main/resources/static/questions/permission_denied.md deleted file mode 100644 index 76d955d..0000000 --- a/ruoyi-admin/src/main/resources/static/questions/permission_denied.md +++ /dev/null @@ -1,15 +0,0 @@ -# Redis 鎶ラ敊 Permission denied -- - - -### 姝ゆ姤閿欎负鏃犳潈闄� - -闇�纭繚 redis 鏁版嵁瀛樺偍鏂囦欢澶瑰叿鏈夊啓鏉冮檺 - -```shell -chmod 777 /docker/redis/data -``` - -娌℃湁鍐欐潈闄愭棤娉曞鏁版嵁杩涜瀛樺偍 - -### 鍏充簬RDB鎶ラ敊 `/etc` 鏃犳潈闄愰棶棰� - -澧炲姞redis瀵嗙爜鏍¢獙 鏃犲瘑鐮佸鑷撮厤缃笉瀹夊叏 diff --git a/ruoyi-admin/src/main/resources/static/questions/read_metadata.md b/ruoyi-admin/src/main/resources/static/questions/read_metadata.md deleted file mode 100644 index b91165f..0000000 --- a/ruoyi-admin/src/main/resources/static/questions/read_metadata.md +++ /dev/null @@ -1,11 +0,0 @@ -# unable to read meta-data for class xxx -- - - -## 闂鍘熷洜 - -姝ら棶棰樼敱鏀瑰寘鍚嶅鑷存鏋跺唴缁勪欢 spring 鐨� spi 閰嶇疆鏂囦欢鍖呭悕琚敼涔卞 - -## 瑙e喅鏂规 - -鏇存缁勪欢鍖呬笅鐨� spring spi 閰嶇疆鏂囦欢鍐呯殑绫诲寘鍚� - - \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/questions/sentinel_404.md b/ruoyi-admin/src/main/resources/static/questions/sentinel_404.md deleted file mode 100644 index 7e51fb5..0000000 --- a/ruoyi-admin/src/main/resources/static/questions/sentinel_404.md +++ /dev/null @@ -1,8 +0,0 @@ -# Sentinel椤甸潰404闂 -- - - -## 鍘熷洜 -妫�鏌� `webapp` 鐩綍鏄惁涓鸿祫婧愮洰褰� 浣庣増鏈� `idea` 涓嶄細鑷姩瑙f瀽 -## 瑙e喅鏂规 -鎵嬪姩璁剧疆 `webapp` 涓鸿祫婧愮洰褰曞嵆鍙�<br> - - diff --git a/ruoyi-admin/src/main/resources/static/questions/st_not_support.md b/ruoyi-admin/src/main/resources/static/questions/st_not_support.md deleted file mode 100644 index a301280..0000000 --- a/ruoyi-admin/src/main/resources/static/questions/st_not_support.md +++ /dev/null @@ -1,11 +0,0 @@ -# 涓嶆敮鎸丼T璇锋眰 -- - - -## 闂鍘熷洜 -**缁忓浜哄弽棣� 鍏卞悓鐐逛负鍏ㄩ兘鏄仛`灏忕▼搴忓紑鍙慲浣跨敤鐨刞uniapp`鍙戦�佺殑缃戠粶璇锋眰鑰屽嚭鐜拌繖绉嶉棶棰�** - -`uniapp` 閿欒璁剧疆 `Content-Type` 灏嗘墍鏈夎姹傜被鍨嬪叏閮借缃垚浜� `json` 瀵艰嚧涓嶈璇籦ody鐨勮姹備篃璇诲彇浜哹ody 鏈�缁堝鑷存姤閿� - -## 瑙e喅鏂规 - -鏂规1: 鍗囩骇 1.4.0 宸茬粡瀵硅繖绉嶄笉鍚堣鍙戠殑璇锋眰鍋氫簡鍏煎澶勭悊(琚揩)<br> -鏂规2: `uniapp` 鍐呯殑璇锋眰璁剧疆姝g‘鐨� `Content-Type` \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/questions/swagger.md b/ruoyi-admin/src/main/resources/static/questions/swagger.md deleted file mode 100644 index 8b0a6e0..0000000 --- a/ruoyi-admin/src/main/resources/static/questions/swagger.md +++ /dev/null @@ -1,3 +0,0 @@ -# 妗嗘灦鍐呮病鏈変换浣晄wagger - -鎯充娇鐢ㄦ帴鍙f枃妗e姛鑳� 璇锋煡鐪嬫鏋舵帴鍙f枃妗h鏄� \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/questions/synchronous_update.md b/ruoyi-admin/src/main/resources/static/questions/synchronous_update.md deleted file mode 100644 index 70803f5..0000000 --- a/ruoyi-admin/src/main/resources/static/questions/synchronous_update.md +++ /dev/null @@ -1,3 +0,0 @@ -# 濡備綍鍚屾椤圭洰鏇存柊 -- - - -鍙傝�冩枃绔�: [鍏充簬濡備綍鍚屾鏇存柊寮�婧愰」鐩甝(https://blog.csdn.net/qq_31360283/article/details/118345795) \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/questions/use_druid.md b/ruoyi-admin/src/main/resources/static/questions/use_druid.md deleted file mode 100644 index 77f3f60..0000000 --- a/ruoyi-admin/src/main/resources/static/questions/use_druid.md +++ /dev/null @@ -1,20 +0,0 @@ -# 濡備綍浣跨敤druid杩炴帴姹� -- - - -## 涓轰綍绉婚櫎druid - -鎬ц兘浣庝笅 bug棰戝彂 鍐呭惈fastjson闂浼楀 鐩戞帶涓嶆敮鎸侀泦缇�(楦¤倠) 涓嶆敮鎸佷竴浜涢珮鐗堟湰鏁版嵁搴� 绀惧尯娲昏穬搴﹀啺鐐� - -### 鎬ц兘瀵规瘮鍥� - -### 鍖呭ぇ灏忓姣斿浘 - - - -## 涓轰綍浣跨敤hikari(涓枃: 鍏�) - -spring榛樿鑷甫 浠g爜閲忓皯缁撴瀯绠�鍗� 绋冲畾鍙潬 鎬ц兘绐佸嚭(鑷鐧惧害涓�鍫嗘祴璇�) - -## 鍙傝�冩彁浜よ褰曞弽鍚戞搷浣滃嵆鍙� - -https://gitee.com/dromara/RuoYi-Vue-Plus/commit/1f42bd3d22c104aaa2d780c20a555b5e467858bf <br> -https://gitee.com/dromara/RuoYi-Vue-Plus/commit/a63abbf268e4c0a60344f63b5cba828a1347e178 \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/questions/use_tomcat.md b/ruoyi-admin/src/main/resources/static/questions/use_tomcat.md deleted file mode 100644 index 113d239..0000000 --- a/ruoyi-admin/src/main/resources/static/questions/use_tomcat.md +++ /dev/null @@ -1,9 +0,0 @@ -# 鍏充簬濡備綍浣跨敤Tomcat -- - - -### 鏌ョ湅ruoyi-framework妯″潡鐨刾om.xml鏂囦欢,鏍规嵁娉ㄩ噴鏇存敼渚濊禆 - - - -### 鏌ョ湅ruoyi-admin妯″潡涓殑application.yml鏂囦欢,鏍规嵁娉ㄩ噴鏇存敼閰嶇疆 - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/_sidebar.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/_sidebar.md deleted file mode 100644 index 4580b86..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/_sidebar.md +++ /dev/null @@ -1,70 +0,0 @@ -<!-- _sidebar.md --> -- **鐗瑰埆璧炲姪** -- [](http://ccflow.org/?frm=ryPlus) -- [](http://www.shuduokeji.com) -- [](https://www.jnpfsoft.com/index.html?from=plus-doc) - - -* **绠�浠�** - * [椤圭洰绠�浠媇(/ruoyi-cloud-plus/home.md) - * [鏇存柊鏃ュ織](/ruoyi-cloud-plus/changlog.md) -* **蹇�熷紑濮�** - * [椤圭洰鍒濆鍖朷(/ruoyi-cloud-plus/quickstart/init.md) - * [1.X椤圭洰鍒濆鍖朷(/ruoyi-cloud-plus/quickstart/1.Xinit.md) - * [宸ヤ綔娴佸垵濮嬪寲](/ruoyi-cloud-plus/quickstart/worker_init.md) - * [idea鐜閰嶇疆](/ruoyi-cloud-plus/quickstart/idea_environment.md) - * [搴旂敤閮ㄧ讲](/ruoyi-cloud-plus/quickstart/deploy.md) - * [鎵╁睍椤圭洰](/ruoyi-cloud-plus/quickstart/extend_project.md) - * [鎼缓SnailJob璋冨害涓績](/ruoyi-cloud-plus/quickstart/snail_job_init.md) - * [(搴熷純)鎼缓PowerJob璋冨害涓績](/ruoyi-cloud-plus/quickstart/power_job_init.md) -* **妗嗘灦鍔熻兘** - * [椤圭洰缁撴瀯](/ruoyi-cloud-plus/framework/tree.md) - * [杞欢鏋舵瀯鍥綸(/ruoyi-cloud-plus/framework/architecture_diagram.md) - * 妗嗘灦鐩稿叧 - * [鍒涘缓鏂版湇鍔(/ruoyi-cloud-plus/framework/association/new_module.md) - * [淇敼鍖呭悕](/ruoyi-cloud-plus/framework/association/update_package_name.md) - * [鎺ュ彛鏂囨。](/ruoyi-cloud-plus/framework/association/doc.md) - * [淇敼搴旂敤璺緞](/ruoyi-cloud-plus/framework/association/update_url.md) - * [鍥介檯鍖朷(/ruoyi-cloud-plus/framework/association/i18n.md) - * [澶氬洟闃熷紑鍙慮(/ruoyi-cloud-plus/framework/association/collaboration.md) - * [鍐呯綉閴存潈](/ruoyi-cloud-plus/framework/association/inner_authentication.md) - * 鍩虹鍔熻兘 - * [绯荤粺鐢ㄦ埛鐩稿叧](/ruoyi-cloud-plus/framework/basic/user.md) - * [鏉冮檺鎺у埗](/ruoyi-cloud-plus/framework/basic/permissions_control.md) - * [瀵煎嚭鍔熻兘](/ruoyi-cloud-plus/framework/basic/export.md) - * [瀵煎叆鍔熻兘](/ruoyi-cloud-plus/framework/basic/import.md) - * [鍙傛暟鏍¢獙](/ruoyi-cloud-plus/framework/basic/param_check.md) - * [浠g爜鐢熸垚](/ruoyi-cloud-plus/framework/basic/code_generate.md) - * [鍒嗛〉鍔熻兘](/ruoyi-cloud-plus/framework/basic/page.md) - * [OSS鍔熻兘](/ruoyi-cloud-plus/framework/basic/oss.md) - * [鏁版嵁鏉冮檺](/ruoyi-cloud-plus/framework/basic/permissions.md) - * [缃戝叧璺敱涓庢斁琛宂(/ruoyi-cloud-plus/framework/basic/router_release.md) - * [澶氱鎴峰姛鑳絔(/ruoyi-cloud-plus/framework/basic/tenant.md) - * [绗笁鏂规巿鏉冨姛鑳絔(/ruoyi-cloud-plus/framework/basic/social.md) - * [瀹㈡埛绔鐞嗗姛鑳絔(/ruoyi-cloud-plus/framework/basic/client.md) - * 鎵╁睍鍔熻兘 - * [澶氭暟鎹簮](/ruoyi-cloud-plus/framework/extend/dynamic_datasource.md) - * [鐭俊妯″潡](/ruoyi-cloud-plus/framework/extend/sms.md) - * [閭欢鍔熻兘](/ruoyi-cloud-plus/framework/extend/mail.md) - * [闃查噸骞傜瓑](/ruoyi-cloud-plus/framework/extend/idempotent.md) - * [鏁版嵁鑴辨晱](/ruoyi-cloud-plus/framework/extend/sensitive.md) - * [API鍔犺В瀵哴(/ruoyi-cloud-plus/framework/extend/api_encrypt.md) - * [鏁版嵁鍔犺В瀵哴(/ruoyi-cloud-plus/framework/extend/encrypt.md) - * [缈昏瘧鍔熻兘](/ruoyi-cloud-plus/framework/extend/translation.md) - * [WebSocket鍔熻兘](/ruoyi-cloud-plus/framework/extend/websocket.md) - * 鍔熻兘璇存槑 - * [浜嬪姟鐩稿叧](/ruoyi-cloud-plus/framework/explain/transaction.md) - * [鍗曞厓娴嬭瘯](/ruoyi-cloud-plus/framework/explain/test.md) - * [涓婚敭浣跨敤璇存槑](/ruoyi-cloud-plus/framework/explain/key.md) - * [鍏充簬澶氳〃鏌ヨ](/ruoyi-cloud-plus/framework/explain/about_join.md) -* **鎵╁睍鍔熻兘** - * [ELK鎼缓](/ruoyi-cloud-plus/extend-function/elk.md) - * [ES鎼滅储寮曟搸](/ruoyi-cloud-plus/extend-function/es.md) - * [RabbitMQ鎼缓](/ruoyi-cloud-plus/extend-function/rabbitmq.md) - * [RocketMQ鎼缓](/ruoyi-cloud-plus/extend-function/rocketmq.md) - * [Kafka鎼缓](/ruoyi-cloud-plus/extend-function/kafka.md) - * [Nacos闆嗙兢鎼缓](/ruoyi-cloud-plus/extend-function/nacos.md) - * [SkyWalking鎼缓涓庨泦鎴怾(/ruoyi-cloud-plus/extend-function/skywalking.md) - * [Prometheus+Grafana鎼缓](/ruoyi-cloud-plus/extend-function/prometheus_grafana.md) - * [Sharding-Proxy鎼缓鍒嗗簱鍒嗚〃](/ruoyi-cloud-plus/extend-function/shardingproxy.md) - * [瀵规帴MaxKey鍗曠偣鐧诲綍](/ruoyi-cloud-plus/extend-function/maxkey.md) \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/changlog.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/changlog.md deleted file mode 100644 index 368844c..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/changlog.md +++ /dev/null @@ -1,1385 +0,0 @@ -# 鏇存柊鏃ュ織 -- - - - -## v2.2.1 - 2024-08-26 - -### 閲嶅ぇ鏀瑰姩 - -* 澧炲姞 ruoyi-common-sse 妯″潡 鏀寔SSE鎺ㄩ�� 姣攚s鏇磋交閲忔洿绋冲畾鐨勬帹閫� -* 澧炲姞 springboot snailjob 绛� actuator 璐﹀彿瀵嗙爜璁よ瘉 鏉滅粷鍐呭缃戜俊鎭硠婕忛棶棰� -* 澧炲姞 閲嶆瀯浠g爜鐢熸垚鍣� 闆嗘垚anyline寮�婧愭鏋� 鏀寔400+绉嶆暟鎹簱閫傞厤 - -### 渚濊禆鍗囩骇 - -* update springboot 3.2.6 => 3.2.9 -* update snailjob 1.0.1 => 1.1.2 -* update mapstruct-plus 1.4.3 => 1.4.4 -* update hutool 5.8.27 => 5.8.31 瑙e喅hutool涓嶅吋瀹筳akarta闂 -* update anyline 8.7.2-20240808 -* update sms4j 3.2.1 => 3.3.2 -* update redisson 3.31.0 => 3.34.1 -* update mapstruct-plus 1.3.6 => 1.4.3 -* update lombok 1.18.32 => 1.18.34 -* update easyexcel 3.3.4 => 4.0.2 -* update springdoc 2.5.0 => 2.6.0 -* update flowable 7.0.0 => 7.0.1 - -### cloud鍐呭鏇存柊 - -* update springcloud 2023.0.2 => 2023.0.3 -* update springcloud-alibaba 2023.0.1.0 => 2023.0.1.2 -* update redis 6.2.7 => 6.2.12 瑙e喅璁㈤槄key鎶ラ敊闂 -* update 浼樺寲 seata dockerfile 澧炲姞鐜鍙橀噺 -* update 浼樺寲 澧炲姞鏃ュ織澶勭悊鍣ㄩ『搴忚鏄� -* update 浼樺寲 浣跨敤 seata-server 瀹樻柟渚濊禆绠�鍖杝eata闆嗘垚鏂瑰紡 -* update 浼樺寲 灞忚斀 sentinel 蹇冭烦鏃ュ織 -* update 浼樺寲 dubbo鍏冩暟鎹敞鍐宺edis鏀寔timeout(娉ㄦ剰鏃堕棿蹇呴』浣跨敤鏁板瓧) -* update 浼樺寲 璋冩暣sentinel鏃ュ織绾у埆 灞忚斀蹇冭烦鏃ュ織 -* update 浼樺寲 sky-agent 榛樿寮�鍚嵆浣胯繛涓嶄笂鏈嶅姟绔篃璺熻釜閰嶇疆 (鏈変簺浜哄氨鐖辫繖涔堢敤) -* update 浼樺寲 kafka 鑷姩鍒涘缓 topic 閮ㄥ垎浜哄壇鏈暟涓嶅鎶ラ敊闂 -* add 澧炲姞 nacos sentinel snailjob 鍋ュ悍妫�鏌� actuator 璐﹀彿瀵嗙爜璁よ瘉 -* fix 淇 dubbo redis鍏冩暟鎹腑蹇� 鑾峰彇鐩戝惉鍣╪ull闂 -* fix 淇 nacos sentinel seata 涓嶉�傞厤鏂扮増undertow闂 鍏堟崲鍥瀟omcat -* fix 淇 渚濊禆婕忔礊 闄愬埗閮ㄥ垎渚濊禆鐗堟湰 -* fix 淇 鐢变簬alibaba sentinel 鍒濆鍖栨満鍒跺彉鏇村鑷寸殑鏃犳硶杩炴帴闂 -* fix 淇 dubbo 鏃ュ織杈撳嚭寮傚父鍒ゆ柇閿欒 -* remove 鍒犻櫎 kafka-streams 鎵�鏈変汉閮戒笉浼氱敤涔熶笉瀛︽�庝箞鐢� 鍒犻櫎浜嗕簨 - -### 鍔熻兘鏇存柊 - -* update 浼樺寲 鍘婚櫎鏃ュ織閮ㄧ讲鐜鍒ゆ柇 閫氳繃鏃ュ織绾у埆鎺у埗 -* update 浼樺寲 蹇界暐绉熸埛涓庡拷鐣ユ暟鎹潈闄愭敮鎸佸祵濂椾娇鐢�(鎰熻阿 amadeus5201) -* update 浼樺寲 绉熸埛鐩稿叧controller 澧炲姞绉熸埛寮�鍏抽厤缃帶鍒舵槸鍚︽敞鍐� -* update 浼樺寲 绉婚櫎 alibaba ttl 涓庣嚎绋嬫睜鎼厤鏈夐棶棰�(鍙紶閫掍絾鏃犳硶娓呴櫎涓庢洿鏂�) -* update 浼樺寲 涓汉涓績缂栬緫 蹇界暐鏁版嵁鏉冮檺 -* update 浼樺寲 鍏煎閮ㄥ垎鐢ㄦ埛涓嶆兂缁欑敤鎴峰垎閰嶈鑹蹭笌閮ㄩ棬鐨勫満鏅� -* update 浼樺寲 绉熸埛濂楅閲嶅悕鏍¢獙 -* update 浼樺寲 閮ㄩ棬涓嬪瓨鍦ㄥ矖浣嶄笉鍏佽鍒犻櫎 -* update 浼樺寲 瑙掕壊缂栬緫鐘舵�佹湭鏍¢獙闂 -* update 浼樺寲 鐢ㄦ埛鑴辨晱澧炲姞缂栬緫鏉冮檺鏍囪瘑绗� -* update 浼樺寲 浠g爜鐢熸垚鍣� 鑷姩閫傞厤oss缈昏瘧 -* update 浼樺寲 涓存椂鍗囩骇 undertow 鐗堟湰 瑙e喅铏氭嫙绾跨▼婧㈠嚭闂 -* update 浼樺寲 鏀寔閫氳繃閰嶇疆鏂囦欢鍏抽棴宸ヤ綔娴� -* update 浼樺寲 澧炲姞mybatis-plus濉厖鍣ㄥ厹搴曠瓥鐣� -* update 浼樺寲 TenantSpringCacheManager 澶勭悊閫昏緫 -* update 浼樺寲 瑙掕壊鏉冮檺鍒ゆ柇 -* update 浼樺寲 澧炲姞鍒犻櫎鏍囧織浣嶅父閲忎紭鍖栨煡璇唬鐮� -* update 浼樺寲 鐩戞帶浣跨敤鐙珛web渚濊禆 -* update 浼樺寲 鏇村鑴辨晱绛栫暐(鎰熻阿 hemengji) -* update 浼樺寲 璁剧疆nginx sse鐩稿叧浠g悊鍙傛暟 -* update 浼樺寲 璋冩暣榛樿鎺ㄩ�佷娇鐢⊿SE -* update 浼樺寲 Monitor鐩戞帶鏈嶅姟閫氱煡鍒嗙被鎵撳嵃(鎰熻阿 AprilWind) -* update 浼樺寲 闄愭祦娉ㄨВ 鍙堝啓key鍙堜笉鏄〃杈惧紡鐨勬儏鍐� -* update 浼樺寲 WorkflowUtils鏌ヨ鐢ㄦ埛淇℃伅鍙戦�佹秷鎭湭鏌ヨ閭欢鍜屾墜鏈哄彿(鎰熻阿 yanzy) -* update 浼樺寲 娉ㄩ噴鎺夊叾浠栨暟鎹簱 jdbc 渚濊禆 鐢辩敤鎴锋墜鍔ㄦ坊鍔� -* update 浼樺寲 oracle snailjob 鍏煎浣庣増鏈琽racle绱㈠紩鍚嶇О闀垮害闄愬埗 -* update 浼樺寲 鏁版嵁鏉冮檺鏀寔閫氳繃鑿滃崟鏍囪瘑绗﹁幏鍙栨暟鎹墍鏈夋潈 -* update 浼樺寲 鏁版嵁鏉冮檺鏀寔鑷畾涔夎繛鎺ョ -* update 浼樺寲 TestDemo 鍒犻櫎鍓嶆牎楠屾暟鎹潈闄� -* update 浼樺寲 鏇存崲docker闀滃儚搴曞眰绯荤粺 閬垮厤鏃犲瓧浣撴儏鍐� - -### 闂淇 - -* fix 淇 涓夋柟鐧诲綍鏋勫缓鍘婚櫎鏃犵敤浠g爜 -* fix 淇 澶氱嚎绋嬪鍚屼竴涓猻ession鍙戦�亀s娑堟伅鎶ラ敊闂 -* fix 淇 渚濊禆婕忔礊 闄愬埗閮ㄥ垎渚濊禆鐗堟湰 -* fix 淇 excel 鍩轰簬鍏朵粬瀛楁 鍚堝苟閿欒闂 -* fix 淇 涓�绾х紦瀛榢ey鏈尯鍒嗙鎴烽棶棰� -* fix 淇 id瀛楃涓叉牸寮忚浆鎹㈤敊璇棶棰� -* fix 淇 鐧诲嚭鏃犳硶姝g‘鍒犻櫎瀵瑰簲鐨勭鎴锋暟鎹棶棰� -* fix 淇 鐧诲綍閿欒閿佸畾涓嶅尯鍒嗙鎴烽棶棰� -* fix 淇 杞崲妯″瀷缂哄皯鍒嗙被瀛楁 -* fix 淇 鏉冮檺鏍囪瘑绗﹀鐞嗘湭璁剧疆鎴愬姛鐘舵�侀棶棰� -* fix 淇 鏃犳硶瀵煎叆 bpmn 绫诲瀷鏂囦欢闂 - -### 鍓嶇鏀瑰姩 - -* update element-plus 2.7.5 => 2.7.8 -* update vue 3.4.25 => 3.4.34 -* update vite 5.2.10 => 5.2.12 -* add 澧炲姞 浣跨敤 vueuse 缂栧啓 sse 鎺ㄩ�佸姛鑳� -* update 浼樺寲 浣跨敤鍖归厤妯″紡绠�鍖栭缂栬瘧閰嶇疆 -* update 浼樺寲 鏃堕棿鎼滅储缁勪欢缁熶竴 -* update 浼樺寲 oss 閰嶇疆鎸夐挳 浣跨敤ossConfig鏉冮檺鏍囪瘑绗︿笌oss鏉冮檺鍒嗙 -* update 浼樺寲 绫诲瀷鎶ラ敊闂 -* update 浼樺寲 鍒囨崲绉熸埛鍚庡埛鏂伴椤� -* update 浼樺寲 瀹炵幇琛ㄦ牸琛岄�変腑鍒囨崲 -* update 浼樺寲 浣跨敤 vueuse 閲嶆瀯 websocket 瀹炵幇 -* update 浼樺寲 浠g爜鐢熸垚鍣ㄧ紪杈戦〉绂佺敤缂撳瓨 闃叉鍚屾鍚庨〉闈笉鏇存柊闂 -* update 浼樺寲 璋冩暣榛樿鎺ㄩ�佷娇鐢⊿SE -* fix 淇 绉熸埛濂楅瀵煎嚭璺緞閿欒闂 -* fix 淇 鐧诲嚭鍚庨噸鏂扮櫥褰� sse鎺ㄩ�佹姤閿欓棶棰� - - -## v2.2.0 - 2024-07-09 - -### 閲嶅ぇ鏇存柊 - -* [閲嶅ぇ鏇存柊] 浣跨敤 caffeine 閲嶆瀯 PlusSaTokenDao 灞傚疄鐜� 鍑忓皯灏嗚繎90%鐨剅edis鏌ヨ鎻愰珮鎬ц兘 -* [閲嶅ぇ鏇存柊] 鏂板 PlusCacheWrapper 瑁呴グ鍣� 涓� SpringCache 澧炲姞鏈湴缂撳瓨鍑忓皯redis鏌ヨ鎻愰珮鎬ц兘 -* [閲嶅ぇ鏇存柊] 鍗囩骇 awsS3 鍒�2.X鐗堟湰 鏀寔寮傛涓庤嚜鍔ㄥ垎鐗囦笂浼犱笅杞�(鎰熻阿 AprilWind) -* [閲嶅ぇ鏇存柊] 鏂板 flowable 宸ヤ綔娴佸姛鑳�(鎰熻阿 May) -* [閲嶅ぇ鏇存柊] 鏂板 snailjob 璋冨害涓績 绉婚櫎 powerjob (鎶曡瘔鐨勪汉澶) (鎰熻阿 dhb52) -* [閲嶅ぇ鏇存柊] 閲嶆瀯 灏唖pring-cloud-stream鏀逛负鏅�氱殑mq渚濊禆鐢ㄦ硶(鎰熻阿 Xbhog) -* [閲嶅ぇ鏇存柊] 鏂板 ruoyi-common-bus 娑堟伅鎬荤嚎缁勪欢 鍩轰簬MQ璺ㄦ湇鍔℃姇閫掍簨浠舵秷鎭� - -### 渚濊禆鍗囩骇 - -* update springboot 3.1.7 => 3.2.6 鏀寔铏氭嫙绾跨▼ -* update springboot-admin 3.1.8 => 3.2.3 -* update springdoc 2.2.0 => 2.5.0 -* update redisson 3.24.3 => 3.29.0 鏀寔铏氭嫙绾跨▼ -* update hutool 5.8.22 => 5.8.26 -* update dynamic-ds 4.2.0 => 4.3.0 -* update mybatis-plus 3.5.4 => 3.5.7 淇涓巄oot浠g爜鍐茬獊闂 -* update lock4j 2.2.5 => 2.2.7 娑堥櫎鍚姩璀﹀憡 -* update sms4j 2.2.0 => 3.2.1 鏀寔鑷畾涔夐厤缃甼ey 鍙敤浜庡鍘傚晢澶氱鎴风瓑 -* update mapstruct-plus 1.3.5 => 1.3.6 -* update easyexcel 3.3.3 => 3.3.4 -* update lombok 1.18.30 => 1.18.32 -* update satoken 1.37.0 -> 1.38.0 -* update aws-oss 1.12.600 => 2.25.15 - -### 鍔熻兘鏇存柊 - -* update 浼樺寲 StreamUtils 鎶藉彇 findFirst findAny 鏂规硶 -* update 浼樺寲 鏇存柊浣跨敤 Spring 瀹樻柟鎺ㄨ崘 JDK -* update 浼樺寲 webscoket 閰嶇疆涓庡紓甯告嫤鎴� -* update 浼樺寲 isTenantAdmin 绌烘牎楠� -* update 浼樺寲 淇敼璺敱name鍛藉悕瑙勫垯(鎰熻阿 鐜插璐漞r) -* update 浼樺寲 澶ф暟鎹噺涓媕oin鍗¢】闂 浣跨敤瀛愭煡璇㈡彁楂樻�ц兘 -* update 浼樺寲 鐢ㄦ埛ID鏌ヨ瑙掕壊鍒楄〃(鎰熻阿 AprilWind) -* update 浼樺寲 鑾峰彇鐢ㄦ埛璐︽埛(鎰熻阿 AprilWind) -* update 浼樺寲 绉熸埛鍒楄〃鎺ュ彛 閬垮厤鐧诲綍涔嬪悗鍒楄〃琚煙鍚嶈繃婊� -* update 浼樺寲 涓夋柟鐧诲綍涓嶅悓鍩熷悕鑾峰彇涓嶅埌绉熸埛id闂 -* update 浼樺寲 鑾峰彇aop浠g悊鐨勬柟寮� 鍑忓皯涓庡叾浠栦娇鐢╝op鐨勫姛鑳藉啿绐佺殑姒傜巼 -* update 浼樺寲 涓存椂瑙e喅 spring 鍚姩鎶� warn 闂 -* update 浼樺寲 绉婚櫎琛ㄥ崟鏋勫缓鑿滃崟(娌℃湁鍙敤缁勪欢 鐢ㄥ涓嶅ぇ浠ュ悗鍐嶈�冭檻) -* update 浼樺寲 淇敼鐢ㄦ埛淇℃伅鎺ュ彛(鎰熻阿 AprilWind) -* update 浼樺寲 鍒囨崲鍔ㄦ�佺鎴� 榛樿绾跨▼鍐呭垏鎹�(濡傞渶鍏ㄥ眬 鎵嬪姩浼犲弬) -* update 浼樺寲 閫傞厤鏈�鏂板墠绔唬鐮佺敓鎴愭ā鏉� -* update 浼樺寲 浠g爜鐢熸垚 el-radio 鏍囩杩囨湡灞炴�� -* update 浼樺寲 鏂囦欢涓嬭浇(浣跨敤瀵规祦浼犻�� 闄嶄綆鍐呭瓨浣跨敤閲�)(鎰熻阿 绉嬭緸鏈瘨) -* update 浼樺寲 鍘婚櫎gc鏃ュ織鍙傛暟(鏈夐渶瑕佽嚜宸卞姞) -* update 浼樺寲 鎷嗗垎寮傚父澶勭悊鍣� -* update 浼樺寲 甯歌web寮傚父鐘舵�佺爜 -* update 浼樺寲 璁剧疆闈欐�佽祫婧愯矾寰勯槻姝㈡墍鏈夎姹傞兘鍙互璁块棶闈欐�佽祫婧� -* update 浼樺寲 浠g爜鐢熸垚琛ㄥ鍏� 鎺掗櫎宸ヤ綔娴佺浉鍏宠〃 -* update 浼樺寲 redis 瀵筁ong鍊肩殑瀛樺偍绫诲瀷涓嶅悓闂 -* update 浼樺寲 鍘婚櫎鍔犲瘑璇锋眰绫诲瀷闄愬埗 -* update 浼樺寲 mp澶氱鎴锋彃浠舵敞鍏ラ�昏緫 -* update 浼樺寲 绉婚櫎鍒犺〃璇彞 鐢ㄦ埛鑷澶勭悊 -* update 浼樺寲 RedisUtils 鏀寔蹇界暐绉熸埛 -* update 鏇存柊 ip鍦板潃 xdb鏂囦欢 -* update 浼樺寲 鏂板淇敼鑿滃崟鏉冮檺瀛楃鏍¢獙 -* update 浼樺寲 楠岃瘉鐮佽儗鏅壊鏀逛负娴呯伆鑹� -* update 浼樺寲 鏇存柊 mybatis 澶氬寘鎵弿閰嶇疆 -* update 浼樺寲 RateLimiter 娉ㄨВ浣跨敤浣撻獙(鎰熻阿 ly-chn) -* update 浼樺寲 GET 鏂规硶鍝嶅簲浣撴敮鎸佸姞瀵� -* update 浼樺寲 excel 鍗曞厓鏍煎悎骞跺彲浠ュ熀浜庢敞瑙i�夋嫨闇�瑕佷緷璧栧摢浜涘瓧娈�(鎰熻阿 鍙哥尗瀛�) -* update 浼樺寲 OssFactory 鑾峰彇瀹炰緥閿佹�ц兘(鎰熻阿 fanc) -* update 浼樺寲 鐧诲綍娑堟伅 鏀寔闆嗙兢鍙戦�� -* update 浼樺寲 鏁版嵁鏉冮檺 浣跨敤棰勬壂鎻弇apper娉ㄨВ鎻愬崌浠g爜鎬ц兘 -* update 浼樺寲 鏁版嵁鍔犲瘑 浣跨敤棰勬壂鎻忓疄浣撶被鎻愬崌浠g爜鎬ц兘(鎰熻阿 鑰侀┈) -* update 浼樺寲 Async 閽堝铏氭嫙绾跨▼閰嶇疆 涓庡叾浠栨敞鎰忎簨椤规敞閲� -* update 浼樺寲 妗嗘灦鏁翠綋sql鎻愰珮鏌ヨ鎬ц兘 -* update 浼樺寲 灏唒6spy閰嶇疆鏂囦欢缁熶竴鏀剧疆鍒� common-mybatis 鎻掍欢鍖呭唴 -* update 浼樺寲 浣跨敤缈昏瘧娉ㄨВ绠�鍖栫敤鎴锋煡璇� 璋冩暣鐢ㄦ埛鏌ヨ閫昏緫 - - -### 鏂板鍔熻兘 - -* add 鏂板 SMS寮傚父澶勭悊鍣�(鎰熻阿 AprilWind) -* add 鏂板 鍦ㄧ嚎璁惧绠$悊(涓汉涓績)(鎰熻阿 AprilWind) -* add 鏂板 宀椾綅缂栫爜涓庨儴闂ㄧ紪鐮� 骞跺皢宀椾綅鏀惧埌閮ㄩ棬涓�(鎰熻阿 绉嬭緸鏈瘨) -* add 鏂板 鍒嗗竷寮忛攣Lock4j寮傚父鎷︽埅(鎰熻阿 AprilWind) -* add 鏂板 BaseMapperPlus鎻愪緵涓�缁勫彲閫夋槸鍚︽姏鍑哄紓甯哥殑selectVoOne鏂规硶(鎰熻阿 绉嬭緸鏈瘨) -* add 鏂板 鐢ㄦ埛銆侀儴闂ㄣ�佽鑹层�佸矖浣� 涓嬫媺閫夋帴鍙d笌浠g爜瀹炵幇浼樺寲 -* add 鏂板 JustAuth 鏁村悎 TopIam 鍗曠偣鐧诲綍(鎰熻阿 椹搩钖ご) -* add 鏂板 StringUtils.isVirtual 鏂规硶 -* add 鏂板 姝e垯宸ュ叿绫� 瀛楃涓叉彁鍙� 瀛楃涓叉牎楠� - -### 闂淇 - -* fix 淇 isLogin 鏂规硶鎶涘紓甯告棤娉曟甯歌繑鍥炲�奸棶棰� -* fix 淇 spring璺緞瑙勫垯 瀵艰嚧 actuator 琚壒娈婃柟寮忚闂棶棰� -* fix 淇token鏃犳晥鏃跺叧闂瓀s(鎰熻阿 AprilWind) -* fix 淇 oss鏈娇鐢ㄧ鎴� 鎷兼帴绉熸埛id null闂 -* fix 淇 鐢ㄦ埛鏄电О淇敼鍚庢湭娓呴櫎瀵瑰簲缂撳瓨闂 -* fix 淇 鏂囦欢涓婁紶鍥剧墖棰勮闂 -* fix 淇 涓夋柟璐﹀彿鍙互琚悓涓�涓敤鎴峰娆$粦瀹氶棶棰� -* fix 淇 鍏煎redis5.0鍑虹幇鐨勯棶棰� -* fix 淇 瀛楀吀閿�煎彲閲嶅閰嶇疆闂 -* fix 淇 閮ㄥ垎娴忚鍣ㄦ棤娉曡幏鍙栧姞瀵嗗搷搴斿ご闂 -* fix 淇 鐢ㄦ埛鏈缃儴闂� 鐧诲綍鎶ラ敊闂 -* fix 淇 鍏ㄥ眬寮傚父澶勭悊鍣� 绌烘寚閽坣ull闂 -* fix 淇 excel 琛ㄨ揪寮忓瓧鍏� 涓嬫媺妗嗗鍑烘牸寮忛敊璇� -* fix 淇 InjectionMetaObjectHandler 宸插瓨鍦ㄦ暟鎹緷鏃т細鑾峰彇鐢ㄦ埛淇℃伅鎶ュ紓甯搁棶棰� -* fix 淇 鍏抽棴绉熸埛鍔熻兘 涓夋柟鐧诲綍鎶ラ敊闂 -* fix 淇 閮ㄩ棬鏍戞帓搴忛棶棰� -* fix 淇 CryptoFilter 浠g爜閫昏緫闂 - -### 鍓嶇鏀瑰姩 - -* update 鍗囩骇 element vite 鐗堟湰 鏈�浣巒odejs鐗堟湰鎻愬崌鍒�18.18.0 -* update 浼樺寲 鏇存敼瀹㈡埛绔姸鎬佹帴鍙� 浣跨敤clientId浼犲弬 -* update 浼樺寲 ws寮�鍏虫敼涓哄父寮�(vite5淇浜嗗穿婧僢ug) -* update 浼樺寲 绉婚櫎cjs -* update 浼樺寲 瀵筕olar鏀寔 -* update 浼樺寲 瀵屾枃鏈粍浠讹紝淇涓や釜缁勪欢涓婁紶鍥剧墖浣嶇疆閿欎贡闂 -* update 浼樺寲 request璇锋眰绫诲垽鏂姹傚ご鏂瑰紡 -* update 浼樺寲 瀵嗙爜鏍¢獙绛栫暐澧炲姞闈炴硶瀛楃闄愬埗 -* update 浼樺寲 鏀寔鍏ㄥ眬寮�鍚垨鍏抽棴鎺ュ彛鍔犲瘑鍔熻兘 -* update 浼樺寲 鏆楅粦妯″紡锛屽鍔爒xe鐨勬殫榛戞ā寮� -* update 浼樺寲 棣栭〉鎵撳紑topNav涓嶅睍寮�鑿滃崟闂 -* update 浼樺寲 el-select 涓� el-input 鍏ㄥ眬鏍峰紡 -* update 浼樺寲 璺熷瘑鐮佺浉鍏崇殑榛樿鍓嶇鍏抽棴闃查噸鍔熻兘 -* add 鏂板 绀句氦鐧诲綍鏁村悎 TopIam -* add 鏂板 鍥剧墖涓婁紶缁勪欢澧炲姞鍘嬬缉鍔熻兘鏀寔锛屽彲鑷寮�鍏� -* add 鏂板 vxe-table渚濊禆鏀寔 -* add 鏂板 鍏ㄥ眬鐢ㄦ埛閫夋嫨缁勪欢 -* add 鏂板 宸ヤ綔娴佺浉鍏抽〉闈笌缁勪欢 -* add 鏂板 浣跨敤bpmnjs娴佺▼棰勮 -* add 鏂板 鍦ㄧ嚎鐧诲綍璁惧绠$悊(鎰熻阿 AprilWind) -* add 鏂板 鐢ㄦ埛閫夋嫨瑙掕壊鏃� 鍙悳绱㈠姛鑳�(鎰熻阿 杩芥ⅵ绋昏崏浜篖i) -* fix 淇 鐧诲綍澶辨晥锛岄噸鏂扮櫥褰曚涪澶卞弬鏁伴棶棰�(鎰熻阿 鐖卞畤闃�) -* fix 淇 websocket 闈瀒ndex椤甸潰鍒锋柊鏃犳硶閲嶈繛闂 -* fix 淇 鍏ㄥ眬灞炴�ф壘涓嶅埌鐨勯棶棰�(鎰熻阿 ahaos) -* fix 淇 vue 绫诲瀷璇嗗埆闂 -* fix 淇 瀵屾枃鏈紪杈戝櫒 鍗曢〉闈㈠瀹炰緥鍥剧墖娣蜂贡闂 -* fix 淇 i18n鏃犳劅鍒锋柊闂 -* fix 淇 鏂囦欢棰勮澶у啓鍚庣紑涓嶅睍绀虹殑闂(鎰熻阿 鍖楁ˉ) -* fix 淇 闈㈡澘鍥犱负min width鍘熷洜鏀剁缉涓嶅叏 -* fix 淇 绉诲姩绔笅 鏃犳硶灞曞紑鑿滃崟闂 -* fix 淇 鑿滃崟鎼滅储涓嬫柟鍑虹幇鐧借壊鍖哄煙 -* fix 淇 el-tag鏍囩绫诲瀷涓嶄竴鑷撮棶棰� -* fix 淇 瑙掕壊蹇呭~*鍙� - -### 寰湇鍔′慨鏀� - -* update springcloud 2022.0.4 => 2023.0.2 -* update springcloud-alibaba 2022.0.0.0 => 2023.0.1.0 -* update dubbo 3.2.7 => 3.2.14 -* update easy-es 2.0.0-beta4 => 2.0.0 姝e紡鐗� -* update nacos 2.2.1 => 2.3.2 榛樿寮�鍚痭acos鏈嶅姟绔巿鏉冭璇� (鎰熻阿 OldDriver9527) -* update rocketmq 4.9.4 => 5.2.0 docker闀滃儚鍗囩骇 -* update kafka 3.2.0 => 3.6.2 docker闀滃儚鍗囩骇 -* update rabbitmq 3.10.6 => 3.13.3 docker闀滃儚鍗囩骇 -* update sentinel 1.8.6 => 1.8.8 -* update skywalking 9.3.0 => 9.7.0 -* update skywalking-agent 8.16.0 => 9.2.0 -* update 浼樺寲 dubbo 浣跨敤 redis 浣滀负鍏冩暟鎹腑蹇冪鐞� 鏀寔杩囨湡鏃堕棿 閬垮厤杩囨湡鏁版嵁鍫嗙Н 瑙f斁nacos瀛樺偍绌洪棿 -* update 浼樺寲 璋冩暣閰嶇疆鏂囦欢璇硶 -* update 浼樺寲 浣跨敤spring宸ュ叿鑷畾涔塪ubbo ip鑾峰彇鏂规硶(閽堝澶氱綉鍗p鑾峰彇涓嶆纭棶棰�) -* update 浼樺寲 common-dubbo 鍒犻櫎鏃犵敤渚濊禆 -* update 浼樺寲 鍘婚櫎閲嶅鐨勬壂鎻忓櫒 @EnableDubbo 浼氳嚜琛屾壂鎻忓寘 -* update 浼樺寲 鍔犲瘑缁勪欢 mp渚濊禆鏀逛负鍙�� -* update 浼樺寲 mybatis渚濊禆璁剧疆涓哄彲閫変緷璧� 閬垮厤鍑虹幇涓嶅簲璇ユ敞鍏ョ殑鎯呭喌 -* fix 淇 sentinel-dashboard鐨刾om寮曞叆logaback鍐茬獊闂 -* fix 淇 nacos 涓嶅吋瀹� logback 1.4 鏂扮増鏈棶棰� -* fix 淇 寮�鍚暟鎹簱鍔犲瘑 auth鏈嶅姟鎶ラ敊闂 -* fix 淇 gateway sentinel 闄愭祦鎶ラ敊闂(涓存椂鏂规) https://github.com/alibaba/Sentinel/issues/3298 - - -## v2.1.2 - 2023-12-22 - -### 渚濊禆鍗囩骇 - -* update springboot 3.1.5 => 3.1.7 -* update springboot 2.7.17 => 2.7.18(鎵╁睍鏈嶅姟鍗囩骇鍒癰oot2鏈�缁堢増鏈�) -* update mybatis-boot 3.0.2 => 3.0.3 浼樺寲渚濊禆浼犻�� -* update powerjob 4.3.3 => 4.3.6 -* update easyexcel 3.3.2 => 3.3.3 -* update transmittable-thread-local 2.14.2 => 2.14.4 -* update justauth 1.16.5 => 1.16.6 -* update redisson 3.24.1 => 3.24.3 淇璁㈤槄閲嶅惎杩炴帴瓒呮椂闂 -* update easy-es 1.1.1 => 2.0.0-beta4 - -### 鍔熻兘鏇存柊 - -* update 浼樺寲 oss 杩滅▼璋冪敤 鏀寔闄嶇骇澶勭悊 -* update 浼樺寲 涓板瘜RedisUtils瀵筁ist Set绫诲瀷鐨勬搷浣� -* update 浼樺寲 涓� admin 妯″潡 鍗曠嫭澧炲姞ratelimiter妯″潡 -* update 浼樺寲 楠岃瘉鐮佹帴鍙� 澧炲姞闄愭祦閰嶇疆 -* update 浼樺寲 excel鍚堝苟娉ㄨВ浼氭牴鎹涓�鍚堝苟鍒楃殑缁撴灉鏉ュ喅瀹氬悗缁殑鍒楀悎骞� (鎰熻阿 Simple) -* update 浼樺寲 SocialUtils 浠g爜 -* update 浼樺寲 鍒犻櫎鏃犵敤寮傚父绫� -* update 浼樺寲 琛ュ叏涓夋柟鐧诲綍鏍¢獙鍥介檯鍖� -* update 浼樺寲 sms缁勪欢 棰勭暀鑷姩閰嶇疆绫� -* update 鏇存柊 鍏充簬鏁版嵁搴撶殑璇存槑 -* update 浼樺寲 sms缁勪欢 棰勭暀鑷姩閰嶇疆绫� -* update 浼樺寲 灏� OSS閰嶇疆 鏀逛负鍏ㄥ眬妯″紡 闄嶄綆浣跨敤闅惧害 淇濈暀sql渚夸簬鐢ㄦ埛鑷鎵╁睍(甯歌椤圭洰鐢ㄤ笉涓婇厤缃垎澶氱鎴�) -* update 浼樺寲 缁嗗寲oss閰嶇疆绠$悊鏉冮檺鎺у埗 -* update 浼樺寲 寮�鍚� redisson 鑴氭湰缂撳瓨 鍑忓皯缃戠粶浼犺緭 -* update 浼樺寲 鍒犻櫎 hikaricp 瀹樻柟涓嶆帹鑽愪娇鐢ㄧ殑閰嶇疆 jdbc4 鍗忚鑷甫鏍¢獙鏂规硶 -* update 浼樺寲 鍑忓皯 PlusSaTokenDao 涓嶅繀瑕佺殑鏌ヨ浼樺寲鎬ц兘 -* update 浼樺寲 鏇存柊鐢ㄦ埛寮傚父鎻愮ず 浣跨敤鐧诲綍璐﹀彿 -* update 浼樺寲 浣跨敤鐧诲綍鐢ㄦ埛鍒ゆ柇鏄惁鐧诲綍 鎻愰珮鏁堢巼 -* update 浼樺寲 閲嶆瀯 LoginHelper 灏嗘湰鍦板瓨鍌ㄤ唬鐮佹搷浣滃皝瑁� -* update 浼樺寲 getTenantId 鍒ゆ柇鏄惁寮�鍚绉熸埛 -* update 浼樺寲 Dockerfile 浣跨敤shell妯″紡 鏀寔鐜鍙橀噺浼犲叆jvm鍙傛暟 -* update 浼樺寲 WebSocketUtils 杩炴帴鍏抽棴鏀逛负璀﹀憡 -* update 浼樺寲 excel澶歴heet椤靛鍑� (鎰熻阿 May) -* update 浼樺寲 鍒犻櫎鏃犵敤鎺ュ彛瀹炵幇 -* update 浼樺寲 jvm鍙傛暟璋冩暣 鍏ㄩ潰鍚敤zgc -* update 浼樺寲 浣跨敤鍔ㄦ�佺鎴烽噸鏋勪笟鍔″绉熸埛鐨勯�昏緫 -* update 浼樺寲 TenantHelper 鍔ㄦ�佺鎴锋敮鎸佸嚱鏁板紡鏂规硶 -* update 浼樺寲 鏀寔澶氱鎴风粦瀹氱浉鍚岀殑涓夋柟鐧诲綍 -* update 浼樺寲 鏇存柊鐢ㄦ埛鐧诲綍淇℃伅鏂规硶蹇界暐鏁版嵁鏉冮檺 -* update 浼樺寲 琛ュ叏涓夋柟缁戝畾鏃堕棿瀛楁 鍒犻櫎鏃犵敤excel娉ㄨВ -* update 浼樺寲 灏嗙櫥褰曡褰曟娊鍙栧埌鐩戝惉鍣ㄧ粺涓�澶勭悊 -* update 浼樺寲 鐧诲綍娑堟伅鎺ㄩ�佸紓甯告嫤鎴�(鏈惎鍔╮esource涔熶笉鑰借鐢�) -* update 浼樺寲 绉熸埛鎻掍欢 ignoreTable 鏂规硶鏀寔鍔ㄦ�佺鎴� - -### 鏂板鍔熻兘 - -* add 鏂板 RedisUtils.setObjectIfExists 濡傛灉瀛樺湪鍒欒缃柟娉� -* add 鏂板 涓板瘜RedisUtils瀵筁ist Set绫诲瀷鐨勬搷浣� -* add 鏂板 缈昏瘧缁勪欢 鐢ㄦ埛鏄电О缈昏瘧瀹炵幇 -* add 鏂板 鍝嶅簲鍔犲瘑鍔熻兘 鏀寔娉ㄨВ寮哄埗鍔犲瘑鎺ュ彛鏁版嵁 (鎰熻阿 MichelleChung) -* add 鏂板 common-ratelimiter 闄愭祦妯″潡 鐢ㄤ簬鑷畾涔変笟鍔¢檺娴� 涓� sentinel涓嶅啿绐� - -### 闂淇 - -* fix 淇 stream-mq 娴嬭瘯鏈嶅姟鏈鍏ョ鎴锋ā鍧� 瀵艰嚧閴存潈涓嶄竴鑷撮棶棰� -* fix 淇 浣跨敤zgc瀵艰嚧seata鎶ラ敊(鏈煡鍘熷洜 灏哸libaba缁勪欢鍏ㄨ繕鍘�) -* fix 淇 sentinel 闀滃儚娣诲姞浜嗗浣欐帴鍙e弬鏁� -* fix 淇 娉ㄥ唽鎺ュ彛鑾峰彇寮�鍏虫湭鍦ㄧ鎴疯寖鍥村唴闂 -* fix 淇 seata-server logback鐗堟湰鍐茬獊闂 -* fix 淇 selectDictTypeByType 鏌ヨ鏂规硶閿欒闂 -* fix 淇 涓�浜涗笉姝e父绫绘棤娉曞姞杞芥姤閿欓棶棰� -* fix 淇 powerjob sql鑴氭湰閽堝鍏朵粬鏁版嵁搴撹浆涔夌闂 (鎰熻阿 branches) -* fix 淇 MybatisSystemException 绌烘寚閽堥棶棰� -* fix 淇 excel鍚堝苟娉ㄨВ浼氭牴鎹涓�鍚堝苟鍒楃殑缁撴灉鏉ュ喅瀹氬悗缁殑鍒楀悎骞� -* fix 淇 session 澶氳处鍙峰叡鐢ㄨ鐩栭棶棰� 鏀逛负 tokenSession 鐙珛瀛樺偍 -* fix 淇 token 澶辨晥鍚� 鐧诲綍鑾峰彇鐢ㄦ埛null闂 -* fix 淇 powerjob閮ㄧ讲鏂规 楂樼増鏈琻ginx涓嶇敓鏁堥棶棰� -* fix 淇 OssFactory 骞跺彂澶氬垱寤哄疄渚嬮棶棰� -* fix 淇 寤惰繜闃熷垪鍦ㄦ姇閫掓秷鎭湭鍒拌揪鏃堕棿鐨勬椂鍊� 鏈嶅姟姝绘満瀵艰嚧閲嶅惎鏀朵笉鍒版秷鎭� - -### 鍓嶇鏀瑰姩 - -* update 浼樺寲 鐢ㄦ埛澶村儚 img 鍙橀噺鏃犵‘瀹氱被鍨嬮棶棰� -* update 浼樺寲 缁嗗寲oss閰嶇疆绠$悊鏉冮檺鎺у埗 -* update 浼樺寲 鏄庣‘鎵撳寘鍛戒护 -* update 浼樺寲 浠g爜涓瓨鍦ㄧ殑璀﹀憡 -* update 浼樺寲 鍓嶇鐧藉悕鍗曢〉闈㈡斁琛岄�昏緫 -* update 浼樺寲 椤甸潰鍏充簬鏉冮檺鏍囪瘑绗﹁鏄� -* fix 淇 append-to-body 缂栧啓閿欒 (鎰熻阿 Ai3_鍒樺皬榫�) -* fix 鍏抽棴鍔ㄦ�佽矾鐢眛ab椤电鏃朵笉娓呯悊缁勪欢缂撳瓨 (鎰熻阿 NickLuo) -* fix 鍒犻櫎閲嶅鐜鍙橀噺ElUploadInstance (鎰熻阿 妫夎姳) -* fix 淇 鍦ㄧ嚎鐢ㄦ埛 寮烘帹鎸夐挳鐐瑰嚮鍙栨秷鎺у埗鍙拌鍛婇棶棰� -* fix 淇 瀛楀吀浣跨敤 default 鏍峰紡鎶ヨ鍛婇棶棰� - -## v1.8.2 - 2023-11-27 - -### 渚濊禆鍗囩骇 - -* update springboot 2.7.16 => 2.7.18 鍗囩骇鍒�2.X鏈�缁堢増鏈�(瀹樻柟鍋滄洿) -* update mybatis-plus 3.5.3.2 => 3.5.4 -* update satoken 1.36.0 => 1.37.0 -* update hutool 5.8.20 => 5.8.22 -* update aws-java-sdk-s3 1.12.400 => 1.12.540 -* update vue-quill 1.1.0 => 1.2.0 - -### 鍔熻兘鏇存柊 - -* update 浼樺寲 椤甸潰鍏充簬鏉冮檺鏍囪瘑绗﹁鏄� -* update 浼樺寲 鏁版嵁鏉冮檺鎷︽埅鍣ㄤ紭鍏堝垽鏂柟娉曟槸鍚︽湁鏁� 鎻愰珮鎬ц兘鍑忓皯鏃犵敤sql瑙f瀽 -* update 浼樺寲 閮ㄩ棬鏁版嵁鏉冮檺浣跨敤榛樿鍏滃簳鏂规 -* update 浼樺寲 琛ュ叏浠g爜鐢熸垚 columnList 鎺ュ彛鍙傛暟娉ㄨВ缂哄け -* update 浼樺寲 AddressUtils 鍏煎linux绯荤粺鏈湴ip -* update 浼樺寲 鎿嶄綔鏃ュ織 閮ㄩ棬淇℃伅瀹屽杽 -* update 浼樺寲 鏁版嵁鏉冮檺 鍑忓皯浜屾鏍¢獙鏌ヨ -* update 淇敼 鑾峰彇鐢ㄦ埛token鍜屽悗绔笉涓�鑷寸殑闂 (鎰熻阿 bestrevens) -* update 浼樺寲 vue3 鐗堟湰鐢ㄦ埛鍒濆瀵嗙爜浠庡瓧鍏告煡璇� -* update 浼樺寲 瀵屾枃鏈珽ditor缁勪欢妫�楠屽浘鐗囨牸寮� -* update 浼樺寲 鎿嶄綔鏃ュ織鍒楄〃鏂板IP鍦板潃鏌ヨ -* update 浼樺寲 鍏ㄥ眬鏁版嵁瀛樺偍鐢ㄦ埛缂栧彿 -* update 浼樺寲 鑿滃崟绠$悊绫诲瀷涓烘寜閽姸鎬佸彲閫� - -### 闂淇 - -* fix 淇 OssFactory 骞跺彂澶氬垱寤哄疄渚嬮棶棰� -* fix 淇 demo椤甸潰瀛楁缂栧啓閿欒 -* fix 淇 鏁版嵁鏉冮檺浼樺寲鍚� update delete 鎶ull闂 -* fix 淇 浜旂骇璺敱缂撳瓨鏃犳晥闂 -* fix 淇 oss鏈嶅姟鏃犳硶杩炴帴 -* fix 淇 鍐呴摼iframe娌℃湁浼犻�掑弬鏁伴棶棰� -* fix 淇 澶栭摼甯︾鍙e嚭鐜扮殑寮傚父 -* fix 淇 鏅�氳鑹茬紪杈戜娇鐢ㄥ唴缃鐞嗗憳code瓒婃潈闂 -* fix 淇 seata XA妯″紡缂哄けdruid宸ュ叿闂 -* fix 淇 浠g爜鐢熸垚 鏄惁蹇呭~涓庢暟鎹簱涓嶅尮閰嶉棶棰� -* fix 淇 瀵屾枃鏈笂浼犳帴鍙e湴鍧�閿欒 -* fix 淇 HeaderSearch缁勪欢璺宠浆query鍙傛暟涓㈠け闂 -* fix 淇鏍戠粨鏋勪唬鐮佺敓鎴愭柊澧炴柟娉曡祴鍊奸敊璇� - -## v2.1.1 - 2023-11-14 - -### 渚濊禆鍗囩骇 - -* update springboot 3.1.3 => 3.1.5 -* update springboot 2.7.14 => 2.7.17(鎵╁睍鏈嶅姟) -* update springboot-admin 3.1.5 => 3.1.7 -* update satoken 1.35.0.RC => 1.37.0 -* update mybatis-plus 3.5.3.2 => 3.5.4 閫傞厤mp鏂扮増鏈敼鍔� -* update dynamic-ds 4.1.3 => 4.2.0 -* update bouncycastle 1.72 => 1.76 -* update poi 5.2.3 => 5.2.4 -* update redisson 3.23.2 => 3.24.1 -* update hutool 5.8.20 => 5.8.22 -* update lombok 1.18.26 => 1.18.30(閫傞厤鏀寔jdk21) -* update vue-quill 1.1.0 => 1.2.0 -* update seata 1.7.0 => 1.7.1 -* update dubbo 3.2.5 => 3.2.7 - -### 鍔熻兘鏇存柊 - -* update 浼樺寲 绉婚櫎涓嶅悎鐞嗙殑鏂规硶 鎼哄甫闄勪欢鐨勯偖浠跺缓璁洿鎺ラ泦鎴愭彃浠跺彂閫� -* update 浼樺寲 鎼哄甫 clientid 璺ㄥ煙闂 -* update 浼樺寲 鏁版嵁鏉冮檺鎷︽埅鍣ㄤ紭鍏堝垽鏂柟娉曟槸鍚︽湁鏁� 鎻愰珮鎬ц兘鍑忓皯鏃犵敤sql瑙f瀽 -* update 浼樺寲 閫傞厤 maxkey 鏂扮増鏈� -* update 浼樺寲 @Sensitive鑴辨晱澧炲姞瑙掕壊鍜屾潈闄愭牎楠� (鎰熻阿 鐩樺彜缁欎綘涓�鏂�) -* update 浼樺寲 閮ㄩ棬鏁版嵁鏉冮檺浣跨敤榛樿鍏滃簳鏂规 -* update 浼樺寲 鏇存敼榛樿鏃ュ織绛夌骇涓篿nfo 閬垮厤鏃ュ織杩囧(鎸夐渶寮�鍚痙ebug) -* update 浼樺寲 鐧诲綍绛栫暐浠g爜浼樺寲(鎰熻阿 David Wei) -* update 浼樺寲 琛ュ叏浠g爜鐢熸垚 columnList 鎺ュ彛鍙傛暟娉ㄨВ缂哄け -* update 浼樺寲 nginx 閰嶇疆鏀寔 websocket -* update 浼樺寲 notice 鏂板閫氱煡鍏憡鍙戦�亀s鎺ㄩ�� -* update 浼樺寲 websocket 妯″潡鍑忓皯鏃ュ織杈撳嚭 澧炲姞鐧诲綍鎺ㄩ�� -* update 浼樺寲 閲嶆瀯鐧诲綍绛栫暐澧炲姞鎵╁睍鎬ч檷浣庡鏉傚害 -* update 浼樺寲 addressUtils 鍏煎linux绯荤粺鏈湴ip -* update 浼樺寲 琛ュ叏鎿嶄綔鏃ュ織閮ㄩ棬鏁版嵁 -* update 浼樺寲 鏀寔鏁版嵁搴撴搷浣滃湪闈瀢eb鐜涓嬪垏鎹㈢鎴� -* update 浼樺寲 鎺掗櫎powerjob鏃犵敤鐨勪緷璧� 鍑忓皯鎵撳寘30M浣撶Н -* update 浼樺寲 鍒犻櫎 satoken yml 鏃堕棿閰嶇疆 姝ゅ姛鑳藉凡杩佺Щ鑷冲鎴风绠$悊 -* update 浼樺寲 redis 闆嗙兢妯″紡娉ㄩ噴璇存槑 -* update 浼樺寲 瀹㈡埛绔鐢ㄩ檺鍒� -* update 浼樺寲 鐧诲綍鏃ュ織, 鍦ㄧ嚎鐢ㄦ埛灞曠ず淇℃伅(澧炲姞 瀹㈡埛绔�, 璁惧绫诲瀷)(鎰熻阿 MichelleChung) -* update 浼樺寲 闄愬埗妗嗘灦涓殑fastjson鐗堟湰 -* update 浼樺寲 鏁版嵁鏉冮檺 鍑忓皯浜屾鏍¢獙鏌ヨ -* update 浼樺寲 灏嗛儴闂╥d瀛樺叆token閬垮厤杩囧害鏌ヨredis -* update 浼樺寲 澧炲姞绉熸埛ID涓篘ull閿欒鏃ュ織 -* update 浼樺寲 鎿嶄綔鏃ュ織鍒楄〃鏂板IP鍦板潃鏌ヨ -* update 浼樺寲 閫氳繃鍙傛暟閿悕鑾峰彇閿�兼帴鍙g殑杩斿洖浣�(鎰熻阿 David Wei) -* update 浼樺寲 涓� sys_grant_type 瀛楀吀澧炲姞鏍峰紡 -* update 浼樺寲 浠g爜鐢熸垚 椤甸潰杈撳叆妗嗘牱寮� -* update 浼樺寲 鍏ㄤ笟鍔″垎椤垫煡璇㈠鍔犳帓搴忚鍒欓伩鍏嶅洜where鏉′欢瀵艰嚧涔卞簭闂 -* update 浼樺寲 鐧诲綍鎺ュ彛绉熸埛id琚己鍒舵牎楠岄棶棰� -* update 浼樺寲 鍔犲瘑妯″潡 鏀寔鐖剁被缁熶竴浣跨敤鍔犲瘑娉ㄨВ(鎰熻阿 Tyler Ge) -* update 浼樺寲 灏唃raalvm闀滃儚鏇存柊涓簅penjdk闀滃儚 闇�瑕佺殑浜鸿嚜琛屽垏鎹㈠嵆鍙� -* update 浼樺寲 閮ㄥ垎浣跨敤鑰呬贡璁炬潈闄愬鑷存棤娉曡幏鍙栫敤鎴蜂俊鎭� 澧炲姞鏉冮檺鎻愮ず -* update 浼樺寲 琛ㄦ牸鍒楃殑鏄剧ず涓庨殣钘忓皬缁勪欢(鎰熻阿 bestrevens) -* update 浼樺寲 澧炲姞琛ㄥ崟鏋勫缓涓嶈兘浣跨敤璇存槑 -* update 浼樺寲 瀵屾枃鏈珽ditor缁勪欢妫�楠屽浘鐗囨牸寮� -* update 浼樺寲 鎿嶄綔鏃ュ織鍒楄〃鏂板IP鍦板潃鏌ヨ -* update 浼樺寲 鑿滃崟绠$悊绫诲瀷涓烘寜閽姸鎬佸彲閫� -* update 浼樺寲 鐢ㄦ埛鍒濆瀵嗙爜浠庡弬鏁伴厤缃煡璇� -* update 浼樺寲 閫氳繃鍙傛暟閿悕鑾峰彇閿�兼帴鍙g殑杩斿洖浣�(鎰熻阿 David Wei) -* update 浼樺寲 瀛楀吀鏍囩鏀寔鏁扮粍鍜屽鏍囩(鎰熻阿 鎶撹洐甯�) - -### 鏂板鍔熻兘 - -* add 鏂板 websocket 缇ゅ彂鍔熻兘 -* add 鏂板 鍓嶇鎺ュ叆websocket鎺ユ敹娑堟伅(鎰熻阿 涓変釜涓�) -* add 澧炲姞 rpc娑堟伅鎺ㄩ�佹帴鍙d笌瀹炵幇 -* add 鏂板 CacheController Redis 缂撳瓨鐩戞帶鎺ュ彛(鎰熻阿 Michelle.Chung) - -### 闂淇 - -* fix 淇 鍥犳墿灞曟湇鍔′笉鏀寔boot3瀵艰嚧鏃犳硶寮曞叆common-web鍖� 鏃ュ織鍐欏嚭涓嶇敓鏁堥棶棰� -* fix 淇 seata XA妯″紡缂哄けdruid宸ュ叿闂 -* fix 淇 oss鏈嶅姟鏃犳硶杩炴帴 瀵艰嚧涓氬姟寮傚父闂 鏌ヨ涓嶅簲璇ュ奖鍝嶄笟鍔� -* fix 淇 绉熸埛id涓簄ull 鏃犳硶鍖归厤瀛楃涓插鑷寸殑宓屽key闂 -* fix 淇 閮ㄩ棬绠$悊orderNum鎺掑簭澶辨晥闂 -* fix 淇 澶栭摼甯︾鍙e嚭鐜扮殑寮傚父 -* fix 淇 鏅�氳鑹茬紪杈戜娇鐢ㄥ唴缃鐞嗗憳code瓒婃潈闂 -* fix 淇 浠g爜鐢熸垚 鏄惁蹇呭~涓庢暟鎹簱涓嶅尮閰嶉棶棰� -* fix 淇 鐢ㄦ埛娉ㄥ唽鎺ュ彛鏍¢獙鐢ㄦ埛鍚嶄笉鍖哄垎绉熸埛闂 -* fix 淇 閿欒澧炲姞缁勫鑷寸殑鏍¢獙涓嶇敓鏁堥棶棰� -* fix 淇 鏂板鏍¢獙涓婚敭id闂 -* fix 淇 powerjob 浣跨敤 nginx 閮ㄧ讲鏃犳硶璁块棶鐨勯棶棰� -* fix 淇 SysUserMapper 鍐呮爣绛句娇鐢ㄩ敊璇�(涓嶅奖鍝嶄娇鐢�) -* fix 淇 鏂板鎴栫紪杈� SysOssConfig 鏁版嵁鍚� 鎺ㄩ�佸埌 redis 鏁版嵁涓嶅畬鏁� -* fix 淇 鏍戣〃鐢熸垚鏌ヨ鍙橀噺浣跨敤閿欒 -* fix 淇 涓汉淇℃伅淇敼瀵嗙爜鎺ュ彛闅愯棌鏂版棫瀵嗙爜鍙傛暟鏄庢枃(鎰熻阿 bleachtred) -* fix 淇 鍒犻櫎瀛楁鍚� * update sql 鏈洿鏂伴棶棰� -* fix 淇 涓夋柟鐧诲綍鏀粯瀹漵ource涓庡疄闄呮敮浠樺疂涓氬姟code涓嶅尮閰嶉棶棰� -* fix 淇 浜旂骇璺敱缂撳瓨鏃犳晥闂 -* fix 淇 鍐呴摼iframe娌℃湁浼犻�掑弬鏁伴棶棰� -* fix 淇 缁戝畾绗笁鏂瑰笎鍙峰弬鏁扳�渨echar鈥濇洿姝d负鈥渨echat鈥� (鎰熻阿 scmiot) -* fix 淇 鐢ㄦ埛娉ㄥ唽缂哄け clientid 闂 -* fix 淇 HeaderSearch缁勪欢璺宠浆query鍙傛暟涓㈠け闂 -* fix 淇 鑷畾涔夊瓧鍏告牱寮忎笉鐢熸晥鐨勯棶棰� -* fix 淇 login 椤甸潰 loading 鏈叧闂棶棰� - -## v1.8.1 - 2023-09-26 - -### 渚濊禆鍗囩骇 - -* update springboot 2.7.14 => 2.7.16 -* update springboot-admin 2.7.10 => 2.7.11 -* update satoken 1.35.0.RC => 1.36.0 -* update lombok 1.18.26 =. 1.18.30 -* update springboot 2.7.13 => 2.7.14 -* update mybatis-plus 3.5.3.1 => 3.5.3.2 -* update easyexcel 3.3.1 => 3.3.2 -* update hutool 5.8.18 => 5.8.20 -* update dubbo 3.1.8 => 3.1.11 - -### 鍔熻兘鏇存柊 - -* update 浼樺寲 浠g爜鐢熸垚 vo瀹炰綋绫诲簭鍒楀寲 -* update 浼樺寲 excel 瀵煎嚭涓嶅繀瑕佺殑璇锋眰澶� -* update 浼樺寲 瀛楀吀鏍囩鏀寔浼犲垎闅旂鍒嗛殧鐨勫瓧绗︿覆鍜屾暟缁� -* update 浼樺寲 鎺у埗鍙癲ebuger浣嶇疆閿欒闂 -* update 浼樺寲 TopNav 鑿滃崟鏍峰紡 -* update 浼樺寲 娉ㄥ唽鐢ㄦ埛寮傚父鎶ラ敊涓嶆纭棶棰� -* update 浼樺寲 鍏ㄥ眬寮傚父澶勭悊鍣� 涓氬姟寮傚父涓嶈緭鍑哄叿浣撳爢鏍堜俊鎭� 鍑忓皯鏃犵敤鏃ュ織瀛樺偍 -* update 浼樺寲 鐢ㄦ埛绠$悊 鍙煡璇㈡湭绂佺敤鐨勯儴闂ㄨ鑹插矖浣嶆暟鎹� -* update 浼樺寲 宀椾綅濡傛灉缁戝畾浜嗙敤鎴峰垯涓嶅厑璁哥鐢� -* update 浼樺寲 閮ㄩ棬涓庤鑹插鏋滅粦瀹氫簡鐢ㄦ埛鍒欎笉鍏佽绂佺敤 -* update 浼樺寲 鍔犲瘑瀹炵幇 浣跨敤 EncryptUtils 缁熶竴澶勭悊 -* update 浼樺寲 閫傞厤 mysql 8.0.34 鍗囩骇杩炴帴鏈哄埗 -* update 浼樺寲 excel瀵煎嚭瀛楀吀杞笅鎷夋 鏃犻渶鏍囪index鑷姩澶勭悊 -* update 浼樺寲 excel 瀵煎嚭瀛楀吀榛樿杞负涓嬫媺妗� -* update 鍒犻櫎涓�浜涜窡swagger鏈夊叧鐨勫瓧鐪� 閬垮厤璇В -* update 浼樺寲 瑙掕壊鏉冮檺鏀寔浠呮湰浜烘潈闄愭煡鐪� 瑙e喅鏃犳硶鏌ョ湅鑷繁鍒涘缓鐨勮鑹查棶棰� -* update 浼樺寲 xxljob 绔彛闅忕潃涓诲簲鐢ㄧ鍙i閫� 閬垮厤闆嗙兢鍐茬獊 - -### 闂淇 - -* fix 淇 鑷畾涔夊瓧鍏告牱寮忎笉鐢熸晥鐨勯棶棰� -* fix 淇 鏂板缓鐢ㄦ埛鍙兘浼氬瓨鍦ㄧ殑瓒婃潈琛屼负 -* fix 淇 瀛楀吀缂撳瓨鍒犻櫎鏂规硶鍙傛暟閿欒闂 -* fix 淇 淇鏍戞ā鏉跨埗绾х紪鐮佸彉閲忛敊璇� -* fix 淇 demo 妯″潡缂哄皯 security 渚濊禆闂 -* fix 淇 鍗囩骇 mp 鐗堟湰瀵艰嚧鐨勯棶棰� -* fix 淇 鍔犲瘑妯″潡鏁版嵁杞崲寮傚父闂 -* fix 淇 鍔ㄦ�佽缃� token 鏈夋晥鏈熶笉鐢熸晥闂 -* fix 淇 token 杩囨湡鐧诲嚭鏃犳硶娓呯悊鍦ㄧ嚎鐢ㄦ埛闂 - - -## v2.1.0 - 2023-09-06 - -# 寮�鍙戝巻绋� - -* 2023骞�5鏈� 寮�濮� 2.1.0 璁″垝 鍘嗙粡1涓湀鐨勮璁′笌璁ㄨ -* 2023骞�6鏈� 寮�濮嬬潃鎵嬪紑鍙� 鍘嗙粡2涓鏈堢殑寮�鍙� 鐗瑰埆鎰熻阿鍥㈤槦鐨勫皬浼欎即涓庝竴浜涚儹蹇冪殑绮変笣 鍙備笌鍔熻兘寮�鍙戜笌娴嬭瘯 -* 2023骞�8鏈� 寮�濮嬪叕娴� 鍘嗙粡灏嗚繎1涓湀鐨勫叕娴嬩笌淇宸ヤ綔(鏈熼棿鎴愬姛鏀寔澶氫綅浣跨敤鑰呯敓浜т娇鐢�) -* 2023骞�9鏈堝垵 姝e紡鍙戝竷(缁忚繃澶氫釜灏忎紮浼寸殑鐢熶骇瀹炶返 宸插熀鏈彲灏濊瘯鐢熶骇浣跨敤) -> 鍏充簬1.X鐨勮鏄� 鐢变簬SpringBoot2.X涓巚ue2.X鍧囧湪11鏈堝簳鍋滄缁存姢<br> -> 鏁呰�屽挶浠瑅ue鐗堟湰1.X涔熸棤娉曞啀缁х画鏇存柊<br> -> 浠嬩簬1.X鐨勭敤鎴烽噺鐗瑰埆搴炲ぇ 鍔熻兘涔熼潪甯哥殑绋冲畾<br> -> 璁″垝浜�11鏈堝簳鍚孊oot2.X涓�鍚屽仠姝㈡洿鏂颁絾杩樹細鎸佺画缁存姢淇bug(淇鐨勫舰寮忎负鐩存帴鎻愪氦鍒�1.X鍒嗘敮鍋滄鍙戠増)<br> - -# 瑙嗛浠嬬粛 - -涓轰簡鏇村ソ鐨勮澶у浜嗚В 2.1.0 浣滆�呭綍鍒朵簡鐩稿叧鐨勮棰� 渚涘ぇ瀹跺揩閫熶簡瑙d笂鎵� - -* 2.1.0 鏂板姛鑳戒笌鍙樻洿浠嬬粛: https://www.bilibili.com/video/BV1fj411y71X/ - -# 鏇存柊鏃ュ織 - -### 閲嶅ぇ鏇存柊 - -* [閲嶅ぇ鏇存柊] 浼樺寲 鐩稿叧浠g爜 瀹屾垚浠g爜鐢熸垚澶氭暟鎹簮缁熶竴瀛樺偍(鎰熻阿 WangBQ) -* [涓嶅吋瀹规洿鏂癩 绉婚櫎 鍘熺煭淇″姛鑳� 闆嗘垚鏇村己澶х殑 sms4j 鐭俊宸ュ叿鍖�(鎰熻阿 鍙嬫澃) -* [涓嶅吋瀹规洿鏂癩 瀵规帴 powerjob 瀹炵幇鍒嗗竷寮忎换鍔¤皟搴� 鍒犻櫎鍘熸湁 xxljob 鍘熷洜涓虹ぞ鍖轰笉鏇存柊鍔熻兘澶皯鍙敮鎸乵ysql(鎰熻阿 yhan219) -* [閲嶅ぇ鏇存柊] 鏂板 涓夋柟鎺堟潈缁戝畾鐧诲綍鍔熻兘 鍩轰簬 justauth 鏀寔甯傞潰涓婂ぇ閮ㄥ垎涓夋柟鐧诲綍(鎰熻阿 涓変釜涓�) -* [涓嶅吋瀹规洿鏂癩 鏂板 瀹㈡埛绔巿鏉冨姛鑳� 涓嶉渶瑕佹洿鏀逛换浣曚唬鐮佸嵆鍙畬鎴愬绔姩鎬佸鎺�(鎰熻阿 Michelle.Chung) -* [閲嶅ぇ鏇存柊] 鏂板 鍓嶅悗绔帴鍙h姹傚姞瀵嗕紶杈� 鍩轰簬AES+RSA鍔ㄦ�侀珮寮哄害鍔犲瘑(鎰熻阿 wdhcr) -* [閲嶅ぇ鏇存柊] 鏂板 涓夋柟鎺堟潈鐧诲綍 瀵规帴 maxkey 鍗曠偣鐧诲綍 -* [涓嶅吋瀹规洿鏂癩 浼樺寲 redis搴忓垪鍖栭厤缃� 鏇存敼涓洪�氱敤鏍煎紡(鍗囩骇闇�娓呴櫎redis鎵�鏈夋暟鎹�) -* [閲嶅ぇ鏇存柊] 鏂板 閫氳繃 sharding-proxy 瀹炵幇鍒嗗簱鍒嗚〃(鎰熻阿 rice666 !pr94) - -### 渚濊禆鍗囩骇 - -* update springboot 3.0.7 => 3.1.3 -* update springboot-admin 3.1.3 => 3.1.5 -* update springcloud 2022.0.2 => 2022.0.4 -* update springcloud-alibaba 2022.0.0.0-RC2 => 2022.0.0.0 -* update springdoc 2.1.0 => 2.2.0 -* update spring-mybatis 3.0.1 => 3.0.2 -* update mybatis-plus 3.5.3.1 => 3.5.3.2 -* update easyexcel 3.2.1 => 3.3.2 -* update mapstruct-plus 1.2.3 => 1.3.5 瑙e喅淇敼瀹炰綋绫� idea涓嶇紪璇戦棶棰� -* update satoken 1.34.0 => 1.35.0.RC 浼樺寲杩囨湡閰嶇疆 鏀寔澶氱token鑷畾涔夋湁鏁堟湡 -* update dynamic-ds 3.6.1 => 4.1.3 鏀寔 SpringBoot3 -* update sms4j 2.2.0 -* update hutool 5.8.18 => 5.8.20 -* update redisson 3.20.1 => 3.23.4 -* update lock4j 2.2.4 => 2.2.5 -* update aws-java-sdk-s3 1.12.400 => 1.12.540 -* update maven-surefire-plugin 3.0.0 => 3.1.2 -* update seata 1.6.1 => 1.7.0 -* update sharding-proxy 5.4.0 -* update dubbo 3.2.2 => 3.2.5 -* update skywalking-toolkit 8.14.0 => 8.16.0 -* update logstash 7.2 => 7.4 - -### 鍔熻兘鏇存柊 - -* update 浼樺寲 涓� vue 鐗堟湰鍚屾浠g爜缁撴瀯 -* update 浼樺寲 鏀捐springboot榛樿error鎺ュ彛 -* update 浼樺寲 RepeatSubmitAspect 閫昏緫閬垮厤骞跺彂璇锋眰闂 -* update 璋冩暣 gateway 璁块棶鏃ュ織杈撳嚭绛夌骇 -* update 浼樺寲 淇敼瑙掕壊濡傛灉鏈粦瀹氱敤鎴峰垯鏃犻渶娓呯悊 -* update 浼樺寲 鐢ㄦ埛鏄电О闈炵┖鏍¢獙 -* update 浼樺寲 鍦ㄥ叏灞�寮傚父鎷︽埅鍣ㄤ腑澧炲姞涓ょ被寮傚父澶勭悊 -* update 浼樺寲 StreamUtils 鏂规硶杩囨护null鍊� -* update 浼樺寲 powerjob 绔彛闅忕潃涓诲簲鐢ㄧ鍙i閫� 閬垮厤闆嗙兢鍐茬獊 -* update 浼樺寲 瑙掕壊鏉冮檺鏀寔浠呮湰浜烘潈闄愭煡鐪� 瑙e喅鏃犳硶鏌ョ湅鑷繁鍒涘缓鐨勮鑹查棶棰� -* update 淇敼浠g爜鐢熸垚妯$増锛屾棩鏈熻寖鍥寸粺涓�閲囩敤addDateRange鏂规硶 -* update 浼樺寲 鏍戣〃鐢熸垚鍓嶇缂哄皯 children 瀛楁 -* update 浼樺寲 ruoyi-resource 鏈嶅姟娣诲姞 websocket 妯″潡 -* update 浼樺寲 鏀捐楠岃瘉鐮佹帴鍙c�佺涓夋柟鐧诲綍璇锋眰涓庡洖璋� -* update 鏇存柊 GlobalLogFilter#filter 鏍规嵁璇锋眰澶村垽鏂姞瀵嗗弬鏁�(鎰熻阿 Michelle.Chung !pr100) -* update 浼樺寲 SaReactorFilter 杩囨护鍣ㄥ垽鏂� token 瀹㈡埛绔� id 鏄惁鏈夋晥(鎰熻阿 Michelle.Chung !pr101) -* update 鍒犻櫎涓�浜涜窡swagger鏈夊叧鐨勫瓧鐪� 閬垮厤璇В -* update 浼樺寲 鍏煎 clientid 閫氳繃 param 浼犺緭 -* update 浼樺寲 excel瀵煎嚭瀛楀吀杞笅鎷夋 鏃犻渶鏍囪index鑷姩澶勭悊(鎰熻阿 涓�澶廲oco) -* update 浼樺寲 澧炲姞绾跨▼姹犻攢姣侀厤缃� -* update 浼樺寲 灞忚斀 powerjob 鏃犵敤鐨勫績璺虫棩蹇� -* update 浼樺寲 閫傞厤 mysql 8.0.34 鍗囩骇杩炴帴鏈哄埗 -* update 浼樺寲 鍔犲瘑瀹炵幇 浣跨敤 EncryptUtils 缁熶竴澶勭悊 -* update 浼樺寲 鍒犻櫎瀛楀吀鏃犵敤鐘舵�佸瓧娈�(鍩烘湰鐢ㄤ笉涓� 绂佺敤鍚庤繕浼氬鑷村洖鏄鹃棶棰�) -* update 浼樺寲 閮ㄩ棬涓庤鑹插鏋滅粦瀹氫簡鐢ㄦ埛鍒欎笉鍏佽绂佺敤 -* update 浼樺寲 宀椾綅濡傛灉缁戝畾浜嗙敤鎴峰垯涓嶅厑璁哥鐢� -* update 浼樺寲 鐢ㄦ埛绠$悊 鍙煡璇㈡湭绂佺敤鐨勯儴闂ㄨ鑹插矖浣嶆暟鎹� -* update 浼樺寲 鐧诲綍鐢ㄦ埛澧炲姞鏄电О杩斿洖 -* update 浼樺寲 鍏ㄥ眬寮傚父澶勭悊鍣� 涓氬姟寮傚父涓嶈緭鍑哄叿浣撳爢鏍堜俊鎭� 鍑忓皯鏃犵敤鏃ュ織瀛樺偍 -* update 浼樺寲 灏嗛儴闂ㄧ鐞� 璐熻矗浜洪�夐」鏀逛负涓嬫媺妗嗛�夋嫨 -* update 浼樺寲 鐧诲綍鐢ㄦ埛缂撳瓨 鍘婚櫎鍐椾綑缁熶竴瀛樺偍 -* update 浼樺寲 娉ㄥ唽鐢ㄦ埛寮傚父鎶ラ敊涓嶆纭棶棰� -* update 浼樺寲 鏀惧鑿滃崟鏉冮檺 瑙掕壊鍏宠仈鑿滃崟鏃犻渶绠$悊鍛� - -### 鏂板鍔熻兘 - -* add 澧炲姞 RedisUtils 鎵归噺鍒犻櫎 hash key 鏂规硶 -* add 鏂板 Oss 涓婁紶 File 鏂囦欢鏂规硶(鎰熻阿 jenn) -* add 澧炲姞 excel 瀵煎嚭涓嬫媺妗嗗姛鑳� -* add 鏂板 RedisUtils.setObjectIfAbsent 濡傛灉涓嶅瓨鍦ㄥ垯璁剧疆鏂规硶 - -### 淇闂 - -* fix 淇 鐢ㄦ埛閲嶅悕鐧诲綍鎶ラ敊闂 -* fix 淇 鏈嶅姟鏈坊鍔� common-security 妯″潡瀵艰嚧寮傚父鎷︽埅鍣ㄤ笉鐢熸晥闂 -* fix 淇 鐢ㄦ埛绡℃敼绠$悊鍛樿鑹叉爣璇嗙瓒婃潈闂 -* fix 淇 鏂囦欢绠$悊 鍒涘缓浜烘湭缈昏瘧闂 -* fix 淇 monitor 鐩戞帶鏃犳硶灞曠ず鏁版嵁闂 -* fix 淇 鏇存崲 satoken dubbo 鎻掍欢瀵艰嚧鍖呭悕涓嶄竴鑷撮棶棰� -* fix 淇 瀛楀吀缂撳瓨娉ㄨВ浣跨敤閿欒闂 -* fix 淇 鎺ュ彛鏂囨。鏈嫾鎺ユ湇鍔¤矾寰勯棶棰� -* fix 淇 excel 鏋氫妇鍙嶅悜瑙f瀽澶辫触闂 -* fix 淇 鏌ヨ閮ㄩ棬涓嬫媺鏍戞湭杩囨护鏁版嵁鏉冮檺闂 -* fix 淇 CacheName 缂撳瓨key瀛樺偍閿欒闂 -* fix 淇 oss 鍒楄〃 鐢ㄦ埛鍚嶅洖鏄鹃敊璇� -* fix 淇 涓嶅悓vo鐩稿悓瀛楁mybatis浼氳嚜鍔ㄨ祴鍊奸棶棰� -* fix 淇 鍒犻櫎 skywalking dubbo 2.X 鎻掍欢閬垮厤涓� 3.X 鍑虹幇鍏煎鎬ч棶棰� -* fix 淇 鏂板瑙掕壊浣跨敤鍐呯疆绠$悊鍛樻爣璇嗙闂 -* fix 淇 token 杩囨湡鐧诲嚭鏃犳硶娓呯悊鍦ㄧ嚎鐢ㄦ埛闂 -* fix 淇 鍔ㄦ�佽缃� token 鏈夋晥鏈熶笉鐢熸晥闂 -* fix 淇 鍔犲瘑妯″潡鏁版嵁杞崲寮傚父闂 -* fix 淇 dubbo 鏇存敼鍐呴儴搴忓垪鍖栨柟寮� 瀵艰嚧寮傚父绫绘棤娉曞弽搴忓垪鍖栭棶棰� -* fix 淇 瀹㈡埛绔紪杈戞椂鎺堟潈绫诲瀷鍙樻洿鏈繚瀛樼殑闂 -* fix 淇 缂哄け SysClientVoConvert 瀵艰嚧杞崲寮傚父(鎰熻阿 Michelle.Chung) -* fix 淇 auth 妯″潡缂哄け寮曠敤瀵艰嚧瑙e瘑寮傚父(鎰熻阿 Michelle.Chung) -* fix 淇 demo 涓� stream-mq 妯″潡缂哄皯 security 渚濊禆闂 -* fix 淇 瀵煎叆鐢ㄦ埛鏁版嵁 鍙橀噺浣跨敤閿欒闂 -* fix 淇 楠岃瘉鐮佸紑鍏虫湭鍔ㄦ�佸埛鏂伴棶棰� -* fix 淇 鑷姩濉厖鏁版嵁 loginUser 涓� null(鎰熻阿 charles !pr108) -* fix 淇 淇鏍戞ā鏉跨埗绾х紪鐮佸彉閲忛敊璇� -* fix 淇 閮ㄧ讲閮ㄥ垎绯荤粺鍑虹幇涔辩爜闂 -* fix 淇 涓�绾ц彍鍗曟棤娉曟樉绀洪棶棰� -* fix 淇 鏂板缓鐢ㄦ埛鍙兘浼氬瓨鍦ㄧ殑瓒婃潈琛屼负 -* fix 淇 浠g爜鐢熸垚椤甸潰鍙傛暟缂哄皯閫楀彿闂 - -### 绉婚櫎鍔熻兘 - -* remove 绉婚櫎鍘熸湁鐭俊鍔熻兘(寤鸿浣跨敤sms4j) -* remove 绉婚櫎xxljob鍔熻兘(寤鸿浣跨敤powerjob) - - -## v1.8.0 - 2023-07-11 - -### 閲嶅ぇ鏇存柊 - -* [閲嶅ぇ鏇存柊] 鏂板 sms4j 鐭俊铻嶅悎妗嗘灦鏁村悎(鏀寔鏁板崄绉嶇煭淇″巶鍟嗘帴鍏ャ�佸彂閫侀檺鍒躲�佽礋杞藉潎琛$瓑鍔熻兘) -* [涓嶅吋瀹规洿鏂癩 绉婚櫎 鍘熺煭淇″姛鑳�(寤鸿浣跨敤鏂� sms4j 鍔熻兘) -* [閲嶈杩佺Щ] 杩佺Щ vue3 鍓嶇鍒颁富浠撳簱缁熶竴缁存姢 - -### 渚濊禆鍗囩骇 - -* update springboot 2.7.11 => 2.7.13 -* update spring-cloud 2021.0.7 => 2021.0.8 -* update satoken 1.34.0 => 1.35.0.RC -* update easyexcel 3.2.1 => 3.3.1 -* update sms4j 2.2.0 -* update element 2.15.12 => 2.15.13 - -### 鍔熻兘鏇存柊 - -* update 浼樺寲 StreamUtils 鏂规硶杩囨护null鍊� -* update 浼樺寲 椤电鍦‵irefox娴忚鍣ㄨ閬尅 -* update 浼樺寲 鍦ㄥ叏灞�寮傚父鎷︽埅鍣ㄤ腑澧炲姞涓ょ被寮傚父澶勭悊 -* update 浼樺寲 涓嬭浇zip鏂规硶澧炲姞閬僵灞�(鎰熻阿@姊佸墤閿�) -* update 浼樺寲 鐢ㄦ埛鏄电О闈炵┖鏍¢獙 -* update 浼樺寲 淇敼瑙掕壊濡傛灉鏈粦瀹氱敤鎴峰垯鏃犻渶娓呯悊 -* update 浼樺寲 RepeatSubmitAspect 閫昏緫閬垮厤骞跺彂璇锋眰闂 -* update 浼樺寲 satoken 杩囨湡閰嶇疆 鏀寔澶氱token鑷畾涔夋湁鏁堟湡 -* update 浼樺寲 鍔犲瘑娉ㄨВ娉ㄩ噴閿欒 -* update 浼樺寲 鍒囨崲 maven 浠撳簱鍒板崕涓轰簯(aliyun 涓嶅彲鐢�) -* update 浼樺寲 excel 瀵煎嚭瀛樺湪鍚堝苟椤规椂鍦ㄥ垵濮嬪寲绫绘椂杩涜鏁版嵁鐨勫鐞嗛伩鍏嶅娆¤皟鐢�(鎰熻阿@yueye) -* update 浼樺寲 閲嶆瀯 CellMergeStrategy 鏀寔澶氱骇琛ㄥご淇涓�浜涘皬闂 鏁寸悊浠g爜缁撴瀯 -* update 琛ュ叏 SysLogininforMapper.xml 缂哄け瀛楁 -* update 浼樺寲 demo 妯″潡 璺緞閫傞厤缁熶竴鍓嶇 -* update 璋冩暣 gateway 璁块棶鏃ュ織杈撳嚭绛夌骇 - -### 鏂板鍔熻兘 - -* add 鏂板 RedisUtils.setObjectIfAbsent 涓嶅瓨鍦ㄥ垯璁剧疆鏂规硶 -* add 鏂板 Excel 瀵煎嚭闄勫甫鏈変笅鎷夋(瀛楀吀鑷姩瀵煎嚭涓轰笅鎷夋) 鍙嚜瀹氫箟澶氱骇涓嬫媺妗�(鎰熻阿@Emil.Zhang) -* add 鏂板 OssClient File 鏂囦欢涓婁紶鏂规硶 -* add 澧炲姞 RedisUtils 鎵归噺鍒犻櫎 hash key 鏂规硶 - -### 闂淇 - -* fix 淇 sa-token.check-same-token 寮�鍏冲缃戝叧閴存潈鏃犳晥闂 -* fix 淇 鏈嶅姟鏈坊鍔� common-security 妯″潡瀵艰嚧寮傚父鎷︽埅鍣ㄤ笉鐢熸晥闂 -* fix 淇 鍒犻櫎 skywalking dubbo 2.X 鎻掍欢閬垮厤涓� 3.X 鍑虹幇鍏煎鎬ч棶棰� -* fix 淇 excel 鏋氫妇鍙嶅悜瑙f瀽澶辫触闂 -* fix 淇 瀛楀吀缂撳瓨娉ㄨВ浣跨敤閿欒闂 -* fix 淇 鏂板瑙掕壊浣跨敤鍐呯疆绠$悊鍛樻爣璇嗙闂 -* fix 淇 缂撳瓨鐩戞帶鍥捐〃 鏀寔璺熼殢灞忓箷澶у皬鑷�傚簲璋冩暣(鎰熻阿@鎶撹洐甯�) -* fix 淇 闃查噸缁勪欢 閿欏垹娉ㄨВ闂 -* fix 淇 CacheName 缂撳瓨key瀛樺偍閿欒闂 -* fix 淇 瀛楀吀缂撳瓨娉ㄨВ浣跨敤閿欒闂 -* fix 淇 鐢ㄦ埛绡℃敼绠$悊鍛樿鑹叉爣璇嗙瓒婃潈闂 -* fix 淇 鐧诲綍鏍¢獙閿欒娆℃暟鏈揪鍒颁笂闄愭椂 閿欒娆℃暟缂撳瓨鏈缃湁鏁堟椂闂撮棶棰� -* fix 淇 OssClient 鍒囨崲鏈嶅姟 瀹炰緥涓嶆纭棶棰� -* fix 淇 element ui 鍥犵増鏈�屾湭琚伐鍏疯瘑鍒棶棰�(鎰熻阿@姊佸墤閿�) -* fix 淇 admin鐩戞帶 鍒囨崲tab椤甸渶瑕侀噸澶嶇櫥褰曢棶棰� -* fix 淇 涓汉涓績tab鏍忓叧闂〉闈㈠唴瀹瑰帇缂╅棶棰� - -## v2.0.0 - 2023-06-15 - -**閲嶇偣璇存槑: 鐢变簬 SpringCloudAlibaba 涓�鐩存湭鍙戝竷姝e紡鐗� 瀵艰嚧绯荤粺搴曞眰缁勪欢鍙兘瀛樺湪浜涜闂 鏁呰�屼笉寤鸿鐢熶骇浣跨敤 妗嗘灦涔熷皢鐩存帴寮�鍚悗缁� 2.1.0 鐨勫紑鍙戝伐浣�** - -### 閲嶅ぇ鏇存柊 - -* [涓嶅吋瀹瑰崌绾 java 鐗堟湰浠� jdk 8 鍗囩骇鍒� jdk 17 涓旈渶瑕佷娇鐢� graalvm 杩愯(鏆傛椂鏈В鍐冲師鐢焜dk瀛樺湪鐨勯棶棰�) -* [涓嶅吋瀹瑰崌绾 springboot 鍗囩骇 3.0 鐗堟湰 -* [涓嶅吋瀹瑰崌绾 閲嶆瀯 椤圭洰妯″潡缁撴瀯 閲囩敤鎻掍欢鍖栫粨鏋� 鏄撴墿灞曟槗瑙h�� -* [涓嶅吋瀹瑰崌绾 com.sun.mail 鏇存敼涓� jakarta.mail 淇敼鏈�鏂板啓娉� -* [涓嶅吋瀹瑰崌绾 javax.servlet 鏇挎崲涓� jakarta.servlet 鏇存柊鎵�鏈変唬鐮� -* [绠�鍖栨�у崌绾 榛樿寮�鍚鏉傜粨鏋� resultMap 鑷姩鏄犲皠 绠�鍖杧ml缂栫爜(澶氱粨鏋勫疄浣撻渶甯︿笂涓婚敭id) -* [鏁版嵁搴撴敼鍔╙ 鏇存柊 create_by update_by 瀛楁绫诲瀷 (淇濆瓨鐢ㄦ埛id) -* [鏁版嵁搴撴敼鍔╙ 鏂板 create_dept 瀛楁 (淇濆瓨鍒涘缓閮ㄩ棬id) -* [涓嶅吋瀹规洿鏂癩 system 妯″潡 鎵�鏈夊疄浣撶被鍧囦娇鐢� bo|vo 瑙勮寖鍖� -* [閲嶅ぇ鏇存柊] 鏂板 澶氱鎴峰姛鑳借璁� 鏁翠綋妗嗘灦浠g爜缁撴瀯涓庢暟鎹簱鏇存敼 -* [閲嶅ぇ鏇存柊] 鏂板 mapstruct-plus 鏇挎崲 BeanUtil 涓� BeanCopyUtils 宸ュ叿 -* [涓嶅吋瀹规洿鏂癩 閲嶆瀯 鐧诲綍娉ㄨВ鎺ュ彛涓巆loud鐗堟湰缁熶竴鎺ュ彛璺緞 -* [涓嶅吋瀹规洿鏂癩 閲嶆瀯 BaseMapperPlus鎺ュ彛 鍘婚櫎 `@param <M> Mapper` 娉涘瀷 -* [涓嶅吋瀹规洿鏂癩 绉婚櫎 vue2 鍓嶇宸ョ▼ 鍏ㄩ潰鍚敤 vue3 -* [閲嶅ぇ鏇存柊] 鏂板 vue3 + TS 鐗堟湰鍓嶇(鐙珛浠撳簱鍚庣画涓嶤loud鐗堟湰鍏辩敤) -* [閲嶅ぇ鏇存柊] 澧炲姞 websocket 妯″潡 鏀寔token閴存潈 鏀寔鍒嗗竷寮忛泦缇ゆ秷鎭悓姝� -* [閲嶅ぇ鏇存柊] 妗嗘灦鏂囨。鍏ㄩ潰缈绘柊 https://plus-doc.dromara.org -* [涓嶅吋瀹规洿鏂癩 浠g爜鐢熸垚 鏀寔浠g爜鐢熸垚澶氭暟鎹簮缁熶竴瀛樺偍(涓诲簱瀛樺偍瀛愬簱鐨勮〃 鏃犻渶瀛愬簱鍔爂en琛ㄤ簡) -* [涓嶅吋瀹规洿鏂癩 閲嶆瀯 灏嗙郴缁熷唴缃厤缃斁缃埌common鍖呭唴鐙珛鍔犺浇 涓嶅厑璁哥敤鎴烽殢鎰忎慨鏀� - -### 渚濊禆鍗囩骇 - -* update java 1.8 => 17 -* update springboot 2.7.7 => 3.0.7 -* update springcloud 2021.0.6 => 2022.0.2 -* update springcloud-alibaba 2022.0.0.0-RC2 -* update springboot-admin 2.7.10 => 3.0.4 -* update springdoc 1.6.14 => 2.1.0 -* udpate dubbo 3.1.8 => 3.2.2 -* update lock4j 2.2.3 => 2.2.4 -* update dynamic-ds 3.5.2 => 3.6.1 -* update easyexcel 3.1.5 => 3.2.1 -* update hutool 5.8.11 => 5.8.18 -* update redisson 3.19.2 => 3.20.1 -* update lombok 1.18.24 => 1.18.26 -* update spring-boot.mybatis 2.2.2 => 3.0.1 -* update mapstruct-plus 1.2.3 -* update maven-compiler-plugin 3.10.1 => 3.11.0 -* update maven-surefire-plugin 3.0.0-M7 => 3.0.0 -* update docker mysql 8.0.31 => 8.0.33 -* update docker nginx 1.22.1 => 1.32.4 -* update docker redis 6.2.7 => 6.2.12 -* update docker minio RELEASE.2023-04-13T03-08-07Z - -### 鍔熻兘鏇存柊 - -* update 閫傞厤 AsyncConfig 鏇挎崲杩囨湡缁ф壙绫绘敼涓哄疄鐜� AsyncConfigurer 鎺ュ彛 -* update 閫傞厤 redis 鏂扮増鏈厤缃枃浠跺啓娉� -* update 閫傞厤 鑾峰彇redis 鐩戞帶鍙傛暟鎺ュ彛 鏇挎崲杩囨湡璇硶 -* update 閫傞厤 sa-token 鏇挎崲鏂颁緷璧� sa-token-spring-boot3-starter -* update 閫傞厤 springboot-admin 鏀逛负鏈�鏂� spring-security 鍐欐硶 -* update 閫傞厤 springdoc 鏂扮増鏈厤缃柟寮� -* update 閫傞厤 ServletUtils 鏇存崲缁ф壙 JakartaServletUtil -* update 閫傞厤 鏂板簭鍒楀寲娉ㄨВ -* update 浼樺寲 鍒╃敤 resultMap 鑷姩鏄犲皠閰嶇疆 绠�鍖� xml (闈炲祵濂�) -* update 浼樺寲 璋冩暣 system entity 瀹炰綋涓� controller 鍖呯粨鏋� -* update 浼樺寲 瀹炰綋绫讳腑鏍¢獙娉ㄨВ鐨勬彁绀轰俊鎭� -* update 浼樺寲 浣跨敤 jdk17 璇硶浼樺寲浠g爜 -* update 浼樺寲 鎵�鏈� properties 鏂囦欢鏀逛负娉ㄨВ鍚敤 -* update 鏇存柊 docker 鍩虹闀滃儚 graalvm java17 -* update 浼樺寲 鐢ㄦ埛澶村儚 鏀逛负瀛樺偍 ossId 浣跨敤杞崲妯″潡杞负 url 灞曠ず -* update 浼樺寲 閲嶆瀯 CellMergeStrategy 鏀寔澶氱骇琛ㄥご淇涓�浜涘皬闂 鏁寸悊浠g爜缁撴瀯 -* update 浼樺寲 鐧诲綍娴佺▼浠g爜娉ㄩ噴 -* update 浼樺寲 灏嗘鏋跺唴鐨剆wagger鍛藉悕鏇存敼涓簊pringdoc鍛藉悕閬垮厤璇В - -### 鏂板鍔熻兘 - -* add 鏂板 flatten-maven-plugin 鎻掍欢缁熶竴鐗堟湰鍙风鐞� -* add 鏂板 ip2region 瀹炵幇绂荤嚎IP鍦板潃瀹氫綅搴� - -### 绉婚櫎鍔熻兘 - -* remove 绉婚櫎 BeanCopyUtils 宸ュ叿绫� 涓� JDK17 涓嶅吋瀹� -* remove 绉婚櫎 devtools 渚濊禆 骞朵笉濂界敤(寤鸿鐩存帴鐢╥dea鑷甫鐨勭儹鏇�) -* remove 绉婚櫎 vue2 鍓嶇宸ョ▼ 缁熶竴浣跨敤 vue3 宸ョ▼ - -### 淇鍔熻兘 - -* fix 淇 鏍规嵁 seata 瀹樻柟鎻愪氦璁板綍 涓存椂淇 seata 鍏充簬jdk17浠g悊鐨刡ug -* fix 淇 鐧诲綍鏍¢獙閿欒娆℃暟鏈揪鍒颁笂闄愭椂 閿欒娆℃暟缂撳瓨鏈缃湁鏁堟椂闂撮棶棰� -* fix 淇 common-core 鍖呬娇鐢╝op娉ㄨВ 浣嗘湭娣诲姞aop瀹炵幇绫诲鑷村崟鐙娇鐢ㄦ姤閿欓棶棰� - -## v1.7.0 - 2023-05-10 - -### 渚濊禆鍗囩骇 - -* update springboot 2.7.9 => 2.7.11 淇 DoS 婕忔礊 淇CVE婕忔礊 -* update springcloud 2021.0.6 => 2021.0.7 -* update springcloud-alibaba 2021.0.4.0 => 2021.0.5.0 -* update dubbo 3.1.7 => 3.1.10 -* update nacos 2.2.0 => 2.2.1 -* update xxljob 2.3.1 => 2.4.0 -* update minio 鍗囩骇鑷虫渶鏂扮増 閬垮厤浣庣増鏈俊鎭硠婕忛棶棰� -* update hutool 5.8.15 => 5.8.18 -* update redisson 3.20.0 => 3.20.1 -* update lombok 1.18.24 => 1.18.26 - -### 鍔熻兘鏇存柊 - -* update 浼樺寲 鏇存敼 sys_oss_config 琛ㄦ敞閲� 閬垮厤璇В -* update 浼樺寲 sys_logininfor 涓板瘜澶氱淇℃伅 -* update 椤圭洰姝e紡鍏ラ┗ dromara 寮�婧愮ぞ鍖� 鏇存敼椤圭洰鍦板潃 -* update 鍏ㄦ柊 logo 鍏ㄦ柊鑳屾櫙鍥�(璁捐甯堟墦閫�) -* update 浼樺寲 浠g爜鐢熸垚妯″潡鐨勬暟鎹悓姝ュ姛鑳� -* update 淇敼澶氬洟闃熷紑鍙戞彃浠讹紝鏀寔澶氱綉鍗� -* update 淇敼controller涓牎楠岀洿鎺ヨ繑鍥濺.fail -* update 浼樺寲 瑙掕壊sort鍊间竴鏍风殑鎺掑簭闂 -* update 鏇存崲榛樿鐢ㄦ埛澶村儚 -* update 浼樺寲 WebFluxUtils.getOriginalRequestUrl 鏂规硶鑾峰彇绌鸿矾寰勬姤閿欓棶棰� -* update 鍘婚櫎same-token鏈夐檺鏈熼厤缃紝浣跨敤榛樿閰嶇疆锛堜竴澶╋級 -* update 浼樺寲鍥哄畾澶撮儴椤电婊氬姩鏉¤闅愯棌鐨勯棶棰� -* update delete vue-multiselect style -* update 鎸変唬鐮佽鑼冭ˉ鍏ㄩ噸鍐欐敞瑙� -* update 浼樺寲 鏋佺鎯呭喌鑾峰彇LoginUser鍙兘涓簄ull闂 -* update 浼樺寲 鏇存敼绯荤粺鎵�鏈夋湇鍔℃棩蹇楅厤缃枃浠跺懡鍚嶄负 logback-plus.xml 閬垮厤涓庡叾浠栨鏋堕粯璁ら厤缃啿绐� -* update 浼樺寲 skywalking-agent 鎺㈤拡鏃ュ織绛夌骇璋冩暣涓� WARN 鍑忓皯鏃犵敤鏃ュ織杈撳嚭 -* update 浼樺寲 鍔犺В瀵嗘ā鍧� 灏唍ull鍒ゆ柇涓嬫帹闃叉浠讳綍鍙兘鐨刵ull鍑虹幇 -* update 浼樺寲 鍦ㄧ嚎鐢ㄦ埛token鑾峰彇鏂瑰紡 -* update 浼樺寲 鐢ㄦ埛鏇存敼瑙掕壊 韪㈡帀瑙掕壊鐩稿叧鎵�鏈夊湪绾跨敤鎴� - -### 鏂板姛鑳� - -* add 闆嗘垚 ip2region 瀹炵幇绂荤嚎IP鍦板潃瀹氫綅搴� -* add 澧炲姞 閭楠岃瘉鐮佸彂閫佹帴鍙� -* add 澧炲姞 閭鐧婚檰鎺ュ彛 -* add 澧炲姞 EncryptUtils 鍔犺В瀵嗗畨鍏ㄥ伐鍏风被 鍙互澶勭悊base64,aes,sm4,sm2,rsa,md5,sha256鍔犺В瀵� -* add 澧炲姞 EncryptUtils 绫讳腑澧炲姞鍥藉瘑sm3鐨勪笉鍙�嗗姞瀵嗙畻娉� -* add 鏂板 蹇界暐鏁版嵁鏉冮檺鍐欐硶 闃叉寮傚父涓嶆墽琛屽叧闂棶棰� - -### 闂淇 - -* fix 淇 MybatisExceptionHandler 鏈嚜鍔ㄨ杞介棶棰� -* fix 淇 浠g爜鐢熸垚 鐐归�夋寜閽笉鐢熸晥闂 -* fix 淇 Nacos 鏈嶅姟 SpringBoot-admin 瀹㈡埛绔姛鑳藉け鏁堥棶棰� -* fix 淇 findInSet 鍦╩ysql涓嬫柟娉曟悳绱㈤潪鏁板瓧瀛楁鏃� 鏃犲紩鍙锋姤閿欓棶棰� -* fix 淇 ruoyi-demo postgres 鏁版嵁搴撶敤鎴峰悕瀵嗙爜鍙橀噺閿欒 -* fix 淇 oracle postgres 鏁版嵁搴撴棩蹇楄〃绱㈠紩鍒涘缓閿欒 -* fix 淇 鏃犳硶娉ㄥ叆 mailProperties 瀵艰嚧 resource 妯″潡鏃犳硶鍚姩闂 -* fix 淇tab鏍忊�濆叧闂叾浠栤�滃紓甯哥殑闂 -* fix 淇 鍔犺В瀵嗘嫤鎴櫒 瀵硅薄灞炴�т负null闂 -* fix 淇 鍙栨秷oss棰勮鐘舵�佷慨鏀� 鍥炬爣鍙樺寲涓嶆甯搁棶棰� -* fix 淇 nacos 鏂扮増鏈崌绾у悗 涓� docker 鍩虹闀滃儚绯荤粺瀛樺湪鍏煎鎬ч棶棰� - - -## v1.6.0 - 2023-03-14 - -### 閲嶅ぇ鏇存柊 - -[閲嶅ぇ鏇存柊] add 鏂板 閫氱敤缈昏瘧妯″潡 `ruoyi-common-translation` 瀹炵幇(閮ㄩ棬鍚嶃�佸瓧鍏搞�乷ss銆佺敤鎴峰悕) -[閲嶅ぇ鏇存柊] add 鏂板 鏁版嵁鍔犺В瀵嗘ā鍧� `ruoyi-common-encrypt` - - -### 渚濊禆鍗囩骇 - -* update springboot 2.7.7 => 2.7.9 -* update springcloud 2021.0.5 => 2021.0.6 -* update easyexcel 3.1.5 => 3.2.1 -* update redisson 3.19.1 => 3.20.0 -* update springdoc 1.6.14 => 1.6.15 -* update hutool 5.8.12 => 5.8.15 (13涓�14鏈夐棶棰樺嬁浣跨敤) -* update logstash-sdk 7.1.1 => 7.2 -* update aws-java-sdk-s3 1.12.373 => 1.12.400 -* update tencent-sms 3.1.660 => 3.1.687 -* update skywalking 8.9.1 => 9.3.0 -* update skywalking-agent 8.13.0 => 8.14.0 -* update dubbo 3.1.4 => 3.1.7 瑙e喅dubbo鎶ヤ竴浜涙棤鐢ㄨ鍛婇棶棰� -* update element-ui 2.15.10 => 2.15.12 - -### 鍔熻兘鏇存柊 - -* update 浼樺寲 淇敼 oss 閰嶇疆椤甸潰寮�鍏宠鏄� 閬垮厤閫犳垚璇В -* update 浼樺寲 `gateway` 瀵规帴 `sentinel` 浣跨敤缃戝叧鐗瑰畾妯″紡 -* update 浼樺寲 杞Щ `logback-common` 閰嶇疆鍒� `common-web` 妯″潡 `gateway` 鍗曠嫭澶勭悊 -* update 浼樺寲 璋冩暣杩炴帴姹犻粯璁ゅ弬鏁� -* update 浼樺寲 `zookeeper` 鑷甫鎺у埗鍙板崰鐢� `8080` 绔彛 -* update 浼樺寲 `DictDataMapper` 娉ㄨВ鏍囨敞杩囨湡 鎺ㄨ崘浣跨敤 `@Translation` 娉ㄨВ -* update 浼樺寲 鑾峰彇鑿滃崟鏁版嵁鏉冮檺鎺ュ彛 鍒犻櫎鏃犵敤瑙掕壊灞炴�т笌閫昏緫 -* update 浼樺寲 璋冩暣杩炴帴姹犳渶闀跨敓鍛藉懆鏈� 闃叉鍑虹幇璀﹀憡 -* update 浼樺寲 杩炴帴姹犲鍔� `keepaliveTime` 鎺㈡椿鍙傛暟 -* update 浼樺寲 `DataPermissionHelper` 澧炲姞 `寮�鍚�/鍏抽棴` 蹇界暐鏁版嵁鏉冮檺鍔熻兘 -* update 閲嶆瀯 `OssFactory` 鍔犺浇鏂瑰紡 鏀逛负姣忔姣斿閰嶇疆鍋氬疄渚嬫洿鏂� -* update 浼樺寲 鏇存柊瑙掕壊鍚庤涪鎺夋墍鏈夌浉鍏崇殑鐧诲綍鐢ㄦ埛 鐢ㄦ埛閲忚繃澶т細瀵艰嚧redis闃诲鍗¢】(搴旂矇涓濊姹�) -* update 浼樺寲 缈昏瘧缁勪欢 鏀寔杩斿洖鍊兼硾鍨� 鏀寔澶氱绫诲瀷鏁版嵁缈昏瘧(渚嬪: 鏍规嵁涓婚敭缈昏瘧鎴愬璞�) -* update 浼樺寲 `tagsView` 鍙抽�夋锛岄椤典笉搴旇瀛樺湪鍏抽棴宸︿晶閫夐」 -* update 浼樺寲 `copyright 2023` -* update 浼樺寲 鏃ュ織娉ㄨВ鏀寔鎺掗櫎鎸囧畾鐨勮姹傚弬鏁� -* update 浼樺寲 涓氬姟鏍¢獙浼樺寲浠g爜 -* update 浼樺寲 鏃ュ織绠$悊浣跨敤绱㈠紩鎻愬崌鏌ヨ鎬ц兘 -* update 浼樺寲 妗嗘灦鏃堕棿妫�绱娇鐢ㄦ椂闂撮粯璁ゅ�� `00:00:00 - 23:59:59` -* update 浼樺寲 oss 棰勮浣跨敤 `ImagePreview` 缁勪欢 -* update 浼樺寲 缁熶竴鐧诲綍鎺ュ彛浠ょ墝key - - -### 鏂板姛鑳� - -* add 鏂板 鏁版嵁鍔犺В瀵嗘ā鍧� 娴嬭瘯妗堜緥 -* add 鏂板 `StringUtils` `splitTo` 涓� `splitList` 鏂规硶 浼樺寲涓氬姟浠g爜 - -### 闂淇 - -* fix 淇 vue3妯℃澘 鍒犻櫎鍔熻兘涔﹀啓閿欒 -* fix 淇 閮ㄥ垎鏈嶅姟鏈紑鍚棩蹇楀瓨鍌� -* fix 淇 鎺ュ彛闂寮�鍏充笉鐢熸晥闂 -* fix 淇 浼樺寲鏂囦欢涓嬭浇鍑虹幇鐨勫紓甯� -* fix 淇 淇敼瀵嗙爜鏃ュ織瀛樺偍鏄庢枃闂 -* fix 淇 浠g爜鐢熸垚 `postgreSQL` 鏌ュ嚭澶氫綑鐨勫凡鍒犻櫎瀛楁 - -## v1.5.0 - 2023-01-13 - -### 閲嶅ぇ鏇存柊 - -* [閲嶅ぇ鏇存柊] 妗嗘灦涓讳綋涓氬姟涓庝唬鐮佺敓鎴愬櫒 瀹屾垚 oracle postgres 澶氭暟鎹簱绫诲瀷鏀寔(涓棿浠朵笉鏀寔) -* [閲嶅ぇ鏇存柊] 浣跨敤 spring 浜嬩欢鍙戝竷鏈哄埗 閲嶆瀯鐧诲綍鏃ュ織涓庢搷浣滄棩蹇� 鏀寔澶氫簨浠剁洃鍚棤鍏ヤ镜鎵╁睍 -* 渚嬪: 鍙互澧炲姞涓�涓洃鍚�呭皢鏃ュ織涓婁紶鑷矱S绛夊瓨鍌� 瀵瑰師鏈夐�昏緫鏃犲奖鍝� - -### 渚濊禆鍗囩骇 - -* update springboot 2.7.6 => 2.7.7 -* update springboot-admin 2.7.7 => 2.7.10 -* update dubbo 3.1.3 => 3.1.4 -* update seata 1.5.2 => 1.6.1 閫傞厤鍗囩骇 -* update nacos 2.1.2 => 2.2.0 閫傞厤鍗囩骇 -* update mybatis-plus 3.5.2 => 3.5.3.1 -* update sa-token 1.33.0 => 1.34.0 -* update springdoc 1.6.13 => 1.6.14 -* update snakeyaml 1.32 => 1.33 -* update easyexcel 3.1.3 => 3.1.5 -* update redisson 3.18.0 => 3.19.1 -* update easy-es 1.1.0 => 1.1.1 -* update hutool 5.8.10 => 5.8.11 -* update aws-s3 1.12.349 => 1.12.373 -* update aliyun-sms 2.0.22 => 2.0.23 -* update tencent-sms 3.1.635 => 3.1.660 -* update echarts 4.9.0 => 5.4.0 - -### 鍔熻兘鏇存柊 - -* update 浼樺寲 BaseMapperPlus 浣跨敤 MP V3.5.3 鏂板伐鍏风被 Db 绠�鍖栨壒澶勭悊鎿嶄綔瀹炵幇 -* update 浼樺寲 demo鏈嶅姟 杩囨护鍋ュ悍妫�鏌� sql 鎵撳嵃 -* update 浼樺寲 浠g爜鐢熸垚涓庢鏋朵富浣撲娇鐢ㄧ浉鍚岀殑涓婚敭鐢熸垚鍣� 鍏ㄥ眬缁熶竴閬垮厤闂 -* update 浼樺寲 绯荤粺鐧诲綍 浣跨敤鍗曡〃鏌ヨ鏍¢獙鐢ㄦ埛 閬垮厤澶氭join鏌ヨ -* update 浼樺寲 閫傞厤妗嗘灦澶氭暟鎹簱鏀寔 瀹屾垚 oracle postgres 鏁版嵁搴撻�傞厤(鏀惧純 sqlserver 閫傞厤 鍘熷洜: 鍩虹涓棿浠跺潎涓嶆敮鎸�) -* update 浼樺寲 鍒犻櫎涓� sql 鍐呮棤鐢ㄦ暟鎹� -* update 浼樺寲 鍒犻櫎 vue3 妯℃澘鏃犵敤鍙傛暟 -* update 浼樺寲 閲嶆瀯 ExcelUtil 鍏ㄥ鍑烘柟娉曟敮鎸� OutputStream 娴佸鍑� 涓嶅眬闄愪簬 response -* update 浼樺寲 maven 鍦板潃鍒囨崲鍥� aliyun 浠撳簱 -* update 浼樺寲 springdoc 閰嶇疆閴存潈澶村啓姝婚棶棰� 澧炲姞鎸佷箙鍖栭壌鏉冨ご閰嶇疆 -* update 浼樺寲 actuator 渚濊禆鏁村悎鍒� common-web 妯″潡 -* update 浼樺寲 楠岃瘉鐮佺粨鏋滀娇鐢� spel 寮曟搸鑷姩璁$畻 -* update 浼樺寲 鏁版嵁鏉冮檺澶勭悊鍣� 鍙橀噺鍛藉悕閿欒 -* update 浼樺寲 鍘婚櫎 RedisUtils 鏃犵敤缁ф壙 -* update 浼樺寲 寮圭獥鍐呭杩囧灞曠ず涓嶅叏闂 -* update 浼樺寲 鍒犻櫎 fuse 鏃犳晥閫夐」 maxPatternLength -* update 浼樺寲 minio 瀹夎璀﹀憡 浣跨敤鏂扮増鏈弬鏁� -* update 浼樺寲 浣跨敤 spring 浜嬩欢鍙戝竷鏈哄埗 閲嶆瀯鐧诲綍鏃ュ織涓庢搷浣滄棩蹇� -* update 浼樺寲 浣跨敤 spring 浜嬩欢鏈哄埗 閲嶆瀯 OssConfig 缂撳瓨鏇存柊 -* update 浼樺寲 鍗曞厓鏍煎悎骞跺垽鏂璫ellValue鏄惁鐩哥瓑鏂规硶 -* update 浼樺寲 璋冩暣 gateway 鎷︽埅鍣ㄦ墽琛岄『搴� 浼樺厛澶勭悊 xss 杩囨护 鐒跺悗杩涜缂撳瓨澶勭悊 - -### 鏂板姛鑳� - -* add 澧炲姞 GET 璇锋眰鎻愪氦鏃ユ湡鍙傛暟 榛樿鏍煎紡鍖栭厤缃� -* add 澧炲姞 RedisUtils 妫�鏌ョ紦瀛樺璞℃槸鍚﹀瓨鍦ㄦ柟娉� -* add 澧炲姞 oracle postgres docker缂栨帓 -* add 鏂板 浠g爜鐢熸垚鍣ㄩ�傞厤 澶氭暟鎹簱鍙垏鎹㈢敓鎴愪唬鐮� -* add 鏂板 oracle postgres 鏁版嵁搴撴鏋秙ql鑴氭湰 -* add 澧炲姞 DataBaseHelper 鏁版嵁搴撳姪鎵� 鐢ㄤ簬閫傞厤澶氱被鍨嬫暟鎹簱 -* add 鏂板 BeanCopyUtils#mapToMap 鏂规硶 - -### 闂淇 - -* fix 淇 娉ㄥ唽椤甸潰 楠岃瘉鐮佸紑鍏充笉鐢熸晥闂 -* fix 淇 鏂扮増鏈� dubbo-filter-seata 鎻掍欢鍐呮牳涓巗eata涓嶄竴鑷撮棶棰�(涓存椂) -* fix 淇 鏍规嵁 key 鏇存柊鍙傛暟閰嶇疆鎶� null 闂 -* fix 淇 鐢ㄦ埛娉ㄥ唽 鐢ㄦ埛绫诲瀷瀛楁涔﹀啓閿欒 -* fix 淇 浠g爜鐢熸垚鍥剧墖/鏂囦欢/鍗曢�夋椂閫夋嫨蹇呭~鏃犳硶鏍¢獙闂 -* fix 淇 淇敼鍙傛暟閿悕鏃� 鏈Щ闄よ繃鏈熺紦瀛橀厤缃� -* fix 淇 鍐呯綉閴存潈 Filter 浼樺厛绾ч棶棰� 瀵艰嚧 websocket 杩炴帴澶辫触 -* fix 淇 gateway 娴佹帶瑙勫垯鐢熸晥浣嗕笉鏄剧ず闂 -* fix 淇 鏂扮増鏈� Redisson 瀛樺湪涓� boot 2.X 鐨勫吋瀹规�ч棶棰� - -## v1.4.0 - 2022-12-01 - -### 閲嶅ぇ鏇存柊 -* [閲嶅ぇ鏇存柊] 鏂板 瀵规帴 skywalking 鍏ㄥ姛鑳�(璇︾粏鐪嬩笅鏂规柊鍔熻兘鍒楄〃) -* [閲嶅ぇ鏇存柊] 閲嶆瀯 ruoyi-nacos 浣跨敤瀹樻柟渚濊禆鏁村悎 瑙e喅涓�浜涢棶棰� 骞跺崌绾� 2.1.2 鐗堟湰 -* [閲嶅ぇ鏇存柊] 鏂板 oss 绉佹湁搴撳姛鑳�(鏁版嵁搴撶粨鏋勬敼鍔� 闇�鎵ц鍗囩骇sql) -* [閲嶅ぇ鏇存柊] 浼樺寲 鏁版嵁婧愯繛鎺ユ睜浠� druid 鍒囨崲鍒� hikari(鍘熷洜鐪嬫枃妗�) -* [閲嶅ぇ鏇存柊] 鏂板 瀵规帴 prometheus + grafana 鍏ㄥ姛鑳�(璇︾粏鐪嬩笅鏂规柊鍔熻兘鍒楄〃) - -### 渚濊禆鍗囩骇 -* update springcloud 2021.0.4 => 2021.0.5 -* update springboot 2.7.4 => 2.7.6 -* update springboot-admin 2.7.5 => 2.7.7 -* update springdoc 1.6.11 => 1.6.13 -* update poi 5.2.2 => 5.2.3 -* update hutool 5.8.6 => 5.8.10 -* update aliyun-sms 2.0.18 => 2.0.22 -* update tencent-sms 3.1.591 => 3.1.611 -* update sa-token 1.30.0 => 1.33.0 -* update redisson 3.17.6 => 3.18.0 -* update easy-es 1.0.2 => 1.1.0 -* update easyexcel 3.1.1 => 3.1.3 -* update lock4j 2.2.2 => 2.2.3 -* update s3-adk 1.12.300 => 1.12.349 -* update sentinel 1.8.5 => 1.8.6 -* update nacos 2.1.1 => 2.1.2 -* update ELK 7.17.2 => 7.17.6 鍗囩骇闀滃儚鐗堟湰 -* update nginx 1.21.6 => 1.22.1 淇婕忔礊 -* update mysql-docker 8.0.29 => 8.0.31 - -### 鍔熻兘鏇存柊 -* update 浼樺寲 鍒嗛〉瀵硅薄 PageQuery 鏀寔澶氭帓搴� 閫傞厤 鏂囦欢绠$悊 椤甸潰鏀寔澶氭帓搴� -* update 浼樺寲 鑾峰彇鐢ㄦ埛淇℃伅getInfo鎺ュ彛 浣跨敤缂撳瓨鏁版嵁鑾峰彇 -* update 浼樺寲 rpc鏂囦欢涓婁紶 澧炲姞 ossId 鏁版嵁杩斿洖 -* update 浼樺寲 nacos 闆嗙兢妯″紡鎼缓 鍏充簬 nacos.home 娉ㄩ噴璇存槑 -* update 浼樺寲 淇敼澶村儚鍦ㄥ皬灞忓箷涓婇〉闈㈠竷灞�閿欎綅鐨勯棶棰� -* update 浼樺寲 oss 浜戝巶鍟嗗鍔� 鍗庝负obs鍏抽敭瀛� -* update 浼樺寲 閲嶇疆鏃跺彇娑堥儴闂ㄩ�変腑 -* update 浼樺寲 鏂板杩斿洖璀﹀憡娑堟伅鎻愮ず -* update 浼樺寲 鎶藉彇 logback 閫氱敤閰嶇疆 logback-common.xml 绠�鍖栧叾浠栨湇鍔℃棩蹇楁枃浠朵功鍐� -* update 鏇存敼 nacos 閰嶇疆鏂囦欢鐩綍 浠巇ev鏂囦欢澶硅縼绉诲埌nacos鏂囦欢澶逛笌鍏朵粬閰嶇疆鍖哄垎 -* update 浼樺寲 gateway 鍙紦瀛榖ody -* update 浼樺寲 Dockerfile 鍒涘缓鐩綍鍛戒护绠�鍖栨搷浣� -* update 浼樺寲 gateway filter椤哄簭 涓� 浠g爜宸ュ叿灏佽 -* update 浼樺寲 灏嗙┖ catch 鍧楀舰鍙傞噸鍛藉悕涓� ignored -* update 浼樺寲 satoken 渚濊禆浼犻�� -* update 浼樺寲 閲嶅啓瀛楀吀鏌ヨ 浣跨敤鏈湴缂撳瓨浼樺寲缃戠粶寮�閿� 鎻愬崌鍒颁笂绾у疄鐜板噺灏憆pc璋冪敤棰戠巼 浣跨敤娴佸鐞嗗噺灏戝瓧绗︿覆鎿嶄綔 -* update 浼樺寲 鍑忓皬鑵捐鐭俊寮曞叆jar鍖呯殑浣撶Н -* update 浼樺寲 绠�鍖栦竴浜涙柟娉曠殑鍐欐硶 -* update 浼樺寲 娑堥櫎Vue3鎺у埗鍙板嚭鐜扮殑璀﹀憡淇℃伅 -* update 浼樺寲 蹇界暐涓嶅繀瑕佺殑灞炴�ф暟鎹繑鍥� -* update 浼樺寲 閲嶆瀯 mysql-jdbc 渚濊禆鍒� mybatis 鍖呭唴 鏇挎崲涓烘渶鏂板潗鏍� - -### 鏂板姛鑳� -* add 鏂板 鎵�鏈夋湇鍔� docker 閮ㄧ讲瀵规帴 skywalking -* add 鏂板 涓夊ぇ mq 鏁村悎 skywalking -* add 鏂板 seata 鏁村悎 skywalking 鎵嬪姩缂栬瘧 seata 鎻掍欢鍖� -* add 鏂板 ruoyi-common-skylog 鏁村悎 skywalking 鏃ュ織鎺ㄩ�� -* add 澧炲姞 skywalking docker缂栨帓 -* add 澧炲姞 ruoyi-seata-server redis妯″紡閰嶇疆 -* add 鏂板 ruoyi-common-prometheus 妯″潡 鐢ㄤ簬瀵规帴 prometheus 鐩戞帶 -* add 鏂板 docker prometheus + grafana 瀹瑰櫒缂栨帓 -* add 鏂板 ruoyi-monitor 鐩戞帶鏈嶅姟 鎻愪緵 prometheus http_sd 鏈嶅姟鍙戠幇鍔熻兘 -* add 鏂板 鎵�鏈夋湇鍔℃暣鍚� ruoyi-common-prometheus 妯″潡 -* add 鏂板 grafana 鐩戞帶澶у睆閰嶇疆鏂囦欢(妗嗘灦瀹氬埗) -* add 鏂板 浣跨敤 mica-metrics 涓� undertow 鎻愪緵鍋ュ悍妫�鏌� -* add 鏂板 瀛楀吀鏁版嵁鏄犲皠缈昏瘧娉ㄨВ -* add 澧炲姞 RedisUtils 鑾峰彇缂撳瓨Map鐨刱ey鍒楄〃 - -### 闂淇 -* fix 淇 寮�鍚处鍙峰悓绔簰鏂ョ櫥褰� 琚《鎺夊悗鐧诲嚭鎶ull寮傚父闂 -* fix 淇 璁剧疆NameMapper瀵艰嚧闃熷垪鍔熻兘寮傚父闂 -* fix 淇 EnvironmentPostProcessor 涓嶇敓鏁堥棶棰� -* fix 淇 鏂囦欢涓婁紶缁勪欢鏍煎紡楠岃瘉闂 -* fix 淇 ruoyi-xxl-job-admin 鏈嶅姟鍋ュ悍妫�鏌ラ厤缃己澶遍棶棰� -* fix 淇 Excel瀵煎嚭瀛楀吀鍊艰浆鎹㈡柟娉曠敱浜庡唴閮ㄨ皟鐢ㄧ紦瀛樹笉鐢熸晥bug -* fix 淇 SysOss 鏂规硶鍐呴儴璋冪敤瀵艰嚧缂撳瓨涓嶇敓鏁� bug -* fix 淇 涓婚棰滆壊鍦―rawer缁勪欢涓嶄細鍔犺浇闂 -* fix 淇 淇敼鐢ㄦ埛淇℃伅 鏍¢獙鐢ㄦ埛鍚嶆湭鎺掗櫎褰撳墠鐢ㄦ埛闂 -* fix 淇 鍗囩骇 nginx 淇婕忔礊 https://www.oschina.net/news/214309 -* fix 淇 鐢ㄦ埛缂栬緫鏃惰鑹插拰閮ㄩ棬瀛樺湪鏃犳硶淇敼鎯呭喌 -* fix 淇 RemoteDictServiceImpl 浠g悊瀵硅薄鑾峰彇寮傚父bug -* fix 淇 鑿滃崟婵�娲绘棤娉曞~鍏呴鑹� 鍘婚櫎鏌愪簺svg鍥炬爣鐨刦ill灞炴�� -* fix 淇 浣跨敤閫忔槑搴昿ng鍥剧墖鏃�, 鑷姩濉厖榛戣壊鑳屾櫙 -* fix 淇 table涓洿澶氭寜閽垏鎹富棰樿壊鏈敓鏁堜慨澶嶉棶棰� -* fix 淇 dubbo 浣跨敤 tri 鍗忚 header 璇锋眰澶村彉涓哄皬鍐欏鑷存棤娉曡幏鍙栧弬鏁伴棶棰� -* fix 淇 DubboRequestFilter 浼樺厛绾ц繃楂樺鑷寸殑 skywalking tid 鍙栦笉鍒伴棶棰� -* fix 淇 鍓嶇鑴氭湰涔辩爜闂 -* fix 淇 WebFluxUtils 璇诲彇绌� body 鎶� null 闂 -* fix 淇 Log娉ㄨВGET璇锋眰璁板綍涓嶅埌鍙傛暟闂 -* fix 淇 鏌愪簺鐗规�х殑鐜鐢熸垚浠g爜鍙樹贡鐮乀XT鏂囦欢闂 -* fix 淇 寮�鍚疶opNav娌℃湁瀛愯彍鍗曢殣钘忎晶杈规爮 -* fix 淇 鍥炴樉鏁版嵁瀛楀吀鏁扮粍寮傚父闂 -* fix 淇 鍗囩骇 satoken 瀵艰嚧鐧藉悕鍗曠儹鏇翠笉鐢熸晥闂 -* fix 淇 swagger 鐗堟湰涓� springdoc 鐗堟湰涓嶄竴鑷村鑷存壘涓嶅埌class闂 -* fix 淇 grafana 鐩戞帶妯℃澘缁戝畾鏁版嵁婧怚D 瀵艰嚧鏃犳硶姝e父璇诲彇鏁版嵁闂 - -## v1.3.0 - 2022-09-29 - -### 閲嶅ぇ鏇存柊 - -* [閲嶅ぇ鏇存柊] 鏂板 ruoyi-nacos 婧愮爜闆嗘垚 nacos 鏈嶅姟绔帶鍒跺彴 鏀寔鍗曟満/闆嗙兢妯″紡 -* [閲嶅ぇ鏇存柊] 閲嶅啓 spring-cache 瀹炵幇 鏇翠汉鎬у寲鐨勬搷浣� 鏀寔娉ㄨВ鎸囧畾ttl绛変竴浜涘弬鏁� -* [閲嶅ぇ鏇存柊] 鏂板 RuoYi-Cloud-Plus-UI 椤圭洰 Vue3 鍓嶇鍒嗘敮 -* [閲嶅ぇ鏇存柊] 绉婚櫎maven docker鎻掍欢 杩囦簬鑰佹棫鍔熻兘缂洪櫡澶� 浣跨敤idea鑷甫鐨刣ocker鎻掍欢鏇夸唬 -* [閲嶅ぇ鏇存柊] 浼樺寲 ruoyi-common-job 鏀寔閫氳繃璋冨害涓績鏈嶅姟鍚嶆敞鍐� xxl-job-admin -* [閲嶅ぇ鏇存柊] 鏂板 ruoyi-common-sentinel 妯″潡 鏀寔浣跨敤鏈嶅姟鍚嶆敞鍐� sentinel 鎺у埗鍙� - -### 渚濊禆鍗囩骇 - -* update spring-cloud 2021.0.3 => 2021.0.4 -* update springboot 2.7.2 => 2.7.4 -* update springboot-admin 2.7.3 => 2.7.5 -* update sentinel 1.8.4 => 1.8.5 闆嗘垚鏂� dubbo3 鎻掍欢 -* update springdoc 1.6.9 => 1.6.11 -* update easy-es 0.9.80 => 1.0.2 -* update dubbo 3.0.10 => 3.1.1 -* update redisson 3.17.5 => 3.17.6 -* update druid 1.2.11 => 1.2.12 -* update hutool 5.8.5 => 5.8.6 -* update dynamic-ds 3.5.1 => 3.5.2 -* update aws-java-sdk-s3 1.12.264 => 1.12.300 -* update aliyun-sms 2.0.16 => 2.0.18 -* update tencent-sms 3.1.555 => 3.1.591 -* update snakeyaml 1.30 => 1.32 - -### 鍔熻兘鏇存柊 - -* update 浼樺寲 getLoginId 澧炲姞蹇呰鍙傛暟绌烘牎楠� -* update 浼樺寲 灏� elasticsearch 瑙e帇鍚庢斁鍏� 閬垮厤閫犳垚鐢ㄦ埛璇В -* update 浼樺寲 淇敼璧勬枡澶村儚涓庨儴闂ㄨ瑕嗙洊鐨勯棶棰� -* update 浼樺寲 瀛楀吀绠$悊鎿嶄綔绫诲瀷鏂板鍏朵粬 -* update 浼樺寲 浣跨敤 spring-cache 娉ㄨВ浼樺寲缂撳瓨 -* update 浼樺寲 easy-es.enable=false 鍏抽棴 actuator 鍋ュ悍妫�鏌� -* update 浼樺寲 浼樺寲澶氳鑹叉暟鎹潈闄愬尮閰嶈鍒� -* update dubbo 鍗囩骇 3.1.0 鍒犻櫎鑷澶勭悊鐨勬簮鐮佷慨澶� 閲囩敤瀹樻柟淇鍚庣殑浠g爜 -* update 浼樺寲 椤甸潰鍐呭祵iframe鍒囨崲tab涓嶅埛鏂版暟鎹� -* update 浼樺寲 璋冩暣 oss琛╧ey 涓� ossconfig鐨剆ervice 瀛楁闀垮害涓嶅尮閰� -* update 浼樺寲 鎿嶄綔鏃ュ織瀵嗙爜鑴辨晱 -* update 浼樺寲 琛ュ叏缂哄け鐨勬帴鍙� 鏇存敼鏇存柊鏃ュ織閾炬帴 -* update 浼樺寲 鎻掑叆 SysOperLog 鏃�, 闄愬埗 operUrl 灞炴�х殑闀垮害 -* update 浼樺寲 satoken 閴存潈鎷︽埅鍣� 浼樺寲澶氭鏍¢獙 - -### 鏂板姛鑳� - -* add 澧炲姞 椤圭洰涓娇鐢ㄥ埌鐨勮姹傚ご鏀捐璺ㄥ煙 -* add 鏂板 鑾峰彇oss瀵硅薄鍏冩暟鎹柟娉� -* add 鏂板 瀛楀吀绠$悊鎿嶄綔绫诲瀷 鍏朵粬 - -### 闂淇 - -* fix 淇 涓汉涓績鍗℃鎴栭紶鏍囩偣鍑诲拰閿洏杈撳叆鏃犳晥 -* fix 淇 BaseMapperPlus 鏂规硶鍛戒护涓嶄竴鑷撮棶棰� -* fix 淇 鍥剧墖棰勮缁勪欢src灞炴�т负null鍊兼帶鍒跺彴鎶ラ敊闂� -* fix 淇 鐭俊鍔熻兘鏄惁鍚敤鍒ゆ柇涓嶇敓鏁� -* fix 淇 web妯″潡 涓嶅紩鍏acos渚濊禆鎶ラ敊闂 -* fix 淇 sentinel 鏋勫缓鏃犳硶璇诲彇webapp鐩綍闂 -* fix 淇 鑿滃崟绠$悊閬楁紡鐨刾rop灞炴�� -* fix 淇 minio閰嶇疆https閬囧埌鐨勯棶棰� -* fix 淇 鐐瑰嚮鍒犻櫎鍚庣偣鍑诲彇娑堟帶鍒跺彴鎶ラ敊闂 -* fix 淇 鏂囦欢/鍥剧墖涓婁紶缁勪欢 绗竴娆′笂浼犳姤閿欏鑷村悗缁笂浼犳棤闄恖oading闂 -* fix 淇 ruoyi-auth 鏈嶅姟涓� elasticsearch 绔彛鍙峰啿绐侀棶棰� -* fix 淇 ruoyi-resource 鏈嶅姟涓� elasticsearch 绔彛鍙峰啿绐侀棶棰� -* fix 淇 瑙掕壊閮ㄩ棬鐘舵�佸瓧鍏搁敊璇� 涓� 鑿滃崟娉ㄩ噴閿欒 -* fix 淇 hutool 瀛樺湪澶氱増鏈棶棰� -* fix 淇 openapi缁撴瀯浣� 鍥爏pringdoc缂撳瓨瀵艰嚧澶氭鎷兼帴鎺ュ彛璺緞闂 -* fix 淇 oss閰嶇疆鍒犻櫎鍐呴儴鏁版嵁id鍖归厤绫诲瀷闂 -* fix 淇 娌℃湁鏉冮檺鐨勭敤鎴风紪杈戦儴闂ㄧ己灏戞暟鎹� -* fix 淇 鐢ㄦ埛瀵煎叆瀛樺湪鍒欐洿鏂颁笉鐢熸晥 -* fix 淇 鏃ュ織杞崲闈瀓son鏁版嵁瀵艰嚧鎶ラ敊 -* fix 淇 p6spy杈撳嚭sql璇彞鏃堕棿鏍煎紡鍖栦笉姝g‘闂 -* fix 淇 涓嶅悓缃戞鍥爎eset璇锋眰澶村鑷翠笅杞藉鍑鸿法鍩熼棶棰� -* fix 淇 鍦ㄧ嚎鐢ㄦ埛璁剧疆姘镐笉杩囨湡 瓒呮椂鏃堕棿-1鎺ㄩ�乺edis鏃犳晥闂 -* fix 淇 snakeyaml 1.31 渚濇棫瀛樺湪婕忔礊 鍗囩骇 1.32 - -## v1.2.0 - 2022-08-09 - -### 閲嶅ぇ鏇存柊 - -* [閲嶅ぇ鏇存柊] 鏂板 ruoyi-common-elasticsearch 妯″潡 闆嗘垚 easy-es 鍌荤摐寮忔搷浣滄悳绱㈠紩鎿� -* [閲嶅ぇ鏇存柊] 鏂板 ruoyi-common-doc 鏁村悎 springdoc 鍩轰簬 javadoc 瀹炵幇鏃犳敞瑙i浂鍏ヤ镜鐢熸垚鎺ュ彛鏂囨。 -* [涓嶅吋瀹规洿鏂癩 绉婚櫎 swagger 鎵�灞� ruoyi-doc ruoyi-common-swagger 涓や釜妯″潡 寤鸿浣跨敤 ruoyi-common-doc 妯″潡 - -### 渚濊禆鍗囩骇 - -* update springboot 2.6.9 => 2.7.2 閲嶆瀯浣跨敤鏈�鏂拌嚜鍔ㄩ厤缃柟寮� -* update springboot-admin 2.6.7 => 2.7.3 -* update dubbo 3.0.9 => 3.0.10 -* update redisson 3.17.4 => 3.17.5 -* update hutool 5.8.3 => 5.8.5 -* update okhttp 4.9.1 => 4.10.0 -* update aws-java-sdk-s3 1.12.248 => 1.12.264 淇渚濊禆瀹夊叏婕忔礊 -* update aliyun.sms 2.0.9 => 2.0.16 -* update tencent.sms 3.1.537 => 3.1.555 -* update guava 30.0-jre => 31.1-jre - -### 鍔熻兘鏇存柊 - -* update 淇敼 璧勬簮鏈嶅姟 涓嶆彁渚涢粯璁ょ煭淇� sdk 渚濊禆 -* update 浼樺寲琛ㄦ牸涓婂彸渚у伐鍏锋潯锛堟悳绱㈡寜閽樉闅�&鍙充晶鏍峰紡鍑稿嚭锛� -* update 浼樺寲 鍓嶅悗绔鐜閮ㄧ讲淇濇寔涓�鑷� 鍒犻櫎鏃犵敤鐜鏂囦欢 -* update 浼樺寲 閿欒鐧诲綍閿佸畾涓庢柊澧炶В閿佸姛鑳� -* update 浼樺寲瀛楀吀鏁版嵁浣跨敤store瀛樺彇 -* update 浼樺寲甯冨眬璁剧疆浣跨敤el-drawer鎶藉眽鏄剧ず -* update 鏇存柊妗嗘灦鏂囨。 涓撴爮涓庤棰� 閾炬帴鍦板潃 -* update 浼樺寲 瀵硅薄涓婁紶 涓诲姩璁剧疆鏂囦欢鍏叡璇� 瑙e喅澶╃考浜慜SS鏂囦欢绉佹湁闂 -* update 浼樺寲 缃戝叧楠岃瘉鐮佽繃婊ゅ櫒 璺緞鍖归厤鏀逛负涓ユ牸鍖归厤 -* update 浼樺寲 鏁版嵁瀵艰嚧鏉冮檺鐢熸垚 SQL 閲嶅闂 - -### 鏂板姛鑳� - -* add 澧炲姞 鍏ㄥ眬璺ㄥ煙杩囨护鍣� 澶勭悊璺ㄥ煙璇锋眰 閫傞厤绉诲姩绔闂� -* add 澧炲姞 鎼滅储寮曟搸 crud 婕旂ず妗堜緥 - -### 闂淇 - -* fix 闃叉date-picker缁勪欢鎶ラ敊锛岄檷绾lement-ui鐗堟湰 -* fix 淇 RedisUtils 骞跺彂 set ttl 閿欒闂 -* fix 闃叉vue3涓婚敭瀛楁鍚嶄笌row鎴杋ds涓�鑷村鑷存姤閿欑殑闂 -* fix 淇 骞傜瓑缁勪欢 閫昏緫闂瀵艰嚧绾跨▼鍙橀噺鏈竻闄� -* fix 淇 鍥剧墖鍥炴樉鏌ヨ 璺緞閿欒闂 -* fix 淇 鑴辨晱娌℃湁瀹炵幇绫诲鑷磋繑鍥炴暟鎹紓甯搁棶棰� -* fix 淇 xxljob 閿欒瀵煎叆閰嶇疆鏂囦欢寮曞彂鐨勯棶棰� -* fix 淇 gateway妯″潡 dockerfile 绔彛缂栧啓閿欒 -* fix 淇鐢ㄦ埛瀵煎嚭瀛楀吀浣跨敤閿欒 -* fix 淇 demo 妯″潡 杩滅▼璋冪敤澶辫触闂 -* fix 淇 sentinel 鎺у埗鍙版湭閫傞厤 springboot 2.6 鏂拌矾鐢辩瓥鐣ュ鑷存棤娉曠櫥褰曢棶棰� - -## v1.1.0 - 2022-07-18 - -### 閲嶅ぇ鏇存柊 - -* [閲嶅ぇ鏇存柊] 鏂板 ELK 鍒嗗竷寮忔棩蹇椾腑蹇冩暣鍚� -* [閲嶅ぇ鏇存柊] 鏂板 ruoyi-stream-mq 婕旂ず妯″潡 瀹屾垚 RabbitMQ RocketMQ Kafka 鏁村悎 -* [閲嶅ぇ鏇存柊] 浼樺寲 docker 閮ㄧ讲鏂瑰紡 浣跨敤 host 妯″紡绠�鍖栭儴缃叉祦绋� 闄嶄綆浣跨敤鎴愭湰 -* [閲嶅ぇ鏇存柊] 璋冩暣 dubbo 鏈嶅姟娉ㄥ唽鍛藉悕绌洪棿涓� cloud 鏈嶅姟淇濇寔涓�鑷� 閫氳繃娉ㄥ唽缁勫尯鍒嗚闂湇鍔� -* [瀹夊叏鎬 浼樺寲 nginx 闄愬埗澶栫綉璁块棶鍐呯綉 actuator 鐩稿叧璺緞 寤鸿鍗囩骇 - -### 渚濊禆鍗囩骇 - -* update springboot 2.6.8 => 2.6.9 -* update easyexcel 3.1.0 => 3.1.1 -* update hutool 5.8.2 => 5.8.3 -* update redisson 3.17.2 => 3.17.4 -* update aws-java-sdk-s3 1.12.215 => 1.12.248 -* update tencentcloud-sdk-java 3.1.500 => 3.1.537 -* update dubbo 3.0.8 => 3.0.9 -* update seata 1.5.1 => 1.5.2 - -### 鍔熻兘鏇存柊 - -* update 澧炲姞 redisson key 鍓嶇紑閰嶇疆 -* update 浼樺寲 DateColumn 鏀寔鍗曟ā鏉垮key鍦烘櫙 -* update 浼樺寲閮ㄧ讲鑴氭湰 澧炲姞 elk kafka rabbitmq rocketmq 绛夐厤缃� -* update 淇敼 oss 瀹㈡埛绔嚜瀹氫箟鍩熷悕 缁熶竴浣跨敤https寮�鍏虫帶鍒跺崗璁ご -* update 浼樺寲 浣跨敤 StreamUtils 绠�鍖栦笟鍔℃祦鎿嶇旱 -* update 浼樺寲 ruoyi-demo 妯″潡 鍘婚櫎鐢ㄤ笉涓婄殑 seata 渚濊禆 -* update 浼樺寲 鎺ュ彛鏂囨。 鎺ュ彛鍦板潃涓庢湇鍔″湴鍧�涓嶅尮閰嶉棶棰� -* update 浼樺寲瀛楀吀鏁版嵁鍥炴樉鏍峰紡涓嬫媺妗嗘樉绀哄�� -* update 榛樿涓嶅惎鐢ㄥ帇缂╂枃浠剁紦瀛橀槻姝ode_modules杩囧ぇ -* update 浼樺寲鐧诲嚭鏂规硶 - -### 鏂板姛鑳� - -* add 澧炲姞 rocketmq docker缂栨帓 -* add 鏂板 rabbitmq docker缂栨帓 鍖呭惈寤惰繜鎻掍欢 -* add 鏂板 kafka docker缂栨帓 -* add 澧炲姞 es ik 鍒嗚瘝鍣ㄦ彃浠堕泦鎴� -* add 澧炲姞 StreamUtils 娴佸伐鍏� 绠�鍖� stream 娴佹搷绾� - -### 闂淇 - -* fix 淇 鑾峰彇 SensitiveService 绌洪棶棰� 澧炲姞绌哄吋瀹� -* fix 淇 婕旂ず椤甸潰瀵煎嚭璺緞閿欒 -* fix 淇 minio 涓婁紶鑷畾涔夊煙鍚嶅洖鏄捐矾寰勯敊璇棶棰� -* fix 淇 hutool 宸ュ叿杩斿洖涓嶅彲鎿嶇旱绫诲瀷 瀵艰嚧鎶ラ敊闂 -* fix 淇 杩滅▼璋冪敤鐭俊鍔熻兘杩斿洖瀹炰綋 SysSms 搴忓垪鍖栨姤閿欓棶棰� -* fix 淇 澶嶅埗杩囩▼閿欒 瀵艰嚧婕旂ずexcel鏂囦欢鎹熷潖闂 -* fix 淇 dubbo 娉ㄥ唽缁勪笉鐢熸晥闂 閫氳繃瑕嗙洊婧愮爜鏂瑰紡 -* fix 淇浠g爜鐢熸垚棣栧瓧姣嶅ぇ鍐欓棶棰� - - -## v1.0.0 - 2022-06-20 - -### 鏂板/浼樺寲 宸ョ▼妯″潡 - -* add 鏂板 ruoyi-common-alibaba-bom 宸ョ▼绠$悊 alibaba 鐩稿叧渚濊禆 -* add 鏂板 ruoyi-common-bom 宸ョ▼绠$悊 ruoyi-common 鐩稿叧渚濊禆 -* add 鏂板 ruoyi-api-bom 宸ョ▼绠$悊 ruoyi-api 渚濊禆椤� -* add 鏂板 ruoyi-api-resource 妯″潡 瑙勮寖鐢ㄦ硶 绉婚櫎 ruoyi-file 妯″潡 -* add 鏂板 ruoyi-common-web 妯″潡 浣跨敤 undertow 鏇挎崲 tomcat -* add 鏂板 ruoyi-common-dubbo 鏁村悎 dubbo 3.X 瀹炵幇楂樻�ц兘 rpc 杩滅▼璋冪敤 鏇挎崲 feign -* add 鏂板 ruoyi-common-dict 瀹炵幇瀛楀吀澶氭湇鍔¤皟鐢� -* add 鏂板 ruoyi-common-loadbalancer 鑷畾涔夎礋杞藉潎琛℃ā鍧� 鐢ㄤ簬澶氬洟闃熷紑鍙� -* add 鏂板 ruoyi-common-excel 妯″潡 闆嗘垚 Alibaba EasyExcel 鏇挎崲 鑷甫excel瀹炵幇 -* add 鏂板 ruoyi-common-oss 妯″潡 鏀寔 AWS S3 鍗忚 鍒嗗竷寮忔枃浠跺瓨鍌� -* add 鏂板 ruoyi-common-mail 閭欢妯″潡 -* add 鏂板 ruoyi-common-sms 鐭俊妯″潡 鏁村悎 闃块噷浜戙�佽吘璁簯 鐭俊鍔熻兘 -* add 鏂板 ruoyi-common-idempotent 鍒嗗竷寮忓箓绛夋ā鍧� -* add 鏂板 ruoyi-common-satoken 鏁村悎 sa-token 閲嶅啓鎵�鏈夋潈闄� -* add 鏂板 ruoyi-xxl-job-admin 鏁村悎 xxljob 鏇挎崲 quartz 鏀寔鍒嗗竷寮忎换鍔¤皟搴� -* add 鏂板 ruoyi-job 妯″潡 缁熶竴杩滅▼澶勭悊浠诲姟 瑙勮寖鐢ㄦ硶 -* add 鏂板 ruoyi-doc 妯″潡 闆嗘垚 Knife4j 鏇挎崲 swagger -* add 鏂板 ruoyi-seata-server 婧愮爜闆嗘垚 Seata 1.5.X 鏈嶅姟绔� -* add 鏂板 ruoyi-sentinel-dashboard 妯″潡 婧愮爜闆嗘垚 sentinel 鎺у埗鍙� -* update 鎶藉彇鎵�鏈夊叕鐢ㄩ厤缃埌 maven profile 绠$悊 - -### 浠g爜渚濊禆鏀瑰姩 - -* update SpringCloud 2021.0.3 -* update 閫傞厤 SpringCloudAlibaba 2021.0.1.0 鍏ㄦ柊閰嶇疆鏂瑰紡 -* update poi 4.1.2 => 5.2.2 鎬ц兘澶у箙鎻愬崌 -* update 閲嶆瀯 鏁村悎 jackson 鏇挎崲 fastjson -* update 閲嶆瀯 鏁村悎 redisson 瀹㈡埛绔� -* update 閲嶆瀯 鏁村悎 mybatis-plus -* update 閲嶅啓 鏁版嵁鏉冮檺瀹炵幇 鍩轰簬 mybatis-plus -* add 澧炲姞 lombok 浼樺寲鍘熺敓浠g爜 -* add 鏁村悎 hutool 浼樺寲鐩稿叧浠g爜 -* add 鏂板 鍥介檯鍖� 鍔熻兘 -* add 鏂板 lock4j 鍒嗗竷寮忛攣 -* add 澧炲姞鐩戞帶涓績 鍦ㄧ嚎鏃ュ織鐩戞帶 浼樺寲鏃ュ織鏂囦欢鏍煎紡 -* add 閫傞厤 docker 閮ㄧ讲鏂瑰紡 - -### 鍚庣画/杩涜涓鍒� - -* 澧炲姞 Vue3 鍓嶇宸ョ▼ -* 搴旂敤妯″潡 閫傞厤 Oracle銆丳ostgreSQL銆丼QLServer -* 澧炲姞 SpringCloud Stream 鏀寔 -* 閫傞厤 Apache Kafka銆丄pache RocketMQ銆丷abbitMQ -* 閫傞厤 ElasticSearch 鍒嗗竷寮忔悳绱㈠紩鎿� -* 閫傞厤 Alibaba Canal 鍒嗗竷寮忔暟鎹悓姝ヤ腑蹇� -* 閫傞厤 Apache SkyWalking 鍒嗗竷寮忛摼璺拷韪洃鎺т腑蹇� -* 閫傞厤 ELK 鍒嗗竷寮忔棩蹇椾腑蹇� -* 閫傞厤 Prometheus銆丟rafana 鍒嗗竷寮忓叏鏂逛綅鏁版嵁澶у睆鐩戞帶 diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/elk.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/elk.md deleted file mode 100644 index 58c2eda..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/elk.md +++ /dev/null @@ -1,37 +0,0 @@ -# ELK鎼缓 -- - - -# 鐜鎼缓 - -椤圭洰鍐呯疆 `ELK` 鐨� `docker-compose` 缂栨帓 鍙煡鐪� `/docker/docker-compose.yml` 鏂囦欢涓嬫柟鎵╁睍缂栨帓 - -**娉ㄦ剰: `/docker/elk/elasticsearch/` 鐩綍涓嬫墍鏈夋枃浠跺す 鍧囬渶瑕佸啓鏉冮檺** - -`chmod 777 /docker/elk/elasticsearch/data`<br> -`chmod 777 /docker/elk/elasticsearch/logs`<br> -`chmod 777 /docker/elk/elasticsearch/plugins`<br> -**娉ㄦ剰: es鎻掍欢闇�瑕佽В鍘嬪悗鏀惧叆 `plugins` 鐩綍** - -# 杩愯鍛戒护 - -```shell -docker-compose up -d elasticsearch kibana logstash -``` - -# 鍙傝�冩枃绔� -[docker-compose 鎼缓 ELK 7.X 骞舵暣鍚� SpringBoot](https://lionli.blog.csdn.net/article/details/125743132) - -# 椤圭洰鍐呴厤缃� - -鏈嶅姟寮曞叆渚濊禆椤� - -```xml -<!-- ELK 鏃ュ織鏀堕泦 --> -<dependency> - <groupId>com.ruoyi</groupId> - <artifactId>ruoyi-common-logstash</artifactId> -</dependency> -``` - -鏇存敼涓� `pom` 鏂囦欢 `logstash.address` 鍦板潃<br> - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/es.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/es.md deleted file mode 100644 index 65d9c4d..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/es.md +++ /dev/null @@ -1,26 +0,0 @@ -# ES鎼滅储寮曟搸 -- - - -## 鐜鎼缓(濡傛灉宸茬粡鎼缓浜咵LK鍒欒烦杩�) - -椤圭洰鍐呯疆 `ELK` 鐨� `docker-compose` 缂栨帓 鍙煡鐪� `/docker/docker-compose.yml` 鏂囦欢涓嬫柟鎵╁睍缂栨帓 - -**娉ㄦ剰: `/docker/elk/elasticsearch/` 鐩綍涓嬫墍鏈夋枃浠跺す 鍧囬渶瑕佸啓鏉冮檺** - -`chmod 777 /docker/elk/elasticsearch/data`<br> -`chmod 777 /docker/elk/elasticsearch/logs`<br> -`chmod 777 /docker/elk/elasticsearch/plugins`<br> -**娉ㄦ剰: es鎻掍欢闇�瑕佽В鍘嬪悗鏀惧叆 `plugins` 鐩綍** - -## 杩愯鍛戒护 - -```shell -docker-compose up -d elasticsearch -``` - -## Easy-ES 鏂囨。 -[Easy-ES 鏂囨。](https://www.easy-es.cn/) - -## 鐢ㄦ硶 - -鍩烘湰閰嶇疆鍜岀敤娉曞彲鍙傝�� `ruoyi-demo` 妯″潡 鏇村楂樼骇鐢ㄦ硶璇峰弬鑰� Easy-ES 鏂囨。<br> - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/kafka.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/kafka.md deleted file mode 100644 index 7852143..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/kafka.md +++ /dev/null @@ -1,9 +0,0 @@ -# Kafka鎼缓 -- - - -## 鐜鎼缓 -鍙傝�冩枃绔�: [docker-compose 瀹夎 Kafka 3.X 闄勫甫鍙鍖栫晫闈(https://lionli.blog.csdn.net/article/details/125855550) - -## 鐢ㄦ硶鍙傝�� -鍙傝�� `ruoyi-stream-mq` 妯″潡鍐呯殑娴嬭瘯妗堜緥 - - \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/maxkey.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/maxkey.md deleted file mode 100644 index 4b4b430..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/maxkey.md +++ /dev/null @@ -1,20 +0,0 @@ -# 瀵规帴 MaxKey 鍗曠偣鐧诲綍 -- - - - -# 瀹夎 MaxKey 搴旂敤鏈嶅姟 - -鍙傝�� MaxKey 瀹樻柟鏂囨。瀹夎 [MaxKey瀹夎閮ㄧ讲](http://www.maxkey.top/doc/docs/intro/) - -# 閰嶇疆搴旂敤 OAuth2.0 璁よ瘉娉ㄥ唽 - - - -# 閰嶇疆鍚庣鏈嶅姟 - -鎵惧埌 `Nacos` 鍐呯殑 `ruoyi-auth.yml` 閰嶇疆鏂囦欢 - -淇敼 `maxkey` 瀵瑰簲鐨� `client-id` 涓� `client-secret` - - - - \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/nacos.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/nacos.md deleted file mode 100644 index 18e6aef..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/nacos.md +++ /dev/null @@ -1,13 +0,0 @@ -# Nacos闆嗙兢鎼缓 -- - - -## 闆嗙兢鎼缓涓ょ鏂瑰紡 -### 鏂囦欢瀵诲潃闆嗙兢 -[銆怰uoYi-Cloud-Plus銆戝涔犵瑪璁� 02 - Nacos锛堜簩锛夊鍧�鏈哄埗涔嬫枃浠跺鍧�鍒嗘瀽](https://blog.csdn.net/Michelle_Zhong/article/details/127423521) - -### 鍦板潃鏈嶅姟鍣ㄥ鍧�闆嗙兢(鎺ㄨ崘) -[銆怰uoYi-Cloud-Plus銆戝涔犵瑪璁� 03 - Nacos锛堜笁锛変娇鐢� Nginx 瀹炵幇鍦板潃鏈嶅姟鍣ㄥ鍧�鍙婂叾鍘熺悊鍒嗘瀽](https://blog.csdn.net/Michelle_Zhong/article/details/127474238) - -## 闆嗙兢璺敱浠g悊璁剧疆 -[銆怰uoYi-Cloud-Plus銆戝涔犵瑪璁� 04 - Nacos锛堝洓锛変娇鐢� Nginx 绠�鍗曞疄鐜� Nacos 闆嗙兢璐熻浇鍧囪 ](https://blog.csdn.net/Michelle_Zhong/article/details/127486350) - -璁剧疆濂戒唬鐞嗕箣鍚� 璺熷崟鏈虹敤娉曚竴鑷� 鍚庣nacos鍦板潃鍐欎唬鐞� `ip:绔彛` 鍗冲彲 \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/prometheus_grafana.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/prometheus_grafana.md deleted file mode 100644 index 2df4870..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/prometheus_grafana.md +++ /dev/null @@ -1,45 +0,0 @@ -# Prometheus+Grafana鎼缓 -- - - -## 鍩虹鎼缓 - -鍙傝�冩枃绔�: https://lionli.blog.csdn.net/article/details/127959009 - -## 妗嗘灦鍐呮墿灞� - -妗嗘灦宸茬粡鍖呭惈浜� docker-compose 缂栨帓 鎵ц濡備笅鍛戒护鍚姩瀹瑰櫒鍗冲彲 - -```shell -docker-compose up -d prometheus grafana -``` - -## 搴旂敤閰嶇疆 - -鍚勪釜鏈嶅姟寮曞叆 `ruoyi-common-prometheus` 妯″潡 - - - -淇敼 `prometheus.yml` 閰嶇疆閲囬泦鏁版嵁婧� - - - -淇敼 `Nacos` 鍦板潃 涓� `SpringBoot-Admin` 鐩戞帶鍦板潃 鐢ㄤ簬鏁版嵁閲囬泦<br> -濡傞兘涓烘湰鍦板簲鐢ㄥ垯鏃犻渶鏇存敼 - - - -## 瀵煎叆妗嗘灦鐗瑰埗妯℃澘 -**娉ㄦ剰: 姝ゅ鏁版嵁婧愬悕绉板繀椤讳笌鍥剧墖淇濇寔涓�鑷� 涓嶇劧浼氬拰妯℃澘瀵瑰簲涓嶄笂瀵艰嚧鏃犳硶璇诲彇鏁版嵁**<br> - - -> 鎵惧埌妗嗘灦鍐呯殑鐗瑰埗妯℃澘json鏂囦欢 鍦╣rafana鐐瑰嚮涓婁紶json鏂囦欢 瀵煎叆妯℃澘<br> - -<br> - - -## 閫夋嫨鏌ョ湅鐩戞帶 - -鐐瑰嚮鍙充晶鑿滃崟娴忚 閫夋嫨鎯宠鏌ョ湅鐨勭洃鎺у嵆鍙� - -<br> -<br> - \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/rabbitmq.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/rabbitmq.md deleted file mode 100644 index 75e0187..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/rabbitmq.md +++ /dev/null @@ -1,10 +0,0 @@ -# RabbitMQ鎼缓 -- - - -## 鐜鎼缓 - -鍙傝�冩枃绔�: [docker-compose 瀹夎 RabbitMQ 3.X 闄勫甫寤惰繜闃熷垪鎻掍欢](https://lionli.blog.csdn.net/article/details/125855177) - -## 鐢ㄦ硶鍙傝�� -鍙傝�� `ruoyi-stream-mq` 妯″潡鍐呯殑娴嬭瘯妗堜緥 - - \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/rocketmq.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/rocketmq.md deleted file mode 100644 index 98d50bb..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/rocketmq.md +++ /dev/null @@ -1,9 +0,0 @@ -# RocketMQ鎼缓 -- - - -## 鐜鎼缓 -鍙傝�冩枃绔�: [docker-compose 瀹夎 RocketMQ 4.9.X (apache瀹樻柟闀滃儚) namesrv broker 涓庡彲瑙嗗寲鎺у埗鍙� console](https://lionli.blog.csdn.net/article/details/125798865) - -## 鐢ㄦ硶鍙傝�� -鍙傝�� `ruoyi-stream-mq` 妯″潡鍐呯殑娴嬭瘯妗堜緥 - - \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/shardingproxy.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/shardingproxy.md deleted file mode 100644 index ebe461b..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/shardingproxy.md +++ /dev/null @@ -1,75 +0,0 @@ -# Sharding-Proxy鎼缓鍒嗗簱鍒嗚〃 -- - - - -# 濡備綍浣跨敤 - -鏌ョ湅 `ruoyi-demo` 鏈嶅姟 `TestShardingController` - - - -## 棣栧厛鍦� MySQL 鍒涘缓涓や釜搴� - -鍒涘缓涓や釜搴� `data-center_0` `data-center_1` 鍒嗗埆鎵ц濡備笅SQL - -```sql -CREATE TABLE `t_order_0` ( - `order_id` bigint(20) UNSIGNED NOT NULL COMMENT '涓婚敭ID', - `user_id` bigint(20) UNSIGNED NOT NULL COMMENT '鐢ㄦ埛ID', - `total_money` int(10) UNSIGNED NOT NULL COMMENT '璁㈠崟鎬婚噾棰�', - PRIMARY KEY (`order_id`), - KEY `idx_user_id` (`user_id`) USING BTREE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='璁㈠崟鎬昏〃'; - -CREATE TABLE `t_order_1` ( - `order_id` bigint(20) UNSIGNED NOT NULL COMMENT '涓婚敭ID', - `user_id` bigint(20) UNSIGNED NOT NULL COMMENT '鐢ㄦ埛ID', - `total_money` int(10) UNSIGNED NOT NULL COMMENT '璁㈠崟鎬婚噾棰�', - PRIMARY KEY (`order_id`), - KEY `idx_user_id` (`user_id`) USING BTREE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='璁㈠崟鎬昏〃'; - -CREATE TABLE `t_order_item_0` ( - `order_item_id` bigint(20) UNSIGNED NOT NULL COMMENT '瀛愯鍗旾D', - `order_id` bigint(20) UNSIGNED NOT NULL COMMENT '涓婚敭ID', - `user_id` bigint(20) UNSIGNED NOT NULL COMMENT '鐢ㄦ埛ID', - `money` int(10) UNSIGNED NOT NULL COMMENT '瀛愯鍗曢噾棰�', - PRIMARY KEY (`order_item_id`), - KEY `idx_order_id` (`order_id`) USING BTREE, - KEY `idx_user_id` (`user_id`) USING BTREE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='璁㈠崟瀛愯〃'; - -CREATE TABLE `t_order_item_1` ( - `order_item_id` bigint(20) UNSIGNED NOT NULL COMMENT '瀛愯鍗旾D', - `order_id` bigint(20) UNSIGNED NOT NULL COMMENT '涓婚敭ID', - `user_id` bigint(20) UNSIGNED NOT NULL COMMENT '鐢ㄦ埛ID', - `money` int(10) UNSIGNED NOT NULL COMMENT '瀛愯鍗曢噾棰�', - PRIMARY KEY (`order_item_id`), - KEY `idx_order_id` (`order_id`) USING BTREE, - KEY `idx_user_id` (`user_id`) USING BTREE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='璁㈠崟瀛愯〃'; - -``` - -## 鐒跺悗鏇存敼閰嶇疆鏂囦欢 - -鏇存敼 `config-sharding.yaml` 閰嶇疆鏂囦欢鍐呯殑鏁版嵁搴撹繛鎺ュ湴鍧�涓庣敤鎴峰悕瀵嗙爜 - -## 鏈嶅姟鎼缓 - -鍙傝�冮儴缃叉枃妗d笂浼� docker 鏂囦欢澶� 鍐呴儴鍖呭惈 `shardingproxy` 閰嶇疆鏂囦欢 - - - -妗嗘灦宸茬粡鍖呭惈浜� docker-compose 缂栨帓 鎵ц濡備笅鍛戒护鍚姩瀹瑰櫒鍗冲彲 - -```shell -docker-compose up -d shardingproxy -``` - -## 鏈�鍚庤繍琛� demo - -杩愯 demo 鎻愪緵鐨� controller 浠g爜鏌ョ湅鏁版嵁搴撳唴鏁版嵁鍗冲彲 - -## 鐢ㄦ硶鍙傝�冭棰�(鐣ユ湁涓嶅悓 鐞嗘�ц鐪�) - -鐢ㄦ硶鍙傝�冭棰�: https://www.bilibili.com/video/BV1XN411A7Tv/ diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/skywalking.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/skywalking.md deleted file mode 100644 index 6ad0aec..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/skywalking.md +++ /dev/null @@ -1,41 +0,0 @@ -# SkyWalking鎼缓涓庨泦鎴� -- - - -## 鏈嶅姟鎼缓 -鍙傝�冩枃绔�: [SpringBoot 鏁村悎 SkyWalking 8.X (鍖呭惈 Logback 鏃ュ織閲囬泦)](https://lionli.blog.csdn.net/article/details/127656534) - -妗嗘灦宸茬粡鍖呭惈浜� docker-compose 缂栨帓 鎵ц濡備笅鍛戒护鍚姩瀹瑰櫒鍗冲彲 - -```shell -docker-compose up -d elasticsearch sky-oap sky-ui -``` - -### 鏈湴寮�鍙戜娇鐢� -鍙傝�冧笂鏂规枃绔� - -### docker閮ㄧ讲浣跨敤 -涓婁紶鎺㈤拡鍒版湇鍔″櫒 `/docker/skywalking/agent` 鐩綍<br> -**涓嶈浣跨敤缃戜笂涓嬭浇鐨� 璇蜂娇鐢ㄦ鏋惰嚜甯︾殑 鍐呭惈涓�浜涘畼缃戞病鏈夌殑鎻掍欢**<br> - - -鍦ㄥ搴旀湇鍔$殑`dockerfile`鍐� 鎵撳紑 `skywalking` 鐩稿叧鍙傛暟娉ㄩ噴<br> - - -鏈嶅姟缂栨帓澧炲姞鎺㈤拡璺緞鏄犲皠<br> - - - -### 瀵规帴鏃ュ織鎺ㄩ��(涓嶆帹鑽� 寤鸿浣跨敤ELK鏀堕泦鏃ュ織) - -妗嗘灦宸茬粡灏佽濂戒簡瀵瑰簲鐨勪緷璧栧拰閰嶇疆 鍦ㄦ湇鍔″唴娣诲姞濡備笅渚濊禆 - -```xml -<!-- skywalking 鏃ュ織鏀堕泦 --> -<dependency> - <groupId>com.ruoyi</groupId> - <artifactId>ruoyi-common-skylog</artifactId> -</dependency> -``` - -鍦� `logback.xml` 鏃ュ織閰嶇疆鏂囦欢鍐呭紩鍏� `skylog` 閰嶇疆鏂囦欢 - - \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/architecture_diagram.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/architecture_diagram.md deleted file mode 100644 index 05db07a..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/architecture_diagram.md +++ /dev/null @@ -1,3 +0,0 @@ -# 杞欢鏋舵瀯鍥� -- - - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/collaboration.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/collaboration.md deleted file mode 100644 index 569aed7..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/collaboration.md +++ /dev/null @@ -1,27 +0,0 @@ -# 澶氬洟闃熷紑鍙� -- - - -## 鍔熻兘浠嬬粛 - -> 澶氫汉鍛�/鍥㈤槦寮�鍙戝線寰�浼氬嚭鐜� 璋冭瘯绋嬪簭 琚礋杞藉潎琛″埌鍒汉閭i噷 鑷繁鎶撲笉鍒拌姹傜瓑闂<br> -> 姝g‘鍥㈤槦寮�鍙戞ā寮� `娴嬭瘯鏈轰竴鍙癭 鍏叡鏈嶅姟閮芥斁鍒版祴璇曟満涓�<br> -> 鏈湴寮�鍙戜汉鍛� 闇�鍚姩 `ruoyi-gateway` 涓� 鍏朵粬 璋冭瘯鐨勪笟鍔℃ā鍧�<br> -> 灏嗘墍鏈夋湇鍔¢兘缁熶竴鎸囧悜鍚屼竴涓� Nacos 鏈嶅姟<br> -> 鍓嶇杩炴帴鏈満 `ruoyi-gateway` 缃戝叧璋冭瘯绋嬪簭<br> - -妗嗘灦鎻愪緵浜� `ruoyi-common-loadbalancer` 澶氬洟闃� 璐熻浇鍧囪 妯″潡 鍙互灏嗙綉鍏崇殑璇锋眰閿佸畾鍒颁笌缃戝叧鐩稿悓鐨処P鏈嶅姟 - -闇�瑕佸湪 `ruoyi-gateway` `ruoyi-auth` `ruoyi-modules` 寮曞叆 `ruoyi-common-loadbalancer` 妯″潡 - - - -鍚姩鍓嶇璁块棶鏈満 `ruoyi-gateway` 缃戝叧鍦ㄨ姹傝浆鍙� 鍜� `dubbo` 杩涜 RPC 璋冪敤鏃�<br> -浼氳幏鍙栦笌鏈満IP鍦板潃鐩稿悓鐨勬湇鍔′紭鍏堣皟鐢�(濡傛湭鎵惧埌 浼氶殢鏈鸿繑鍥�) - -# 閲嶇偣璇存槑 - -璇锋鏌ユ湰鏈烘槸鍚︽湁铏氭満缃戝崱IP 濡傛湁澶氱綉鍗¤幏鍙朓P鍦板潃浼氫笉鍑嗙‘ - -鍙娇鐢ㄥ涓嬩唬鐮佹鏌ユ湰鏈篒P鏄惁姝e父 -```java -InetAddress.getLocalHost().getHostAddress() -``` \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/doc.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/doc.md deleted file mode 100644 index 422aeb9..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/doc.md +++ /dev/null @@ -1,88 +0,0 @@ -# 鎺ュ彛鏂囨。 -- - - -## 鐗堟湰 >= `1.2.0` -## 璇存槑 -鐢变簬 `springfox` 涓� `knife4j` 鍧囧仠姝㈢淮鎶� bug浼楀<br> -鏁呬粠 `1.2.0` 寮�濮� 杩佺Щ鍒� `springdoc` 妗嗘灦<br> -鍩轰簬 `javadoc` 鏃犳敞瑙i浂鍏ヤ镜鐢熸垚瑙勮寖鐨� `openapi` 缁撴瀯浣�<br> -鐢变簬妗嗘灦鑷甫鏂囨。UI鍔熻兘鍗曚竴鎵╁睍鎬у樊 鏁呯Щ闄よ嚜甯I 寤鸿浣跨敤澶栫疆鏂囨。宸ュ叿 - -## 鏂囨。宸ュ叿浣跨敤 -鐢变簬妗嗘灦閲囩敤 `openapi` 琛屼笟瑙勮寖 鏁呭競闈笂澶ч儴鍒嗙殑妗嗘灦鍧囨敮鎸� 鍙嚜琛岄�夋嫨<br> -渚嬪: `apifox` `apipost` `postman` `torna` `knife4j` 绛� 鏍规嵁瀵瑰簲宸ュ叿鐨勬枃妗f帴鍏ュ嵆鍙� - -## Swagger鍗囩骇SpringDoc鎸囧崡 - -甯歌鍔熻兘濡備笅 鍏朵粬鍔熻兘鑷鎸栨帢<br> -**娉ㄦ剰: `javadoc` 鍙兘鏇挎崲鍩虹鍔熻兘 鐗规畩鍔熻兘杩橀渶瑕佷娇鐢ㄦ敞瑙e疄鐜�** - -| swagger | springdoc | javadoc | -|----------------------------------|---------------------------------|--------------------| -| @Api(name = "xxx") | @Tag(name = "xxx") | java绫绘敞閲婄涓�琛� | -| @Api(description= "xxx") | @Tag(description= "xxx") | java绫绘敞閲� | -| @ApiOperation | @Operation | java鏂规硶娉ㄩ噴 | -| @ApiIgnore | @Hidden | 鏃� | -| @ApiParam | @Parameter | java鏂规硶@param鍙傛暟娉ㄩ噴 | -| @ApiImplicitParam | @Parameter | java鏂规硶@param鍙傛暟娉ㄩ噴 | -| @ApiImplicitParams | @Parameters | 澶氫釜@param鍙傛暟娉ㄩ噴 | -| @ApiModel | @Schema | java瀹炰綋绫绘敞閲� | -| @ApiModelProperty | @Schema | java灞炴�ф敞閲� | -| @ApiModelProperty(hidden = true) | @Schema(accessMode = READ_ONLY) | 鏃� | -| @ApiResponse | @ApiResponse | java鏂规硶@return杩斿洖鍊兼敞閲� | - -# 寤鸿浣跨敤 `Apifox`(甯歌闂鏈夊叾浠栧鎺ユ柟寮�) - -瀹樼綉杩炴帴: [https://www.apifox.cn/](https://www.apifox.cn/)<br> -瑙嗛鏁欑▼: [springdoc涓巃pifox閰嶅悎浣跨敤](https://www.bilibili.com/video/BV1mr4y1j75M?p=8&vd_source=8f52c77be3233dbdd1c5e332d4d45bfb) - - - -鏀寔 鏂囨。缂栧啓 鎺ュ彛璋冭瘯 Mock 鎺ュ彛鍘嬫祴 鑷姩鍖栨祴璇� 绛変竴绯诲垪鍔熻兘 - -### 鎺ュ叆妗嗘灦 - -> 1.涓嬭浇鎴栦娇鐢╳eb鍦ㄧ嚎鐗� 鍒涘缓涓�涓嚜宸辩殑椤圭洰<br> - - - -> 2.杩涘叆椤圭洰 閫夋嫨椤圭洰璁剧疆 鎵惧埌鑷姩鍚屾<br> - - - -> 3.鏍规嵁椤圭洰鍐呮墍鏈夋枃妗g粍瀹屾垚鎵�鏈夋暟鎹簮鍒涘缓(鎷夊彇鍚庣`openapi`缁撴瀯浣�)<br> -鏁版嵁婧怳RL鏍煎紡 `http://缃戝叧ip:绔彛/鏈嶅姟璺緞/v3/api-docs`<br> -椤圭洰鍐呮墍闇�:<br> -`http://localhost:8080/demo/v3/api-docs` 婕旂ず鏈嶅姟<br> -`http://localhost:8080/auth/v3/api-docs` 璁よ瘉鏈嶅姟<br> -`http://localhost:8080/resource/v3/api-docs` 璧勬簮鏈嶅姟<br> -`http://localhost:8080/system/v3/api-docs` 绯荤粺鏈嶅姟<br> -`http://localhost:8080/code/v3/api-docs` 浠g爜鐢熸垚鏈嶅姟<br> - - - - - -> 4.閫夋嫨 鎺ュ彛绠$悊 椤圭洰姒傝 鐐瑰嚮绔嬪嵆瀵煎叆 骞剁瓑寰呭鍏ュ畬鎴�<br> -鍚庣画浼氭牴鎹瓥鐣ユ瘡3涓皬鏃惰嚜鍔ㄥ鍏ヤ竴娆�<br> -姣忔閲嶆柊杩涘叆apifox涔熶細鑷姩鍚屾涓�娆�<br> -鍚庣鏈夋敼鍔ㄤ篃鍙互鎵嬪姩鐐瑰嚮瀵煎叆<br> - - - -> 5.(娉ㄦ剰鐗堟湰鍙�)璁剧疆閴存潈 閫夋嫨鎺ュ彛绠$悊 椤圭洰姒傝 鎵惧埌Auth 鎸夌収濡備笅閰嶇疆<br> - -**鐗堟湰鍙�: >= 2.X** - - - -**鐗堟湰鍙�: 1.X** - - - -> key瀵瑰簲椤圭洰閰嶇疆 榛樿涓� `Authorization`<br> - - - - - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/i18n.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/i18n.md deleted file mode 100644 index 304d3e0..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/i18n.md +++ /dev/null @@ -1,31 +0,0 @@ -# 鍥介檯鍖栨柟妗� -- - - -* 鍓嶇鍥介檯鍖栧弬鑰� [ruoyi鍓嶇鍥介檯鍖栨枃妗(http://doc.ruoyi.vip/ruoyi-vue/document/htsc.html#鍓嶇鍥介檯鍖栨祦绋�)<br> -* 鍙傝�� `demo` 妯″潡 `TestI18nController` 鍥介檯鍖栨紨绀烘渚� - 鍦� `Header` 璇锋眰澶� 澧炲姞涓婁笅鏂囪瑷�鍙傛暟 `content-language` 鍙傛暟闇�涓庡浗闄呭寲閰嶇疆鏂囦欢鍚庣紑瀵瑰簲 - 濡� `zh_CN` `en_US` 绛�<br> - - - -## 鑾峰彇 `code` 瀵瑰簲鍥介檯鍖栧唴瀹� - -<br> -<br> - - -## 浣跨敤 `Validator` 妗嗘灦鏍¢獙 `controller` 鍙傛暟杩斿洖鍥介檯鍖� - -`controller` 鏍¢獙鎺ュ彛鍙傛暟 闇�瑕佸湪绫诲鍔� `@Validated` 娉ㄨВ<br> -<br> -鍙傛暟瀵瑰簲鏍¢獙娉ㄨВ 浣跨敤 `{code}` 褰㈠紡鏍囨敞浣跨敤鍥介檯鍖栧鐞�<br> -<br> -<br> - - -## 浣跨敤 `Validator` 妗嗘灦鏍¢獙 `Bean` 杩斿洖鍥介檯鍖� - -`Bean` 鏍¢獙闇�瑕佸湪鎺ュ彛鏍¢獙 `Bean` 鍙傛暟浣跨敤 `@Validated` 娉ㄨВ<br> -<br> -`Bean` 鍐呭睘鎬ф牎楠屾敞瑙� 浣跨敤 `{code}` 褰㈠紡鏍囨敞浣跨敤鍥介檯鍖栧鐞�<br> -<br> - \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/inner_authentication.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/inner_authentication.md deleted file mode 100644 index c90d2c6..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/inner_authentication.md +++ /dev/null @@ -1,19 +0,0 @@ -# 鍐呯綉閴存潈 -- - - -## 鍔熻兘浠嬬粛 - -姝ゅ姛鑳界敤浜庨槻姝㈠閮ㄨ姹傝闂唴閮ㄦ湇鍔″簲鐢�<br> -鍦ㄨ姹傜粡杩� `gateway缃戝叧` 浼氱敓鎴愪竴涓� `id-token` 鎼哄甫鍒板悗缁湇鍔¤繘琛屾牎楠�<br> -鑻ユ湭缁忚繃 `gateway缃戝叧` 璋冪敤鍐呯綉鏈嶅姟 浼氬嚭鐜� `id-token鏃犳晥` 寮傚父<br> -鏈夋晥闃叉闈炴硶璇锋眰鐩存帴璁块棶鍐呯綉鏈嶅姟<br> - -## 寮�鍚�/鍏抽棴鍐呯綉閴存潈 - -鏇存敼 `application-common.yml` 閰嶇疆鏂囦欢鐨� `sa-token.check-id-token` 閰嶇疆鍗冲彲 - - - -## 鏀捐鍐呯綉閴存潈 -杩涘叆 `ruoyi-common-security` 妯″潡鎵惧埌 `SecurityConfiguration` 绫� 澧炲姞鎺掗櫎璺緞鍗冲彲 - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/new_module.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/new_module.md deleted file mode 100644 index 0d75525..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/new_module.md +++ /dev/null @@ -1,39 +0,0 @@ -# 鍒涘缓鏂版湇鍔� -- - - -### 鏈�绠�鍗曠殑鏂瑰紡 -> 鎵句釜閰嶇疆濂界殑 渚嬪 `ruoyi-system` 鐩存帴copy涓�浠� - -> 灏� `pom` 鍚嶇О鏀规帀<br> - - - -> 鏈嶅姟鍚姩绫� 鍚嶇О鏀规帀<br> - - - -> `application.yml` 閰嶇疆鏈嶅姟搴旂敤鍚� 鏀规帀<br> - - - -> `nacos` 鏂板缓涓�浠芥柊鐨� 瀵瑰簲鏂版ā鍧楀悕绉扮殑 閰嶇疆鏂囦欢<br> - - -鏇存敼 `nacos` 涓婄殑 `ruoyi-gateway.yml` 澧炲姞鏂版湇鍔¤矾鐢�<br> -鏂版湇鍔¤闂矾寰� `缃戝叧ip:绔彛/鏈嶅姟璺緞/controller璺緞/鎺ュ彛璺緞`<br> -渚嬪瓙: `http://localhost:8080/system/user/list` <br> - - - - - -### 娉ㄦ剰浜嬮」 -濡傛灉鏄袱涓笉鍚屽寘鍚嶇殑妯″潡 闇�瑕佷慨鏀瑰涓嬮厤缃� - - - - - -濡傛灉鏂版湇鍔¢渶瑕佷娇鐢� `seata` 鍒嗗竷寮忎簨鍔�<br> -闇�瑕佸湪 `nacos` 涓婄殑 `seata-server.properties` 鏂囦欢鍐呭鍔犳湇鍔$粍 - - \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/update_package_name.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/update_package_name.md deleted file mode 100644 index 2dcab84..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/update_package_name.md +++ /dev/null @@ -1,33 +0,0 @@ -# 鍏充簬淇敼鍖呭悕 -- - - - -**娉ㄦ剰: 鑰佸寘鍚嶄负 com.ruoyi** - -## 1.闅忎究鎵句釜鍦版柟鏂板缓 org.dromara 鍖� - - -## 2.鍦ㄥ寘涓婂彸閿�夋嫨 refactor -> rename 閫夋嫨 All Directories - - - -**鍥犱负dromara缁勭粐涓嬫湁寰堝渚濊禆瀵艰嚧idea鏃犳硶璇嗗埆瀹屾暣鍖呭悕** -<br> - - -**闇�瑕佸厛灏哾romara淇敼涓� 渚嬪: ruoyi 鐒跺悗閲嶅涓婅堪姝ラ 杩欐牱灏卞彲浠ユ暣鍖呬慨鏀逛簡** -<br> - - -## 3.浣跨敤IDEA鍏ㄥ眬鏇挎崲 org.dromara 鏇挎崲涓� com.xxx - - - -**娉ㄦ剰: 鐢变簬dromara缁勭粐涓嬮」鐩緢澶� 闈炴湰妗嗘灦鐨勪緷璧栨ā鍧� 璇峰嬁淇敼 渚嬪涓婂浘涓殑 org.dromara.sms4j** - -## 4.濡傛湁闇�瑕� 灏嗘墍鏈夋ā鍧楀悕閫愪竴淇敼鍗冲彲 - -## 5.淇敼瀹屾垚鍚庨渶鏌ョ湅鎵�鏈塩ommon鍖呬笅妯″潡spi鏂囦欢鏄惁淇敼姝g‘ - -**鑰佺増鏈琲dea鎴栬�呮湭鎸夌収鏁欑▼淇敼鍖呭悕鍙兘瀵艰嚧鏂囦欢涓㈠寘闂** - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/update_url.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/update_url.md deleted file mode 100644 index d36012f..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/update_url.md +++ /dev/null @@ -1,25 +0,0 @@ -# 淇敼搴旂敤璺緞 -- - - -# 淇敼璁块棶鍚庣鎺ュ彛璺緞 - -鏇存敼 鍓嶇鐜閰嶇疆鏂囦欢 `VITE_APP_BASE_API` 浠g悊璺緞 - - <br> - - - -`prod` 鐢熶骇鐜闇�淇敼 `nginx.conf` 鍚庣浠g悊璺緞(涓婅堪閰嶇疆鏂囦欢涔熻鏀�) - - - -# 淇敼鍓嶇椤甸潰璁块棶璺緞 -淇敼瀵瑰簲鐜鐨� `.env.鐜` 鏂囦欢鍐呯殑 `VITE_APP_CONTEXT_PATH` 搴旂敤璁块棶璺緞鍗冲彲 - - - - - -鐢熶骇鐜 `nginx.conf` 涓庝箣瀵瑰簲淇敼鍗冲彲 <br> -**娉ㄦ剰: 鏂囦欢鐪熷疄鐩綍涓� `/usr/share/nginx/html/admin/index.html` 姝ゅ姛鑳戒竴鑸负澶氶」鐩儴缃查渶瑕� 鏁呬細澧炲姞涓�灞傜洰褰� 濡備笉闇�瑕佸彲浠ヨ嚜琛屼慨鏀�** <br> - - \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/client.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/client.md deleted file mode 100644 index 66ae32a..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/client.md +++ /dev/null @@ -1,85 +0,0 @@ -# 瀹㈡埛绔鐞嗗姛鑳� -- - - -## 鐗堟湰 >= 2.X - -## 瀹㈡埛绔鐞嗛〉闈� - - - -### 瀹㈡埛绔鐞嗗瓧娈佃鏄� -| 瀛楁鍚嶇О | 鍙栧�艰鏄� | 娉ㄦ剰浜嬮」 | -|----------------|----------------------------|--------------------------------| -| 瀹㈡埛绔痠d | 鐢卞悗绔敓鎴愶紝鐢ㄤ簬鍓嶇鐧诲綍鏍¢獙浠ュ強鎺ュ彛鏁版嵁鍔犲瘑 | 鏃犳硶淇敼锛屼笉瑕佸垹闄ら粯璁ゆ暟鎹紝鍚﹀垯浼氭姤閿� | -| 瀹㈡埛绔痥ey | 鍓嶇鑷畾涔� | 鏃犳硶淇敼锛屼笉瑕佸垹闄ら粯璁ゆ暟鎹紝鍚﹀垯浼氭姤閿� | -| 瀹㈡埛绔閽� | 鍓嶇鑷畾涔� | 鏃犳硶淇敼锛屼笉瑕佸垹闄ら粯璁ゆ暟鎹紝鍚﹀垯浼氭姤閿� | -| 鎺堟潈绫诲瀷 | 瀵嗙爜璁よ瘉銆佺煭淇¤璇併�侀偖浠惰璇併�佸皬绋嬪簭璁よ瘉銆佺涓夋柟璁よ瘉 | 鏍规嵁鎺堟潈绫诲瀷鍒ゆ柇褰撳墠瀹㈡埛绔槸鍚︽敮鎸佽鐧诲綍鏂瑰紡 | -| 璁惧绫诲瀷 | PC绔�丄PP绔� | | -| Token娲昏穬瓒呮椂鏃堕棿 | 鑷畾涔� | 鎸囧畾鏃堕棿鏃犳搷浣滃垯杩囨湡锛堝崟浣嶏細绉掞級锛岄粯璁�30鍒嗛挓锛�1800绉掞級 | -| Token鍥哄畾瓒呮椂鏃堕棿 | 鑷畾涔� | 鎸囧畾鏃堕棿蹇呭畾杩囨湡锛堝崟浣嶏細绉掞級锛岄粯璁や竷澶╋紙604800绉掞級 | - -### 鍓嶅悗绔娇鐢ㄦ柊鐨勫鎴风id - -姝ラ濡備笅锛� -1. 鍓嶇绠$悊椤甸潰鐢熸垚鏂扮殑瀹㈡埛绔痠d銆� -2. 灏嗘柊鐨勫鎴风id澶嶅埗鍒板墠绔厤缃枃浠躲�� - - - -## 鏂板鑷畾涔夊鎴风 - -### 姝ラ涓�锛氭柊澧炲鎴风鏁版嵁(渚嬪澧炲姞灏忕▼搴忕) - - - - - -### 姝ラ浜岋細閰嶇疆鍓嶇璇锋眰澶翠俊鎭� - -闇�瑕佸湪鍏ㄥ眬璇锋眰澶� header 涓鍔� cientid <br> -纭繚瀹㈡埛绔墍鏈夎姹傞兘鎼哄甫姝d 鍙弬鑰冮」鐩� `request.ts` - - - -`VITE_APP_CLIENT_ID` 鍗抽厤缃枃浠朵腑鐨勫鎴风id銆� - -**閲嶇偣锛氫笉鍚屽鎴风鐧诲綍鑾峰彇鍒扮殑token涓嶅悓涓庡叾浠栫涓嶄簰閫�(渚嬪: app鐧诲綍鑾峰彇鍒扮殑token鏃犳硶鐢ㄤ簬pc绔帴鍙f煡璇�)** - -## 鏂板鑷畾涔夌櫥褰曟柟寮忔巿鏉冪被鍨� - -**閲嶇偣璇存槑: 涓嶈鍗曠嫭澧炲姞鐧诲綍鎺ュ彛 绯荤粺鍏ㄥ眬缁熶竴鍙湁涓�涓櫥褰曟帴鍙� 鍙渶澧炲姞涓嶅悓鐨勯壌鏉冩柟寮忓嵆鍙�** - -濡備綍璋冭瘯浣跨敤鐧诲綍鐪嬭繖閲� -> [鍏充簬鐧诲綍璋冭瘯姝ラ](/questions/login_step.md) - -### 姝ラ涓�锛氭柊澧炲瓧鍏告暟鎹� - - - - - -### 姝ラ浜岋細鏂板/淇敼瀹㈡埛绔暟鎹� - -### 姝ラ涓夛細鍚庣鏂板璁よ瘉绛栫暐 - -鏂板绛栫暐瀹炵幇绫诲疄鐜� `IAuthStrategy` 鎺ュ彛銆�<br> - - - -鍙傜収宸叉湁绛栫暐瀹炵幇绫诲疄鐜拌嚜瀹氫箟鍙傛暟鏍¢獙鐧诲綍鏂规硶閫昏緫銆�<br> - - - -**娉ㄦ剰淇敼 `@Service` 鍚嶇О淇濊瘉瑙勮寖鎬�** - - - -`LoginBody` 鏍¢獙鍙傛暟锛堝彲鑷畾涔夛級<br> - - - -渚嬪 鎵╁睍灏忕▼搴忕櫥褰曞弬鏁� 鍙渶瑕佺户鎵� `LoginBody <br> - -` - -鏍¢獙鍒嗙粍锛堝彲鑷畾涔夛級<br> - - \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/code_generate.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/code_generate.md deleted file mode 100644 index 742ef93..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/code_generate.md +++ /dev/null @@ -1,86 +0,0 @@ -# 浠g爜鐢熸垚 -- - - -## 鍔熻兘浠嬬粛 - -### 鏁版嵁婧愰厤缃� - - - -<font size="4">**椤圭洰閫傞厤澶氱绫诲瀷鏁版嵁搴� 鍙互鍦ㄤ唬鐮佺敓鎴愰〉闈㈠垏鎹�**</font><br> - -> 濉啓瀵瑰簲鐨勬暟鎹簮鍚嶇О 鐐瑰嚮鎼滅储鎸夐挳 鍗冲彲鍒囨崲鍒板搴旂殑鏁版嵁婧�<br> - - - -<font size="4">**>= 2.2.1鐗堟湰 椤圭洰鏀寔100+绉嶆暟鎹簱閫傞厤 鍦ㄤ唬鐮佺敓鎴愭ā鍧楀鍔犲搴旂殑鏁版嵁搴撲緷璧栧嵆鍙�**</font><br> - - - - -### 瀵煎叆鏁版嵁琛� - -> 鐐瑰嚮瀵煎叆鎸夐挳 浼氬姞杞界郴缁熸暟鎹簱鎵�鏈夌殑琛�<br> - - - -> 閫夋嫨闇�瑕佺殑琛� 鐐瑰嚮纭畾鍗冲彲<br> - -<br> - - -### 缂栬緫琛ㄧ敓鎴愮粨鏋� - -> 鐐瑰嚮琛ㄥ搴旂殑缂栬緫鎸夐挳<br> - - - -> 鏇存敼瑕佺敓鎴愯〃鐨勬暟鎹�<br> - -<br> - - -### 鐢熸垚鏉′欢褰卞搷 - - - - -* `鎻掑叆` `缂栬緫` 褰卞搷鐢熸垚 BO 绫� 涓� 鍓嶇娣诲姞缂栬緫椤甸潰 鏄惁鏈夎瀛楁 -* `鍒楄〃` 褰卞搷鐢熸垚 VO 绫� 涓� 鍓嶇鍒楄〃椤甸潰灞曠ず 鏄惁鏈夎瀛楁 -* `鏌ヨ` 褰卞搷 鍓嶇椤甸潰鏄惁鏈夎瀛楁鐨勬悳绱㈡ 涓� 鍚庣浠g爜鏄惁鐢熸垚瀵瑰簲鐨勬煡璇㈡潯浠� -* `鏌ヨ鏂瑰紡` 褰卞搷鐢熸垚鏌ヨ鏉′欢鐨勭被鍨� -* `蹇呭~` 褰卞搷 BO 绫� 涓� 椤甸潰鏄惁寮哄埗鏍¢獙 -* `鏄剧ず绫诲瀷` 褰卞搷鐢熸垚椤甸潰浣跨敤浣曠灞曠ず缁勪欢 -* `瀛楀吀绫诲瀷` 褰卞搷椤甸潰鏄惁鐢熸垚涓庡瓧鍏哥殑鍏宠仈 - -### 鏍戣〃閰嶇疆 - -> 缂栬緫琛ㄧ敓鎴愪俊鎭� 鐢熸垚妯℃澘涓� `鏍戣〃` 濉啓瀵瑰簲鏁版嵁鍗冲彲<br> - - - -### 涓诲瓙琛ㄨ鏄� - -妗嗘灦涓嶆敮鎸佷篃涓嶆帹鑽愪娇鐢ㄤ富瀛愯〃<br> -鍘熷洜涓�鑸笟鍔″満鏅� 鍩烘湰閮芥槸涓�瀵筃琛� 澶氳〃鍏宠仈鍦烘櫙<br> -杩樻湁涓�浜� 涓� => 瀛� <= 涓� 鍦烘櫙 闇�姹傚緢澶嶆潅 寰堝皯鏈夊崟绾富瀛愯〃鍦烘櫙鍑虹幇<br> -鍙﹀涓诲瓙琛ㄥ叧鑱� 寰堝鏄撳嚭鐜� 绗涘崱灏旂Н 鎴栬�呮暟鎹敊涔辩瓑闂 闇�瑕佽嚜琛宻ql璋冧紭鍦烘櫙<br> -鎵�浠ュ缓璁ぇ瀹堕兘鎸夌収 鍗曡〃鐢熸垚 鑷缂栧啓涓氬姟閫昏緫 - -### 棰勮鍔熻兘 - -> 閰嶇疆濂界敓鎴愪俊鎭悗 鍙互鐐瑰嚮棰勮鎸夐挳<br> - - - -> 绯荤粺浼氭牴鎹凡缁忛厤缃ソ鐨勬暟鎹� 鐢熸垚瀵瑰簲鐨勪唬鐮侀瑙�<br> -> 鍙互鍐嶆澶勮瀵熶唬鐮佺殑鐢熸垚缁撴瀯鍜屾暟鎹槸鍚︽纭瓑<br> - - - - -### 浠g爜缁撴瀯鍚屾 - -> 瀹為檯寮�鍙戜腑 闅惧厤浼氭湁琛ㄧ粨鏋勬洿鏀圭殑闇�姹�<br> -> 杩欐椂鍙互浣跨敤 鍚屾鍔熻兘 鐐瑰嚮鍚屾鎸夐挳 鍗冲彲涓庡疄鏃舵暟鎹簱琛ㄨ繘琛屽瓧娈靛悓姝�<br> - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/export.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/export.md deleted file mode 100644 index fa90179..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/export.md +++ /dev/null @@ -1,250 +0,0 @@ -# 瀵煎嚭鍔熻兘 - -- - - - -鍦ㄦ湰妗嗘灦涓紩鍏ヤ簡 `Easy Excel` 渚濊禆锛堝 `Apache POI`杩涜浜嗗皝瑁呬互鍙婃墿灞曪級锛屽彲浠ュ鏁版嵁杩涜瀵煎嚭鎿嶄綔锛堝嵆鍐� Excel锛夈�� - -[EasyExcel 鏂囨。鍦板潃](https://easyexcel.opensource.alibaba.com/) - -## 瀵煎嚭鍔熻兘浣跨敤娴佺▼璇存槑 - -### 姝ラ涓�锛氬畾涔夊鍑哄疄浣撳璞� - -浠ユ鏋朵腑 `SysUserExportVo` 涓轰緥锛� - -```Java - /** - * 鐢ㄦ埛ID - */ - @ExcelProperty(value = "鐢ㄦ埛搴忓彿") - private Long userId; - - // ....................... - - /** - * 鐢ㄦ埛鎬у埆 - */ - @ExcelProperty(value = "鐢ㄦ埛鎬у埆", converter = ExcelDictConvert.class) - @ExcelDictFormat(dictType = "sys_user_sex") - private String sex; - - /** - * 甯愬彿鐘舵�侊紙0姝e父 1鍋滅敤锛� - */ - @ExcelProperty(value = "甯愬彿鐘舵��", converter = ExcelDictConvert.class) - @ExcelDictFormat(dictType = "sys_normal_disable") - private String status; -``` - -> 璇存槑锛�<br> -> 1. 浣跨敤 `@ExcelProperty` 娉ㄨВ鏍囨敞闇�瑕佸鍑虹殑灞炴�с�� -> 2. 娉ㄨВ `@ExcelProperty` 涓� `value` 灞炴�т唬琛ㄨ〃鏍煎ご閮ㄦ爣棰樺瓧娈碉紝`converter` 浠h〃浣跨敤鐨勮浆鎹㈠櫒锛屽悗闈細璇︾粏璇存槑銆� -> 3. 娉ㄨВ `@ExcelDictFormat` 涓鸿嚜瀹氫箟娉ㄨВ锛屼笌鑷畾涔夎浆鎹㈠櫒缁撳悎浣跨敤锛屽悓鏍峰湪鍚庨潰杩涜璇︾粏璇存槑銆� - -### 姝ラ浜岋細浣跨敤瀵煎嚭鏂规硶 - -浠ユ鏋朵腑 `SysUserController#export` 鏂规硶涓轰緥锛� - -```Java - /** - * 瀵煎嚭鐢ㄦ埛鍒楄〃 - */ - @PostMapping("/export") - public void export(SysUserBo user, HttpServletResponse response) { - // 鏍规嵁鍙傛暟鏌ヨ瀵煎嚭鐨勭敤鎴峰垪琛ㄦ暟鎹� - List<SysUserVo> list = userService.selectUserList(user); - // 灏嗗垪琛ㄨ浆鎹负瀵煎嚭瀵硅薄鍒楄〃 - List<SysUserExportVo> listVo = MapstructUtils.convert(list, SysUserExportVo.class); - // 瀵煎嚭鏂规硶 - ExcelUtil.exportExcel(listVo, "鐢ㄦ埛鏁版嵁", SysUserExportVo.class, response); - } -``` - -> 璇存槑锛�<br> -> 浣跨敤 `ExcelUtil.exportExcel` 鏂规硶瀹屾垚瀵煎嚭鍔熻兘锛屼笂杩� Demo 浼犲叆鍙傛暟鍒嗗埆鏄細瀵煎嚭瀵硅薄闆嗗悎锛孍xcel sheet 琛ㄥ悕绉帮紝瀵煎嚭瀵硅薄绫诲瀷锛宺esponse銆� - -## 妗嗘灦宸ュ叿浣跨敤璇存槑 - -### 1锛氬瓧鍏歌浆鎹㈠櫒 - -瀛楀吀杞崲鍣� `ExcelDictConvert` 涓庤嚜瀹氫箟娉ㄨВ `@ExcelDictFormat` 缁撳悎浣跨敤锛屾爣娉ㄥ湪闇�瑕佽浆鎹㈢殑灞炴�т笂銆� - -浣跨敤鏂瑰紡涓�锛� - -```Java - /** - * 鐢ㄦ埛鎬у埆 - */ - @ExcelProperty(value = "鐢ㄦ埛鎬у埆", converter = ExcelDictConvert.class) - @ExcelDictFormat(dictType = "sys_user_sex") - private String sex; -``` - -浣跨敤鏂瑰紡浜岋細 - -```Java - /** - * 鐢ㄦ埛鎬у埆 - */ - @ExcelProperty(value = "鐢ㄦ埛鎬у埆", converter = ExcelDictConvert.class) - @ExcelDictFormat(readConverterExp="0=鐢�,1=濂�,2=鏈煡", separator=",") - private String sex; -``` - -`@ExcelDictFormat` 娉ㄨВ灞炴�ц鏄庯細 - -| 灞炴�у悕绉� | 灞炴�х被鍨� | 榛樿鍊� | 璇存槑 | -|------------------|--------|-----|-----------------------------------| -| dictType | String | "" | 瀛楀吀鐨則ype鍊� (濡�: sys_user_sex) | -| readConverterExp | String | "" | 璇诲彇鍐呭杞〃杈惧紡 (濡�: 0=鐢�,1=濂�,2=鏈煡) | -| separator | String | "," | 涓� readConverterExp 灞炴�х粨鍚堜娇鐢紝琛ㄨ揪寮忕殑鍒嗛殧绗� | - -### 2锛氭灇涓捐浆鎹㈠櫒 - -瀛楀吀杞崲鍣� `ExcelEnumConvert` 涓庤嚜瀹氫箟娉ㄨВ `@ExcelEnumFormat` 缁撳悎浣跨敤锛屾爣娉ㄥ湪闇�瑕佽浆鎹㈢殑灞炴�т笂銆� - -浣跨敤鏂瑰紡锛� - -```Java - /** - * 鐢ㄦ埛绫诲瀷 - * </p> - * 浣跨敤ExcelEnumFormat娉ㄨВ闇�瑕佽繘琛屼笅鎷夐�夌殑閮ㄥ垎 - */ - @ExcelProperty(value = "鐢ㄦ埛绫诲瀷", index = 1, converter = ExcelEnumConvert.class) - @ExcelEnumFormat(enumClass = UserStatus.class, textField = "info") - private String userStatus; -``` - -`@ExcelEnumFormat` 娉ㄨВ灞炴�ц鏄庯細 - -| 灞炴�у悕绉� | 灞炴�х被鍨� | 榛樿鍊� | 璇存槑 | -|-----------|------------|------|------------------------------| -| enumClass | Enum Class | - | 瀛楀吀鏋氫妇绫诲瀷 | -| codeField | String | code | 瀛楀吀鏋氫妇绫讳腑瀵瑰簲鐨� code 灞炴�у悕绉帮紝榛樿涓� code | -| textField | String | text | 瀛楀吀鏋氫妇绫讳腑瀵瑰簲鐨� text 灞炴�у悕绉帮紝榛樿涓� text | - -### 3锛氬悎骞跺崟鍏冩牸 - -`@CellMerge` 娉ㄨВ鐢ㄤ簬鍚堝苟鐩稿悓鐨勫垪鏁版嵁锛岄渶瑕佺粨鍚� `CellMergeStrategy` 绛栫暐浣跨敤锛屾爣娉ㄥ湪闇�瑕佽浆鎹㈢殑灞炴�т笂銆� - -浣跨敤鏂瑰紡锛� - -姝ラ涓�锛氬湪灞炴�ф爣娉� `@CellMerge` 娉ㄨВ锛� -```Java - /** - * 閮ㄩ棬id - */ - @CellMerge - @ExcelProperty(value = "閮ㄩ棬id") - private Long deptId; -``` - -`@CellMerge` 娉ㄨВ灞炴�ц鏄庯細 - -| 灞炴�у悕绉� | 灞炴�х被鍨� | 榛樿鍊� | 璇存槑 | -|---------|----------|-----|------------------------------| -| index | int | -1 | 鍚堝苟鍒楃殑涓嬫爣锛屽缓璁娇鐢ㄩ粯璁ゅ�� | -| mergeBy | String[] | {} | 鍚堝苟闇�瑕佷緷璧栫殑鍏朵粬瀛楁鍚嶇О(鍩轰簬杩欎釜瀛楁鍐呭鍋氬悎骞舵潯浠�) | - - -姝ラ浜岋細瀵煎嚭鏂规硶寮�鍚悎骞讹細 -```Java - /** - * 瀵煎嚭娴嬭瘯鍗曡〃鍒楄〃 - */ - @PostMapping("/export") - public void export(@Validated TestDemoBo bo, HttpServletResponse response) { - List<TestDemoVo> list = testDemoService.queryList(bo); - // 鍙傛暟 true 琛ㄧず寮�鍚悎骞跺崟鍏冩牸绛栫暐 - ExcelUtil.exportExcel(list, "娴嬭瘯鍗曡〃", TestDemoVo.class, true, response); - } -``` - - -### 4锛氬鏉� Excel 瀵煎嚭绀轰緥 -`TestExcelController` 鎻愪緵浜嗗嚑绉嶅鍑虹ず渚嬶紝濡傛灉闇�瑕佸彲浠ュ弬鐓х浉搴旀柟娉曡繘琛屽鍑恒�� - -#### 4.1锛氬崟鍒楄〃澶氭暟鎹鍑猴紙妯℃澘瀵煎嚭锛� - -妯℃澘鍐呭锛� - - - -妯℃澘浣嶇疆锛歚ruoyi-example/ruoyi-demo/src/main/resources/excel/` - -瀵煎嚭绀轰緥浠g爜锛氬弬鑰� demo 妯″潡 `TestExcelController` 妯℃澘鍐欐硶璇锋煡鐪� `EasyExcel` 鏂囨。 - -瀵煎嚭缁撴灉锛� - - - -#### 4.2锛氬鍒楄〃澶氭暟鎹鍑猴紙妯℃澘瀵煎嚭锛� - -妯℃澘鍐呭锛� - - - -妯℃澘浣嶇疆锛歚ruoyi-example/ruoyi-demo/src/main/resources/excel/` - -瀵煎嚭绀轰緥浠g爜锛氬弬鑰� demo 妯″潡 `TestExcelController` 妯℃澘鍐欐硶璇锋煡鐪� `EasyExcel` 鏂囨。 - -瀵煎嚭缁撴灉锛� - - - -#### 4.3锛氬鍑轰笅鎷夋 - -`ExcelDictFormat` 娉ㄨВ鎸囧畾鐨勫瓧鍏搁」榛樿閮戒細杞崲鎴愪笅鎷夋 - -鑷畾涔夊鍑虹渷甯傚尯涓嬫媺妗嗙ず渚嬩唬鐮侊細鍙傝�� demo 妯″潡 `TestExcelController` - -瀵煎嚭缁撴灉锛� - - - -## Easy Excel 甯哥敤娉ㄨВ - -`Easy Excel` 鎻愪緵浜嗕赴瀵岀殑娉ㄨВ鍙互瀵瑰鍑哄璞¤繘琛屽畾鍒跺寲鎿嶄綔锛岃繖閲岀殑娉ㄨВ璇存槑閽堝鐨勬槸鍘熺敓娉ㄨВ锛岃嚜瀹氫箟娉ㄨВ浼氱粨鍚堣浆鎹㈠櫒涓�璧疯繘琛岃鏄庛�� - -| 绫诲瀷 | 娉ㄨВ鍚嶇О | 浣跨敤涓句緥 | 璇存槑 | -|-------|-------------------------|------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------| -| 鏍煎紡鍖栨敞瑙� | @DateTimeFormat | @DateTimeFormat(value=鏍煎紡鍖栧��) | 瀵瑰瓧绗︿覆杩涜鏃ユ湡鏍煎紡鍖� (鍙傜収 `java.text.SimpleDateFormat` 涔﹀啓鍗冲彲) | -| 鏍煎紡鍖栨敞瑙� | @NumberFormat | @NumberFormat(value=鏍煎紡鍖栧��, roundingMode=鑸嶅叆妯″紡) | 瀵瑰瓧绗︿覆杩涜鏁板�兼牸寮忓寲 (鍙傜収 `java.text.DecimalFormat` 涔﹀啓鍗冲彲, `roundingMode` 榛樿 `RoundingMode.HALF_UP`) | -| 鏍峰紡娉ㄨВ | @ColumnWidth | @ColumnWidth(value=鍊�) | 璁剧疆鍒楀 | -| 鏍峰紡娉ㄨВ | @ContentFontStyle | @ContentFontStyle(color=棰滆壊) | 鍙互璁剧疆瀛椾綋绫诲瀷锛岄鑹诧紝绮楃粏锛屾槸鍚︽枩浣擄紝涓嬪垝绾跨瓑锛屽叿浣撳彲鏌ョ湅娉ㄨВ `@ContentFontStyle` | -| 鏍峰紡娉ㄨВ | @ContentLoopMerge | @ContentLoopMerge(eachRow=琛屽��, columnExtend=鍒楀��) | 璁剧疆寰幆鍚堝苟鐨勫尯鍩� | -| 鏍峰紡娉ㄨВ | @ContentRowHeight | @ContentRowHeight(value=鍊�) | 璁剧疆鍐呭琛岄珮 | -| 鏍峰紡娉ㄨВ | @ContentStyle | - | 璁剧疆鍗曞厓鏍兼牱寮忥紝鍏蜂綋鍙煡鐪嬫敞瑙� `@ContentStyle` | -| 鏍峰紡娉ㄨВ | @HeadFontStyle | @HeadFontStyle(color=棰滆壊) | 璁剧疆琛ㄥご瀛椾綋鏍煎紡锛岀被浼� `@ContentFontStyle`锛屽叿浣撳彲鏌ョ湅娉ㄨВ `@HeadFontStyle` | -| 鏍峰紡娉ㄨВ | @HeadRowHeight | @HeadRowHeight(value=鍊�) | 璁剧疆琛ㄥご琛岄珮 | -| 鏍峰紡娉ㄨВ | @HeadStyle | - | 璁剧疆琛ㄥご鏍峰紡锛屽叿浣撳彲鏌ョ湅娉ㄨВ `@HeadStyle` | -| 鏍峰紡娉ㄨВ | @OnceAbsoluteMerge | @OnceAbsoluteMerge(firstRowIndex=寮�濮嬭涓嬫爣, lastRowIndex=缁撴潫琛屼笅鏍�, firstColumnIndex=寮�濮嬪垪涓嬫爣, lastColumnIndex=缁撴潫鍒椾笅鏍�) | 鏍规嵁璁剧疆鍊煎悎骞跺崟鍏冩牸 | -| 灞炴�ф敞瑙� | @ExcelIgnore | @ExcelIgnore | 瀵煎嚭蹇界暐璇ュ瓧娈� | -| 灞炴�ф敞瑙� | @ExcelIgnoreUnannotated | @ExcelIgnoreUnannotated | 榛樿涓嶇鍔犱笉鍔� `@ExcelProperty` 鐨勬敞瑙g殑鎵�鏈夊瓧娈甸兘浼氬弬涓庤鍐欙紝鍔犱簡 `@ExcelIgnoreUnannotated` 娉ㄨВ浠ュ悗锛屼笉鍔� `@ExcelProperty` 娉ㄨВ鐨勫瓧娈靛氨涓嶄細鍙備笌 | -| 灞炴�ф敞瑙� | @ExcelProperty | @ExcelProperty(value=鍊�, order=鎺掑簭鍊�, index=涓嬫爣, converter=杞崲鍣�) | 榛樿鎸夌収瀵硅薄灞炴�ч『搴忓鍑猴紝濡傛灉璁剧疆浜� `order` 浠ュ強 `index`锛屼紭鍏堢骇 `index` > `order` > 榛樿锛沜onverter 鍙互鑷畾涔� | - -## 鎵╁睍璇存槑 - -### 鑷畾涔夎浆鎹㈠櫒瀹炵幇 - -鐢变簬涓氬姟闇�瑕侊紝鍘熺敓娉ㄨВ涓嶄竴瀹氳兘澶熺鍚堥渶瑕侊紝鍥犺�岃鐢熷嚭浜嗚嚜瀹氫箟杞崲鍣ㄣ�傝兘澶熷疄鐜板畾鍒跺寲鐨勫唴瀹硅浆鎹㈤渶瑕併�� -浠ヤ笅浠ユ鏋朵腑鐨勫瓧鍏歌浆鎹㈠櫒 `ExcelDictConvert` 涓轰緥杩涜璇存槑銆� - -瀛楀吀杞崲鍣� `ExcelDictConvert`锛屽瓧鍏歌浆鎹㈠櫒浣跨敤浜嗚嚜瀹氫箟娉ㄨВ `@ExcelDictFormat` 閰嶅悎浣跨敤銆� - -_**娉細鑷畾涔夎浆鎹㈠櫒骞堕潪涓�瀹氶渶瑕佽嚜瀹氫箟娉ㄨВ锛屼篃鍙互閽堝宸叉湁鐨勬敞瑙h繘琛岃嚜瀹氫箟杞崲瀹炵幇銆�**_ - -#### 瀹炵幇鏂瑰紡 - -鑷畾涔夎浆鎹㈠櫒闇�瑕佸疄鐜� `com.alibaba.excel.converters.Converter` 鎺ュ彛锛屽疄鐜版帴鍙d腑鐨勬柟娉曘�� - - - -杞崲鏂规硶 `ExcelDictConvert#convertToExcelData` 锛� - - - -## 鏇村鍔熻兘 - -鏇村瀵煎嚭鍔熻兘浣跨敤鍙互鍙傜収 `Easy Excel` [瀹樻柟鏂囨。](https://easyexcel.opensource.alibaba.com/docs/current/api/write)銆� \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/import.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/import.md deleted file mode 100644 index f1bbca7..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/import.md +++ /dev/null @@ -1,202 +0,0 @@ -# 瀵煎叆鍔熻兘 -- - - - -鍦ㄦ湰妗嗘灦涓紩鍏ヤ簡 `Easy Excel` 渚濊禆锛堝 `Apache POI`杩涜浜嗗皝瑁呬互鍙婃墿灞曪級锛屽彲浠ュ鏁版嵁杩涜瀵煎叆鎿嶄綔锛堝嵆璇� Excel锛夈�� - -## 瀵煎叆鍔熻兘浣跨敤娴佺▼璇存槑 - -### 姝ラ涓�锛氬畾涔夊鍏ュ疄浣撳璞� - -浠ユ鏋朵腑 `SysUserImportVo` 涓轰緥锛� - -```java - /** - * 鐢ㄦ埛ID - */ - @ExcelProperty(value = "鐢ㄦ埛搴忓彿") - private Long userId; - - // ....................... - - /** - * 鐢ㄦ埛鎬у埆 - */ - @ExcelProperty(value = "鐢ㄦ埛鎬у埆", converter = ExcelDictConvert.class) - @ExcelDictFormat(dictType = "sys_user_sex") - private String sex; - - /** - * 甯愬彿鐘舵�侊紙0姝e父 1鍋滅敤锛� - */ - @ExcelProperty(value = "甯愬彿鐘舵��", converter = ExcelDictConvert.class) - @ExcelDictFormat(dictType = "sys_normal_disable") - private String status; -``` - -> 璇存槑锛�<br> -> 1. 浣跨敤 `@ExcelProperty` 娉ㄨВ鏍囨敞闇�瑕佸鍏ョ殑灞炴�с�� -> 2. 娉ㄨВ `@ExcelProperty` 涓� `value` 灞炴�т唬琛ㄨ〃鏍煎ご閮ㄦ爣棰樺瓧娈碉紝`converter` 浠h〃浣跨敤鐨勮浆鎹㈠櫒锛屽悗闈細璇︾粏璇存槑銆� -> 3. 娉ㄨВ `@ExcelDictFormat` 涓鸿嚜瀹氫箟娉ㄨВ锛屼笌鑷畾涔夎浆鎹㈠櫒缁撳悎浣跨敤锛屽悓鏍峰湪鍚庨潰杩涜璇︾粏璇存槑銆� -> 4. 瀵硅薄绂佹浣跨敤閾惧紡娉ㄨВ `@Accessors(chain = true)`锛屼細鎵句笉鍒皊et鏂规硶銆� - -### 姝ラ浜岋細浣跨敤瀵煎叆鏂规硶 - -浠ユ鏋朵腑 `SysUserController#importData` 鏂规硶涓轰緥锛� - -```Java - /** - * 瀵煎叆鏁版嵁 - * - * @param file 瀵煎叆鏂囦欢 - * @param updateSupport 鏄惁鏇存柊宸插瓨鍦ㄦ暟鎹� - */ - @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.IMPORT) - @SaCheckPermission("system:user:import") - @PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) - public R<Void> importData(@RequestPart("file") MultipartFile file, boolean updateSupport) throws Exception { - // 瀵煎叆鏂规硶 - ExcelResult<SysUserImportVo> result = ExcelUtil.importExcel(file.getInputStream(), SysUserImportVo.class, new SysUserImportListener(updateSupport)); - return R.ok(result.getAnalysis()); - } -``` -> 璇存槑锛�<br> -> 浣跨敤 `ExcelUtil.importExcel` 鏂规硶瀹屾垚瀵煎嚭鍔熻兘锛屼笂杩� Demo 浼犲叆鍙傛暟鍒嗗埆鏄細瀵煎叆鏂囦欢娴侊紝瀵煎叆瀵硅薄绫诲瀷锛屽鍏ョ洃鍚櫒 `SysUserImportListener`銆� - -## 妗嗘灦宸ュ叿浣跨敤璇存槑 - -### 1锛氬瓧鍏歌浆鎹㈠櫒 - -瀛楀吀杞崲鍣� `ExcelDictConvert` 涓庤嚜瀹氫箟娉ㄨВ `@ExcelDictFormat` 缁撳悎浣跨敤锛屾爣娉ㄥ湪闇�瑕佽浆鎹㈢殑灞炴�т笂銆� - -浣跨敤鏂瑰紡涓�锛� - -```Java - /** - * 鐢ㄦ埛鎬у埆 - */ - @ExcelProperty(value = "鐢ㄦ埛鎬у埆", converter = ExcelDictConvert.class) - @ExcelDictFormat(dictType = "sys_user_sex") - private String sex; -``` - -浣跨敤鏂瑰紡浜岋細 - -```Java - /** - * 鐢ㄦ埛鎬у埆 - */ - @ExcelProperty(value = "鐢ㄦ埛鎬у埆", converter = ExcelDictConvert.class) - @ExcelDictFormat(readConverterExp="0=鐢�,1=濂�,2=鏈煡", separator=",") - private String sex; -``` - -`@ExcelDictFormat` 娉ㄨВ灞炴�ц鏄庯細 - -| 灞炴�у悕绉� | 灞炴�х被鍨� | 榛樿鍊� | 璇存槑 | -|------------------|--------|-----|-----------------------------------| -| dictType | String | "" | 瀛楀吀鐨則ype鍊� (濡�: sys_user_sex) | -| readConverterExp | String | "" | 璇诲彇鍐呭杞〃杈惧紡 (濡�: 0=鐢�,1=濂�,2=鏈煡) | -| separator | String | "," | 涓� readConverterExp 灞炴�х粨鍚堜娇鐢紝琛ㄨ揪寮忕殑鍒嗛殧绗� | - -### 2锛氭灇涓捐浆鎹㈠櫒 - -瀛楀吀杞崲鍣� `ExcelEnumConvert` 涓庤嚜瀹氫箟娉ㄨВ `@ExcelEnumFormat` 缁撳悎浣跨敤锛屾爣娉ㄥ湪闇�瑕佽浆鎹㈢殑灞炴�т笂銆� - -浣跨敤鏂瑰紡锛� - -```Java - /** - * 鐢ㄦ埛绫诲瀷 - * </p> - * 浣跨敤ExcelEnumFormat娉ㄨВ闇�瑕佽繘琛屼笅鎷夐�夌殑閮ㄥ垎 - */ - @ExcelProperty(value = "鐢ㄦ埛绫诲瀷", index = 1, converter = ExcelEnumConvert.class) - @ExcelEnumFormat(enumClass = UserStatus.class, textField = "info") - private String userStatus; -``` - -`@ExcelEnumFormat` 娉ㄨВ灞炴�ц鏄庯細 - -| 灞炴�у悕绉� | 灞炴�х被鍨� | 榛樿鍊� | 璇存槑 | -|-----------|------------|------|------------------------------| -| enumClass | Enum Class | - | 瀛楀吀鏋氫妇绫诲瀷 | -| codeField | String | code | 瀛楀吀鏋氫妇绫讳腑瀵瑰簲鐨� code 灞炴�у悕绉帮紝榛樿涓� code | -| textField | String | text | 瀛楀吀鏋氫妇绫讳腑瀵瑰簲鐨� text 灞炴�у悕绉帮紝榛樿涓� text | - - -### 3锛氬鍏ョ洃鍚櫒 - -#### 3.1锛欵xcelListener 鐩戝惉鍣ㄦ帴鍙� - -`ExcelListener` 鎵╁睍浜� `ReadListener` 鎺ュ彛锛屽鍔犱簡鑾峰彇缁撴灉鏂规硶銆� - - - -#### 3.2锛欴efaultExcelListener 榛樿鐩戝惉鍣� - -`DefaultExcelListener` 榛樿鐩戝惉鍣ㄥ湪璇� Excel 鏃惰皟鐢紝涓昏瀵规暟鎹繘琛屾牎楠屻�佽В鏋愩�佸紓甯稿鐞嗐�佽繑鍥炵粨鏋滅瓑銆傚鍏ユ搷浣滄椂濡傛灉娌℃湁鐗瑰埆鎸囧畾鍒欎娇鐢ㄨ鐩戝惉鍣ㄣ�� - -#### 3.3锛歋ysUserImportListener 鐢ㄦ埛瀵煎叆鐩戝惉鍣� - -`SysUserImportListener` 鐢ㄦ埛瀵煎叆鐩戝惉鍣ㄦ槸鍦ㄧ敤鎴峰鍏ユ椂璋冪敤鐨勭洃鍚櫒銆� - -璇ョ洃鍚櫒閲嶅啓浜� `invoke` 鍙嶅皠鎺ュ彛锛屽瀵煎叆鐨勭敤鎴锋暟鎹繘琛屼簡鏍¢獙锛涢噸鍐欎簡 `getExcelResult` 鑾峰彇缁撴灉鎺ュ彛锛岃繑鍥炵粨鏋滄暟鎹�� - -#### 3.4锛欵xportDemoListener 甯︿笅鎷夋鐨勫鍏ョ洃鍚櫒 - -`ExportDemoListener` 鏄甯︽湁涓嬫媺妗嗙殑 Excel 杩涜澶勭悊鐨勫鍏ョ洃鍚櫒銆� - -## Easy Excel 甯哥敤娉ㄨВ - -`Easy Excel` 鎻愪緵浜嗕赴瀵岀殑娉ㄨВ鍙互瀵瑰鍑哄璞¤繘琛屽畾鍒跺寲鎿嶄綔锛岃繖閲岀殑娉ㄨВ璇存槑閽堝鐨勬槸鍘熺敓娉ㄨВ銆� - -| 绫诲瀷 | 娉ㄨВ鍚嶇О | 浣跨敤涓句緥 | 璇存槑 | -|-------|-------------------------|------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------| -| 鏍煎紡鍖栨敞瑙� | @DateTimeFormat | @DateTimeFormat(value=鏍煎紡鍖栧��) | 瀵瑰瓧绗︿覆杩涜鏃ユ湡鏍煎紡鍖� (鍙傜収 `java.text.SimpleDateFormat` 涔﹀啓鍗冲彲) | -| 鏍煎紡鍖栨敞瑙� | @NumberFormat | @NumberFormat(value=鏍煎紡鍖栧��, roundingMode=鑸嶅叆妯″紡) | 瀵瑰瓧绗︿覆杩涜鏁板�兼牸寮忓寲 (鍙傜収 `java.text.DecimalFormat` 涔﹀啓鍗冲彲, `roundingMode` 榛樿 `RoundingMode.HALF_UP`) | -| 灞炴�ф敞瑙� | @ExcelIgnore | @ExcelIgnore | 瀵煎嚭蹇界暐璇ュ瓧娈� | -| 灞炴�ф敞瑙� | @ExcelIgnoreUnannotated | @ExcelIgnoreUnannotated | 榛樿涓嶇鍔犱笉鍔� `@ExcelProperty` 鐨勬敞瑙g殑鎵�鏈夊瓧娈甸兘浼氬弬涓庤鍐欙紝鍔犱簡 `@ExcelIgnoreUnannotated` 娉ㄨВ浠ュ悗锛屼笉鍔� `@ExcelProperty` 娉ㄨВ鐨勫瓧娈靛氨涓嶄細鍙備笌 | -| 灞炴�ф敞瑙� | @ExcelProperty | @ExcelProperty(value=鍊�, order=鎺掑簭鍊�, index=涓嬫爣, converter=杞崲鍣�) | 榛樿鎸夌収瀵硅薄灞炴�ч『搴忓鍑猴紝濡傛灉璁剧疆浜� `order` 浠ュ強 `index`锛屼紭鍏堢骇 `index` > `order` > 榛樿锛沜onverter 鍙互鑷畾涔� | - -## 鎵╁睍浣跨敤 - -### 鎵╁睍涓�锛氳嚜瀹氫箟杞崲鍣ㄥ疄鐜� - -鐢变簬涓氬姟闇�瑕侊紝鍘熺敓娉ㄨВ涓嶄竴瀹氳兘澶熺鍚堥渶瑕侊紝鍥犺�岃鐢熷嚭浜嗚嚜瀹氫箟杞崲鍣ㄣ�傝兘澶熷疄鐜板畾鍒跺寲鐨勫唴瀹硅浆鎹㈤渶瑕併�� -浠ヤ笅浠ユ鏋朵腑鐨勫瓧鍏歌浆鎹㈠櫒 `ExcelDictConvert` 涓轰緥杩涜璇存槑銆� - -瀛楀吀杞崲鍣� `ExcelDictConvert`锛屽瓧鍏歌浆鎹㈠櫒浣跨敤浜嗚嚜瀹氫箟娉ㄨВ `@ExcelDictFormat` 閰嶅悎浣跨敤銆� - -_**娉細鑷畾涔夎浆鎹㈠櫒骞堕潪涓�瀹氶渶瑕佽嚜瀹氫箟娉ㄨВ锛屼篃鍙互閽堝宸叉湁鐨勬敞瑙h繘琛岃嚜瀹氫箟杞崲瀹炵幇銆�**_ - -#### 瀹炵幇鏂瑰紡 - -鑷畾涔夎浆鎹㈠櫒闇�瑕佸疄鐜� `com.alibaba.excel.converters.Converter` 鎺ュ彛锛屽疄鐜版帴鍙d腑鐨勬柟娉曘�� - - - -杞崲鏂规硶 `ExcelDictConvert#convertToJavaData` 锛� - - - -### 鎵╁睍浜岋細鑷畾涔夌洃鍚櫒瀹炵幇 - -鑷畾涔夌洃鍚櫒涓昏鐢ㄤ簬鍦ㄨ鍙栬В鏋� Excel 鏁版嵁鏃惰繘琛岃嚜瀹氫箟鎿嶄綔銆� -浠ヤ笅浠ユ鏋朵腑鐨勭敤鎴峰鍏ョ洃鍚櫒 `SysUserImportListener` 涓轰緥杩涜璇存槑銆� - -#### 瀹炵幇鏂瑰紡 -1. 缁ф壙鍒嗘瀽浜嬩欢鐩戝惉鍣� `AnalysisEventListener` 浠ュ強瀹炵幇 Excel 鐩戝惉鍣� `ExcelListener`銆� - - - -2. 鏄剧ず浣跨敤鏋勯�犲嚱鏁帮紝鍚﹀垯灏嗗鑷寸┖鎸囬拡銆� - - - -3. 瀹炵幇 `invoke` 鏂规硶锛屽鏁版嵁杩涜瑙f瀽鎿嶄綔锛屽彲浠ュ湪姝ゆ柟娉曞鏁版嵁杩涜鍚堟硶鎬у垽鏂�� - -4. 瀹炵幇 `getExcelResult` 鏂规硶锛屽缁撴灉杩涜鎿嶄綔锛屼緥濡傝繑鍥炴垚鍔熴�佸け璐ョ殑缁熻鏁版嵁銆� - -## 鏇村鍔熻兘 - -鏇村瀵煎叆鍔熻兘浣跨敤鍙互鍙傜収 `Easy Excel` [瀹樻柟鏂囨。](https://easyexcel.opensource.alibaba.com/docs/current/quickstart/read)銆� \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/oss.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/oss.md deleted file mode 100644 index 4cb4276..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/oss.md +++ /dev/null @@ -1,124 +0,0 @@ -# 鍏充簬OSS妯″潡浣跨敤 -- - - -## 閲嶇偣娉ㄦ剰浜嬮」 - -`妗�/瀛樺偍鍖哄煙` 绯荤粺浼氭牴鎹厤缃嚜琛屽垱寤哄垎閰嶆潈闄�<br> -~~濡傛墜鍔ㄩ厤缃渶瑕佽缃� `鍏湁璇籤 鏉冮檺 鍚﹀垯鏂囦欢鏃犳硶璁块棶~~(`aliyun` 杩橀渶寮�閫氳法鍩熼厤缃�)<br> -1.4.0 鐗堟湰鏀寔閰嶇疆`鍏湁/绉佹湁`鏉冮檺(`aliyun` 杩橀渶寮�閫氳法鍩熼厤缃�)<br> -璁块棶绔欑偣 鍚庝弗绂佹惡甯﹀叾浠� `url` 渚嬪: `/`, `/ruoyi` 绛�<br> -**闃块噷浜戜笌鑵捐浜慡DK璁块棶绔欑偣涓笉鑳藉寘鍚《鍚� 绯荤粺浼氳嚜鍔ㄥ鐞�** <br> -**minio 绔欑偣涓嶅厑璁镐娇鐢� localhost 璇蜂娇鐢� 127.0.0.1** <br> -**璁块棶绔欑偣涓庤嚜瀹氫箟鍩熷悕 閮戒笉瑕佸寘鍚� `http` `https` 鍓嶇紑 璁剧疆`https`璇蜂娇鐢ㄩ�夐」澶勭悊** - -## 浠g爜浣跨敤 - -> 鍙傝�� `SysOssService.upload` 鐢ㄦ硶 <br> -> 浣跨敤 `OssFactory.instance()` 鑾峰彇褰撳墠鍚敤鐨� `OssClient` 瀹炰緥<br> -> 杩涜鍔熻兘璋冪敤 鑾峰彇杩斿洖鍊煎悗 瀛樺偍鍒板搴旂殑涓氬姟琛� - - - - -## 鍔熻兘閰嶇疆 - -### 閰嶇疆OSS - -> 杩涘叆 `绯荤粺绠$悊 -> 鏂囦欢绠$悊 -> 閰嶇疆绠$悊` 濉啓瀵瑰簲鐨凮SS鏈嶅姟鐩稿叧閰嶇疆<br> - -<br> -<br - - -<font size="6">**閲嶇偣璇存槑**</font> - -> 浜戝巶鍟嗗彧闇�淇敼 `璁块棶绔欑偣`瀵瑰簲鐨勫煙 鍒囧嬁涔辨敼(浜戝巶鍟嗗己鐑堝缓璁粦瀹氳嚜瀹氫箟鍩熷悕浣跨敤 涓冪墰浜戝繀椤荤粦瀹歔瀹樻柟瑙勫畾])<br> - - - -> 涓冪墰浜� 璁块棶绔欑偣<br> - - -<br> - - -> 闃块噷浜� 璁块棶绔欑偣 - - - -> 鑵捐浜� 璁块棶绔欑偣 - - - -### MinIO 浣跨敤 https璁块棶绔欑偣 - -**娉ㄦ剰锛歋3 API 绛惧悕璁$畻绠楁硶涓嶆敮鎸佹墭绠� MinIO Server API 鐨勪唬鐞嗘柟妗�** - -[ minio https 閰嶇疆鏂瑰紡](https://blog.csdn.net/Michelle_Zhong/article/details/126484358) - -### 鍒囨崲OSS - -> 鍐嶉厤缃垪琛ㄧ偣鍑� `鐘舵�乣 鎸夐挳寮�鍚嵆鍙�(娉ㄦ剰: 鍙兘寮�鍚竴涓狾SS榛樿閰嶇疆)<br> -> 鎵嬪姩浣跨敤 `OssFactory.instance("configKey")` <br> - - - -### 鎵╁睍鍒嗙被 - -> 濡傛湁鏂囦欢鍒嗙被 寤鸿鍒涘缓澶氫釜 oss閰嶇疆 杩涜鍒囨崲瀛樺偍<br> - -渚嬪: 鍒涘缓涓�涓� 鍥剧墖瀛樺偍鐨� oss閰嶇疆<br> -鎸囧畾鍞竴鐨� `configKey` 涓� `鍓嶇紑鐩綍` 鎴� 鐩存帴浣跨敤鐙珛鐨刞妗禶<br> -鐙珛妗剁殑鐗圭偣 鍙互鑷畾涔夎闂潈闄�<br> -渚嬪: 鍒涘缓涓�涓鏈夋枃浠跺瓨鍌ㄦ《 涓嶅澶栧紑鏀�<br> - - - -> 鎸囧畾闇�瑕佷娇鐢ㄧ殑閰嶇疆<br> -> 浣跨敤 `OssFactory.instance("image")` 鑾峰彇鐨� `OssClient` 浼氬姞杞戒笂鍥剧殑閰嶇疆 浠庤�岃揪鍒颁笂浼犱笉鍚岀殑鐩綍鎴栨《 - - - - - -### 涓婁紶鍥剧墖鎴栨枃浠� - -> 杩涘叆 `绯荤粺绠$悊 -> 鏂囦欢绠$悊` 鐐瑰嚮 `涓婁紶鏂囦欢` 鎴� `涓婁紶鍥剧墖` 鏍规嵁閫夐」閫夋嫨鍗冲彲 浼氬搴斾笂浼犲埌閰嶇疆寮�鍚殑OSS鍐�<br> - -<br> -<br> -<br> - - -### 鍒楄〃灞曠ず - -> 榛樿灞曠ず鍥剧墖(鍙瑙�) 鏂囦欢浼氬睍绀鸿矾寰�<br> - -<br> - - -> 鍙互鐐瑰嚮 `棰勮绂佺敤鍚敤` 鎸夐挳瀵规槸鍚﹀睍绀鸿繘琛屾洿鏀� - - - -> 鐐瑰嚮绂佺敤鍚� 鍥剧墖浼氬彉鎴愯矾寰勫睍绀� - - - -> 涔熷彲鍐� `鍙傛暟璁剧疆` 鏇存敼棰勮鐘舵�� 灏� `OSS棰勮鍒楄〃璧勬簮` 鏀逛负 `false` 鍗冲彲鍏抽棴棰勮 - - - -### 鍒犻櫎鍔熻兘 - -> 鐐瑰嚮鍒楄〃涓婃柟鎴栧悗鏂� `鍒犻櫎` 鎸夐挳 浼氭牴鎹甇SS鏈嶅姟鍟嗙被鍨� 璋冪敤瀵瑰簲鐨勫垹闄�(娉ㄦ剰: 闇�纭繚瀵瑰簲鐨勬湇鍔″晢閰嶇疆姝g‘)<br> -> 鍙嬀閫夊鏈嶅姟鍟嗙被鍨嬬殑鏂囦欢杩涜鍒犻櫎 绯荤粺浼氳嚜鍔ㄥ垽鏂� - - - - -### 涓嬭浇鍔熻兘 - -> 鐐瑰嚮鍒楄〃鍚庢柟瀵瑰簲璧勬簮鐨� `涓嬭浇` 鎸夐挳 鏍规嵁闇�姹傚~鍐欐枃浠跺悕 鐐瑰嚮纭鍗冲彲瀹屾垚涓嬭浇 - - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/page.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/page.md deleted file mode 100644 index 2aafe47..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/page.md +++ /dev/null @@ -1,29 +0,0 @@ -# 鍒嗛〉鍔熻兘 -- - - - -## 閲嶇偣璇存槑 - -> 椤圭洰浣跨敤 `mybatis-plus` 鍒嗛〉鎻掍欢 瀹炵幇鍒嗛〉鍔熻兘 澶ц嚧鐢ㄦ硶涓� MP 涓�鑷� [MP鍒嗛〉鏂囨。](https://baomidou.com/pages/97710a/) <br> -> 椤圭洰宸查厤缃垎椤靛悎鐞嗗寲 椤垫暟婧㈠嚭 渚嬪: 涓�鍏�5椤� 鏌ヤ簡绗�6椤� 榛樿杩斿洖绗竴椤� <br> - - - -## 浠g爜鐢ㄦ硶 - -> `Controller` 浣跨敤 `PageQuery` 鎺ユ敹鍒嗛〉鍙傛暟 鍏蜂綋鍙傛暟鍙傝�� `PageQuery` - - - -> 鏋勫缓 `Mybatis-Plus` 鍒嗛〉瀵硅薄 <br> -> 浣跨敤 `PageQuery#build()` 鏂规硶 鍙揩閫�(鍩轰簬褰撳墠瀵硅薄鏁版嵁)鏋勫缓 `MP` 鍒嗛〉瀵硅薄 - -<br> -<br> - -鍏蜂綋鐢ㄦ硶涓� `MP` 涓�鑷� - -> 鑷畾涔� `SQL` 鏂规硶鍒嗛〉 <br> -> 鍙渶鍦� `Mapper` 鏂规硶绗竴涓弬鏁板拰杩斿洖鍊� 閲嶇偣: 绗竴涓弬鏁� 鏍囨敞鍒嗛〉瀵硅薄 - -<br> - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/param_check.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/param_check.md deleted file mode 100644 index 95ee19d..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/param_check.md +++ /dev/null @@ -1,158 +0,0 @@ -# 鍙傛暟鏍¢獙 -- - - - -鍙傛暟鏍¢獙鍦ㄦ棩甯稿紑鍙戜腑鍗佸垎甯歌锛屽湪鏈鏋朵腑寮曞叆浜� `spring-boot-starter-validation` 渚濊禆锛屽簳灞傚熀浜� `hibernate-validator`锛屽彲浠ュ鍙傛暟杩涜鏍¢獙銆� - -## 鍙傛暟鏍¢獙浣跨敤 - -### 鏂规硶涓�锛氫娇鐢� `@Validated` 娉ㄨВ - -#### 姝ラ涓�锛氭爣娉� `@Validated` - -`@Validated` 鍙互鏍囨敞鍦ㄧ被涓婏紝鎴栬�呮槸鍙傛暟鍓嶃�� - -```Java -/** 鏍囨敞鍦ㄧ被涓� **/ -@Validated -@RestController -@RequestMapping("/auth") -public class AuthController { - - @PostMapping("/login") - public R<LoginVo> login(@RequestBody LoginBody body) { - // ... - } - -} -``` - -```Java -/** 鏍囨敞鍦ㄥ弬鏁板墠 **/ -@PostMapping -public R<Void> add(@Validated @RequestBody SysUserBo user) { - // ... -} -``` - -#### 姝ラ浜岋細鏍囨敞鏍¢獙娉ㄨВ - -鍦ㄥ弬鏁颁腑鍔犲叆鏍¢獙娉ㄨВ銆� - -```Java -public class SysUserBo { - - @NotBlank(message = "鐢ㄦ埛璐﹀彿涓嶈兘涓虹┖") - @Size(min = 0, max = 30, message = "鐢ㄦ埛璐﹀彿闀垮害涓嶈兘瓒呰繃{max}涓瓧绗�") - private String userName; - - @NotBlank(message = "鐢ㄦ埛鏄电О涓嶈兘涓虹┖") - @Size(min = 0, max = 30, message = "鐢ㄦ埛鏄电О闀垮害涓嶈兘瓒呰繃{max}涓瓧绗�") - private String nickName; - - @Email(message = "閭鏍煎紡涓嶆纭�") - @Size(min = 0, max = 50, message = "閭闀垮害涓嶈兘瓒呰繃{max}涓瓧绗�") - private String email; - -} -``` - -甯歌鏍¢獙娉ㄨВ瑙佹枃鏈檮琛ㄣ�� - -_娉細message 鏀寔 EL 琛ㄨ揪寮忥紝{max} 鐩存帴璇诲彇鍓嶉潰鐨勫弬鏁板�笺�俖 - -### 鏂规硶浜岋細浣跨敤鏍¢獙宸ュ叿绫� `ValidatorUtils` - -`org.dromara.common.core.utils.ValidatorUtils` - - - -浣跨敤鏂瑰紡 1锛氭牎楠屾墍鏈夊甫鏈夋牎楠屾敞瑙g殑灞炴�� - -```Java -// 鏍¢獙鎵�鏈夊甫鏈夋牎楠屾敞瑙g殑灞炴�� -ValidatorUtils.validate(object); -``` - -浣跨敤鏂瑰紡 2锛氭寜鐓у垎缁勬牎楠屽睘鎬э紙鍙互浼犲涓垎缁勶級 - -```Java -// 鎸夌収鍒嗙粍鏍¢獙灞炴�э紙鍙互浼犲涓垎缁勶級 -ValidatorUtils.validate(object, group); -``` - -## 鎵╁睍浣跨敤 - -### 鎵╁睍涓�锛氳嚜瀹氫箟鏍¢獙娉ㄨВ - -闄や簡宸叉湁鐨勬牎楠屾敞瑙d互澶栵紝鍙互缁撳悎涓氬姟杩涜鑷畾涔夈�� - -浠ユ鏋朵腑鐨� `@Xss` 娉ㄨВ涓轰緥杩涜璇存槑銆� - -```Java -@Xss(message = "鐢ㄦ埛璐﹀彿涓嶈兘鍖呭惈鑴氭湰瀛楃") -@NotBlank(message = "鐢ㄦ埛璐﹀彿涓嶈兘涓虹┖") -@Size(min = 0, max = 30, message = "鐢ㄦ埛璐﹀彿闀垮害涓嶈兘瓒呰繃{max}涓瓧绗�") -private String userName; -``` - -#### 1锛氭柊澧� `@Xss` 娉ㄨВ - -`org.dromara.common.core.xss.Xss` - - - -#### 2锛氳嚜瀹氫箟鏍¢獙鍣� - -鑷畾涔夋牎楠屽櫒瀹炵幇 `jakarta.validation.ConstraintValidator` 鎺ュ彛銆� - -`org.dromara.common.core.xss.XssValidator` - - - -### 鎵╁睍浜岋細鑷畾涔夊垎缁勬牎楠� - -鍚屼竴涓璞″湪涓嶅悓鐨勮姹備腑闇�瑕佹牎楠岀殑鍙傛暟涓嶅悓锛屽垯鍙互浣跨敤鍒嗙粍鏍¢獙銆� - -#### 1锛氳嚜瀹氫箟鍒嗙粍 - - - -#### 2锛歚@Validated` 娉ㄨВ鎸囧畾鍒嗙粍 - - - -#### 3锛氭牎楠屾敞瑙d腑鎸囧畾鍒嗙粍 - - - -## 闄勫綍锛氬父鐢ㄦ牎楠屾敞瑙� - -| 娉ㄨВ | 浣跨敤锛堝彧鍒椾妇鐗规畩鍙傛暟鍊硷級 | 鍙傛暟绫诲瀷 | 璇存槑 | -|------------------|--------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------| -| @AssertFalse | @AssertFalse | boolean / Boolean | 鍏冪礌鍊煎繀椤讳负 false | -| @AssertTrue | @AssertTrue | boolean / Boolean | 鍏冪礌鍊煎繀椤讳负 true | -| @DecimalMax | @DecimalMax(value=鍊�) | - BigDecimal <br> - BigInteger <br> - CharSequence <br> - byte, short, int, long 鍙婂叾鍖呰绫� | 鍏冪礌蹇呴』鏄竴涓暟瀛楋紝鍏跺�煎繀椤诲皬浜庢垨绛変簬鎸囧畾鐨勬渶澶у�� | -| @DecimalMin | @DecimalMin(value=鍊�) | - BigDecimal <br> - BigInteger <br> - CharSequence <br> - byte, short, int, long 鍙婂叾鍖呰绫� | 鍏冪礌蹇呴』鏄竴涓暟瀛楋紝鍏跺�煎繀椤诲ぇ浜庢垨绛変簬鎸囧畾鐨勬渶灏忓�� | -| @Digits | @Digits(integer=鏁存暟浣嶅��, fraction=灏忔暟浣嶅��) | - BigDecimal <br> - BigInteger <br> - CharSequence <br> - byte, short, int, long 鍙婂叾鍖呰绫� | 鍏冪礌蹇呴』绗﹀悎鏁存暟浣嶄互鍙婂皬鏁颁綅鑼冨洿鍊� | -| @Email | @Email(regexp=姝e垯琛ㄨ揪寮�, flags=鏍囧織) | CharSequence | 鍏冪礌鏄惁绗﹀悎姝e垯琛ㄨ揪寮忥紙姝e垯琛ㄨ揪寮忛潪蹇呬紶锛� | -| @Future | @Future | - java.util.Date <br> - java.util.Calendar <br> - java.time.Instant <br> - java.time.LocalDate <br> - java.time.LocalDateTime <br> - java.time.LocalTime <br> - java.time.MonthDay <br> - java.time.OffsetDateTime <br> - java.time.OffsetTime <br> - java.time.Year <br> - java.time.YearMonth <br> - java.time.ZonedDateTime <br> - java.time.chrono.HijrahDate <br> - java.time.chrono.JapaneseDate <br> - java.time.chrono.MinguoDate <br> - java.time.chrono.ThaiBuddhistDate | 鍏冪礌蹇呴』鏄湭鏉ョ殑鏃跺埢銆佹棩鏈熸垨鏃堕棿 | -| @FutureOrPresent | @FutureOrPresent | 鍚� @Future | 鍏冪礌蹇呴』鏄綋鍓嶆垨鏈潵鐨勬椂鍒汇�佹棩鏈熸垨鏃堕棿 | -| @Length | @Length(min=鏈�灏忓��, max=鏈�澶у��) | - CharSequence | 楠岃瘉瀛楃涓叉槸鍚﹀湪鍖呭惈鐨� min 鍜� max 涔嬮棿 | -| @Max | @Max(value=鍊�) | - BigDecimal <br> - BigInteger <br> - byte, short, int, long 鍙婂叾鍖呰绫� | 鍏冪礌蹇呴』鏄竴涓暟瀛楋紝鍏跺�煎繀椤诲皬浜庢垨绛変簬鎸囧畾鐨勬渶澶у�� | -| @Min | @Min(value=鍊�) | - BigDecimal <br> - BigInteger <br> - byte, short, int, long 鍙婂叾鍖呰绫� | 鍏冪礌蹇呴』鏄竴涓暟瀛楋紝鍏跺�煎繀椤诲ぇ浜庢垨绛変簬鎸囧畾鐨勬渶灏忓�� | -| @Negative | @Negative | - BigDecimal <br> - BigInteger <br> - byte锛宻hort锛宨nt锛宭ong锛宖loat锛宒ouble 鍙婂叾鍖呰绫� | 鍏冪礌蹇呴』鏄竴涓弗鏍肩殑璐熸暟锛堝嵆 0 琚涓烘棤鏁堝�硷級 | -| @NegativeOrZero | @NegativeOrZero | - BigDecimal <br> - BigInteger <br> - byte锛宻hort锛宨nt锛宭ong锛宖loat锛宒ouble 鍙婂叾鍖呰绫� | 鍏冪礌蹇呴』涓鸿礋鏁版垨 0 | -| @NotBlank | @NotBlank | CharSequence | 鍏冪礌涓嶈兘涓� null锛屽苟涓斿繀椤昏嚦灏戝寘鍚竴涓潪绌虹櫧瀛楃 | -| @NotEmpty | @NotEmpty | - CharSequence <br> - Collection <br> - Map <br> - Array | 鍏冪礌涓嶈兘涓� null 鎴栫┖闆嗗悎 | -| @NotNull | @NotNull | 涓嶉檺绫诲瀷 | 鍏冪礌涓嶈兘涓� null | -| @Null | @Null | 涓嶉檺绫诲瀷 | 鍏冪礌蹇呴』涓� null | -| @Past | @Past | 鍚� @Future | 鍏冪礌蹇呴』鏄繃鍘荤殑鐬棿銆佹棩鏈熸垨鏃堕棿 | -| @PastOrPresent | @PastOrPresent | 鍚� @Future | 鍏冪礌蹇呴』鏄繃鍘绘垨鐜板湪鐨勭灛闂淬�佹棩鏈熸垨鏃堕棿 | -| @Pattern | @Pattern(regexp=姝e垯琛ㄨ揪寮�, flags=鏍囧織) | CharSequence | 鍏冪礌蹇呴』涓庢寚瀹氱殑姝e垯琛ㄨ揪寮忓尮閰嶏紙姝e垯琛ㄨ揪寮忛伒寰� Java 姝e垯琛ㄨ揪寮忕害瀹氾級 | -| @Positive | @Positive | - BigDecimal <br> - BigInteger <br> - byte锛宻hort锛宨nt锛宭ong锛宖loat锛宒ouble 鍙婂叾鍖呰绫� | 鍏冪礌蹇呴』鏄竴涓弗鏍肩殑姝f暟锛堝嵆 0 琚涓烘棤鏁堝�硷級 | -| @PositiveOrZero | @PositiveOrZero | - BigDecimal <br> - BigInteger <br> - byte锛宻hort锛宨nt锛宭ong锛宖loat锛宒ouble 鍙婂叾鍖呰绫� | 鍏冪礌蹇呴』涓烘鏁版垨 0 | -| @Range | @Range(min=鏈�灏忓��, max=鏈�澶у��) | - BigDecimal <br> - BigInteger <br> - CharSequence <br> - byte, short, int, long 鍙婂叾鍖呰绫� | 楠岃瘉鍏冪礌鏄惁鍦ㄥ寘鍚殑 min 鍜� max 涔嬮棿 | -| @Size | @Size(min=鏈�灏忓��, max=鏈�澶у��) | - CharSequence <br> - Collection <br> - Map <br> - Array | 楠岃瘉鍏冪礌鏄惁鍦ㄥ寘鍚殑 min 鍜� max 涔嬮棿 | -| @Valid | @Valid | 瀵硅薄 | 绾ц仈楠岃瘉 | - -鏇村娉ㄨВ鍙弬鑰冨寘锛� `org.hibernate.validator` \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/permissions.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/permissions.md deleted file mode 100644 index 62ce294..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/permissions.md +++ /dev/null @@ -1,144 +0,0 @@ -# 鍏充簬鏁版嵁鏉冮檺 -- - - -* 鍙傝�� demo 妯″潡鐢ㄦ硶(闇�瀵煎叆 test.sql 鏂囦欢) - -### 鏂扮増鏁版嵁鏉冮檺鍔熻兘: -1.鏀寔鑷姩娉ㄥ叆 sql 鏁版嵁杩囨护<br> -2.鏌ヨ銆佹洿鏂般�佸垹闄� 闄愬埗<br> -3.鏀寔鑷畾涔夋暟鎹瓧娈佃繃婊�<br> -4.妯℃澘鏀寔 spel 璇硶瀹炵幇鍔ㄦ�� Bean 澶勭悊<br> -5.鏀寔涓庤彍鍗曟潈闄愭爣璇嗙鑱斿悎浣跨敤(2.2.X鏂板姛鑳�) - -### 鏁版嵁鏉冮檺鐩稿叧浠g爜 - -| 绫� | 璇存槑 | 鍔熻兘 | -|-------------------------------|-----------------|----------------------------------------| -| DataScopeType | 鏁版嵁鏉冮檺妯℃澘瀹氫箟 | 鐢ㄤ簬瀹氫箟鏁版嵁鏉冮檺妯℃澘 | -| DataPermission | 鏁版嵁鏉冮檺缁勬敞瑙� | 鐢ㄤ簬鏍囨敞寮�鍚暟鎹潈闄� (榛樿杩囨护閮ㄩ棬鏉冮檺) | -| DataColumn | 鍏蜂綋鐨勬暟鎹潈闄愬瓧娈垫爣娉� | 鐢ㄤ簬鏇挎崲鏁版嵁鏉冮檺妯℃澘鍐呯殑 key 鍙橀噺 | -| PlusDataPermissionInterceptor | 鏁版嵁鏉冮檺 sql 鎷︽埅鍣� | 鐢ㄤ簬鎷︽埅鎵�鏈� sql 妫�鏌ユ槸鍚︽爣娉ㄤ簡 `DataPermission` 娉ㄨВ | -| PlusDataPermissionHandler | 鏁版嵁鏉冮檺澶勭悊鍣� | 鐢ㄤ簬澶勭悊琚嫤鎴埌鐨� sql 涓哄叾娣诲姞鏁版嵁鏉冮檺杩囨护鏉′欢 | -| DataPermissionHelper | 鏁版嵁鏉冮檺鍔╂墜 | 鎿嶄綔鏁版嵁鏉冮檺涓婁笅鏂囧彉閲� | -| SysDataScopeService | 鑷畾涔� Bean 澶勭悊鏁版嵁鏉冮檺 | 鐢ㄤ簬鑷畾涔夋墿灞� | - -## 蹇界暐鏁版嵁鏉冮檺 - -1.濡傛灉闇�瑕佹寚瀹氬崟鐙� SQL 涓嶅紑鍚繃婊わ紝鍙湪瀵瑰簲鐨� Mapper 鎺ュ彛娣诲姞濡備笅蹇界暐娉ㄨВ锛� -``` -@InterceptorIgnore(dataPermission = "true") -``` - -2.濡傛灉闇�瑕佸湪涓氬姟灞傚拷鐣ユ暟鎹潈闄愶紝鍙皟鐢ㄤ互涓嬫柟娉曪細 -``` -# 鏃犺繑鍥炲�� -DataPermissionHelper.ignore(() -> { 涓氬姟浠g爜 }); -# 鏈夎繑鍥炲�� -Class result = DataPermissionHelper.ignore(() -> { return 涓氬姟浠g爜 }); -``` - -### 浣跨敤鏂瑰紡 `鍙傝�僤emo妯″潡` -鏁版嵁鏉冮檺浣撶郴 `鐢ㄦ埛 -> 澶氳鑹� => 瑙掕壊 -> 鍗曟暟鎹潈闄恅 -> 渚嬪瓙: 鐢ㄦ埛A 鎷ユ湁涓や釜瑙掕壊<br> -> 瑙掕壊A 閮ㄩ棬缁忕悊 鍙煡鐪� 鏈儴闂ㄥ強浠ヤ笅閮ㄩ棬鐨勬暟鎹�<br> -> 瑙掕壊B 鍏艰亴寮�鍙� 鍙煡鐪� 浠呰嚜宸辩殑鏁版嵁 - -> 鍒涘缓瑙掕壊 test1 涓� 鏈儴闂ㄥ強浠ヤ笅 - - - -> 鍒涘缓瑙掕壊 test2 涓� 浠呮湰浜� - - - -> 灏嗗叾鍒嗛厤缁欑敤鎴� test - - - -### 缂栧啓鍒楄〃鏌ヨ(娉ㄦ剰: 鏁版嵁鏉冮檺娉ㄨВ鍙兘鍦� Mapper 灞備娇鐢�) - -> 鏍囨敞鏁版嵁鏉冮檺娉ㄨВ `dept_id` 涓鸿繃婊ら儴闂ㄥ瓧娈� `user_id` 涓鸿繃婊ゅ垱寤虹敤鎴� - - - -### 閲嶇偣娉ㄦ剰: 濡備笅鎯呭喌涓嶇敓鏁� - -> 鏈夎嚜瀹氫箟瀹炵幇鏂规硶 鏈�缁堟墽琛岀殑mapper涓嶆槸杩欎釜鏂规硶 鎵�浠ユ棤娉曠敓鏁� -> -> 瑙e喅鏂规: 涓�鐩村線涓嬬偣 鎵惧埌鏈�缁堢殑鎵цmapper閲嶅啓鍗冲彲 - - - -### 缂栧啓鏁版嵁鏉冮檺妯℃澘 - - - -1.`code` 涓哄叧鑱旇鑹茬殑鏁版嵁鏉冮檺 `code`<br> -2.`sqlTemplate` 涓� sql 妯℃澘<br> -`#{#deptName}` 涓烘ā鏉垮彉閲� 瀵瑰簲鏉冮檺娉ㄨВ鐨� `key`<br> -`#{@sdss}` 涓烘ā鏉� Bean 璋冪敤 璋冪敤鍏� Bean 鐨勫鐞嗘柟娉�<br> -3.`elseSql` 涓哄厹搴� sql 澶勭悊褰撳墠瑙掕壊涓庢爣娉ㄧ殑娉ㄨВ 鏃犲搴旂殑鎯呭喌<br> -渚嬪 鏁版嵁鏉冮檺涓轰粎鏈汉 涓� 鏂规硶骞舵湭鏍囨敞鍏蜂綋杩囨护娉ㄨВ 鍒� 濉厖 `1 = 0` 浣挎潯浠朵笉婊¤冻 涓嶅厑璁告煡鐪�<br> -鏇磋缁嗙敤娉曞彲浠ュ弬鑰� `DataScopeType` 娉ㄩ噴 - -### 娴嬭瘯浠g爜 - -> 浣跨敤 `绠$悊鍛榒 鐢ㄦ埛浼樺厛娴嬭瘯 - - - -> 浣跨敤 `test` 鐢ㄦ埛娴嬭瘯 - - - -> 浣跨敤 `test` 鍒犻櫎涓�鏉′笉灞炰簬鑷繁鐨勬暟鎹� -> sql鎵ц涓轰笉婊¤冻鏉′欢 涓嶅厑璁稿垹闄� - - - - - - -> 浣跨敤 `test` 淇敼涓庡垹闄ゅ悓鐞�<br> -> 鍏蜂綋瀹炵幇涓� 鏇存柊鍜屽垹闄ゆ柟娉� 鏍囨敞鏁版嵁鏉冮檺娉ㄨВ - - - -### 鑷畾涔塖QL妯℃澘 - -> 1.棣栧厛鍦ㄨ鑹茬鐞� 鏁版嵁鏉冮檺涓嬫媺妗� 娣诲姞鑷畾涔夋ā鏉�<br> -> 涓轰粈涔堜笉鏀剧疆鍒扮郴缁熷瓧鍏搁棶棰�: 鍥犳暟鎹潈闄愪笌妯℃澘缁戝畾 涓嶅簲闅忔剰鏀瑰姩 鏈�濂戒簨鍏堝畾涔夊ソ - - - -> 2.浠g爜 `DataScopeType` 鑷畾涔変竴涓猄QL妯℃澘 - - - -> 3.鏍囨敞鏉冮檺娉ㄨВ - - - -> 4.璁剧疆鏁版嵁鏉冮檺鍙橀噺 - - - -> 5.娴嬭瘯 - - - -### mybatis-plus 鍘熺敓鏂规硶 澧炲姞鏁版嵁鏉冮檺杩囨护 - -> 棣栧厛鏌ョ湅闇�瑕侀噸鍐欑殑鏂规硶婧愮爜 閲嶇偣`鏂规硶婧愮爜` `鏂规硶婧愮爜` `鏂规硶婧愮爜`<br> -> 渚嬪閲嶅啓 `selectPage` 鏂规硶<br> - - - -> 澶嶅埗婧愮爜鍒拌嚜宸辩殑 `Mapper` 骞跺鍔犳暟鎹潈闄愭敞瑙� 娉ㄦ剰宸﹁竟鍑虹幇閲嶅啓鍥炬爣 鍗充负閲嶅啓鎴愬姛<br> - - - -### 鏀寔绫绘爣娉� - -> 鑾峰彇瑙勫垯 `鏂规硶 > 绫籤 娉ㄦ剰: 绫绘爣娉ㄥ悗 鎵�鏈夋柟娉�(鍖呮嫭鐖剁被鏂规硶) 閮戒細杩涜鏁版嵁鏉冮檺杩囨护 - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/permissions_control.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/permissions_control.md deleted file mode 100644 index 6931ca7..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/permissions_control.md +++ /dev/null @@ -1,178 +0,0 @@ -# 鏉冮檺鎺у埗 -- - - - -鏈枃閲囩敤 `Sa-Token` 妗嗘灦瀹炵幇鏉冮檺鎺у埗銆俒瀹樻柟鏂囨。浼犻�侀棬](https://sa-token.cc/doc.html#/) - -## 鏉冮檺鏍¢獙 -鏉冮檺鏍¢獙鎸囩殑鏄牎楠岀敤鎴锋槸鍚︽嫢鏈夎闂煇涓� API 鐨勮兘鍔涖�� - -閫氬父鎯呭喌涓嬶紝涓�涓� API 瀵瑰簲涓�涓潈闄愮爜锛屽鏋滅敤鎴峰叿澶囧綋鍓� API 鐨勬潈闄愮爜锛屽嵆浠h〃鏈夎兘鍔涜闂 API銆� - -### 1锛氭潈闄愭爣璇� -鍦ㄦ湰绯荤粺涓紝姣忎竴涓彍鍗曞姛鑳介兘鏈夊搴旂殑鏉冮檺鏍囪瘑锛屽彲浠ュ湪鑿滃崟绠$悊涓繘琛岃缃�� - -> 娉細 -> 1. 鍓嶅悗绔殑鏉冮檺鏍囪瘑瑕佷繚鎸佷竴鑷淬�� -> 2. 鏉冮檺鏍囪瘑鍙互浣跨敤閫氶厤绗*`銆� - - - - -### 2锛氭牎楠屾柟娉� -#### 2.1锛氫娇鐢� `@SaCheckPermission` 娉ㄨВ杩涜鏍¢獙 -`@SaCheckPermission` 娉ㄨВ鏄敱 `Sa-Token` 妗嗘灦鎻愪緵鐨勮鑹叉牎楠屾敞瑙o紝鍙互鏍囨敞鍦ㄦ柟娉曚笂鎴栫被涓娿�� - -- 鍗曚釜鏉冮檺鏍¢獙锛� - -```Java -@SaCheckPermission("system:user:list") -``` - -- 澶氫釜鏉冮檺鏍¢獙锛堟垨妯″紡锛屾弧瓒充换鎰忎竴涓潈闄愬嵆鍙級锛� - -```Java -@SaCheckPermission( - value = { - "system:user:list", - "system:user:query" - }, - mode = SaMode.OR -) -``` - -- 澶氫釜鏉冮檺鏍¢獙锛堜笌妯″紡锛屽繀椤绘弧瓒虫墍鏈夋潈闄愶級锛� - -```Java -@SaCheckPermission( - value = { - "system:user:list", - "system:user:query" - }, - mode = SaMode.AND -) -``` - -#### 2.2锛氫娇鐢� `StpUtil` 宸ュ叿绫绘牎楠� -`StpUtil` 宸ュ叿绫绘槸鐢� `Sa-Token` 妗嗘灦鎻愪緵鐨勬潈闄愬伐鍏风被锛屾彁渚涗簡甯哥敤鐨勬牎楠屾柟娉曘�� - -- 鍒ゆ柇褰撳墠鐢ㄦ埛鏄惁鎷ユ湁鏌愪釜鏉冮檺锛堣繑鍥� `boolean`锛夛細 - -```Java -StpUtil.hasPermission("system:user:list"); -``` - -- 鍗曚釜鏉冮檺鏍¢獙锛� - -```Java -StpUtil.checkPermission("system:user:list"); -``` -濡傛灉楠岃瘉鏈�氳繃锛屽垯鎶涘嚭寮傚父: `NotPermissionException` - -- 澶氫釜鏉冮檺鏍¢獙锛堟垨妯″紡锛屾弧瓒充换鎰忎竴涓潈闄愬嵆鍙級锛� - -```Java -StpUtil.checkPermissionOr("system:user:list", "system:user:query"); -``` -濡傛灉楠岃瘉鏈�氳繃锛屽垯鎶涘嚭寮傚父: `NotPermissionException` - -- 澶氫釜鏉冮檺鏍¢獙锛堜笌妯″紡锛屽繀椤绘弧瓒虫墍鏈夋潈闄愶級锛� - -```Java -StpUtil.checkPermissionAnd("system:user:list", "system:user:query"); -``` -濡傛灉楠岃瘉鏈�氳繃锛屽垯鎶涘嚭寮傚父: `NotPermissionException` - -## 瑙掕壊鏍¢獙 -瑙掕壊鏍¢獙鎸囩殑鏄牎楠岀敤鎴锋槸鍚︽嫢鏈夋煇涓寚瀹氳鑹层�� - -### 1锛氭潈闄愭爣璇� -鍦ㄦ湰绯荤粺涓紝姣忎釜瑙掕壊閮芥嫢鏈夊敮涓�鐨勬潈闄愬瓧绗︺�� - -闄や簡瓒呯骇绠$悊鍛樿鑹插锛屽叾浠栬鑹茬殑鏉冮檺瀛楃鍙互閫氳繃瑙掕壊绠$悊杩涜璁剧疆銆� - - - -### 2锛氭牎楠屾柟娉� -#### 2.1锛氫娇鐢� `@SaCheckRole` 娉ㄨВ鏍¢獙 -`@SaCheckRole` 娉ㄨВ鏄敱 `Sa-Token` 妗嗘灦鎻愪緵鐨勮鑹叉牎楠屾敞瑙o紝鍙互鏍囨敞鍦ㄦ柟娉曚笂鎴栫被涓娿�� - -- 鍗曚釜瑙掕壊鏍¢獙 - -```Java -@SaCheckRole("superadmin") -``` - -- 澶氫釜瑙掕壊鏍¢獙锛堟垨妯″紡锛屾弧瓒充换鎰忎竴涓鑹插嵆鍙級锛� - -```Java -@SaCheckRole( - value = { - "superadmin", - "admin" - }, - mode = SaMode.OR -) -``` - -- 澶氫釜瑙掕壊鏍¢獙锛堜笌妯″紡锛屽繀椤绘弧瓒虫墍鏈夎鑹诧級锛� - -```Java -@SaCheckRole( - value = { - "superadmin", - "admin" - }, - mode = SaMode.AND -) -``` - -#### 2.2锛氫娇鐢� `StpUtil` 宸ュ叿绫绘牎楠� -`StpUtil` 宸ュ叿绫绘槸鐢� `Sa-Token` 妗嗘灦鎻愪緵鐨勬潈闄愬伐鍏风被锛屾彁渚涗簡甯哥敤鐨勬牎楠屾柟娉曘�� - -- 鍒ゆ柇褰撳墠鐢ㄦ埛鏄惁鎷ユ湁鏌愪釜瑙掕壊锛堣繑鍥� `boolean`锛夛細 - -```Java -StpUtil.hasRole("superadmin") -``` - -- 鍗曚釜鏉冮檺鏍¢獙锛� - -```Java -StpUtil.checkRole("system:user:list"); -``` -濡傛灉楠岃瘉鏈�氳繃锛屽垯鎶涘嚭寮傚父: `NotRoleException` - -- 澶氫釜鏉冮檺鏍¢獙锛堟垨妯″紡锛屾弧瓒充换鎰忎竴涓鑹插嵆鍙級锛� - -```Java -StpUtil.checkRoleOr("system:user:list", "system:user:query"); -``` -濡傛灉楠岃瘉鏈�氳繃锛屽垯鎶涘嚭寮傚父: `NotRoleException` - -- 澶氫釜鏉冮檺鏍¢獙锛堜笌妯″紡锛屽繀椤绘弧瓒虫墍鏈夎鑹诧級锛� - -```Java -StpUtil.checkRoleAnd("system:user:list", "system:user:query"); -``` -濡傛灉楠岃瘉鏈�氳繃锛屽垯鎶涘嚭寮傚父: `NotRoleException` - -## 瑙掕壊鏉冮檺鍙岄噸 `OR` 鏍¢獙 -闄や簡鍒嗗紑鏍¢獙浠ュ锛屾潈闄愬拰瑙掕壊涔熷彲浠ヨ繘琛岀粍鍚堬紝琛ㄧず澶囬�夋牎楠屻�� - -绠�鍗曚妇涓緥瀛愶細 - -鍋囪鏌愪釜 API 鐨勬潈闄愮爜涓� `system:user:list`锛岃鑹� `admin` 鍙互璋冪敤锛屽垯鍙互杩欐牱鍐欙細 - -```Java -@SaCheckPermission(value = "system:user:list", orRole = "admin") -``` - -浠ヤ笂鏉冮檺鍙渶瑕佹弧瓒充换鎰忎竴椤瑰嵆鍙�傛洿澶氬啓娉曞彲浠ュ弬鑰� `Sa-Token` [瀹樻柟鏂囨。](https://sa-token.cc/doc.html#/use/at-check?id=_4%e3%80%81%e8%a7%92%e8%89%b2%e6%9d%83%e9%99%90%e5%8f%8c%e9%87%8d-or%e6%a0%a1%e9%aa%8c)銆� - -## 褰撳墠鐢ㄦ埛鐨勬墍鏈夋潈闄� -鏈郴缁熶腑瀹炵幇浜� `StpInterface` 鎺ュ彛锛屽彲浠ュ鐢ㄦ埛鐨勬潈闄愪互鍙婅鑹茶繘琛岀鐞嗭紝骞朵笖鍙互鏍规嵁涓嶅悓鐨勭敤鎴风被鍨嬭繘琛岃缃�� - -鍏蜂綋鍙傝�冪被锛歚org.dromara.common.satoken.core.service.SaPermissionImpl` - -## 蹇界暐鏉冮檺鏍¢獙 -璇峰弬鑰冩枃妗o細[缃戝叧璺敱涓庢斁琛宂(/ruoyi-cloud-plus/framework/basic/router_release?id=缃戝叧璺敱涓庢斁琛�) diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/router_release.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/router_release.md deleted file mode 100644 index 9b08f06..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/router_release.md +++ /dev/null @@ -1,26 +0,0 @@ -# 缃戝叧璺敱涓庢斁琛� -- - - - -## 鏂板璺敱 -`ruoyi-gateway.yml` 閰嶇疆鏂囦欢 澧炲姞 `routers` 閰嶇疆<br> -**娉ㄦ剰: 璺緞鏍煎紡涓� `/鏈嶅姟璺緞/controller璺緞/鎺ュ彛鏂规硶璺緞` `*浠h〃浠绘剰涓�绾� **浠h〃浠绘剰鎵�鏈夌骇`**<br> -涓嬪浘浠h〃 `resource/**` 灏嗘墍鏈� `resource寮�澶寸殑璺緞` 閮借矾鐢卞埌 `ruoyi-resource` 鏈嶅姟<br> -渚嬪: `/resource/sms/code` `resource璺敱鍒皉uoyi-resource鏈嶅姟` `sms璺敱鍒板搴旂殑contrller` `code 璺敱鍒板搴旂殑鎺ュ彛`<br> -<br> - - -## 鏀捐浣跨敤鏂瑰紡 -nacos 涓� `ruoyi-gateway.yml` 鐧藉悕鍗曟斁琛�<br> -**娉ㄦ剰: 鏀捐璺緞鏍煎紡涓� `/鏈嶅姟璺緞/controller璺緞/鎺ュ彛鏂规硶璺緞` `*浠h〃浠绘剰涓�绾� **浠h〃浠绘剰鎵�鏈夌骇`**<br> -绀轰緥: `/resource/sms/code` 浠h〃 `ruoyi-resource鏈嶅姟 sms鐨刢ontroller code鎺ュ彛`<br> - - -## 娉ㄦ剰浜嬮」 - -鎺ュ彛鏀捐鍚庝笉闇�瑕乼oken鍗冲彲璁块棶<br> -浣嗘槸娌℃湁token涔熷氨鏃犳硶鑾峰彇鐢ㄦ埛淇℃伅涓庨壌鏉� - -### 瑙e喅鏂规 -鍒犻櫎鎺ュ彛涓婄殑閴存潈娉ㄨВ<br> -鍒犻櫎鎺ュ彛鍐呰幏鍙栫敤鎴蜂俊鎭姛鑳�<br> -鍒犻櫎鏁版嵁搴撳疄浣撶被 鑷姩娉ㄥ叆 `createBy` `updateBy` 鍥犱负浼氳幏鍙栫敤鎴锋暟鎹� \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/social.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/social.md deleted file mode 100644 index 2e3cd73..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/social.md +++ /dev/null @@ -1,68 +0,0 @@ -# 绗笁鏂规巿鏉冨姛鑳� -- - - -## 鐗堟湰 >= 2.X - -## 鍓嶇疆璇存槑 -1. 璇ュ姛鑳藉熀浜� `JustAuth` 瀹炵幇锛屾敮鎸佸瀹跺钩鍙板疄鐜扮涓夋柟鎺堟潈鐧诲綍銆� -2. 浠� `Gitee` 鎺堟潈鐧诲綍涓轰緥杩涜鏈姛鑳界殑浣跨敤璇存槑銆� -3. 鍏朵粬绗笁鏂规巿鏉冮厤缃俊鎭幏鍙栨柟寮忓彲鍙傝�� `JustAuth` [瀹樻柟鏂囨。](https://www.justauth.cn/guide/)銆�<br> - -  - -## 绗笁鏂规巿鏉冮厤缃� - -### 鐢宠涓夋柟搴旂敤(浠itee涓轰緥) - - - -### 鏇存敼鍚庣閰嶇疆 `application-dev.yml` - - - -**娉細鍐呯綉鍦板潃鏃犳硶鍥炶皟锛岃浣跨敤澶栫綉鍙互璁块棶鐨勫湴鍧�銆�** - - - -### 鏇存敼鍓嶇閰嶇疆 `login.vue` - - - -## 鎺堟潈鐧诲綍锛堟湭缁戝畾绗笁鏂瑰钩鍙帮級 - -### 姝ラ涓�锛氫釜浜轰腑蹇冩巿鏉冪涓夋柟搴旂敤 - - - -### 姝ラ浜岋細鍚屾剰鎺堟潈 - - - -椤堕儴鍑虹幇鎺堟潈鎴愬姛锛屽苟璺宠浆鍒扮郴缁熼椤点��<br> - -<br> - - - -鏌ョ湅绗笁鏂瑰簲鐢ㄥ彲鐪嬪埌鎺堟潈鎴愬姛鐨勪釜浜轰俊鎭��<br> - - - -## 鎺堟潈鐧诲綍锛堝凡缁戝畾绗笁鏂瑰钩鍙帮級 - -### 姝ラ涓�锛氱偣鍑荤櫥褰曢〉闈㈠浘鏍� - - - -### 姝ラ浜岋細鍚屾剰鎺堟潈 - - - -## 瑙i櫎鎺堟潈缁戝畾 - -### 姝ラ涓�锛氫釜浜轰腑蹇冪偣鍑昏В缁戠涓夋柟搴旂敤 - - - -### 姝ラ浜岋細鐐瑰嚮纭畾瀹屾垚瑙g粦 - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/tenant.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/tenant.md deleted file mode 100644 index b57c3f6..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/tenant.md +++ /dev/null @@ -1,121 +0,0 @@ -# 澶氱鎴峰姛鑳� -- - - -## 鐗堟湰 >= 2.X - -## 鍓嶇疆璇存槑锛堥噸瑕侊級 -1. 鏈鏋跺绉熸埛鍔熻兘鐨勫疄鐜版槸鍩轰簬 [MyBatis-Plus 澶氱鎴锋彃浠禲(https://baomidou.com/pages/aef2f2/#tenantlineinnerinterceptor) 鐨勶紝鍙敮鎸佹渶绠�鍗曠殑闅旂銆� -2. 鏈郴缁熼粯璁ゅ紑鍚绉熸埛鍔熻兘銆� -3. 澶氱鎴蜂笟鍔¤〃寤鸿〃闇�瑕佸姞涓婄鎴穒d `tenant_id`锛屽彲鍙傝�冨叾浠栫郴缁熻〃銆� -4. 闈炲绉熸埛琛ㄥ彲鍦ㄩ厤缃枃浠惰繘琛岄厤缃帓闄ゃ�� -5. 鍙湁瓒呯骇绠$悊鍛樻敮鎸佸垏鎹㈢鎴枫�� - -## 澶氱鎴蜂娇鐢ㄦ祦绋嬶紙鍏堣缁撹鍐嶅睍寮�锛侊級 -0. 寮�鍚绉熸埛閰嶇疆锛堢郴缁熼粯璁ゅ凡缁忓紑鍚級 -1. 鐧诲綍鐣岄潰锛堝彲浠ラ�夋嫨涓嶅悓绉熸埛锛� -> 娉細濡傛灉涓虹鎴疯缃簡缁戝畾鍩熷悕锛屽垯鍙兘閫夋嫨褰撳墠鍩熷悕鐩稿叧鐨勭鎴峰垪琛ㄣ�� -2. 璁剧疆澶氱鎴峰椁� -3. 鏂板/淇敼绉熸埛锛堥渶瑕侀�夋嫨濂楅锛� -4. 鍒囨崲绉熸埛锛堜粎瓒呯骇绠$悊鍛樺彲鎿嶄綔锛� - -## 澶氱鎴烽厤缃� -`application-common.yml`<br> - -> 寮�鍏� `enable` 鑺傜偣涓嶇敤搴熻瘽銆� <br> -> 濡傛灉涓嶉渶瑕佽繃婊ょ鎴风殑琛ㄥ彲鍦� `excludes` 鑺傜偣涓嬫坊鍔犮�� - -**娉ㄦ剰: 濡傛灉宸茬粡鍩轰簬绉熸埛妯″紡鍚姩浜嗙▼搴� 鍏抽棴绉熸埛蹇呴』鍒犻櫎mysql涓巖edis鍐呯殑鐩稿叧鏁版嵁閲嶆柊瀵煎叆sql** - - - -## 蹇界暐绉熸埛 - -1.濡傛灉闇�瑕佹寚瀹氬崟鐙� SQL 涓嶅紑鍚繃婊わ紝鍙湪瀵瑰簲鐨� Mapper 鎺ュ彛娣诲姞濡備笅蹇界暐娉ㄨВ锛� -``` -@InterceptorIgnore(tenantLine = "true", dataPermission = "false") -``` -**姝ゅ娉ㄦ剰浜嬮」 浣跨敤姝ゆ敞瑙e鏋滈渶瑕佸紑鍚暟鎹潈闄� dataPermission = "false" 蹇呴』娣诲姞 mp鐨勬敞瑙i粯璁ゆ槸蹇界暐鏁版嵁鏉冮檺鐨� 浼氬鑷存暟鎹潈闄愬け鏁�** - -2.濡傛灉闇�瑕佸湪涓氬姟灞傚拷鐣ュ绉熸埛锛屽彲璋冪敤浠ヤ笅鏂规硶(鎺ㄨ崘浣跨敤)锛� -``` -# 鏃犺繑鍥炲�� -TenantHelper.ignore(() -> { 涓氬姟浠g爜 }); -# 鏈夎繑鍥炲�� -Class result = TenantHelper.ignore(() -> { return 涓氬姟浠g爜 }); -``` - -## 鍔ㄦ�佸垏鎹㈢鎴� - -**浠呴�傜敤浜庣壒娈婇渶姹備笟鍔�(渚嬪: 鍒涘缓绉熸埛鏃�, 瀵硅绉熸埛鎿嶄綔涓�浜涙暟鎹�, 鎴栬�呴渶瑕佸幓鍏朵粬绉熸埛鏌ヤ竴浜涙暟鎹瓑) 绂佹涔辩敤鍚庢灉鑷礋** - -``` -# 鏃犺繑鍥炲�� -TenantHelper.dynamic(绉熸埛id, () -> { 涓氬姟浠g爜 }); -# 鏈夎繑鍥炲�� -Class result = TenantHelper.dynamic(绉熸埛id, () -> { return 涓氬姟浠g爜 }); -``` - -## 鐧诲綍鐣岄潰 - - - -> 娉細濡傛灉涓虹鎴疯缃簡缁戝畾鍩熷悕锛屽垯鍙兘閫夋嫨褰撳墠鍩熷悕鐩稿叧鐨勭鎴峰垪琛ㄣ�� - -## 绉熸埛濂楅绠$悊 -### 绉熸埛濂楅鏂板 - - - - -> 娉細 -> 1銆佸厛鏂板濂楅鍐嶆柊澧炵鎴凤紝鍥犱负绉熸埛鏂板涔嬪悗鏃犳硶淇敼鎵�閫夊椁愩�� -> 2銆佺鎴锋墍鍏宠仈鐨勫椁愬鏋滃悗缁湁淇敼鍙互杩涜鍚屾銆� - - -## 绉熸埛绠$悊 -### 榛樿绉熸埛 -> 娉細榛樿绉熸埛鏃犳硶淇敼 - - - -### 鏂板绉熸埛 -#### 濉啓琛ㄥ崟 - - -#### 閫夋嫨鏂板鐨勭鎴峰椁� - - -#### 鏂板瀹屾垚 - - -#### 鐧诲綍绉熸埛 - - - - -### 淇敼绉熸埛 -#### 閰嶇疆鍩熷悕 - - - - -#### 娌℃湁閰嶇疆鍩熷悕 - - -#### 寮鸿皟涓�涓嬶細杩欎笉鏄痓ug锛� -> 娉細鍩熷悕鐨勯厤缃氨鏄负浜嗙粦瀹氱壒瀹氱鎴凤紒 - -### 鍚屾濂楅 -搴旂敤鍦烘櫙锛氱鎴峰椁愯繘琛屼簡淇敼锛岄厤缃殑鑿滃崟闇�瑕佸悓姝ュ埌鐗瑰畾绉熸埛銆� -(涓嶆槸鎵�鏈夌鎴烽兘鏈夋洿鏂板椁愮殑鏉冨埄, 杩欐槸璺熼挶鎸傞挬鐨�) - -> 鐐逛竴涓嬫寜閽殑浜嬶紝鍥剧暐銆� - -## 鍒囨崲绉熸埛锛堜粎瓒呯骇绠$悊鍛橈級 -> 娉細绠$悊鍛樺垏鎹㈢鎴蜂笉鏄垏鎹㈢敤鎴凤紝鍒囨崲鐨勫彧鏄暟鎹紝绠$悊鍛樻嫢鏈夋墍鏈夋潈闄愩�� - - - - - - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/user.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/user.md deleted file mode 100644 index 99050fa..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/user.md +++ /dev/null @@ -1,85 +0,0 @@ -# 绯荤粺鐢ㄦ埛鐩稿叧 -- - - - -> 妗嗘灦閲囩敤sa-token鎺у埗鏉冮檺 骞跺sa-token鐨刟pi鍋氫簡涓�瀹氱殑涓氬姟灏佽<br> - -## 鐢ㄦ埛鐧诲綍 - -> 鍙傝�冭嚜甯﹀绉嶇櫥褰曞疄鐜� 涓嶉檺鍒剁敤鎴锋暟鎹潵婧� 鍙渶瑕佹瀯寤� LoginUser 鍗冲彲瀹屾垚鐧诲綍<br> -> 渚嬪: `鍚岃〃涓嶅悓绫诲瀷` `涓嶅悓琛╜ `鍚岃〃+鎵╁睍琛╜<br> - - - -## 鑾峰彇鐢ㄦ埛淇℃伅 - -> 瀹屾垚鐧诲綍鍚庝細鐢熸垚鐧诲綍token杩斿洖缁欏墠绔� 鍓嶇闇�瑕佸啀璇锋眰澶存惡甯oken 鍚庣鏂瑰彲鑾峰彇鍒板搴旂殑鐢ㄦ埛淇℃伅 - -璇锋眰澶翠紶閫掓牸寮�: `Authorization: Bearer token` - -鍚庣鑾峰彇鐢ㄦ埛淇℃伅: -```java -LoginUser user = LoginHelper.getLoginUser(); -``` - -## 鑾峰彇鐢ㄦ埛淇℃伅(鍩轰簬token) -```java -LoginUser user = LoginHelper.getLoginUser(token); -``` - -## 鑾峰彇鐧诲綍鐢ㄦ埛id -```java -Long userId = LoginHelper.getUserId(); -``` - -## 鑾峰彇鐧诲綍鐢ㄦ埛璐︽埛鍚� -```java -String username = LoginHelper.getUsername(); -``` - -## 鑾峰彇鐧诲綍鐢ㄦ埛鎵�灞炵鎴穒d -```java -String tenantId = LoginHelper.getTenantId(); -``` - -## 鑾峰彇鐧诲綍鐢ㄦ埛鎵�灞為儴闂╥d -```java -Long deptId = LoginHelper.getDeptId(); -``` - -## 鑾峰彇鐧诲綍鐢ㄦ埛绫诲瀷 -```java -UserType userType = LoginHelper.getUserType(); -``` - -## 鑾峰彇鐧诲綍鐢ㄦ埛鍏朵粬鎵╁睍灞炴�� -```java -Object obj = LoginHelper.getExtra(key); -``` - -## 璁剧疆鐧诲綍鐢ㄦ埛鍏朵粬鎵╁睍灞炴�� - -鍙傝�冪櫥褰曡缃� `clientId` 灞炴�� - - - -## 鍒ゆ柇鐢ㄦ埛鏄惁涓鸿秴绾х鐞嗗憳 - -```java -// 鍒ゆ柇褰撳墠鐧诲綍鐢ㄦ埛 -boolean b = LoginHelper.isSuperAdmin(); -// 鍒ゆ柇鐢ㄦ埛鍩轰簬id -boolean b = LoginHelper.isSuperAdmin(userId); -``` - -## 鍒ゆ柇鐢ㄦ埛鏄惁涓虹鎴风鐞嗗憳 - -```java -// 鍒ゆ柇褰撳墠鐧诲綍鐢ㄦ埛 -boolean b = LoginHelper.isTenantAdmin(); -// 鍒ゆ柇鐢ㄦ埛鍩轰簬瑙掕壊缁� -boolean b = LoginHelper.isSuperAdmin(rolePermission); -``` - -## 鍏朵粬鏇村鎿嶄綔 -[Sa-Token 瀹樻柟鏂囨。 - 鐧诲綍璁よ瘉](https://sa-token.cc/doc.html#/use/login-auth) - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/explain/about_join.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/explain/about_join.md deleted file mode 100644 index 77cde6e..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/explain/about_join.md +++ /dev/null @@ -1,12 +0,0 @@ -# 鍏充簬澶氳〃鏌ヨ -- - - -## 寤鸿鍗曡〃鏌ヨ - -鏂囩珷杩炴帴: [澶ц繛鎺ユ煡璇㈠垎瑙eソ澶刔(https://java.isture.com/db/mysql/mysql-x-optimize-decompose-connection.html) - - - -<br> -<br> -<br> -**(涓婂浘鍑鸿嚜 <楂樻�ц兘MySql>)** \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/explain/key.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/explain/key.md deleted file mode 100644 index c960140..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/explain/key.md +++ /dev/null @@ -1,19 +0,0 @@ -# 涓婚敭浣跨敤璇存槑 -- - - -## 鍏充簬濡備綍浣跨敤鍒嗗竷寮廼d鎴栭洩鑺眎d - -鍙傝�� `MybatisPlusConfig` 濡傞渶鑷畾涔� 淇敼 `Bean` 瀹炵幇鍗冲彲 - - - -妗嗘灦榛樿闆嗘垚 闆姳ID 鍙渶鍏ㄥ眬鏇存敼 涓婚敭绫诲瀷鍗冲彲 - - - -濡傚崟琛ㄤ娇鐢� 鍙崟鐙厤缃敞瑙� - - - -### 閲嶇偣璇存槑 -* 鐢变簬闆姳id浣嶆暟杩囬暱 `Long` 绫诲瀷鍦ㄥ墠绔細澶辩湡 -* 妗嗘灦宸查厤缃簭鍒楀寲鏂规 瓒呰秺 `JS` 鏈�澶у�艰嚜鍔ㄨ浆瀛楃涓� 鍙傝�� `BigNumberSerializer` 绫� \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/explain/test.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/explain/test.md deleted file mode 100644 index 4c521ad..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/explain/test.md +++ /dev/null @@ -1,6 +0,0 @@ -# 鍗曞厓娴嬭瘯 -- - - -## 鍙傝�冩枃绔� -[SpringBoot 2.X 鏁村悎 JUnit5 鍙婂叏鏂逛綅浣跨敤鎵嬪唽](https://lionli.blog.csdn.net/article/details/127576604) -## 鍙傝�冧唬鐮�(1.4.0鏂板) - \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/explain/transaction.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/explain/transaction.md deleted file mode 100644 index 2b4966d..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/explain/transaction.md +++ /dev/null @@ -1,45 +0,0 @@ -# 浜嬪姟鐩稿叧 -- - - -鑻ヤ緷鏂囨。瀵逛簨鍔℃敞瑙g殑鎻忚堪 [鍏充簬浜嬪姟](https://doc.ruoyi.vip/ruoyi/document/htsc.html#%E4%BA%8B%E5%8A%A1%E7%AE%A1%E7%90%86) 浠ヤ笅瀵瑰鏁版嵁婧愪簨鍔″仛琛ュ厖: - - -## 澶氭湇鍔″鏁版嵁婧愪簨鍔�(妗嗘灦宸查粯璁ゅ鎺� 鐩存帴浣跨敤seata娉ㄨВ鍗冲彲) - -妗嗘灦鏀寔瀵规帴 `seata` 淇濊瘉鍒嗗竷寮忓鏁版嵁婧愪簨鍔�<br> -璇︽儏鍙傝�冨鏁版嵁婧愭鏋舵枃妗h繛鎺�: https://www.kancloud.cn/tracy5546/dynamic-datasource/2268607 - -## 鏈湴澶氭暟鎹簮浜嬪姟 -璇蜂娇鐢� `@DSTransactional` 娉ㄨВ 浼氫唬鐞� `@DS` 娉ㄨВ鍒囨崲鍚庣殑鏁版嵁婧愪簨鍔″仛鍥炴粴澶勭悊<br> -鍙 `@DSTransactional` 娉ㄨВ涓嬩换涓�鐜妭鍙戠敓寮傚父锛屽垯鍏ㄥ眬澶氭暟鎹簮浜嬪姟鍥炴粴銆�<br> -濡傛灉BC涓婁篃鏈� `@DSTransactional` 浼氭湁褰卞搷鍚楋紵绛旓細娌℃湁褰卞搷鐨勩�� - -```java -//濡侫Service璋冪敤BService鍜孋Service鐨勬柟娉曪紝A,B,C鍒嗗埆瀵瑰簲涓嶅悓鏁版嵁婧愩�� - -public class AService { - - @DS("a")//濡傛灉a鏄粯璁ゆ暟鎹簮鍒欎笉闇�瑕丏S娉ㄨВ銆� - @DSTransactional - public void dosomething(){ - BService.dosomething(); - CService.dosomething(); - } -} - -public class BService { - - @DS("b") - public void dosomething(){ - //dosomething - } -} - -public class CService { - - @DS("c") - public void dosomething(){ - //dosomething - } -} -``` - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/api_encrypt.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/api_encrypt.md deleted file mode 100644 index be4ce44..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/api_encrypt.md +++ /dev/null @@ -1,39 +0,0 @@ -# 鏁版嵁鍔犺В瀵� -- - - - -## 1锛欰PI 鍔犲瘑娉ㄨВ `@ApiEncrypt` -1. 瀵逛簬鏍囨敞浜� `@ApiEncrypt` 娉ㄨВ鐨勬帴鍙o紝璇锋眰鍙傛暟閮藉繀椤昏繘琛屽姞瀵嗐�� -2. 娉ㄨВ鐨勫弬鏁� `response` 涓哄搷搴斿姞瀵嗘爣璇嗭紝榛樿 `false` 涓嶅姞瀵嗭紝涓� `true` 琛ㄧず鍝嶅簲鍔犲瘑銆� -3. 鍔犲瘑瑙e瘑閫昏緫鐢辫繃婊ゅ櫒瀹炵幇锛岃鎯呭彲鍙傝�� `org.dromara.common.encrypt.filter.CryptoFilter`銆� - -## 2锛欰PI 鍔犲瘑閰嶇疆 -`application-common.yml` - - - -`.env.development` / `.env.production` - - - -> 娉細 -> 1. 娉ㄦ剰淇敼 Nacos 閰嶇疆銆� -> 2. 鍏閽ヤ笌鍓嶇閰嶇疆鏂囦欢浜掍负閰嶅锛屽鏋滈渶瑕佹洿鎹㈣涓�鍚屾洿鎹€�� -> 3. 鍚庣鍏挜瀵瑰簲鍓嶇绉侀挜锛涘悗绔閽ュ搴斿墠绔叕閽ャ�� - -## 3锛氬墠绔紑鍚姞瀵� -濡傛灉闇�瑕佸紑鍚� API 鍔犲瘑锛屽垯闇�瑕佷慨鏀� `request` 鐨� `headers` 鍐呭锛� -```Javascript -headers: { - isEncrypt: true -} -``` - - - -## 4.鍏充簬璇锋眰鍝嶅簲鍙傛暟鍔犺В瀵嗚鏄� - -濡備綍鍔犺В瀵嗚姹傚搷搴斿弬鏁扮湅杩欓噷 -> [鍏充簬璇锋眰鍝嶅簲鍙傛暟瑙e瘑](/questions/api_encrypt.md) - -## 瀵嗛挜鐢熸垚璇存槑 - - \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/dynamic_datasource.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/dynamic_datasource.md deleted file mode 100644 index 21114cd..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/dynamic_datasource.md +++ /dev/null @@ -1,45 +0,0 @@ -# 澶氭暟鎹簮 -- - - - -### 妗嗘灦榛樿 mysql 鍏朵粬鏁版嵁搴撲娇鐢ㄨ鏄� - -鎵惧埌 `ruoyi-common-mybatis` 妯″潡鍦� pom 鏂囦欢鍐呭鍔犲搴旂殑jdbc渚濊禆 - - - - -### 鍏充簬澶氭暟鎹簮浜嬪姟 鍏蜂綋鍙傝�� `浜嬪姟鐩稿叧` 鏂囨。璇存槑 - -### 澶氭暟鎹簮妗嗘灦鍔熻兘浠嬬粛 -澶氭暟鎹簮妗嗘灦瀹樻柟鏂囨。: [dynamic-datasource鏂囨。](https://www.kancloud.cn/tracy5546/dynamic-datasource/2264611) - -* 鏀寔 鏁版嵁婧愬垎缁� 锛岄�傜敤浜庡绉嶅満鏅� 绾补澶氬簱 璇诲啓鍒嗙 涓�涓诲浠� 娣峰悎妯″紡銆� -* 鏀寔鏁版嵁搴撴晱鎰熼厤缃俊鎭� 鍔犲瘑 ENC()銆� -* 鏀寔姣忎釜鏁版嵁搴撶嫭绔嬪垵濮嬪寲琛ㄧ粨鏋剆chema鍜屾暟鎹簱database銆� -* 鏀寔鏃犳暟鎹簮鍚姩锛屾敮鎸佹噿鍔犺浇鏁版嵁婧愶紙闇�瑕佺殑鏃跺�欏啀鍒涘缓杩炴帴锛夈�� -* 鏀寔 鑷畾涔夋敞瑙� 锛岄渶缁ф壙DS(3.2.0+)銆� -* 鎻愪緵骞剁畝鍖栧Druid锛孒ikariCp锛孊eeCp锛孌bcp2鐨勫揩閫熼泦鎴愩�� -* 鎻愪緵瀵筂ybatis-Plus锛孮uartz锛孲hardingJdbc锛孭6sy锛孞ndi绛夌粍浠剁殑闆嗘垚鏂规銆� -* 鎻愪緵 鑷畾涔夋暟鎹簮鏉ユ簮 鏂规锛堝鍏ㄤ粠鏁版嵁搴撳姞杞斤級銆� -* 鎻愪緵椤圭洰鍚姩鍚� 鍔ㄦ�佸鍔犵Щ闄ゆ暟鎹簮 鏂规銆� -* 鎻愪緵Mybatis鐜涓嬬殑 绾鍐欏垎绂� 鏂规銆� -* 鎻愪緵浣跨敤 spel鍔ㄦ�佸弬鏁� 瑙f瀽鏁版嵁婧愭柟妗堛�傚唴缃畇pel锛宻ession锛宧eader锛屾敮鎸佽嚜瀹氫箟銆� -* 鏀寔 澶氬眰鏁版嵁婧愬祵濂楀垏鎹� 銆傦紙ServiceA >>> ServiceB >>> ServiceC锛夈�� -* 鎻愪緵 鍩轰簬seata鐨勫垎甯冨紡浜嬪姟鏂规銆� -* 鎻愪緵 鏈湴澶氭暟鎹簮浜嬪姟鏂规銆� 闄勶細涓嶈兘鍜屽師鐢焥pring浜嬪姟娣风敤銆� - -### 鐢ㄦ硶璇存槑 - -> 鍔犺浇椤哄簭 `鏂规硶 => 绫� => 榛樿`<br> - - - -### 閰嶇疆鏂瑰紡 - - - -### 鏁版嵁搴撳紓鏋� - -渚嬪: `mysql + oracle` 鍙傝�冨搴斿鏁版嵁婧愭鏋舵枃妗� [dynamic-ds鏂囨。](https://www.kancloud.cn/tracy5546/dynamic-datasource) - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/encrypt.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/encrypt.md deleted file mode 100644 index 729a303..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/encrypt.md +++ /dev/null @@ -1,38 +0,0 @@ -# 鏁版嵁鍔犺В瀵� -- - - -## 妗嗘灦鐗堟湰 >= 1.6.0 - -## 寮曞叆渚濊禆 - -```xml -<dependency> - <groupId>com.ruoyi</groupId> - <artifactId>ruoyi-common-encrypt</artifactId> -</dependency> -``` - -## 鍔熻兘璇存槑 - -鏁版嵁搴� 鏁版嵁瀛樺偍鍔犲瘑 鏌ヨ瑙e瘑鍔熻兘<br> -鏀寔鍔犲瘑绠楁硶: `BASE64` `AES` `RSA` `SM2` `SM4` - -## 娉ㄨВ `@EncryptField` - - - -## 鐢ㄦ硶璇存槑 - -**璇︾粏鐢ㄦ硶鍙弬鑰冩渚� TestEncryptController 娴嬭瘯鏁版嵁搴撳姞瑙e瘑鍔熻兘** - -鍏ㄥ眬榛樿鍔犲瘑閰嶇疆(濡傛灉娉ㄨВ涓嶉厤缃垯浣跨敤鍏ㄥ眬閰嶇疆) - - - -娉ㄨВ鍙嚜瀹氫箟绠楁硶涓庨厤缃� - - - -## 瀵嗛挜鐢熸垚璇存槑 - - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/idempotent.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/idempotent.md deleted file mode 100644 index 5f70671..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/idempotent.md +++ /dev/null @@ -1,29 +0,0 @@ -# 闃查噸骞傜瓑 -- - - -## 鍔熻兘浠嬬粛 - -闃查噸鍔熻兘涓洪槻姝袱鏉$浉鍚岀殑鏁版嵁閲嶅鎻愪氦瀵艰嚧鑴忔暟鎹垨涓氬姟閿欎贡<br> -**娉ㄦ剰: 閲嶅鎻愪氦灞炰簬灏忔鐜囦簨浠� 璇蜂笉瑕佹嬁骞跺彂鍘嬫祴涓庝箣鐩告彁骞惰**<br> -妗嗘灦闃查噸鍔熻兘鍙傝�� `缇庡洟GTIS闃查噸绯荤粺` 浣跨敤 璇锋眰鍙傛暟涓庣敤鎴稵oken鎴朥RL 鐢熸垚鍏ㄥ眬涓氬姟ID<br> -鏈夋晥闃叉 `鍚屼竴涓敤鎴穈 鍦� `闄愬埗鏃堕棿` 鍐呭 `鍚屼竴涓笟鍔 鎻愪氦 `鐩稿悓鐨勬暟鎹甡 - -妗嗘灦闃查噸澶勭悊 `鏀寔涓氬姟澶辫触鎴栧紓甯竊 蹇�熼噴鏀鹃檺鍒�<br> -涓氬姟澶勭悊鎴愬姛鍚� 浼氬湪璁剧疆鏃堕棿鍐� 闄愬埗鍚屼竴鏉℃暟鎹殑鎻愪氦<br> -**娉ㄦ剰: 鍙鍚屼竴涓敤鎴风殑鍚屼竴涓帴鍙f彁浜ょ浉鍚岀殑鏁版嵁鏈夋晥** - - - - -### 缇庡洟GTIS绯荤粺娴佺▼鍥� - -[缇庡洟 鍒嗗竷寮忕郴缁熶簰鏂ユ�т笌骞傜瓑鎬ч棶棰樼殑鍒嗘瀽涓庤В鍐砞(https://tech.meituan.com/2016/09/29/distributed-system-mutually-exclusive-idempotence-cerberus-gtis.html) - - - -### 浣跨敤鏂规硶 - -鍦–ontroller鏍囨敞 `@RepeatSubmit` 娉ㄨВ鍗冲彲 - - - - \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/mail.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/mail.md deleted file mode 100644 index ce08980..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/mail.md +++ /dev/null @@ -1,15 +0,0 @@ -# 閭欢鍔熻兘 -- - - -## 閰嶇疆鍔熻兘 - -淇敼閰嶇疆鏂囦欢 - - - -* `enabled` 涓洪偖浠跺姛鑳藉紑鍏� - -## 鍔熻兘浣跨敤 - -鍙傝�� `demo` 妯″潡 `MailController` 閭欢婕旂ず妗堜緥 - - \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/sensitive.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/sensitive.md deleted file mode 100644 index 3e2d92b..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/sensitive.md +++ /dev/null @@ -1,33 +0,0 @@ -# 鏁版嵁鑴辨晱 -- - - -## 鍔熻兘璇存槑 - -绯荤粺浣跨敤 `Jackson` 搴忓垪鍖栫瓥鐣� 瀵规爣娉ㄤ簡 `Sensitive` 娉ㄨВ鐨勫睘鎬ц繘琛岃劚鏁忓鐞� - -## 浣跨敤鏁欑▼ - -> 浣跨敤娉ㄨВ鏍囨敞闇�瑕佽劚鏁忕殑瀛楁 閫夋嫨瀵瑰簲鐨勭瓥鐣� - - - -* strategy 鑴辨晱绛栫暐 -* roleKey 瑙掕壊code(鍒ゆ柇鐢ㄦ埛鏄惁鎷ユ湁瑙掕壊鏉冮檺) -* perms 鏉冮檺code(鍒ゆ柇鐢ㄦ埛鏄惁鎷ユ湁鏍囪瘑绗︽潈闄�) - - - -> 鍙啀 `SensitiveStrategy` 鍐呰嚜瀹氫箟绛栫暐 - - - -## 鑴辨晱閫昏緫淇敼 - -> 绯荤粺浣跨敤閫氱敤鎺ュ彛澶勭悊鏄惁闇�瑕佽劚鏁� 澶氫釜绯荤粺鍙互鑷畾涔変笉鍚岀殑鑴辨晱閫昏緫瀹炵幇 - - - -> 绯荤粺榛樿澶勭悊閫昏緫涓� 鏍规嵁瑙掕壊涓庢爣璇嗙鎴栭潪绠$悊鍛樿劚鏁� 鍙嚜琛屼慨鏀归粯璁ゅ疄鐜� - - - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/sms.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/sms.md deleted file mode 100644 index 81fb345..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/sms.md +++ /dev/null @@ -1,51 +0,0 @@ -# 鐭俊妯″潡 -- - - - -# 閰嶇疆鍔熻兘 - -### 鐗堟湰: >= v2.1.0 - -宸插畬鎴� sms4j 椤圭洰鏁村悎 鏂囨。鍦板潃: https://sms4j.com/doc3 - -閰嶇疆鏂瑰紡 鍏蜂綋鍘傚晢閰嶇疆鎵╁睍 鍙互鏌ョ湅sms4j鏂囨。 - - - -浣跨敤鏂瑰紡 鍙傝�冩枃妗e悇绉嶅啓娉� 涓嬫柟涓� demo 妯″潡鎻愪緵绀轰緥 - - - -### 鐗堟湰: v1.2.0 鎻愪緵鐭俊妯″潡 - -鐭俊妯″潡閲囩敤SPI鍔犺浇<br> -浣跨敤鍝鐨勭煭淇� 寮曞叆鍝鐨勪緷璧� 鍗冲彲鍔ㄦ�佸姞杞�<br> -鐩墠鏀寔: `闃块噷浜慲 `鑵捐浜慲 娆㈣繋鎵╁睍PR鍏朵粬 - -> 鍙傝�� `ruoyi-demo` pom鏂囦欢鍐欐硶 - - - -> 淇敼閰嶇疆鏂囦欢 - - - -* `enabled` 涓虹煭淇″姛鑳藉紑鍏� -* `endpoint` 涓哄煙鍚� 鍚勫巶瀹跺煙鍚嶅浐瀹� 鎸夌収鏂囨。閰嶇疆鍗冲彲 -* `accessKeyId` 瀵嗛挜id -* `accessKeySecret` 瀵嗛挜瀵嗗寵 -* `signName` 绛惧悕 -* `sdkAppId` 搴旂敤id 鑵捐涓撶敤 - -## 鍔熻兘浣跨敤 - -鍙傝�� `demo` 妯″潡 `SmsController` 鐭俊婕旂ず妗堜緥<br> -鍔熻兘閲囩敤 `妯℃澘妯″紡` 鍔ㄦ�佸姞杞藉搴斿巶瀹剁殑宸ュ叿妯℃澘<br> -寮曞叆 `SmsTemplate` 鍗冲彲浣跨敤 - - - -## 閲嶇偣椤荤煡 - -鐢变簬鍚勫巶瀹跺弬鏁拌В鏋愪笉涓�鑷� 璇烽伒瀹堜互涓嬭鍒� - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/sse.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/sse.md deleted file mode 100644 index ec51df7..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/sse.md +++ /dev/null @@ -1,24 +0,0 @@ -# SSE鍔熻兘 -- - - - -## 妗嗘灦鐗堟湰 >= 2.2.1 - -## 閰嶇疆璇存槑 - -閰嶇疆鍦� `ruoyi-resource` 鐩綍涓� 杩滅▼璋冪敤鍙洿鎺ヤ娇鐢� `RemoteMessageService` 鎺ュ彛 - - - -* enabled 鏄惁寮�鍚鍔熻兘 -* path 搴旂敤璺緞 - -## 浣跨敤鏂规硶 - -鍓嶇杩炴帴鏂瑰紡: `http://鍚庣ip:绔彛/resource/sse?clientid=import.meta.env.VITE_APP_CLIENT_ID&Authorization=Bearer eyJ0eXAiO......` - -鍏朵腑 `Authorization` 涓鸿姹倀oken闇�瑕佺櫥褰曞悗鑾峰彇 杩炴帴鎴愬姛涔嬪悗 涓庢鏋跺唴鍏朵粬鑾峰彇鐧诲綍鐢ㄦ埛鏂瑰紡涓�鑷� - -`SseMessageUtils.sendMessage` 鎺ㄩ�佸崟鏈烘秷鎭�(鐗规畩闇�姹備娇鐢�)<br> -`SseMessageUtils.subscribeMessage` 璁㈤槄鍒嗗竷寮忔秷鎭�(妗嗘灦鍒濆鍖栧凡璁㈤槄)<br> -`SseMessageUtils.publishMessage` 鍙戝竷鍒嗗竷寮忔秷鎭�(鎺ㄨ崘浣跨敤 鎵�鏈夐泦缇ゅ唴瀵绘壘鍒版帴鏀朵汉)<br> -`SseMessageUtils.publishAll` 缇ゅ彂娑堟伅缁欐墍鏈夎繛鎺ヤ汉<br> \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/translation.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/translation.md deleted file mode 100644 index d0834ab..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/translation.md +++ /dev/null @@ -1,44 +0,0 @@ -# 缈昏瘧鍔熻兘 -- - - -## 妗嗘灦鐗堟湰 >= 1.6.0 - -## 寮曞叆渚濊禆鍖� - -```xml -<dependency> - <groupId>com.ruoyi</groupId> - <artifactId>ruoyi-common-translation</artifactId> -</dependency> -``` - -## 娉ㄨВ - - - -`@Translation` 缈昏瘧娉ㄨВ 鐢ㄤ簬瀹炰綋绫诲瓧娈典笂<br> -`@TranslationType` 缈昏瘧绫诲埆娉ㄨВ 鐢ㄤ簬瀹炵幇绫讳笂鏍囨敞涓� `@Translation` 娉ㄨВ鐩稿悓鐨� `type` 绫诲瀷 瀹炵幇缈昏瘧鍔熻兘 - - -## 鐢ㄦ硶璇存槑 - -榛樿鎻愪緵鍔熻兘 `鐢ㄦ埛id杞处鍙�(鐢ㄦ埛鍚�)` `閮ㄩ棬id杞悕绉癭 `瀛楀吀type杞琹abel` `ossId杞瑄rl` - - - -鐢ㄦ埛鍚嶇炕璇�(鏄犲皠缈昏瘧) 鏍规嵁鍙︿竴涓槧灏勫瓧娈� 缈昏瘧淇濆瓨鍒版瀛楁 - - - -ossUrl缈昏瘧(鐩存帴缈昏瘧) 鐩存帴鏍规嵁姝ゅ瓧娈靛�肩炕璇戝悗鏇挎崲姝ゅ瓧娈靛�� - - - -瀛楀吀缈昏瘧(鍏朵粬鎵╁睍鏉′欢缈昏瘧) 鏍规嵁`other`鏉′欢 鑷瀹氫箟濡備綍浣跨敤 渚嬪瀛楀吀缈昏瘧`other`鏉′欢灏辨槸瀛楀吀鐨勫敮涓�鍊� - - - -## 鑷畾涔夋墿灞� - -瀹炵幇鎺ュ彛 `TranslationInterface` 鏍囨敞娉ㄨВ `@TranslationType` 鍙弬鑰冩鏋堕粯璁ゅ疄鐜� - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/websocket.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/websocket.md deleted file mode 100644 index 55145ba..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/websocket.md +++ /dev/null @@ -1,39 +0,0 @@ -# WebSocket鍔熻兘 -- - - - -## 妗嗘灦鐗堟湰 >= 2.1.0 - -## 閰嶇疆璇存槑 - -閰嶇疆鍦� `ruoyi-resource` 鐩綍涓� - - - -* enabled 鏄惁寮�鍚鍔熻兘 -* path 搴旂敤璺緞 -* allowedOrigins 璁剧疆璁块棶婧愬湴鍧� - -**閲嶇偣: 濡傚叧闂瓀s鍔熻兘闇�杩炲悓鍓嶇ws寮�鍏充竴鍚屽叧闂� 涓嶇劧鍓嶇鍚姩浼氭姤閿�** - - - -## 浣跨敤鏂规硶 - -鍓嶇杩炴帴鏂瑰紡: `ws://鍚庣ip:绔彛/resource/websocket?clientid=import.meta.env.VITE_APP_CLIENT_ID&Authorization=Bearer eyJ0eXAiO......` - -**鐢变簬js涓嶆敮鎸佽姹傚ご浼犺緭鏁呰�岄噰鐢ㄥ弬鏁颁紶杈� 濡傛敮鎸佽姹傚ご浼犺緭寤鸿浣跨敤璇锋眰澶翠紶杈�** - -浼犺緭鏂瑰紡: -```js -headers: { - Authorization: "Bearer " + getToken(), - clientid: import.meta.env.VITE_APP_CLIENT_ID -} -``` - -鍏朵腑 `Authorization` 涓鸿姹倀oken闇�瑕佺櫥褰曞悗鑾峰彇 杩炴帴鎴愬姛涔嬪悗 涓庢鏋跺唴鍏朵粬鑾峰彇鐧诲綍鐢ㄦ埛鏂瑰紡涓�鑷� - -`WebSocketUtils.sendMessage` 鎺ㄩ�佸崟鏈烘秷鎭�(鐗规畩闇�姹備娇鐢�)<br> -`WebSocketUtils.subscribeMessage` 璁㈤槄鍒嗗竷寮忔秷鎭�(妗嗘灦鍒濆鍖栧凡璁㈤槄)<br> -`WebSocketUtils.publishMessage` 鍙戝竷鍒嗗竷寮忔秷鎭�(鎺ㄨ崘浣跨敤 鎵�鏈夐泦缇ゅ唴瀵绘壘鍒版帴鏀朵汉)<br> -`WebSocketUtils.publishAll` 缇ゅ彂娑堟伅缁欐墍鏈夎繛鎺ヤ汉<br> \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/tree.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/tree.md deleted file mode 100644 index f649197..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/tree.md +++ /dev/null @@ -1,91 +0,0 @@ -# 椤圭洰缁撴瀯 -- - - -## 鐩綍缁撴瀯 -v2.2.1 -~~~ -RuoYi-Cloud-Plus -鈹溾攢 ruoyi-api // api妯″潡 -鈹� 鈹斺攢 ruoyi-api-bom // api妯″潡渚濊禆绠$悊 -鈹� 鈹斺攢 ruoyi-api-resource // 璧勬簮api妯″潡 -鈹� 鈹斺攢 ruoyi-api-system // 绯荤粺api妯″潡 -鈹� 鈹斺攢 ruoyi-api-workflow // 宸ヤ綔娴乤pi妯″潡 -鈹溾攢 ruoyi-auth // 璁よ瘉鏈嶅姟 [9210] -鈹溾攢 ruoyi-common // 閫氱敤妯″潡 -鈹� 鈹斺攢 ruoyi-common-alibaba-bom // alibaba 渚濊禆绠$悊 -鈹� 鈹斺攢 ruoyi-common-bom // common 渚濊禆绠$悊 -鈹� 鈹斺攢 ruoyi-common-bus // 娑堟伅鎬荤嚎妯″潡 -鈹� 鈹斺攢 ruoyi-common-core // 鏍稿績鍔熻兘妯″潡 -鈹� 鈹斺攢 ruoyi-common-dict // 瀛楀吀闆嗘垚妯″潡 -鈹� 鈹斺攢 ruoyi-common-doc // 鏂囨。闆嗘垚妯″潡 -鈹� 鈹斺攢 ruoyi-common-dubbo // dubbo闆嗘垚妯″潡 -鈹� 鈹斺攢 ruoyi-common-elasticsearch // ES闆嗘垚妯″潡 -鈹� 鈹斺攢 ruoyi-common-encrypt // 鏁版嵁鍔犺В瀵嗘ā鍧� -鈹� 鈹斺攢 ruoyi-common-excel // excel闆嗘垚妯″潡 -鈹� 鈹斺攢 ruoyi-common-idempotent // 骞傜瓑鍔熻兘妯″潡 -鈹� 鈹斺攢 ruoyi-common-job // job瀹氭椂浠诲姟闆嗘垚妯″潡 -鈹� 鈹斺攢 ruoyi-common-json // json闆嗘垚妯″潡 -鈹� 鈹斺攢 ruoyi-common-loadbalancer // 鍥㈤槦璐熻浇鍧囪 闆嗘垚妯″潡 -鈹� 鈹斺攢 ruoyi-common-log // 鏃ュ織闆嗘垚妯″潡 -鈹� 鈹斺攢 ruoyi-common-logstash // elk鏃ュ織闆嗘垚妯″潡 -鈹� 鈹斺攢 ruoyi-common-mail // 閭欢闆嗘垚妯″潡 -鈹� 鈹斺攢 ruoyi-common-mybatis // mybatis鏁版嵁搴撶浉鍏抽泦鎴愭ā鍧� -鈹� 鈹斺攢 ruoyi-common-oss // oss鐩稿叧闆嗘垚妯″潡 -鈹� 鈹斺攢 ruoyi-common-prometheus // prometheus鐩戞帶 -鈹� 鈹斺攢 ruoyi-common-redis // redis闆嗘垚妯″潡 -鈹� 鈹斺攢 ruoyi-common-satoken // satoken闆嗘垚妯″潡 -鈹� 鈹斺攢 ruoyi-common-seata // seata鍒嗗竷寮忎簨鍔¢泦鎴愭ā鍧� -鈹� 鈹斺攢 ruoyi-common-security // 妗嗘灦鏉冮檺閴存潈闆嗘垚妯″潡 -鈹� 鈹斺攢 ruoyi-common-sensitive // 鑴辨晱鍔熻兘妯″潡 -鈹� 鈹斺攢 ruoyi-common-sentinel // sentinel闆嗘垚妯″潡 -鈹� 鈹斺攢 ruoyi-common-skylog // skywalking鏃ュ織鏀堕泦妯″潡 -鈹� 鈹斺攢 ruoyi-common-sms // 鐭俊闆嗘垚妯″潡 -鈹� 鈹斺攢 ruoyi-common-social // 绀句氦涓夋柟鍔熻兘妯″潡 -鈹� 鈹斺攢 ruoyi-common-sse // sse娴佹帹閫佹ā鍧� -鈹� 鈹斺攢 ruoyi-common-tenant // 绉熸埛鍔熻兘妯″潡 -鈹� 鈹斺攢 ruoyi-common-translation // 閫氱敤缈昏瘧鍔熻兘 -鈹� 鈹斺攢 ruoyi-common-web // web鏈嶅姟闆嗘垚妯″潡 -鈹� 鈹斺攢 ruoyi-common-websocket // websocket鏈嶅姟闆嗘垚妯″潡 -鈹溾攢 ruoyi-example // 渚嬪瓙妯″潡 -鈹� 鈹斺攢 ruoyi-demo // 婕旂ず妯″潡 [9401] -鈹� 鈹斺攢 ruoyi-test-mq // mq婕旂ず妯″潡 [9402] -鈹溾攢 ruoyi-gateway // 缃戝叧妯″潡 [8080] -鈹溾攢 ruoyi-modules // 鍔熻兘妯″潡 -鈹� 鈹斺攢 ruoyi-gen // 浠g爜鐢熸垚妯″潡 [9202] -鈹� 鈹斺攢 ruoyi-job // 浠诲姟璋冨害妯″潡 [9203,9901] -鈹� 鈹斺攢 ruoyi-resource // 璧勬簮妯″潡 [9204] -鈹� 鈹斺攢 ruoyi-system // 绯荤粺妯″潡 [9201] -鈹� 鈹斺攢 ruoyi-workflow // 宸ヤ綔娴佹ā鍧� [9205] -鈹溾攢 ruoyi-visual // 鍙鍖栨ā鍧� -鈹� 鈹斺攢 ruoyi-monitor // 鏈嶅姟鐩戞帶妯″潡 [9100] -鈹� 鈹斺攢 ruoyi-nacos // nacos鏈嶅姟妯″潡 [8848,9848,9849] -鈹� 鈹斺攢 ruoyi-seata-server // seata鏈嶅姟妯″潡 [7091,8091] -鈹� 鈹斺攢 ruoyi-sentinel-dashboard // sentinel鎺у埗鍙版ā鍧� [8718] -鈹� 鈹斺攢 ruoyi-snailjob-server // 浠诲姟璋冨害鎺у埗鍙版ā鍧� [8800,17888] -鈹溾攢 plus-ui // 鍓嶇妗嗘灦 [80] -鈹溾攢 config/nacos // nacos閰嶇疆鏂囦欢(闇�澶嶅埗鍒皀acos閰嶇疆涓績浣跨敤) -鈹� 鈹斺攢 sentinel-ruoyi-gateway.json // sentinel瀵规帴gateway闄愭祦閰嶇疆鏂囦欢 -鈹� 鈹斺攢 seata-server.properties // seata鏈嶅姟閰嶇疆鏂囦欢 -鈹� 鈹斺攢 application-common.yml // 鎵�鏈夊簲鐢ㄤ富鍏变韩閰嶇疆鏂囦欢 -鈹� 鈹斺攢 datasource.yml // 鎵�鏈夊簲鐢ㄥ叡浜暟鎹簮閰嶇疆鏂囦欢 -鈹� 鈹斺攢 ruoyi-auth.yml // auth 妯″潡閰嶇疆鏂囦欢 -鈹� 鈹斺攢 ruoyi-gateway.yml // gateway 妯″潡閰嶇疆鏂囦欢 -鈹� 鈹斺攢 ruoyi-gen.yml // gen 妯″潡閰嶇疆鏂囦欢 -鈹� 鈹斺攢 ruoyi-job.yml // job 妯″潡閰嶇疆鏂囦欢 -鈹� 鈹斺攢 ruoyi-monitor.yml // monitor 妯″潡閰嶇疆鏂囦欢 -鈹� 鈹斺攢 ruoyi-resource.yml // resource 妯″潡閰嶇疆鏂囦欢 -鈹� 鈹斺攢 ruoyi-sentinel-dashboard.yml // sentinel 鎺у埗鍙� 妯″潡閰嶇疆鏂囦欢 -鈹� 鈹斺攢 ruoyi-snailjob-server.yml // snailjob 鎺у埗鍙� 妯″潡閰嶇疆鏂囦欢 -鈹� 鈹斺攢 ruoyi-system.yml // systen 妯″潡閰嶇疆鏂囦欢 -鈹� 鈹斺攢 ruoyi-workflow.yml // workflow 妯″潡閰嶇疆鏂囦欢 -鈹溾攢 config/grafana // grafana閰嶇疆鏂囦欢(闇�澶嶅埗鍒癵rafana浣跨敤) -鈹� 鈹斺攢 Nacos.json // Nacos鐩戞帶椤甸潰 -鈹� 鈹斺攢 SLS JVM鐩戞帶澶х洏.json // JVM鐩戞帶椤甸潰 -鈹� 鈹斺攢 Spring Boot 2.1 Statistics.json // SpringBoot鐩戞帶椤甸潰 -鈹溾攢 sql // sql鑴氭湰 -鈹溾攢 docker // docker 閰嶇疆鑴氭湰 -鈹溾攢 .run // 鎵ц鑴氭湰鏂囦欢 -鈹溾攢 .editorconfig // 缂栬緫鍣ㄧ紪鐮佹牸寮忛厤缃� -鈹溾攢 LICENSE // 寮�婧愬崗璁� -鈹溾攢 pom.xml // 鍏叡渚濊禆 -鈹溾攢 README.md // 妗嗘灦璇存槑鏂囦欢 -~~~ \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/home.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/home.md deleted file mode 100644 index 290a4f9..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/home.md +++ /dev/null @@ -1,137 +0,0 @@ -<img src="https://foruda.gitee.com/images/1679673780944866919/d908a86f_1766278.png" width="56%" height="56%"> -<div style="height: 10px; clear: both;"></div> - -- - - -# 骞冲彴绠�浠� -<br> - -[](https://gitee.com/dromara/RuoYi-Cloud-Plus) -[](https://github.com/dromara/RuoYi-Cloud-Plus) -[](https://gitee.com/dromara/RuoYi-Cloud-Plus/blob/master/LICENSE) -[ -<br> -[](https://gitee.com/dromara/RuoYi-Cloud-Plus) -[]() -[]() -[]() - -> RuoYi-Cloud-Plus `寰湇鍔¢�氱敤鏉冮檺绠$悊绯荤粺` 閲嶅啓 RuoYi-Cloud 鍏ㄦ柟浣嶅崌绾�(涓嶅吋瀹瑰師妗嗘灦) - -> 椤圭洰浠g爜銆佹枃妗� 鍧囧紑婧愬厤璐瑰彲鍟嗙敤 閬靛惊寮�婧愬崗璁湪椤圭洰涓繚鐣欏紑婧愬崗璁枃浠跺嵆鍙�<br> -娲诲埌鑰佸啓鍒拌�� 涓哄叴瓒h�屽紑婧� 涓哄涔犺�屽紑婧� 涓鸿澶у鐪熸鍙互瀛﹀埌鎶�鏈�屽紑婧� - -> 绯荤粺婕旂ず: [浼犻�侀棬](https://gitee.com/dromara/RuoYi-Vue-Plus/wikis/pages?sort_id=4836388&doc_id=1469725) 鍒嗗竷寮忛泦缇ょ増鏈�(鍔熻兘涓�鑷�) - -# 鏈鏋朵笌RuoYi鐨勫姛鑳藉樊寮� - -| 鍔熻兘 | 鏈鏋� | RuoYi | -|-------------|-------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------| -| 鍓嶇椤圭洰 | 閲囩敤 Vue3 + TS + ElementPlus 閲嶅啓 | 鍩轰簬Vue2/Vue3 + JS | -| 鍚庣椤圭洰缁撴瀯 | 閲囩敤鎻掍欢鍖� + 鎵╁睍鍖呭舰寮� 缁撴瀯瑙h�� 鏄撲簬鎵╁睍 | 妯″潡鐩镐簰娉ㄥ叆鑰﹀悎涓ラ噸闅句互鎵╁睍 | -| 鍚庣浠g爜椋庢牸 | 涓ユ牸閬靛畧Alibaba瑙勮寖涓庨」鐩粺涓�閰嶇疆鐨勪唬鐮佹牸寮忓寲 | 浠g爜涔﹀啓涓庡父瑙勭粨鏋勪笉鍚岄槄璇婚殰纰嶅ぇ | -| 鍒嗗竷寮忔敞鍐屼腑蹇� | 閲囩敤 Alibaba Nacos 婧愮爜闆嗘垚渚夸簬璋冭瘯鎵╁睍涓庝簩娆″紑鍙� 妗嗘灦杩樹负鍏跺鍔犱簡鍚勭鐩戞帶 | 閲囩敤 Alibaba Nacos 鑷鎼缓绾畼鏂圭増鏈笉鍙潬 | -| 鍒嗗竷寮忛厤缃腑蹇� | 閲囩敤 Alibaba Nacos 婧愮爜闆嗘垚渚夸簬璋冭瘯鎵╁睍涓庝簩娆″紑鍙� 妗嗘灦杩樹负鍏跺鍔犱簡鍚勭鐩戞帶 | 閲囩敤 Alibaba Nacos 鑷鎼缓绾畼鏂圭増鏈笉鍙潬 | -| 鏈嶅姟缃戝叧 | 閲囩敤 SpringCloud Gateway 妗嗘灦鎵╁睍浜嗗绉嶅姛鑳�<br/>渚嬪:鍐呯綉閴存潈銆佽姹備綋缂撳瓨銆佽法鍩熼厤缃�佽姹傚搷搴旀棩蹇楃瓑 | 閲囩敤 SpringCloud Gateway 鍔熻兘鍗曚竴 | -| 璐熻浇鍧囪 | 閲囩敤 SpringCloud Loadbalancer 鎵╁睍鏀寔浜嗗紑鍙戝洟闃熻矾鐢� 渚夸簬澶氬洟闃熷紑鍙戣皟璇� | 閲囩敤 SpringCloud Loadbalancer 鍔熻兘鍗曚竴 | -| RPC杩滅▼璋冪敤 | 閲囩敤 鍏ㄦ柊 Apache Dubbo 3.X 鍘嗗彶鎮犺繙涓嶇敤澶氳 | 閲囩敤 feign 鍔熻兘鏈夐檺缂栧啓鏂瑰紡 缃戠粶娉㈠姩澶� 涓嶇ǔ瀹� | -| 鍒嗗竷寮忛檺娴佺啍鏂� | 閲囩敤 Alibaba Sentinel 婧愮爜闆嗘垚渚夸簬璋冭瘯鎵╁睍涓庝簩娆″紑鍙� 妗嗘灦杩樹负鍏跺鍔犱簡鍚勭鐩戞帶 | 閲囩敤 Alibaba Sentinel 鑷鎼缓绾畼鏂圭増鏈笉鍙潬 | -| 鍒嗗竷寮忎簨鍔� | 閲囩敤 Alibaba Seata 婧愮爜闆嗘垚瀵规帴浜哊acos涓庡悇绉嶇洃鎺� 绠�鍖栦簡鎼缓閮ㄧ讲娴佺▼ | 閲囩敤 Alibaba Seata 鑷鎼缓绾畼鏂圭増鏈� 鎼缓绻佺悙涓嶯acos涓嶆寕閽� 浠g爜鍐呬娇鐢ㄦ柟寮忔�紓绛� | -| Web瀹瑰櫒 | 閲囩敤 Undertow 鍩轰簬 XNIO 鐨勯珮鎬ц兘瀹瑰櫒 | 閲囩敤 Tomcat | -| 鏉冮檺璁よ瘉 | 閲囩敤 Sa-Token銆丣wt 闈欐�佷娇鐢ㄥ姛鑳介綈鍏� 浣庤�﹀悎 楂樻墿灞� | Spring Security 閰嶇疆绻佺悙鎵╁睍鎬ф瀬宸� | -| 鏉冮檺娉ㄨВ | 閲囩敤 Sa-Token 鏀寔娉ㄨВ 鐧诲綍鏍¢獙銆佽鑹叉牎楠屻�佹潈闄愭牎楠屻�佷簩绾ц璇佹牎楠屻�丠ttpBasic鏍¢獙銆佸拷鐣ユ牎楠�<br/>瑙掕壊涓庢潈闄愭牎楠屾敮鎸佸绉嶆潯浠� 濡� `AND` `OR` 鎴� `鏉冮檺 OR 瑙掕壊` 绛夊鏉傝〃杈惧紡 | 鍙敮鎸佹槸鍚﹀瓨鍦ㄥ尮閰� | -| 鍏崇郴鏁版嵁搴撴敮鎸� | 鍘熺敓鏀寔 MySQL銆丱racle銆丳ostgreSQL銆丼QLServer<br/>鍙悓鏃朵娇鐢ㄥ紓鏋勫垏鎹�(鏀寔鍏朵粬 mybatis-plus 鏀寔鐨勬墍鏈夋暟鎹簱 鍙渶瑕佸鍔爅dbc渚濊禆鍗冲彲浣跨敤 杈炬ⅵ閲戜粨绛夊潎鏈夋垚鍔熸渚�) | 鏀寔 Mysql銆丱racle 涓嶆敮鎸佸悓鏃朵娇鐢ㄣ�佷笉鏀寔寮傛瀯鍒囨崲 | -| 缂撳瓨鏁版嵁搴� | 鏀寔 Redis 5-7 鏀寔澶ч儴鍒嗘柊鍔熻兘鐗规�� 濡� 鍒嗗竷寮忛檺娴併�佸垎甯冨紡闃熷垪 | Redis 绠�鍗� get set 鏀寔 | -| Redis瀹㈡埛绔� | 閲囩敤 Redisson Redis瀹樻柟鎺ㄨ崘 鍩轰簬Netty鐨勫鎴风宸ュ叿<br/>鏀寔Redis 90%浠ヤ笂鐨勫懡浠� 搴曞眰浼樺寲瑙勯伩寰堝涓嶆纭殑鐢ㄦ硶 渚嬪: keys琚浆鎹负scan<br/>鏀寔鍗曟満銆佸摠鍏点�佸崟涓婚泦缇ゃ�佸涓婚泦缇ょ瓑妯″紡 | Lettuce + RedisTemplate 鏀寔妯″紡灏� 宸ュ叿浣跨敤绻佺悙<br/>杩炴帴姹犻噰鐢� common-pool Bug澶氱粡甯告�у嚭闂 | -| 缂撳瓨娉ㄨВ | 閲囩敤 Spring-Cache 娉ㄨВ 瀵瑰叾鎵╁睍浜嗗疄鐜版敮鎸佷簡鏇村鍔熻兘<br/>渚嬪 杩囨湡鏃堕棿 鏈�澶х┖闂叉椂闂� 缁勬渶澶ч暱搴︾瓑 鍙渶涓�涓敞瑙e嵆鍙畬鎴愭暟鎹嚜鍔ㄧ紦瀛� | 闇�鎵嬪姩缂栧啓Redis浠g爜閫昏緫 | -| ORM妗嗘灦 | 閲囩敤 Mybatis-Plus 鍩轰簬瀵硅薄鍑犱箮涓嶇敤鍐橲QL鍏╦ava鎿嶄綔 鍔熻兘寮哄ぇ鎻掍欢浼楀<br/>渚嬪澶氱鎴锋彃浠� 鍒嗛〉鎻掍欢 涔愯閿佹彃浠剁瓑绛� | 閲囩敤 Mybatis 鍩轰簬XML闇�瑕佹墜鍐橲QL | -| SQL鐩戞帶 | 閲囩敤 p6spy 鍙緭鍑哄畬鏁碨QL涓庢墽琛屾椂闂寸洃鎺� | log杈撳嚭 闇�鎵嬪姩鎷兼帴sql涓庡弬鏁版棤娉曞揩閫熸煡鐪嬭皟璇曢棶棰� | -| 鏁版嵁鍒嗛〉 | 閲囩敤 Mybatis-Plus 鍒嗛〉鎻掍欢<br/>妗嗘灦瀵瑰叾杩涜浜嗘墿灞� 瀵硅薄鍖栧垎椤靛璞� 鏀寔澶氱鏂瑰紡浼犲弬 鏀寔鍓嶇澶氭帓搴� 澶嶆潅鎺掑簭 | 閲囩敤 PageHelper 浠呮敮鎸佸崟鏌ヨ鍒嗛〉 鍙傛暟鍙兘浠巔aram浼� 鍙兘鍗曟帓搴� 鍔熻兘鎵╁睍鎬у樊 浣撻獙涓嶅ソ | -| 鏁版嵁鏉冮檺 | 閲囩敤 Mybatis-Plus 鎻掍欢 鑷鍒嗘瀽鎷兼帴SQL 鏃犳劅寮忚繃婊�<br/>鍙渶涓篗apper璁剧疆濂芥敞瑙f潯浠� 鏀寔澶氱鑷畾涔� 涓嶉檺浜庨儴闂ㄨ鑹� | 閲囩敤 娉ㄨВ+aop 瀹炵幇 鍩轰簬閮ㄩ棬瑙掕壊 鐢熸垚鐨剆ql鍏煎鎬у樊 涓嶆敮鎸佸叾浠栦笟鍔℃墿灞�<br/>鐢熸垚sql鍚庨渶鎵嬪姩鎷兼帴鍒板叿浣撲笟鍔ql涓� 瀵逛簬澶氫釜Mapper鏌ヨ涓嶈捣浣滅敤 | -| 鏁版嵁鑴辨晱 | 閲囩敤 娉ㄨВ + jackson 搴忓垪鍖栨湡闂磋劚鏁� 鏀寔涓嶅悓妯″潡涓嶅悓鐨勮劚鏁忔潯浠�<br/>鏀寔澶氱绛栫暐 濡傝韩浠借瘉銆佹墜鏈哄彿銆佸湴鍧�銆侀偖绠便�侀摱琛屽崱绛� 鍙嚜琛屾墿灞� | 鏃� | -| 鏁版嵁鍔犺В瀵� | 閲囩敤 娉ㄨВ + mybatis 鎷︽埅鍣� 瀵瑰瓨鍙栨暟鎹湡闂磋嚜鍔ㄥ姞瑙e瘑<br/>鏀寔澶氱绛栫暐 濡侭ASE64銆丄ES銆丷SA銆丼M2銆丼M4绛� | 鏃� | -| 鏁版嵁缈昏瘧 | 閲囩敤 娉ㄨВ + jackson 搴忓垪鍖栨湡闂村姩鎬佷慨鏀规暟鎹� 鏁版嵁杩涜缈昏瘧<br/>鏀寔澶氱妯″紡: `鏄犲皠缈昏瘧` `鐩存帴缈昏瘧` `鍏朵粬鎵╁睍鏉′欢缈昏瘧` 鎺ュ彛鍖栦袱姝ュ嵆鍙畬鎴愯嚜瀹氫箟鎵╁睍 鍐呯疆澶氱缈昏瘧瀹炵幇 | 鏃� | -| 澶氭暟鎹簮妗嗘灦 | 閲囩敤 dynamic-datasource 鏀寔甯傞潰澶ч儴鍒嗘暟鎹簱<br/>閫氳繃yml閰嶇疆鍗冲彲鍔ㄦ�佺鐞嗗紓鏋勪笉鍚岀绫荤殑鏁版嵁搴� 涔熷彲閫氳繃鍓嶇椤甸潰娣诲姞鏁版嵁婧�<br/>鏀寔spel琛ㄨ揪寮忎粠璇锋眰澶村弬鏁扮瓑鏉′欢鍒囨崲鏁版嵁婧� | 鍩轰簬 druid 鎵嬪姩缂栧啓浠g爜閰嶇疆鏁版嵁婧� 閰嶇疆绻佺悙 鏀寔鎬у樊 | -| 澶氭暟鎹簮浜嬪姟 | 閲囩敤 dynamic-datasource 鏀寔澶氭暟鎹簮涓嶅悓绉嶇被鐨勬暟鎹簱浜嬪姟鍥炴粴 | 涓嶆敮鎸� | -| 鏁版嵁搴撹繛鎺ユ睜 | 閲囩敤 HikariCP Spring瀹樻柟鍐呯疆杩炴帴姹� 閰嶇疆绠�鍗� 浠ユ�ц兘涓庣ǔ瀹氭�ч椈鍚嶅ぉ涓� | 閲囩敤 druid bug浼楀 绀惧尯缁存姢宸� 娲昏穬搴︿綆 閰嶇疆浼楀绻佺悙鎬ц兘涓�鑸� | -| 鏁版嵁搴撲富閿� | 閲囩敤 闆姳ID 鍩轰簬鏃堕棿鎴崇殑 鏈夊簭澧為暱 鍞竴ID 鍐嶄篃涓嶇敤涓哄垎搴撳垎琛� 鏁版嵁鍚堝苟涓婚敭鍐茬獊閲嶅鑰屽彂鎰� | 閲囩敤 鏁版嵁搴撹嚜澧濱D 鏀寔鏁版嵁閲忔湁闄� 涓嶆敮鎸佸鏁版嵁婧愪富閿敮涓� | -| WebSocket鍗忚 | 鍩轰簬 Spring 灏佽鐨� WebSocket 鍗忚 鎵╁睍浜員oken閴存潈涓庡垎甯冨紡浼氳瘽鍚屾 涓嶅啀鍙槸鍩轰簬鍗曟満鐨勫簾鐗� | 鏃� | -| SSE鎺ㄩ�� | 閲囩敤 Spring SSE 瀹炵幇 鎵╁睍浜員oken閴存潈涓庡垎甯冨紡浼氳瘽鍚屾 | 鏃� | -| 搴忓垪鍖� | 閲囩敤 Jackson Spring瀹樻柟鍐呯疆搴忓垪鍖� 闈犺氨!!! | 閲囩敤 fastjson bugjson 杩滆繎闂诲悕 | -| 鍒嗗竷寮忓箓绛� | 鍙傝�冪編鍥TIS闃查噸绯荤粺绠�鍖栧疄鐜�(缁嗚妭鍙湅鏂囨。) | 鎵嬪姩缂栧啓娉ㄨВ鍩轰簬aop瀹炵幇 | -| 鍒嗗竷寮忎换鍔¤皟搴� | 閲囩敤 SnailJob 澶╃敓鏀寔鍒嗗竷寮� 缁熶竴鐨勭鐞嗕腑蹇� 鏀寔澶氱鏁版嵁搴� 鏀寔鍒嗙墖閲嶈瘯DAG浠诲姟娴佺瓑 | 閲囩敤 Quartz 鍩轰簬鏁版嵁搴撻攣鎬ц兘宸� 闆嗙兢闇�瑕佸仛寰堝閰嶇疆涓庢敼閫� | -| 鍒嗗竷寮忔棩蹇椾腑蹇� | 閲囩敤 ELK 涓氱晫鎴愮啛瑙e喅鏂规 瀹炴椂鏀堕泦鎵�鏈夋湇鍔$殑杩愯鏃ュ織 蹇�熷彂鐜板畾浣嶉棶棰� | 鏃� | -| 鍒嗗竷寮忔悳绱㈠紩鎿� | 閲囩敤 ElasticSearch銆丒asy-Es 浠� Mybatis-Plus 鏂瑰紡鎿嶄綔 ElasticSearch | 鏃� | -| 鍒嗗竷寮忔秷鎭槦鍒� | 閲囩敤 鏀寔 Kafka銆丷ocketMQ銆丷abbitMQ 鍚勭 寤惰繜娑堟伅 浜嬪姟娑堟伅 娴佹秷鎭� | 鏃� | -| 鍒嗗竷寮忔秷鎭�荤嚎 | 閲囩敤 SpringCloud Bus 瀹炵幇浜嬩欢鎬荤嚎 璺ㄦ湇鍔¢�氱煡 鏀寔 Kafka銆丷ocketMQ銆丷abbitMQ | 鏃� | -| 鍒嗗簱鍒嗚〃鍔熻兘 | 閲囩敤 Apache Sharding-Proxy 浠g悊鏈嶅姟鏃犲叆渚垫敮鎸佸垎搴撳垎琛� 鍙渶缂栧啓鍒嗗簱鍒嗚〃瑙勫垯鍗冲彲 | 鏃� | -| 鏂囦欢瀛樺偍 | 閲囩敤 Minio 鍒嗗竷寮忔枃浠跺瓨鍌� 澶╃敓鏀寔澶氭満銆佸纭洏銆佸鍒嗙墖銆佸鍓湰瀛樺偍<br/>鏀寔鏉冮檺绠$悊 瀹夊叏鍙潬 鏂囦欢鍙姞瀵嗗瓨鍌� | 閲囩敤 鏈満鏂囦欢瀛樺偍 鏂囦欢瑁告紡 鏄撲涪澶辨硠婕� 涓嶆敮鎸侀泦缇ゆ湁鍗曠偣鏁堝簲 | -| 浜戝瓨鍌� | 閲囩敤 AWS S3 鍗忚瀹㈡埛绔� 鏀寔 涓冪墰銆侀樋閲屻�佽吘璁� 绛変竴鍒囨敮鎸丼3鍗忚鐨勫巶瀹� | 涓嶆敮鎸� | -| 鐭俊 | 鏀寔 闃块噷銆佽吘璁� 鍙渶鍦▂ml閰嶇疆濂藉巶瀹跺瘑閽ュ嵆鍙娇鐢� 鎺ュ彛鍖栨敮鎸佹墿灞曞叾浠栧巶瀹� | 涓嶆敮鎸� | -| 閭欢 | 閲囩敤 mail-api 閫氱敤鍗忚鏀寔澶ч儴鍒嗛偖浠跺巶鍟� | 涓嶆敮鎸� | -| 鎺ュ彛鏂囨。 | 閲囩敤 SpringDoc銆乯avadoc 鏃犳敞瑙i浂鍏ヤ镜鍩轰簬java娉ㄩ噴<br/>鍙渶鎶婃敞閲婂啓濂� 鏃犻渶鍐嶅啓涓�澶у爢鐨勬枃妗f敞瑙d簡 | 閲囩敤 Springfox 宸插仠姝㈢淮鎶� 闇�瑕佺紪鍐欏ぇ閲忕殑娉ㄨВ鏉ユ敮鎸佹枃妗g敓鎴� | -| 鏍¢獙妗嗘灦 | 閲囩敤 Validation 鏀寔娉ㄨВ涓庡伐鍏风被鏍¢獙 娉ㄨВ鏀寔鍥介檯鍖� | 浠呮敮鎸佹敞瑙� 涓旀敞瑙d笉鏀寔鍥介檯鍖� | -| Excel妗嗘灦 | 閲囩敤 Alibaba EasyExcel 鍩轰簬鎻掍欢鍖�<br/>妗嗘灦瀵瑰叾澧炲姞浜嗗緢澶氬姛鑳� 渚嬪 鑷姩鍚堝苟鐩稿悓鍐呭 鑷姩鎺掑垪甯冨眬 瀛楀吀缈昏瘧绛� | 鍩轰簬 POI 鎵嬪啓瀹炵幇 鍔熻兘鏈夐檺 澶嶆潅 鎵╁睍鎬у樊 | -| 宸ヤ綔娴佹敮鎸� | 鏀寔鍚勭澶嶆潅瀹℃壒 杞姙 濮旀淳 鍔犲噺绛� 浼氱 鎴栫 绁ㄧ 绛夊姛鑳� | 鏃� | -| 宸ュ叿绫绘鏋� | 閲囩敤 Hutool銆丩ombok 涓婄櫨绉嶅伐鍏疯鐩�90%鐨勪娇鐢ㄩ渶姹� 鍩轰簬娉ㄨВ鑷姩鐢熸垚 get set 绛夌畝鍖栨鏋跺ぇ閲忎唬鐮� | 鎵嬪啓宸ュ叿绋冲畾鎬у樊鏄撳嚭闂 宸ュ叿鏁伴噺鏈夐檺 浠g爜鑷冭偪闇�鑷繁鎵嬪啓 get set 绛� | -| 鏈嶅姟鐩戞帶妗嗘灦 | 閲囩敤 SpringBoot-Admin 鍩轰簬SpringBoot瀹樻柟 actuator 鎺㈤拡鏈哄埗<br/>瀹炴椂鐩戞帶鏈嶅姟鐘舵�� 妗嗘灦杩樹负鍏舵墿灞曚簡鍦ㄧ嚎鏃ュ織鏌ョ湅鐩戞帶 | 鏃� | -| 鍏ㄦ柟浣嶇洃鎺ф姤璀� | 閲囩敤 Prometheus銆丟rafana 澶氭牱鍖栭噰闆� 澶氭ā鏉垮ぇ灞忓睍绀� 瀹炴椂鎶ヨ鐩戞帶 鎻愪緵璇︾粏鐨勬惌寤烘枃妗� | 鏃� | -| 閾捐矾杩借釜 | 閲囩敤 Apache SkyWalking 杩樺湪涓鸿姹備笉鐭ラ亾鍘诲摢浜� 鍒板摢鍑轰簡闂鑰岀儲鎭煎悧<br/>鐢ㄤ簡瀹冨嵆鍙疄鏃舵煡鐪嬭姹傜粡杩囩殑姣忎竴澶勬瘡涓�涓妭鐐� | 鏃� | -| 浠g爜鐢熸垚鍣� | 鍙渶璁捐濂借〃缁撴瀯 涓�閿敓鎴愭墍鏈塩rud浠g爜涓庨〉闈�<br/>闄嶄綆80%鐨勫紑鍙戦噺 鎶婄簿鍔涢兘鎶曞叆鍒颁笟鍔¤璁′笂<br/>妗嗘灦涓哄叾閫傞厤MP銆丼pringDoc瑙勮寖鍖栦唬鐮� 鍚屾椂鏀寔鍔ㄦ�佸鏁版嵁婧愪唬鐮佺敓鎴� | 浠g爜鐢熸垚鍘熺敓缁撴瀯 鍙敮鎸佸崟鏁版嵁婧愮敓鎴� | -| 閮ㄧ讲鏂瑰紡 | 鏀寔 Docker 缂栨帓 涓�閿惌寤烘墍鏈夌幆澧� 璁╁紑鍙戜汉鍛樹粠姝や笉鍐嶄负鎼缓鐜鑰岀儲鎭� | 鍘熺敓jar閮ㄧ讲 鍏朵粬鐜闇�鎵嬪姩涓嬭浇瀹夎 鑷鎼缓 | -| 椤圭洰璺緞淇敼 | 鎻愪緵璇︾粏鐨勪慨鏀规柟妗堟枃妗� 骞朵负鍏跺仛浜嗕竴浜涙敼鍔� 闈炲父绠�鍗曞嵆鍙慨鏀规垚鑷繁鎯宠鐨� | 闇�瑕佸仛寰堝鏀归�� 鏂囨。璇存槑鏈夐檺 | -| 鍥介檯鍖� | 鍩轰簬璇锋眰澶村姩鎬佽繑鍥炰笉鍚岃绉嶇殑鏂囨湰鍐呭 寮�鍙戦毦搴︿綆 鏈夊搴旂殑宸ュ叿绫� 鏀寔澶ч儴鍒嗘敞瑙e唴瀹瑰浗闄呭寲 | 鍙彁渚涘熀纭�鍔熻兘 鍏朵粬闇�鑷缂栧啓鎵╁睍 | -| 浠g爜鍗曚緥娴嬭瘯 | 鎻愪緵鍗曚緥娴嬭瘯 浣跨敤鏂瑰紡缂栧啓鏂规硶涓巑aven澶氱幆澧冨崟娴嬫彃浠� | 鍙彁渚涘熀纭�鍔熻兘 鍏朵粬闇�鑷缂栧啓鎵╁睍 | -| Demo妗堜緥 | 鎻愪緵妗嗘灦鍔熻兘鐨勫疄闄呬娇鐢ㄦ渚� 鍗曠嫭涓�涓ā鍧楁彁渚涗簡寰堝寰堝叏 | 鏃� | - -## 鏈鏋朵笌RuoYi鐨勪笟鍔″樊寮� - -| 涓氬姟 | 鍔熻兘璇存槑 | 鏈鏋� | RuoYi | -|--------|-----------------------------------------|-----|------------------| -| 绉熸埛绠$悊 | 绯荤粺鍐呯鎴风殑绠$悊 濡�:绉熸埛濂楅銆佽繃鏈熸椂闂淬�佺敤鎴锋暟閲忋�佷紒涓氫俊鎭瓑 | 鏀寔 | 鏃� | -| 绉熸埛濂楅绠$悊 | 绯荤粺鍐呯鎴锋墍鑳戒娇鐢ㄧ殑濂楅绠$悊 濡�:濂楅鍐呮墍鍖呭惈鐨勮彍鍗曠瓑 | 鏀寔 | 鏃� | -| 鐢ㄦ埛绠$悊 | 鐢ㄦ埛鐨勭鐞嗛厤缃� 濡�:鏂板鐢ㄦ埛銆佸垎閰嶇敤鎴锋墍灞為儴闂ㄣ�佽鑹层�佸矖浣嶇瓑 | 鏀寔 | 鏀寔 | -| 閮ㄩ棬绠$悊 | 閰嶇疆绯荤粺缁勭粐鏈烘瀯锛堝叕鍙搞�侀儴闂ㄣ�佸皬缁勶級 鏍戠粨鏋勫睍鐜版敮鎸佹暟鎹潈闄� | 鏀寔 | 鏀寔 | -| 宀椾綅绠$悊 | 閰嶇疆绯荤粺鐢ㄦ埛鎵�灞炴媴浠昏亴鍔� | 鏀寔 | 鏀寔 | -| 鑿滃崟绠$悊 | 閰嶇疆绯荤粺鑿滃崟銆佹搷浣滄潈闄愩�佹寜閽潈闄愭爣璇嗙瓑 | 鏀寔 | 鏀寔 | -| 瑙掕壊绠$悊 | 瑙掕壊鑿滃崟鏉冮檺鍒嗛厤銆佽缃鑹叉寜鏈烘瀯杩涜鏁版嵁鑼冨洿鏉冮檺鍒掑垎 | 鏀寔 | 鏀寔 | -| 瀛楀吀绠$悊 | 瀵圭郴缁熶腑缁忓父浣跨敤鐨勪竴浜涜緝涓哄浐瀹氱殑鏁版嵁杩涜缁存姢 | 鏀寔 | 鏀寔 | -| 鍙傛暟绠$悊 | 瀵圭郴缁熷姩鎬侀厤缃父鐢ㄥ弬鏁� | 鏀寔 | 鏀寔 | -| 閫氱煡鍏憡 | 绯荤粺閫氱煡鍏憡淇℃伅鍙戝竷缁存姢 | 鏀寔 | 鏀寔 | -| 鎿嶄綔鏃ュ織 | 绯荤粺姝e父鎿嶄綔鏃ュ織璁板綍鍜屾煡璇� 绯荤粺寮傚父淇℃伅鏃ュ織璁板綍鍜屾煡璇� | 鏀寔 | 鏀寔 | -| 鐧诲綍鏃ュ織 | 绯荤粺鐧诲綍鏃ュ織璁板綍鏌ヨ鍖呭惈鐧诲綍寮傚父 | 鏀寔 | 鏀寔 | -| 鏂囦欢绠$悊 | 绯荤粺鏂囦欢灞曠ず銆佷笂浼犮�佷笅杞姐�佸垹闄ょ瓑绠$悊 | 鏀寔 | 鏃� | -| 鏂囦欢閰嶇疆绠$悊 | 绯荤粺鏂囦欢涓婁紶銆佷笅杞芥墍闇�瑕佺殑閰嶇疆淇℃伅鍔ㄦ�佹坊鍔犮�佷慨鏀广�佸垹闄ょ瓑绠$悊 | 鏀寔 | 鏃� | -| 鍦ㄧ嚎鐢ㄦ埛绠$悊 | 宸茬櫥褰曠郴缁熺殑鍦ㄧ嚎鐢ㄦ埛淇℃伅鐩戞帶涓庡己鍒惰涪鍑烘搷浣� | 鏀寔 | 鏀寔 | -| 瀹氭椂浠诲姟 | 杩愯鎶ヨ〃銆佷换鍔$鐞�(娣诲姞銆佷慨鏀广�佸垹闄�)銆佹棩蹇楃鐞嗐�佹墽琛屽櫒绠$悊绛� | 鏀寔 | 浠呮敮鎸佷换鍔′笌鏃ュ織绠$悊 | -| 浠g爜鐢熸垚 | 澶氭暟鎹簮鍓嶅悗绔唬鐮佺殑鐢熸垚锛坖ava銆乭tml銆亁ml銆乻ql锛夋敮鎸丆RUD涓嬭浇 | 鏀寔 | 浠呮敮鎸佸崟鏁版嵁婧� | -| 绯荤粺鎺ュ彛 | 鏍规嵁涓氬姟浠g爜鑷姩鐢熸垚鐩稿叧鐨刟pi鎺ュ彛鏂囨。 | 鏀寔 | 鏀寔 | -| 鏈嶅姟鐩戞帶 | 鐩戣闆嗙兢绯荤粺CPU銆佸唴瀛樸�佺鐩樸�佸爢鏍堛�佸湪绾挎棩蹇椼�丼pring鐩稿叧閰嶇疆绛� | 鏀寔 | 浠呮敮鎸佸崟鏈篊PU銆佸唴瀛樸�佺鐩樼洃鎺� | -| 缂撳瓨鐩戞帶 | 瀵圭郴缁熺殑缂撳瓨淇℃伅鏌ヨ锛屽懡浠ょ粺璁$瓑銆� | 鏀寔 | 鏀寔 | -| 鍦ㄧ嚎鏋勫缓鍣� | 鎷栧姩琛ㄥ崟鍏冪礌鐢熸垚鐩稿簲鐨凥TML浠g爜銆� | 鏀寔 | 鏀寔 | -| 浣跨敤妗堜緥 | 绯荤粺鐨勪竴浜涘姛鑳芥渚� | 鏀寔 | 涓嶆敮鎸� | - -## 婕旂ず鍥句緥 - -| | | -|--------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------| -|  |  | -|  |  | -|  |  | -|  |  | -|  |  | -|  |  | -|  |  | -|  |  | -|  |  | -|  |  | -|  |  | -|  |  | -|  |  | -|  |  | -|  |  | -|  |  | -|  |  | -|  |  | -|  |  | - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/1.Xinit.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/1.Xinit.md deleted file mode 100644 index 19492b1..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/1.Xinit.md +++ /dev/null @@ -1,87 +0,0 @@ -# 1.X椤圭洰鍒濆鍖� -- - - -### 椤圭洰鍒嗘敮璇存槑 -`master` 涓诲垎鏀� 绋冲畾鍙戝竷鍒嗘敮<br> -`dev` 寮�鍙戝垎鏀� 浠g爜闅忔椂鏇存柊 涓嶆帹鑽愪娇鐢� 缁忔祴璇曞悗浼氬彂甯冨埌涓诲垎鏀�<br> -`2.X` 鏂�2.X澶х増鏈垎鏀�<br> -`future/*` 鏂板姛鑳介瑙堝垎鏀� - -### 椤圭洰蹇呭鐜 -> 鎺ㄨ崘浣跨敤 `docker` 瀹夎 椤圭洰鍐呯疆 `docker` 缂栨帓鏂囦欢 - -* oracle jdk 8 11 (鏆傛椂涓嶆敮鎸� 17 涓嶆敮鎸佸ぇ浜� jdk8_202 鍥犱负202鏄渶鍚庝竴涓厤璐圭増鏈�) -* mysql 5.7 8.0 (5.6鏈�傞厤鍙兘浼氭湁闂) -* oracle 11g 12c -* postgres 13 14 -* redis 5.X 6.X 7.X 鐢变簬妗嗘灦澶ч噺浣跨敤浜唕edis鐗规�� 鐗堟湰蹇呴』 >= 5.X ([win redis 涓嬭浇鍦板潃](https://github.com/zkteco-home/redis-windows)) -* minio 鏈湴鏂囦欢瀛樺偍 鎴� 闃块噷浜� 鑵捐浜� 涓冪墰浜戠瓑涓�鍒囨敮鎸丼3鍗忚鐨勪簯瀛樺偍 -* maven 3.6.3 3.8.X -* nodejs >= 12 -* npm 6.X 8.X (7.X纭鏈夐棶棰�) -* nacos >= 2.X(妗嗘灦1.3.0鍐呯疆nacos) -* sentinel 妗嗘灦鍐呯疆 -* seata 妗嗘灦鍐呯疆 - -### 闇�鍕鹃�� maven 瀵瑰簲鐜 - - -### 榛樿 `JDK8` 濡傛湁鍙樺姩 闇�鏇存敼浠ヤ笅閰嶇疆 - - - - - -### sql瀵煎叆 -灏唖ql瀵煎叆鍒颁笌sql鏂囦欢鍚嶅搴旂殑鏁版嵁搴�(涓嶈鏀惧埌涓�涓簱涓�)<br> - - - -### 浣跨敤鍐呯疆 `ruoyi-naocs` 鏈嶅姟 浠庤繖寮�濮� - -> 鏇存敼 ruoyi-nacos 鏁版嵁搴撳湴鍧� - - - -<font size="4">**鍏朵綑娴佺▼鍚屼笅鏂规楠や竴鑷�**</font> - -### 鑷缓 Nacos 浠庤繖寮�濮� - -<font size="4">**Nacos 鏁版嵁搴撴寚鍚� ry-config 鏁版嵁搴�(姝ゅ閲嶇偣: 姝ゆ暟鎹簱涓哄畾鍒舵暟鎹� 鏈娇鐢ㄦ搴撲細鏃犳硶璇诲彇閰嶇疆)**</font> - -> 灏嗛」鐩� `config/nacos` 涓嬫墍鏈夐厤缃� 澶嶅埗鍒� `nacos` 鍐�(寤鸿鎵嬪姩澶嶅埗鍐呭 闃叉缂栫爜涓嶄竴鑷撮棶棰�) - - - - -> 鏇存敼 `涓籶om鏂囦欢` 瀵瑰簲鐜鐨� `nacos` 鍦板潃 - - - -### 鏇存敼 `Nacos` 鑷畾涔夐厤缃� - -**蹇犲憡: 寰湇鍔¢厤缃浉褰撳鏉� 璇峰嬁鍦ㄤ笉鎳傚師鐞嗙殑鎯呭喌涓嬩贡鏀�** - -> `application-common.yml` 鏇存敼 - - - -> `datasource.yml` 鏇存敼 - - - -> `seata-server.properties` 鏇存敼 - - - -### 浣跨敤鍐呯疆 `ruoyi-seata-server` 鏈嶅姟 浠庤繖寮�濮� - -鎵ц `ry-seata.sql` 鏂囦欢 鍒濆鍖栨湇鍔$鏁版嵁搴�<br> -淇敼 `nacos` 鍐呯殑 `seata-server.properties` 鐨勬暟鎹簱鍦板潃<br> -鍚姩 `ruoyi-seata-server` 鏈嶅姟鍗冲彲 - -### 鏈嶅姟鍚姩椤哄簭璇存槑 - -1. 蹇呴』鍚姩鍩虹寤鸿: mysql redis nacos<br> -2. 鍙�夊惎鍔ㄥ熀纭�寤鸿: minio(褰卞搷鏂囦欢涓婁紶) seata(褰卞搷鍒嗗竷寮忎簨鍔� 榛樿寮�鍚�) sentinel(褰卞搷鐔旀柇闄愭祦) monitor(褰卞搷鐩戞帶) xxljob(褰卞搷瀹氭椂浠诲姟)<br> -3. 蹇呴』鍚姩搴旂敤鏈嶅姟: gateway auth system<br> -4. 鍙�夊惎鍔ㄥ簲鐢ㄦ湇鍔�: resource(褰卞搷璧勬簮浣跨敤 鏂囦欢涓婁紶 閭欢 鐭俊绛�) gen(浠g爜鐢熸垚) job(褰卞搷瀹氭椂浠诲姟) demo(褰卞搷demo浣跨敤) diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/deploy.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/deploy.md deleted file mode 100644 index bdc653b..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/deploy.md +++ /dev/null @@ -1,118 +0,0 @@ -# 搴旂敤閮ㄧ讲 -- - - -## 鐗堟湰 >= 1.3.0 - -### 璇蜂紭鍏堥槄璇� [idea鐜閰嶇疆](/ruoyi-cloud-plus/quickstart/idea_environment.md) - -## 鎵嬪姩閮ㄧ讲 - -鍦ㄦ湇鍔″櫒瀹夎 `mysql` `redis` `nginx` `minio` 绛夊叾浠栫粍浠� - -灏嗛」鐩唴 `docker/` 鏂囦欢澶逛笅鐨勬枃浠跺唴瀹� 鏀惧埌瀵瑰簲鐨勭粍浠跺唴<br> -渚嬪: 灏嗛」鐩唴 `docker/nginx/nginx.conf` 閰嶇疆鏂囦欢 澶嶅埗鍒� `nginx` 閰嶇疆鍐�<br> -灏嗛」鐩唴 `docker/redis/redis.conf` 閰嶇疆鏂囦欢 澶嶅埗鍒� `redis` 閰嶇疆鍐�<br> - -骞朵慨鏀圭浉鍏冲弬鏁板 `鍓嶇椤甸潰瀛樻斁浣嶇疆` `鍚庣Ip鍦板潃` 绛変娇鍏剁敓鏁� - -jar鍖呴儴缃插悗绔湇鍔� 鎵撳寘鍛戒护濡備笅 -```mvn -mvn clean install -D maven.test.skip=true -P prod -``` -鍓嶇鍙傝�冧笅鏂瑰墠绔儴缃茬珷鑺� - - -## docker 鍚庣閮ㄧ讲 - -### 璇蜂紭鍏堥槄璇� [idea鐜閰嶇疆](https://gitee.com/dromara/RuoYi-Cloud-Plus/wikis/pages?sort_id=5985190&doc_id=2056143) - -**閲嶇偣: 涓�鐭ュ崐瑙g殑蹇呯湅** -> [docker瀹夎](https://lionli.blog.csdn.net/article/details/83153029)<br> -> [docker-compose瀹夎](https://lionli.blog.csdn.net/article/details/111220320)<br> -> [docker缃戠粶妯″紡璁茶В](https://lionli.blog.csdn.net/article/details/109603785)<br> -> [docker 寮�鍚鍙� 2375 渚涘閮ㄧ▼搴忚闂甝(https://lionli.blog.csdn.net/article/details/92627962) - -### 灏嗛厤缃娇鐢‵TP涓婁紶鍒版牴鐩綍 -idea鎷栨嫿鏂囦欢鍒拌繙绋嬬洰褰曞嵆鍙笂浼�<br> - - -### 缁檇ocker鍒嗛厤鏂囦欢澶规潈闄� -**閲嶇偣娉ㄦ剰: 涓�瀹氳纭繚鐩綍 `/docker` 鍙婂叾鎵�鏈夊瓙鐩綍 鍏锋湁鍐欐潈闄� 濡傛灉鍚庣画鍑虹幇鏉冮檺寮傚父闂 閲嶆柊鎵ц涓�閬嶅垎閰嶆潈闄�** - -```shell -chmod -R 777 /docker -``` -### 鏋勫缓搴旂敤闀滃儚 - -**1.闇�瑕佸厛浣跨敤maven鎵撳寘鎴恓ar鍖�**<br> - - -**2.鎵ц鏋勫缓**<br> -> 椤圭洰鍒濆鍖栧悗浼氳嚜鍔ㄧ敓鎴愭瀯寤洪暅鍍忕殑杩愯閰嶇疆<br> -閰嶇疆濂絛ocker杩炴帴涔嬪悗 杩愯濡備笅鍗冲彲鏋勫缓瀵瑰簲鐨勫簲鐢ㄩ暅鍍� - -**閲嶇偣娉ㄦ剰: idea2024鍙婁互涓婄増鏈姹傚繀椤诲湪鏈湴瀹夎docker鎵嶅彲浠ユ墽琛屽涓嬫搷浣�** - - - - -**3.缁撴瀯璁茶В**<br> -鍙抽敭缂栬緫 鍗冲彲鐪嬪埌鍐呴儴閰嶇疆<br> - - - - - -### 鍒涘缓鍩虹鏈嶅姟 - -```shell -docker-compose up -d mysql nginx-web redis minio -``` - -### 鍒涘缓涓績鏈嶅姟(闇�瑕佸厛鏋勫缓鏈嶅姟闀滃儚) - -1.X -```shell -docker-compose up -d nacos seata-server sentinel ruoyi-monitor ruoyi-xxl-job-admin -``` - -2.X -```shell -docker-compose up -d nacos seata-server sentinel ruoyi-monitor ruoyi-snailjob-server -``` - -### 鍒涘缓涓氬姟鏈嶅姟(闇�瑕佸厛鏋勫缓鏈嶅姟闀滃儚) - -```shell -docker-compose up -d ruoyi-gateway ruoyi-auth ruoyi-system ruoyi-resource -``` - -### docker鍏朵粬鎿嶄綔(idea鐨刣ocker鎻掍欢 鎺ㄨ崘浣跨敤) - - - -## 鍓嶇閮ㄧ讲 - -鎵ц鎵撳寘鍛戒护 -```shell -# 鎵撳寘姝e紡鐜 -npm run build:prod -``` -鎵撳寘鍚庣敓鎴愭墦鍖呮枃浠跺湪 `ruoyi-ui/dist` 鐩綍<br> -灏� `dist` 鐩綍涓嬫枃浠�(涓嶅寘鍚� `dist` 鐩綍) 涓婁紶鍒伴儴缃叉湇鍔″櫒 `docker/nginx/html` 鐩綍涓�(鎵嬪姩閮ㄧ讲鏀惧叆鑷繁閰嶇疆鐨勮矾寰勫嵆鍙�)<br> -<br> -閲嶅惎 `nginx` 鏈嶅姟鍗冲彲 - - -### 濡傞渶鏇存敼鍚庣浠g悊璺緞鎴栬�呭悗绔痠p鍦板潃鐨勮瘽寰�涓嬬湅 - -鏇存敼`nginx.conf`閰嶇疆鏂囦欢浠g悊璺緞(娉ㄦ剰: /寮�澶�/缁撳熬) - - - -鏇存敼鍓嶇`.env.鐜` 鏂囦欢鍐呯殑 `VITE_APP_BASE_API` - - - -鏇存敼`nginx.conf`閰嶇疆鏂囦欢鍚庣ip鍦板潃 - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/extend_project.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/extend_project.md deleted file mode 100644 index 8d68fa4..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/extend_project.md +++ /dev/null @@ -1,42 +0,0 @@ -# 鍩轰簬 RuoYi-Cloud-Plus 鐨勬墿灞曢」鐩垪琛� -- - - -### 绮惧搧PR 娆㈣繋鎶曠 -| 鍔熻兘浠嬬粛 | PR鍦板潃 | -|-------------------------------------|------------------------------------------------------| -| 鎷栨嫿鍥剧墖璋冩暣鏄剧ず椤哄簭 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/173 | -| 澧炲姞Jasypt鍔犲瘑搴撳閰嶇疆鏂囦欢鍔犲瘑 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/177 | -| 浣跨敤瀵屾枃鏈瑆angeditor5鏇挎崲Quill | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/213 | -| sentinel鎸佷箙鍖杗acos鍔ㄦ�佹洿鏀� | https://gitee.com/dromara/RuoYi-Cloud-Plus/pulls/37 | -| 闆嗘垚screw鏁版嵁搴撴枃妗e姛鑳芥ā鍧� | https://gitee.com/dromara/RuoYi-Cloud-Plus/pulls/42 | -| Excel瀵煎叆妯℃澘澧炲姞鎵规敞鏀寔 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/222 | -| 鍘嬬缉鍖呭鐞嗗伐鍏� 鏀寔鏈湴鏂囦欢/鐩綍+oss鏂囦欢/缃戠粶鏂囦欢娣峰悎 | https://gitee.com/dromara/RuoYi-Cloud-Plus/pulls/44 | -| 娣诲姞websocket妯″潡 鏀寔satoken閴存潈 | https://gitee.com/dromara/RuoYi-Cloud-Plus/pulls/65 | -| 鏁版嵁搴撳瓧娈靛姞瑙e瘑(鏀寔 base64 aes rsa sm2 sm4) | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/274 | -| 澧炲姞liquibase杩佺Щ鏁版嵁搴� | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/299 | -| 澧炲姞OSS妯″潡鏀寔鏈湴鐜 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/353 | -| 鎵╁睍妯″潡鐙珛闆嗘垚flyway | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/439 | -| 鎵╁睍妯″潡鐙珛闆嗘垚go-view澶у睆鐪嬫澘 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/445 | -| 鍩轰簬AmazonS3鍗忚鐨勫垎鐗囦笂浼� | https://gitee.com/dromara/RuoYi-Cloud-Plus/pulls/130 | -| 鎵╁睍forest http瀹㈡埛绔� 澹版槑寮廻ttp璇锋眰 浜屾灏佽鍍忓伐鍏风被 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/547 | -| 澧炲姞鐭摼鎺ョ敓鎴愬伐鍏� | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/515 | -| 鏂板oss棰勭鍚嶄笂浼犲伐鍏风粍鍚堜娇鐢ㄥ紓姝ュ鎴风鍒嗙墖 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/522 | -| 鏂板瑙勫垯寮曟搸LiteFlow锛孲QL鎸佷箙鍖栨帴鍏ワ紝鏀寔鍙鍖栭〉闈� | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/552 | -| 涓�閿儴缃插埌绉佹湁Nexus浠撳簱 | https://gitee.com/dromara/RuoYi-Cloud-Plus/pulls/181 | -| 鏈嶅姟鐘舵�佺洃鎺у彂閫侀偖浠堕拤閽夌瓑 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/568 | -| 鐧诲綍楠岃瘉鏀寔2FA楠岃瘉 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/578 | - -### 娆㈣繋鎶曠 椤圭洰浠嬬粛+椤圭洰鍦板潃 - - -| 椤圭洰浠嬬粛 | 椤圭洰鍦板潃 | -|--------------------------------|-------------------------------------------------------------------------| -| 鍒嗗竷寮忛泦缇ゆ墿灞� | https://gitee.com/dromara/RuoYi-Vue-Plus | -| Plus瀛︿範绗旇(甯歌鍔熻兘) | https://zhonglingyuxiu1028.github.io/zlyx-space/#/ruoyi-vue-plus/home | -| Plus瀛︿範绗旇(寰湇鍔$粍浠�) | https://zhonglingyuxiu1028.github.io/zlyx-space/#/ruoyi-cloud-plus/home | -| 鍩轰簬uniapp+TmUI浠�0寮�鍙� 鏀寔H5/灏忕▼搴�/瀹夊崜 | https://gitee.com/dapppp/ruoyi-plus-miniapp | -| 鍩轰簬RuoYi-App妗嗘灦浜屾淇敼浣跨敤Uniapp+Vue3 | https://gitee.com/wangying110166/ruo-yi-uni-app-plus | -| 鍩轰簬RuoYi-App妗嗘灦瀵规帴Plus鍚庣 | https://gitee.com/FnTop/RuoYi-App-Plus | -| 鍩轰簬vben(ant-design-vue)鍓嶇椤圭洰 | https://gitee.com/dapppp/ruoyi-plus-vben | -| 鍩轰簬vue-next-admin鐨剉ue3+ts鍓嶇 | https://gitee.com/thiszhc/RuoYi-Vue3-UI | -| MybatisFlex鐗堟湰 | https://gitee.com/yhan219/ruoyi-cloud-flex | - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/idea_environment.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/idea_environment.md deleted file mode 100644 index 25a5fa3..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/idea_environment.md +++ /dev/null @@ -1,38 +0,0 @@ -# idea鐜閰嶇疆 -- - - -## 閰嶇疆椤圭洰缂栫爜 - - -## 閰嶇疆杩愯鐪嬫澘 - -### 閰嶇疆spring涓巇ocker鐪嬫澘 - - - - - -## 閰嶇疆鏈嶅姟鍣⊿SH杩炴帴 -杩涘叆 `Settings -> Tools -> SSH Configurations` 鐐瑰嚮鍔犲彿鍒涘缓SSH杩炴帴閰嶇疆<br> -濉啓 鏈嶅姟鍣↖P 鐢ㄦ埛鍚� 瀵嗙爜 绔彛鍙� 鐐瑰嚮 Test Connection 娴嬭瘯杩炴帴<br> - -浣跨敤Terminal 宸ュ叿 鐐瑰嚮绠ご鎵惧埌涓婃柟鍒涘缓鐨凷SH杩炴帴閰嶇疆<br> -閫夋嫨鍗冲彲杩涘叆SSH杩炴帴鐣岄潰 鍦ㄨ繖閲屽彲浠ュ鏈嶅姟鍣ㄨ繘琛屽懡浠ゆ搷浣�<br> - - -## 閰嶇疆鏈嶅姟鍣‵TP杩炴帴 -杩涘叆 `Settings -> Build-> Deployment` 鐐瑰嚮鍔犲彿 閫夋嫨SFTP 鍒涘缓 FTP 杩炴帴閰嶇疆<br> -閫夋嫨涔嬪墠鍒涘缓濂界殑SSH閰嶇疆 鐐瑰嚮 Test Connection 娴嬭瘯杩炴帴<br> - -鍦↖DEA涓婃柟宸ュ叿鏍� 鎵惧埌 `Tools -> Deployment -> Browse Remote Host` 鎵撳紑杩滅▼鐣岄潰<br> -鐐瑰嚮绠ご鎵惧埌鎴戜滑涓婃柟閰嶇疆鐨凷FTP杩炴帴閰嶇疆 鍗冲彲杩炴帴鍒版湇鍔″櫒鐨勬枃浠剁洰褰�<br> - - -## 閰嶇疆Docker杩炴帴 -### 鍙搷浣滆繙绋媎ocker涓庢瀯寤轰笂浼燿ocker闀滃儚(浠f浛鍘熸潵maven docker鎻掍欢) -tcp杩炴帴闇�瑕佸紑鏀炬湇鍔″櫒2375绔彛<br> -ssh闇�瑕佷娇鐢ㄤ笂鏂圭殑SSH杩炴帴閰嶇疆<br> -寤鸿浣跨敤SSH杩炴帴<br> - -閰嶇疆濂戒箣鍚� 鍦ㄨ繍琛岀獥鍙d細澶氬嚭涓�涓狣ocker鍥炬爣 鍙屽嚮鍗冲彲杩炴帴杩滅▼docker<br> -鍙互鏌ョ湅瀹瑰櫒瀹炴椂鏃ュ織 鍚姩 閲嶅惎 鍋滄 绛夋搷浣�<br> - \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/init.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/init.md deleted file mode 100644 index f6d4fad..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/init.md +++ /dev/null @@ -1,102 +0,0 @@ -# 2.X椤圭洰鍒濆鍖� -- - - -### 椤圭洰鍒嗘敮璇存槑 - -`2.X` 涓诲垎鏀� 鏂�2.X鐗堟湰 绋冲畾鍙戝竷鍒嗘敮<br> -`dev` 寮�鍙戝垎鏀� 浠g爜闅忔椂鏇存柊 涓嶆帹鑽愪娇鐢� 缁忔祴璇曞悗浼氬彂甯冨埌涓诲垎鏀�<br> -`future/*` 鏂板姛鑳介瑙堝垎鏀� - -### 椤圭洰蹇呭鐜 -> 鎺ㄨ崘浣跨敤 `docker` 瀹夎 椤圭洰鍐呯疆 `docker` 缂栨帓鏂囦欢 - -**娉ㄦ剰: 绂佹浣跨敤 `oraclejdk`(鐢变簬spring鐨刡ug瀵艰嚧鎵撳寘杩愯浼氭姤閿�)** - -**Spring瀹樻柟鎺ㄨ崘浣跨敤JDK https://bell-sw.com/pages/downloads/** - - - -* openjdk-17/21 鎴� graalvm-community-jdk-17/21 [涓嬭浇鍦板潃](https://github.com/graalvm/graalvm-ce-builds/releases) 鐗堟湰 -* mysql 5.7 8.0 (鍏朵粬鐗堟湰鏈祴璇� 濡傚叾浠栫増鏈病闂 鍙互鍛婄煡鍜变滑) -* oracle >= 12c (鍏朵粬鐗堟湰鏈祴璇� 濡傚叾浠栫増鏈病闂 鍙互鍛婄煡鍜变滑) -* postgres 13 14 (鍏朵粬鐗堟湰鏈祴璇� 濡傚叾浠栫増鏈病闂 鍙互鍛婄煡鍜变滑) -* redis 5.X 6.X 7.X 鐢变簬妗嗘灦澶ч噺浣跨敤浜唕edis鐗规�� 鐗堟湰蹇呴』 >= 5.X ([win redis 涓嬭浇鍦板潃](https://github.com/zkteco-home/redis-windows)) -* minio 鏈湴鏂囦欢瀛樺偍 鎴� 闃块噷浜� 鑵捐浜� 涓冪墰浜戠瓑涓�鍒囨敮鎸丼3鍗忚鐨勪簯瀛樺偍 -* maven >= 3.8.X -* nodejs 18.18 (鍏朵粬鐗堟湰鏈祴璇� 濡傚叾浠栫増鏈病闂 鍙互鍛婄煡鍜变滑) -* npm >= 8.X (7.X纭鏈夐棶棰�) -* idea 2022 2024 (涓�瀹氫笉瑕佷娇鐢�2023鍚庢灉鑷礋 bug澶褰卞搷椤圭洰寮�鍙�) -* nacos >= 2.X(妗嗘灦宸茬粡鍐呯疆 閲囩敤nacos瀹樻柟jar鍖�) -* sentinel 妗嗘灦鍐呯疆(閲囩敤sentinel瀹樻柟jar鍖�) -* seata 妗嗘灦鍐呯疆(閲囩敤seata瀹樻柟jar鍖�) - -### 闇�鍕鹃�� maven 瀵瑰簲鐜 - - - -### 榛樿 `JDK17` 濡傛湁鍙樺姩 闇�鏇存敼浠ヤ笅閰嶇疆 - - - - -### sql瀵煎叆 - -灏唖ql瀵煎叆鍒颁笌sql鏂囦欢鍚嶅搴旂殑鏁版嵁搴�(涓嶈鏀惧埌涓�涓簱涓�)<br> -榛樿鏁版嵁搴撲负mysql濡傞渶浣跨敤鍏朵粬鏁版嵁搴� 鐪嬭繖閲� => [澶氭暟鎹簱鏁版嵁婧怾(../framework/extend/dynamic_datasource.md)<br> - - - -### 浣跨敤鍐呯疆 `ruoyi-naocs` 鏈嶅姟 浠庤繖寮�濮� - -> 鏇存敼 ruoyi-nacos 鏁版嵁搴撳湴鍧� - - - -<font size="4">**鍏朵綑娴佺▼鍚屼笅鏂规楠や竴鑷�**</font> - -### 鑷缓 Nacos 浠庤繖寮�濮� - -<font size="4">**Nacos 鏁版嵁搴撴寚鍚� ry-config 鏁版嵁搴�(姝ゅ閲嶇偣: 姝ゆ暟鎹簱涓哄畾鍒舵暟鎹� 鏈娇鐢ㄦ搴撲細鏃犳硶璇诲彇閰嶇疆)**</font> - -> 灏嗛」鐩� `config/nacos` 涓嬫墍鏈夐厤缃� 澶嶅埗鍒� `nacos` 鍐�(寤鸿鎵嬪姩澶嶅埗鍐呭 闃叉缂栫爜涓嶄竴鑷撮棶棰�) - -**娉ㄦ剰: 涓嶆噦灏变笉瑕佷贡鏀归厤缃枃浠跺唴瀹� 妗嗘灦鍐呮墍鏈夊姛鑳介兘鏄厤缃ソ鐨�!!!涓嶈鐢昏泧娣昏冻**<br> -**娉ㄦ剰: 涓嶆噦灏变笉瑕佷贡鏀归厤缃枃浠跺唴瀹� 妗嗘灦鍐呮墍鏈夊姛鑳介兘鏄厤缃ソ鐨�!!!涓嶈鐢昏泧娣昏冻**<br> -**娉ㄦ剰: 涓嶆噦灏变笉瑕佷贡鏀归厤缃枃浠跺唴瀹� 妗嗘灦鍐呮墍鏈夊姛鑳介兘鏄厤缃ソ鐨�!!!涓嶈鐢昏泧娣昏冻**<br> - - - - -> 鏇存敼 `涓籶om鏂囦欢` 瀵瑰簲鐜鐨� `nacos` 鍦板潃 - - - -### 鏇存敼 `Nacos` 鑷畾涔夐厤缃� - -**蹇犲憡: 寰湇鍔¢厤缃浉褰撳鏉� 璇峰嬁鍦ㄤ笉鎳傚師鐞嗙殑鎯呭喌涓嬩贡鏀�**<br> -**蹇犲憡: 寰湇鍔¢厤缃浉褰撳鏉� 璇峰嬁鍦ㄤ笉鎳傚師鐞嗙殑鎯呭喌涓嬩贡鏀�**<br> -**蹇犲憡: 寰湇鍔¢厤缃浉褰撳鏉� 璇峰嬁鍦ㄤ笉鎳傚師鐞嗙殑鎯呭喌涓嬩贡鏀�**<br> - -> `application-common.yml` 鏇存敼 - - - -> `datasource.yml` 鏇存敼 - - - -> `seata-server.properties` 鏇存敼 - - - -### 浣跨敤鍐呯疆 `ruoyi-seata-server` 鏈嶅姟 浠庤繖寮�濮� - -鎵ц `ry-seata.sql` 鏂囦欢 鍒濆鍖栨湇鍔$鏁版嵁搴�<br> -淇敼 `nacos` 鍐呯殑 `seata-server.properties` 鐨勬暟鎹簱鍦板潃<br> -鍚姩 `ruoyi-seata-server` 鏈嶅姟鍗冲彲 - -### 鏈嶅姟鍚姩椤哄簭璇存槑 - -1. 蹇呴』鍚姩鍩虹寤鸿: mysql redis nacos<br> -2. 鍙�夊惎鍔ㄥ熀纭�寤鸿: minio(褰卞搷鏂囦欢涓婁紶) seata(褰卞搷鍒嗗竷寮忎簨鍔� 榛樿寮�鍚�) sentinel(褰卞搷鐔旀柇闄愭祦) monitor(褰卞搷鐩戞帶) snailjob(褰卞搷瀹氭椂浠诲姟)<br> -3. 蹇呴』鍚姩搴旂敤鏈嶅姟: gateway auth system<br> -4. 鍙�夊惎鍔ㄥ簲鐢ㄦ湇鍔�: resource(褰卞搷璧勬簮浣跨敤 websocket 鏂囦欢涓婁紶 閭欢 鐭俊绛�) workflow(宸ヤ綔娴�) gen(浠g爜鐢熸垚) job(褰卞搷瀹氭椂浠诲姟) demo(褰卞搷demo浣跨敤) diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/power_job_init.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/power_job_init.md deleted file mode 100644 index 907c7fc..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/power_job_init.md +++ /dev/null @@ -1,33 +0,0 @@ -# 鎼缓PowerJob浠诲姟璋冨害涓績(2.X鍒嗘敮宸插簾寮�) -- - - -### 搴熷純鍘熷洜 - -鎺ュ埌澶ч噺鎶曡瘔 浣跨敤鍥伴毦 鐢ㄦ硶璇″紓 鍚勭闂绛� - -### 閰嶇疆璋冨害涓績瀹㈡埛绔� -> 鏌ョ湅ruoyi-job閰嶇疆鏂囦欢(榛樿鎯呭喌涓嬫棤闇�鍋氫换浣曟洿鏀�) -> - - -* `enabled` 鍙惎鐢ㄦ垨鍏抽棴瀹㈡埛绔敞鍐� -* `server-address` 涓鸿皟搴︿腑蹇冨湴鍧� -* `server-name` 涓鸿皟搴︿腑蹇冩湇鍔″悕 -* `app-name` 涓烘墽琛屽櫒缁勮处鎴峰悕(闇�鍦ㄨ皟搴︿腑蹇冩敞鍐屾柟鍙櫥褰曟煡鐪�) - -### 鍚敤璋冨害涓績 -**闇�鎵ц ry-job.sql 榛樿璐﹀彿瀵嗙爜 `ruoyi-worker` `123456` 璐﹀彿鍦ㄦ暟鎹簱閲� 鍙互鍦ㄩ〉闈慨鏀瑰瘑鐮�** -<br> - - - -> 鍦� `ruoyi-visual -> ruoyi-powerjob-server` 鍚姩 -> - - -> 闇�淇敼閰嶇疆鏂囦欢鏁版嵁搴撹繛鎺ュ湴鍧�(**娉ㄦ剰: 姝ゅ涓簉uoyi-powerjob-server鏈嶅姟鐨勯厤缃枃浠�**) -> - - -> 涔熷彲閰嶇疆閭欢鍙戦�� 閽夐拤鎺ㄩ�� 鍜� mongodb瀛樺偍 -> - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/snail_job_init.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/snail_job_init.md deleted file mode 100644 index 25c21eb..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/snail_job_init.md +++ /dev/null @@ -1,38 +0,0 @@ -# 鎼缓SnailJob浠诲姟璋冨害涓績(2.2.0鏂板姛鑳�) -- - - - -### 瑙嗛浠嬬粛 - -[Snail job浠诲姟璋冨害涓績锛氳交鏉炬帉鎻′换鍔$鐞嗐�侀噸璇曟満鍒跺拰浠诲姟缂栨帓](https://www.bilibili.com/video/BV19i421m7GL/) - -### 閰嶇疆璋冨害涓績瀹㈡埛绔� -> 淇敼涓绘湇鍔¢厤缃枃浠� -> - - - -* `enabled` 鍙惎鐢ㄦ垨鍏抽棴瀹㈡埛绔敞鍐� -* `server.server-name` 涓鸿皟搴︿腑蹇冩湇鍔″悕(鑷姩浠嶯acos鑾峰彇鏈嶅姟 鏀寔鍔ㄦ�佹墿瀹硅皟搴︿腑蹇�) -* `server.address` 涓鸿皟搴︿腑蹇冨湴鍧�(鏈嶅姟鍚嶄紭鍏� ip鍨簳) -* `server.port` 涓鸿皟搴︿腑蹇冮�氫俊绔彛 -* `token` 涓虹粍閫氫俊鏍¢獙token(鍙湪璋冨害涓績缁勯厤缃洿鎹�) -* `group-name` 涓烘墽琛屽櫒缁� -* `namespace` 浣滅敤鍩�(涓嶅悓浣滅敤鍩熺浉浜掗殧绂昏鍕垮~閿�) - -### 鍚敤璋冨害涓績 -**闇�鎵ц ruoyi-job.sql 榛樿璐﹀彿瀵嗙爜 `admin` `admin` 璐﹀彿鍦ㄦ暟鎹簱閲� 鍙互鍦ㄩ〉闈慨鏀瑰瘑鐮�** -<br> - - - -> 鍦� `ruoyi-visual -> ruoyi-snailjob-server` 妯″潡鍚姩 -> - - -> 闇�淇敼閰嶇疆鏂囦欢鏁版嵁搴撹繛鎺ュ湴鍧�(**娉ㄦ剰: 姝ゅ涓簉uoyi-snailjob-server鏈嶅姟鐨勯厤缃枃浠� 鏀寔澶氱涓嶅悓鏁版嵁搴�**) -> - - -### 蹇�熷叆闂� - -[Snailjob蹇�熷叆闂� 鍩烘湰浣跨敤浠嬬粛](https://juejin.cn/post/7412955032092442675) \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/worker_init.md b/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/worker_init.md deleted file mode 100644 index 121a094..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/worker_init.md +++ /dev/null @@ -1,52 +0,0 @@ -# 宸ヤ綔娴佸垵濮嬪寲 -- - - - -### 娉ㄦ剰浜嬮」 - -璁剧疆 RabbitMQ 閰嶇疆 `application-common.yml` 閰嶇疆鏂囦欢 (鍙娇鐢ㄥ叾浠栦緥濡� kafka銆乺ocketmq 璇﹁ ruoyi-common-bus 妯″潡) - -姝ゅ姛鑳界敤浜庤法鏈嶅姟鍚屾娴佺▼涓庝笟鍔$姸鎬� MQ瀹夎鏂瑰紡鍙弬鑰冩枃妗f墿灞曞姛鑳� - - - - -### 宸ヤ綔娴佷娇鐢ㄥ強閰嶇疆鏂瑰紡 - -1.鎵惧埌椤圭洰涓璪pmn鏂囦欢澶� - - - -2.鍚姩椤圭洰鎵惧埌娴佺▼瀹氫箟閫氳繃**閮ㄧ讲娴佺▼鏂囦欢**灏哹pmn鏂囦欢澶逛笅**妯″瀷.zip**涓婁紶 - - - - - -3.瀵煎叆**妯″瀷.zip**鍚庡皢浼氬嚭鐜颁互涓嬪垪琛紝榛樿浣跨敤**leave1**锛宼est_leave涓鸿鍋囩敵璇疯〃鍚嶇О - - - - - -**姝ゅ琛ㄥ悕鐢辨潵涓庤〃鍗曟簮鐮佸唴缂栧啓鐨勮〃鍚嶄繚鎸佷竴鑷存柟鍙簰鐩哥粦瀹�** - - - - -4.鏂板涓�鏉¤鍋囩敵璇凤紝鎻愪氦鍚庡皢浼氬緱鍒板涓嬩俊鎭� - - - - - -5.鍏充簬濡備綍鍒囨崲涓�涓柊鐨勬祦绋嬩娇鐢紝褰撳墠榛樿浣跨敤寰桲EY涓簂eave1 锛屾垜浠垏鎹㈠埌leave2浣跨敤锛屾垜浠彧闇�鐐瑰嚮缁戝畾涓氬姟灏嗚〃鍚嶇粦瀹氾紝閲嶆柊鍙戣捣涓�涓柊鐨勮鍋囩敵璇峰氨鍙互寰楀埌涓�涓柊鐨勬祦绋嬩俊鎭� - - - - - -**姝ゅ琛ㄥ悕鐢辨潵涓庤〃鍗曟簮鐮佸唴缂栧啓鐨勮〃鍚嶄繚鎸佷竴鑷存柟鍙簰鐩哥粦瀹�** - - - - \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/_sidebar.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/_sidebar.md deleted file mode 100644 index 9fd7aad..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/_sidebar.md +++ /dev/null @@ -1,64 +0,0 @@ -<!-- _sidebar.md --> -- **鐗瑰埆璧炲姪** -- [](http://ccflow.org/?frm=ryPlus) -- [](http://www.shuduokeji.com) -- [](https://www.jnpfsoft.com/index.html?from=plus-doc) - - -* **绠�浠�** - * [椤圭洰绠�浠媇(/ruoyi-vue-plus/home.md) - * [鏇存柊鏃ュ織](/ruoyi-vue-plus/changlog.md) -* **蹇�熷紑濮�** - * [椤圭洰鍒濆鍖朷(/ruoyi-vue-plus/quickstart/init.md) - * [5.X鏂板姛鑳戒粙缁峕(/ruoyi-vue-plus/quickstart/5.Xnew.md) - * [4.X椤圭洰鍒濆鍖朷(/ruoyi-vue-plus/quickstart/4.Xinit.md) - * [宸ヤ綔娴佸垵濮嬪寲](/ruoyi-vue-plus/quickstart/worker_init.md) - * [鎼缓Admin鐩戞帶](/ruoyi-vue-plus/quickstart/admin_init.md) - * [鎼缓SnailJob璋冨害涓績](/ruoyi-vue-plus/quickstart/snail_job_init.md) - * [(搴熷純)鎼缓PowerJob璋冨害涓績](/ruoyi-vue-plus/quickstart/power_job_init.md) - * [(搴熷純)鎼缓XXLJob璋冨害涓績](/ruoyi-vue-plus/quickstart/xxl_job_init.md) - * [idea鐜閰嶇疆](/ruoyi-vue-plus/quickstart/idea_environment.md) - * [搴旂敤閮ㄧ讲](/ruoyi-vue-plus/quickstart/deploy.md) - * [鎵╁睍椤圭洰](/ruoyi-vue-plus/quickstart/extend_project.md) -* **妗嗘灦鍔熻兘** - * [椤圭洰缁撴瀯](/ruoyi-vue-plus/framework/tree.md) - * [杞欢鏋舵瀯鍥綸(/ruoyi-vue-plus/framework/architecture_diagram.md) - * 妗嗘灦鐩稿叧 - * [鍒涘缓鏂版ā鍧梋(/ruoyi-vue-plus/framework/association/new_module.md) - * [淇敼鍖呭悕](/ruoyi-vue-plus/framework/association/update_package_name.md) - * [鎺ュ彛鏂囨。](/ruoyi-vue-plus/framework/association/doc.md) - * [淇敼搴旂敤璺緞](/ruoyi-vue-plus/framework/association/update_url.md) - * [鍥介檯鍖朷(/ruoyi-vue-plus/framework/association/i18n.md) - * 鍩虹鍔熻兘 - * [绯荤粺鐢ㄦ埛鐩稿叧](/ruoyi-vue-plus/framework/basic/user.md) - * [鏉冮檺鎺у埗](/ruoyi-vue-plus/framework/basic/permissions_control.md) - * [瀵煎嚭鍔熻兘](/ruoyi-vue-plus/framework/basic/export.md) - * [瀵煎叆鍔熻兘](/ruoyi-vue-plus/framework/basic/import.md) - * [鍙傛暟鏍¢獙](/ruoyi-vue-plus/framework/basic/param_check.md) - * [浠g爜鐢熸垚](/ruoyi-vue-plus/framework/basic/code_generate.md) - * [鍒嗛〉鍔熻兘](/ruoyi-vue-plus/framework/basic/page.md) - * [OSS鍔熻兘](/ruoyi-vue-plus/framework/basic/oss.md) - * [鏁版嵁鏉冮檺](/ruoyi-vue-plus/framework/basic/permissions.md) - * [鎺ュ彛鏀捐](/ruoyi-vue-plus/framework/basic/interface_release.md) - * [澶氱鎴峰姛鑳絔(/ruoyi-vue-plus/framework/basic/tenant.md) - * [绗笁鏂规巿鏉冨姛鑳絔(/ruoyi-vue-plus/framework/basic/social.md) - * [瀹㈡埛绔鐞嗗姛鑳絔(/ruoyi-vue-plus/framework/basic/client.md) - * 鎵╁睍鍔熻兘 - * [澶氭暟鎹簮](/ruoyi-vue-plus/framework/extend/dynamic_datasource.md) - * [鐭俊妯″潡](/ruoyi-vue-plus/framework/extend/sms.md) - * [閭欢鍔熻兘](/ruoyi-vue-plus/framework/extend/mail.md) - * [闃查噸骞傜瓑](/ruoyi-vue-plus/framework/extend/idempotent.md) - * [鏁版嵁鑴辨晱](/ruoyi-vue-plus/framework/extend/sensitive.md) - * [API鍔犺В瀵哴(/ruoyi-vue-plus/framework/extend/api_encrypt.md) - * [鏁版嵁鍔犺В瀵哴(/ruoyi-vue-plus/framework/extend/encrypt.md) - * [缈昏瘧鍔熻兘](/ruoyi-vue-plus/framework/extend/translation.md) - * [WebSocket鍔熻兘](/ruoyi-vue-plus/framework/extend/websocket.md) - * [SSE鍔熻兘](/ruoyi-vue-plus/framework/extend/sse.md) - * [Skywalking閾捐矾鐩戞帶](/ruoyi-vue-plus/framework/extend/skywalking.md) - * [瀵规帴MaxKey鍗曠偣鐧诲綍](/ruoyi-vue-plus/framework/extend/maxkey.md) - * [瀵规帴TOPIAM鍗曠偣鐧诲綍](/ruoyi-vue-plus/framework/extend/topiam.md) - * 鍔熻兘璇存槑 - * [浜嬪姟鐩稿叧](/ruoyi-vue-plus/framework/explain/transaction.md) - * [鍗曞厓娴嬭瘯](/ruoyi-vue-plus/framework/explain/test.md) - * [涓婚敭浣跨敤璇存槑](/ruoyi-vue-plus/framework/explain/key.md) - * [鍏充簬澶氳〃鏌ヨ](/ruoyi-vue-plus/framework/explain/about_join.md) \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/changlog.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/changlog.md deleted file mode 100644 index ac8eb90..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/changlog.md +++ /dev/null @@ -1,2028 +0,0 @@ -# 鏇存柊鏃ュ織 -- - - - -## v5.2.2 - 2024-08-26 - -### 閲嶅ぇ鏀瑰姩 - -* 澧炲姞 ruoyi-common-sse 妯″潡 鏀寔SSE鎺ㄩ�� 姣攚s鏇磋交閲忔洿绋冲畾鐨勬帹閫� -* 澧炲姞 springboot snailjob 绛� actuator 璐﹀彿瀵嗙爜璁よ瘉 鏉滅粷鍐呭缃戜俊鎭硠婕忛棶棰� -* 澧炲姞 閲嶆瀯浠g爜鐢熸垚鍣� 闆嗘垚anyline寮�婧愭鏋� 鏀寔400+绉嶆暟鎹簱閫傞厤 - -### 渚濊禆鍗囩骇 - -* update springboot 3.2.6 => 3.2.9 -* update snailjob 1.0.1 => 1.1.2 -* update mapstruct-plus 1.4.3 => 1.4.4 -* update hutool 5.8.27 => 5.8.31 瑙e喅hutool涓嶅吋瀹筳akarta闂 -* update anyline 8.7.2-20240808 -* update sms4j 3.2.1 => 3.3.2 -* update redisson 3.31.0 => 3.34.1 -* update mapstruct-plus 1.3.6 => 1.4.3 -* update lombok 1.18.32 => 1.18.34 -* update easyexcel 3.3.4 => 4.0.2 -* update springdoc 2.5.0 => 2.6.0 -* update flowable 7.0.0 => 7.0.1 - -### 鍔熻兘鏇存柊 - -* update 浼樺寲 鍘婚櫎鏃ュ織閮ㄧ讲鐜鍒ゆ柇 閫氳繃鏃ュ織绾у埆鎺у埗 -* update 浼樺寲 蹇界暐绉熸埛涓庡拷鐣ユ暟鎹潈闄愭敮鎸佸祵濂椾娇鐢�(鎰熻阿 amadeus5201) -* update 浼樺寲 绉熸埛鐩稿叧controller 澧炲姞绉熸埛寮�鍏抽厤缃帶鍒舵槸鍚︽敞鍐� -* update 浼樺寲 绉婚櫎 alibaba ttl 涓庣嚎绋嬫睜鎼厤鏈夐棶棰�(鍙紶閫掍絾鏃犳硶娓呴櫎涓庢洿鏂�) -* update 浼樺寲 涓汉涓績缂栬緫 蹇界暐鏁版嵁鏉冮檺 -* update 浼樺寲 鍏煎閮ㄥ垎鐢ㄦ埛涓嶆兂缁欑敤鎴峰垎閰嶈鑹蹭笌閮ㄩ棬鐨勫満鏅� -* update 浼樺寲 绉熸埛濂楅閲嶅悕鏍¢獙 -* update 浼樺寲 閮ㄩ棬涓嬪瓨鍦ㄥ矖浣嶄笉鍏佽鍒犻櫎 -* update 浼樺寲 瑙掕壊缂栬緫鐘舵�佹湭鏍¢獙闂 -* update 浼樺寲 鐢ㄦ埛鑴辨晱澧炲姞缂栬緫鏉冮檺鏍囪瘑绗� -* update 浼樺寲 浠g爜鐢熸垚鍣� 鑷姩閫傞厤oss缈昏瘧 -* update 浼樺寲 涓存椂鍗囩骇 undertow 鐗堟湰 瑙e喅铏氭嫙绾跨▼婧㈠嚭闂 -* update 浼樺寲 鏀寔閫氳繃閰嶇疆鏂囦欢鍏抽棴宸ヤ綔娴� -* update 浼樺寲 澧炲姞mybatis-plus濉厖鍣ㄥ厹搴曠瓥鐣� -* update 浼樺寲 TenantSpringCacheManager 澶勭悊閫昏緫 -* update 浼樺寲 瑙掕壊鏉冮檺鍒ゆ柇 -* update 浼樺寲 澧炲姞鍒犻櫎鏍囧織浣嶅父閲忎紭鍖栨煡璇唬鐮� -* update 浼樺寲 鐩戞帶浣跨敤鐙珛web渚濊禆 -* update 浼樺寲 鏇村鑴辨晱绛栫暐(鎰熻阿 hemengji) -* update 浼樺寲 璁剧疆nginx sse鐩稿叧浠g悊鍙傛暟 -* update 浼樺寲 璋冩暣榛樿鎺ㄩ�佷娇鐢⊿SE -* update 浼樺寲 Monitor鐩戞帶鏈嶅姟閫氱煡鍒嗙被鎵撳嵃(鎰熻阿 AprilWind) -* update 浼樺寲 闄愭祦娉ㄨВ 鍙堝啓key鍙堜笉鏄〃杈惧紡鐨勬儏鍐� -* update 浼樺寲 WorkflowUtils鏌ヨ鐢ㄦ埛淇℃伅鍙戦�佹秷鎭湭鏌ヨ閭欢鍜屾墜鏈哄彿(鎰熻阿 yanzy) -* update 浼樺寲 娉ㄩ噴鎺夊叾浠栨暟鎹簱 jdbc 渚濊禆 鐢辩敤鎴锋墜鍔ㄦ坊鍔� -* update 浼樺寲 oracle snailjob 鍏煎浣庣増鏈琽racle绱㈠紩鍚嶇О闀垮害闄愬埗 -* update 浼樺寲 鏁版嵁鏉冮檺鏀寔閫氳繃鑿滃崟鏍囪瘑绗﹁幏鍙栨暟鎹墍鏈夋潈 -* update 浼樺寲 鏁版嵁鏉冮檺鏀寔鑷畾涔夎繛鎺ョ -* update 浼樺寲 TestDemo 鍒犻櫎鍓嶆牎楠屾暟鎹潈闄� -* update 浼樺寲 鏇存崲docker闀滃儚搴曞眰绯荤粺 閬垮厤鏃犲瓧浣撴儏鍐� - -### 闂淇 - -* fix 淇 涓夋柟鐧诲綍鏋勫缓鍘婚櫎鏃犵敤浠g爜 -* fix 淇 澶氱嚎绋嬪鍚屼竴涓猻ession鍙戦�亀s娑堟伅鎶ラ敊闂 -* fix 淇 渚濊禆婕忔礊 闄愬埗閮ㄥ垎渚濊禆鐗堟湰 -* fix 淇 excel 鍩轰簬鍏朵粬瀛楁 鍚堝苟閿欒闂 -* fix 淇 涓�绾х紦瀛榢ey鏈尯鍒嗙鎴烽棶棰� -* fix 淇 id瀛楃涓叉牸寮忚浆鎹㈤敊璇棶棰� -* fix 淇 鐧诲嚭鏃犳硶姝g‘鍒犻櫎瀵瑰簲鐨勭鎴锋暟鎹棶棰� -* fix 淇 鐧诲綍閿欒閿佸畾涓嶅尯鍒嗙鎴烽棶棰� -* fix 淇 杞崲妯″瀷缂哄皯鍒嗙被瀛楁 -* fix 淇 鏉冮檺鏍囪瘑绗﹀鐞嗘湭璁剧疆鎴愬姛鐘舵�侀棶棰� -* fix 淇 鏃犳硶瀵煎叆 bpmn 绫诲瀷鏂囦欢闂 - -### 鍓嶇鏀瑰姩 - -* update element-plus 2.7.5 => 2.7.8 -* update vue 3.4.25 => 3.4.34 -* update vite 5.2.10 => 5.2.12 -* add 澧炲姞 浣跨敤 vueuse 缂栧啓 sse 鎺ㄩ�佸姛鑳� -* update 浼樺寲 浣跨敤鍖归厤妯″紡绠�鍖栭缂栬瘧閰嶇疆 -* update 浼樺寲 鏃堕棿鎼滅储缁勪欢缁熶竴 -* update 浼樺寲 oss 閰嶇疆鎸夐挳 浣跨敤ossConfig鏉冮檺鏍囪瘑绗︿笌oss鏉冮檺鍒嗙 -* update 浼樺寲 绫诲瀷鎶ラ敊闂 -* update 浼樺寲 鍒囨崲绉熸埛鍚庡埛鏂伴椤� -* update 浼樺寲 瀹炵幇琛ㄦ牸琛岄�変腑鍒囨崲 -* update 浼樺寲 浣跨敤 vueuse 閲嶆瀯 websocket 瀹炵幇 -* update 浼樺寲 浠g爜鐢熸垚鍣ㄧ紪杈戦〉绂佺敤缂撳瓨 闃叉鍚屾鍚庨〉闈笉鏇存柊闂 -* update 浼樺寲 璋冩暣榛樿鎺ㄩ�佷娇鐢⊿SE -* fix 淇 绉熸埛濂楅瀵煎嚭璺緞閿欒闂 -* fix 淇 鐧诲嚭鍚庨噸鏂扮櫥褰� sse鎺ㄩ�佹姤閿欓棶棰� - - -## v5.2.1 - 2024-07-09 - -### 鍔熻兘鏇存柊 - -* update 浼樺寲 鏇存敼prod鐜 snailjob鐘舵�� 榛樿鍚敤 -* update 浼樺寲 鏇挎崲杩囨湡鏂规硶 -* update 浼樺寲 绉熸埛鍒楄〃鎺ュ彛 閬垮厤鐧诲綍涔嬪悗鍒楄〃琚煙鍚嶈繃婊� -* update 浼樺寲 鑾峰彇鐢ㄦ埛璐︽埛鏂规硶 LoginHelper#getUsername(鎰熻阿 AprilWind) -* update 浼樺寲 鐢ㄦ埛ID鏌ヨ瑙掕壊鍒楄〃浠g爜瀹炵幇(鎰熻阿 AprilWind) -* update 浼樺寲 澶ф暟鎹噺涓媕oin鍗¢】闂 浣跨敤瀛愭煡璇㈡彁楂樻�ц兘 -* update 浼樺寲 淇敼璺敱name鍛藉悕瑙勫垯 闃叉閲嶅璺敱瑕嗙洊闂(鎰熻阿 鐜插璐漞r) -* update 浼樺寲 淇敼 snailjob 榛樿绔彛 閬垮厤涓庣郴缁熷唴缃鍙e啿绐侀棶棰� -* update 浼樺寲 isTenantAdmin 绌烘牎楠� -* update 浼樺寲 webscoket 閰嶇疆涓庡紓甯告嫤鎴� -* update 浼樺寲 鏇存柊 redis 瀵嗙爜绛栫暐(瀵嗙爜蹇呭~ 鍗囩骇闇�娉ㄦ剰) -* update 浼樺寲 鏇存柊浣跨敤 Spring 瀹樻柟鎺ㄨ崘 JDK -* update 浼樺寲 StreamUtils 鎶藉彇 findFirst findAny 鏂规硶 -* update 浼樺寲 宸ヤ綔娴佺浉鍏充唬鐮佹柟娉� - -### 闂淇 - -* fix 淇 postgres flowable sql 缂哄け瀛楁闂 -* fix 淇 鏂扮増涓婁紶鏈缃產cl闂 -* fix 淇 get璺緞鐗规畩瑙勫垯 瀵艰嚧 actuator 娉勬紡闂 [issue#4f9ceb0a](https://gitee.com/dromara/RuoYi-Vue-Plus/commit/4f9ceb0a8057284a0d9d69da58df630d8bc2e84f) -* fix 淇 pg鏁版嵁搴� 鐢ㄦ埛鏌ヨ鎶ラ敊闂 -* fix 淇 isLogin 鏂规硶鎶涘紓甯告棤娉曟甯歌繑鍥炲�奸棶棰� - -### 鍓嶇鏀瑰姩 - -* update 浼樺寲 宸ヤ綔娴侀�変汉鏀逛负鎳掑姞杞界獥鍙� -* update 浼樺寲 璺敱name閲嶅妫�鏌� -* update 浼樺寲 eslint 璇硶 -* update 浼樺寲 鍔ㄦ�佸垱寤虹粍浠跺疄渚嬫椂, 璁剧疆璺敱name涓虹粍浠跺悕 瑙e喅缂撳瓨闂 -* fix 淇 鐢变簬娌℃湁await 瀵艰嚧鎵ц椤哄簭涓嶅彲鎺� -* fix 淇 瀵屾枃鏈紪杈戝櫒 娣诲姞涔嬪悗鍐呭鏈竻鐞嗛棶棰� - -## v5.2.0 - 2024-06-20 - -### 閲嶅ぇ鏀瑰姩 - -* 闆嗘垚 flowable 澧炲姞宸ヤ綔娴佺浉鍏冲姛鑳�(鎰熻阿 May) -* 闆嗘垚 snailjob 绉婚櫎 powerjob(鎶曡瘔鐨勪汉澶浣跨敤鎴愭湰澶珮)(鎰熻阿 dhb52) -* 鍗囩骇 aws s3 鍗囩骇鍒� 2.X 鎬ц兘澶у箙鎻愬崌 -* 浼樺寲 鏁版嵁鏉冮檺 鏁版嵁鍔犲瘑 浣跨敤棰勬壂鎻弇apper娉ㄨВ鎻愬崌浠g爜鎬ц兘(鎰熻阿 鑰侀┈) -* 鏂板 caffeine 鍑忓皯灏嗚繎90%鐨剅edis鏌ヨ鎻愰珮鎬ц兘 - -### 渚濊禆鍗囩骇 - -* update springboot 3.1.7 => 3.2.6 鏀寔铏氭嫙绾跨▼ -* update springboot-admin 3.1.8 => 3.2.3 -* update mybatis-plus 3.5.4 => 3.5.7 閫傞厤鏇存敼浠g爜 -* update springdoc 2.2.0 => 2.5.0 -* update easyexcel 3.3.3 => 3.3.4 -* update redisson 3.24.3 => 3.31.0 -* update lombok 1.18.30 => 1.18.32 -* update sms4j 2.2.0 => 3.2.1 鏀寔鑷畾涔夐厤缃甼ey 鍙敤浜庡鍘傚晢澶氱鎴风瓑 -* update satoken 1.37.0 -> 1.38.0 -* update hutool 5.8.22 => 5.8.26 -* update mapstruct-plus 1.3.5 => 1.3.6 -* update lock4j 2.2.5 => 2.2.7 -* update dynamic-ds 4.2.0 => 4.3.1 - -### 鍔熻兘鏇存柊 - -* update 浼樺寲 涓夋柟鐧诲綍涓嶅悓鍩熷悕闂 閲囩敤鏂版柟妗� -* update 浼樺寲 鑾峰彇aop浠g悊鐨勬柟寮� 鍑忓皯涓庡叾浠栦娇鐢╝op鐨勫姛鑳藉啿绐佺殑姒傜巼 -* update 浼樺寲 token鏃犳晥鏃跺叧闂瓀s杩炴帴(鎰熻阿 AprilWind) -* update 浼樺寲 绉婚櫎琛ㄥ崟鏋勫缓鑿滃崟(娌℃湁鍙敤缁勪欢 鐢ㄥ涓嶅ぇ浠ュ悗鍐嶈�冭檻) -* update 浼樺寲 鍒囨崲鍔ㄦ�佺鎴� 榛樿绾跨▼鍐呭垏鎹�(濡傞渶鍏ㄥ眬 鎵嬪姩浼犲弬) -* update 浼樺寲 浠g爜鐢熸垚娉ㄩ噴锛屽垹闄ゆ棤鐢ㄥ紩鍏�(鎰熻阿 AprilWind) -* update 浼樺寲 浠g爜鐢熸垚 el-radio 鏍囩杩囨湡灞炴�� -* update 浼樺寲 寮傚父澶勭悊鍣ㄨ嚜鍔ㄩ厤缃� -* update 浼樺寲 鏂囦欢涓嬭浇浣跨敤瀵规祦涓嬭浇闄嶄綆鍐呭瓨浣跨敤(鎰熻阿 PhoenixL) -* update 浼樺寲 鍘婚櫎gc鏃ュ織鍙傛暟(鏈夐渶瑕佽嚜宸卞姞) -* update 浼樺寲 鎷嗗垎寮傚父澶勭悊鍣� -* update 浼樺寲 甯歌web寮傚父鐘舵�佺爜 -* update 浼樺寲 璁剧疆闈欐�佽祫婧愯矾寰勯槻姝㈡墍鏈夎姹傞兘鍙互璁块棶闈欐�佽祫婧� -* update 浼樺寲 redis 瀵筁ong鍊肩殑瀛樺偍绫诲瀷涓嶅悓闂 -* update 浼樺寲 鍘婚櫎鍔犲瘑璇锋眰绫诲瀷闄愬埗 -* update 浼樺寲 mp澶氱鎴锋彃浠舵敞鍏ラ�昏緫 -* update 浼樺寲 RedisUtils 鏀寔蹇界暐绉熸埛 -* update 浼樺寲 鏇存柊ip鍦板潃xdb鏂囦欢 -* update 浼樺寲 楠岃瘉鐮佽儗鏅壊鏀逛负娴呯伆鑹� -* update 浼樺寲 mybatis渚濊禆璁剧疆涓哄彲閫変緷璧� 閬垮厤鍑虹幇涓嶅簲璇ユ敞鍏ョ殑鎯呭喌 -* update 浼樺寲 GET 鏂规硶鍝嶅簲浣撴敮鎸佸姞瀵� -* update 浼樺寲 excel鎻掍欢鍚堝苟绛栫暐 鍘婚櫎琚悎骞跺崟鍏冩牸鐨勯潪棣栬鍐呭(鎰熻阿 鍙哥尗瀛�) -* update 浼樺寲 涓嬫媺閫夋帴鍙f暟鎹潈闄� -* update 浼樺寲 OssFactory 鑾峰彇瀹炰緥閿佹�ц兘 -* update 浼樺寲 浣跨敤缈昏瘧娉ㄨВ绠�鍖栫敤鎴锋煡璇� 璋冩暣鐢ㄦ埛鏌ヨ閫昏緫 -* update 浼樺寲 妗嗘灦鏁翠綋鎻愰珮鏌ヨ鎬ц兘 -* update 浼樺寲 灏唒6spy閰嶇疆鏂囦欢缁熶竴鏀剧疆鍒� common-mybatis 鎻掍欢鍖呭唴 - -### 鏂板鍔熻兘 - -* add 鏂板 鍒嗗竷寮忛攣Lock4j寮傚父鎷︽埅鍣� -* add 鏂板 涓汉涓績-鍦ㄧ嚎璁惧绠$悊 -* add 鏂板 宀椾綅缂栫爜涓庨儴闂ㄧ紪鐮佸苟灏嗗矖浣嶈皟鏁村埌閮ㄩ棬涓�(鎰熻阿 AprilWind) -* add 鏂板 BaseMapperPlus鎻愪緵鍙�夋槸鍚︽姏寮傚父selectVoOne鏂规硶(鎰熻阿 绉嬭緸鏈瘨) -* add 鏂板 鐢ㄦ埛銆侀儴闂ㄣ�佽鑹层�佸矖浣� 涓嬫媺閫夋帴鍙d笌浠g爜瀹炵幇浼樺寲 -* add 澧炲姞 StringUtils.isVirtual 鏂规硶 -* add 澧炲姞 JustAuth 鏁村悎 TopIam 鍗曠偣鐧诲綍 - -### 闂淇 - -* fix 淇 websocket clientid 鍙傛暟涓嶈蛋mvc鎷︽埅鍣� 鏃犳硶鐢熸晥闂 -* fix 淇 oss鏈娇鐢ㄧ鎴� 鎷兼帴绉熸埛id null闂 -* fix 淇 鐢ㄦ埛鏄电О淇敼鍚庢湭娓呴櫎瀵瑰簲缂撳瓨闂(鎰熻阿 zhuweitung) -* fix 淇 鍥剧墖棰勮闂(鎰熻阿 AprilWind) -* fix 淇 涓夋柟璐﹀彿鍙互缁戝畾澶氬钩鍙拌处鍙烽棶棰� -* fix 淇 涓诲缓閿欏埆瀛�(鎰熻阿 good) -* fix 淇 鍏煎redis5.0鍑虹幇鐨勯棶棰� -* fix 淇 閮ㄥ垎娴忚鍣ㄦ棤娉曡幏鍙栧姞瀵嗗搷搴斿ご闂 -* fix 淇 鐢ㄦ埛鏈缃儴闂� 鐧诲綍鎶ラ敊闂 -* fix 淇 excel 琛ㄨ揪寮忓瓧鍏� 涓嬫媺妗嗗鍑烘牸寮忛敊璇� -* fix 淇 鎻愬崌閿佺殑浣滅敤鍩� 骞堕噰鐢ㄥ弻閲嶆牎楠岄攣(鎰熻阿 fanc) -* fix 淇 鐢ㄦ埛鐧诲綍鏌ヨ閮ㄩ棬缂撳瓨鏃犳硶鑾峰彇绉熸埛id闂 -* fix 淇 鍏抽棴绉熸埛鍔熻兘 涓夋柟鐧诲綍鎶ラ敊闂 - - -### 鍓嶇鏀瑰姩 - -* update element-plus 2.7.5 -* update vite 5.2.10 -* update vue 3.4.25 -* update vue-router 4.3.2 -* update nodejs 鍗囩骇鍒版渶浣� 18.18.0 -* update 浼樺寲 璺熷瘑鐮佺浉鍏崇殑榛樿鍓嶇鍏抽棴闃查噸鍔熻兘 -* update 浼樺寲 鐐瑰嚮宸﹁竟鑿滃崟鏃堕〉闈㈢┖鐧芥垨鑰呭埛鏂版暣涓〉闈㈢殑闂 -* update 浼樺寲 el-select 涓� el-input 鍏ㄥ眬鏍峰紡 -* update 浼樺寲 棣栭〉鎵撳紑topNav涓嶅睍寮�鑿滃崟闂 -* update 浼樺寲 鏀寔鍏ㄥ眬寮�鍚垨鍏抽棴鎺ュ彛鍔犲瘑鍔熻兘 -* update 浼樺寲 瀵嗙爜鏍¢獙绛栫暐澧炲姞闈炴硶瀛楃闄愬埗 -* update 浼樺寲 鍥剧墖涓婁紶缁勪欢澧炲姞鍘嬬缉鍔熻兘鏀寔 鍙嚜琛屽紑鍏�(鎰熻阿 fengheguai) -* update 浼樺寲 request璇锋眰绫诲垽鏂姹傚ご鏂瑰紡 -* update 浼樺寲 鏇存敼瀹㈡埛绔姸鎬佹帴鍙� 浣跨敤clientId浼犲弬 -* update 浼樺寲 ws寮�鍏虫敼涓哄父寮�(vite5淇浜嗗穿婧僢ug) -* fix 淇 绉诲姩绔笅 鏃犳硶灞曞紑鑿滃崟闂 -* fix 淇 闈㈡澘鍥犱负min width鍘熷洜鏀剁缉涓嶅叏 -* fix 淇 鏂囦欢棰勮澶у啓鍚庣紑涓嶅睍绀虹殑闂(鎰熻阿 鍖楁ˉ) -* fix 淇 i18n鏃犳劅鍒锋柊闂 -* fix 淇 websocket 闈瀒ndex椤甸潰鍒锋柊鏃犳硶閲嶈繛闂 - -## v5.1.2 - 2023-12-22 - -### 渚濊禆鍗囩骇 - -* update springboot 3.1.5 => 3.1.7 -* update mybatis-boot 3.0.2 => 3.0.3 浼樺寲渚濊禆浼犻�� -* update powerjob 4.3.3 => 4.3.6 -* update easyexcel 3.3.2 => 3.3.3 -* update transmittable-thread-local 2.14.2 => 2.14.4 -* update justauth 1.16.5 => 1.16.6 -* update redisson 3.24.1 => 3.24.3 淇璁㈤槄閲嶅惎杩炴帴瓒呮椂闂 - -### 鍔熻兘鏇存柊 - -* update 浼樺寲 涓� admin 妯″潡 鍗曠嫭澧炲姞 ratelimiter 妯″潡 -* update 浼樺寲 楠岃瘉鐮佹帴鍙� 澧炲姞闄愭祦閰嶇疆 -* update 浼樺寲 excel鍚堝苟娉ㄨВ浼氭牴鎹涓�鍚堝苟鍒楃殑缁撴灉鏉ュ喅瀹氬悗缁殑鍒楀悎骞� (鎰熻阿 Simple) -* update 浼樺寲 SocialUtils 浠g爜 -* update 浼樺寲 鍒犻櫎鏃犵敤寮傚父绫� -* update 浼樺寲 琛ュ叏涓夋柟鐧诲綍鏍¢獙鍥介檯鍖� -* update 浼樺寲 sms缁勪欢 棰勭暀鑷姩閰嶇疆绫� -* update 鏇存柊 鍏充簬鏁版嵁搴撶殑璇存槑 -* update 浼樺寲 sms缁勪欢 棰勭暀鑷姩閰嶇疆绫� -* update 浼樺寲 灏� OSS閰嶇疆 鏀逛负鍏ㄥ眬妯″紡 闄嶄綆浣跨敤闅惧害 淇濈暀sql渚夸簬鐢ㄦ埛鑷鎵╁睍(甯歌椤圭洰鐢ㄤ笉涓婇厤缃垎澶氱鎴�) -* update 浼樺寲 缁嗗寲oss閰嶇疆绠$悊鏉冮檺鎺у埗 -* update 浼樺寲 寮�鍚� redisson 鑴氭湰缂撳瓨 鍑忓皯缃戠粶浼犺緭 -* update 浼樺寲 鍒犻櫎 hikaricp 瀹樻柟涓嶆帹鑽愪娇鐢ㄧ殑閰嶇疆 jdbc4 鍗忚鑷甫鏍¢獙鏂规硶 -* update 浼樺寲 鍑忓皯 PlusSaTokenDao 涓嶅繀瑕佺殑鏌ヨ浼樺寲鎬ц兘 -* update 浼樺寲 鏇存柊鐢ㄦ埛寮傚父鎻愮ず 浣跨敤鐧诲綍璐﹀彿 -* update 浼樺寲 浣跨敤鐧诲綍鐢ㄦ埛鍒ゆ柇鏄惁鐧诲綍 鎻愰珮鏁堢巼 -* update 浼樺寲 閲嶆瀯 LoginHelper 灏嗘湰鍦板瓨鍌ㄤ唬鐮佹搷浣滃皝瑁� -* update 浼樺寲 getTenantId 鍒ゆ柇鏄惁寮�鍚绉熸埛 -* update 浼樺寲 Dockerfile 浣跨敤shell妯″紡 鏀寔鐜鍙橀噺浼犲叆jvm鍙傛暟 -* update 浼樺寲 WebSocketUtils 杩炴帴鍏抽棴鏀逛负璀﹀憡 -* update 浼樺寲 excel澶歴heet椤靛鍑� (鎰熻阿 May) -* update 浼樺寲 鍒犻櫎鏃犵敤鎺ュ彛瀹炵幇 -* update 浼樺寲 jvm鍙傛暟璋冩暣 鍏ㄩ潰鍚敤zgc -* update 浼樺寲 浣跨敤鍔ㄦ�佺鎴烽噸鏋勪笟鍔″绉熸埛鐨勯�昏緫 -* update 浼樺寲 TenantHelper 鍔ㄦ�佺鎴锋敮鎸佸嚱鏁板紡鏂规硶 -* update 浼樺寲 鏀寔澶氱鎴风粦瀹氱浉鍚岀殑涓夋柟鐧诲綍 -* update 浼樺寲 鏇存柊鐢ㄦ埛鐧诲綍淇℃伅鏂规硶蹇界暐鏁版嵁鏉冮檺 -* update 浼樺寲 琛ュ叏涓夋柟缁戝畾鏃堕棿瀛楁 鍒犻櫎鏃犵敤excel娉ㄨВ -* update 浼樺寲 灏嗙櫥褰曡褰曟娊鍙栧埌鐩戝惉鍣ㄧ粺涓�澶勭悊 -* update 浼樺寲 绉熸埛鎻掍欢 ignoreTable 鏂规硶鏀寔鍔ㄦ�佺鎴� - -### 鏂板鍔熻兘 - -* add 鏂板 RedisUtils.setObjectIfExists 濡傛灉瀛樺湪鍒欒缃柟娉� -* add 鏂板 涓板瘜RedisUtils瀵筁ist Set绫诲瀷鐨勬搷浣� -* add 鏂板 缈昏瘧缁勪欢 鐢ㄦ埛鏄电О缈昏瘧瀹炵幇 -* add 鏂板 鍝嶅簲鍔犲瘑鍔熻兘 鏀寔娉ㄨВ寮哄埗鍔犲瘑鎺ュ彛鏁版嵁 (鎰熻阿 MichelleChung) - -### 闂淇 - -* fix 淇 selectDictTypeByType 鏌ヨ鏂规硶閿欒闂 -* fix 淇 涓�浜涗笉姝e父绫绘棤娉曞姞杞芥姤閿欓棶棰� -* fix 淇 powerjob sql鑴氭湰閽堝鍏朵粬鏁版嵁搴撹浆涔夌闂 (鎰熻阿 branches) -* fix 淇 MybatisSystemException 绌烘寚閽堥棶棰� -* fix 淇 excel鍚堝苟娉ㄨВ浼氭牴鎹涓�鍚堝苟鍒楃殑缁撴灉鏉ュ喅瀹氬悗缁殑鍒楀悎骞� -* fix 淇 session 澶氳处鍙峰叡鐢ㄨ鐩栭棶棰� 鏀逛负 tokenSession 鐙珛瀛樺偍 -* fix 淇 token 澶辨晥鍚� 鐧诲綍鑾峰彇鐢ㄦ埛null闂 -* fix 淇 powerjob閮ㄧ讲鏂规 楂樼増鏈琻ginx涓嶇敓鏁堥棶棰� -* fix 淇 OssFactory 骞跺彂澶氬垱寤哄疄渚嬮棶棰� -* fix 淇 寤惰繜闃熷垪鍦ㄦ姇閫掓秷鎭湭鍒拌揪鏃堕棿鐨勬椂鍊� 鏈嶅姟姝绘満瀵艰嚧閲嶅惎鏀朵笉鍒版秷鎭� - -### 鍓嶇鏀瑰姩 - -* update 浼樺寲 鐢ㄦ埛澶村儚 img 鍙橀噺鏃犵‘瀹氱被鍨嬮棶棰� -* update 浼樺寲 缁嗗寲oss閰嶇疆绠$悊鏉冮檺鎺у埗 -* update 浼樺寲 鏄庣‘鎵撳寘鍛戒护 -* update 浼樺寲 浠g爜涓瓨鍦ㄧ殑璀﹀憡 -* update 浼樺寲 鍓嶇鐧藉悕鍗曢〉闈㈡斁琛岄�昏緫 -* update 浼樺寲 椤甸潰鍏充簬鏉冮檺鏍囪瘑绗﹁鏄� -* fix 淇 append-to-body 缂栧啓閿欒 (鎰熻阿 Ai3_鍒樺皬榫�) -* fix 鍏抽棴鍔ㄦ�佽矾鐢眛ab椤电鏃朵笉娓呯悊缁勪欢缂撳瓨 (鎰熻阿 NickLuo) -* fix 鍒犻櫎閲嶅鐜鍙橀噺ElUploadInstance (鎰熻阿 妫夎姳) -* fix 淇 鍦ㄧ嚎鐢ㄦ埛 寮烘帹鎸夐挳鐐瑰嚮鍙栨秷鎺у埗鍙拌鍛婇棶棰� -* fix 淇 瀛楀吀浣跨敤 default 鏍峰紡鎶ヨ鍛婇棶棰� - -## v4.8.2 - 2023-11-27 - -### 渚濊禆鍗囩骇 - -* update springboot 2.7.17 => 2.7.18 鍗囩骇鍒�2.X鏈�缁堢増鏈�(瀹樻柟鍋滄洿) -* update mybatis-plus 3.5.3.2 => 3.5.4 -* update springboot 2.7.14 => 2.7.17 -* update satoken 1.36.0 => 1.37.0 -* update aws-java-sdk-s3 1.12.400 => 1.12.540 -* update vue-quill 1.1.0 => 1.2.0 - -### 鍔熻兘鏇存柊 - -* update 浼樺寲 椤甸潰鍏充簬鏉冮檺鏍囪瘑绗﹁鏄� -* update 浼樺寲 鏁版嵁鏉冮檺鎷︽埅鍣ㄤ紭鍏堝垽鏂柟娉曟槸鍚︽湁鏁� 鎻愰珮鎬ц兘鍑忓皯鏃犵敤sql瑙f瀽 -* update 浼樺寲 閮ㄩ棬鏁版嵁鏉冮檺浣跨敤榛樿鍏滃簳鏂规 -* update 浼樺寲 鏇存敼榛樿鏃ュ織绛夌骇涓篿nfo 閬垮厤鏃ュ織杩囧(鎸夐渶寮�鍚痙ebug) -* update 浼樺寲 琛ュ叏浠g爜鐢熸垚 columnList 鎺ュ彛鍙傛暟娉ㄨВ缂哄け -* update 浼樺寲 鎿嶄綔鏃ュ織 閮ㄩ棬淇℃伅瀹屽杽 vue3椤甸潰 -* update 浼樺寲 AddressUtils 鍏煎linux绯荤粺鏈湴ip -* update 浼樺寲 鎿嶄綔鏃ュ織 閮ㄩ棬淇℃伅瀹屽杽 (鎰熻阿 鏌忕) -* update 浼樺寲 鏁版嵁鏉冮檺 鍑忓皯浜屾鏍¢獙鏌ヨ -* update 浼樺寲 vue3 鐗堟湰鐢ㄦ埛鍒濆瀵嗙爜浠庡瓧鍏告煡璇� -* update 浼樺寲 瀵屾枃鏈珽ditor缁勪欢妫�楠屽浘鐗囨牸寮� -* update 浼樺寲 鎿嶄綔鏃ュ織鍒楄〃鏂板IP鍦板潃鏌ヨ -* update 浼樺寲 鍏ㄥ眬鏁版嵁瀛樺偍鐢ㄦ埛缂栧彿 -* update 浼樺寲 鑿滃崟绠$悊绫诲瀷涓烘寜閽姸鎬佸彲閫� - -### 闂淇 - -* fix 淇 OssFactory 骞跺彂澶氬垱寤哄疄渚嬮棶棰� -* fix 淇 demo鐨刦orm瀛楁鏈夎 (鎰熻阿 dhb52) -* fix 淇 寤惰繜闃熷垪鍦ㄦ姇閫掓秷鎭湭鍒拌揪鏃堕棿鐨勬椂鍊� 鏈嶅姟姝绘満瀵艰嚧閲嶅惎鏀朵笉鍒版秷鎭� -* fix 淇 鏁版嵁鏉冮檺浼樺寲鍚� update delete 鎶ull闂 -* fix 淇 浜旂骇璺敱缂撳瓨鏃犳晥闂 -* fix 淇 oss鏈嶅姟鏃犳硶杩炴帴 瀵艰嚧涓氬姟寮傚父闂 鏌ヨ涓嶅簲璇ュ奖鍝嶄笟鍔� -* fix 淇 鍐呴摼iframe娌℃湁浼犻�掑弬鏁伴棶棰� -* fix 淇 澶栭摼甯︾鍙e嚭鐜扮殑寮傚父 -* fix 淇 鏅�氳鑹茬紪杈戜娇鐢ㄥ唴缃鐞嗗憳code瓒婃潈闂 -* fix 淇 浠g爜鐢熸垚 鏄惁蹇呭~涓庢暟鎹簱涓嶅尮閰嶉棶棰� -* fix 淇 HeaderSearch缁勪欢璺宠浆query鍙傛暟涓㈠け闂 -* fix 淇 鏍戠粨鏋勪唬鐮佺敓鎴愭柊澧炴柟娉曡祴鍊奸敊璇� (鎰熻阿 杩欏澶╀緷鐒跺钩鍑�) - -## v5.1.1 - 2023-11-14 - -### 渚濊禆鍗囩骇 - -* update springboot 3.1.3 => 3.1.5 -* update springboot 2.7.14 => 2.7.17(鎵╁睍鏈嶅姟) -* update springboot-admin 3.1.5 => 3.1.7 -* update satoken 1.35.0.RC => 1.37.0 -* update mybatis-plus 3.5.3.2 => 3.5.4 閫傞厤mp鏂扮増鏈敼鍔� -* update dynamic-ds 4.1.3 => 4.2.0 -* update bouncycastle 1.72 => 1.76 -* update poi 5.2.3 => 5.2.4 -* update redisson 3.23.2 => 3.24.1 -* update hutool 5.8.20 => 5.8.22 -* update lombok 1.18.26 => 1.18.30(閫傞厤鏀寔jdk21) -* update vue-quill 1.1.0 => 1.2.0 - -### 鍔熻兘鏇存柊 - -* update 浼樺寲 鏁版嵁鏉冮檺鎷︽埅鍣ㄤ紭鍏堝垽鏂柟娉曟槸鍚︽湁鏁� 鎻愰珮鎬ц兘鍑忓皯鏃犵敤sql瑙f瀽 -* update 浼樺寲 閫傞厤 maxkey 鏂扮増鏈� -* update 浼樺寲 @Sensitive鑴辨晱澧炲姞瑙掕壊鍜屾潈闄愭牎楠� (鎰熻阿 鐩樺彜缁欎綘涓�鏂�) -* update 浼樺寲 閮ㄩ棬鏁版嵁鏉冮檺浣跨敤榛樿鍏滃簳鏂规 -* update 浼樺寲 鏇存敼榛樿鏃ュ織绛夌骇涓篿nfo 閬垮厤鏃ュ織杩囧(鎸夐渶寮�鍚痙ebug) -* update 浼樺寲 鐧诲綍绛栫暐浠g爜浼樺寲(鎰熻阿 David Wei) -* update 浼樺寲 琛ュ叏浠g爜鐢熸垚 columnList 鎺ュ彛鍙傛暟娉ㄨВ缂哄け -* update 浼樺寲 nginx 閰嶇疆鏀寔 websocket -* update 浼樺寲 notice 鏂板閫氱煡鍏憡鍙戦�亀s鎺ㄩ�� -* update 浼樺寲 websocket 妯″潡鍑忓皯鏃ュ織杈撳嚭 澧炲姞鐧诲綍鎺ㄩ�� -* update 浼樺寲 閲嶆瀯鐧诲綍绛栫暐澧炲姞鎵╁睍鎬ч檷浣庡鏉傚害 -* update 浼樺寲 addressUtils 鍏煎linux绯荤粺鏈湴ip -* update 浼樺寲 琛ュ叏鎿嶄綔鏃ュ織閮ㄩ棬鏁版嵁 -* update 浼樺寲 鏀寔鏁版嵁搴撴搷浣滃湪闈瀢eb鐜涓嬪垏鎹㈢鎴� -* update 浼樺寲 鎺掗櫎powerjob鏃犵敤鐨勪緷璧� 鍑忓皯鎵撳寘30M浣撶Н -* update 浼樺寲 鍒犻櫎 satoken yml 鏃堕棿閰嶇疆 姝ゅ姛鑳藉凡杩佺Щ鑷冲鎴风绠$悊 -* update 浼樺寲 redis 闆嗙兢妯″紡娉ㄩ噴璇存槑 -* update 浼樺寲 瀹㈡埛绔鐢ㄩ檺鍒� -* update 浼樺寲 鐧诲綍鏃ュ織, 鍦ㄧ嚎鐢ㄦ埛灞曠ず淇℃伅(澧炲姞 瀹㈡埛绔�, 璁惧绫诲瀷)(鎰熻阿 MichelleChung) -* update 浼樺寲 闄愬埗妗嗘灦涓殑fastjson鐗堟湰 -* update 浼樺寲 鏁版嵁鏉冮檺 鍑忓皯浜屾鏍¢獙鏌ヨ -* update 浼樺寲 灏嗛儴闂╥d瀛樺叆token閬垮厤杩囧害鏌ヨredis -* update 浼樺寲 澧炲姞绉熸埛ID涓篘ull閿欒鏃ュ織 -* update 浼樺寲 鎿嶄綔鏃ュ織鍒楄〃鏂板IP鍦板潃鏌ヨ -* update 浼樺寲 閫氳繃鍙傛暟閿悕鑾峰彇閿�兼帴鍙g殑杩斿洖浣�(鎰熻阿 David Wei) -* update 浼樺寲 涓� sys_grant_type 瀛楀吀澧炲姞鏍峰紡 -* update 浼樺寲 浠g爜鐢熸垚 椤甸潰杈撳叆妗嗘牱寮� -* update 浼樺寲 鍏ㄤ笟鍔″垎椤垫煡璇㈠鍔犳帓搴忚鍒欓伩鍏嶅洜where鏉′欢瀵艰嚧涔卞簭闂 -* update 浼樺寲 鐧诲綍鎺ュ彛绉熸埛id琚己鍒舵牎楠岄棶棰� -* update 浼樺寲 鍔犲瘑妯″潡 鏀寔鐖剁被缁熶竴浣跨敤鍔犲瘑娉ㄨВ(鎰熻阿 Tyler Ge) -* update 浼樺寲 灏唃raalvm闀滃儚鏇存柊涓簅penjdk闀滃儚 闇�瑕佺殑浜鸿嚜琛屽垏鎹㈠嵆鍙� -* update 浼樺寲 閮ㄥ垎浣跨敤鑰呬贡璁炬潈闄愬鑷存棤娉曡幏鍙栫敤鎴蜂俊鎭� 澧炲姞鏉冮檺鎻愮ず -* update 浼樺寲 琛ㄦ牸鍒楃殑鏄剧ず涓庨殣钘忓皬缁勪欢(鎰熻阿 bestrevens) -* update 浼樺寲 澧炲姞琛ㄥ崟鏋勫缓涓嶈兘浣跨敤璇存槑 -* update 浼樺寲 瀵屾枃鏈珽ditor缁勪欢妫�楠屽浘鐗囨牸寮� -* update 浼樺寲 鎿嶄綔鏃ュ織鍒楄〃鏂板IP鍦板潃鏌ヨ -* update 浼樺寲 鑿滃崟绠$悊绫诲瀷涓烘寜閽姸鎬佸彲閫� -* update 浼樺寲 鐢ㄦ埛鍒濆瀵嗙爜浠庡弬鏁伴厤缃煡璇� -* update 浼樺寲 閫氳繃鍙傛暟閿悕鑾峰彇閿�兼帴鍙g殑杩斿洖浣�(鎰熻阿 David Wei) -* update 浼樺寲 瀛楀吀鏍囩鏀寔鏁扮粍鍜屽鏍囩(鎰熻阿 鎶撹洐甯�) - -### 鏂板鍔熻兘 - -* add 鏂板 websocket 缇ゅ彂鍔熻兘 -* add 鏂板 鍓嶇鎺ュ叆websocket鎺ユ敹娑堟伅(鎰熻阿 涓変釜涓�) - -### 闂淇 - -* fix 淇 oss鏈嶅姟鏃犳硶杩炴帴 瀵艰嚧涓氬姟寮傚父闂 鏌ヨ涓嶅簲璇ュ奖鍝嶄笟鍔� -* fix 淇 绉熸埛id涓簄ull 鏃犳硶鍖归厤瀛楃涓插鑷寸殑宓屽key闂 -* fix 淇 閮ㄩ棬绠$悊orderNum鎺掑簭澶辨晥闂 -* fix 淇 澶栭摼甯︾鍙e嚭鐜扮殑寮傚父 -* fix 淇 鏅�氳鑹茬紪杈戜娇鐢ㄥ唴缃鐞嗗憳code瓒婃潈闂 -* fix 淇 浠g爜鐢熸垚 鏄惁蹇呭~涓庢暟鎹簱涓嶅尮閰嶉棶棰� -* fix 淇 鐢ㄦ埛娉ㄥ唽鎺ュ彛鏍¢獙鐢ㄦ埛鍚嶄笉鍖哄垎绉熸埛闂 -* fix 淇 閿欒澧炲姞缁勫鑷寸殑鏍¢獙涓嶇敓鏁堥棶棰� -* fix 淇 鏂板鏍¢獙涓婚敭id闂 -* fix 淇 powerjob 浣跨敤 nginx 閮ㄧ讲鏃犳硶璁块棶鐨勯棶棰� -* fix 淇 SysUserMapper 鍐呮爣绛句娇鐢ㄩ敊璇�(涓嶅奖鍝嶄娇鐢�) -* fix 淇 鏂板鎴栫紪杈� SysOssConfig 鏁版嵁鍚� 鎺ㄩ�佸埌 redis 鏁版嵁涓嶅畬鏁� -* fix 淇 鏍戣〃鐢熸垚鏌ヨ鍙橀噺浣跨敤閿欒 -* fix 淇 涓汉淇℃伅淇敼瀵嗙爜鎺ュ彛闅愯棌鏂版棫瀵嗙爜鍙傛暟鏄庢枃(鎰熻阿 bleachtred) -* fix 淇 鍒犻櫎瀛楁鍚� * update sql 鏈洿鏂伴棶棰� -* fix 淇 涓夋柟鐧诲綍鏀粯瀹漵ource涓庡疄闄呮敮浠樺疂涓氬姟code涓嶅尮閰嶉棶棰� -* fix 淇 浜旂骇璺敱缂撳瓨鏃犳晥闂 -* fix 淇 鍐呴摼iframe娌℃湁浼犻�掑弬鏁伴棶棰� -* fix 淇 缁戝畾绗笁鏂瑰笎鍙峰弬鏁扳�渨echar鈥濇洿姝d负鈥渨echat鈥� (鎰熻阿 scmiot) -* fix 淇 鐢ㄦ埛娉ㄥ唽缂哄け clientid 闂 -* fix 淇 HeaderSearch缁勪欢璺宠浆query鍙傛暟涓㈠け闂 -* fix 淇 鑷畾涔夊瓧鍏告牱寮忎笉鐢熸晥鐨勯棶棰� -* fix 淇 login 椤甸潰 loading 鏈叧闂棶棰� - -## v4.8.1 - 2023-09-25 - -### 渚濊禆鍗囩骇 - -* update springboot 2.7.15 => 2.7.16 -* update springboot-admin 2.7.10 => 2.7.11 -* update satoken 1.35.0.RC => 1.36.0 -* update lombok 1.18.26 =. 1.18.30 -* update mybatis-plus 3.5.3.1 => 3.5.3.2 -* update easyexcel 3.3.1 => 3.3.2 -* update hutool 5.8.18 => 5.8.20 - -### 鍔熻兘鏇存柊 - -* update 浼樺寲 閲嶇疆瀵嗙爜娉ㄩ噴鍙傛暟涓枃瑙i噴閿欒 -* update 浼樺寲 getTokenActivityTimeout => getTokenActiveTimeout -* update 浼樺寲瀛楀吀鏍囩鏀寔浼犲垎闅旂鍒嗛殧鐨勫瓧绗︿覆鍜屾暟缁勶紝浼樺寲娓叉煋鏁堟灉 -* update 浼樺寲 鎺у埗鍙癲ebuger浣嶇疆閿欒闂 -* update 浼樺寲 TopNav 鑿滃崟鏍峰紡 -* update 浼樺寲 鍏ㄥ眬寮傚父澶勭悊鍣� 涓氬姟寮傚父涓嶈緭鍑哄叿浣撳爢鏍堜俊鎭� 鍑忓皯鏃犵敤鏃ュ織瀛樺偍 -* update 浼樺寲 鐢ㄦ埛绠$悊 鍙煡璇㈡湭绂佺敤鐨勯儴闂ㄨ鑹插矖浣嶆暟鎹� -* update 浼樺寲 宀椾綅濡傛灉缁戝畾浜嗙敤鎴峰垯涓嶅厑璁哥鐢� -* update 浼樺寲 閮ㄩ棬涓庤鑹插鏋滅粦瀹氫簡鐢ㄦ埛鍒欎笉鍏佽绂佺敤 -* update 浼樺寲 鍔犲瘑瀹炵幇 浣跨敤 EncryptUtils 缁熶竴澶勭悊 -* update 浼樺寲 excel瀵煎嚭瀛楀吀杞笅鎷夋 鏃犻渶鏍囪index鑷姩澶勭悊 -* update 浼樺寲 excel 瀵煎嚭瀛楀吀榛樿杞负涓嬫媺妗� -* update 浼樺寲 鍒犻櫎涓�浜涜窡 swagger 鏈夊叧鐨勫瓧鐪� 閬垮厤璇В -* update 浼樺寲 瑙掕壊鏉冮檺鏀寔浠呮湰浜烘潈闄愭煡鐪� 瑙e喅鏃犳硶鏌ョ湅鑷繁鍒涘缓鐨勮鑹查棶棰� -* update 浼樺寲 RedisCacheController 娉ㄩ噴閿欒 -* update 浼樺寲 xxljob 绔彛闅忕潃涓诲簲鐢ㄧ鍙i閫� 閬垮厤闆嗙兢鍐茬獊 -* update 浼樺寲 powerjob 绔彛闅忕潃涓诲簲鐢ㄧ鍙i閫� 閬垮厤闆嗙兢鍐茬獊 - -### 闂淇 - -* fix 淇 浠g爜鐢熸垚鍚� vo 瀹氫箟 'serialVersionUID' 瀛楁鐨勪笉鍙簭鍒楀寲绫� -* fix 淇 鑷畾涔夊瓧鍏告牱寮忎笉鐢熸晥鐨勯棶棰� -* fix 淇 甯冨眬閰嶇疆澶辨晥闂 -* fix 淇 鏂板缓鐢ㄦ埛鍙兘浼氬瓨鍦ㄧ殑瓒婃潈琛屼负 -* fix 淇 瀛楀吀缂撳瓨鍒犻櫎鏂规硶鍙傛暟閿欒闂 -* fix 淇 淇鏍戞ā鏉跨埗绾х紪鐮佸彉閲忛敊璇� -* fix 淇 鏈夌晫闃熷垪涓庝紭鍏堥槦鍒� 閿欒浣跨敤闂 -* fix 淇 鍗囩骇 mp 鐗堟湰瀵艰嚧鐨勯棶棰� -* fix 淇 vue3 鐗堟湰娉ㄥ唽椤甸獙璇佺爜涓嶆樉绀洪棶棰� -* fix 淇 鍔犲瘑妯″潡鏁版嵁杞崲寮傚父闂 -* fix 淇 鍔ㄦ�佽缃� token 鏈夋晥鏈熶笉鐢熸晥闂 -* fix 淇 token 杩囨湡鐧诲嚭鏃犳硶娓呯悊鍦ㄧ嚎鐢ㄦ埛闂 - - -## v5.1.0 - 2023-09-05 - -# 寮�鍙戝巻绋� - -* 2023骞�5鏈� 寮�濮� 5.1.0 璁″垝 鍘嗙粡1涓湀鐨勮璁′笌璁ㄨ -* 2023骞�6鏈� 寮�濮嬬潃鎵嬪紑鍙� 鍘嗙粡2涓鏈堢殑寮�鍙� 鐗瑰埆鎰熻阿鍥㈤槦鐨勫皬浼欎即涓庝竴浜涚儹蹇冪殑绮変笣 鍙備笌鍔熻兘寮�鍙戜笌娴嬭瘯 -* 2023骞�8鏈� 寮�濮嬪叕娴� 鍘嗙粡灏嗚繎1涓湀鐨勫叕娴嬩笌淇宸ヤ綔(鏈熼棿鎴愬姛鏀寔澶氫綅浣跨敤鑰呯敓浜т娇鐢�) -* 2023骞�9鏈堝垵 姝e紡鍙戝竷(缁忚繃澶氫釜灏忎紮浼寸殑鐢熶骇瀹炶返 宸插熀鏈彲灏濊瘯鐢熶骇浣跨敤) -> 鍏充簬4.X鐨勮鏄� 鐢变簬SpringBoot2.X涓巚ue2.X鍧囧湪11鏈堝簳鍋滄缁存姢<br> -> 鏁呰�屽挶浠瑅ue鐗堟湰4.X涔熸棤娉曞啀缁х画鏇存柊<br> -> 浠嬩簬4.X鐨勭敤鎴烽噺鐗瑰埆搴炲ぇ 鍔熻兘涔熼潪甯哥殑绋冲畾<br> -> 璁″垝浜�11鏈堝簳鍚孊oot2.X涓�鍚屽仠姝㈡洿鏂颁絾杩樹細鎸佺画缁存姢淇bug(淇鐨勫舰寮忎负鐩存帴鎻愪氦鍒�4.X鍒嗘敮鍋滄鍙戠増)<br> - -# 瑙嗛浠嬬粛 - -涓轰簡鏇村ソ鐨勮澶у浜嗚В 5.1.0 浣滆�呭綍鍒朵簡鐩稿叧鐨勮棰� 渚涘ぇ瀹跺揩閫熶簡瑙d笂鎵� - -* 5.1.0 鏂板姛鑳戒笌鍙樻洿浠嬬粛: https://www.bilibili.com/video/BV1fj411y71X/ -* 鎼缓涓庤繍琛�: https://www.bilibili.com/video/BV1Fg4y137JK/ -* 鐢熶骇鐜鎼缓閮ㄧ讲: https://www.bilibili.com/video/BV1mL411e7ha/ - -# 鏇存柊鏃ュ織 - -### 閲嶅ぇ鏇存柊 - -* [閲嶅ぇ鏇存柊] 浼樺寲 鐩稿叧浠g爜 瀹屾垚浠g爜鐢熸垚澶氭暟鎹簮缁熶竴瀛樺偍(鎰熻阿 WangBQ !pr349) -* [涓嶅吋瀹规洿鏂癩 绉婚櫎 鍘熺煭淇″姛鑳� 闆嗘垚鏇村己澶х殑 sms4j 鐭俊宸ュ叿鍖�(鎰熻阿 鍙嬫澃 !pr367) -* [涓嶅吋瀹规洿鏂癩 瀵规帴 powerjob 瀹炵幇鍒嗗竷寮忎换鍔¤皟搴� 鍒犻櫎鍘熸湁 xxljob 鍘熷洜涓虹ぞ鍖轰笉鏇存柊鍔熻兘澶皯鍙敮鎸乵ysql(鎰熻阿 yhan219 !pr359) -* [閲嶅ぇ鏇存柊] 鏂板 涓夋柟鎺堟潈缁戝畾鐧诲綍鍔熻兘 鍩轰簬 justauth 鏀寔甯傞潰涓婂ぇ閮ㄥ垎涓夋柟鐧诲綍(鎰熻阿 涓変釜涓� !pr370) -* [涓嶅吋瀹规洿鏂癩 鏂板 瀹㈡埛绔巿鏉冨姛鑳� 涓嶉渶瑕佹洿鏀逛换浣曚唬鐮佸嵆鍙畬鎴愬绔姩鎬佸鎺�(鎰熻阿 Michelle.Chung !pr379) -* [閲嶅ぇ鏇存柊] 鏂板 鍓嶅悗绔帴鍙h姹傚姞瀵嗕紶杈� 鍩轰簬AES+RSA鍔ㄦ�侀珮寮哄害鍔犲瘑(鎰熻阿 wdhcr !pr377) -* [閲嶅ぇ鏇存柊] 鏂板 涓夋柟鎺堟潈鐧诲綍 瀵规帴 maxkey 鍗曠偣鐧诲綍 -* [涓嶅吋瀹规洿鏂癩 浼樺寲 redis搴忓垪鍖栭厤缃� 鏇存敼涓洪�氱敤鏍煎紡(鍗囩骇闇�娓呴櫎redis鎵�鏈夋暟鎹�) - -### 渚濊禆鍗囩骇 - -* update springboot 3.0.7 => 3.1.3 -* update springboot-admin 3.1.3 => 3.1.5 -* update springdoc 2.1.0 => 2.2.0 -* update spring-mybatis 3.0.1 => 3.0.2 -* update mybatis-plus 3.5.3.1 => 3.5.3.2 -* update easyexcel 3.2.1 => 3.3.2 -* update mapstruct-plus 1.2.3 => 1.3.5 瑙e喅淇敼瀹炰綋绫� idea涓嶇紪璇戦棶棰� -* update satoken 1.34.0 => 1.35.0.RC 浼樺寲杩囨湡閰嶇疆 鏀寔澶氱token鑷畾涔夋湁鏁堟湡 -* update dynamic-ds 3.6.1 => 4.1.3 鏀寔 SpringBoot3 -* update sms4j 2.2.0 -* update hutool 5.8.18 => 5.8.20 -* update redisson 3.20.1 => 3.23.4 -* update lock4j 2.2.4 => 2.2.5 -* update aws-java-sdk-s3 1.12.400 => 1.12.540 -* update maven-surefire-plugin 3.0.0 => 3.1.2 - -### 鍔熻兘鏇存柊 - -* update 浼樺寲 excel 瀵煎嚭鍚堝苟 鍦ㄥ垵濮嬪寲绫绘椂杩涜鏁版嵁鐨勫鐞� -* update 浼樺寲 绠�鍖� flatten 鎻掍欢璇硶鍐欐硶 -* update 浼樺寲 鏀寔鏈湴铏氭嫙鍩熷悕璋冭瘯(鎰熻阿 浠f槦鐧� !pr363) -* update 閲嶆瀯 灏嗘鏋跺唴鐨� swagger 鍛藉悕鏇存敼涓� springdoc 鍛藉悕閬垮厤璇В -* update 閲嶆瀯 灏嗙郴缁熷唴缃厤缃斁缃埌 common 鍖呭唴鐙珛鍔犺浇 涓嶅厑璁哥敤鎴烽殢鎰忎慨鏀� -* update 浼樺寲 鍒囨崲 maven 浠撳簱鍒� 鍗庝负浜�(aliyun渚濊禆涓嶆洿鏂版媺鍙栦笉鍒�) -* update 浼樺寲 鍗囩骇 satoken 鏀寔澶氱 token 鑷畾涔夋湁鏁堟湡鍔熻兘 -* update 浼樺寲 RepeatSubmitAspect 閫昏緫閬垮厤骞跺彂璇锋眰闂 -* update 浼樺寲 鍦ㄥ叏灞�寮傚父鎷︽埅鍣ㄤ腑澧炲姞涓ょ被寮傚父澶勭悊 -* update 浼樺寲 鎻愪緵powerjob瀹屾暣sql鑴氭湰 闄嶄綆鐢ㄦ埛浣跨敤闅惧害 -* update 浼樺寲 StreamUtils 鍏朵粬鏂规硶杩囨护null鍊�(鎰熻阿 bleachtred !pr390) -* update 浼樺寲 powerjob 绔彛闅忕潃涓诲簲鐢ㄧ鍙i閫� 閬垮厤闆嗙兢鍐茬獊 -* update 浼樺寲 瑙掕壊鏉冮檺鏀寔浠呮湰浜烘潈闄愭煡鐪� 瑙e喅鏃犳硶鏌ョ湅鑷繁鍒涘缓鐨勮鑹查棶棰� -* update 淇敼浠g爜鐢熸垚妯$増锛屾棩鏈熻寖鍥寸粺涓�閲囩敤addDateRange鏂规硶(鎰熻阿 LiuHao !pr397) -* update 浼樺寲 鏍戣〃鐢熸垚鍓嶇缂哄皯 children 瀛楁 -* update 浼樺寲 CryptoFilter null鍒ゆ柇宸ュ叿 -* update 浼樺寲 websocket 璺緞涓� cloud 鐗堟湰淇濇寔涓�鑷� -* update 浼樺寲 鏇存柊鐧诲綍绛栫暐杩斿洖鍊�(鎰熻阿 zlyx) -* update 淇敼浠g爜鐢熸垚妯℃澘锛岃皟鏁村垪琛ㄦ墦寮�瀵硅瘽妗嗗拰鎺ュ彛璇锋眰椤哄簭 -* update 浼樺寲 SaInterceptor 鎷︽埅鍣ㄥ垽鏂� token 瀹㈡埛绔痠d鏄惁鏈夋晥(鎰熻阿 zlyx !pr402) -* update 浼樺寲 excel 瀵煎嚭瀛楀吀榛樿杞负涓嬫媺妗� -* update 浼樺寲 鍏煎 clientid 閫氳繃 param 浼犺緭 -* update 浼樺寲 excel瀵煎嚭瀛楀吀杞笅鎷夋 鏃犻渶鏍囪index鑷姩澶勭悊(鎰熻阿 涓�澶廲oco) -* update 浼樺寲 绠�鍖栫嚎绋嬫睜閰嶇疆 -* update 浼樺寲 灞忚斀 powerjob 鏃犵敤鐨勫績璺虫棩蹇� -* update 浼樺寲 閫傞厤 mysql 8.0.34 鍗囩骇杩炴帴鏈哄埗 -* update 浼樺寲 鍔犲瘑瀹炵幇 浣跨敤 EncryptUtils 缁熶竴澶勭悊 -* update 浼樺寲 鍒犻櫎瀛楀吀鏃犵敤鐘舵�佸瓧娈�(鍩烘湰鐢ㄤ笉涓� 绂佺敤鍚庤繕浼氬鑷村洖鏄鹃棶棰�) -* update 浼樺寲 閮ㄩ棬涓庤鑹插鏋滅粦瀹氫簡鐢ㄦ埛鍒欎笉鍏佽绂佺敤 -* update 浼樺寲 宀椾綅濡傛灉缁戝畾浜嗙敤鎴峰垯涓嶅厑璁哥鐢� -* update 浼樺寲 鐢ㄦ埛绠$悊 鍙煡璇㈡湭绂佺敤鐨勯儴闂ㄨ鑹插矖浣嶆暟鎹� -* update 浼樺寲 鐧诲綍鐢ㄦ埛澧炲姞鏄电О杩斿洖 -* update 浼樺寲 灏嗛儴闂ㄧ鐞� 璐熻矗浜洪�夐」鏀逛负涓嬫媺妗嗛�夋嫨(鎰熻阿 Lionel !pr410) -* update 浼樺寲 鍏ㄥ眬寮傚父澶勭悊鍣� 涓氬姟寮傚父涓嶈緭鍑哄叿浣撳爢鏍堜俊鎭� 鍑忓皯鏃犵敤鏃ュ織瀛樺偍 -* update 浼樺寲 鐧诲綍鐢ㄦ埛缂撳瓨 鍘婚櫎鍐椾綑缁熶竴瀛樺偍 -* update 浼樺寲 鏀惧鑿滃崟鏉冮檺 瑙掕壊鍏宠仈鑿滃崟鏃犻渶绠$悊鍛� - -### 鏂板鍔熻兘 - -* add 澧炲姞 RedisUtils 鎵归噺鍒犻櫎 hash key 鏂规硶 -* add 鏂板 Oss 涓婁紶 File 鏂囦欢鏂规硶(鎰熻阿 jenn !pr362) -* add 澧炲姞 excel 瀵煎嚭涓嬫媺妗嗗姛鑳� -* add 鏂板 RedisUtils.setObjectIfAbsent 濡傛灉涓嶅瓨鍦ㄥ垯璁剧疆鏂规硶 - -### 淇闂 - -* fix 淇 鑴辨晱娉ㄨВ鏍囪浣嶇疆閿欒 -* fix 淇 OssClient 瀹炰緥澶氱鎴风浉鍚宬ey缂撳瓨瑕嗙洊闂 -* fix 淇 鍏抽棴澶氱鎴� 鑴辨晱鍒ゆ柇闂 -* fix 淇 OssClient 鍒囨崲鏈嶅姟 瀹炰緥涓嶆纭棶棰�(鎰熻阿 jenn !pr360) -* fix 淇 浼犲弬绫诲瀷涓嶆纭鑷� postgreSql 鍚屾濂楅鎶ラ敊闂 -* fix 淇 鍙傛暟绫诲瀷淇敼 鏈慨鏀规牎楠屾敞瑙� -* fix 淇 鐧诲綍鏍¢獙閿欒娆℃暟鏈揪鍒颁笂闄愭椂 閿欒娆℃暟缂撳瓨鏈缃湁鏁堟椂闂撮棶棰�(鎰熻阿 konbai !pr366) -* fix 淇 common-core 鍖呬娇鐢╝op娉ㄨВ 浣嗘湭娣诲姞aop瀹炵幇绫诲鑷村崟鐙娇鐢ㄦ姤閿欓棶棰� -* fix 淇 Mapper 澶氬弬鏁版湭鍔� @Param 娉ㄨВ闂 -* fix 淇 閭鐧诲綍 鏌ヨ鍊奸敊璇棶棰� -* fix 淇 鐢ㄦ埛绡℃敼绠$悊鍛樿鑹叉爣璇嗙瓒婃潈闂 -* fix 淇 瀛楀吀缂撳瓨娉ㄨВ浣跨敤閿欒闂 -* fix 淇 鏌ヨ閮ㄩ棬涓嬫媺鏍戞湭杩囨护鏁版嵁鏉冮檺闂 -* fix 淇 CacheName 缂撳瓨key瀛樺偍閿欒闂 -* fix 淇 浠g爜鐢熸垚 鍓嶇娣诲姞鎴栦慨鏀硅〃鍗曚慨鏀瑰垪鐢熸垚闂 -* fix 淇 鏂板瑙掕壊浣跨敤鍐呯疆绠$悊鍛樻爣璇嗙闂 -* fix 淇 浠g爜鐢熸垚 鍓嶇娣诲姞鎴栦慨鏀硅〃鍗曚慨鏀瑰垪鐢熸垚闂 -* fix 淇 token 杩囨湡鐧诲嚭鏃犳硶娓呯悊鍦ㄧ嚎鐢ㄦ埛闂 -* fix 淇 鍔犲瘑妯″潡鏁版嵁杞崲寮傚父闂 -* fix 淇 鍙兘瀵艰嚧寮傚父绫绘棤娉曞弽搴忓垪鍖栭棶棰� -* fix 淇 浠g爜鐢熸垚 缂栬緫鎸夐挳鍒锋柊鍒楄〃闂 -* fix 淇 瀹㈡埛绔紪杈戞椂鎺堟潈绫诲瀷鍙樻洿鏈繚瀛樼殑闂(鎰熻阿 David Wei !pr400) -* fix 淇 鏈夌晫闃熷垪涓庝紭鍏堥槦鍒� 閿欒浣跨敤闂 -* fix 淇 淇鏍戞ā鏉跨埗绾х紪鐮佸彉閲忛敊璇� -* fix 淇 閮ㄧ讲閮ㄥ垎绯荤粺鍑虹幇涔辩爜闂 -* fix 淇 涓�绾ц彍鍗曟棤娉曟樉绀洪棶棰� -* fix 淇 鍙兘浼氬瓨鍦ㄧ殑瓒婃潈琛屼负(鎰熻阿 涓禨tone !pr416) -* fix 淇 浠g爜鐢熸垚椤甸潰鍙傛暟缂哄皯閫楀彿闂 - -### 绉婚櫎鍔熻兘 - -* remove 绉婚櫎鍘熸湁鐭俊鍔熻兘(寤鸿浣跨敤sms4j) -* remove 绉婚櫎xxljob鍔熻兘(寤鸿浣跨敤powerjob) - - -## v4.8.0 - 2023-07-10 - -### 閲嶅ぇ鏇存柊 - -* [閲嶅ぇ鏇存柊] 鏂板 sms4j 鐭俊铻嶅悎妗嗘灦鏁村悎(鏀寔鏁板崄绉嶇煭淇″巶鍟嗘帴鍏ャ�佸彂閫侀檺鍒躲�佽礋杞藉潎琛$瓑鍔熻兘) -* [涓嶅吋瀹规洿鏂癩 绉婚櫎 鍘熺煭淇″姛鑳�(寤鸿浣跨敤鏂� sms4j 鍔熻兘) -* [閲嶈杩佺Щ] 杩佺Щ vue3 鍓嶇鍒颁富浠撳簱缁熶竴缁存姢 - -### 渚濊禆鍗囩骇 - -* update springboot 2.7.11 => 2.7.13 -* update satoken 1.34.0 => 1.35.0.RC -* update easyexcel 3.2.1 => 3.3.1 -* update sms4j 2.2.0 - -### 鍔熻兘鏇存柊 - -* update 浼樺寲 StreamUtils 鏂规硶杩囨护null鍊� -* update 浼樺寲 椤电鍦‵irefox娴忚鍣ㄨ閬尅 -* update 浼樺寲 鍦ㄥ叏灞�寮傚父鎷︽埅鍣ㄤ腑澧炲姞涓ょ被寮傚父澶勭悊 -* update 浼樺寲 涓嬭浇zip鏂规硶澧炲姞閬僵灞�(鎰熻阿@姊佸墤閿�) -* update 浼樺寲 鐢ㄦ埛鏄电О闈炵┖鏍¢獙 -* update 浼樺寲 淇敼瑙掕壊濡傛灉鏈粦瀹氱敤鎴峰垯鏃犻渶娓呯悊 -* update 浼樺寲 RepeatSubmitAspect 閫昏緫閬垮厤骞跺彂璇锋眰闂 -* update 浼樺寲 satoken 杩囨湡閰嶇疆 鏀寔澶氱token鑷畾涔夋湁鏁堟湡 -* update 浼樺寲 鍔犲瘑娉ㄨВ娉ㄩ噴閿欒 -* update 浼樺寲 鍒囨崲 maven 浠撳簱鍒板崕涓轰簯(aliyun 涓嶅彲鐢�) -* update 浼樺寲 excel 瀵煎嚭瀛樺湪鍚堝苟椤规椂鍦ㄥ垵濮嬪寲绫绘椂杩涜鏁版嵁鐨勫鐞嗛伩鍏嶅娆¤皟鐢�(鎰熻阿@yueye) -* update 浼樺寲 閲嶆瀯 CellMergeStrategy 鏀寔澶氱骇琛ㄥご淇涓�浜涘皬闂 鏁寸悊浠g爜缁撴瀯 - -### 鏂板鍔熻兘 - -* add 鏂板 RedisUtils.setObjectIfAbsent 涓嶅瓨鍦ㄥ垯璁剧疆鏂规硶 -* add 鏂板 Excel 瀵煎嚭闄勫甫鏈変笅鎷夋(瀛楀吀鑷姩瀵煎嚭涓轰笅鎷夋) 鍙嚜瀹氫箟澶氱骇涓嬫媺妗�(鎰熻阿@Emil.Zhang) -* add 鏂板 OssClient File 鏂囦欢涓婁紶鏂规硶 -* add 澧炲姞 RedisUtils 鎵归噺鍒犻櫎 hash key 鏂规硶 - -### 闂淇 - -* fix 淇 鏂板瑙掕壊浣跨敤鍐呯疆绠$悊鍛樻爣璇嗙闂 -* fix 淇 缂撳瓨鐩戞帶鍥捐〃 鏀寔璺熼殢灞忓箷澶у皬鑷�傚簲璋冩暣(鎰熻阿@鎶撹洐甯�) -* fix 淇 闃查噸缁勪欢 閿欏垹娉ㄨВ闂 -* fix 淇 CacheName 缂撳瓨key瀛樺偍閿欒闂 -* fix 淇 瀛楀吀缂撳瓨娉ㄨВ浣跨敤閿欒闂 -* fix 淇 鐢ㄦ埛绡℃敼绠$悊鍛樿鑹叉爣璇嗙瓒婃潈闂 -* fix 淇 鐧诲綍鏍¢獙閿欒娆℃暟鏈揪鍒颁笂闄愭椂 閿欒娆℃暟缂撳瓨鏈缃湁鏁堟椂闂撮棶棰� -* fix 淇 OssClient 鍒囨崲鏈嶅姟 瀹炰緥涓嶆纭棶棰� -* fix 淇 element ui 鍥犵増鏈�屾湭琚伐鍏疯瘑鍒棶棰�(鎰熻阿@姊佸墤閿�) -* fix 淇 admin鐩戞帶 鍒囨崲tab椤甸渶瑕侀噸澶嶇櫥褰曢棶棰� - -## v5.0.0 - 2023-05-19 - -# 寮�鍙戝巻绋� - -* 2022骞�11鏈� 寮�濮�5.X璁″垝 鍘嗙粡2涓湀鐨勮璁′笌璁ㄨ -* 2023骞�1鏈� 寮�濮嬬潃鎵嬪紑鍙� 鍘嗙粡3涓湀鐨勫紑鍙� 鐗瑰埆鎰熻阿鍥㈤槦鐨勫皬浼欎即涓庝竴浜涚儹蹇冪殑绮変笣 鍙備笌鍔熻兘寮�鍙戜笌娴嬭瘯 -* 2023骞�4鏈� 寮�濮嬪叕娴� 鍘嗙粡灏嗚繎2涓湀鐨勫叕娴嬩笌淇宸ヤ綔(鏈熼棿鎴愬姛鏀寔澶氫綅浣跨敤鑰呯敓浜т娇鐢�) -* 2023骞�5鏈堝簳 姝e紡鍙戝竷 铏界劧宸茬粡鏈夌敓浜у疄璺� 浣嗘槸springboot3.0涓巎dk17浣跨敤鑰呰繕澶勪簬灏戞暟 鍙﹀5.X鍚庣画杩樻湁涓�浜涗笉鍏煎鏇存柊 姹傜ǔ鑰呭缓璁湪绛変竴绛� -* 鍏充簬4.X鐨勮鏄� 鐢变簬springboot2.X 涓� vue2.X 鍖�鍦ㄥ勾搴曞仠姝㈢淮鎶� 鏁呮4.X涔熷皢浜庡勾搴曞悓boot2涓�鍚屽仠姝㈢淮鎶� - -# 瑙嗛浠嬬粛 - -涓轰簡鏇村ソ鐨勮澶у浜嗚В 5.X 浣滆�呭綍鍒朵簡鐩稿叧鐨勮棰� 渚涘ぇ瀹跺揩閫熶簡瑙d笂鎵� - -* 鎼缓涓庤繍琛�: https://www.bilibili.com/video/BV1Fg4y137JK/ -* 鏂板姛鑳戒笌鍙樻洿浠嬬粛: https://www.bilibili.com/video/BV1Us4y1m7ky/ -* 鐢熶骇鐜鎼缓閮ㄧ讲: https://www.bilibili.com/video/BV1mL411e7ha/ - -# 鏇存柊鏃ュ織 - -### 閲嶅ぇ鏇存柊 - -* [涓嶅吋瀹瑰崌绾 java 鐗堟湰浠� jdk 8 鍗囩骇鍒� jdk 17 涓旈渶瑕佷娇鐢� graalvm 杩愯(鏆傛椂鏈В鍐冲師鐢焜dk瀛樺湪鐨勯棶棰�) -* [涓嶅吋瀹瑰崌绾 springboot 鍗囩骇 3.0 鐗堟湰 -* [涓嶅吋瀹瑰崌绾 閲嶆瀯 椤圭洰妯″潡缁撴瀯 閲囩敤鎻掍欢鍖栫粨鏋� 鏄撴墿灞曟槗瑙h�� -* [涓嶅吋瀹瑰崌绾 com.sun.mail 鏇存敼涓� jakarta.mail 淇敼鏈�鏂板啓娉� -* [涓嶅吋瀹瑰崌绾 javax.servlet 鏇挎崲涓� jakarta.servlet 鏇存柊鎵�鏈変唬鐮� -* [绠�鍖栨�у崌绾 榛樿寮�鍚鏉傜粨鏋� resultMap 鑷姩鏄犲皠 绠�鍖杧ml缂栫爜(澶氱粨鏋勫疄浣撻渶甯︿笂涓婚敭id) -* [鏁版嵁搴撴敼鍔╙ 鏇存柊 create_by update_by 瀛楁绫诲瀷 (淇濆瓨鐢ㄦ埛id) -* [鏁版嵁搴撴敼鍔╙ 鏂板 create_dept 瀛楁 (淇濆瓨鍒涘缓閮ㄩ棬id) -* [涓嶅吋瀹规洿鏂癩 system 妯″潡 鎵�鏈夊疄浣撶被鍧囦娇鐢� bo|vo 瑙勮寖鍖� -* [閲嶅ぇ鏇存柊] 鏂板 澶氱鎴峰姛鑳借璁� 鏁翠綋妗嗘灦浠g爜缁撴瀯涓庢暟鎹簱鏇存敼 -* [閲嶅ぇ鏇存柊] 鏂板 mapstruct-plus 鏇挎崲 BeanUtil 涓� BeanCopyUtils 宸ュ叿 -* [涓嶅吋瀹规洿鏂癩 閲嶆瀯 鐧诲綍娉ㄨВ鎺ュ彛涓巆loud鐗堟湰缁熶竴鎺ュ彛璺緞 -* [涓嶅吋瀹规洿鏂癩 閲嶆瀯 BaseMapperPlus鎺ュ彛 鍘婚櫎 `@param <M> Mapper` 娉涘瀷 -* [涓嶅吋瀹规洿鏂癩 绉婚櫎 vue2 鍓嶇宸ョ▼ 鍏ㄩ潰鍚敤 vue3 -* [閲嶅ぇ鏇存柊] 鏂板 vue3 + TS 鐗堟湰鍓嶇(鐙珛浠撳簱鍚庣画涓嶤loud鐗堟湰鍏辩敤) -* [閲嶅ぇ鏇存柊] 澧炲姞 websocket 妯″潡 鏀寔token閴存潈 鏀寔鍒嗗竷寮忛泦缇ゆ秷鎭悓姝� -* [閲嶅ぇ鏇存柊] 妗嗘灦鏂囨。鍏ㄩ潰缈绘柊 https://plus-doc.dromara.org - -### 渚濊禆鍗囩骇 - -* update java 1.8 => 17 -* update springboot 2.7.7 => 3.0.7 -* update springboot-admin 2.7.10 => 3.0.4 -* update springdoc 1.6.14 => 2.1.0 -* update lock4j 2.2.3 => 2.2.4 -* update dynamic-ds 3.5.2 => 3.6.1 -* update easyexcel 3.1.5 => 3.2.1 -* update hutool 5.8.11 => 5.8.18 -* update redisson 3.19.2 => 3.20.1 -* update lombok 1.18.24 => 1.18.26 -* update spring-boot.mybatis 2.2.2 => 3.0.1 -* update mapstruct-plus 1.2.3 -* update maven-compiler-plugin 3.10.1 => 3.11.0 -* update maven-surefire-plugin 3.0.0-M7 => 3.0.0 -* update docker mysql 8.0.31 => 8.0.33 -* update docker nginx 1.22.1 => 1.32.4 -* update docker redis 6.2.7 => 6.2.12 -* update docker minio RELEASE.2023-04-13T03-08-07Z - -### 鍔熻兘鏇存柊 - -* update 閫傞厤 AsyncConfig 鏇挎崲杩囨湡缁ф壙绫绘敼涓哄疄鐜� AsyncConfigurer 鎺ュ彛 -* update 閫傞厤 redis 鏂扮増鏈厤缃枃浠跺啓娉� -* update 閫傞厤 鑾峰彇redis 鐩戞帶鍙傛暟鎺ュ彛 鏇挎崲杩囨湡璇硶 -* update 閫傞厤 sa-token 鏇挎崲鏂颁緷璧� sa-token-spring-boot3-starter -* update 閫傞厤 springboot-admin 鏀逛负鏈�鏂� spring-security 鍐欐硶 -* update 閫傞厤 springdoc 鏂扮増鏈厤缃柟寮� -* update 閫傞厤 ServletUtils 鏇存崲缁ф壙 JakartaServletUtil -* update 閫傞厤 鏂板簭鍒楀寲娉ㄨВ -* update 浼樺寲 鍒╃敤 resultMap 鑷姩鏄犲皠閰嶇疆 绠�鍖� xml (闈炲祵濂�) -* update 浼樺寲 璋冩暣 system entity 瀹炰綋涓� controller 鍖呯粨鏋� -* update 浼樺寲 瀹炰綋绫讳腑鏍¢獙娉ㄨВ鐨勬彁绀轰俊鎭� -* update 浼樺寲 浣跨敤 jdk17 璇硶浼樺寲浠g爜 -* update 浼樺寲 鎵�鏈� properties 鏂囦欢鏀逛负娉ㄨВ鍚敤 -* update 鏇存柊 docker 鍩虹闀滃儚 graalvm java17 -* update 浼樺寲 鐢ㄦ埛澶村儚 鏀逛负瀛樺偍 ossId 浣跨敤杞崲妯″潡杞负 url 灞曠ず -* update 浼樺寲 閲嶆瀯 CellMergeStrategy 鏀寔澶氱骇琛ㄥご淇涓�浜涘皬闂 鏁寸悊浠g爜缁撴瀯 -* update 浼樺寲 鐧诲綍娴佺▼浠g爜娉ㄩ噴 - -### 鏂板鍔熻兘 - -* add 鏂板 flatten-maven-plugin 鎻掍欢缁熶竴鐗堟湰鍙风鐞� -* add 鏂板 ip2region 瀹炵幇绂荤嚎IP鍦板潃瀹氫綅搴� - -### 绉婚櫎鍔熻兘 - -* remove 绉婚櫎 BeanCopyUtils 宸ュ叿绫� 涓� JDK17 涓嶅吋瀹� -* remove 绉婚櫎 devtools 渚濊禆 骞朵笉濂界敤(寤鸿鐩存帴鐢╥dea鑷甫鐨勭儹鏇�) -* remove 绉婚櫎 vue2 鍓嶇宸ョ▼ 缁熶竴浣跨敤 vue3 宸ョ▼ - -## v4.7.0 - 2023-05-08 - -### 渚濊禆鍗囩骇 - -* update springboot 2.7.9 => 2.7.11 淇 DoS 婕忔礊 -* update xxljob 2.3.1 => 2.4.0 -* update minio 鍗囩骇鑷虫渶鏂扮増 閬垮厤浣庣増鏈俊鎭硠婕忛棶棰� -* update hutool 5.8.15 => 5.8.18 -* update redisson 3.20.0 => 3.20.1 - -### 鍔熻兘鏇存柊 - -* update 浼樺寲 鏇存敼 sys_oss_config 琛ㄦ敞閲� 閬垮厤璇В -* update 椤圭洰姝e紡鍏ラ┗ dromara 寮�婧愮ぞ鍖� 鏇存敼椤圭洰鍦板潃 -* update 鍏ㄦ柊 logo 鍏ㄦ柊鑳屾櫙鍥�(璁捐甯堟墦閫�) -* update 浼樺寲浠g爜鐢熸垚 鍚屾鎿嶄綔浣跨敤鎵归噺澶勭悊 -* update 閲嶅啓椤圭洰 readme 璇存槑 -* update 淇敼controller涓牎楠岀洿鎺ヨ繑鍥濺.fail -* update 鏇存崲榛樿鐢ㄦ埛澶村儚 -* update 浼樺寲 闄愭祦娉ㄨВ key 鏀寔绠�鍗� spel 琛ㄨ揪寮� -* update 浼樺寲寮圭獥鍚庡鑸爮鍋忕Щ鐨勯棶棰� -* update 浼樺寲$tab.closePage鍚庡瓨鍦ㄩ潪棣栭〉椤电鏃朵笉搴旇璺宠浆棣栭〉 -* update delete build style -* update 浼樺寲閫夋嫨鍥炬爣缁勪欢 -* update 绉婚櫎vue-multiselect鏍峰紡 -* update 浼樺寲鍥哄畾澶撮儴椤电婊氬姩鏉¤闅愯棌鐨勯棶棰� -* update 鎸変唬鐮佽鑼冭ˉ鍏ㄩ噸鍐欐敞瑙� -* update 浼樺寲 鏋佺鎯呭喌鑾峰彇LoginUser鍙兘涓簄ull闂 -* update 浼樺寲 鏇存敼绯荤粺鎵�鏈夋湇鍔℃棩蹇楅厤缃枃浠跺懡鍚嶄负 logback-plus.xml 閬垮厤涓庡叾浠栨鏋堕粯璁ら厤缃啿绐� -* update 浼樺寲 鍔犺В瀵嗘ā鍧� 灏唍ull鍒ゆ柇涓嬫帹闃叉浠讳綍鍙兘鐨刵ull鍑虹幇 -* update 浼樺寲 璋冩暣閰嶇疆鏂囦欢閿欒娉ㄩ噴 -* update 浼樺寲 鍦ㄧ嚎鐢ㄦ埛token鑾峰彇鏂瑰紡 -* update 浼樺寲 鐢ㄦ埛鏇存敼瑙掕壊 韪㈡帀瑙掕壊鐩稿叧鎵�鏈夊湪绾跨敤鎴� -* update 浼樺寲 涓嬫媺鍥炬爣閫夋嫨缁勪欢浼樺寲锛�1.宸查�夋嫨鍥炬爣楂樹寒鍥炴樉 2.婊氬姩鏉¢噰鐢╡l-scrollbar -* update 浼樺寲 Vue鐨凞ictTag缁勪欢 褰搗alue娌℃湁鍖归厤鐨勫�兼椂 灞曠ず绌簐alue -* update 浼樺寲 鎭㈠缈婚〉/鍒囨崲璺敱婊氬姩鍔熻兘 - -### 鏂板鍔熻兘 - -* add 鏂板 ip2region 瀹炵幇绂荤嚎IP鍦板潃瀹氫綅搴� -* add 澧炲姞 閭楠岃瘉鐮佸彂閫佹帴鍙� -* add 澧炲姞 閭鐧婚檰鎺ュ彛 -* add 澧炲姞 EncryptUtils 鍔犺В瀵嗗畨鍏ㄥ伐鍏风被 鍙互澶勭悊base64,aes,sm4,sm2,rsa,md5,sha256鍔犺В瀵� -* add 澧炲姞 EncryptUtils 绫讳腑澧炲姞鍥藉瘑sm3鐨勪笉鍙�嗗姞瀵嗙畻娉� -* add 鏂板 蹇界暐鏁版嵁鏉冮檺鍐欐硶 闃叉寮傚父涓嶆墽琛屽叧闂棶棰� - -### 闂淇 - -* fix 淇 浠g爜鐢熸垚 鐐归�夋寜閽笉鐢熸晥闂 -* fix 淇 鐢ㄦ埛瀵嗙爜鏇存柊鏃犳晥闂 -* fix 淇 findInSet 鍦╩ysql涓嬫柟娉曟悳绱㈤潪鏁板瓧瀛楁鏃� 鏃犲紩鍙锋姤閿欓棶棰� -* fix 淇 oracle postgres 鏁版嵁搴撴棩蹇楄〃绱㈠紩鍒涘缓閿欒 -* fix 瑙掕壊鍒楄〃鍏宠仈澶氳〃sort鍊奸兘涓�鏍� 瀵艰嚧鎺掑簭涓嶇ǔ瀹氥�佷复鏃惰〃娌℃湁鍘熸潵鐨勪富閿『搴� -* fix 淇 DefaultExcelResult 鍗曡瘝鎷煎啓閿欒 -* fix 淇椤甸潰鍒囨崲鏃跺竷灞�閿欎贡鐨勯棶棰� -* fix 淇tab鏍忊�滃叧闂叾浠栤�濆紓甯哥殑闂 -* fix 淇 鍔犺В瀵嗘嫤鎴櫒 瀵硅薄灞炴�т负null闂 -* fix 淇 鍙栨秷oss棰勮鐘舵�佷慨鏀� 鍥炬爣鍙樺寲涓嶆甯搁棶棰� -* fix 淇 寮�鍚疶opNav鍚庝竴绾ц彍鍗曡矾鐢卞弬鏁拌缃棤鏁堥棶棰� -* fix 淇 璺敱璺宠浆琚樆姝㈡椂vue-router鍐呴儴浜х敓鎶ラ敊淇℃伅闂 -* fix 淇 缂撳瓨鍒楄〃锛氬娆℃竻闄ゆ搷浣滐紝鎻愮ず涓嶅彉鐨勯棶棰� - -## v4.6.0 - 2023-03-13 - -### 閲嶅ぇ鏇存柊 - -[閲嶅ぇ鏇存柊] add 鏂板 鍩轰簬 Mybatis 瀹炵幇鏁版嵁搴撳瓧娈靛姞瑙e瘑鍔熻兘 -[閲嶅ぇ鏇存柊] add 鏂板 閫氱敤缈昏瘧娉ㄨВ鍙婂疄鐜�(閮ㄩ棬鍚嶃�佸瓧鍏搞�乷ss銆佺敤鎴峰悕) - -### 渚濊禆鍗囩骇 - -* update springboot 2.7.7 => 2.7.9 -* update easyexcel 3.1.5 => 3.2.1 -* update redisson 3.19.1 => 3.20.0 -* update hutool 5.8.11 => 5.8.15 (13涓�14鏈夐棶棰樺嬁浣跨敤) -* update springdoc 1.6.14 => 1.6.15 -* update aws-java-sdk-s3 1.12.373 => 1.12.400 -* update element-ui 2.15.10 => 2.15.12 -* update lombok 1.18.24 => 1.18.26 - -### 鍔熻兘鏇存柊 - -* update 浼樺寲 瀹炰綋绫讳腑鏍¢獙娉ㄨВ鐨勬彁绀轰俊鎭� -* update 浼樺寲 淇敼 oss 閰嶇疆椤甸潰寮�鍏宠鏄� 閬垮厤閫犳垚璇В -* update 浼樺寲 妗嗘灦浠g爜涔﹀啓鏍煎紡 -* update 浼樺寲 璋冩暣杩炴帴姹犻粯璁ゅ弬鏁� -* update 浼樺寲 `DictDataMapper` 娉ㄨВ鏍囨敞杩囨湡 鎺ㄨ崘浣跨敤 `@Translation` 娉ㄨВ -* update 浼樺寲 閮ㄩ棬鏇存柊鎺ュ彛 娓呯悊缂撳瓨 -* update 浼樺寲 鑾峰彇鑿滃崟鏁版嵁鏉冮檺鎺ュ彛 鍒犻櫎鏃犵敤瑙掕壊灞炴�т笌閫昏緫 -* update 浼樺寲 璋冩暣杩炴帴姹犳渶闀跨敓鍛藉懆鏈� 闃叉鍑虹幇璀﹀憡 -* update 浼樺寲 杩炴帴姹犲鍔� `keepaliveTime` 鎺㈡椿鍙傛暟 -* update 浼樺寲 `DataPermissionHelper` 澧炲姞 `寮�鍚�/鍏抽棴` 蹇界暐鏁版嵁鏉冮檺鍔熻兘 -* update 閲嶆瀯 `OssFactory` 鍔犺浇鏂瑰紡 鏀逛负姣忔姣斿閰嶇疆鍋氬疄渚嬫洿鏂� -* update 浼樺寲 `SaToken` 鑷畾涔夋墿灞曠被 鏀逛负閰嶇疆绫绘敞鍏� 渚夸簬鎵╁睍 -* update 浼樺寲 鍚敤 `sqlserver` 楂樼増鏈娉� 绠�鍖杝ql鑴氭湰璇硶 -* update 浼樺寲 鏇存柊瑙掕壊鍚庤涪鎺夋墍鏈夌浉鍏崇殑鐧诲綍鐢ㄦ埛 鐢ㄦ埛閲忚繃澶т細瀵艰嚧redis闃诲鍗¢】(搴旂矇涓濊姹�) -* update 浼樺寲 缈昏瘧缁勪欢 鏀寔杩斿洖鍊兼硾鍨� 鏀寔澶氱绫诲瀷鏁版嵁缈昏瘧(渚嬪: 鏍规嵁涓婚敭缈昏瘧鎴愬璞�) -* update 浼樺寲 闄愭祦娉ㄨВ浣跨敤 `SpringEl` 琛ㄨ揪寮忓姩鎬佸畾涔� Key 涓� message 鍥介檯鍖栨敮鎸� -* update 浼樺寲 闄愭祦鍔熻兘 `redis key` 鐢熸垚瑙勫垯 浠� `鍔熻兘澶�+url+ip+key` 鏍煎紡 -* update 浼樺寲 鍙嫤鎴郴缁熷唴瀛樺湪鐨勮矾寰� 鍑忓皯涓嶅繀瑕佺殑鎷︽埅閫犳垚鐨勬�ц兘娑堣�� -* update 浼樺寲 `tagsView` 鍙抽�夋锛岄椤典笉搴旇瀛樺湪鍏抽棴宸︿晶閫夐」 -* update 浼樺寲 `copyright 2023` -* update 浼樺寲 鐩戞帶椤甸潰鍥炬爣鏄剧ず -* update 浼樺寲 鏃ュ織娉ㄨВ鏀寔鎺掗櫎鎸囧畾鐨勮姹傚弬鏁� -* update 浼樺寲 涓氬姟鏍¢獙浼樺寲浠g爜 -* update 浼樺寲 鏃ュ織绠$悊浣跨敤绱㈠紩鎻愬崌鏌ヨ鎬ц兘 -* update 浼樺寲 妗嗘灦鏃堕棿妫�绱娇鐢ㄦ椂闂撮粯璁ゅ�� `00:00:00 - 23:59:59` -* update 浼樺寲 oss 棰勮浣跨敤 `ImagePreview` 缁勪欢 - - -### 鏂板鍔熻兘 - -* add 鏂板 `BeanCopyUtils#mapToMap` 鏂规硶 -* add 鏂板 `StringUtils` `splitTo` 涓� `splitList` 鏂规硶 浼樺寲涓氬姟浠g爜 -* add 鏂板 `EasyExcel` `@ExcelEnumFormat` 鏋氫妇绫绘暟鎹炕璇戞敞瑙� - - -### 闂淇 - -* fix 淇 鏂扮増鏈� `Redisson` 瀛樺湪涓� `springboot 2.X` 鐨勫吋瀹规�ч棶棰� -* fix 淇 vue3 妯℃澘鐐瑰嚮鍒犻櫎鎸夐挳鍚庡脊妗嗘樉绀篳[object Object]`鎴栨帶鍒跺彴鎶ラ敊鐨勯棶棰� -* fix 淇 鎺ュ彛闂寮�鍏充笉鐢熸晥闂 -* fix 淇 鍓嶇浼樺寲鏂囦欢涓嬭浇鍑虹幇鐨勫紓甯� -* fix 淇 淇敼瀵嗙爜鏃ュ織瀛樺偍鏄庢枃闂 -* fix 淇 鐢ㄦ埛瀵嗙爜娉ㄨВ璇垹鏆撮湶闂 -* fix 淇 浠g爜鐢熸垚 浣跨敤 `postgreSQL` 鏁版嵁搴撴煡鍑哄凡鍒犻櫎鐨勫瓧娈� - - -## v4.5.0 - 2023-01-12 - -### 閲嶅ぇ鏇存柊 - -* [閲嶅ぇ鏇存柊] 浣跨敤 spring 浜嬩欢鍙戝竷鏈哄埗 閲嶆瀯鐧诲綍鏃ュ織涓庢搷浣滄棩蹇� 鏀寔澶氫簨浠剁洃鍚棤鍏ヤ镜鎵╁睍 -* 渚嬪: 鍙互澧炲姞涓�涓洃鍚�呭皢鏃ュ織涓婁紶鑷矱S绛夊瓨鍌� 瀵瑰師鏈夐�昏緫鏃犲奖鍝� - -### 渚濊禆鍗囩骇 - -* update springboot 2.7.6 => 2.7.7 -* update springboot-admin 2.7.7 => 2.7.10 -* update mybatis-plus 3.5.2 => 3.5.3.1 -* update redisson 3.18.0 => 3.19.1 -* update sa-token 1.33.0 => 1.34.0 -* update easyexcel 3.1.3 => 3.1.5 -* update springdoc 1.6.13 => 1.6.14 -* update snakeyaml 1.32 => 1.33 -* update hutool 5.8.10 => 5.8.11 -* update aws-s3 1.12.349 => 1.12.373 -* update aliyun-sms 2.0.22 => 2.0.23 -* update tencent-sms 3.1.635 => 3.1.660 -* update echarts 4.9.0 => 5.4.0 -* update vue3 element-plus 2.2.21 => 2.2.27 - -### 鍔熻兘鏇存柊 - -* update 浼樺寲 BaseMapperPlus 浣跨敤 MP V3.5.3 鏂板伐鍏风被 Db 绠�鍖栨壒澶勭悊鎿嶄綔瀹炵幇 -* update 浼樺寲 灏嗙幆澧冮厤缃斁鍒� pom 鏂囦欢涓婃柟 渚夸簬鏌ョ湅浣跨敤 -* update 浼樺寲 浠g爜鐢熸垚涓庢鏋朵富浣撲娇鐢ㄧ浉鍚岀殑涓婚敭鐢熸垚鍣� 鍏ㄥ眬缁熶竴閬垮厤闂 -* update 浼樺寲 绯荤粺鐧诲綍 浣跨敤鍗曡〃鏌ヨ鏍¢獙鐢ㄦ埛 閬垮厤澶氭 join 鏌ヨ -* update 浼樺寲 鍒犻櫎 vue3 妯℃澘鏃犵敤鍙傛暟 -* update 浼樺寲 xss 鍖呰鍣� 鍙橀噺鍛藉悕閿欒 -* update 浼樺寲 閲嶆瀯 ExcelUtil 鍏ㄥ鍑烘柟娉曟敮鎸� OutputStream 娴佸鍑� 涓嶅眬闄愪簬 response -* update 浼樺寲 maven 鍦板潃鍒囨崲鍥� aliyun 浠撳簱 -* update 浼樺寲 鍘婚櫎鏃犵敤 guava 渚濊禆绠$悊 椤圭洰涓凡鏃犳渚濊禆 -* update 浼樺寲 springdoc 閰嶇疆閴存潈澶村啓姝婚棶棰� 澧炲姞鎸佷箙鍖栭壌鏉冨ご閰嶇疆 -* update 浼樺寲 楠岃瘉鐮佺粨鏋滀娇鐢� spel 寮曟搸鑷姩璁$畻 -* update 浼樺寲 寮圭獥鍐呭杩囧灞曠ず涓嶅叏闂 -* update 浼樺寲 鍒犻櫎 fuse 鏃犳晥閫夐」 maxPatternLength -* update 浼樺寲 minio 瀹夎璀﹀憡 浣跨敤鏂扮増鏈弬鏁� -* update 浼樺寲 浣跨敤 spring 浜嬩欢鏈哄埗 閲嶆瀯 OssConfig 缂撳瓨鏇存柊 -* update 浼樺寲 鎶藉彇 SysLoginService recordLogininfor 璁板綍鐧诲綍淇℃伅鏂规硶 绠�鍖栨棩蹇楄褰� -* update 浼樺寲 浣跨敤 spring 浜嬩欢鍙戝竷鏈哄埗 閲嶆瀯鐧诲綍鏃ュ織涓庢搷浣滄棩蹇� -* update 浼樺寲 鍗曞厓鏍煎悎骞跺垽鏂� cellValue 鏄惁鐩哥瓑鏂规硶璋冩暣 -* update 浼樺寲 鍘婚櫎 RedisConfig 鏃犵敤缁ф壙 - -### 鏂板鍔熻兘 - -* add 澧炲姞 GET 璇锋眰鎻愪氦鏃ユ湡鍙傛暟 榛樿鏍煎紡鍖栭厤缃� -* add 澧炲姞 RedisUtils 妫�鏌ョ紦瀛樺璞℃槸鍚﹀瓨鍦ㄦ柟娉� - -### 闂淇 - -* fix 淇 鏍规嵁 key 鏇存柊鍙傛暟閰嶇疆鎶ull闂 -* fix 淇 鏍戝舰涓嬫媺涓嶈兘榛樿閫変腑 -* fix 淇 璇诲彇 generator.yml 涓枃涔辩爜闂 -* fix 淇 浠g爜鐢熸垚鍥剧墖/鏂囦欢/鍗曢�夋椂閫夋嫨蹇呭~鏃犳硶鏍¢獙闂 -* fix 淇 淇敼鍙傛暟閿悕鏃� 鏈Щ闄よ繃鏈熺紦瀛橀厤缃� -* fix 淇 鐢ㄦ埛娉ㄥ唽 鐢ㄦ埛绫诲瀷瀛楁涔﹀啓閿欒 -* fix 淇 鏂囦欢鍚嶅寘鍚壒娈婂瓧绗︼紙+銆�-銆�*...锛夌殑鏂囦欢鏃犳硶涓嬭浇闂 -* fix 淇 鐭俊鏍¢獙妯℃澘鍙傛暟浼犲弬閿欒 -* fix 淇 vue3 closeSidebar 杩欎釜鏂规硶瀹氫箟鐨勫弬鏁版病鏈夎В鏋勯棶棰� - -## v4.4.0 - 2022-11-28 - -### 閲嶅ぇ鏇存柊 -* [閲嶅ぇ鏇存柊] 浼樺寲鏀寔 oss 绉佹湁搴撳姛鑳�(鏁版嵁搴撳瓧娈垫敼鍔�) #cd9c3c3f -* [閲嶅ぇ鏇存柊] 杩炴帴姹犵敱 druid 淇敼涓� hikari 鏇存柊鐩稿叧閰嶇疆(鍘熷洜鍙湅鏂囨。) #1f42bd3d -* [閲嶅ぇ鏇存柊] 绉婚櫎 tlog(涓嶆敮鎸乁I鐣岄潰 浣跨敤鐨勪汉澶皯) 寤鸿浣跨敤 skywalking -* [閲嶅ぇ鏇存柊] 澧炲姞 skywalking 闆嗘垚 榛樿娉ㄩ噴涓嶅紑鍚�(浣跨敤鐪嬫枃妗�) - -### 渚濊禆鍗囩骇 -* update springboot 2.7.5 => 2.7.6 -* update springboot-admin 2.7.6 => 2.7.7 -* update satoken 1.31.0 => 1.33.0 -* update spring-doc 1.6.12 => 1.6.13 -* update easyexcel 3.1.1 => 3.1.3 -* update hutool 5.8.8 => 5.8.10 -* update redisson 3.17.7 => 3.18.0 -* update lock4j 2.2.2 => 2.2.3 -* update s3-adk 1.12.324 => 1.12.349 -* update mysql-docker 8.0.29 => 8.0.31 - -### 鍔熻兘鏇存柊 -* update 浼樺寲 oss 浜戝巶鍟嗗鍔� 鍗庝负obs鍏抽敭瀛� -* update 浼樺寲 鍐椾綑鐨勪笁鍏冭〃杈惧紡 -* update 浼樺寲 閲嶇疆鏃跺彇娑堥儴闂ㄩ�変腑 -* update 浼樺寲 鏂板杩斿洖璀﹀憡娑堟伅鎻愮ず -* update 浼樺寲 hikari 鍙傛暟椤哄簭 鏈�甯哥敤鐨勬斁涓婇潰 鍒犻櫎鏃犵敤 druid 鐩戞帶椤甸潰 -* update 浼樺寲 p6spy 鎺掗櫎鍋ュ悍妫�鏌� sql 鎵ц璁板綍 -* update 浼樺寲 Dockerfile 鍒涘缓鐩綍鍛戒护 -* update 浼樺寲 灏嗙┖鈥榗atch鈥欏潡褰㈠弬閲嶅懡鍚嶄负鈥榠gnored鈥� -* update 浼樺寲 浣跨敤鏈湴缂撳瓨浼樺寲 excel 瀵煎嚭 鏁版嵁閲忓ぇ瀛楀吀杞崲鎱㈤棶棰� -* update 浼樺寲 瀛楀吀杞崲瀹炵幇 鍘婚櫎瀛楃涓叉煡鎵炬嫾鎺ヤ紭鍖栨晥鐜� -* update 浼樺寲 鍑忓皬鑵捐鐭俊寮曞叆jar鍖呯殑浣撶Н -* update 娑堥櫎Vue3鎺у埗鍙板嚭鐜扮殑璀﹀憡淇℃伅 -* update 蹇界暐涓嶅繀瑕佺殑灞炴�ф暟鎹繑鍥� -* update 鏇挎崲 mysql-jdbc 鏈�鏂板潗鏍� - -### 鏂板鍔熻兘 -* add 鏂板 junit5 鍗曞厓娴嬭瘯妗堜緥 #6e8ef308 -* add 澧炲姞 sys_oss_config access_policy 妗舵潈闄愮被鍨嬪瓧娈� -* add 澧炲姞 4.3-4.4 鏇存柊 sql 鏂囦欢 -* add 鏂板 瀛楀吀鏁版嵁鏄犲皠娉ㄨВ #da94e898 -* add 澧炲姞 RedisUtils 鑾峰彇缂撳瓨Map鐨刱ey鍒楄〃 - -### 闂淇 -* fix 淇 涓婁紶png閫忔槑鍥剧墖 鐢熸垚澶村儚閫忔槑閮ㄥ垎鍙樻垚榛戣壊 -* fix 淇 sqlserver sql鏂囦欢 閲嶅涓婚敭鏁版嵁闂 -* fix 淇 sqlserver 鐗瑰畾鎯呭喌涓嬫姤 ssl 璇佷功闂 榛樿鍏抽棴 ssl 璁よ瘉 -* fix 淇 table涓洿澶氭寜閽垏鎹富棰樿壊鏈敓鏁堜慨澶嶉棶棰� -* fix 淇 鑿滃崟婵�娲绘棤娉曚慨鏀瑰叾濉厖棰滆壊 鍘婚櫎鏌愪簺svg鍥炬爣鐨刦ill="#bfbfbf"灞炴�� -* fix 淇 浣跨敤缂撳啿娴� 瀵艰嚧涓婁紶寮傚父闂 -* fix 淇 杩囨护鍣ㄩ摼浣跨敤IoUtil.read鏂规硶瀵艰嚧request娴佸叧闂� -* fix 淇 Log娉ㄨВGET璇锋眰璁板綍涓嶅埌鍙傛暟闂 -* fix 淇 鏌愪簺鐗规�х殑鐜鐢熸垚浠g爜鍙樹贡鐮乀XT鏂囦欢闂 -* fix 淇 寮�鍚疶opNav娌℃湁瀛愯彍鍗曢殣钘忎晶杈规爮 -* fix 淇 鍥炴樉鏁版嵁瀛楀吀鏁扮粍寮傚父闂 - -### 绉婚櫎鍔熻兘 -* remove 绉婚櫎杩囨湡 Anonymous 娉ㄨВ涓庡叾瀹炵幇浠g爜 -* remove 绉婚櫎 tlog(涓嶆敮鎸乁I鐣岄潰 浣跨敤鐨勪汉澶皯) 寤鸿浣跨敤 skywalking - -## v4.3.1 - 2022-10-24 - -### 渚濊禆鍗囩骇 -* update springboot 2.7.3 => 2.7.5 -* update springboot-admin 2.7.4 => 2.7.6 -* update sa-token 1.30.0 => 1.31.0 -* update springdoc 1.6.11 => 1.6.12 -* update poi 5.2.2 => 5.2.3 -* update hutool 5.8.6 => 5.8.8 -* update aws-s3 1.12.300 => 1.12.324 -* update aliyun-sms 2.0.18 => 2.0.22 -* update tencent-sms 3.1.591 => 3.1.611 -* update tlog 1.4.3 => 1.5.0 瀹夊叏鎬у崌绾� -* update snakeyaml 1.30 => 1.32 瀛樺湪婕忔礊 -* update redisson 3.17.6 => 3.17.7 -* update nginx 1.21.6 => 1.22.1 瀛樺湪婕忔礊 -* update element-ui 2.15.8 => 2.15.10 -* update core-js 3.19.1 => 3.25.3 - -### 鍔熻兘鏇存柊 -* update 淇敼 宸紓鍛藉悕涓庨暅鍍忓悕鍚屾 -* update 浼樺寲 閫氱敤涓嬭浇鏂规硶鏂板config閰嶇疆閫夐」 -* update 浼樺寲 鏃ュ織鎿嶄綔涓噸缃寜閽椂閲嶅鏌ヨ鐨勯棶棰� -* update 浼樺寲 `@Anonymous` 娉ㄨВ鏍囨敞杩囨湡 浣跨敤 `@SaIgnore` 鏇挎崲 -* update 浼樺寲 鍓嶇鍙互閰嶇疆澶氭帓搴忓弬鏁版敮鎸佷緷娆℃帓搴� -* update 浼樺寲 oss绠$悊 鏀寔鏃堕棿鎺掑簭 -* update 浼樺寲 鏇挎崲 sa-token 杩囨湡閰嶇疆 -* update 浼樺寲 sa-token 鎷︽埅鍣ㄦ敞鍐� `SaTokenConfig#addInterceptors` 鎺掗櫎鎷︽埅璺緞閰嶇疆 -* update 浼樺寲 vue3璇存槑鏂囦欢 缂栫爜闂 -* update 浼樺寲 瀵煎叆鏇存柊鐢ㄦ埛鏁版嵁鍓嶆牎楠屾暟鎹潈闄� -* update 浼樺寲 `R` 绫� `isError` 鍜� `isSuccess` 鏀逛负闈欐�佹柟娉� -* update 浼樺寲 鑾峰彇鐢ㄦ埛淇℃伅getInfo鎺ュ彛 浣跨敤缂撳瓨鏁版嵁鑾峰彇 -* update 浼樺寲 閫夋嫨鎸夐挳瀹藉害 - -### 闂淇 -* fix 淇 鐢ㄦ埛瀵煎叆瀛樺湪鍒欐洿鏂颁笉鐢熸晥 -* fix 淇 鏃ュ織杞崲闈瀓son鏁版嵁瀵艰嚧鎶ラ敊 -* fix 淇 鎺у埗鍙癝QL鏃ュ織鎵撳嵃鏃堕棿鏍煎紡鍖栭棶棰� -* fix 淇 涓嶅悓缃戞鍥爎eset璇锋眰澶村鑷翠笅杞藉鍑鸿法鍩熼棶棰� -* fix 淇 鍦ㄧ嚎鐢ㄦ埛璁剧疆姘镐笉杩囨湡 琚繃婊ら棶棰� -* fix 淇 鍦ㄧ嚎鐢ㄦ埛璁剧疆姘镐笉杩囨湡 瓒呮椂鏃堕棿-1鎺ㄩ�乺edis鏃犳晥闂 -* fix 淇 snakeyaml 婕忔礊 寮哄埗鍗囩骇渚濊禆鐗堟湰(涓存椂澶勭悊绛塨oot鍗囩骇) -* fix 淇 寮�鍚处鍙峰悓绔簰鏂ョ櫥褰� 琚《鎺夊悗鐧诲嚭鎶ull寮傚父闂 -* fix 淇 Redisson 璁剧疆 `NameMapper` 瀵艰嚧闃熷垪鍔熻兘寮傚父闂 -* fix 淇 鏂囦欢涓婁紶缁勪欢鏍煎紡楠岃瘉闂 -* fix 淇 鍐呴儴璋冪敤缂撳瓨涓嶇敓鏁堥棶棰� -* fix 淇 涓婚棰滆壊鍦―rawer缁勪欢涓嶄細鍔犺浇闂 -* fix 淇 灏忓睆骞曚笂淇敼澶村儚鐣岄潰甯冨眬閿欎綅鐨勯棶棰� -* fix 淇 鍐呴摼鍩熷悕鐗规畩瀛楃鏇挎崲 鍚堝苟閿欒瀵艰嚧闂 -* fix 淇 nginx 婕忔礊 https://www.oschina.net/news/214309 - -## v4.3.0 - 2022-09-14 - -### 閲嶅ぇ鏇存柊 -* [閲嶅ぇ鏇存柊] 鏁村悎 springdoc 鍩轰簬 javadoc 瀹炵幇鏃犳敞瑙i浂鍏ヤ镜鐢熸垚鎺ュ彛鏂囨。 -* [閲嶅ぇ鏇存柊] 閲嶅啓 spring-cache 瀹炵幇 鏇翠汉鎬у寲鐨勬搷浣� 鏀寔娉ㄨВ鎸囧畾ttl绛変竴浜涘弬鏁� -* [涓嶅吋瀹规洿鏂癩 绉婚櫎 swagger 鎵�灞炴墍鏈夊姛鑳� 寤鸿浣跨敤 springdoc -* [閲嶅ぇ鏇存柊] 绉婚櫎maven docker鎻掍欢 杩囦簬鑰佹棫鍔熻兘缂洪櫡澶� 浣跨敤idea鑷甫鐨刣ocker鎻掍欢鏇夸唬 - -### 渚濊禆鍗囩骇 -* update springboot 2.6.9 => 2.7.3 -* update springboot-admin 2.7.2 => 2.7.4 -* update redisson 3.17.4 => 3.17.6 -* update hutool 5.8.3 => 5.8.6 -* update okhttp 4.9.1 => 4.10.0 -* update lock4j 2.2.1 => 2.2.2 -* update aws-java-sdk-s3 1.12.248 => 1.12.300 淇渚濊禆瀹夊叏婕忔礊 -* update aliyun.sms 2.0.9 => 2.0.18 -* update tencent.sms 3.1.537 => 3.1.591 -* update guava 30.0-jre => 31.1-jre -* update springdoc 1.6.9 => 1.6.11 -* update druid 1.2.11 => 1.2.12 -* update dynamic-ds 3.5.1 => 3.5.2 - -### 鍔熻兘鏇存柊 -* update 浼樺寲 鐭俊鎺ュ彛瀹炵幇绫� `@Override` 娉ㄨВ -* update 浼樺寲 鐧诲嚭鏂规硶浠g爜閫昏緫 -* update 浼樺寲 浠g爜涓殑涓�浜涢瓟娉曞�� -* update 浼樺寲 浣跨敤 StreamUtils 绠�鍖栦笟鍔℃祦鎿嶇旱 -* update 淇敼 oss 瀹㈡埛绔嚜瀹氫箟鍩熷悕 缁熶竴浣跨敤https寮�鍏虫帶鍒跺崗璁ご -* update 鏇存柊 鐩戞帶杩囨椂閰嶇疆 WebSecurityConfigurerAdapter 鏀逛负 bean 娉ㄥ叆 -* update 淇敼 鐢熸垚閿欒娉ㄩ噴 -* update 浼樺寲 docker 閮ㄧ讲鏂瑰紡 浣跨敤 host 妯″紡绠�鍖栭儴缃叉祦绋� 闄嶄綆浣跨敤鎴愭湰 -* update 淇敼 楠岃瘉鐮佸紑鍏冲彉閲忓悕 -* update 浼樺寲 DateColumn 鏀寔鍗曟ā鏉垮key鍦烘櫙 -* update 浼樺寲 redission 澶勭悊澧炲姞鍓嶇紑 -* update 浼樺寲 缂撳瓨鐩戞帶 鐩稿叧浠g爜 -* update 浼樺寲 閮ㄧ讲鑴氭湰 闃叉鍑虹幇鏉冮檺闂 -* update 浼樺寲 澶氫釜鐩稿悓瑙掕壊鏁版嵁瀵艰嚧鏉冮檺SQL閲嶅闂 -* update 浼樺寲 瀛楀吀鏁版嵁浣跨敤store瀛樺彇 -* update 浼樺寲 甯冨眬璁剧疆浣跨敤el-drawer鎶藉眽鏄剧ず -* update 鏇存柊妗嗘灦鏂囨。 涓撴爮涓庤棰� 閾炬帴鍦板潃 -* update 浼樺寲 OSS鏂囦欢涓婁紶 涓诲姩璁剧疆鏂囦欢鍏叡璇� 閫傞厤澶╃考浜慜SS -* update 浼樺寲 琛ㄦ牸涓婂彸渚у伐鍏锋潯锛堟悳绱㈡寜閽樉闅�&鍙充晶鏍峰紡鍑稿嚭锛� -* update 浼樺寲 鍓嶅悗绔鐜閮ㄧ讲淇濇寔涓�鑷� 鍒犻櫎鏃犵敤鐜鏂囦欢 -* update 浼樺寲 閿欒鐧诲綍閿佸畾涓庢柊澧炶В閿佸姛鑳� -* update 浼樺寲 getLoginId 澧炲姞蹇呰鍙傛暟绌烘牎楠� -* update 浣跨敤 SpringCache娉ㄨВ 浼樺寲鍙傛暟绠$悊銆佸瓧鍏哥鐞嗐�佸湪绾跨敤鎴风瓑涓氬姟缂撳瓨 -* update 浼樺寲 澶氳鑹叉暟鎹潈闄愬尮閰嶈鍒� -* update 浼樺寲 椤甸潰鍐呭祵iframe鍒囨崲tab涓嶅埛鏂版暟鎹� -* update 浼樺寲 璋冩暣 oss琛╧ey 涓� ossconfig鐨剆ervice 瀛楁闀垮害涓嶅尮閰� -* update 浼樺寲 鎿嶄綔鏃ュ織瀵嗙爜鑴辨晱 -* update 閲嶆瀯 QueueUtils 鎶藉彇閫氱敤鏂规硶 缁熶竴浣跨敤 閫傞厤浼樺厛闃熷垪鏂扮敤娉� - -### 鏂板姛鑳� -* add 澧炲姞 StreamUtils 娴佸伐鍏� 绠�鍖� stream 娴佹搷绾� -* add 鏂板 缂撳瓨鍒楄〃鑿滃崟鍔熻兘 -* add 鏂板 鑾峰彇oss瀵硅薄鍏冩暟鎹柟娉� -* add 澧炲姞 QueueUtils 鎿嶄綔鏅�氶槦鍒楃殑鏂规硶 - -### 闂淇 -* fix 淇 mysql sys_notice 涓� sys_config 琛ㄤ富閿被鍨嬮暱搴︿笉澶熼棶棰� -* fix 淇 鑾峰彇 SensitiveService 绌洪棶棰� 澧炲姞绌哄吋瀹� -* fix 淇 浠g爜鐢熸垚棣栧瓧姣嶅ぇ鍐欓棶棰� -* fix 淇 minio 涓婁紶鑷畾涔夊煙鍚嶅洖鏄捐矾寰勯敊璇棶棰� -* fix 淇 鐭俊鍔熻兘杩斿洖瀹炰綋 SysSms 搴忓垪鍖栭棶棰� -* fix 淇 sqlserver 鏇存柊sql閿欒鎻愪氦 -* fix 淇 RedisUtils 骞跺彂 set ttl 閿欒闂 -* fix 淇 闃叉涓婚敭瀛楁鍚嶄笌'row'鎴�'ids'涓�鑷村鑷存姤閿欑殑闂 -* fix 淇 骞傜瓑缁勪欢 閫昏緫闂瀵艰嚧绾跨▼鍙橀噺鏈竻闄� -* fix 淇 鑴辨晱娌℃湁瀹炵幇绫诲鑷磋繑鍥炴暟鎹紓甯搁棶棰� -* fix 淇 鐢ㄦ埛瀵煎嚭瀛楀吀浣跨敤閿欒 -* fix 淇 鐢ㄦ埛鐧诲綍涓庣煭淇$櫥褰� 鍥介檯鍖栨牸寮忎笉涓�鑷� -* fix 淇 BaseMapperPlus 鏂规硶鍛戒护涓嶄竴鑷撮棶棰� -* fix 淇 鐭俊鍔熻兘鏄惁鍚敤鍒ゆ柇涓嶇敓鏁圔UG -* fix 淇 xxljob prod 鐜閰嶇疆鏂囦欢 鏁版嵁搴搃p婕忔敼 -* fix 淇 閮ㄧ讲鑴氭湰 cp 鍛戒护缂哄皯鍙傛暟闂 -* fix 淇 鑿滃崟绠$悊鐨勪竴浜涙搷浣滈棶棰� -* fix 淇 鍥介檯鍖栨枃浠舵彁浜や负鐗规畩缂栫爜闂 -* fix 淇 minio閰嶇疆https閬囧埌鐨勯棶棰� -* fix 淇 鐐瑰嚮鍒犻櫎鍚庣偣鍑诲彇娑堟帶鍒跺彴鎶ラ敊闂 -* fix 淇 鏂囦欢/鍥剧墖涓婁紶缁勪欢 绗竴娆′笂浼犳姤閿欏鑷村悗缁笂浼犳棤闄恖oading闂 -* fix 淇 postgresql 鏃堕棿鏌ヨ绫诲瀷杞崲鎶ラ敊闂 -* fix 淇 閮ㄩ棬涓庤鑹� 鐘舵�佸鍑哄瓧鍏镐娇鐢ㄩ敊璇� -* fix 淇 openapi缁撴瀯浣� 鍥爏pringdoc缂撳瓨瀵艰嚧澶氭鎷兼帴鎺ュ彛璺緞闂 -* fix 淇 娌℃湁鏉冮檺鐨勭敤鎴风紪杈戦儴闂ㄧ己灏戞暟鎹� -* fix 淇 oss閰嶇疆鍒犻櫎鍐呴儴鏁版嵁id鍖归厤绫诲瀷闂 -* fix 淇 鐢ㄦ埛瀵煎叆瀛樺湪鍒欐洿鏂颁笉鐢熸晥 -* fix 淇 鏃ュ織杞崲闈瀓son鏁版嵁瀵艰嚧鎶ラ敊 - -## v4.2.0 - 2022-06-28 -### 閲嶅ぇ鏇存柊 -* [閲嶅ぇ鏇存柊] 澧炲姞 `ruoyi-sms` 鐭俊妯″潡 鏁村悎 闃块噷浜戙�佽吘璁簯 鐭俊鍔熻兘 -* [閲嶅ぇ鏀瑰姩] 鍩轰簬 `AWS S3` 鍗忚閲嶆柊瀹炵幇 OSS妯″潡 鏀寔鑷畾涔夊煙鍚� -* [瀹夊叏鎬 浼樺寲 nginx 闄愬埗澶栫綉璁块棶鍐呯綉 actuator 鐩稿叧璺緞(寤鸿鍗囩骇) -* [涓嶅吋瀹筣 浼樺寲 鏂囦欢涓庡浘鐗囦笂浼犵粍浠� 浣跨敤id瀛樺偍鍥炴樉(鍗囩骇鐨勭敤鎴烽渶瑕佹敞鎰� 涓婁紶缁勪欢杩斿洖鍊煎彉鎴愪簡 ossid 渚夸簬鍏宠仈) -* [涓嶅吋瀹筣 鍗囩骇 mybatis-plus 3.5.2 瑙e喅鏂扮増鏈吋瀹规�ч棶棰� 鍏抽敭瀛楀啿绐佷慨鏀�(鏂板浜嗗緢澶氬叧閿瓧 鍗囩骇鐨勯渶瑕佹敞鎰� 鍐茬獊鐨勫叧閿瓧寤鸿鎹竴涓懡鍚�) - -### 渚濊禆鍗囩骇 -* update springboot-admin 2.6.6 => 2.6.9 -* update springboot-mybatis 2.2.0 => 2.2.2 -* update sa-token 1.29.0 => 1.30.0 -* update hutool 5.7.22 => 5.8.3 -* update druid 1.2.8 => 1.2.11 -* update tlog 1.3.6 => 1.4.3 -* update easyexcel 3.0.5 => 3.1.1 鍘婚櫎cglib 鏀寔jdk17 -* update xxl-job 2.3.0 => 2.3.1 -* update redisson 3.17.0 => 3.17.4 -* update mybatis-plus 3.5.1 => 3.5.2 -* update poi 4.1.2 => 5.2.2 鎬ц兘澶у箙鎻愬崌 -* update docker mysql 8.0.27 => 8.0.29 -* update docker nginx 1.21.3 => 1.21.6 -* update docker redis 6.2.6 => 6.2.7 -* update docker minio 2021-10-27 => 2022-05-26 - -### 鍔熻兘鏇存柊 -* update 浼樺寲 redis 搴忓垪鍖� 浣跨敤绯荤粺鑷甫json宸ュ叿 鍏ㄥ眬缁熶竴 -* update 浼樺寲 RedisUtils 閲嶆瀯杩囨湡鏂规硶 -* update 瀹屽杽鐭俊楠岃瘉鐮佸彂閫佹帴鍙� -* update 浼樺寲 寮圭獥鐐瑰嚮閬僵灞� 榛樿涓嶅叧闂� 鍙湪 main.js 淇敼 -* update 璋冩暣 CacheManager 浣跨敤绯荤粺 绯荤粺搴忓垪鍖栧櫒 -* update 璋冩暣 鍥剧墖棰勮缁勪欢 鍘婚櫎鏃犵敤鏍圭洰褰曟嫾鎺� -* update 鐢ㄦ埛绠$悊宸︿晶鏍戝瀷缁勪欢澧炲姞閫変腑楂樹寒淇濇寔 -* update 浼樺寲 DataPermissionHelper 涓婁笅鏂囧瓨鍌� 浣跨敤 SaToken 鐨勮姹傚瓨鍌ㄥ櫒 -* update 浼樺寲 鐢ㄦ埛澶村儚涓婁紶闄愬埗鍙兘涓哄浘鐗囨牸寮� -* update 浼樺寲 redis 涓� jackson 浣跨敤鑷姩瑁呴厤瀹氬埗鍣ㄧ畝鍖栭厤缃� -* update 浼樺寲 getLoginUser 鑾峰彇 浣跨敤涓�绾х紦瀛� -* update 澧炲姞 redis 鏃犲瘑鐮佷娇鐢ㄨ鏄� -* update 鎵嬪姩閰嶇疆 Undertow 缂撳啿姹� 娑堥櫎杩愯璀﹀憡 -* update 浼樺寲 琛ㄥ崟鏋勫缓鎸夐挳涓嶆樉绀烘鍒欐牎楠� -* update 浼樺寲 oss 鍥炴樉鏌ヨ 浣跨敤 redis 缂撳瓨 -* update 浼樺寲 鐢ㄦ埛鍒楄〃鏌ヨ 鍓旈櫎瀵嗙爜瀛楁 -* update 浼樺寲 楠岃瘉鐮� 鐧诲綍 鐧诲嚭 娉ㄥ唽 绛夋帴鍙� 浣跨敤鍖垮悕娉ㄨВ鏀捐 -* update 淇敼 浠g爜鐢熸垚 controller 鍘婚櫎鏌ヨ鏍¢獙 鐢辩敤鎴疯嚜琛岄�夋嫨鏄惁鏍¢獙 -* update 浼樺寲 ExcelUtil 宸ュ叿鏀寔鍚堝苟澶勭悊鍣� -* update 浣跨敤 SaStorage 浼樺寲 LoginHelper 涓�绾х紦瀛� 閬垮厤 ThreadLocal 娓呯悊涓嶅共鍑�闂 -* update 浼樺寲 鏂板鐢ㄦ埛涓庤鑹蹭俊鎭�佺敤鎴蜂笌宀椾綅淇℃伅閫昏緫 -* update 浼樺寲 浠g爜鐢熸垚 涓氬姟鎺ュ彛 澧炲姞浜嬪姟鍥炴粴 -* update 浼樺寲 logback 鍒犻櫎鏃犵敤閰嶇疆 - -### 鏂板姛鑳� -* add 澧炲姞 MailUtils 閭欢宸ュ叿 -* add 澧炲姞 RedisUtils 鎿嶄綔鍘熷瓙鍊兼柟娉� -* add 澧炲姞 demo 鐭俊婕旂ず妗堜緥 -* add 澧炲姞 鑾峰彇鐭俊楠岃瘉鐮佹帴鍙� -* add 鏂板 SpringUtils 鑾峰彇閰嶇疆鏂囦欢涓殑灞炴�у�兼柟娉� -* add 鏂板 Anonymous 鍖垮悕璁块棶涓嶉壌鏉冩敞瑙� -* add 鏂板 easyexcel 鍗曞厓鏍煎悎骞舵敞瑙d笌澶勭悊鍣� -* add 澧炲姞 ExcelUtil 妯℃澘瀵煎嚭鏂规硶 鏀寔 鍗曞垪琛�/澶氬垪琛� -* add 澧炲姞 Excel 妯℃澘瀵煎嚭 娴嬭瘯绫� - -### 闂淇 -* fix 淇 ExcelUtil 琛ㄨ揪寮忚В鏋� 鍙傛暟娣诲弽瀵艰嚧鏃犳硶瑙f瀽闂 -* fix 淇 鍏ㄥ眬绾跨▼姹犻厤缃� 鏍稿績绾跨▼涓庢渶澶х嚎绋� 鍙傛暟濉弽闂 -* fix 淇 鏌ヨ鏈垎閰嶇敤鎴疯鑹插垪琛� 瑙掕壊鏃犵粦瀹氱敤鎴锋儏鍐典笅 绌哄垪琛ㄩ棶棰� -* fix 淇 sqlserver 鏂板鏁版嵁 id 閿欒 -* fix 淇 token 瓒呮椂鏃堕棿璁剧疆 -1 瀵艰嚧鐨勫崟浣嶈浆鎹㈤棶棰� -* fix 淇 缂栬緫 OssConfig 鍦� postgres 瀛楁閲嶅鎶ラ敊 琛ュ叏 remark 瀛楁 -* fix 淇 postgres 鏁版嵁搴� 鑿滃崟閮ㄥ垎瀛楁绫诲瀷鏃犳硶杞崲闂 -* fix 淇 鑴辨晱瀹炵幇閫昏緫闂 -* fix 淇 鐧诲綍鏈�夐儴闂ㄦ姤绌洪棶棰� -* fix 淇 鐢ㄦ埛娉ㄩ攢鏃惰褰曟敞閿�鏃ュ織寮傚父闂 -* fix 淇 浠g爜鐢熸垚琛ㄥ瓧娈电被鍨嬩笉鍖归厤 瀵艰嚧鏌ヨ涓嶅噯纭棶棰� - -## v4.1.0 - 2022-04-24 -### 閲嶅ぇ鏇存柊 -* [閲嶅ぇ鏇存柊] 澧炲姞搴旂敤閫傞厤 oracle -* [閲嶅ぇ鏇存柊] 澧炲姞搴旂敤閫傞厤 SQL Server -* [閲嶅ぇ鏇存柊] 澧炲姞搴旂敤閫傞厤 postgresql -* [閲嶅ぇ鏇存柊] 纭繚鏇村ソ鐨勯�傞厤 澶氭暟鎹簱 涓婚敭绛栫暐缁熶竴鏀逛负 闆姳ID - -### 渚濊禆鍗囩骇 -* update springboot 2.6.4 => 2.6.7 淇 CVE-2022-22965 婕忔礊 -* update springboot-admin 2.6.2 => 2.6.6 -* update hutool 5.7.21 => 5.7.22 -* update dynamic-datasource 3.5.0 => 3.5.1 -* update redisson 3.16.8 => 3.17.0 -* update qiniu 7.9.3 => 7.9.5 -* update qcloud 5.6.68 => 5.6.72 -* update minio 8.3.7 => 8.3.8 -* update okhttp 4.9.2 => 4.9.3 - -### 鍔熻兘鏇存柊 -* update 绠�鍖栨煡璇� 閮ㄩ棬銆佽彍鍗曘�佽鑹层�佺敤鎴枫�佷唬鐮佺敓鎴愬垪琛� 鍔熻兘 -* update 浼樺寲 閮ㄩ棬淇敼瀛愬厓绱犲叧绯� 浣跨敤鎵归噺鏇存柊 -* update 浼樺寲鍘婚櫎sql宸紓鍖� 鏃堕棿鑼冨洿缁熶竴浣跨敤 between 澶勭悊 -* update 浼樺寲 RepeatSubmit 娉ㄨВ 鏀寔涓氬姟澶勭悊澶辫触 涓� 寮傚父蹇�熸斁琛� -* update 浼樺寲 闃查噸 涓� 闄愭祦 鍔熻兘鏀寔鍥介檯鍖栨秷鎭繑鍥� -* update 寮�鍚疶opNav娌℃湁瀛愯彍鍗曟儏鍐甸殣钘忎晶杈规爮 -* update 鏇存柊minio鍘嬬缉閰嶇疆 -* update 閲嶅懡鍚� 鑿滃崟瀛楁 query -> query_param 瑙e喅绯荤粺鍏抽敭瀛楅棶棰� -* update 浣跨敤 in 浼樺寲 or 鎻愬崌绱㈠紩鍛戒腑鐜� -* update 浼樺寲 TreeEntity 鏍戝疄浣� 鍘婚櫎鏈煡娉涘瀷 -* update 浼樺寲鑿滃崟鍚嶇О杩囬暱鎮仠鏄剧ず鏍囬 -* update 浼樺寲鍥哄畾Header鍚庨《閮ㄥ鑸爮鏍峰紡闂 -* update 浼樺寲 logback 鏃ュ織 寮傛杈撳嚭 -* update 鍏ㄥ眬寮傚父澶勭悊鍣ㄥ紩鍏uplicateKeyException涓婚敭鍐茬獊寮傚父鎷︽埅 -* update topNav鑷畾涔夐殣钘忎晶杈规爮璺敱 -* update 鏇村悕 SaInterfaceImpl 涓� SaPermissionImpl 瀹屽杽鐩稿叧娉ㄩ噴 -* update 浼樺寲 sa-token 璺敱鎷︽埅鍣ㄨ娉� 澧炲姞娉ㄩ噴 閬垮厤璇搷浣� -* update 浼樺寲鏂囦欢涓婁紶銆佸浘鐗囦笂浼犵粍浠� 鏂囦欢鍒楄〃灞曠ず鏂囦欢鍘熷悕渚夸簬鍚庣画澶勭悊, 瀹屽杽缁勪欢鍒犻櫎鍔熻兘 -* update 浼樺寲鐧诲綍澶辫触鐩稿叧閮ㄥ垎浠g爜缁撴瀯 -* update 浣跨敤 spring cglib 鏇挎崲 鍋滄缁存姢鐨� cglib -* update 绠�鍖� 鍏ㄥ眬绾跨▼姹犻厤缃� 浣跨敤cpu鏍稿績鏁拌嚜鍔ㄥ鐞� -* update 绉婚櫎 閲嶅鎻愪氦 閰嶇疆鏂囦欢鍏ㄥ眬閰嶇疆 浣跨敤娉ㄨВ榛樿鍊兼浛浠� - -### 鏂板姛鑳� -* add 澧炲姞 4.0 鍗囩骇 4.1 鐨� sql 鑴氭湰(鍗囩骇闇�鎵ц姝ql) -* add 澧炲姞 DataBaseHelper 鏁版嵁搴撳姪鎵� 鐢ㄤ簬灞忚斀澶氱被鍨嬫暟鎹簱sql璇彞宸紓 -* add 澧炲姞 鐭俊鐧诲綍 涓� 灏忕▼搴忕櫥褰� 绀轰緥 -* add 澧炲姞 Mybatis 鍏ㄥ眬寮傚父澶勭悊 寮�鍚鏁版嵁婧愬垏鎹� 涓ユ牸妯″紡 鎵句笉鍒版暟鎹簮鎶ラ敊 - -### 闂淇 -* fix 淇 鏁版嵁鏉冮檺 浠� aop 鍒囨崲鍒� 鎷︽埅鍣� 瀵艰嚧鑾峰彇浠g悊澶辫触闂 -* fix 淇琛ㄥ崟娓呴櫎鍏冪礌浣嶇疆鏈瀭鐩村眳涓棶棰� -* fix 淇 poi 缁勪欢婕忔礊 涓� mysql jdbc 婕忔礊 -* fix 淇鍗曠嫭璁块棶 鎺ュ彛鏂囨。 璇锋眰 favicon.ico 鎶ラ敊闂 -* fix 淇 minio 涓婁紶, 鍥� socket 瀵艰嚧 available 鑾峰彇鏁板�间笉绮剧‘闂 -* fix 淇 cos_api bcprov-jdk15on 婕忔礊 -* fix 淇 guava 婕忔礊 缁熶竴渚濊禆鐗堟湰 -* fix 淇 tlog 渚濊禆婕忔礊 - -## v4.0.1 - 2022-03-01 -### 渚濊禆鍗囩骇 -* update springboot 2.6.3 => 2.6.4 -* update hutool 5.7.20 => 5.7.21 -* update qiniu 7.9.2 => 7.9.3 -* update minio 8.3.5 => 8.3.7 - -### 鍔熻兘鏇存柊 -* update 鍥剧墖涓婁紶 鏂囦欢涓婁紶 鏀寔骞跺彂涓婁紶 -* update 缁勪欢ImageUpload鏀寔澶氬浘鍚屾椂閫夋嫨涓婁紶 -* udpate 缁勪欢fileUpload鏀寔澶氭枃浠跺悓鏃堕�夋嫨涓婁紶 -* update 浼樺寲 R 榛樿杩斿洖 msg -* update 澧炲姞 鐢ㄦ埛娉ㄥ唽 鐢ㄦ埛绫诲瀷榛樿鍊� -* update 澧炲姞鐢ㄦ埛鐧诲嚭鏃ュ織 -* update 鏇存柊 澶氱敤鎴峰璁惧鐨勬敞閲婅鏄� -* update 浼樺寲 鏄惁涓虹鐞嗗憳鐨勫垽鏂� -* update 浼樺寲 椤甸潰鑻ユ湭鍖归厤鍒板瓧鍏告爣绛惧垯杩斿洖鍘熷瓧鍏稿�� -* update 璋冩暣鐢ㄦ埛鐧诲綍 灏嗘棩蹇楄皟鏁村埌鏈�鍚� 闃叉鑾峰彇涓嶅埌鐢ㄦ埛璀﹀憡 -* update 浼樺寲闅忔満鏁扮敓鎴愭柟寮� 閬垮厤瀹规槗鐢熸垚涓や釜鐩稿悓闅忔満鏁扮殑闂 - -### 闂淇 -* fix 淇浠g爜鐢熸垚 鍩轰簬璺緞鐢熸垚 璺緞涓虹┖闂 -* fix 鎭㈠璇垹 `@Async` 娉ㄨВ绾跨▼姹犻厤缃被 -* fix 淇 minio 閫傞厤 https 瀵艰嚧鐨勯棶棰� -* fix 淇鍒嗛〉缁勪欢璇锋眰涓ゆ闂 - -## v4.0.0 - 2022-02-18 -### 閲嶅ぇ鏇存柊 -* [閲嶅ぇ鏇存柊] 閲嶅啓椤圭洰鏁翠綋缁撴瀯 鏁版嵁澶勭悊涓嬫矇鑷矼apper绗﹀悎MVC瑙勮寖 鍑忓皯寰幆渚濊禆 -* [閲嶇鏇存柊] 涓诲垎鏀笌satoken鍒嗘敮鍚堝苟 鏉冮檺缁熶竴浣跨敤 sa-token -* [閲嶇鏇存柊] 閫傞厤鍗囩骇 SpringBoot 2.6 -* [閲嶇鏇存柊] EasyExcel澶х増鏈崌绾�3.X -* [閲嶇鏇存柊] 绉婚櫎閾惧紡璋冪敤娉ㄨВ 鍥犻摼寮忚皟鐢ㄤ笉绗﹀悎java瑙勮寖 瀵艰嚧寰堝闂 -* [閲嶇鏇存柊] 澧炲姞 杞婚噺绾� 鍒嗗竷寮忛槦鍒� 鏀寔 -* [閲嶇鏇存柊] 澧炲姞 鏁版嵁鑴辨晱娉ㄨВ 浣跨敤搴忓垪鍖栨帶鍒惰劚鏁� 鏀寔澶氱琛ㄨ揪寮� -* [閲嶇鏇存柊] 閲嶆瀯 浣跨敤 Spring 绠�鍖� oss 妯″潡浠g爜 -* [閲嶇鏇存柊] 閲嶆瀯 璋冩暣杩斿洖绫诲瀷涓� R 绮剧畝 Controller 浠g爜 - -### 渚濊禆鍗囩骇 -* update springboot 2.5.8 => 2.6.3 -* update mybatis-plus 3.4.3.4 => 3.5.1 -* update maven-jar-plugin 3.2.0 => 3.2.2 -* update maven-war-plugin 3.2.0 => 3.2.2 -* update maven-compiler-plugin 3.1 => 3.9.0 -* update hutool 5.7.18 => 5.7.20 -* update springboot-admin 2.6.0 => 2.6.2 -* update redisson 3.16.7 => 3.16.8 -* update qiniu 7.9.0 => 7.9.2 -* update aliyun 3.13.1 => 3.14.0 -* update qcloud 5.6.58 => 5.6.68 -* update minio 8.3.4 => 8.3.5 - -### 鍔熻兘鏇存柊 -* update 鐢ㄦ埛绠$悊閮ㄩ棬鏌ヨ閫夋嫨鑺傜偣鍚庡垎椤靛弬鏁板垵濮� -* update 闃查噸澶嶆彁浜ゆ爣璇嗙粍鍚堬紙key + url + header锛� -* update 鎺ュ彛鏂囨。澧炲姞 basic 璐﹀彿瀵嗙爜楠岃瘉 -* update 鐢ㄦ埛淇敼鍑忓皯涓�娆¤鑹插垪琛ㄥ叧鑱旀煡璇� -* update 浼樺寲閮ㄩ棬淇敼缂╂斁鍚庡嚭鐜扮殑閿欎綅闂 -* update 鎸囧畾 maven 璧勬簮杩囨护涓哄叿浣撴枃浠� 闃叉閿欒杩囨护 -* update hutool 寮曞叆鏀逛负 bom 渚濊禆椤瑰紩鍏� -* update 闄嶄綆寮�鍙戠幆澧� redis杩炴帴姹犳暟閲� -* update 鍗囩骇 springboot 2.6.X 瑙e喅 springfox 鍏煎鎬ч棶棰� -* update 浼樺寲澶氱敤鎴蜂綋绯诲鐞� 鏇村悕 LoginUtils 涓� LoginHelper 鏀寔 LoginUser 澶氱骇缂撳瓨 -* update 浼樺寲鍔犺浇瀛楀吀缂撳瓨鏁版嵁 -* update 鏁版嵁搴撴洿鏀� 瀵规帴澶氱敤鎴蜂綋绯� -* update 绉婚櫎鎺� StringUtils 璇箟涓嶆槑纭殑api鏂规硶 浣跨敤鐗瑰畾宸ュ叿鏇挎崲 -* update 浼樺寲鐧诲綍銆佹敞鍐屽湪鎺ュ彛閫氳繃`@Validated`娉ㄨВ杩涜鏁版嵁鍩虹鏍¢獙 -* update 浼樺寲 鏌ヨ鐧诲綍鐢ㄦ埛鏁版嵁 缁熶竴璧扮紦瀛� -* update 浼樺寲 redisson 閰嶇疆 鍘婚櫎鎺変笉甯哥敤鐨勯厤缃� 浣跨敤榛樿閰嶇疆 -* update 鐢ㄦ埛璁块棶鎺у埗鏃舵牎楠屾暟鎹潈闄愶紝闃叉瓒婃潈 -* update 淇敼鐢ㄦ埛娉ㄥ唽鎶ユ湭鐧诲綍璀﹀憡 -* update 璋冩暣oss棰勮寮�鍏� 浣跨敤鍓嶇鐩存帴璋冪敤鏇存敼閰嶇疆鍙傛暟 -* update 浣跨敤 satoken 鑷甫鐨� BCrypt 宸ュ叿 鏇挎崲 Security 鍔犲瘑宸ュ叿 鍑忓皯渚濊禆 -* update 浼樺寲 TreeBuildUtils 宸ュ叿 浣跨敤鍙嶅皠鑷姩鑾峰彇椤剁骇鐖秈d -* update 浣跨敤 hutool Dict 浼樺寲 JsonUtils 闃叉绫诲瀷瑙f瀽寮傚父 -* update 浼樺寲浠g爜鐢熸垚 浣跨敤鏂� JsonUtils.parseMap 鏂规硶 -* update 鏇存柊 鎵�鏈� oss 鍧囨敮鎸� https 閰嶇疆 - -### 鏂板姛鑳� -* add 澧炲姞 RedisUtils 宸ュ叿 hasKey 妫�鏌ey瀛樺湪鏂规硶 -* add 澧炲姞 鐩戞帶涓績 鑷畾涔変簨浠堕�氱煡 -* add 澧炲姞 3.X update 4.0 鏇存柊sql - -### 闂淇 -* fix 淇鐧诲綍澶辨晥鍚庡娆¤姹傛彁绀哄娆″脊绐楅棶棰� -* fix 淇 StringUtils 閫氶厤绗﹀尮閰嶆棤鏁� -* fix 淇閫夐」鍗$偣鍑诲彸閿埛鏂颁涪澶卞弬鏁伴棶棰� -* fix 淇 鏁版嵁鏉冮檺 缂撳瓨鏂规硶鍚嶉敊璇棶棰� -* fix 淇鑷畾涔夌粍浠禶file-upload`鏃犳硶鏄剧ず绗竴涓枃浠讹紝鍒楄〃鏄剧ず鐨勬枃浠舵瘮瀹為檯鏂囦欢灏戜竴涓殑闂 -* fix 淇鍥犲崌绾� sa-token 瀵艰嚧 doLogin 鏃犳硶鑾峰彇 token 闂 -* fix 淇鍒嗛〉缁勪欢璇锋眰涓ゆ闂 - -### 绉婚櫎鍔熻兘 -* remove 绉婚櫎杩囨湡浠g爜 鍒嗛〉宸ュ叿鐩稿叧 -* remove 绉婚櫎杩囨湡浠g爜 澶氭暟鎹簮鍒囨崲 -* remove 绉婚櫎杩囨湡浠g爜 鏁版嵁鏉冮檺 - -### 鍏朵粬 -* 3.X 鐗堟湰杩涘叆缁存姢闃舵 涓嶈繘琛屾洿鏂� 鍙慨澶峛ug 鎸佺画缁存姢鍒�2022骞�10鏈� -* 4.X 鐗堟湰鍏祴灏嗚繎涓�涓湀 澶ч儴鍒哹ug宸蹭慨澶� 瀹樼綉涓诲垎鏀洿鏀逛负 4.X 鐗堟湰 鎺ㄨ崘浣跨敤 - - -## v3.5.0 - 2021-12-28 -### 閲嶅ぇ鏇存柊 -* [閲嶅ぇ鏇存柊] 閲嶅啓鏁版嵁鏉冮檺瀹炵幇 -* [閲嶇鏇存柊] 閲嶆瀯鍒嗛〉 绠�鍖栦娇鐢� -* [閲嶇鏇存柊] 鐢ㄦ埛鐧诲綍 鏀寔鏍¢獙閿欒娆℃暟閿佸畾鐧诲綍 -* [閲嶇鏇存柊] 澧炲姞 jdbc 鎵瑰鐞嗗弬鏁� 澶у箙鎻愬崌鎵归噺鎿嶄綔鎬ц兘 瀵瑰師鐢熻鍙ヤ笌 MP 鍧囨湁鏁� - -### 渚濊禆鍗囩骇 -* update springboot 2.5.7 => 2.5.8 鍗囩骇棰勯槻 log4j2 闂 -* update springboot-admin 2.5.4 => 2.5.5 -* update hutool 5.7.16 => 5.7.18 -* update redisson 3.16.4 => 3.16.7 -* update dynamic-ds 3.4.1 => 3.5.0 -* update qiniu 7.8.0 => 7.9.0 -* update minio 8.3.3 => 8.3.4 -* update tlog 1.3.4 => 1.3.6 鍚敤 tlog 鑷姩閰嶇疆 -* update clipboard 2.0.6 => 2.0.8 - -### 鍔熻兘鏇存柊 -* update 澶氭暟鎹簮鍒囨崲鏍囨敞杩囨湡 3.6.0 绉婚櫎 鎺ㄨ崘浣跨敤鍘熺敓娉ㄨВ -* update 閫氱敤鏉冮檺鏈嶅姟 杩佺Щ鍥� ruoyi-framework 妯″潡 -* update 浣跨敤 hutool-jwt 鏇挎崲鑰佹棫 jjwt 渚濊禆 -* update 璋冩暣 OSS 琛ㄥ瓧娈靛唴瀹归暱搴� -* update LoginUser 澧炲姞瑙掕壊缂撳瓨 浼樺寲瑙掕壊鏉冮檺浠g爜 -* update 浣跨敤 Cglib 閲嶆瀯 BeanCopyUtils 鎬ц兘浼樺紓 -* update 绂佹鎵�鏈夊伐鍏风被瀹炰緥鍖� 浼樺寲浠g爜涔﹀啓瑙勮寖 -* update 浼樺寲鏌ヨ鐢ㄦ埛鐨勮鑹茬粍銆佸矖浣嶇粍浠g爜 -* update 鏇存柊 RedisUtils 杩斿洖瀹㈡埛绔疄渚� -* update 淇敼 鍋ュ悍妫�鏌ユ潈闄� 鏀逛负鐢ㄦ埛鏀捐 鎻愰珮瀹夊叏鎬� -* update hutool 宸ュ叿 鏀逛负鍗曞寘寮曞叆 鍑忓皯鏃犵敤渚濊禆 -* update ServicePlusImpl 鍔熻兘 涓嬫矇鍒� BaseMapperPlus -* update 鍘婚櫎 jdk17 鏍囩 鐢变簬寰堝缁勪欢杩樻湭閫傞厤 瀵艰嚧涓�浜涢棶棰� -* udpate 浠g爜鐢熸垚棰勮鏀寔澶嶅埗鍐呭 -* update 鐢ㄦ埛瀵煎叆鎻愮ず婧㈠嚭鍒欐樉绀烘粴鍔ㄦ潯 -* update 璺敱鏀寔鍗曠嫭閰嶇疆鑿滃崟鎴栬鑹叉潈闄� -* update 浼樺寲web鎷︽埅鍣� 浣跨敤鍘熺敓鎺ュ彛澶勭悊 榛樿闈炵敓浜х幆澧冨紑鍚� -* update 璋冩暣鐩戞帶渚濊禆 浠� common 杩佺Щ鍒� framework - -### 鏂板姛鑳� -* add 鏂板 Vue3 鍒嗘敮 涓� 浠g爜鐢熸垚妯℃澘(鐢变簬缁勪欢杩樻湭瀹屽杽 浠呬緵瀛︿範) -* add 澧炲姞 RedisUtils 娉ㄥ唽鐩戝惉鍣ㄦ柟娉� -* add 澧炲姞 鑷畾涔� Xss 鏍¢獙娉ㄨВ 鐢ㄦ埛瀵煎叆澧炲姞 Bean 鏍¢獙 -* add oss涓嬭浇澧炲姞 loading 灞� -* add 鏂板鍥剧墖棰勮缁勪欢 -* add 闆嗘垚compression-webpack-plugin鎻掍欢瀹炵幇鎵撳寘Gzip鍘嬬缉 -* add 鏂板 SqlUtils 妫�鏌ュ叧閿瓧鏂规硶 - -### 闂淇 -* fix 淇 闆嗙兢闆姳id閲嶅闂 浣跨敤缃戝崱淇℃伅缁戝畾鐢熸垚 -* fix 淇 count 璇硶寮傚父 -* fix 淇鏇存敼瀵嗙爜闂 -* fix 淇sql鍏抽敭瀛楀鐞� 闃叉瑙f瀽鍣ㄦ姤閿� -* fix 淇 TreeBuildUtils 椤惰妭鐐逛笉涓� 0 闂 -* fix 淇 SysOssConfig 涓婚敭绫诲瀷閿欒 -* fix 淇浠g爜鐢熸垚 瀵煎嚭娉ㄨВ閿欒 -* fix 淇 redisson 闆嗙兢妯″紡 璺緞鏈尮閰嶅崗璁ご闂 -* fix 淇鎵撳寘鍚庡瓧浣撳浘鏍囧伓鐜扮殑涔辩爜闂 -* fix 淇鐗堟湰宸紓瀵艰嚧鐨勬噿鍔犺浇鎶ラ敊闂 -* fix 淇浠g爜鐢熸垚瀛楀吀缁勯噸澶嶉棶棰� - -### 绉婚櫎鍔熻兘 -* remove 鍒犻櫎 jjwt 鏃犵敤渚濊禆 -* remove 绉婚櫎杩囨湡 鐢ㄦ埛瀵煎叆 -* remove 绉婚櫎杩囨湡宸ュ叿 DictUtils - -## v3.4.0 - 2021-11-29 - -### 閲嶇鏇存柊 -* update [閲嶇鏇存柊] 閲嶆瀯 Excel 瀵煎叆 鏀寔 Validator 鏍¢獙 鏀寔鑷畾涔夌洃鍚櫒 -* update [閲嶇鏇存柊] Validator 鏍¢獙妗嗘灦鏀寔鍥介檯鍖� - -### 渚濊禆鍗囩骇 -* update springboot 2.5.6 => 2.5.7 -* update hutool 5.7.15 => 5.7.16 -* update okhttp 4.9.1 => 4.9.2 -* update spring-boot-admin 2.5.2 => 2.5.4 -* update redisson 3.16.3 => 3.16.4 -* update tlog 1.3.3 => 1.3.4 -* update axios 0.21.0 => 0.24.0 -* update core-js 3.8.1 => 3.19.1 -* update js-cookie 2.2.1 => 3.0.1 -* update velocity 1.7 => 2.3 -* update 鍗囩骇 docker 鍩虹闀滃儚 - -### 鍔熻兘鏇存柊 -* update 鍩轰簬 hutool 灏佽鏍戞瀯寤哄伐鍏� 閲嶆瀯閮ㄩ棬涓庤彍鍗曟爲缁撴瀯杩斿洖 -* update 鍑忓皯浣跨敤鐗瑰畾鏁版嵁搴撳嚱鏁� -* update 閰嶇疆搴旂敤鍓嶇紑璺緞 鏀逛负閰嶇疆鏂囦欢缁熶竴閰嶇疆 -* update 鍗囩骇 swagger 閰嶇疆 浣跨敤 knife4j 澧炲己妯″紡 -* update 鐩戞帶涓績 闆嗘垚鐩戞帶瀹㈡埛绔� 瀹炵幇鑷洃鎺� -* update 璋冨害涓績 闆嗘垚鐩戞帶瀹㈡埛绔� 娉ㄥ唽鍒扮洃鎺т腑蹇� -* update 浼樺寲 tab 瀵硅薄绠�鍖栭〉绛炬搷浣� -* update 瑙h�� LoginUser 涓� SysUser 寮哄叧鑱� -* update 鏇存柊 RepeatSubmit 娉ㄨВ aop 澶勭悊 閽堝鐗规畩鍙傛暟杩涜杩囨护 -* update DictUtils 瀛楀吀宸ュ叿绫� 鏍囪杩囨湡 3.5.0 鐗堟湰绉婚櫎 浣跨敤 DictService 浠f浛 -* update 鎶借薄 DictService 閫氱敤 瀛楀吀鏈嶅姟 -* update 鎶借薄 ConfigService 閫氱敤 鍙傛暟閰嶇疆鏈嶅姟 -* update 鍩轰簬 DictService 閲嶆瀯 Excel 鍐呭瓧鍏告煡璇㈠姛鑳� -* update OSS 妯″潡 鏁翠綋閲嶅懡鍚� 娑堥櫎姝т箟 -* update 鏇存柊 redis.conf 瀛樺偍绛栫暐 aof 涓� rdb 閰嶇疆鍙傛暟 -* update 鍒濆鍖栨暟鎹浆绉诲埌 ApplicationRunner 缁熶竴澶勭悊 -* update 浼樺寲鏃堕棿鏌ヨ璇彞 - -### 鏂板姛鑳� -* add 澧炲姞 妗嗘灦缂撳瓨鎳掑姞杞� 寮�鍏� -* add 鏂板 鐩戞帶涓績 Bean 鍒濆鍖� startup trace 鐩戞帶鎻掍欢 -* add 澧炲姞 ValidatorUtils 鏍¢獙妗嗘灦宸ュ叿 鐢ㄤ簬鍦ㄩ潪 Controller 鐨勫湴鏂规牎楠屽璞� - -### 婕忔礊淇 -* fix 淇 SysOss銆丼ysOssConfig 鏈户鎵� BaseEntity 鍩虹瀹炰綋闂 -* fix 淇 xxl-job-admin 閮ㄧ讲闂 -* fix 淇 鍥炴樉鏁版嵁瀛楀吀閿�间慨姝� -* fix 淇 Linux 娓呴櫎涓存椂鐩綍 瀵艰嚧涓婁紶鎵句笉鍒扮洰褰曟姤閿欓棶棰� -* fix 淇閫氱敤瀹炰綋 浼犲弬鏃犳硶鎺ユ敹闂 -* fix 淇 SysLoginController 鎺ュ彛鏂囨。涔﹀啓閿欒闂 -* fix 淇 鐢ㄦ埛閫昏緫鍒犻櫎 宸紓闂 -* fix 淇 OSS 涓冪墰浜� token 杩囨湡鏈埛鏂伴棶棰� -* fix 淇 鍒嗛〉宸ュ叿 鎺掑簭瀛楁 null 澶勭悊 -* fix 淇 鐢ㄦ埛瀵煎叆瀛楀吀浣跨敤閿欒 -* fix 淇 鍏抽棴 xss 鍔熻兘瀵艰嚧鍙噸澶嶈 RepeatableFilter 澶辨晥 -* fix 淇 浣跨敤 this.$options.data 鎶ラ敊闂 -* fix 淇 浠g爜鐢熸垚澶嶉�夋瀛楀吀閬楁紡闂 -* fix 淇 閲嶅鎻愪氦涓嶇敓鏁堥棶棰� 鐢变簬姒傚康涓嶅悓 浣跨敤 RedisUtils 閲嶆瀯 -* fix 淇 OSS 宸ュ巶 鏈疄渚嬪寲鏈嶅姟鏇存柊鍔犺浇闂 - -### 鍔熻兘绉婚櫎 -* remove 绉婚櫎 quartz 鐩稿叧浠g爜涓庝緷璧� -* remove 绉婚櫎 feign 鐩稿叧浠g爜涓庝緷璧� -* remove 绉婚櫎 MybatisPlusRedisCache 浜岀骇缂撳瓨 - -## v3.3.0 - 2021-10-29 - -### 閲嶇鏇存柊 -* add [閲嶇鏇存柊] 澧炲姞鍒嗗竷寮忔棩蹇楁鏋� TLog -* add [閲嶇鏇存柊] 澧炲姞鍒嗗竷寮忎换鍔¤皟搴︾郴缁� Xxl-Job -* add [閲嶅ぇ鏇存柊] 澧炲姞 ruoyi-job 浠诲姟璋冨害妯″潡(鍩轰簬xxl-job) -* update [閲嶅ぇ鏇存柊]鍏ㄤ笟鍔� 澧炲姞 鎺ュ彛鏂囨。娉ㄨВ 鏍煎紡鍖栦唬鐮� - -### 渚濊禆鏇存柊 -* update springboot 2.5.5 => 2.5.6 -* update springboot-admin 2.5.1 => 2.5.2 -* update element-ui 2.15.5 => 2.15.6 -* update hutool 5.7.13 => 5.7.15 -* update qcloud.cos 5.6.55 => 5.6.58 -* update minio 8.3.0 => 8.3.3 - -### 鍔熻兘鏇存柊 -* update 鏇存柊 element 2.15.6 琛ㄦ牸鏍峰紡 -* update 浼樺寲 浠g爜鐢熸垚甯搁噺 鍏充簬 BO VO 娉ㄩ噴 -* update 浼樺寲浠g爜鐢熸垚 瀵煎叆琛� 鍒楄〃杩斿洖 涓婚敭榛樿閫変腑 -* update MybatisPlusRedisCache 鏍囪杩囨湡 鎺ㄨ崘浣跨敤 spring-cache -* update Quartz 鏍囪杩囨湡 鎺ㄨ崘杩佺Щ鑷虫柊妗嗘灦 xxl-job -* update Feign 鏍囪杩囨湡 -* update 鍓嶇澧炲姞榛樿鍥介檯鍖栧弬鏁� -* update 鏇存柊 Admin 鐩戞帶 娉ㄩ噴 閬垮厤閿欒浣跨敤 -* update Admin 鐩戞帶澧炲姞鏃ュ織鏂囦欢杈撳嚭 -* update 浼樺寲 xxl-job-admin 澧炲姞鏍煎紡鍖栨棩蹇楄緭鍑轰笌 docker 闀滃儚 -* update 鏇存柊 xxl-job 鎵ц鍣ㄥ紑鍏冲姛鑳� -* update 浠g爜鐢熸垚 鏀逛负鐢熸垚鎶借薄瀹炰綋 -* update 浠g爜鐢熸垚 鎼滅储妗� 鏇存柊鏂囨湰鍩熺敓鎴� 鐢ㄤ簬妯$硦鏌ヨ -* update 閫氱敤鏁版嵁娉ㄥ叆鏀逛负閫傞厤閫氱敤瀹炰綋绫� -* update 浣跨敤璺敱鎳掑姞杞芥彁鍗囬〉闈㈠搷搴旈�熷害 -* update 杩佺Щ鎵�鏈夎剼鏈枃浠惰嚦 script 鐩綍 -* update swagger 缁勯『搴忛厤缃� -* update sql 鏂囦欢鏇存柊 xxljob 鎺у埗鍙拌彍鍗� -* update 鍓嶇澧炲姞 浠诲姟璋冨害涓績椤甸潰涓庣幆澧冨強 nginx 閰嶇疆 -* update 鍚堝苟 oss.sql 鑷充富 sql -* update 琛ュ叏鍥介檯鍖栨枃浠�(鑻辨枃) -* update 鏇存柊鍏充簬鍏ㄥ眬璺緞璁剧疆涓庢枃妗i摼鎺� -* update 鍒犻櫎鏃犵敤 setUsername 浣跨敤鑷姩娉ㄥ叆 -* update RedisUtils 鏇存柊鍒犻櫎 hash 鏁版嵁鏂规硶 - -### 婕忔礊淇 -* fix 淇 澶氭暟鎹簮 aop 璇硶閿欒 -* fix 淇 瀛愯彍鍗曟棤 query 鍙傛暟闂 -* fix 淇 oss 閰嶇疆鍒犻櫎鏃跺垹闄ょ紦瀛� bug -* fix 淇鏃犳潈闄愯幏鍙栬姹傚ご download-filename 瀵艰嚧鏂囦欢鍚嶄负绌洪棶棰� - -## v3.2.0 - 2021-9-28 - -### 閲嶅ぇ鏇存柊 -* update [閲嶅ぇ鏀瑰姩]鎺ュ彛鏂囨。 鏀寔鍒嗙粍閰嶇疆 -* update [閲嶅ぇ鏀瑰姩]security 璺緞閰嶇疆鎶藉彇鍒伴厤缃枃浠� -* update [閲嶅ぇ鏀瑰姩] 灏� framework 涓� system 妯″潡 瑙h�� 璋冩暣渚濊禆缁撴瀯 瑙e喅渚濊禆鍐茬獊 -* update [閲嶅ぇ鏀瑰姩]閲嶅啓 闃查噸鎻愪氦瀹炵幇 浣跨敤鍒嗗竷寮忛攣 瑙e喅骞跺彂闂 鍘嬫祴閫氳繃 - -### 渚濊禆鏇存柊 -* update springboot 2.5.4 => 2.5.5 bugfix鐗堟湰 -* update mybatis-plus 3.4.3.3 => 3.4.3.4 bugfix鐗堟湰 -* update redisson 3.16.2 => 3.16.3 bugfix鐗堟湰 -* update easyexcel 2.2.10 => 2.2.11 -* update hutool 5.7.11 => 5.7.13 -* update file-saver 2.0.4 => 2.0.5 -* update dart-sass 1.32.0 => 1.32.13 -* update sass-loader 10.1.0 => 10.1.1 - -### 鍔熻兘鏇存柊 -* update 浼樺寲浠g爜鐢熸垚 鏍规嵁MP鐢熸垚鐗规�� 璋冩暣瀵煎叆琛ㄧ粨鏋勯粯璁ゅ�煎悎鐞嗗寲 -* update 灏嗘墍鏈� 浜戝瓨鍌ㄥ瓧鏍� 鏀逛负 瀵硅薄瀛樺偍 閬垮厤璇В -* update 鏇存柊 @Cacheable 閿欒鐢ㄦ硶 娉ㄦ剰浜嬮」 -* update 浼樺寲 AddressUtils 绌烘牎楠屽鐞� -* update 鑿滃崟绠$悊鏀寔閰嶇疆璺敱鍙傛暟 -* update 浼樺寲aop璇硶 浣跨敤spring鑷姩娉ㄥ叆娉ㄨВ -* update 浣跨敤 Redisson 闄愭祦宸ュ叿 閲嶅啓闄愭祦瀹炵幇 -* update 浣跨敤 vue-data-dict 绠�鍖栨暟鎹瓧鍏镐娇鐢� -* update 澧炲姞鏃ュ織娉ㄨВ鏂板鏄惁淇濆瓨鍝嶅簲鍙傛暟寮�鍏� -* update 鐢ㄦ埛鏈櫥褰曟棩蹇楁敼涓� warn 绾у埆 -* update OSS妯″潡 鍏充簬涓嬭浇403鎶ラ敊淇℃伅浼樺寲 -* update 鏇存柊 Actuator prod 榛樿鏆存紡绔偣 澧炲姞鏆存紡 logfile 鏃ュ織绔偣 -* update 榛樿閫傞厤jdk11 娴嬭瘯 jdk17 鏃犲紓甯� -* update 灏佽閫氱敤涓嬭浇鏂规硶绠�鍖栦笅杞戒娇鐢� - -### 鏂板姛鑳� -* add 鏂板閫氱敤鏂规硶绠�鍖栨ā鎬�/缂撳瓨浣跨敤 -* add 澧炲姞 闄愭祦婕旂ず妗堜緥 -* add 澧炲姞 redis redisson 闆嗙兢閰嶇疆 - -### 婕忔礊淇 -* fix Cron琛ㄨ揪寮忕敓鎴愬櫒鍏抽棴鏃堕攢姣侊紝閬垮厤鍐嶆鎵撳紑鏃跺瓨鍦ㄤ笂涓�娆′慨鏀圭殑鏁版嵁 -* fix 鍏ㄥ眬闄愭祦key浼氬鍑轰竴涓�"-" 灏嗗叾绉诲姩鍒癐P鍚庨潰 鍘婚櫎澶氫綑鐨勭┖鏍� -* fix 淇澶氫富閿唬鐮佺敓鎴恇ug -* fix 淇 @Cacheable 涓� @DataScope 鍐茬獊闂 -* fix 淇浠g爜鐢熸垚椤甸潰鏁版嵁缂栬緫淇濆瓨涔嬪悗鎬绘槸璺宠浆绗竴椤电殑闂 - -### 鍔熻兘绉婚櫎 -* remove 绉婚櫎杩囨湡宸ュ叿 RedisCache -* remove 绉婚櫎鏃犵敤閰嶇疆绫� ServerConfig -* remove 绉婚櫎 SysUser 鏃犵敤瀛楁 salt - -## v3.1.0 - 2021-9-7 - -### 閲嶅ぇ鏇存柊 -* add [閲嶅ぇ鏀瑰姩] 杩囨湡 RedisCache 鏂板 RedisUtils 宸ュ叿绫� 鏂板 鍙戝竷璁㈤槄鍔熻兘 鏇寸伒宸т究浜庝娇鐢� -* add [閲嶅ぇ鏀瑰姩] 鏂板 saveOrUpdateAll 鏂规硶 鍙畬缇庢浛浠� saveOrUpdateBatch 楂樻�ц兘 -* update [閲嶅ぇ鏀瑰姩] 閲嶅啓 InsertAll 鏂规硶瀹炵幇 鍙畬缇庢浛浠� saveBatch 绉掔骇鎻掑叆涓婁竾鏁版嵁 -* update [閲嶅ぇ鏀瑰姩] 鏇存敼OSS涓婁紶閫氱敤璺緞鐢熸垚 鎸夌収骞存湀鏃ュ垎涓夌骇鐩綍 -* update [閲嶅ぇ鏀瑰姩] MP瀛楁楠岃瘉绛栫暐鏇存敼涓� NOT_NULL 涓埆鐗规畩瀛楁浣跨敤娉ㄨВ鍗曠嫭澶勭悊 -* update [閲嶅ぇ鏀瑰姩] 鎵�鏈変笟鍔¢�傞厤 RedisUtils 鏂板伐鍏� - -### 渚濊禆鍗囩骇 -* update springboot 2.5.3 => 2.5.4 -* update spring-boot-admin 2.5.0 => 2.5.1 -* update mybatis-plus 3.4.3 => 3.4.3.3 閫傞厤鍗囩骇 (鍖呭惈涓嶅吋瀹瑰崌绾�) -* update aliyun.oss 3.13.0 => 3.13.1 -* update qcloud.cos 5.6.47 => 5.6.51 -* update hutool 5.7.9 => 5.7.11 -* update maven-jar-plugin 3.1.1 => 3.2.0 -* update feign-okhttp 11.2 => 11.6 -* update redisson 3.16.1 => 3.16.2 - -### 鏂板姛鑳� -* add 浼樺寲 docker 澧炲姞 redis 閰嶇疆鏂囦欢 -* add 鏂板鏆楄壊鑿滃崟椋庢牸涓婚 -* add 鑿滃崟&閮ㄩ棬鏂板灞曞紑/鎶樺彔鍔熻兘 -* add 椤电鍙抽敭鎸夐挳娣诲姞鍥炬爣 椤电鏂板鍏抽棴宸︿晶 - -### 鍔熻兘鏇存柊 -* update 浼樺寲 OSS 妯″潡涓庝笂浼犵粍浠� 寮傚父澶勭悊 -* update 鏇存柊 jackson 閰嶇疆 鏀寔 LocalDateTime 鍏ㄥ眬鏍煎紡鍖� -* update 浼樺寲 浣跨敤鏉冮檺宸ュ叿 鑾峰彇鐢ㄦ埛淇℃伅 -* update 鑷畾涔夊彲鎷栧姩寮圭獥瀹藉害鎸囦护 -* update 閲嶆瀯 灏嗕笅杞絜xcel宸ュ叿鎻愬彇鍒板叏灞� -* update 瀹氭椂浠诲姟瀵规鏌ュ紓甯歌繘琛屼簨鍔″洖婊� -* update 浼樺寲spy閰嶇疆鏂囦欢涓� UTF8缂栫爜 瑙e喅涓枃娉ㄩ噴涔辩爜闂 -* update 淇敼鏃舵鏌ョ敤鎴锋暟鎹潈闄愯寖鍥� -* update 瑙e喅 logout 鍐欐 鏃犳硶鎵╁睍璺緞闂 -* update 浼樺寲浠g爜鐢熸垚 瀵煎叆涓庡悓姝� 鎵瑰鐞嗘晥鐜� -* update 淇敼鏃舵鏌ョ敤鎴锋暟鎹潈闄愯寖鍥� -* update 淇敼浠g爜鐢熸垚瀛楀吀鍥炴樉鏍峰紡 -* update 淇敼鏁版嵁瀛楀吀鍥炴樉 -* update 浼樺寲楠岃瘉鐮侀厤缃� 浣跨敤娉涘瀷 闃叉閿欒杈撳叆 -* update 浼樺寲鍏ㄥ眬绾跨▼姹犻厤缃� 浣跨敤娉涘瀷 闃叉閿欒杈撳叆 -* update 浣跨敤 MP 鍏ㄥ眬閰嶇疆鍒嗛〉婧㈠嚭 -* update 浠g爜鐢熸垚鍣� 瀵煎叆琛ㄦ椂鏌ヨ 鏂板垱寤鸿〃鐨勪紭鍏堟帓搴忓湪鍓嶉潰 -* update 瀹氭椂浠诲姟鏀寔鍦ㄧ嚎鐢熸垚cron琛ㄨ揪寮� -* update 鑷畾涔夊脊灞傛孩鍑烘粴鍔ㄦ牱寮� -* update 浼樺寲鍒嗛〉宸ュ叿鎺掑簭澶勭悊 -* update 浼樺寲 oss閰嶇疆 浣跨敤鍙戝竷璁㈤槄宸ュ叿 鍒锋柊閰嶇疆 -* update 浠g爜鐢熸垚 鏌ヨ鏁版嵁搴撳垪琛� 鎸夌収鏃堕棿鍊掑簭 -* update 浣跨敤MP鑷鍒ゆ柇鏁版嵁搴撶被鍨� - -### 婕忔礊淇 -* fix 淇淇濆瓨閰嶇疆涓婚棰滆壊澶辨晥闂 -* fix 淇 瀵煎嚭闆姳id excel澶辩湡闂 -* fix 淇 druid 鐩戞帶 闆嗙兢妯″紡涓� 鏃犳硶璺敱鍒板悓涓�鍙版湇鍔″櫒闂 -* fix 瑙e喅鎼滅储鏍¢獙涓嶉�氳繃闂 -* fix 淇瀹氭椂鍣ㄥ伐鍏风紪鍐欓敊璇棶棰� -* fix 淇 minio 鏃� perfix 闂 -* fix 淇 瀵屾枃鏈浘鐗囪矾寰勯敊璇棶棰� -* fix 淇 OSS閰嶇疆娓呯┖琚繃婊ら棶棰� -* fix 淇 excel 瀵煎叆涓� class 鏈搴旈棶棰� -* fix 淇瀛楀吀缁勪欢鍊间负鏁村舰涓嶆樉绀洪棶棰� - -## v3.0.0 - 2021-8-18 - -### 閲嶅ぇ鏇存柊 -* add [閲嶅ぇ鏇存柊]閲嶅啓 OSS 妯″潡鐩稿叧瀹炵幇 鏀寔鍔ㄦ�侀厤缃�(椤甸潰閰嶇疆) -* add [閲嶅ぇ鏇存柊]澧炲姞 jackson 瓒呭嚭 JS 鏈�澶ф暟鍊艰嚜鍔ㄨ浆瀛楃涓�(闆姳id搴忓垪鍖�)澶勭悊 -* add [閲嶅ぇ鏇存柊]閲嶅啓 闃查噸鎻愪氦鎷︽埅鍣� 鏀寔鍏ㄥ眬涓庢敞瑙h嚜瀹氫箟 鎷︽埅鏃堕棿閰嶇疆閰嶇疆 浼樺寲閫昏緫 -* add [閲嶅ぇ鏇存柊]鏂板鏄惁寮�鍚敤鎴锋敞鍐屽姛鑳� -* add [閲嶅ぇ鏇存柊]澧炲姞 easyexcel 宸ュ叿绫� -* add [閲嶅ぇ鏇存柊]闆嗘垚 鎬ц兘鍒嗘瀽鎻掍欢 p6spy 鏇村己鍔茬殑 SQL 鍒嗘瀽 -* add [閲嶅ぇ鏇存柊]澧炲姞 瀹屾暣鍥介檯鍖栬В鍐虫柟妗� -* add [閲嶅ぇ鏇存柊]鏀寔鑷畾涔夋敞瑙e疄鐜版帴鍙i檺娴� - -### 渚濊禆鍗囩骇 -* update feign-okhttp 11.0 => 11.2 -* update okhttp 3.19.4 => 4.9.1 -* update minio 8.2.0 => 8.3.0 -* update hutool 5.7.6 => 5.7.7 -* update element-ui 2.15.2 => 2.15.5 -* update springboot admin 2.4.3 => 2.5.0 (鏂板 Quartz 涓撳睘鐩戞帶椤�) - -### 鏂板姛鑳� -* add 澧炲姞 admin 鐩戞帶瀹㈡埛绔紑鍏� -* add 澧炲姞 鍥介檯鍖栨紨绀篸emo - -### 渚濊禆鏇存柊 -* update 鏇存柊杞欢鏋舵瀯鍥� -* update 浼樺寲XSS璺ㄧ珯鑴氭湰杩囨护 -* update 浼樺寲BLOB涓嬭浇鏃舵竻闄RL瀵硅薄寮曠敤 -* update 鏇存柊 闃查噸鎻愪氦鎷︽埅鍣� demo婕旂ず妗堜緥 -* update 鏃ュ父瀛楃涓叉牎楠� 缁熶竴閲嶆瀯鍒� StringUtils 渚夸簬缁存姢鎵╁睍 -* update 淇敼 鑷姩娉ㄥ叆鍣� 鐢ㄦ埛鏈櫥褰曞紓甯告嫤鎴姏鍑鸿鍛� 杩斿洖Null -* update 閲嶆瀯 缁熶竴浣跨敤 娴佸伐鍏蜂笅杞� -* update 閲嶅啓 鎵�鏈変笟鍔″鍑� 閫傞厤easyexcel宸ュ叿 -* update 绉诲姩鏂囦欢瀛樺偍涓氬姟鍒� system 妯″潡 -* update 浠g爜鐢熸垚妯℃澘 閫傞厤鏂癳xcel瀵煎嚭 -* update 灏� Actuator 閰嶇疆 绉诲姩鍒板叏灞�閰嶇疆 -* update 缁熶竴闀滃儚鏃跺尯閰嶇疆 绉婚櫎涓绘満鏃堕棿鏄犲皠 -* update 鏇存敼澶氭暟鎹簮妗嗘灦鏇存竻鏅扮殑渚濊禆鍚� -* update 鏇存柊 闃块噷浜� maven婧� 鏂板湴鍧� -* update 琛ュ叏鍩虹瀹炰綋 鏂囨。娉ㄨВ -* update 浠g爜鐢熸垚鏂囨。娉ㄨВ 澧炲姞蹇呭~鍒ゆ柇閰嶇疆 -* update 娉ㄥ叆鍣� insert 澧炲姞 update 瀛楁澶勭悊 -* update 榛樿棣栭〉浣跨敤keep-alive缂撳瓨 - -### 婕忔礊淇 -* fix 鐢熶骇minio鍥炴樉闂 -* fix 淇瑙掕壊鍒嗛厤鐢ㄦ埛椤甸潰鎺ユ敹鍙傛暟涓庝紶閫掑弬鏁扮被鍨嬩笉涓�鑷村鑷寸殑閿欒 -* fix 淇浠g爜鐢熸垚 鍒犻櫎鎸夐挳鎶ラ敊 loading 涓嶅彇娑堥棶棰� -* fix 瑙e喅鐧诲綍鍚庢祻瑙堝櫒鍚庡彴Breadcrumb缁勪欢鎶ラ敊 -* fix 淇DictUtils鏂规硶鎶ラ敊 -* fix 澶村儚涓婁紶 鏈蛋OSS瀛樺偍闂 -* fix oss鍒楄〃 jpeg 涓嶅洖鏄鹃棶棰� -* fix 淇鎿嶄綔鏃ュ織鏍规嵁鐘舵�佹煡璇㈠紓甯搁棶棰� - -### 鍔熻兘绉婚櫎 -* remove 绉婚櫎鍘熺敓excel宸ュ叿 -* remove 绉婚櫎閫氱敤涓婁紶涓嬭浇鎺ュ彛涓庨厤缃� - -## v2.6.0 - 2021-7-28 - -### 閲嶅ぇ鏇存柊 -* add [閲嶅ぇ鏂板] 澧炲姞 OSS 瀵硅薄瀛樺偍妯″潡 -* remove [閲嶅ぇ鏀瑰姩] 鍒犻櫎 鑷甫閫氱敤涓婁紶 鎺ュ彛 浣跨敤OSS妯″潡鏇挎崲 -* update [閲嶅ぇ鏀瑰姩] 閲嶅啓VO杞崲 鏀寔娣辨嫹璐� 灏哣O绫绘娊璞″埌 ServicePlus 娉涘瀷澶勭悊 -* update [閲嶅ぇ鏀瑰姩] 澶欱O鍚堝苟 浣跨敤鍒嗙粍鏍¢獙 鐢熸垚BO浠g爜 -* update [閲嶅ぇ鏀瑰姩] 閲嶆瀯 IServicePlus 鍔熻兘 澧炲姞 BeanCopyUtils 娣辨嫹璐濆伐鍏� - -### 渚濊禆鍗囩骇 -* update springboot 2.4.9 => 2.5.3 -* update hutool 5.7.4 => 5.7.6 -* update minio 8.2.2 => 8.3.0 -* update docker plugin 1.2.0 => 1.2.2 -* update redisson 3.16.0 => 3.16.1 -* update datasource 3.4.0 => 3.4.1 -* update element-ui 2.15.2 => 2.15.3 - -### 鏂板姛鑳� -* add 婕旂ずDemo澧炲姞鑷畾涔夊垎椤垫帴鍙f渚� -* add 瑙掕壊&鑿滃崟鏂板瀛楁灞炴�ф彁绀轰俊鎭� - -### 鍔熻兘鏇存柊 -* update 鏇存柊druid閰嶇疆 鐙珛閰嶇疆鏇存槑鏄� -* update 椤堕儴鑿滃崟鎺掗櫎闅愯棌鐨勯粯璁よ矾鐢� -* update 瀵屾枃鏈柊澧炰笂浼犳枃浠跺ぇ灏忛檺鍒� -* update 瀵煎叆鐢ㄦ埛鏍峰紡璋冩暣 -* update 椤堕儴鑿滃崟鏍峰紡璋冩暣 -* update 瀵嗙爜妗嗘柊澧炴樉绀哄垏鎹㈠瘑鐮佸浘鏍� -* update 鍐呴摼璁剧疆meta淇℃伅 -* update 璺宠浆璺敱楂樹寒鐩稿搴旂殑鑿滃崟鏍� - -### 婕忔礊淇 -* fix 淇澶氭暟鎹簮druid鍏ㄥ眬閰嶇疆缂╄繘閿欒 寮曡捣鏃犳晥閰嶇疆闂 -* fix 淇瀹氭椂浠诲姟鏃ュ織鎵ц鐘舵�佹樉绀� -* fix 淇 鎺堟潈瑙掕壊绌烘暟鎹棶棰� -* fix 淇 DictData 鍒犻櫎閫昏緫闂 -* fix 淇浠绘剰璐︽埛瓒婃潈婕忔礊 - -## v2.5.2 - 2021-7-19 - -### 鍔熻兘鏇存柊 -* update 浼樺寲浠g爜鐢熸垚鍣ㄦ敞閲婃牸寮� - -### 婕忔礊淇 -* fix 鍥炴粴浠g爜鐢熸垚 鎵瑰鐞嗕紭鍖� -* fix 浠g爜鐢熸垚 queryType 閲嶅鍕鹃�夋暟鎹簱鏃犻粯璁ゅ�奸棶棰� -* fix 淇鎺ュ彛鍗曞弬鏁版牎楠屾棤鏁堥棶棰� -* fix 浠g爜鐢熸垚 queryType >= <= 鏍囪瘑绗﹂敊璇棶棰� -* fix 淇浠g爜鐢熸垚瀛楀吀闂 -* fix 淇 thread-pool: enabled 閰嶇疆涓嶇敓鏁堥棶棰� - -### 鍔熻兘绉婚櫎 -* remove 鍒犻櫎鏃犵敤鏂囨。涓庤剼鏈� - -## v2.5.1 - 2021-7-13 -* update 楠岃瘉鐮佸紑鍏� 杞Щ鍒拌〃 鍙傛暟绠$悊 鍐� -* update 浣跨敤hutool閲嶆瀯 鍒ゆ柇鏄惁url - -### 婕忔礊淇 - -### 鍔熻兘鏇存柊 -* fix 淇 docker涓氬姟闆嗙兢閮ㄧ讲涓庢枃浠朵笂浼犵殑闂 -* fix 淇浠g爜鐢熸垚鍚屾琛ㄧ粨鏋刬d鍐茬獊闂 -* fix 淇浠g爜鐢熸垚閫夋嫨瀛楀吀 鏃犳硶鍙栨秷闂 -* fix 淇浠g爜鐢熸垚瀛楀吀涓簄ull闂 -* fix 鍥剧墖涓婁紶 澶氬浘鏃舵棤娉曞垹闄ょ浉搴斿浘鐗囦慨澶� - -### 鍔熻兘绉婚櫎 -* remove 鍒犻櫎瀵屾枃鏈瑅ideo浜嬩欢 - -## v2.5.0 - 2021-7-12 - -### 渚濊禆鍗囩骇 -* update springboot 2.4.7 => 2.4.8 -* update knife4j 3.0.2 => 3.0.3 -* update hutool 5.7.2 => 5.7.4 -* update spring-boot-admin 2.4.1 => 2.4.3 -* update redisson 3.15.2 => 3.16.0 - -### 鏂板姛鑳� -* add 澧炲姞 docker 缂栨帓 涓� shell 鑴氭湰 -* add 澧炲姞 feign 鐔旀柇 鑷畾涔夌粨鏋勪綋瑙f瀽鏂规硶 涓� demo 娉ㄩ噴 -* add 鐢ㄦ埛绠$悊鏂板鍒嗛厤瑙掕壊鍔熻兘 -* add 瑙掕壊绠$悊鏂板鍒嗛厤鐢ㄦ埛鍔熻兘 -* add 澧炲姞spring-cache婕旂ず妗堜緥 - -### 鍔熻兘鏇存柊 -* update 鐙珛 springboot-admin 鐩戞帶鍒版墿灞曟ā鍧楅」鐩� -* update springboot-admin 鐩戞帶 澧炲姞鐢ㄦ埛鐧诲綍鏉冮檺绠$悊 -* update 浼樺寲浠g爜鐢熸垚鍣� 鎵归噺瀵煎叆 -* update 浼樺寲 澧炲姞MP娉ㄥ叆寮傚父鎷︽埅 -* update 鍏抽棴榛樿浜岀骇缂撳瓨 鎺ㄨ崘浣跨敤 spring-cache 娉ㄨВ鎵嬪姩缂撳瓨 -* update FileUpload ImageUpload缁勪欢 鏀寔澶氬浘鐗囦笂浼� -* update 浼樺寲涓嫳鏂囪瑷�閰嶇疆 -* update 瑙勮寖maven鍐欐硶 - -### 婕忔礊淇 -* fix redis鑾峰彇map灞炴�ug淇銆� -* fix 淇 鎸夐挳loading 鍚庣500鍗℃闂 -* fix 鐩稿璺緞涓嬭浇闂 -* fix 淇 hutool 宸ュ叿杩斿洖缁撴灉涓嶄竴鑷撮棶棰� - -## v2.4.0 - 2021-6-24 - -### 渚濊禆鍗囩骇 -* update springboot 2.3.11 => 2.4.7 -* update springboot-admin 2.3.1 => 2.4.1 -* update feign 2.2.6 => 3.0.3 -* update hutool 5.6.7 => 5.7.2 - -### 鍔熻兘鏇存柊 -* update 澶氭暟鎹簮鏇挎崲鎴恉ynamic-datasource -* update 閫傞厤 jdk11 -* update 闆嗘垚 Lock4j 鍒嗗竷寮忛攣 -* update 绉婚櫎 fastjson 澧炲姞 jackson 宸ュ叿绫� 閲嶅啓鐩稿叧涓氬姟 -* update 浼樺寲 寮傛宸ュ巶閲嶅啓 浣跨敤 spring 寮傛澶勭悊 -* update 鍏ㄥ眬鎸傝浇瀛楀吀鏍囩缁勪欢 -* update 鏃ュ織鍒楄〃鏀寔鎺掑簭鎿嶄綔 -* update 鏇存柊 feign demo 鏇存竻鏅扮殑鐢ㄦ硶 -* update 鏇存柊澶氭暟鎹簮婕旂ず妗堜緥 - -### 鏂板姛鑳� -* add 澧炲姞 ServicePlusImpl 鑷姩浠ュ疄鐜扮被 閲嶅啓绉婚櫎浜嬪姟娉ㄨВ鏂规硶 闃叉澶氭暟鎹簮澶辨晥 -* add 澧炲姞 鑷畾涔� 鎵归噺insert鏂规硶 -* add 澧炲姞 Swagger3 鐢ㄦ硶绀轰緥 - -### 婕忔礊淇 -* fix 淇鍦板潃ip鍦板潃鐗规畩鍥炵幆闂 - -## v2.3.2 - 2021-6-11 - -### 鏂板姛鑳� -* add redis閿佸伐鍏风被缂栧啓 - -### 鍔熻兘鏇存柊 -* update spring-cache 鏁村悎 redisson -* update MybatisPlus鏁村悎Redis浜岀骇缂撳瓨 -* update swagger 鍗囩骇涓� 3.0.0 浣跨敤 OAS_30 鍗忚 -* update 浼樺寲 浠g爜鐢熸垚鍣� 澧炲姞琛ㄥ崟闃查噸娉ㄨВ -* update 浼樺寲 閿佸垏闈唬鐮� key鍒板父閲忕被 - -### 婕忔礊淇 -* fix 淇鐩稿璺緞涓婁紶寮傚父闂 - -## v2.3.1 - 2021-6-4 - -### 鏂板姛鑳� -* add 澧炲姞 redisson 鍒嗗竷寮忛攣 娉ㄨВ涓巇emo妗堜緥 -* add 澧炲姞 Oracle 鍒嗘敮 - -### 鍔熻兘鏇存柊 -* update 浼樺寲 redis 绌哄瘑鐮佸吋瀹规�� -* update 浼樺寲鍓嶇浠g爜鐢熸垚鎸夐挳澧炲姞 loading - -### 婕忔礊淇 -* fix 淇 redisson 涓嶈兘鎵归噺鍒犻櫎鐨刡ug -* fix 淇琛ㄥ崟鏋勫缓閫夋嫨涓嬫媺閫夋嫨鎺у埗鍙版姤閿欓棶棰� -* fix 淇 vo 浠g爜鐢熸垚 涓婚敭鍒楄〃鏄剧ず 閲嶅鐢熸垚bug -* fix 淇涓婁紶璺緞 win 鎵撳寘缂栬瘧涓� win 璺緞, linux 鎶ラ敊bug - -## v2.3.0 - 2021-6-1 - -### 鏂板姛鑳� -* add 鍗囩骇 luttuce 涓� redisson 鎬ц兘鏇村己 宸ュ叿鏇村叏 -* add 澧炲姞娴嬭瘯鏁版嵁sql鏂囦欢 -* add 澧炲姞demo妯″潡 鍗曡〃婕旂ず妗堜緥(鍖呭惈鏁版嵁鏉冮檺) - -### 鍔熻兘鏇存柊 -* update 瀹岀編淇 鏁版嵁鏉冮檺鍔熻兘(鏀寔鍗曡〃澶氳〃杩囨护) -* update 浼樺寲浠g爜鐢熸垚妯℃澘 -* update 浼樺寲 system 妯″潡 鎵归噺鎿嶄綔鎬ц兘 - -## v2.2.1 - 2021-5-29 - -### 鏂板姛鑳� -* add 澧炲姞 security 鏉冮檺妗嗘灦 `@Async` 寮傛娉ㄨВ閰嶇疆 - -### 鍔熻兘鏇存柊 -* update 浼樺寲dataScope鍙傛暟闃叉娉ㄥ叆 -* update 浼樺寲鍙傛暟&瀛楀吀缂撳瓨鎿嶄綔 -* update 澧炲姞淇敼鍖呭悕鏂囨。 -* update 鏂囨。澧炲姞婕旂ず鍥句緥 - -### 婕忔礊淇 -* fix 淇閮ㄩ棬绫籹ql绗﹀彿閿欒 - -## v2.2.0 - 2021-5-25 - -* 鍚屾鍗囩骇 RuoYi-Vue 3.5.0 - -### 鏂板姛鑳� -* add 澧炲姞楠岃瘉鐮佸紑鍏� -* add 鏂板IE娴忚鍣ㄧ増鏈繃浣庢彁绀洪〉闈� - -### 鍔熻兘鏇存柊 -* update 鍗囩骇druid鍒版渶鏂扮増鏈瑅1.2.6 -* update 鍗囩骇fastjson鍒版渶鏂扮増1.2.76 -* update 淇敼bo鍔犲叆鍒ゆ柇鏄惁璁剧疆蹇呭~鍐嶅姞杞藉繀濉敞瑙� -* update 鐢熸垚vue妯℃澘瀵煎嚭鎸夐挳鐐瑰嚮鍚庢坊鍔犻伄缃� -* update Redis璁剧疆HashKey搴忓垪鍖� -* update 浼樺寲Redis搴忓垪鍖栭厤缃� - -### 婕忔礊淇 -* fix 淇浠g爜鐢熸垚鍣ㄤ腑琛ㄥ瓧娈靛彇娑堝繀濉棤娉曟洿鏂伴棶棰� - -## v2.1.2 - 2021-5-21 - -### 鍔熻兘鏇存柊 -* update springboot 鍗囩骇 2.3.11 -* update mybatis-plus 鍗囩骇 3.4.3 鍒嗛〉Plus瀵硅薄閫傞厤鏇存柊 -* update 楠岃瘉鐮佺敓鎴愭洿鏂颁负鏃犵鍙锋暣鏁拌绠� -* update 璇锋眰鍝嶅簲瀵硅薄 涓� 鍒嗛〉瀵硅薄 缁撴瀯淇敼 閫傞厤鎺ュ彛鏂囨。閰嶇疆 -* update swagger澧炲姞璇锋眰鍓嶇紑 - -## v2.1.1 - 2021-5-19 - -### 鍔熻兘鏇存柊 -* update 閰嶇疆缁熶竴鎻愬彇涓� properties 閰嶇疆绫� -* update 鍒嗛〉宸ュ叿 鍒犻櫎杩囨湡鏂规硶 -* update admin 瀹炴椂鐩戞帶鏃ュ織 鏀逛负淇濈暀涓�澶� - -### 婕忔礊淇 -* fix 淇swagger寮�鍏虫棤娉曟帶鍒跺叧闂棶棰� -* fix maven install 寮傚父 - -## v2.1.0 - 2021-5-17 - -### 鍔熻兘鏇存柊 -* update knife4j鍗囩骇3.0.2 -* update 澧炲己鍒嗛〉宸ュ叿鍏煎鎬� -* update 閫氱敤Service鎺ュ彛 澧炲姞鑷畾涔塿o杞崲鍑芥暟 - -### 绉婚櫎鍔熻兘 -* remove 绉婚櫎ruoyi鑷甫鏈嶅姟鐩戞帶(Admin宸插叏閮ㄥ寘鍚�) - -## v2.0.0 - 2021-5-15 - -### 渚濊禆鍗囩骇 -* springboot 鍗囩骇 2.3.10 渚濊禆鍏ㄩ潰鍗囩骇閫傞厤 - -### 鏂板姛鑳� -* add 澧炲姞鍒嗛〉宸ュ叿 -* add 澧炲姞 澧炲己Mapper 涓� 澧炲己Service 閲嶅啓涓氬姟閫傞厤 -* add 浠g爜鐢熸垚鍣� 澧炲姞鏍¢獙娉ㄨВ - -### 鍔熻兘鏇存柊 -* update 浠g爜鐢熸垚鍣ㄤ慨鏀逛负MP鍒嗛〉 -* update 浣跨敤 MP 鍒嗛〉宸ュ叿 閲嶆瀯涓氬姟 -* update 閲嶅啓鏂囨。浠嬬粛 - -### 绉婚櫎鍔熻兘 -* remove 绉婚櫎 pagehelper 鍒嗛〉宸ュ叿 - -### 婕忔礊淇 -* fix 淇浠g爜鐢熸垚 鏁版嵁鏉冮檺闂 - -## v1.0.2 - 2021-5-13 - -### 鍔熻兘鏇存柊 -* update 鏇存柊鏁村悎鎵撳寘鏂囨。 閲嶆柊鎺掔増 - -### 婕忔礊淇 -* fix vue涓巄oot鏁村悎鎵撳寘涓巃dmin椤甸潰璺敱鍐茬獊 - -## v1.0.1 - 2021-5-11 - -### 渚濊禆鏇存柊 -* update 鏇存柊banner -* update 閰嶇疆杞Щ鍒� yml 鏂囦欢 缁熶竴绠$悊 -* update 涓婁紶濯掍綋绫诲瀷娣诲姞瑙嗛鏍煎紡 -* update 鏍戠骇缁撴瀯鏇存柊瀛愯妭鐐逛娇鐢╮eplaceFirst -* update 鍒犻櫎鎿嶄綔鏃ュ織璁板綍鏃ュ織 - -### 婕忔礊淇 -* fix 淇瀵煎叆琛ㄦ潈闄愭爣璇� -* fix 鏂囦欢涓婁紶鏃舵姤閿� - -## v1.0.0 - 2021-5-10 -* 鍩轰簬 ruoyi-vue 3.4.0 鍙戝竷 v1.0.0 绋冲畾鐗� \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/architecture_diagram.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/architecture_diagram.md deleted file mode 100644 index ef65fef..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/architecture_diagram.md +++ /dev/null @@ -1,3 +0,0 @@ -# 杞欢鏋舵瀯鍥� -- - - - \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/doc.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/doc.md deleted file mode 100644 index 06e62dc..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/doc.md +++ /dev/null @@ -1,89 +0,0 @@ -# 鎺ュ彛鏂囨。 -- - - -## 鐗堟湰 >= `4.3.0` -## 璇存槑 - -鐢变簬 `springfox` 涓� `knife4j` 鍧囧仠姝㈢淮鎶� bug浼楀 <br> -鏁呬粠 `4.3.0` 寮�濮� 杩佺Щ鍒� `springdoc` 妗嗘灦 <br> -鍩轰簬 `javadoc` 鏃犳敞瑙i浂鍏ヤ镜鐢熸垚瑙勮寖鐨� `openapi` 缁撴瀯浣� <br> -鐢变簬妗嗘灦鑷甫鏂囨。UI鍔熻兘鍗曚竴鎵╁睍鎬у樊 鏁呯Щ闄よ嚜甯I 寤鸿浣跨敤澶栫疆鏂囨。宸ュ叿 - -## 鏂囨。宸ュ叿浣跨敤 -鐢变簬妗嗘灦閲囩敤 `openapi` 琛屼笟瑙勮寖 鏁呭競闈笂澶ч儴鍒嗙殑妗嗘灦鍧囨敮鎸� 鍙嚜琛岄�夋嫨 <br> -渚嬪: `apifox` `apipost` `postman` `torna` `knife4j` 绛� 鏍规嵁瀵瑰簲宸ュ叿鐨勬枃妗f帴鍏ュ嵆鍙� - -## Swagger鍗囩骇SpringDoc鎸囧崡 - -甯歌鍔熻兘濡備笅 鍏朵粬鍔熻兘鑷鎸栨帢 <br> -**娉ㄦ剰: `javadoc` 鍙兘鏇挎崲鍩虹鍔熻兘 鐗规畩鍔熻兘杩橀渶瑕佷娇鐢ㄦ敞瑙e疄鐜�** - -| swagger | springdoc | javadoc | -|----------------------------------|---------------------------------|--------------------| -| @Api(name = "xxx") | @Tag(name = "xxx") | java绫绘敞閲婄涓�琛� | -| @Api(description= "xxx") | @Tag(description= "xxx") | java绫绘敞閲� | -| @ApiOperation | @Operation | java鏂规硶娉ㄩ噴 | -| @ApiIgnore | @Hidden | 鏃� | -| @ApiParam | @Parameter | java鏂规硶@param鍙傛暟娉ㄩ噴 | -| @ApiImplicitParam | @Parameter | java鏂规硶@param鍙傛暟娉ㄩ噴 | -| @ApiImplicitParams | @Parameters | 澶氫釜@param鍙傛暟娉ㄩ噴 | -| @ApiModel | @Schema | java瀹炰綋绫绘敞閲� | -| @ApiModelProperty | @Schema | java灞炴�ф敞閲� | -| @ApiModelProperty(hidden = true) | @Schema(accessMode = READ_ONLY) | 鏃� | -| @ApiResponse | @ApiResponse | java鏂规硶@return杩斿洖鍊兼敞閲� | - -# 寤鸿浣跨敤 `Apifox`(甯歌闂鏈夊叾浠栧鎺ユ柟寮�) - -瀹樼綉杩炴帴: [https://www.apifox.cn/](https://www.apifox.cn/) <br> -瑙嗛鏁欑▼: [springdoc涓巃pifox閰嶅悎浣跨敤](https://www.bilibili.com/video/BV1mr4y1j75M?p=8&vd_source=8f52c77be3233dbdd1c5e332d4d45bfb) - - - -鏀寔 鏂囨。缂栧啓 鎺ュ彛璋冭瘯 Mock 鎺ュ彛鍘嬫祴 鑷姩鍖栨祴璇� 绛変竴绯诲垪鍔熻兘 - -### 鎺ュ叆妗嗘灦 - -> 1.涓嬭浇鎴栦娇鐢╳eb鍦ㄧ嚎鐗� 鍒涘缓涓�涓嚜宸辩殑椤圭洰 - - - -> 2.杩涘叆椤圭洰 閫夋嫨椤圭洰璁剧疆 鎵惧埌鑷姩鍚屾 - - - -> 3.鏍规嵁椤圭洰鍐呮墍鏈夋枃妗g粍瀹屾垚鎵�鏈夋暟鎹簮鍒涘缓(鎷夊彇鍚庣`openapi`缁撴瀯浣�)<br> -鏁版嵁婧怳RL鏍煎紡 `http://鍚庣ip:绔彛/v3/api-docs/缁勫悕`<br> -椤圭洰鍐呮墍闇�:<br> -`http://localhost:8080/v3/api-docs/1.婕旂ず妯″潡` <br> -`http://localhost:8080/v3/api-docs/2.閫氱敤妯″潡` <br> -`http://localhost:8080/v3/api-docs/3.绯荤粺妯″潡` <br> -`http://localhost:8080/v3/api-docs/4.浠g爜鐢熸垚妯″潡` <br> -涔熷彲涓嶅垎缁勭粺涓�瀵煎叆: `http://localhost:8080/v3/api-docs` <br> - - - - - -> 4.閫夋嫨 鎺ュ彛绠$悊 椤圭洰姒傝 鐐瑰嚮绔嬪嵆瀵煎叆 骞剁瓑寰呭鍏ュ畬鎴�<br> -鍚庣画浼氭牴鎹瓥鐣ユ瘡3涓皬鏃惰嚜鍔ㄥ鍏ヤ竴娆�<br> -姣忔閲嶆柊杩涘叆apifox涔熶細鑷姩鍚屾涓�娆�<br> -鍚庣鏈夋敼鍔ㄤ篃鍙互鎵嬪姩鐐瑰嚮瀵煎叆<br> - - - -> 5.(娉ㄦ剰鐗堟湰鍙�)璁剧疆閴存潈 閫夋嫨鎺ュ彛绠$悊 椤圭洰姒傝 鎵惧埌Auth 鎸夌収濡備笅閰嶇疆 - -**鐗堟湰鍙�: >= 5.X** - - - -**鐗堟湰鍙�: 4.X** - - - -> key瀵瑰簲椤圭洰閰嶇疆 榛樿涓� `Authorization` - - - - - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/i18n.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/i18n.md deleted file mode 100644 index 4052979..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/i18n.md +++ /dev/null @@ -1,33 +0,0 @@ -# 鍥介檯鍖栨柟妗� -- - - -* 鍓嶇鍥介檯鍖栧弬鑰� [ruoyi鍓嶇鍥介檯鍖栨枃妗(http://doc.ruoyi.vip/ruoyi-vue/document/htsc.html#鍓嶇鍥介檯鍖栨祦绋�)<br> -* 鍚庣鍥介檯鍖�(2.7.0 浠ヤ笂澧炲姞) -* 3.4.0 浠ヤ笂鏀寔 `Validator` 鏍¢獙妗嗘灦 -* 鍙傝�� `demo` 妯″潡 `TestI18nController` 鍥介檯鍖栨紨绀烘渚� - 鍦� `Header` 璇锋眰澶� 澧炲姞涓婁笅鏂囪瑷�鍙傛暟 `content-language` 鍙傛暟闇�涓庡浗闄呭寲閰嶇疆鏂囦欢鍚庣紑瀵瑰簲 - 濡� `zh_CN` `en_US` 绛�<br> - - - -## 鑾峰彇 `code` 瀵瑰簲鍥介檯鍖栧唴瀹� - -<br> -<br> - - -## 浣跨敤 `Validator` 妗嗘灦鏍¢獙 `controller` 鍙傛暟杩斿洖鍥介檯鍖� - -`controller` 鏍¢獙鎺ュ彛鍙傛暟 闇�瑕佸湪绫诲鍔� `@Validated` 娉ㄨВ<br> -<br> -鍙傛暟瀵瑰簲鏍¢獙娉ㄨВ 浣跨敤 `{code}` 褰㈠紡鏍囨敞浣跨敤鍥介檯鍖栧鐞�<br> -<br> -<br> - - -## 浣跨敤 `Validator` 妗嗘灦鏍¢獙 `Bean` 杩斿洖鍥介檯鍖� - -`Bean` 鏍¢獙闇�瑕佸湪鎺ュ彛鏍¢獙 `Bean` 鍙傛暟浣跨敤 `@Validated` 娉ㄨВ<br> -<br> -`Bean` 鍐呭睘鎬ф牎楠屾敞瑙� 浣跨敤 `{code}` 褰㈠紡鏍囨敞浣跨敤鍥介檯鍖栧鐞�<br> -<br> - \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/new_module.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/new_module.md deleted file mode 100644 index 87b992a..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/new_module.md +++ /dev/null @@ -1,15 +0,0 @@ -# 鍏充簬濡備綍鍒涘缓鏂版ā鍧� -- - - -* 鍙傝�價uoyi-demo妯″潡 -* 闇�瑕佹敼鍔�: 鐖秔om 涓� admin妯″潡pom - - - - - -### 娉ㄦ剰浜嬮」 -濡傛灉鏄袱涓笉鍚屽寘鍚嶇殑妯″潡 闇�瑕佷慨鏀瑰涓嬮厤缃� - - - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/update_package_name.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/update_package_name.md deleted file mode 100644 index 2dcab84..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/update_package_name.md +++ /dev/null @@ -1,33 +0,0 @@ -# 鍏充簬淇敼鍖呭悕 -- - - - -**娉ㄦ剰: 鑰佸寘鍚嶄负 com.ruoyi** - -## 1.闅忎究鎵句釜鍦版柟鏂板缓 org.dromara 鍖� - - -## 2.鍦ㄥ寘涓婂彸閿�夋嫨 refactor -> rename 閫夋嫨 All Directories - - - -**鍥犱负dromara缁勭粐涓嬫湁寰堝渚濊禆瀵艰嚧idea鏃犳硶璇嗗埆瀹屾暣鍖呭悕** -<br> - - -**闇�瑕佸厛灏哾romara淇敼涓� 渚嬪: ruoyi 鐒跺悗閲嶅涓婅堪姝ラ 杩欐牱灏卞彲浠ユ暣鍖呬慨鏀逛簡** -<br> - - -## 3.浣跨敤IDEA鍏ㄥ眬鏇挎崲 org.dromara 鏇挎崲涓� com.xxx - - - -**娉ㄦ剰: 鐢变簬dromara缁勭粐涓嬮」鐩緢澶� 闈炴湰妗嗘灦鐨勪緷璧栨ā鍧� 璇峰嬁淇敼 渚嬪涓婂浘涓殑 org.dromara.sms4j** - -## 4.濡傛湁闇�瑕� 灏嗘墍鏈夋ā鍧楀悕閫愪竴淇敼鍗冲彲 - -## 5.淇敼瀹屾垚鍚庨渶鏌ョ湅鎵�鏈塩ommon鍖呬笅妯″潡spi鏂囦欢鏄惁淇敼姝g‘ - -**鑰佺増鏈琲dea鎴栬�呮湭鎸夌収鏁欑▼淇敼鍖呭悕鍙兘瀵艰嚧鏂囦欢涓㈠寘闂** - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/update_url.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/update_url.md deleted file mode 100644 index 0f5f106..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/update_url.md +++ /dev/null @@ -1,26 +0,0 @@ -# 淇敼搴旂敤璺緞 -- - - -## 淇敼鍚庣璺緞 - -鏇存敼 `application.yml` 鐨� `server.servlet.context-path` 鍗冲彲鏇存敼鍚庣瀹瑰櫒璺緞 - - - -涓庝箣瀵瑰簲鍓嶇 `dev`鐜 闇�鏇存敼 `vite.config.ts` 鐨勪唬鐞嗚矾寰� - - - -`prod` 鐢熶骇鐜闇�淇敼 `nginx.conf` 鍚庣浠g悊璺緞 - - - -## 淇敼鍓嶇璺緞 -### 娉ㄦ剰: 3.4.0 鎻愪緵渚挎嵎鏇存敼鏂瑰紡 -鐩存帴淇敼瀵瑰簲鐜鐨� `.env.鐜` 鏂囦欢鍐呯殑 `VITE_APP_CONTEXT_PATH` 搴旂敤璁块棶璺緞鍗冲彲 - - <br> - - -鐢熶骇鐜 `nginx.conf` 涓庝箣瀵瑰簲淇敼鍗冲彲 <br> -**娉ㄦ剰: 鏂囦欢鐪熷疄鐩綍涓� `/usr/share/nginx/html/admin/index.html` 姝ゅ姛鑳戒竴鑸负澶氶」鐩儴缃查渶瑕� 鏁呬細澧炲姞涓�灞傜洰褰� 濡備笉闇�瑕佸彲浠ヨ嚜琛屼慨鏀�** <br> - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/client.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/client.md deleted file mode 100644 index bec103d..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/client.md +++ /dev/null @@ -1,85 +0,0 @@ -# 瀹㈡埛绔鐞嗗姛鑳� -- - - -## 鐗堟湰 >= 5.X - -## 瀹㈡埛绔鐞嗛〉闈� - - - -### 瀹㈡埛绔鐞嗗瓧娈佃鏄� -| 瀛楁鍚嶇О | 鍙栧�艰鏄� | 娉ㄦ剰浜嬮」 | -|----------------|----------------------------|--------------------------------| -| 瀹㈡埛绔痠d | 鐢卞悗绔敓鎴愶紝鐢ㄤ簬鍓嶇鐧诲綍鏍¢獙浠ュ強鎺ュ彛鏁版嵁鍔犲瘑 | 鏃犳硶淇敼锛屼笉瑕佸垹闄ら粯璁ゆ暟鎹紝鍚﹀垯浼氭姤閿� | -| 瀹㈡埛绔痥ey | 鍓嶇鑷畾涔� | 鏃犳硶淇敼锛屼笉瑕佸垹闄ら粯璁ゆ暟鎹紝鍚﹀垯浼氭姤閿� | -| 瀹㈡埛绔閽� | 鍓嶇鑷畾涔� | 鏃犳硶淇敼锛屼笉瑕佸垹闄ら粯璁ゆ暟鎹紝鍚﹀垯浼氭姤閿� | -| 鎺堟潈绫诲瀷 | 瀵嗙爜璁よ瘉銆佺煭淇¤璇併�侀偖浠惰璇併�佸皬绋嬪簭璁よ瘉銆佺涓夋柟璁よ瘉 | 鏍规嵁鎺堟潈绫诲瀷鍒ゆ柇褰撳墠瀹㈡埛绔槸鍚︽敮鎸佽鐧诲綍鏂瑰紡 | -| 璁惧绫诲瀷 | PC绔�丄PP绔� | | -| Token娲昏穬瓒呮椂鏃堕棿 | 鑷畾涔� | 鎸囧畾鏃堕棿鏃犳搷浣滃垯杩囨湡锛堝崟浣嶏細绉掞級锛岄粯璁�30鍒嗛挓锛�1800绉掞級 | -| Token鍥哄畾瓒呮椂鏃堕棿 | 鑷畾涔� | 鎸囧畾鏃堕棿蹇呭畾杩囨湡锛堝崟浣嶏細绉掞級锛岄粯璁や竷澶╋紙604800绉掞級 | - -### 鍓嶅悗绔娇鐢ㄦ柊鐨勫鎴风id - -姝ラ濡備笅锛� -1. 鍓嶇绠$悊椤甸潰鐢熸垚鏂扮殑瀹㈡埛绔痠d銆� -2. 灏嗘柊鐨勫鎴风id澶嶅埗鍒板墠绔厤缃枃浠躲�� - - - -## 鏂板鑷畾涔夊鎴风 - -### 姝ラ涓�锛氭柊澧炲鎴风鏁版嵁(渚嬪澧炲姞灏忕▼搴忕) - - - - - -### 姝ラ浜岋細閰嶇疆鍓嶇璇锋眰澶翠俊鎭� - -闇�瑕佸湪鍏ㄥ眬璇锋眰澶� header 涓鍔� cientid <br> -纭繚瀹㈡埛绔墍鏈夎姹傞兘鎼哄甫姝d 鍙弬鑰冮」鐩� `request.ts` - - - -`VITE_APP_CLIENT_ID` 鍗抽厤缃枃浠朵腑鐨勫鎴风id銆� - -**閲嶇偣锛氫笉鍚屽鎴风鐧诲綍鑾峰彇鍒扮殑token涓嶅悓涓庡叾浠栫涓嶄簰閫�(渚嬪: app鐧诲綍鑾峰彇鍒扮殑token鏃犳硶鐢ㄤ簬pc绔帴鍙f煡璇�)** - -## 鏂板鑷畾涔夌櫥褰曟柟寮忔巿鏉冪被鍨� - -**閲嶇偣璇存槑: 涓嶈鍗曠嫭澧炲姞鐧诲綍鎺ュ彛 绯荤粺鍏ㄥ眬缁熶竴鍙湁涓�涓櫥褰曟帴鍙� 鍙渶澧炲姞涓嶅悓鐨勯壌鏉冩柟寮忓嵆鍙�** - -濡備綍璋冭瘯浣跨敤鐧诲綍鐪嬭繖閲� -> [鍏充簬鐧诲綍璋冭瘯姝ラ](/questions/login_step.md) - -### 姝ラ涓�锛氭柊澧炲瓧鍏告暟鎹� - - - - - -### 姝ラ浜岋細鏂板/淇敼瀹㈡埛绔暟鎹� - -### 姝ラ涓夛細鍚庣鏂板璁よ瘉绛栫暐 - -鏂板绛栫暐瀹炵幇绫诲疄鐜� `IAuthStrategy` 鎺ュ彛銆�<br> - - - -鍙傜収宸叉湁绛栫暐瀹炵幇绫诲疄鐜拌嚜瀹氫箟鍙傛暟鏍¢獙鐧诲綍鏂规硶閫昏緫銆�<br> - - - -**娉ㄦ剰淇敼 `@Service` 鍚嶇О淇濊瘉瑙勮寖鎬�** - - - -`LoginBody` 鏍¢獙鍙傛暟锛堝彲鑷畾涔夛級<br> - - - -渚嬪 鎵╁睍灏忕▼搴忕櫥褰曞弬鏁� 鍙渶瑕佺户鎵� `LoginBody <br> - -` - -鏍¢獙鍒嗙粍锛堝彲鑷畾涔夛級<br> - - \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/code_generate.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/code_generate.md deleted file mode 100644 index e20e09a..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/code_generate.md +++ /dev/null @@ -1,85 +0,0 @@ -# 浠g爜鐢熸垚 -- - - -## 鍔熻兘浠嬬粛 - -### 鏁版嵁婧愰厤缃� - - - -<font size="4">**>= 4.1.0鐗堟湰 椤圭洰閫傞厤澶氱绫诲瀷鏁版嵁搴� 鍙互鍦ㄤ唬鐮佺敓鎴愰〉闈㈠垏鎹�**</font><br> - -> 濉啓瀵瑰簲鐨勬暟鎹簮鍚嶇О 鐐瑰嚮鎼滅储鎸夐挳 鍗冲彲鍒囨崲鍒板搴旂殑鏁版嵁婧�<br> - - - -<font size="4">**>= 5.2.2鐗堟湰 椤圭洰鏀寔100+绉嶆暟鎹簱閫傞厤 鍦ㄤ唬鐮佺敓鎴愭ā鍧楀鍔犲搴旂殑鏁版嵁搴撲緷璧栧嵆鍙�**</font><br> - - - -### 瀵煎叆鏁版嵁琛� - -> 鐐瑰嚮瀵煎叆鎸夐挳 浼氬姞杞界郴缁熸暟鎹簱鎵�鏈夌殑琛�<br> - - - -> 閫夋嫨闇�瑕佺殑琛� 鐐瑰嚮纭畾鍗冲彲<br> - -<br> - - -### 缂栬緫琛ㄧ敓鎴愮粨鏋� - -> 鐐瑰嚮琛ㄥ搴旂殑缂栬緫鎸夐挳<br> - - - -> 鏇存敼瑕佺敓鎴愯〃鐨勬暟鎹�<br> - -<br> - - -### 鐢熸垚鏉′欢褰卞搷 - - - - -* `鎻掑叆` `缂栬緫` 褰卞搷鐢熸垚 BO 绫� 涓� 鍓嶇娣诲姞缂栬緫椤甸潰 鏄惁鏈夎瀛楁 -* `鍒楄〃` 褰卞搷鐢熸垚 VO 绫� 涓� 鍓嶇鍒楄〃椤甸潰灞曠ず 鏄惁鏈夎瀛楁 -* `鏌ヨ` 褰卞搷 鍓嶇椤甸潰鏄惁鏈夎瀛楁鐨勬悳绱㈡ 涓� 鍚庣浠g爜鏄惁鐢熸垚瀵瑰簲鐨勬煡璇㈡潯浠� -* `鏌ヨ鏂瑰紡` 褰卞搷鐢熸垚鏌ヨ鏉′欢鐨勭被鍨� -* `蹇呭~` 褰卞搷 BO 绫� 涓� 椤甸潰鏄惁寮哄埗鏍¢獙 -* `鏄剧ず绫诲瀷` 褰卞搷鐢熸垚椤甸潰浣跨敤浣曠灞曠ず缁勪欢 -* `瀛楀吀绫诲瀷` 褰卞搷椤甸潰鏄惁鐢熸垚涓庡瓧鍏哥殑鍏宠仈 - -### 鏍戣〃閰嶇疆 - -> 缂栬緫琛ㄧ敓鎴愪俊鎭� 鐢熸垚妯℃澘涓� `鏍戣〃` 濉啓瀵瑰簲鏁版嵁鍗冲彲<br> - - - -### 涓诲瓙琛ㄨ鏄� - -妗嗘灦涓嶆敮鎸佷篃涓嶆帹鑽愪娇鐢ㄤ富瀛愯〃<br> -鍘熷洜涓�鑸笟鍔″満鏅� 鍩烘湰閮芥槸涓�瀵筃琛� 澶氳〃鍏宠仈鍦烘櫙<br> -杩樻湁涓�浜� 涓� => 瀛� <= 涓� 鍦烘櫙 闇�姹傚緢澶嶆潅 寰堝皯鏈夊崟绾富瀛愯〃鍦烘櫙鍑虹幇<br> -鍙﹀涓诲瓙琛ㄥ叧鑱� 寰堝鏄撳嚭鐜� 绗涘崱灏旂Н 鎴栬�呮暟鎹敊涔辩瓑闂 闇�瑕佽嚜琛宻ql璋冧紭鍦烘櫙<br> -鎵�浠ュ缓璁ぇ瀹堕兘鎸夌収 鍗曡〃鐢熸垚 鑷缂栧啓涓氬姟閫昏緫 - -### 棰勮鍔熻兘 - -> 閰嶇疆濂界敓鎴愪俊鎭悗 鍙互鐐瑰嚮棰勮鎸夐挳<br> - - - -> 绯荤粺浼氭牴鎹凡缁忛厤缃ソ鐨勬暟鎹� 鐢熸垚瀵瑰簲鐨勪唬鐮侀瑙�<br> -> 鍙互鍐嶆澶勮瀵熶唬鐮佺殑鐢熸垚缁撴瀯鍜屾暟鎹槸鍚︽纭瓑<br> - - - - -### 浠g爜缁撴瀯鍚屾 - -> 瀹為檯寮�鍙戜腑 闅惧厤浼氭湁琛ㄧ粨鏋勬洿鏀圭殑闇�姹�<br> -> 杩欐椂鍙互浣跨敤 鍚屾鍔熻兘 鐐瑰嚮鍚屾鎸夐挳 鍗冲彲涓庡疄鏃舵暟鎹簱琛ㄨ繘琛屽瓧娈靛悓姝�<br> - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/export.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/export.md deleted file mode 100644 index 1dd01c1..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/export.md +++ /dev/null @@ -1,249 +0,0 @@ -# 瀵煎嚭鍔熻兘 - -- - - - -鍦ㄦ湰妗嗘灦涓紩鍏ヤ簡 `Easy Excel` 渚濊禆锛堝 `Apache POI`杩涜浜嗗皝瑁呬互鍙婃墿灞曪級锛屽彲浠ュ鏁版嵁杩涜瀵煎嚭鎿嶄綔锛堝嵆鍐� Excel锛夈�� - -[EasyExcel 鏂囨。鍦板潃](https://easyexcel.opensource.alibaba.com/) - -## 瀵煎嚭鍔熻兘浣跨敤娴佺▼璇存槑 - -### 姝ラ涓�锛氬畾涔夊鍑哄疄浣撳璞� - -浠ユ鏋朵腑 `SysUserExportVo` 涓轰緥锛� - -```Java - /** - * 鐢ㄦ埛ID - */ - @ExcelProperty(value = "鐢ㄦ埛搴忓彿") - private Long userId; - - // ....................... - - /** - * 鐢ㄦ埛鎬у埆 - */ - @ExcelProperty(value = "鐢ㄦ埛鎬у埆", converter = ExcelDictConvert.class) - @ExcelDictFormat(dictType = "sys_user_sex") - private String sex; - - /** - * 甯愬彿鐘舵�侊紙0姝e父 1鍋滅敤锛� - */ - @ExcelProperty(value = "甯愬彿鐘舵��", converter = ExcelDictConvert.class) - @ExcelDictFormat(dictType = "sys_normal_disable") - private String status; -``` - -> 璇存槑锛�<br> -> 1. 浣跨敤 `@ExcelProperty` 娉ㄨВ鏍囨敞闇�瑕佸鍑虹殑灞炴�с�� -> 2. 娉ㄨВ `@ExcelProperty` 涓� `value` 灞炴�т唬琛ㄨ〃鏍煎ご閮ㄦ爣棰樺瓧娈碉紝`converter` 浠h〃浣跨敤鐨勮浆鎹㈠櫒锛屽悗闈細璇︾粏璇存槑銆� -> 3. 娉ㄨВ `@ExcelDictFormat` 涓鸿嚜瀹氫箟娉ㄨВ锛屼笌鑷畾涔夎浆鎹㈠櫒缁撳悎浣跨敤锛屽悓鏍峰湪鍚庨潰杩涜璇︾粏璇存槑銆� - -### 姝ラ浜岋細浣跨敤瀵煎嚭鏂规硶 - -浠ユ鏋朵腑 `SysUserController#export` 鏂规硶涓轰緥锛� - -```Java - /** - * 瀵煎嚭鐢ㄦ埛鍒楄〃 - */ - @PostMapping("/export") - public void export(SysUserBo user, HttpServletResponse response) { - // 鏍规嵁鍙傛暟鏌ヨ瀵煎嚭鐨勭敤鎴峰垪琛ㄦ暟鎹� - List<SysUserVo> list = userService.selectUserList(user); - // 灏嗗垪琛ㄨ浆鎹负瀵煎嚭瀵硅薄鍒楄〃 - List<SysUserExportVo> listVo = MapstructUtils.convert(list, SysUserExportVo.class); - // 瀵煎嚭鏂规硶 - ExcelUtil.exportExcel(listVo, "鐢ㄦ埛鏁版嵁", SysUserExportVo.class, response); - } -``` - -> 璇存槑锛�<br> -> 浣跨敤 `ExcelUtil.exportExcel` 鏂规硶瀹屾垚瀵煎嚭鍔熻兘锛屼笂杩� Demo 浼犲叆鍙傛暟鍒嗗埆鏄細瀵煎嚭瀵硅薄闆嗗悎锛孍xcel sheet 琛ㄥ悕绉帮紝瀵煎嚭瀵硅薄绫诲瀷锛宺esponse銆� - -## 妗嗘灦宸ュ叿浣跨敤璇存槑 - -### 1锛氬瓧鍏歌浆鎹㈠櫒 - -瀛楀吀杞崲鍣� `ExcelDictConvert` 涓庤嚜瀹氫箟娉ㄨВ `@ExcelDictFormat` 缁撳悎浣跨敤锛屾爣娉ㄥ湪闇�瑕佽浆鎹㈢殑灞炴�т笂銆� - -浣跨敤鏂瑰紡涓�锛� - -```Java - /** - * 鐢ㄦ埛鎬у埆 - */ - @ExcelProperty(value = "鐢ㄦ埛鎬у埆", converter = ExcelDictConvert.class) - @ExcelDictFormat(dictType = "sys_user_sex") - private String sex; -``` - -浣跨敤鏂瑰紡浜岋細 - -```Java - /** - * 鐢ㄦ埛鎬у埆 - */ - @ExcelProperty(value = "鐢ㄦ埛鎬у埆", converter = ExcelDictConvert.class) - @ExcelDictFormat(readConverterExp="0=鐢�,1=濂�,2=鏈煡", separator=",") - private String sex; -``` - -`@ExcelDictFormat` 娉ㄨВ灞炴�ц鏄庯細 - -| 灞炴�у悕绉� | 灞炴�х被鍨� | 榛樿鍊� | 璇存槑 | -|------------------|--------|-----|-----------------------------------| -| dictType | String | "" | 瀛楀吀鐨則ype鍊� (濡�: sys_user_sex) | -| readConverterExp | String | "" | 璇诲彇鍐呭杞〃杈惧紡 (濡�: 0=鐢�,1=濂�,2=鏈煡) | -| separator | String | "," | 涓� readConverterExp 灞炴�х粨鍚堜娇鐢紝琛ㄨ揪寮忕殑鍒嗛殧绗� | - -### 2锛氭灇涓捐浆鎹㈠櫒 - -瀛楀吀杞崲鍣� `ExcelEnumConvert` 涓庤嚜瀹氫箟娉ㄨВ `@ExcelEnumFormat` 缁撳悎浣跨敤锛屾爣娉ㄥ湪闇�瑕佽浆鎹㈢殑灞炴�т笂銆� - -浣跨敤鏂瑰紡锛� - -```Java - /** - * 鐢ㄦ埛绫诲瀷 - * </p> - * 浣跨敤ExcelEnumFormat娉ㄨВ闇�瑕佽繘琛屼笅鎷夐�夌殑閮ㄥ垎 - */ - @ExcelProperty(value = "鐢ㄦ埛绫诲瀷", index = 1, converter = ExcelEnumConvert.class) - @ExcelEnumFormat(enumClass = UserStatus.class, textField = "info") - private String userStatus; -``` - -`@ExcelEnumFormat` 娉ㄨВ灞炴�ц鏄庯細 - -| 灞炴�у悕绉� | 灞炴�х被鍨� | 榛樿鍊� | 璇存槑 | -|-----------|------------|------|------------------------------| -| enumClass | Enum Class | - | 瀛楀吀鏋氫妇绫诲瀷 | -| codeField | String | code | 瀛楀吀鏋氫妇绫讳腑瀵瑰簲鐨� code 灞炴�у悕绉帮紝榛樿涓� code | -| textField | String | text | 瀛楀吀鏋氫妇绫讳腑瀵瑰簲鐨� text 灞炴�у悕绉帮紝榛樿涓� text | - -### 3锛氬悎骞跺崟鍏冩牸 - -`@CellMerge` 娉ㄨВ鐢ㄤ簬鍚堝苟鐩稿悓鐨勫垪鏁版嵁锛岄渶瑕佺粨鍚� `CellMergeStrategy` 绛栫暐浣跨敤锛屾爣娉ㄥ湪闇�瑕佽浆鎹㈢殑灞炴�т笂銆� - -浣跨敤鏂瑰紡锛� - -姝ラ涓�锛氬湪灞炴�ф爣娉� `@CellMerge` 娉ㄨВ锛� -```Java - /** - * 閮ㄩ棬id - */ - @CellMerge - @ExcelProperty(value = "閮ㄩ棬id") - private Long deptId; -``` - -`@CellMerge` 娉ㄨВ灞炴�ц鏄庯細 - -| 灞炴�у悕绉� | 灞炴�х被鍨� | 榛樿鍊� | 璇存槑 | -|---------|----------|-----|------------------------------| -| index | int | -1 | 鍚堝苟鍒楃殑涓嬫爣锛屽缓璁娇鐢ㄩ粯璁ゅ�� | -| mergeBy | String[] | {} | 鍚堝苟闇�瑕佷緷璧栫殑鍏朵粬瀛楁鍚嶇О(鍩轰簬杩欎釜瀛楁鍐呭鍋氬悎骞舵潯浠�) | - -姝ラ浜岋細瀵煎嚭鏂规硶寮�鍚悎骞讹細 -```Java - /** - * 瀵煎嚭娴嬭瘯鍗曡〃鍒楄〃 - */ - @PostMapping("/export") - public void export(@Validated TestDemoBo bo, HttpServletResponse response) { - List<TestDemoVo> list = testDemoService.queryList(bo); - // 鍙傛暟 true 琛ㄧず寮�鍚悎骞跺崟鍏冩牸绛栫暐 - ExcelUtil.exportExcel(list, "娴嬭瘯鍗曡〃", TestDemoVo.class, true, response); - } -``` - - -### 4锛氬鏉� Excel 瀵煎嚭绀轰緥 -`TestExcelController` 鎻愪緵浜嗗嚑绉嶅鍑虹ず渚嬶紝濡傛灉闇�瑕佸彲浠ュ弬鐓х浉搴旀柟娉曡繘琛屽鍑恒�� - -#### 4.1锛氬崟鍒楄〃澶氭暟鎹鍑猴紙妯℃澘瀵煎嚭锛� - -妯℃澘鍐呭锛� - - - -妯℃澘浣嶇疆锛歚ruoyi-modules/ruoyi-demo/src/main/resources/excel/` - -瀵煎嚭绀轰緥浠g爜锛氬弬鑰� demo 妯″潡 `TestExcelController` 妯℃澘鍐欐硶璇锋煡鐪� `EasyExcel` 鏂囨。 - -瀵煎嚭缁撴灉锛� - - - -#### 4.2锛氬鍒楄〃澶氭暟鎹鍑猴紙妯℃澘瀵煎嚭锛� - -妯℃澘鍐呭锛� - - - -妯℃澘浣嶇疆锛歚ruoyi-modules/ruoyi-demo/src/main/resources/excel/` - -瀵煎嚭绀轰緥浠g爜锛氬弬鑰� demo 妯″潡 `TestExcelController` 妯℃澘鍐欐硶璇锋煡鐪� `EasyExcel` 鏂囨。 - -瀵煎嚭缁撴灉锛� - - - -#### 4.3锛氬鍑轰笅鎷夋 - -`ExcelDictFormat` 娉ㄨВ鎸囧畾鐨勫瓧鍏搁」榛樿閮戒細杞崲鎴愪笅鎷夋 - -鑷畾涔夊鍑虹渷甯傚尯涓嬫媺妗嗙ず渚嬩唬鐮侊細鍙傝�� demo 妯″潡 `TestExcelController` - -瀵煎嚭缁撴灉锛� - - - -## Easy Excel 甯哥敤娉ㄨВ - -`Easy Excel` 鎻愪緵浜嗕赴瀵岀殑娉ㄨВ鍙互瀵瑰鍑哄璞¤繘琛屽畾鍒跺寲鎿嶄綔锛岃繖閲岀殑娉ㄨВ璇存槑閽堝鐨勬槸鍘熺敓娉ㄨВ锛岃嚜瀹氫箟娉ㄨВ浼氱粨鍚堣浆鎹㈠櫒涓�璧疯繘琛岃鏄庛�� - -| 绫诲瀷 | 娉ㄨВ鍚嶇О | 浣跨敤涓句緥 | 璇存槑 | -|-------|-------------------------|------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------| -| 鏍煎紡鍖栨敞瑙� | @DateTimeFormat | @DateTimeFormat(value=鏍煎紡鍖栧��) | 瀵瑰瓧绗︿覆杩涜鏃ユ湡鏍煎紡鍖� (鍙傜収 `java.text.SimpleDateFormat` 涔﹀啓鍗冲彲) | -| 鏍煎紡鍖栨敞瑙� | @NumberFormat | @NumberFormat(value=鏍煎紡鍖栧��, roundingMode=鑸嶅叆妯″紡) | 瀵瑰瓧绗︿覆杩涜鏁板�兼牸寮忓寲 (鍙傜収 `java.text.DecimalFormat` 涔﹀啓鍗冲彲, `roundingMode` 榛樿 `RoundingMode.HALF_UP`) | -| 鏍峰紡娉ㄨВ | @ColumnWidth | @ColumnWidth(value=鍊�) | 璁剧疆鍒楀 | -| 鏍峰紡娉ㄨВ | @ContentFontStyle | @ContentFontStyle(color=棰滆壊) | 鍙互璁剧疆瀛椾綋绫诲瀷锛岄鑹诧紝绮楃粏锛屾槸鍚︽枩浣擄紝涓嬪垝绾跨瓑锛屽叿浣撳彲鏌ョ湅娉ㄨВ `@ContentFontStyle` | -| 鏍峰紡娉ㄨВ | @ContentLoopMerge | @ContentLoopMerge(eachRow=琛屽��, columnExtend=鍒楀��) | 璁剧疆寰幆鍚堝苟鐨勫尯鍩� | -| 鏍峰紡娉ㄨВ | @ContentRowHeight | @ContentRowHeight(value=鍊�) | 璁剧疆鍐呭琛岄珮 | -| 鏍峰紡娉ㄨВ | @ContentStyle | - | 璁剧疆鍗曞厓鏍兼牱寮忥紝鍏蜂綋鍙煡鐪嬫敞瑙� `@ContentStyle` | -| 鏍峰紡娉ㄨВ | @HeadFontStyle | @HeadFontStyle(color=棰滆壊) | 璁剧疆琛ㄥご瀛椾綋鏍煎紡锛岀被浼� `@ContentFontStyle`锛屽叿浣撳彲鏌ョ湅娉ㄨВ `@HeadFontStyle` | -| 鏍峰紡娉ㄨВ | @HeadRowHeight | @HeadRowHeight(value=鍊�) | 璁剧疆琛ㄥご琛岄珮 | -| 鏍峰紡娉ㄨВ | @HeadStyle | - | 璁剧疆琛ㄥご鏍峰紡锛屽叿浣撳彲鏌ョ湅娉ㄨВ `@HeadStyle` | -| 鏍峰紡娉ㄨВ | @OnceAbsoluteMerge | @OnceAbsoluteMerge(firstRowIndex=寮�濮嬭涓嬫爣, lastRowIndex=缁撴潫琛屼笅鏍�, firstColumnIndex=寮�濮嬪垪涓嬫爣, lastColumnIndex=缁撴潫鍒椾笅鏍�) | 鏍规嵁璁剧疆鍊煎悎骞跺崟鍏冩牸 | -| 灞炴�ф敞瑙� | @ExcelIgnore | @ExcelIgnore | 瀵煎嚭蹇界暐璇ュ瓧娈� | -| 灞炴�ф敞瑙� | @ExcelIgnoreUnannotated | @ExcelIgnoreUnannotated | 榛樿涓嶇鍔犱笉鍔� `@ExcelProperty` 鐨勬敞瑙g殑鎵�鏈夊瓧娈甸兘浼氬弬涓庤鍐欙紝鍔犱簡 `@ExcelIgnoreUnannotated` 娉ㄨВ浠ュ悗锛屼笉鍔� `@ExcelProperty` 娉ㄨВ鐨勫瓧娈靛氨涓嶄細鍙備笌 | -| 灞炴�ф敞瑙� | @ExcelProperty | @ExcelProperty(value=鍊�, order=鎺掑簭鍊�, index=涓嬫爣, converter=杞崲鍣�) | 榛樿鎸夌収瀵硅薄灞炴�ч『搴忓鍑猴紝濡傛灉璁剧疆浜� `order` 浠ュ強 `index`锛屼紭鍏堢骇 `index` > `order` > 榛樿锛沜onverter 鍙互鑷畾涔� | - -## 鎵╁睍璇存槑 - -### 鑷畾涔夎浆鎹㈠櫒瀹炵幇 - -鐢变簬涓氬姟闇�瑕侊紝鍘熺敓娉ㄨВ涓嶄竴瀹氳兘澶熺鍚堥渶瑕侊紝鍥犺�岃鐢熷嚭浜嗚嚜瀹氫箟杞崲鍣ㄣ�傝兘澶熷疄鐜板畾鍒跺寲鐨勫唴瀹硅浆鎹㈤渶瑕併�� -浠ヤ笅浠ユ鏋朵腑鐨勫瓧鍏歌浆鎹㈠櫒 `ExcelDictConvert` 涓轰緥杩涜璇存槑銆� - -瀛楀吀杞崲鍣� `ExcelDictConvert`锛屽瓧鍏歌浆鎹㈠櫒浣跨敤浜嗚嚜瀹氫箟娉ㄨВ `@ExcelDictFormat` 閰嶅悎浣跨敤銆� - -_**娉細鑷畾涔夎浆鎹㈠櫒骞堕潪涓�瀹氶渶瑕佽嚜瀹氫箟娉ㄨВ锛屼篃鍙互閽堝宸叉湁鐨勬敞瑙h繘琛岃嚜瀹氫箟杞崲瀹炵幇銆�**_ - -#### 瀹炵幇鏂瑰紡 - -鑷畾涔夎浆鎹㈠櫒闇�瑕佸疄鐜� `com.alibaba.excel.converters.Converter` 鎺ュ彛锛屽疄鐜版帴鍙d腑鐨勬柟娉曘�� - - - -杞崲鏂规硶 `ExcelDictConvert#convertToExcelData` 锛� - - - -## 鏇村鍔熻兘 - -鏇村瀵煎嚭鍔熻兘浣跨敤鍙互鍙傜収 `Easy Excel` [瀹樻柟鏂囨。](https://easyexcel.opensource.alibaba.com/docs/current/api/write)銆� \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/import.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/import.md deleted file mode 100644 index f1bbca7..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/import.md +++ /dev/null @@ -1,202 +0,0 @@ -# 瀵煎叆鍔熻兘 -- - - - -鍦ㄦ湰妗嗘灦涓紩鍏ヤ簡 `Easy Excel` 渚濊禆锛堝 `Apache POI`杩涜浜嗗皝瑁呬互鍙婃墿灞曪級锛屽彲浠ュ鏁版嵁杩涜瀵煎叆鎿嶄綔锛堝嵆璇� Excel锛夈�� - -## 瀵煎叆鍔熻兘浣跨敤娴佺▼璇存槑 - -### 姝ラ涓�锛氬畾涔夊鍏ュ疄浣撳璞� - -浠ユ鏋朵腑 `SysUserImportVo` 涓轰緥锛� - -```java - /** - * 鐢ㄦ埛ID - */ - @ExcelProperty(value = "鐢ㄦ埛搴忓彿") - private Long userId; - - // ....................... - - /** - * 鐢ㄦ埛鎬у埆 - */ - @ExcelProperty(value = "鐢ㄦ埛鎬у埆", converter = ExcelDictConvert.class) - @ExcelDictFormat(dictType = "sys_user_sex") - private String sex; - - /** - * 甯愬彿鐘舵�侊紙0姝e父 1鍋滅敤锛� - */ - @ExcelProperty(value = "甯愬彿鐘舵��", converter = ExcelDictConvert.class) - @ExcelDictFormat(dictType = "sys_normal_disable") - private String status; -``` - -> 璇存槑锛�<br> -> 1. 浣跨敤 `@ExcelProperty` 娉ㄨВ鏍囨敞闇�瑕佸鍏ョ殑灞炴�с�� -> 2. 娉ㄨВ `@ExcelProperty` 涓� `value` 灞炴�т唬琛ㄨ〃鏍煎ご閮ㄦ爣棰樺瓧娈碉紝`converter` 浠h〃浣跨敤鐨勮浆鎹㈠櫒锛屽悗闈細璇︾粏璇存槑銆� -> 3. 娉ㄨВ `@ExcelDictFormat` 涓鸿嚜瀹氫箟娉ㄨВ锛屼笌鑷畾涔夎浆鎹㈠櫒缁撳悎浣跨敤锛屽悓鏍峰湪鍚庨潰杩涜璇︾粏璇存槑銆� -> 4. 瀵硅薄绂佹浣跨敤閾惧紡娉ㄨВ `@Accessors(chain = true)`锛屼細鎵句笉鍒皊et鏂规硶銆� - -### 姝ラ浜岋細浣跨敤瀵煎叆鏂规硶 - -浠ユ鏋朵腑 `SysUserController#importData` 鏂规硶涓轰緥锛� - -```Java - /** - * 瀵煎叆鏁版嵁 - * - * @param file 瀵煎叆鏂囦欢 - * @param updateSupport 鏄惁鏇存柊宸插瓨鍦ㄦ暟鎹� - */ - @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.IMPORT) - @SaCheckPermission("system:user:import") - @PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) - public R<Void> importData(@RequestPart("file") MultipartFile file, boolean updateSupport) throws Exception { - // 瀵煎叆鏂规硶 - ExcelResult<SysUserImportVo> result = ExcelUtil.importExcel(file.getInputStream(), SysUserImportVo.class, new SysUserImportListener(updateSupport)); - return R.ok(result.getAnalysis()); - } -``` -> 璇存槑锛�<br> -> 浣跨敤 `ExcelUtil.importExcel` 鏂规硶瀹屾垚瀵煎嚭鍔熻兘锛屼笂杩� Demo 浼犲叆鍙傛暟鍒嗗埆鏄細瀵煎叆鏂囦欢娴侊紝瀵煎叆瀵硅薄绫诲瀷锛屽鍏ョ洃鍚櫒 `SysUserImportListener`銆� - -## 妗嗘灦宸ュ叿浣跨敤璇存槑 - -### 1锛氬瓧鍏歌浆鎹㈠櫒 - -瀛楀吀杞崲鍣� `ExcelDictConvert` 涓庤嚜瀹氫箟娉ㄨВ `@ExcelDictFormat` 缁撳悎浣跨敤锛屾爣娉ㄥ湪闇�瑕佽浆鎹㈢殑灞炴�т笂銆� - -浣跨敤鏂瑰紡涓�锛� - -```Java - /** - * 鐢ㄦ埛鎬у埆 - */ - @ExcelProperty(value = "鐢ㄦ埛鎬у埆", converter = ExcelDictConvert.class) - @ExcelDictFormat(dictType = "sys_user_sex") - private String sex; -``` - -浣跨敤鏂瑰紡浜岋細 - -```Java - /** - * 鐢ㄦ埛鎬у埆 - */ - @ExcelProperty(value = "鐢ㄦ埛鎬у埆", converter = ExcelDictConvert.class) - @ExcelDictFormat(readConverterExp="0=鐢�,1=濂�,2=鏈煡", separator=",") - private String sex; -``` - -`@ExcelDictFormat` 娉ㄨВ灞炴�ц鏄庯細 - -| 灞炴�у悕绉� | 灞炴�х被鍨� | 榛樿鍊� | 璇存槑 | -|------------------|--------|-----|-----------------------------------| -| dictType | String | "" | 瀛楀吀鐨則ype鍊� (濡�: sys_user_sex) | -| readConverterExp | String | "" | 璇诲彇鍐呭杞〃杈惧紡 (濡�: 0=鐢�,1=濂�,2=鏈煡) | -| separator | String | "," | 涓� readConverterExp 灞炴�х粨鍚堜娇鐢紝琛ㄨ揪寮忕殑鍒嗛殧绗� | - -### 2锛氭灇涓捐浆鎹㈠櫒 - -瀛楀吀杞崲鍣� `ExcelEnumConvert` 涓庤嚜瀹氫箟娉ㄨВ `@ExcelEnumFormat` 缁撳悎浣跨敤锛屾爣娉ㄥ湪闇�瑕佽浆鎹㈢殑灞炴�т笂銆� - -浣跨敤鏂瑰紡锛� - -```Java - /** - * 鐢ㄦ埛绫诲瀷 - * </p> - * 浣跨敤ExcelEnumFormat娉ㄨВ闇�瑕佽繘琛屼笅鎷夐�夌殑閮ㄥ垎 - */ - @ExcelProperty(value = "鐢ㄦ埛绫诲瀷", index = 1, converter = ExcelEnumConvert.class) - @ExcelEnumFormat(enumClass = UserStatus.class, textField = "info") - private String userStatus; -``` - -`@ExcelEnumFormat` 娉ㄨВ灞炴�ц鏄庯細 - -| 灞炴�у悕绉� | 灞炴�х被鍨� | 榛樿鍊� | 璇存槑 | -|-----------|------------|------|------------------------------| -| enumClass | Enum Class | - | 瀛楀吀鏋氫妇绫诲瀷 | -| codeField | String | code | 瀛楀吀鏋氫妇绫讳腑瀵瑰簲鐨� code 灞炴�у悕绉帮紝榛樿涓� code | -| textField | String | text | 瀛楀吀鏋氫妇绫讳腑瀵瑰簲鐨� text 灞炴�у悕绉帮紝榛樿涓� text | - - -### 3锛氬鍏ョ洃鍚櫒 - -#### 3.1锛欵xcelListener 鐩戝惉鍣ㄦ帴鍙� - -`ExcelListener` 鎵╁睍浜� `ReadListener` 鎺ュ彛锛屽鍔犱簡鑾峰彇缁撴灉鏂规硶銆� - - - -#### 3.2锛欴efaultExcelListener 榛樿鐩戝惉鍣� - -`DefaultExcelListener` 榛樿鐩戝惉鍣ㄥ湪璇� Excel 鏃惰皟鐢紝涓昏瀵规暟鎹繘琛屾牎楠屻�佽В鏋愩�佸紓甯稿鐞嗐�佽繑鍥炵粨鏋滅瓑銆傚鍏ユ搷浣滄椂濡傛灉娌℃湁鐗瑰埆鎸囧畾鍒欎娇鐢ㄨ鐩戝惉鍣ㄣ�� - -#### 3.3锛歋ysUserImportListener 鐢ㄦ埛瀵煎叆鐩戝惉鍣� - -`SysUserImportListener` 鐢ㄦ埛瀵煎叆鐩戝惉鍣ㄦ槸鍦ㄧ敤鎴峰鍏ユ椂璋冪敤鐨勭洃鍚櫒銆� - -璇ョ洃鍚櫒閲嶅啓浜� `invoke` 鍙嶅皠鎺ュ彛锛屽瀵煎叆鐨勭敤鎴锋暟鎹繘琛屼簡鏍¢獙锛涢噸鍐欎簡 `getExcelResult` 鑾峰彇缁撴灉鎺ュ彛锛岃繑鍥炵粨鏋滄暟鎹�� - -#### 3.4锛欵xportDemoListener 甯︿笅鎷夋鐨勫鍏ョ洃鍚櫒 - -`ExportDemoListener` 鏄甯︽湁涓嬫媺妗嗙殑 Excel 杩涜澶勭悊鐨勫鍏ョ洃鍚櫒銆� - -## Easy Excel 甯哥敤娉ㄨВ - -`Easy Excel` 鎻愪緵浜嗕赴瀵岀殑娉ㄨВ鍙互瀵瑰鍑哄璞¤繘琛屽畾鍒跺寲鎿嶄綔锛岃繖閲岀殑娉ㄨВ璇存槑閽堝鐨勬槸鍘熺敓娉ㄨВ銆� - -| 绫诲瀷 | 娉ㄨВ鍚嶇О | 浣跨敤涓句緥 | 璇存槑 | -|-------|-------------------------|------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------| -| 鏍煎紡鍖栨敞瑙� | @DateTimeFormat | @DateTimeFormat(value=鏍煎紡鍖栧��) | 瀵瑰瓧绗︿覆杩涜鏃ユ湡鏍煎紡鍖� (鍙傜収 `java.text.SimpleDateFormat` 涔﹀啓鍗冲彲) | -| 鏍煎紡鍖栨敞瑙� | @NumberFormat | @NumberFormat(value=鏍煎紡鍖栧��, roundingMode=鑸嶅叆妯″紡) | 瀵瑰瓧绗︿覆杩涜鏁板�兼牸寮忓寲 (鍙傜収 `java.text.DecimalFormat` 涔﹀啓鍗冲彲, `roundingMode` 榛樿 `RoundingMode.HALF_UP`) | -| 灞炴�ф敞瑙� | @ExcelIgnore | @ExcelIgnore | 瀵煎嚭蹇界暐璇ュ瓧娈� | -| 灞炴�ф敞瑙� | @ExcelIgnoreUnannotated | @ExcelIgnoreUnannotated | 榛樿涓嶇鍔犱笉鍔� `@ExcelProperty` 鐨勬敞瑙g殑鎵�鏈夊瓧娈甸兘浼氬弬涓庤鍐欙紝鍔犱簡 `@ExcelIgnoreUnannotated` 娉ㄨВ浠ュ悗锛屼笉鍔� `@ExcelProperty` 娉ㄨВ鐨勫瓧娈靛氨涓嶄細鍙備笌 | -| 灞炴�ф敞瑙� | @ExcelProperty | @ExcelProperty(value=鍊�, order=鎺掑簭鍊�, index=涓嬫爣, converter=杞崲鍣�) | 榛樿鎸夌収瀵硅薄灞炴�ч『搴忓鍑猴紝濡傛灉璁剧疆浜� `order` 浠ュ強 `index`锛屼紭鍏堢骇 `index` > `order` > 榛樿锛沜onverter 鍙互鑷畾涔� | - -## 鎵╁睍浣跨敤 - -### 鎵╁睍涓�锛氳嚜瀹氫箟杞崲鍣ㄥ疄鐜� - -鐢变簬涓氬姟闇�瑕侊紝鍘熺敓娉ㄨВ涓嶄竴瀹氳兘澶熺鍚堥渶瑕侊紝鍥犺�岃鐢熷嚭浜嗚嚜瀹氫箟杞崲鍣ㄣ�傝兘澶熷疄鐜板畾鍒跺寲鐨勫唴瀹硅浆鎹㈤渶瑕併�� -浠ヤ笅浠ユ鏋朵腑鐨勫瓧鍏歌浆鎹㈠櫒 `ExcelDictConvert` 涓轰緥杩涜璇存槑銆� - -瀛楀吀杞崲鍣� `ExcelDictConvert`锛屽瓧鍏歌浆鎹㈠櫒浣跨敤浜嗚嚜瀹氫箟娉ㄨВ `@ExcelDictFormat` 閰嶅悎浣跨敤銆� - -_**娉細鑷畾涔夎浆鎹㈠櫒骞堕潪涓�瀹氶渶瑕佽嚜瀹氫箟娉ㄨВ锛屼篃鍙互閽堝宸叉湁鐨勬敞瑙h繘琛岃嚜瀹氫箟杞崲瀹炵幇銆�**_ - -#### 瀹炵幇鏂瑰紡 - -鑷畾涔夎浆鎹㈠櫒闇�瑕佸疄鐜� `com.alibaba.excel.converters.Converter` 鎺ュ彛锛屽疄鐜版帴鍙d腑鐨勬柟娉曘�� - - - -杞崲鏂规硶 `ExcelDictConvert#convertToJavaData` 锛� - - - -### 鎵╁睍浜岋細鑷畾涔夌洃鍚櫒瀹炵幇 - -鑷畾涔夌洃鍚櫒涓昏鐢ㄤ簬鍦ㄨ鍙栬В鏋� Excel 鏁版嵁鏃惰繘琛岃嚜瀹氫箟鎿嶄綔銆� -浠ヤ笅浠ユ鏋朵腑鐨勭敤鎴峰鍏ョ洃鍚櫒 `SysUserImportListener` 涓轰緥杩涜璇存槑銆� - -#### 瀹炵幇鏂瑰紡 -1. 缁ф壙鍒嗘瀽浜嬩欢鐩戝惉鍣� `AnalysisEventListener` 浠ュ強瀹炵幇 Excel 鐩戝惉鍣� `ExcelListener`銆� - - - -2. 鏄剧ず浣跨敤鏋勯�犲嚱鏁帮紝鍚﹀垯灏嗗鑷寸┖鎸囬拡銆� - - - -3. 瀹炵幇 `invoke` 鏂规硶锛屽鏁版嵁杩涜瑙f瀽鎿嶄綔锛屽彲浠ュ湪姝ゆ柟娉曞鏁版嵁杩涜鍚堟硶鎬у垽鏂�� - -4. 瀹炵幇 `getExcelResult` 鏂规硶锛屽缁撴灉杩涜鎿嶄綔锛屼緥濡傝繑鍥炴垚鍔熴�佸け璐ョ殑缁熻鏁版嵁銆� - -## 鏇村鍔熻兘 - -鏇村瀵煎叆鍔熻兘浣跨敤鍙互鍙傜収 `Easy Excel` [瀹樻柟鏂囨。](https://easyexcel.opensource.alibaba.com/docs/current/quickstart/read)銆� \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/interface_release.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/interface_release.md deleted file mode 100644 index a3e6e6b..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/interface_release.md +++ /dev/null @@ -1,25 +0,0 @@ -# 鎺ュ彛鏀捐 -- - - -## 浣跨敤鏂瑰紡 - -鍦ㄩ厤缃枃浠跺~鍐欒矾寰勬斁琛�<br> - - -### 娉ㄨВ鏀捐 -鐗堟湰 4.3.1 浠ヤ笂 寤鸿浣跨敤 `@SaIgnore` 蹇界暐娉ㄨВ<br> - -鏀寔鍦ㄧ被鎴栨柟娉曚笂鏀捐<br> -**娉ㄦ剰: 鍔ㄦ�佽矾寰勪細瑙f瀽鎴愰�氶厤绗� 璇疯璁″ソ鎺ュ彛璺緞閬垮厤闂** - -**渚嬪: `/get/{userId}` 浼氳В鏋愭垚 `/get/*`**<br> - - -## 娉ㄦ剰浜嬮」 - -鎺ュ彛鏀捐鍚庝笉闇�瑕乼oken鍗冲彲璁块棶<br> -浣嗘槸娌℃湁token涔熷氨鏃犳硶鑾峰彇鐢ㄦ埛淇℃伅涓庨壌鏉� - -### 瑙e喅鏂规 -鍒犻櫎鎺ュ彛涓婄殑閴存潈娉ㄨВ<br> -鍒犻櫎鎺ュ彛鍐呰幏鍙栫敤鎴蜂俊鎭姛鑳�<br> -鍒犻櫎鏁版嵁搴撳疄浣撶被 鑷姩娉ㄥ叆 `createBy` `updateBy` 鍥犱负浼氳幏鍙栫敤鎴锋暟鎹� \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/oss.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/oss.md deleted file mode 100644 index 47484ab..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/oss.md +++ /dev/null @@ -1,124 +0,0 @@ -# 鍏充簬OSS妯″潡浣跨敤 -- - - -## 閲嶇偣娉ㄦ剰浜嬮」 - -`妗�/瀛樺偍鍖哄煙` 绯荤粺浼氭牴鎹厤缃嚜琛屽垱寤哄垎閰嶆潈闄�<br> -~~濡傛墜鍔ㄩ厤缃渶瑕佽缃� `鍏湁璇籤 鏉冮檺 鍚﹀垯鏂囦欢鏃犳硶璁块棶~~(`aliyun` 杩橀渶寮�閫氳法鍩熼厤缃�)<br> -4.4.0 鐗堟湰鏀寔閰嶇疆`鍏湁/绉佹湁`鏉冮檺(`aliyun` 杩橀渶寮�閫氳法鍩熼厤缃�)<br> -璁块棶绔欑偣 鍚庝弗绂佹惡甯﹀叾浠� `url` 渚嬪: `/`, `/ruoyi` 绛�<br> -**闃块噷浜戜笌鑵捐浜慡DK璁块棶绔欑偣涓笉鑳藉寘鍚《鍚� 绯荤粺浼氳嚜鍔ㄥ鐞�** <br> -**minio 绔欑偣涓嶅厑璁镐娇鐢� localhost 璇蜂娇鐢� 127.0.0.1** <br> -**璁块棶绔欑偣涓庤嚜瀹氫箟鍩熷悕 閮戒笉瑕佸寘鍚� `http` `https` 鍓嶇紑 璁剧疆`https`璇蜂娇鐢ㄩ�夐」澶勭悊** - -## 浠g爜浣跨敤 - -> 鍙傝�� `SysOssService.upload` 鐢ㄦ硶 <br> -> 浣跨敤 `OssFactory.instance()` 鑾峰彇褰撳墠鍚敤鐨� `OssClient` 瀹炰緥<br> -> 杩涜鍔熻兘璋冪敤 鑾峰彇杩斿洖鍊煎悗 瀛樺偍鍒板搴旂殑涓氬姟琛� - - - - -## 鍔熻兘閰嶇疆 - -### 閰嶇疆OSS - -> 杩涘叆 `绯荤粺绠$悊 -> 鏂囦欢绠$悊 -> 閰嶇疆绠$悊` 濉啓瀵瑰簲鐨凮SS鏈嶅姟鐩稿叧閰嶇疆<br> - -<br> -<br> - - -<font size="6">**閲嶇偣璇存槑**</font> - -> 浜戝巶鍟嗗彧闇�淇敼 `璁块棶绔欑偣`瀵瑰簲鐨勫煙 鍒囧嬁涔辨敼(浜戝巶鍟嗗己鐑堝缓璁粦瀹氳嚜瀹氫箟鍩熷悕浣跨敤 涓冪墰浜戝繀椤荤粦瀹歔瀹樻柟瑙勫畾])<br> - - - -> 涓冪墰浜� 璁块棶绔欑偣<br> - - -<br> - - -> 闃块噷浜� 璁块棶绔欑偣 - - - -> 鑵捐浜� 璁块棶绔欑偣 - - - -### MinIO 浣跨敤 https璁块棶绔欑偣 - -**娉ㄦ剰锛歋3 API 绛惧悕璁$畻绠楁硶涓嶆敮鎸佹墭绠� MinIO Server API 鐨勪唬鐞嗘柟妗�** - -[ minio https 閰嶇疆鏂瑰紡](https://blog.csdn.net/Michelle_Zhong/article/details/126484358) - -### 鍒囨崲OSS - -> 鍐嶉厤缃垪琛ㄧ偣鍑� `鐘舵�乣 鎸夐挳寮�鍚嵆鍙�(娉ㄦ剰: 鍙兘寮�鍚竴涓狾SS榛樿閰嶇疆)<br> -> 鎵嬪姩浣跨敤 `OssFactory.instance("configKey")` <br> - - - -### 鎵╁睍鍒嗙被 - -> 濡傛湁鏂囦欢鍒嗙被 寤鸿鍒涘缓澶氫釜 oss閰嶇疆 杩涜鍒囨崲瀛樺偍<br> - -渚嬪: 鍒涘缓涓�涓� 鍥剧墖瀛樺偍鐨� oss閰嶇疆<br> -鎸囧畾鍞竴鐨� `configKey` 涓� `鍓嶇紑鐩綍` 鎴� 鐩存帴浣跨敤鐙珛鐨刞妗禶<br> -鐙珛妗剁殑鐗圭偣 鍙互鑷畾涔夎闂潈闄�<br> -渚嬪: 鍒涘缓涓�涓鏈夋枃浠跺瓨鍌ㄦ《 涓嶅澶栧紑鏀�<br> - - - -> 鎸囧畾闇�瑕佷娇鐢ㄧ殑閰嶇疆<br> -> 浣跨敤 `OssFactory.instance("image")` 鑾峰彇鐨� `OssClient` 浼氬姞杞戒笂鍥剧殑閰嶇疆 浠庤�岃揪鍒颁笂浼犱笉鍚岀殑鐩綍鎴栨《 - - - - - -### 涓婁紶鍥剧墖鎴栨枃浠� - -> 杩涘叆 `绯荤粺绠$悊 -> 鏂囦欢绠$悊` 鐐瑰嚮 `涓婁紶鏂囦欢` 鎴� `涓婁紶鍥剧墖` 鏍规嵁閫夐」閫夋嫨鍗冲彲 浼氬搴斾笂浼犲埌閰嶇疆寮�鍚殑OSS鍐�<br> - -<br> -<br> -<br> - - -### 鍒楄〃灞曠ず - -> 榛樿灞曠ず鍥剧墖(鍙瑙�) 鏂囦欢浼氬睍绀鸿矾寰�<br> - -<br> - - -> 鍙互鐐瑰嚮 `棰勮绂佺敤鍚敤` 鎸夐挳瀵规槸鍚﹀睍绀鸿繘琛屾洿鏀� - - - -> 鐐瑰嚮绂佺敤鍚� 鍥剧墖浼氬彉鎴愯矾寰勫睍绀� - - - -> 涔熷彲鍐� `鍙傛暟璁剧疆` 鏇存敼棰勮鐘舵�� 灏� `OSS棰勮鍒楄〃璧勬簮` 鏀逛负 `false` 鍗冲彲鍏抽棴棰勮 - - - -### 鍒犻櫎鍔熻兘 - -> 鐐瑰嚮鍒楄〃涓婃柟鎴栧悗鏂� `鍒犻櫎` 鎸夐挳 浼氭牴鎹甇SS鏈嶅姟鍟嗙被鍨� 璋冪敤瀵瑰簲鐨勫垹闄�(娉ㄦ剰: 闇�纭繚瀵瑰簲鐨勬湇鍔″晢閰嶇疆姝g‘)<br> -> 鍙嬀閫夊鏈嶅姟鍟嗙被鍨嬬殑鏂囦欢杩涜鍒犻櫎 绯荤粺浼氳嚜鍔ㄥ垽鏂� - - - - -### 涓嬭浇鍔熻兘 - -> 鐐瑰嚮鍒楄〃鍚庢柟瀵瑰簲璧勬簮鐨� `涓嬭浇` 鎸夐挳 鏍规嵁闇�姹傚~鍐欐枃浠跺悕 鐐瑰嚮纭鍗冲彲瀹屾垚涓嬭浇 - - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/page.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/page.md deleted file mode 100644 index 97b6c52..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/page.md +++ /dev/null @@ -1,32 +0,0 @@ -# 鍒嗛〉鍔熻兘 -- - - -## 瀵瑰簲鐗堟湰 - -> 3.5.0 鐗堟湰 - -## 閲嶇偣璇存槑 - -> 椤圭洰浣跨敤 `mybatis-plus` 鍒嗛〉鎻掍欢 瀹炵幇鍒嗛〉鍔熻兘 澶ц嚧鐢ㄦ硶涓� MP 涓�鑷� [MP鍒嗛〉鏂囨。](https://baomidou.com/pages/97710a/) <br> -> 椤圭洰宸查厤缃垎椤靛悎鐞嗗寲 椤垫暟婧㈠嚭 渚嬪: 涓�鍏�5椤� 鏌ヤ簡绗�6椤� 榛樿杩斿洖绗竴椤� <br> - - - -## 浠g爜鐢ㄦ硶 - -> `Controller` 浣跨敤 `PageQuery` 鎺ユ敹鍒嗛〉鍙傛暟 鍏蜂綋鍙傛暟鍙傝�� `PageQuery` - - - -> 鏋勫缓 `Mybatis-Plus` 鍒嗛〉瀵硅薄 <br> -> 浣跨敤 `PageQuery#build()` 鏂规硶 鍙揩閫�(鍩轰簬褰撳墠瀵硅薄鏁版嵁)鏋勫缓 `MP` 鍒嗛〉瀵硅薄 - -<br> -<br> - -鍏蜂綋鐢ㄦ硶涓� `MP` 涓�鑷� - -> 鑷畾涔� `SQL` 鏂规硶鍒嗛〉 <br> -> 鍙渶鍦� `Mapper` 鏂规硶绗竴涓弬鏁板拰杩斿洖鍊� 閲嶇偣: 绗竴涓弬鏁� 鏍囨敞鍒嗛〉瀵硅薄 - -<br> - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/param_check.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/param_check.md deleted file mode 100644 index 95ee19d..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/param_check.md +++ /dev/null @@ -1,158 +0,0 @@ -# 鍙傛暟鏍¢獙 -- - - - -鍙傛暟鏍¢獙鍦ㄦ棩甯稿紑鍙戜腑鍗佸垎甯歌锛屽湪鏈鏋朵腑寮曞叆浜� `spring-boot-starter-validation` 渚濊禆锛屽簳灞傚熀浜� `hibernate-validator`锛屽彲浠ュ鍙傛暟杩涜鏍¢獙銆� - -## 鍙傛暟鏍¢獙浣跨敤 - -### 鏂规硶涓�锛氫娇鐢� `@Validated` 娉ㄨВ - -#### 姝ラ涓�锛氭爣娉� `@Validated` - -`@Validated` 鍙互鏍囨敞鍦ㄧ被涓婏紝鎴栬�呮槸鍙傛暟鍓嶃�� - -```Java -/** 鏍囨敞鍦ㄧ被涓� **/ -@Validated -@RestController -@RequestMapping("/auth") -public class AuthController { - - @PostMapping("/login") - public R<LoginVo> login(@RequestBody LoginBody body) { - // ... - } - -} -``` - -```Java -/** 鏍囨敞鍦ㄥ弬鏁板墠 **/ -@PostMapping -public R<Void> add(@Validated @RequestBody SysUserBo user) { - // ... -} -``` - -#### 姝ラ浜岋細鏍囨敞鏍¢獙娉ㄨВ - -鍦ㄥ弬鏁颁腑鍔犲叆鏍¢獙娉ㄨВ銆� - -```Java -public class SysUserBo { - - @NotBlank(message = "鐢ㄦ埛璐﹀彿涓嶈兘涓虹┖") - @Size(min = 0, max = 30, message = "鐢ㄦ埛璐﹀彿闀垮害涓嶈兘瓒呰繃{max}涓瓧绗�") - private String userName; - - @NotBlank(message = "鐢ㄦ埛鏄电О涓嶈兘涓虹┖") - @Size(min = 0, max = 30, message = "鐢ㄦ埛鏄电О闀垮害涓嶈兘瓒呰繃{max}涓瓧绗�") - private String nickName; - - @Email(message = "閭鏍煎紡涓嶆纭�") - @Size(min = 0, max = 50, message = "閭闀垮害涓嶈兘瓒呰繃{max}涓瓧绗�") - private String email; - -} -``` - -甯歌鏍¢獙娉ㄨВ瑙佹枃鏈檮琛ㄣ�� - -_娉細message 鏀寔 EL 琛ㄨ揪寮忥紝{max} 鐩存帴璇诲彇鍓嶉潰鐨勫弬鏁板�笺�俖 - -### 鏂规硶浜岋細浣跨敤鏍¢獙宸ュ叿绫� `ValidatorUtils` - -`org.dromara.common.core.utils.ValidatorUtils` - - - -浣跨敤鏂瑰紡 1锛氭牎楠屾墍鏈夊甫鏈夋牎楠屾敞瑙g殑灞炴�� - -```Java -// 鏍¢獙鎵�鏈夊甫鏈夋牎楠屾敞瑙g殑灞炴�� -ValidatorUtils.validate(object); -``` - -浣跨敤鏂瑰紡 2锛氭寜鐓у垎缁勬牎楠屽睘鎬э紙鍙互浼犲涓垎缁勶級 - -```Java -// 鎸夌収鍒嗙粍鏍¢獙灞炴�э紙鍙互浼犲涓垎缁勶級 -ValidatorUtils.validate(object, group); -``` - -## 鎵╁睍浣跨敤 - -### 鎵╁睍涓�锛氳嚜瀹氫箟鏍¢獙娉ㄨВ - -闄や簡宸叉湁鐨勬牎楠屾敞瑙d互澶栵紝鍙互缁撳悎涓氬姟杩涜鑷畾涔夈�� - -浠ユ鏋朵腑鐨� `@Xss` 娉ㄨВ涓轰緥杩涜璇存槑銆� - -```Java -@Xss(message = "鐢ㄦ埛璐﹀彿涓嶈兘鍖呭惈鑴氭湰瀛楃") -@NotBlank(message = "鐢ㄦ埛璐﹀彿涓嶈兘涓虹┖") -@Size(min = 0, max = 30, message = "鐢ㄦ埛璐﹀彿闀垮害涓嶈兘瓒呰繃{max}涓瓧绗�") -private String userName; -``` - -#### 1锛氭柊澧� `@Xss` 娉ㄨВ - -`org.dromara.common.core.xss.Xss` - - - -#### 2锛氳嚜瀹氫箟鏍¢獙鍣� - -鑷畾涔夋牎楠屽櫒瀹炵幇 `jakarta.validation.ConstraintValidator` 鎺ュ彛銆� - -`org.dromara.common.core.xss.XssValidator` - - - -### 鎵╁睍浜岋細鑷畾涔夊垎缁勬牎楠� - -鍚屼竴涓璞″湪涓嶅悓鐨勮姹備腑闇�瑕佹牎楠岀殑鍙傛暟涓嶅悓锛屽垯鍙互浣跨敤鍒嗙粍鏍¢獙銆� - -#### 1锛氳嚜瀹氫箟鍒嗙粍 - - - -#### 2锛歚@Validated` 娉ㄨВ鎸囧畾鍒嗙粍 - - - -#### 3锛氭牎楠屾敞瑙d腑鎸囧畾鍒嗙粍 - - - -## 闄勫綍锛氬父鐢ㄦ牎楠屾敞瑙� - -| 娉ㄨВ | 浣跨敤锛堝彧鍒椾妇鐗规畩鍙傛暟鍊硷級 | 鍙傛暟绫诲瀷 | 璇存槑 | -|------------------|--------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------| -| @AssertFalse | @AssertFalse | boolean / Boolean | 鍏冪礌鍊煎繀椤讳负 false | -| @AssertTrue | @AssertTrue | boolean / Boolean | 鍏冪礌鍊煎繀椤讳负 true | -| @DecimalMax | @DecimalMax(value=鍊�) | - BigDecimal <br> - BigInteger <br> - CharSequence <br> - byte, short, int, long 鍙婂叾鍖呰绫� | 鍏冪礌蹇呴』鏄竴涓暟瀛楋紝鍏跺�煎繀椤诲皬浜庢垨绛変簬鎸囧畾鐨勬渶澶у�� | -| @DecimalMin | @DecimalMin(value=鍊�) | - BigDecimal <br> - BigInteger <br> - CharSequence <br> - byte, short, int, long 鍙婂叾鍖呰绫� | 鍏冪礌蹇呴』鏄竴涓暟瀛楋紝鍏跺�煎繀椤诲ぇ浜庢垨绛変簬鎸囧畾鐨勬渶灏忓�� | -| @Digits | @Digits(integer=鏁存暟浣嶅��, fraction=灏忔暟浣嶅��) | - BigDecimal <br> - BigInteger <br> - CharSequence <br> - byte, short, int, long 鍙婂叾鍖呰绫� | 鍏冪礌蹇呴』绗﹀悎鏁存暟浣嶄互鍙婂皬鏁颁綅鑼冨洿鍊� | -| @Email | @Email(regexp=姝e垯琛ㄨ揪寮�, flags=鏍囧織) | CharSequence | 鍏冪礌鏄惁绗﹀悎姝e垯琛ㄨ揪寮忥紙姝e垯琛ㄨ揪寮忛潪蹇呬紶锛� | -| @Future | @Future | - java.util.Date <br> - java.util.Calendar <br> - java.time.Instant <br> - java.time.LocalDate <br> - java.time.LocalDateTime <br> - java.time.LocalTime <br> - java.time.MonthDay <br> - java.time.OffsetDateTime <br> - java.time.OffsetTime <br> - java.time.Year <br> - java.time.YearMonth <br> - java.time.ZonedDateTime <br> - java.time.chrono.HijrahDate <br> - java.time.chrono.JapaneseDate <br> - java.time.chrono.MinguoDate <br> - java.time.chrono.ThaiBuddhistDate | 鍏冪礌蹇呴』鏄湭鏉ョ殑鏃跺埢銆佹棩鏈熸垨鏃堕棿 | -| @FutureOrPresent | @FutureOrPresent | 鍚� @Future | 鍏冪礌蹇呴』鏄綋鍓嶆垨鏈潵鐨勬椂鍒汇�佹棩鏈熸垨鏃堕棿 | -| @Length | @Length(min=鏈�灏忓��, max=鏈�澶у��) | - CharSequence | 楠岃瘉瀛楃涓叉槸鍚﹀湪鍖呭惈鐨� min 鍜� max 涔嬮棿 | -| @Max | @Max(value=鍊�) | - BigDecimal <br> - BigInteger <br> - byte, short, int, long 鍙婂叾鍖呰绫� | 鍏冪礌蹇呴』鏄竴涓暟瀛楋紝鍏跺�煎繀椤诲皬浜庢垨绛変簬鎸囧畾鐨勬渶澶у�� | -| @Min | @Min(value=鍊�) | - BigDecimal <br> - BigInteger <br> - byte, short, int, long 鍙婂叾鍖呰绫� | 鍏冪礌蹇呴』鏄竴涓暟瀛楋紝鍏跺�煎繀椤诲ぇ浜庢垨绛変簬鎸囧畾鐨勬渶灏忓�� | -| @Negative | @Negative | - BigDecimal <br> - BigInteger <br> - byte锛宻hort锛宨nt锛宭ong锛宖loat锛宒ouble 鍙婂叾鍖呰绫� | 鍏冪礌蹇呴』鏄竴涓弗鏍肩殑璐熸暟锛堝嵆 0 琚涓烘棤鏁堝�硷級 | -| @NegativeOrZero | @NegativeOrZero | - BigDecimal <br> - BigInteger <br> - byte锛宻hort锛宨nt锛宭ong锛宖loat锛宒ouble 鍙婂叾鍖呰绫� | 鍏冪礌蹇呴』涓鸿礋鏁版垨 0 | -| @NotBlank | @NotBlank | CharSequence | 鍏冪礌涓嶈兘涓� null锛屽苟涓斿繀椤昏嚦灏戝寘鍚竴涓潪绌虹櫧瀛楃 | -| @NotEmpty | @NotEmpty | - CharSequence <br> - Collection <br> - Map <br> - Array | 鍏冪礌涓嶈兘涓� null 鎴栫┖闆嗗悎 | -| @NotNull | @NotNull | 涓嶉檺绫诲瀷 | 鍏冪礌涓嶈兘涓� null | -| @Null | @Null | 涓嶉檺绫诲瀷 | 鍏冪礌蹇呴』涓� null | -| @Past | @Past | 鍚� @Future | 鍏冪礌蹇呴』鏄繃鍘荤殑鐬棿銆佹棩鏈熸垨鏃堕棿 | -| @PastOrPresent | @PastOrPresent | 鍚� @Future | 鍏冪礌蹇呴』鏄繃鍘绘垨鐜板湪鐨勭灛闂淬�佹棩鏈熸垨鏃堕棿 | -| @Pattern | @Pattern(regexp=姝e垯琛ㄨ揪寮�, flags=鏍囧織) | CharSequence | 鍏冪礌蹇呴』涓庢寚瀹氱殑姝e垯琛ㄨ揪寮忓尮閰嶏紙姝e垯琛ㄨ揪寮忛伒寰� Java 姝e垯琛ㄨ揪寮忕害瀹氾級 | -| @Positive | @Positive | - BigDecimal <br> - BigInteger <br> - byte锛宻hort锛宨nt锛宭ong锛宖loat锛宒ouble 鍙婂叾鍖呰绫� | 鍏冪礌蹇呴』鏄竴涓弗鏍肩殑姝f暟锛堝嵆 0 琚涓烘棤鏁堝�硷級 | -| @PositiveOrZero | @PositiveOrZero | - BigDecimal <br> - BigInteger <br> - byte锛宻hort锛宨nt锛宭ong锛宖loat锛宒ouble 鍙婂叾鍖呰绫� | 鍏冪礌蹇呴』涓烘鏁版垨 0 | -| @Range | @Range(min=鏈�灏忓��, max=鏈�澶у��) | - BigDecimal <br> - BigInteger <br> - CharSequence <br> - byte, short, int, long 鍙婂叾鍖呰绫� | 楠岃瘉鍏冪礌鏄惁鍦ㄥ寘鍚殑 min 鍜� max 涔嬮棿 | -| @Size | @Size(min=鏈�灏忓��, max=鏈�澶у��) | - CharSequence <br> - Collection <br> - Map <br> - Array | 楠岃瘉鍏冪礌鏄惁鍦ㄥ寘鍚殑 min 鍜� max 涔嬮棿 | -| @Valid | @Valid | 瀵硅薄 | 绾ц仈楠岃瘉 | - -鏇村娉ㄨВ鍙弬鑰冨寘锛� `org.hibernate.validator` \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/permissions.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/permissions.md deleted file mode 100644 index 384b774..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/permissions.md +++ /dev/null @@ -1,144 +0,0 @@ -# 鍏充簬鏁版嵁鏉冮檺 -- - - -* 鍙傝�� demo 妯″潡鐢ㄦ硶(闇�瀵煎叆 test.sql 鏂囦欢) - -### 鏂扮増鏁版嵁鏉冮檺鍔熻兘: -1.鏀寔鑷姩娉ㄥ叆 sql 鏁版嵁杩囨护<br> -2.鏌ヨ銆佹洿鏂般�佸垹闄� 闄愬埗<br> -3.鏀寔鑷畾涔夋暟鎹瓧娈佃繃婊�<br> -4.妯℃澘鏀寔 spel 璇硶瀹炵幇鍔ㄦ�� Bean 澶勭悊<br> -5.鏀寔涓庤彍鍗曟潈闄愭爣璇嗙鑱斿悎浣跨敤(5.2.X鏂板姛鑳�) - -### 鏁版嵁鏉冮檺鐩稿叧浠g爜 - -| 绫� | 璇存槑 | 鍔熻兘 | -|-------------------------------|-----------------|----------------------------------------| -| DataScopeType | 鏁版嵁鏉冮檺妯℃澘瀹氫箟 | 鐢ㄤ簬瀹氫箟鏁版嵁鏉冮檺妯℃澘 | -| DataPermission | 鏁版嵁鏉冮檺缁勬敞瑙� | 鐢ㄤ簬鏍囨敞寮�鍚暟鎹潈闄� (榛樿杩囨护閮ㄩ棬鏉冮檺) | -| DataColumn | 鍏蜂綋鐨勬暟鎹潈闄愬瓧娈垫爣娉� | 鐢ㄤ簬鏇挎崲鏁版嵁鏉冮檺妯℃澘鍐呯殑 key 鍙橀噺 | -| PlusDataPermissionInterceptor | 鏁版嵁鏉冮檺 sql 鎷︽埅鍣� | 鐢ㄤ簬鎷︽埅鎵�鏈� sql 妫�鏌ユ槸鍚︽爣娉ㄤ簡 `DataPermission` 娉ㄨВ | -| PlusDataPermissionHandler | 鏁版嵁鏉冮檺澶勭悊鍣� | 鐢ㄤ簬澶勭悊琚嫤鎴埌鐨� sql 涓哄叾娣诲姞鏁版嵁鏉冮檺杩囨护鏉′欢 | -| DataPermissionHelper | 鏁版嵁鏉冮檺鍔╂墜 | 鎿嶄綔鏁版嵁鏉冮檺涓婁笅鏂囧彉閲� | -| SysDataScopeService | 鑷畾涔� Bean 澶勭悊鏁版嵁鏉冮檺 | 鐢ㄤ簬鑷畾涔夋墿灞� | - -## 蹇界暐鏁版嵁鏉冮檺 - -1.濡傛灉闇�瑕佹寚瀹氬崟鐙� SQL 涓嶅紑鍚繃婊わ紝鍙湪瀵瑰簲鐨� Mapper 鎺ュ彛娣诲姞濡備笅蹇界暐娉ㄨВ锛� -``` -@InterceptorIgnore(dataPermission = "true") -``` - -2.濡傛灉闇�瑕佸湪涓氬姟灞傚拷鐣ユ暟鎹潈闄愶紝鍙皟鐢ㄤ互涓嬫柟娉曪細 -``` -# 鏃犺繑鍥炲�� -DataPermissionHelper.ignore(() -> { 涓氬姟浠g爜 }); -# 鏈夎繑鍥炲�� -Class result = DataPermissionHelper.ignore(() -> { return 涓氬姟浠g爜 }); -``` - -### 浣跨敤鏂瑰紡 `鍙傝�僤emo妯″潡` -鏁版嵁鏉冮檺浣撶郴 `鐢ㄦ埛 -> 澶氳鑹� => 瑙掕壊 -> 鍗曟暟鎹潈闄恅 -> 渚嬪瓙: 鐢ㄦ埛A 鎷ユ湁涓や釜瑙掕壊<br> -> 瑙掕壊A 閮ㄩ棬缁忕悊 鍙煡鐪� 鏈儴闂ㄥ強浠ヤ笅閮ㄩ棬鐨勬暟鎹�<br> -> 瑙掕壊B 鍏艰亴寮�鍙� 鍙煡鐪� 浠呰嚜宸辩殑鏁版嵁 - -> 鍒涘缓瑙掕壊 test1 涓� 鏈儴闂ㄥ強浠ヤ笅 - - - -> 鍒涘缓瑙掕壊 test2 涓� 浠呮湰浜� - - - -> 灏嗗叾鍒嗛厤缁欑敤鎴� test - - - -### 缂栧啓鍒楄〃鏌ヨ(娉ㄦ剰: 鏁版嵁鏉冮檺娉ㄨВ鍙兘鍦� Mapper 灞備娇鐢�) - -> 鏍囨敞鏁版嵁鏉冮檺娉ㄨВ `dept_id` 涓鸿繃婊ら儴闂ㄥ瓧娈� `user_id` 涓鸿繃婊ゅ垱寤虹敤鎴� - - - -### 閲嶇偣娉ㄦ剰: 濡備笅鎯呭喌涓嶇敓鏁� - -> 鏈夎嚜瀹氫箟瀹炵幇鏂规硶 鏈�缁堟墽琛岀殑mapper涓嶆槸杩欎釜鏂规硶 鎵�浠ユ棤娉曠敓鏁� -> -> 瑙e喅鏂规: 涓�鐩村線涓嬬偣 鎵惧埌鏈�缁堢殑鎵цmapper閲嶅啓鍗冲彲 - - - -### 缂栧啓鏁版嵁鏉冮檺妯℃澘 - - - -1.`code` 涓哄叧鑱旇鑹茬殑鏁版嵁鏉冮檺 `code`<br> -2.`sqlTemplate` 涓� sql 妯℃澘<br> -`#{#deptName}` 涓烘ā鏉垮彉閲� 瀵瑰簲鏉冮檺娉ㄨВ鐨� `key`<br> -`#{@sdss}` 涓烘ā鏉� Bean 璋冪敤 璋冪敤鍏� Bean 鐨勫鐞嗘柟娉�<br> -3.`elseSql` 涓哄厹搴� sql 澶勭悊褰撳墠瑙掕壊涓庢爣娉ㄧ殑娉ㄨВ 鏃犲搴旂殑鎯呭喌<br> -渚嬪 鏁版嵁鏉冮檺涓轰粎鏈汉 涓� 鏂规硶骞舵湭鏍囨敞鍏蜂綋杩囨护娉ㄨВ 鍒� 濉厖 `1 = 0` 浣挎潯浠朵笉婊¤冻 涓嶅厑璁告煡鐪�<br> -鏇磋缁嗙敤娉曞彲浠ュ弬鑰� `DataScopeType` 娉ㄩ噴 - -### 娴嬭瘯浠g爜 - -> 浣跨敤 `绠$悊鍛榒 鐢ㄦ埛浼樺厛娴嬭瘯 - - - -> 浣跨敤 `test` 鐢ㄦ埛娴嬭瘯 - - - -> 浣跨敤 `test` 鍒犻櫎涓�鏉′笉灞炰簬鑷繁鐨勬暟鎹� -> sql鎵ц涓轰笉婊¤冻鏉′欢 涓嶅厑璁稿垹闄� - - - - - - -> 浣跨敤 `test` 淇敼涓庡垹闄ゅ悓鐞�<br> -> 鍏蜂綋瀹炵幇涓� 鏇存柊鍜屽垹闄ゆ柟娉� 鏍囨敞鏁版嵁鏉冮檺娉ㄨВ - - - -### 鑷畾涔塖QL妯℃澘 - -> 1.棣栧厛鍦ㄨ鑹茬鐞� 鏁版嵁鏉冮檺涓嬫媺妗� 娣诲姞鑷畾涔夋ā鏉�<br> -> 涓轰粈涔堜笉鏀剧疆鍒扮郴缁熷瓧鍏搁棶棰�: 鍥犳暟鎹潈闄愪笌妯℃澘缁戝畾 涓嶅簲闅忔剰鏀瑰姩 鏈�濂戒簨鍏堝畾涔夊ソ - - - -> 2.浠g爜 `DataScopeType` 鑷畾涔変竴涓猄QL妯℃澘 - - - -> 3.鏍囨敞鏉冮檺娉ㄨВ - - - -> 4.璁剧疆鏁版嵁鏉冮檺鍙橀噺 - - - -> 5.娴嬭瘯 - - - -### mybatis-plus 鍘熺敓鏂规硶 澧炲姞鏁版嵁鏉冮檺杩囨护 - -> 棣栧厛鏌ョ湅闇�瑕侀噸鍐欑殑鏂规硶婧愮爜 閲嶇偣`鏂规硶婧愮爜` `鏂规硶婧愮爜` `鏂规硶婧愮爜`<br> -> 渚嬪閲嶅啓 `selectPage` 鏂规硶<br> - - - -> 澶嶅埗婧愮爜鍒拌嚜宸辩殑 `Mapper` 骞跺鍔犳暟鎹潈闄愭敞瑙� 娉ㄦ剰宸﹁竟鍑虹幇閲嶅啓鍥炬爣 鍗充负閲嶅啓鎴愬姛<br> - - - -### 鏀寔绫绘爣娉� - -> 鑾峰彇瑙勫垯 `鏂规硶 > 绫籤 娉ㄦ剰: 绫绘爣娉ㄥ悗 鎵�鏈夋柟娉�(鍖呮嫭鐖剁被鏂规硶) 閮戒細杩涜鏁版嵁鏉冮檺杩囨护 - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/permissions_control.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/permissions_control.md deleted file mode 100644 index fa3a079..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/permissions_control.md +++ /dev/null @@ -1,180 +0,0 @@ -# 鏉冮檺鎺у埗 -- - - - -鏈枃閲囩敤 `Sa-Token` 妗嗘灦瀹炵幇鏉冮檺鎺у埗銆俒瀹樻柟鏂囨。浼犻�侀棬](https://sa-token.cc/doc.html#/) - -## 鏉冮檺鏍¢獙 -鏉冮檺鏍¢獙鎸囩殑鏄牎楠岀敤鎴锋槸鍚︽嫢鏈夎闂煇涓� API 鐨勮兘鍔涖�� - -閫氬父鎯呭喌涓嬶紝涓�涓� API 瀵瑰簲涓�涓潈闄愮爜锛屽鏋滅敤鎴峰叿澶囧綋鍓� API 鐨勬潈闄愮爜锛屽嵆浠h〃鏈夎兘鍔涜闂 API銆� - -### 1锛氭潈闄愭爣璇� -鍦ㄦ湰绯荤粺涓紝姣忎竴涓彍鍗曞姛鑳介兘鏈夊搴旂殑鏉冮檺鏍囪瘑锛屽彲浠ュ湪鑿滃崟绠$悊涓繘琛岃缃�� - -> 娉細 -> 1. 鍓嶅悗绔殑鏉冮檺鏍囪瘑瑕佷繚鎸佷竴鑷淬�� -> 2. 鏉冮檺鏍囪瘑鍙互浣跨敤閫氶厤绗*`銆� - - - - -### 2锛氭牎楠屾柟娉� -#### 2.1锛氫娇鐢� `@SaCheckPermission` 娉ㄨВ杩涜鏍¢獙 -`@SaCheckPermission` 娉ㄨВ鏄敱 `Sa-Token` 妗嗘灦鎻愪緵鐨勮鑹叉牎楠屾敞瑙o紝鍙互鏍囨敞鍦ㄦ柟娉曚笂鎴栫被涓娿�� - -- 鍗曚釜鏉冮檺鏍¢獙锛� - -```Java -@SaCheckPermission("system:user:list") -``` - -- 澶氫釜鏉冮檺鏍¢獙锛堟垨妯″紡锛屾弧瓒充换鎰忎竴涓潈闄愬嵆鍙級锛� - -```Java -@SaCheckPermission( - value = { - "system:user:list", - "system:user:query" - }, - mode = SaMode.OR -) -``` - -- 澶氫釜鏉冮檺鏍¢獙锛堜笌妯″紡锛屽繀椤绘弧瓒虫墍鏈夋潈闄愶級锛� - -```Java -@SaCheckPermission( - value = { - "system:user:list", - "system:user:query" - }, - mode = SaMode.AND -) -``` - -#### 2.2锛氫娇鐢� `StpUtil` 宸ュ叿绫绘牎楠� -`StpUtil` 宸ュ叿绫绘槸鐢� `Sa-Token` 妗嗘灦鎻愪緵鐨勬潈闄愬伐鍏风被锛屾彁渚涗簡甯哥敤鐨勬牎楠屾柟娉曘�� - -- 鍒ゆ柇褰撳墠鐢ㄦ埛鏄惁鎷ユ湁鏌愪釜鏉冮檺锛堣繑鍥� `boolean`锛夛細 - -```Java -StpUtil.hasPermission("system:user:list"); -``` - -- 鍗曚釜鏉冮檺鏍¢獙锛� - -```Java -StpUtil.checkPermission("system:user:list"); -``` -濡傛灉楠岃瘉鏈�氳繃锛屽垯鎶涘嚭寮傚父: `NotPermissionException` - -- 澶氫釜鏉冮檺鏍¢獙锛堟垨妯″紡锛屾弧瓒充换鎰忎竴涓潈闄愬嵆鍙級锛� - -```Java -StpUtil.checkPermissionOr("system:user:list", "system:user:query"); -``` -濡傛灉楠岃瘉鏈�氳繃锛屽垯鎶涘嚭寮傚父: `NotPermissionException` - -- 澶氫釜鏉冮檺鏍¢獙锛堜笌妯″紡锛屽繀椤绘弧瓒虫墍鏈夋潈闄愶級锛� - -```Java -StpUtil.checkPermissionAnd("system:user:list", "system:user:query"); -``` -濡傛灉楠岃瘉鏈�氳繃锛屽垯鎶涘嚭寮傚父: `NotPermissionException` - -## 瑙掕壊鏍¢獙 -瑙掕壊鏍¢獙鎸囩殑鏄牎楠岀敤鎴锋槸鍚︽嫢鏈夋煇涓寚瀹氳鑹层�� - -### 1锛氭潈闄愭爣璇� -鍦ㄦ湰绯荤粺涓紝姣忎釜瑙掕壊閮芥嫢鏈夊敮涓�鐨勬潈闄愬瓧绗︺�� - -闄や簡瓒呯骇绠$悊鍛樿鑹插锛屽叾浠栬鑹茬殑鏉冮檺瀛楃鍙互閫氳繃瑙掕壊绠$悊杩涜璁剧疆銆� - - - -### 2锛氭牎楠屾柟娉� -#### 2.1锛氫娇鐢� `@SaCheckRole` 娉ㄨВ鏍¢獙 -`@SaCheckRole` 娉ㄨВ鏄敱 `Sa-Token` 妗嗘灦鎻愪緵鐨勮鑹叉牎楠屾敞瑙o紝鍙互鏍囨敞鍦ㄦ柟娉曚笂鎴栫被涓娿�� - -- 鍗曚釜瑙掕壊鏍¢獙 - -```Java -@SaCheckRole("superadmin") -``` - -- 澶氫釜瑙掕壊鏍¢獙锛堟垨妯″紡锛屾弧瓒充换鎰忎竴涓鑹插嵆鍙級锛� - -```Java -@SaCheckRole( - value = { - "superadmin", - "admin" - }, - mode = SaMode.OR -) -``` - -- 澶氫釜瑙掕壊鏍¢獙锛堜笌妯″紡锛屽繀椤绘弧瓒虫墍鏈夎鑹诧級锛� - -```Java -@SaCheckRole( - value = { - "superadmin", - "admin" - }, - mode = SaMode.AND -) -``` - -#### 2.2锛氫娇鐢� `StpUtil` 宸ュ叿绫绘牎楠� -`StpUtil` 宸ュ叿绫绘槸鐢� `Sa-Token` 妗嗘灦鎻愪緵鐨勬潈闄愬伐鍏风被锛屾彁渚涗簡甯哥敤鐨勬牎楠屾柟娉曘�� - -- 鍒ゆ柇褰撳墠鐢ㄦ埛鏄惁鎷ユ湁鏌愪釜瑙掕壊锛堣繑鍥� `boolean`锛夛細 - -```Java -StpUtil.hasRole("superadmin") -``` - -- 鍗曚釜鏉冮檺鏍¢獙锛� - -```Java -StpUtil.checkRole("system:user:list"); -``` -濡傛灉楠岃瘉鏈�氳繃锛屽垯鎶涘嚭寮傚父: `NotRoleException` - -- 澶氫釜鏉冮檺鏍¢獙锛堟垨妯″紡锛屾弧瓒充换鎰忎竴涓鑹插嵆鍙級锛� - -```Java -StpUtil.checkRoleOr("system:user:list", "system:user:query"); -``` -濡傛灉楠岃瘉鏈�氳繃锛屽垯鎶涘嚭寮傚父: `NotRoleException` - -- 澶氫釜鏉冮檺鏍¢獙锛堜笌妯″紡锛屽繀椤绘弧瓒虫墍鏈夎鑹诧級锛� - -```Java -StpUtil.checkRoleAnd("system:user:list", "system:user:query"); -``` -濡傛灉楠岃瘉鏈�氳繃锛屽垯鎶涘嚭寮傚父: `NotRoleException` - -## 瑙掕壊鏉冮檺鍙岄噸 `OR` 鏍¢獙 -闄や簡鍒嗗紑鏍¢獙浠ュ锛屾潈闄愬拰瑙掕壊涔熷彲浠ヨ繘琛岀粍鍚堬紝琛ㄧず澶囬�夋牎楠屻�� - -绠�鍗曚妇涓緥瀛愶細 - -鍋囪鏌愪釜 API 鐨勬潈闄愮爜涓� `system:user:list`锛岃鑹� `admin` 鍙互璋冪敤锛屽垯鍙互杩欐牱鍐欙細 - -```Java -@SaCheckPermission(value = "system:user:list", orRole = "admin") -``` - -浠ヤ笂鏉冮檺鍙渶瑕佹弧瓒充换鎰忎竴椤瑰嵆鍙�傛洿澶氬啓娉曞彲浠ュ弬鑰� `Sa-Token` [瀹樻柟鏂囨。](https://sa-token.cc/doc.html#/use/at-check?id=_4%e3%80%81%e8%a7%92%e8%89%b2%e6%9d%83%e9%99%90%e5%8f%8c%e9%87%8d-or%e6%a0%a1%e9%aa%8c)銆� - -## 褰撳墠鐢ㄦ埛鐨勬墍鏈夋潈闄� -鏈郴缁熶腑瀹炵幇浜� `StpInterface` 鎺ュ彛锛屽彲浠ュ鐢ㄦ埛鐨勬潈闄愪互鍙婅鑹茶繘琛岀鐞嗭紝骞朵笖鍙互鏍规嵁涓嶅悓鐨勭敤鎴风被鍨嬭繘琛岃缃�� - -鍏蜂綋鍙傝�冪被锛歚org.dromara.common.satoken.core.service.SaPermissionImpl` - -## 蹇界暐鏉冮檺鏍¢獙 -璇峰弬鑰冩枃妗o細[鎺ュ彛鏀捐](/ruoyi-vue-plus/framework/basic/interface_release?id=鎺ュ彛鏀捐) - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/social.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/social.md deleted file mode 100644 index a004434..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/social.md +++ /dev/null @@ -1,68 +0,0 @@ -# 绗笁鏂规巿鏉冨姛鑳� -- - - -## 鐗堟湰 >= 5.X - -## 鍓嶇疆璇存槑 -1. 璇ュ姛鑳藉熀浜� `JustAuth` 瀹炵幇锛屾敮鎸佸瀹跺钩鍙板疄鐜扮涓夋柟鎺堟潈鐧诲綍銆� -2. 浠� `Gitee` 鎺堟潈鐧诲綍涓轰緥杩涜鏈姛鑳界殑浣跨敤璇存槑銆� -3. 鍏朵粬绗笁鏂规巿鏉冮厤缃俊鎭幏鍙栨柟寮忓彲鍙傝�� `JustAuth` [瀹樻柟鏂囨。](https://www.justauth.cn/guide/)銆�<br> - -  - -## 绗笁鏂规巿鏉冮厤缃� - -### 鐢宠涓夋柟搴旂敤(浠itee涓轰緥) - - - -### 鏇存敼鍚庣閰嶇疆 `application-dev.yml` - - - -**娉細鍐呯綉鍦板潃鏃犳硶鍥炶皟锛岃浣跨敤澶栫綉鍙互璁块棶鐨勫湴鍧�銆�** - - - -### 鏇存敼鍓嶇閰嶇疆 `login.vue` - - - -## 鎺堟潈鐧诲綍锛堟湭缁戝畾绗笁鏂瑰钩鍙帮級 - -### 姝ラ涓�锛氫釜浜轰腑蹇冩巿鏉冪涓夋柟搴旂敤 - - - -### 姝ラ浜岋細鍚屾剰鎺堟潈 - - - -椤堕儴鍑虹幇鎺堟潈鎴愬姛锛屽苟璺宠浆鍒扮郴缁熼椤点��<br> - -<br> - - - -鏌ョ湅绗笁鏂瑰簲鐢ㄥ彲鐪嬪埌鎺堟潈鎴愬姛鐨勪釜浜轰俊鎭��<br> - - - -## 鎺堟潈鐧诲綍锛堝凡缁戝畾绗笁鏂瑰钩鍙帮級 - -### 姝ラ涓�锛氱偣鍑荤櫥褰曢〉闈㈠浘鏍� - - - -### 姝ラ浜岋細鍚屾剰鎺堟潈 - - - -## 瑙i櫎鎺堟潈缁戝畾 - -### 姝ラ涓�锛氫釜浜轰腑蹇冪偣鍑昏В缁戠涓夋柟搴旂敤 - - - -### 姝ラ浜岋細鐐瑰嚮纭畾瀹屾垚瑙g粦 - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/tenant.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/tenant.md deleted file mode 100644 index 3395308..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/tenant.md +++ /dev/null @@ -1,121 +0,0 @@ -# 澶氱鎴峰姛鑳� -- - - -## 鐗堟湰 >= 5.X - -## 鍓嶇疆璇存槑锛堥噸瑕侊級 -1. 鏈鏋跺绉熸埛鍔熻兘鐨勫疄鐜版槸鍩轰簬 [MyBatis-Plus 澶氱鎴锋彃浠禲(https://baomidou.com/pages/aef2f2/#tenantlineinnerinterceptor) 鐨勶紝鍙敮鎸佹渶绠�鍗曠殑闅旂銆� -2. 鏈郴缁熼粯璁ゅ紑鍚绉熸埛鍔熻兘銆� -3. 澶氱鎴蜂笟鍔¤〃寤鸿〃闇�瑕佸姞涓婄鎴穒d `tenant_id`锛屽彲鍙傝�冨叾浠栫郴缁熻〃銆� -4. 闈炲绉熸埛琛ㄥ彲鍦ㄩ厤缃枃浠惰繘琛岄厤缃帓闄ゃ�� -5. 鍙湁瓒呯骇绠$悊鍛樻敮鎸佸垏鎹㈢鎴枫�� - -## 澶氱鎴蜂娇鐢ㄦ祦绋嬶紙鍏堣缁撹鍐嶅睍寮�锛侊級 -0. 寮�鍚绉熸埛閰嶇疆锛堢郴缁熼粯璁ゅ凡缁忓紑鍚級 -1. 鐧诲綍鐣岄潰锛堝彲浠ラ�夋嫨涓嶅悓绉熸埛锛� -> 娉細濡傛灉涓虹鎴疯缃簡缁戝畾鍩熷悕锛屽垯鍙兘閫夋嫨褰撳墠鍩熷悕鐩稿叧鐨勭鎴峰垪琛ㄣ�� -2. 璁剧疆澶氱鎴峰椁� -3. 鏂板/淇敼绉熸埛锛堥渶瑕侀�夋嫨濂楅锛� -4. 鍒囨崲绉熸埛锛堜粎瓒呯骇绠$悊鍛樺彲鎿嶄綔锛� - -## 澶氱鎴烽厤缃� -`application.yml`<br> - -> 寮�鍏� `enable` 鑺傜偣涓嶇敤搴熻瘽銆� <br> -> 濡傛灉涓嶉渶瑕佽繃婊ょ鎴风殑琛ㄥ彲鍦� `excludes` 鑺傜偣涓嬫坊鍔犮�� - -**娉ㄦ剰: 濡傛灉宸茬粡鍩轰簬绉熸埛妯″紡鍚姩浜嗙▼搴� 鍏抽棴绉熸埛蹇呴』鍒犻櫎mysql涓巖edis鍐呯殑鐩稿叧鏁版嵁閲嶆柊瀵煎叆sql** - - - -## 蹇界暐绉熸埛 - -1.濡傛灉闇�瑕佹寚瀹氬崟鐙� SQL 涓嶅紑鍚繃婊わ紝鍙湪瀵瑰簲鐨� Mapper 鎺ュ彛娣诲姞濡備笅蹇界暐娉ㄨВ锛� -``` -@InterceptorIgnore(tenantLine = "true", dataPermission = "false") -``` -**姝ゅ娉ㄦ剰浜嬮」 浣跨敤姝ゆ敞瑙e鏋滈渶瑕佸紑鍚暟鎹潈闄� dataPermission = "false" 蹇呴』娣诲姞 mp鐨勬敞瑙i粯璁ゆ槸蹇界暐鏁版嵁鏉冮檺鐨� 浼氬鑷存暟鎹潈闄愬け鏁�** - -2.濡傛灉闇�瑕佸湪涓氬姟灞傚拷鐣ュ绉熸埛锛屽彲璋冪敤浠ヤ笅鏂规硶(鎺ㄨ崘浣跨敤)锛� -``` -# 鏃犺繑鍥炲�� -TenantHelper.ignore(() -> { 涓氬姟浠g爜 }); -# 鏈夎繑鍥炲�� -Class result = TenantHelper.ignore(() -> { return 涓氬姟浠g爜 }); -``` - -## 鍔ㄦ�佸垏鎹㈢鎴� - -**浠呴�傜敤浜庣壒娈婇渶姹備笟鍔�(渚嬪: 鍒涘缓绉熸埛鏃�, 瀵硅绉熸埛鎿嶄綔涓�浜涙暟鎹�, 鎴栬�呴渶瑕佸幓鍏朵粬绉熸埛鏌ヤ竴浜涙暟鎹瓑) 绂佹涔辩敤鍚庢灉鑷礋** - -``` -# 鏃犺繑鍥炲�� -TenantHelper.dynamic(绉熸埛id, () -> { 涓氬姟浠g爜 }); -# 鏈夎繑鍥炲�� -Class result = TenantHelper.dynamic(绉熸埛id, () -> { return 涓氬姟浠g爜 }); -``` - -## 鐧诲綍鐣岄潰 - - - -> 娉細濡傛灉涓虹鎴疯缃簡缁戝畾鍩熷悕锛屽垯鍙兘閫夋嫨褰撳墠鍩熷悕鐩稿叧鐨勭鎴峰垪琛ㄣ�� - -## 绉熸埛濂楅绠$悊 -### 绉熸埛濂楅鏂板 - - - - -> 娉細 -> 1銆佸厛鏂板濂楅鍐嶆柊澧炵鎴凤紝鍥犱负绉熸埛鏂板涔嬪悗鏃犳硶淇敼鎵�閫夊椁愩�� -> 2銆佺鎴锋墍鍏宠仈鐨勫椁愬鏋滃悗缁湁淇敼鍙互杩涜鍚屾銆� - - -## 绉熸埛绠$悊 -### 榛樿绉熸埛 -> 娉細榛樿绉熸埛鏃犳硶淇敼 - - - -### 鏂板绉熸埛 -#### 濉啓琛ㄥ崟 - - -#### 閫夋嫨鏂板鐨勭鎴峰椁� - - -#### 鏂板瀹屾垚 - - -#### 鐧诲綍绉熸埛 - - - - -### 淇敼绉熸埛 -#### 閰嶇疆鍩熷悕 - - - - -#### 娌℃湁閰嶇疆鍩熷悕 - - -#### 寮鸿皟涓�涓嬶細杩欎笉鏄痓ug锛� -> 娉細鍩熷悕鐨勯厤缃氨鏄负浜嗙粦瀹氱壒瀹氱鎴凤紒 - -### 鍚屾濂楅 -搴旂敤鍦烘櫙锛氱鎴峰椁愯繘琛屼簡淇敼锛岄厤缃殑鑿滃崟闇�瑕佸悓姝ュ埌鐗瑰畾绉熸埛銆� -(涓嶆槸鎵�鏈夌鎴烽兘鏈夋洿鏂板椁愮殑鏉冨埄, 杩欐槸璺熼挶鎸傞挬鐨�) - -> 鐐逛竴涓嬫寜閽殑浜嬶紝鍥剧暐銆� - -## 鍒囨崲绉熸埛锛堜粎瓒呯骇绠$悊鍛橈級 -> 娉細绠$悊鍛樺垏鎹㈢鎴蜂笉鏄垏鎹㈢敤鎴凤紝鍒囨崲鐨勫彧鏄暟鎹紝绠$悊鍛樻嫢鏈夋墍鏈夋潈闄愩�� - - - - - - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/user.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/user.md deleted file mode 100644 index b665ac5..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/user.md +++ /dev/null @@ -1,85 +0,0 @@ -# 绯荤粺鐢ㄦ埛鐩稿叧 -- - - - -> 妗嗘灦閲囩敤sa-token鎺у埗鏉冮檺 骞跺sa-token鐨刟pi鍋氫簡涓�瀹氱殑涓氬姟灏佽<br> - -## 鐢ㄦ埛鐧诲綍 - -> 鍙傝�冭嚜甯﹀绉嶇櫥褰曞疄鐜� 涓嶉檺鍒剁敤鎴锋暟鎹潵婧� 鍙渶瑕佹瀯寤� LoginUser 鍗冲彲瀹屾垚鐧诲綍<br> -> 渚嬪: `鍚岃〃涓嶅悓绫诲瀷` `涓嶅悓琛╜ `鍚岃〃+鎵╁睍琛╜<br> - - - -## 鑾峰彇鐢ㄦ埛淇℃伅 - -> 瀹屾垚鐧诲綍鍚庝細鐢熸垚鐧诲綍token杩斿洖缁欏墠绔� 鍓嶇闇�瑕佸啀璇锋眰澶存惡甯oken 鍚庣鏂瑰彲鑾峰彇鍒板搴旂殑鐢ㄦ埛淇℃伅 - -璇锋眰澶翠紶閫掓牸寮�: `Authorization: Bearer token` - -鍚庣鑾峰彇鐢ㄦ埛淇℃伅: -```java -LoginUser user = LoginHelper.getLoginUser(); -``` - -## 鑾峰彇鐢ㄦ埛淇℃伅(鍩轰簬token) -```java -LoginUser user = LoginHelper.getLoginUser(token); -``` - -## 鑾峰彇鐧诲綍鐢ㄦ埛id -```java -Long userId = LoginHelper.getUserId(); -``` - -## 鑾峰彇鐧诲綍鐢ㄦ埛璐︽埛鍚� -```java -String username = LoginHelper.getUsername(); -``` - -## 鑾峰彇鐧诲綍鐢ㄦ埛鎵�灞炵鎴穒d -```java -String tenantId = LoginHelper.getTenantId(); -``` - -## 鑾峰彇鐧诲綍鐢ㄦ埛鎵�灞為儴闂╥d -```java -Long deptId = LoginHelper.getDeptId(); -``` - -## 鑾峰彇鐧诲綍鐢ㄦ埛绫诲瀷 -```java -UserType userType = LoginHelper.getUserType(); -``` - -## 鑾峰彇鐧诲綍鐢ㄦ埛鍏朵粬鎵╁睍灞炴�� -```java -Object obj = LoginHelper.getExtra(key); -``` - -## 璁剧疆鐧诲綍鐢ㄦ埛鍏朵粬鎵╁睍灞炴�� - -鍙傝�冪櫥褰曡缃� `clientId` 灞炴�� - - - -## 鍒ゆ柇鐢ㄦ埛鏄惁涓鸿秴绾х鐞嗗憳 - -```java -// 鍒ゆ柇褰撳墠鐧诲綍鐢ㄦ埛 -boolean b = LoginHelper.isSuperAdmin(); -// 鍒ゆ柇鐢ㄦ埛鍩轰簬id -boolean b = LoginHelper.isSuperAdmin(userId); -``` - -## 鍒ゆ柇鐢ㄦ埛鏄惁涓虹鎴风鐞嗗憳 - -```java -// 鍒ゆ柇褰撳墠鐧诲綍鐢ㄦ埛 -boolean b = LoginHelper.isTenantAdmin(); -// 鍒ゆ柇鐢ㄦ埛鍩轰簬瑙掕壊缁� -boolean b = LoginHelper.isSuperAdmin(rolePermission); -``` - -## 鍏朵粬鏇村鎿嶄綔 -[Sa-Token 瀹樻柟鏂囨。 - 鐧诲綍璁よ瘉](https://sa-token.cc/doc.html#/use/login-auth) - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/explain/about_join.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/explain/about_join.md deleted file mode 100644 index 593129e..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/explain/about_join.md +++ /dev/null @@ -1,14 +0,0 @@ -# 鍏充簬澶氳〃鏌ヨ -- - - -## 寤鸿鍗曡〃鏌ヨ - -鏂囩珷杩炴帴: [澶ц繛鎺ユ煡璇㈠垎瑙eソ澶刔(https://java.isture.com/db/mysql/mysql-x-optimize-decompose-connection.html) -鏂囩珷杩炴帴: [濡備綍鐢╩p澶氳〃鏌ヨ鎬ц兘娴嬭瘯](https://developer.aliyun.com/article/858927) - - - - - - - -**(涓婂浘鍑鸿嚜 <楂樻�ц兘MySql>)** \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/explain/key.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/explain/key.md deleted file mode 100644 index 3ec55fe..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/explain/key.md +++ /dev/null @@ -1,19 +0,0 @@ -# 涓婚敭浣跨敤璇存槑 -- - - -## 鍏充簬濡備綍浣跨敤鍒嗗竷寮廼d鎴栭洩鑺眎d - -鍙傝�� `MybatisPlusConfig` 濡傞渶鑷畾涔� 淇敼 `Bean` 瀹炵幇鍗冲彲 - - - -妗嗘灦榛樿闆嗘垚 闆姳ID 鍙渶鍏ㄥ眬鏇存敼 涓婚敭绫诲瀷鍗冲彲 - - - -濡傚崟琛ㄤ娇鐢� 鍙崟鐙厤缃敞瑙� - - - -### 閲嶇偣璇存槑 -* 鐢变簬闆姳id浣嶆暟杩囬暱 `Long` 绫诲瀷鍦ㄥ墠绔細澶辩湡 -* 妗嗘灦宸查厤缃簭鍒楀寲鏂规 瓒呰秺 `JS` 鏈�澶у�艰嚜鍔ㄨ浆瀛楃涓� 鍙傝�� `BigNumberSerializer` 绫� (3.0.0 鍙婁互涓婃柊澧�) \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/explain/test.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/explain/test.md deleted file mode 100644 index c6dbfe9..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/explain/test.md +++ /dev/null @@ -1,6 +0,0 @@ -# 鍗曞厓娴嬭瘯 -- - - -## 鍙傝�冩枃绔� -[SpringBoot 2.X 鏁村悎 JUnit5 鍙婂叏鏂逛綅浣跨敤鎵嬪唽](https://lionli.blog.csdn.net/article/details/127576604) -## 鍙傝�冧唬鐮�(4.4.0鏂板) - \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/explain/transaction.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/explain/transaction.md deleted file mode 100644 index dfad76f..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/explain/transaction.md +++ /dev/null @@ -1,45 +0,0 @@ -# 浜嬪姟鐩稿叧 -- - - -鑻ヤ緷鏂囨。瀵逛簨鍔℃敞瑙g殑鎻忚堪 [鍏充簬浜嬪姟](https://doc.ruoyi.vip/ruoyi/document/htsc.html#%E4%BA%8B%E5%8A%A1%E7%AE%A1%E7%90%86) 浠ヤ笅瀵瑰鏁版嵁婧愪簨鍔″仛琛ュ厖: - -## 澶氬悗绔鏁版嵁婧愪簨鍔� - -妗嗘灦鏀寔瀵规帴 `seata` 淇濊瘉鍒嗗竷寮忓鏁版嵁婧愪簨鍔�<br> -璇︽儏鍙傝�冨鏁版嵁婧愭鏋舵枃妗h繛鎺�: https://www.kancloud.cn/tracy5546/dynamic-datasource/2268607 - -## 鏈湴澶氭暟鎹簮浜嬪姟 -璇蜂娇鐢� `@DSTransactional` 娉ㄨВ 浼氫唬鐞� `@DS` 娉ㄨВ鍒囨崲鍚庣殑鏁版嵁婧愪簨鍔″仛鍥炴粴澶勭悊<br> -鍙 `@DSTransactional` 娉ㄨВ涓嬩换涓�鐜妭鍙戠敓寮傚父锛屽垯鍏ㄥ眬澶氭暟鎹簮浜嬪姟鍥炴粴銆�<br> -濡傛灉BC涓婁篃鏈� `@DSTransactional` 浼氭湁褰卞搷鍚楋紵绛旓細娌℃湁褰卞搷鐨勩�� - -```java -//濡侫Service璋冪敤BService鍜孋Service鐨勬柟娉曪紝A,B,C鍒嗗埆瀵瑰簲涓嶅悓鏁版嵁婧愩�� - -public class AService { - - @DS("a")//濡傛灉a鏄粯璁ゆ暟鎹簮鍒欎笉闇�瑕丏S娉ㄨВ銆� - @DSTransactional - public void dosomething(){ - BService.dosomething(); - CService.dosomething(); - } -} - -public class BService { - - @DS("b") - public void dosomething(){ - //dosomething - } -} - -public class CService { - - @DS("c") - public void dosomething(){ - //dosomething - } -} -``` - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/api_encrypt.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/api_encrypt.md deleted file mode 100644 index fc56df3..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/api_encrypt.md +++ /dev/null @@ -1,38 +0,0 @@ -# 鏁版嵁鍔犺В瀵� -- - - - -## 1锛欰PI 鍔犲瘑娉ㄨВ `@ApiEncrypt` -1. 瀵逛簬鏍囨敞浜� `@ApiEncrypt` 娉ㄨВ鐨勬帴鍙o紝璇锋眰鍙傛暟閮藉繀椤昏繘琛屽姞瀵嗐�� -2. 娉ㄨВ鐨勫弬鏁� `response` 涓哄搷搴斿姞瀵嗘爣璇嗭紝榛樿 `false` 涓嶅姞瀵嗭紝涓� `true` 琛ㄧず鍝嶅簲鍔犲瘑銆� -3. 鍔犲瘑瑙e瘑閫昏緫鐢辫繃婊ゅ櫒瀹炵幇锛岃鎯呭彲鍙傝�� `org.dromara.common.encrypt.filter.CryptoFilter`銆� - -## 2锛欰PI 鍔犲瘑閰嶇疆 -`application.yml` - - - -`.env.development` / `.env.production` - - - -> 娉細 -> 1. 鍏閽ヤ笌鍓嶇閰嶇疆鏂囦欢浜掍负閰嶅锛屽鏋滈渶瑕佹洿鎹㈣涓�鍚屾洿鎹€�� -> 2. 鍚庣鍏挜瀵瑰簲鍓嶇绉侀挜锛涘悗绔閽ュ搴斿墠绔叕閽ャ�� - -## 3锛氬墠绔紑鍚姞瀵� -濡傛灉闇�瑕佸紑鍚� API 鍔犲瘑锛屽垯闇�瑕佷慨鏀� `request` 鐨� `headers` 鍐呭锛� -```Javascript -headers: { - isEncrypt: true -} -``` - - - -## 4.鍏充簬璇锋眰鍝嶅簲鍙傛暟鍔犺В瀵嗚鏄� - -濡備綍鍔犺В瀵嗚姹傚搷搴斿弬鏁扮湅杩欓噷 -> [鍏充簬璇锋眰鍝嶅簲鍙傛暟瑙e瘑](/questions/api_encrypt.md) - -## 瀵嗛挜鐢熸垚璇存槑 - - \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/dynamic_datasource.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/dynamic_datasource.md deleted file mode 100644 index 1e81b5e..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/dynamic_datasource.md +++ /dev/null @@ -1,45 +0,0 @@ -# 澶氭暟鎹簮 -- - - - -### 妗嗘灦榛樿 mysql 鍏朵粬鏁版嵁搴撲娇鐢ㄨ鏄� - -鎵惧埌 `ruoyi-admin` 妯″潡鍦� pom 鏂囦欢鍐呭鍔犲搴旂殑jdbc渚濊禆 - - - - -### 鍏充簬澶氭暟鎹簮浜嬪姟 鍏蜂綋鍙傝�� `浜嬪姟鐩稿叧` 鏂囨。璇存槑 - -### 澶氭暟鎹簮妗嗘灦鍔熻兘浠嬬粛 -澶氭暟鎹簮妗嗘灦瀹樻柟鏂囨。: [dynamic-datasource鏂囨。](https://www.kancloud.cn/tracy5546/dynamic-datasource/2264611) - -* 鏀寔 鏁版嵁婧愬垎缁� 锛岄�傜敤浜庡绉嶅満鏅� 绾补澶氬簱 璇诲啓鍒嗙 涓�涓诲浠� 娣峰悎妯″紡銆� -* 鏀寔鏁版嵁搴撴晱鎰熼厤缃俊鎭� 鍔犲瘑 ENC()銆� -* 鏀寔姣忎釜鏁版嵁搴撶嫭绔嬪垵濮嬪寲琛ㄧ粨鏋剆chema鍜屾暟鎹簱database銆� -* 鏀寔鏃犳暟鎹簮鍚姩锛屾敮鎸佹噿鍔犺浇鏁版嵁婧愶紙闇�瑕佺殑鏃跺�欏啀鍒涘缓杩炴帴锛夈�� -* 鏀寔 鑷畾涔夋敞瑙� 锛岄渶缁ф壙DS(3.2.0+)銆� -* 鎻愪緵骞剁畝鍖栧Druid锛孒ikariCp锛孊eeCp锛孌bcp2鐨勫揩閫熼泦鎴愩�� -* 鎻愪緵瀵筂ybatis-Plus锛孮uartz锛孲hardingJdbc锛孭6sy锛孞ndi绛夌粍浠剁殑闆嗘垚鏂规銆� -* 鎻愪緵 鑷畾涔夋暟鎹簮鏉ユ簮 鏂规锛堝鍏ㄤ粠鏁版嵁搴撳姞杞斤級銆� -* 鎻愪緵椤圭洰鍚姩鍚� 鍔ㄦ�佸鍔犵Щ闄ゆ暟鎹簮 鏂规銆� -* 鎻愪緵Mybatis鐜涓嬬殑 绾鍐欏垎绂� 鏂规銆� -* 鎻愪緵浣跨敤 spel鍔ㄦ�佸弬鏁� 瑙f瀽鏁版嵁婧愭柟妗堛�傚唴缃畇pel锛宻ession锛宧eader锛屾敮鎸佽嚜瀹氫箟銆� -* 鏀寔 澶氬眰鏁版嵁婧愬祵濂楀垏鎹� 銆傦紙ServiceA >>> ServiceB >>> ServiceC锛夈�� -* 鎻愪緵 鍩轰簬seata鐨勫垎甯冨紡浜嬪姟鏂规銆� -* 鎻愪緵 鏈湴澶氭暟鎹簮浜嬪姟鏂规銆� 闄勶細涓嶈兘鍜屽師鐢焥pring浜嬪姟娣风敤銆� - -### 鐢ㄦ硶璇存槑 - -> 鍔犺浇椤哄簭 `鏂规硶 => 绫� => 榛樿`<br> - - - -### 閰嶇疆鏂瑰紡 - - - -### 鏁版嵁搴撳紓鏋� - -渚嬪: `mysql + oracle` 鍙傝�冨搴斿鏁版嵁婧愭鏋舵枃妗� [dynamic-ds鏂囨。](https://www.kancloud.cn/tracy5546/dynamic-datasource) - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/encrypt.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/encrypt.md deleted file mode 100644 index 19d726c..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/encrypt.md +++ /dev/null @@ -1,28 +0,0 @@ -# 鏁版嵁鍔犺В瀵� -- - - -## 妗嗘灦鐗堟湰 >= 4.6.0 -## 鍔熻兘璇存槑 - -鏁版嵁搴� 鏁版嵁瀛樺偍鍔犲瘑 鏌ヨ瑙e瘑鍔熻兘<br> -鏀寔鍔犲瘑绠楁硶: `BASE64` `AES` `RSA` `SM2` `SM4` - -## 娉ㄨВ `@EncryptField` - - - -## 鐢ㄦ硶璇存槑 - -**璇︾粏鐢ㄦ硶鍙弬鑰冩渚� TestEncryptController 娴嬭瘯鏁版嵁搴撳姞瑙e瘑鍔熻兘** - -鍏ㄥ眬榛樿鍔犲瘑閰嶇疆(濡傛灉娉ㄨВ涓嶉厤缃垯浣跨敤鍏ㄥ眬閰嶇疆) - - - -娉ㄨВ鍙嚜瀹氫箟绠楁硶涓庨厤缃� - - - -## 瀵嗛挜鐢熸垚璇存槑 - - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/idempotent.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/idempotent.md deleted file mode 100644 index 46c7f42..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/idempotent.md +++ /dev/null @@ -1,29 +0,0 @@ -# 闃查噸骞傜瓑 -- - - -### 鍔熻兘浠嬬粛 - -闃查噸鍔熻兘涓洪槻姝袱鏉$浉鍚岀殑鏁版嵁閲嶅鎻愪氦瀵艰嚧鑴忔暟鎹垨涓氬姟閿欎贡<br> -**娉ㄦ剰: 閲嶅鎻愪氦灞炰簬灏忔鐜囦簨浠� 璇蜂笉瑕佹嬁骞跺彂鍘嬫祴涓庝箣鐩告彁骞惰**<br> -妗嗘灦闃查噸鍔熻兘鍙傝�� `缇庡洟GTIS闃查噸绯荤粺` 浣跨敤 璇锋眰鍙傛暟涓庣敤鎴稵oken鎴朥RL 鐢熸垚鍏ㄥ眬涓氬姟ID<br> -鏈夋晥闃叉 `鍚屼竴涓敤鎴穈 鍦� `闄愬埗鏃堕棿` 鍐呭 `鍚屼竴涓笟鍔 鎻愪氦 `鐩稿悓鐨勬暟鎹甡 - -妗嗘灦闃查噸澶勭悊 `鏀寔涓氬姟澶辫触鎴栧紓甯竊 蹇�熼噴鏀鹃檺鍒�<br> -涓氬姟澶勭悊鎴愬姛鍚� 浼氬湪璁剧疆鏃堕棿鍐� 闄愬埗鍚屼竴鏉℃暟鎹殑鎻愪氦<br> -**娉ㄦ剰: 鍙鍚屼竴涓敤鎴风殑鍚屼竴涓帴鍙f彁浜ょ浉鍚岀殑鏁版嵁鏈夋晥** - - - - -### 缇庡洟GTIS绯荤粺娴佺▼鍥� - -[缇庡洟 鍒嗗竷寮忕郴缁熶簰鏂ユ�т笌骞傜瓑鎬ч棶棰樼殑鍒嗘瀽涓庤В鍐砞(https://tech.meituan.com/2016/09/29/distributed-system-mutually-exclusive-idempotence-cerberus-gtis.html) - - - -### 浣跨敤鏂规硶 - -鍦–ontroller鏍囨敞 `@RepeatSubmit` 娉ㄨВ鍗冲彲 - - - - \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/mail.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/mail.md deleted file mode 100644 index 6e7413e..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/mail.md +++ /dev/null @@ -1,17 +0,0 @@ -# 閭欢鍔熻兘 -- - - -## 閰嶇疆鍔熻兘 - -鐗堟湰: v4.2.0 鎻愪緵閭欢鍔熻兘 - -淇敼閰嶇疆鏂囦欢 - - - -* `enabled` 涓洪偖浠跺姛鑳藉紑鍏� - -## 鍔熻兘浣跨敤 - -鍙傝�� `demo` 妯″潡 `MailController` 閭欢婕旂ず妗堜緥 - - \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/maxkey.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/maxkey.md deleted file mode 100644 index a0b51d2..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/maxkey.md +++ /dev/null @@ -1,20 +0,0 @@ -# 瀵规帴 MaxKey 鍗曠偣鐧诲綍 -- - - - -# 瀹夎 MaxKey 搴旂敤鏈嶅姟 - -鍙傝�� MaxKey 瀹樻柟鏂囨。瀹夎 [MaxKey瀹夎閮ㄧ讲](http://www.maxkey.top/doc/docs/intro/) - -# 閰嶇疆搴旂敤 OAuth2.0 璁よ瘉娉ㄥ唽 - - - -# 閰嶇疆鍚庣鏈嶅姟 - -鎵惧埌妗嗘灦 `application-鐜.yml` 閰嶇疆鏂囦欢 - -淇敼 `maxkey` 瀵瑰簲鐨� `client-id` 涓� `client-secret` - - - - \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/sensitive.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/sensitive.md deleted file mode 100644 index 3e2d92b..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/sensitive.md +++ /dev/null @@ -1,33 +0,0 @@ -# 鏁版嵁鑴辨晱 -- - - -## 鍔熻兘璇存槑 - -绯荤粺浣跨敤 `Jackson` 搴忓垪鍖栫瓥鐣� 瀵规爣娉ㄤ簡 `Sensitive` 娉ㄨВ鐨勫睘鎬ц繘琛岃劚鏁忓鐞� - -## 浣跨敤鏁欑▼ - -> 浣跨敤娉ㄨВ鏍囨敞闇�瑕佽劚鏁忕殑瀛楁 閫夋嫨瀵瑰簲鐨勭瓥鐣� - - - -* strategy 鑴辨晱绛栫暐 -* roleKey 瑙掕壊code(鍒ゆ柇鐢ㄦ埛鏄惁鎷ユ湁瑙掕壊鏉冮檺) -* perms 鏉冮檺code(鍒ゆ柇鐢ㄦ埛鏄惁鎷ユ湁鏍囪瘑绗︽潈闄�) - - - -> 鍙啀 `SensitiveStrategy` 鍐呰嚜瀹氫箟绛栫暐 - - - -## 鑴辨晱閫昏緫淇敼 - -> 绯荤粺浣跨敤閫氱敤鎺ュ彛澶勭悊鏄惁闇�瑕佽劚鏁� 澶氫釜绯荤粺鍙互鑷畾涔変笉鍚岀殑鑴辨晱閫昏緫瀹炵幇 - - - -> 绯荤粺榛樿澶勭悊閫昏緫涓� 鏍规嵁瑙掕壊涓庢爣璇嗙鎴栭潪绠$悊鍛樿劚鏁� 鍙嚜琛屼慨鏀归粯璁ゅ疄鐜� - - - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/skywalking.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/skywalking.md deleted file mode 100644 index 283eb22..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/skywalking.md +++ /dev/null @@ -1,20 +0,0 @@ -# Skywalking閾捐矾鐩戞帶 -- - - -## skywalking鏈嶅姟鎼缓 - -鍙傝�冩枃绔�: https://lionli.blog.csdn.net/article/details/127656534<br> -澶氱鎼缓鏂瑰紡 涔熷彲浠ュ弬鑰冪櫨搴� - -## 浠g爜鏀瑰姩 - -https://gitee.com/dromara/RuoYi-Vue-Plus/commit/4d02466fed4f3ea012a80c3359cde9af0737141f <br> -鏍规嵁涓婃柟commit鎻愪氦璁板綍 寮�鍚敞閲婃帀鐨勪唬鐮� - -## 鏈湴浣跨敤 - -鍙傝�冩枃绔�: https://lionli.blog.csdn.net/article/details/127656534 - -## docker閮ㄧ讲浣跨敤 - -瀹屾垚涓婃柟浠g爜鏀瑰姩 灏嗕笅杞藉ソ鐨� `agent` 鎺㈤拡 鏀惧叆鏈嶅姟鍣� `/docker/skywalking/agent/` 鐩綍涓� 璧嬩簣鎵�鏈夋潈闄愬嵆鍙�<br> - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/sms.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/sms.md deleted file mode 100644 index a2308ec..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/sms.md +++ /dev/null @@ -1,51 +0,0 @@ -# 鐭俊妯″潡 -- - - - -# 閰嶇疆鍔熻兘 - -### 鐗堟湰: >= v5.1.0 - -宸插畬鎴� sms4j 椤圭洰鏁村悎 鏂囨。鍦板潃: https://sms4j.com/doc3 - -閰嶇疆鏂瑰紡 鍏蜂綋鍘傚晢閰嶇疆鎵╁睍 鍙互鏌ョ湅sms4j鏂囨。 - - - -浣跨敤鏂瑰紡 鍙傝�冩枃妗e悇绉嶅啓娉� 涓嬫柟涓� demo 妯″潡鎻愪緵绀轰緥 - - - -### 鐗堟湰: v4.2.0 鎻愪緵鐭俊妯″潡 - -鐭俊妯″潡閲囩敤SPI鍔犺浇<br> -浣跨敤鍝鐨勭煭淇� 寮曞叆鍝鐨勪緷璧� 鍗冲彲鍔ㄦ�佸姞杞�<br> -鐩墠鏀寔: `闃块噷浜慲 `鑵捐浜慲 娆㈣繋鎵╁睍PR鍏朵粬 - -> 鍙傝�� `ruoyi-demo` pom鏂囦欢鍐欐硶 - - - -> 淇敼閰嶇疆鏂囦欢 - - - -* `enabled` 涓虹煭淇″姛鑳藉紑鍏� -* `endpoint` 涓哄煙鍚� 鍚勫巶瀹跺煙鍚嶅浐瀹� 鎸夌収鏂囨。閰嶇疆鍗冲彲 -* `accessKeyId` 瀵嗛挜id -* `accessKeySecret` 瀵嗛挜瀵嗗寵 -* `signName` 绛惧悕 -* `sdkAppId` 搴旂敤id 鑵捐涓撶敤 - -## 鍔熻兘浣跨敤 - -鍙傝�� `demo` 妯″潡 `SmsController` 鐭俊婕旂ず妗堜緥<br> -鍔熻兘閲囩敤 `妯℃澘妯″紡` 鍔ㄦ�佸姞杞藉搴斿巶瀹剁殑宸ュ叿妯℃澘<br> -寮曞叆 `SmsTemplate` 鍗冲彲浣跨敤 - - - -## 閲嶇偣椤荤煡 - -鐢变簬鍚勫巶瀹跺弬鏁拌В鏋愪笉涓�鑷� 璇烽伒瀹堜互涓嬭鍒� - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/sse.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/sse.md deleted file mode 100644 index 8a73832..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/sse.md +++ /dev/null @@ -1,22 +0,0 @@ -# SSE鍔熻兘 -- - - - -## 妗嗘灦鐗堟湰 >= 5.2.2 - -## 閰嶇疆璇存槑 - - - -* enabled 鏄惁寮�鍚鍔熻兘 -* path 搴旂敤璺緞 - -## 浣跨敤鏂规硶 - -鍓嶇杩炴帴鏂瑰紡: `http://鍚庣ip:绔彛/resource/sse?clientid=import.meta.env.VITE_APP_CLIENT_ID&Authorization=Bearer eyJ0eXAiO......` - -鍏朵腑 `Authorization` 涓鸿姹倀oken闇�瑕佺櫥褰曞悗鑾峰彇 杩炴帴鎴愬姛涔嬪悗 涓庢鏋跺唴鍏朵粬鑾峰彇鐧诲綍鐢ㄦ埛鏂瑰紡涓�鑷� - -`SseMessageUtils.sendMessage` 鎺ㄩ�佸崟鏈烘秷鎭�(鐗规畩闇�姹備娇鐢�)<br> -`SseMessageUtils.subscribeMessage` 璁㈤槄鍒嗗竷寮忔秷鎭�(妗嗘灦鍒濆鍖栧凡璁㈤槄)<br> -`SseMessageUtils.publishMessage` 鍙戝竷鍒嗗竷寮忔秷鎭�(鎺ㄨ崘浣跨敤 鎵�鏈夐泦缇ゅ唴瀵绘壘鍒版帴鏀朵汉)<br> -`SseMessageUtils.publishAll` 缇ゅ彂娑堟伅缁欐墍鏈夎繛鎺ヤ汉<br> \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/topiam.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/topiam.md deleted file mode 100644 index 4778d0f..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/topiam.md +++ /dev/null @@ -1,30 +0,0 @@ -# 瀵规帴 TOPIAM 鍗曠偣鐧诲綍 -- - - - -# 瀹夎 TOPIAM 搴旂敤鏈嶅姟 - -鍙傝�� TOPIAM 瀹樻柟鏂囨。瀹夎 [TOPIAM瀹夎閮ㄧ讲](https://eiam.topiam.cn/docs/deployment/) - -# 閰嶇疆 OIDC 搴旂敤 - -鍦� `鐧诲綍 Redirect URI` 涓~鍐� `http://localhost:80/oauth/callback?source=topiam` - -# 閰嶇疆鍚庣鏈嶅姟 - -鎵惧埌妗嗘灦 `application-鐜.yml` 閰嶇疆鏂囦欢 - -淇敼 `topiam` 瀵瑰簲鐨� `client-id` 涓� `client-secret` - -```yaml -justauth: - # 鍓嶇澶栫綉璁块棶鍦板潃 - address: http://localhost:80 - type: - topiam: - # topiam 鏈嶅姟鍣ㄥ湴鍧�锛屽彲鍦ㄣ�愬簲鐢ㄩ厤缃俊鎭�戜腑鎵惧埌 - server-url: http://127.0.0.1:1989/api/v1/authorize/y0q************spq***********8ol - client-id: 449c4*********937************759 - client-secret: ac7***********1e0************28d - redirect-uri: ${justauth.address}/social-callback?source=topiam - scopes: [openid] -``` \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/translation.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/translation.md deleted file mode 100644 index 547b15f..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/translation.md +++ /dev/null @@ -1,34 +0,0 @@ -# 缈昏瘧鍔熻兘 -- - - -## 妗嗘灦鐗堟湰 >= 4.6.0 -## 娉ㄨВ - - - -`@Translation` 缈昏瘧娉ㄨВ 鐢ㄤ簬瀹炰綋绫诲瓧娈典笂<br> -`@TranslationType` 缈昏瘧绫诲埆娉ㄨВ 鐢ㄤ簬瀹炵幇绫讳笂鏍囨敞涓� `@Translation` 娉ㄨВ鐩稿悓鐨� `type` 绫诲瀷 瀹炵幇缈昏瘧鍔熻兘 - - -## 鐢ㄦ硶璇存槑 - -榛樿鎻愪緵鍔熻兘 `鐢ㄦ埛id杞处鍙�(鐢ㄦ埛鍚�)` `閮ㄩ棬id杞悕绉癭 `瀛楀吀type杞琹abel` `ossId杞瑄rl` - - - -鐢ㄦ埛鍚嶇炕璇�(鏄犲皠缈昏瘧) 鏍规嵁鍙︿竴涓槧灏勫瓧娈� 缈昏瘧淇濆瓨鍒版瀛楁 - - - -ossUrl缈昏瘧(鐩存帴缈昏瘧) 鐩存帴鏍规嵁姝ゅ瓧娈靛�肩炕璇戝悗鏇挎崲姝ゅ瓧娈靛�� - - - -瀛楀吀缈昏瘧(鍏朵粬鎵╁睍鏉′欢缈昏瘧) 鏍规嵁`other`鏉′欢 鑷瀹氫箟濡備綍浣跨敤 渚嬪瀛楀吀缈昏瘧`other`鏉′欢灏辨槸瀛楀吀鐨勫敮涓�鍊� - - - -## 鑷畾涔夋墿灞� - -瀹炵幇鎺ュ彛 `TranslationInterface` 鏍囨敞娉ㄨВ `@TranslationType` 鍙弬鑰冩鏋堕粯璁ゅ疄鐜� - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/websocket.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/websocket.md deleted file mode 100644 index 9e74e1e..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/websocket.md +++ /dev/null @@ -1,37 +0,0 @@ -# WebSocket鍔熻兘 -- - - - -## 妗嗘灦鐗堟湰 >= 5.1.0 - -## 閰嶇疆璇存槑(榛樿鍏抽棴 鎺ㄩ�佸缓璁娇鐢⊿SE) - - - -* enabled 鏄惁寮�鍚鍔熻兘 -* path 搴旂敤璺緞 -* allowedOrigins 璁剧疆璁块棶婧愬湴鍧� - -**閲嶇偣: 濡傚叧闂瓀s鍔熻兘闇�杩炲悓鍓嶇ws寮�鍏充竴鍚屽叧闂� 涓嶇劧鍓嶇鍚姩浼氭姤閿�** - - - -## 浣跨敤鏂规硶 - -鍓嶇杩炴帴鏂瑰紡: `ws://鍚庣ip:绔彛/resource/websocket?clientid=import.meta.env.VITE_APP_CLIENT_ID&Authorization=Bearer eyJ0eXAiO......` - -**鐢变簬js涓嶆敮鎸佽姹傚ご浼犺緭鏁呰�岄噰鐢ㄥ弬鏁颁紶杈� 濡傛敮鎸佽姹傚ご浼犺緭寤鸿浣跨敤璇锋眰澶翠紶杈�** - -浼犺緭鏂瑰紡: -```js -headers: { - Authorization: "Bearer " + getToken(), - clientid: import.meta.env.VITE_APP_CLIENT_ID -} -``` - -鍏朵腑 `Authorization` 涓鸿姹倀oken闇�瑕佺櫥褰曞悗鑾峰彇 杩炴帴鎴愬姛涔嬪悗 涓庢鏋跺唴鍏朵粬鑾峰彇鐧诲綍鐢ㄦ埛鏂瑰紡涓�鑷� - -`WebSocketUtils.sendMessage` 鎺ㄩ�佸崟鏈烘秷鎭�(鐗规畩闇�姹備娇鐢�)<br> -`WebSocketUtils.subscribeMessage` 璁㈤槄鍒嗗竷寮忔秷鎭�(妗嗘灦鍒濆鍖栧凡璁㈤槄)<br> -`WebSocketUtils.publishMessage` 鍙戝竷鍒嗗竷寮忔秷鎭�(鎺ㄨ崘浣跨敤 鎵�鏈夐泦缇ゅ唴瀵绘壘鍒版帴鏀朵汉)<br> -`WebSocketUtils.publishAll` 缇ゅ彂娑堟伅缁欐墍鏈夎繛鎺ヤ汉<br> \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/tree.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/tree.md deleted file mode 100644 index 329cce2..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/tree.md +++ /dev/null @@ -1,61 +0,0 @@ -# 鐩綍缁撴瀯 -- - - -v5.2.2 -~~~ -RuoYi-Vue-Plus -鈹溾攢 ruoyi-admin // 绠$悊妯″潡 [8080,28080] -鈹� 鈹斺攢 RuoYiApplication // 鍚姩绫� -鈹� 鈹斺攢 RuoYiServletInitializer // 瀹瑰櫒閮ㄧ讲鍒濆鍖栫被 -鈹� 鈹斺攢 resources // 璧勬簮鏂囦欢 -鈹� 鈹斺攢 i18n/messages.properties // 鍥介檯鍖栭厤缃枃浠� -鈹� 鈹斺攢 application.yml // 妗嗘灦鎬婚厤缃枃浠� -鈹� 鈹斺攢 application-dev.yml // 寮�鍙戠幆澧冮厤缃枃浠� -鈹� 鈹斺攢 application-prod.yml // 鐢熶骇鐜閰嶇疆鏂囦欢 -鈹� 鈹斺攢 banner.txt // 妗嗘灦鍚姩鍥炬爣 -鈹� 鈹斺攢 logback-plus.xml // 鏃ュ織閰嶇疆鏂囦欢 -鈹� 鈹斺攢 ip2region.xdb // IP鍖哄煙鍦板潃搴� -鈹溾攢 ruoyi-extend // 鎵╁睍妯″潡 -鈹� 鈹斺攢 ruoyi-monitor-admin // admin鐩戞帶妯″潡 [9090] -鈹� 鈹斺攢 ruoyi-snailjob-server // 浠诲姟璋冨害涓績妯″潡 [8800,17888] -鈹溾攢 ruoyi-common // 閫氱敤妯″潡 -鈹� 鈹斺攢 ruoyi-common-bom // common渚濊禆鍖呯鐞� -鈹� 鈹斺攢 ruoyi-common-core // 鏍稿績妯″潡 -鈹� 鈹斺攢 ruoyi-common-doc // 绯荤粺鎺ュ彛妯″潡 -鈹� 鈹斺攢 ruoyi-common-encrypt // 鏁版嵁鍔犺В瀵嗘ā鍧� -鈹� 鈹斺攢 ruoyi-common-excel // excel妯″潡 -鈹� 鈹斺攢 ruoyi-common-idempotent // 骞傜瓑鍔熻兘妯″潡 -鈹� 鈹斺攢 ruoyi-common-job // 瀹氭椂浠诲姟妯″潡 -鈹� 鈹斺攢 ruoyi-common-json // 搴忓垪鍖栨ā鍧� -鈹� 鈹斺攢 ruoyi-common-log // 鏃ュ織妯″潡 -鈹� 鈹斺攢 ruoyi-common-mail // 閭欢妯″潡 -鈹� 鈹斺攢 ruoyi-common-mybatis // 鏁版嵁搴撴ā鍧� -鈹� 鈹斺攢 ruoyi-common-oss // oss鏈嶅姟妯″潡 -鈹� 鈹斺攢 ruoyi-common-ratelimiter // 闄愭祦鍔熻兘妯″潡 -鈹� 鈹斺攢 ruoyi-common-redis // 缂撳瓨鏈嶅姟妯″潡 -鈹� 鈹斺攢 ruoyi-common-satoken // satoken妯″潡 -鈹� 鈹斺攢 ruoyi-common-security // 瀹夊叏妯″潡 -鈹� 鈹斺攢 ruoyi-common-sensitive // 鑴辨晱妯″潡 -鈹� 鈹斺攢 ruoyi-common-sms // 鐭俊妯″潡 -鈹� 鈹斺攢 ruoyi-common-social // 绀句氦涓夋柟妯″潡 -鈹� 鈹斺攢 ruoyi-common-sse // sse娴佹帹閫佹ā鍧� -鈹� 鈹斺攢 ruoyi-common-tenant // 绉熸埛妯″潡 -鈹� 鈹斺攢 ruoyi-common-translation // 閫氱敤缈昏瘧妯″潡 -鈹� 鈹斺攢 ruoyi-common-web // web妯″潡 -鈹� 鈹斺攢 ruoyi-common-websocket // websocket鏈嶅姟闆嗘垚妯″潡 -鈹溾攢 ruoyi-modules // 妯″潡缁� -鈹� 鈹斺攢 ruoyi-demo // 婕旂ず妯″潡 -鈹� 鈹斺攢 ruoyi-generator // 浠g爜鐢熸垚妯″潡 -鈹� 鈹斺攢 ruoyi-job // 浠诲姟璋冨害鏈嶅姟 -鈹� 鈹斺攢 ruoyi-system // 涓氬姟妯″潡 -鈹� 鈹斺攢 ruoyi-workflow // 宸ヤ綔娴佹ā鍧� -鈹溾攢 plus-ui // 鍓嶇妗嗘灦 [80] -鈹溾攢 script // 绯荤粺鑴氭湰鍖� -鈹� 鈹斺攢 bin // 杩愯鑴氭湰鍖� -鈹� 鈹斺攢 docker // docker鐩稿叧鑴氭湰 -鈹� 鈹斺攢 sql // sql鑴氭湰 -鈹溾攢 .run // 鎵ц鑴氭湰鏂囦欢 -鈹溾攢 .editorconfig // 缂栬緫鍣ㄧ紪鐮佹牸寮忛厤缃� -鈹溾攢 LICENSE // 寮�婧愬崗璁� -鈹溾攢 pom.xml // 鍏叡渚濊禆 -鈹溾攢 README.md // 妗嗘灦璇存槑鏂囦欢 -~~~ \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/home.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/home.md deleted file mode 100644 index ff4de9e..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/home.md +++ /dev/null @@ -1,127 +0,0 @@ -<img src="https://foruda.gitee.com/images/1679673773341074847/178e8451_1766278.png" width="50%" height="50%"> -<div style="height: 10px; clear: both;"></div> - -- - - -# 骞冲彴绠�浠� -<br> - -[](https://gitee.com/dromara/RuoYi-Vue-Plus) -[](https://github.com/dromara/RuoYi-Vue-Plus) -[](https://gitee.com/dromara/RuoYi-Vue-Plus/blob/master/LICENSE) -[ -<br> -[](https://gitee.com/dromara/RuoYi-Vue-Plus) -[]() -[]() -[]() - -> RuoYi-Vue-Plus 鏄噸鍐� RuoYi-Vue 閽堝 `鍒嗗竷寮忛泦缇や笌澶氱鎴穈 鍦烘櫙鍏ㄦ柟浣嶅崌绾�(涓嶅吋瀹瑰師妗嗘灦) - -> 椤圭洰浠g爜銆佹枃妗� 鍧囧紑婧愬厤璐瑰彲鍟嗙敤 閬靛惊寮�婧愬崗璁湪椤圭洰涓繚鐣欏紑婧愬崗璁枃浠跺嵆鍙�<br> -娲诲埌鑰佸啓鍒拌�� 涓哄叴瓒h�屽紑婧� 涓哄涔犺�屽紑婧� 涓鸿澶у鐪熸鍙互瀛﹀埌鎶�鏈�屽紑婧� - -# 鏈鏋朵笌RuoYi鐨勫姛鑳藉樊寮� - -| 鍔熻兘 | 鏈鏋� | RuoYi | -|-------------|-------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------| -| 鍓嶇椤圭洰 | 閲囩敤 Vue3 + TS + ElementPlus 閲嶅啓 | 鍩轰簬Vue2/Vue3 + JS | -| 鍚庣椤圭洰缁撴瀯 | 閲囩敤鎻掍欢鍖� + 鎵╁睍鍖呭舰寮� 缁撴瀯瑙h�� 鏄撲簬鎵╁睍 | 妯″潡鐩镐簰娉ㄥ叆鑰﹀悎涓ラ噸闅句互鎵╁睍 | -| 鍚庣浠g爜椋庢牸 | 涓ユ牸閬靛畧Alibaba瑙勮寖涓庨」鐩粺涓�閰嶇疆鐨勪唬鐮佹牸寮忓寲 | 浠g爜涔﹀啓涓庡父瑙勭粨鏋勪笉鍚岄槄璇婚殰纰嶅ぇ | -| Web瀹瑰櫒 | 閲囩敤 Undertow 鍩轰簬 XNIO 鐨勯珮鎬ц兘瀹瑰櫒 | 閲囩敤 Tomcat | -| 鏉冮檺璁よ瘉 | 閲囩敤 Sa-Token銆丣wt 闈欐�佷娇鐢ㄥ姛鑳介綈鍏� 浣庤�﹀悎 楂樻墿灞� | Spring Security 閰嶇疆绻佺悙鎵╁睍鎬ф瀬宸� | -| 鏉冮檺娉ㄨВ | 閲囩敤 Sa-Token 鏀寔娉ㄨВ 鐧诲綍鏍¢獙銆佽鑹叉牎楠屻�佹潈闄愭牎楠屻�佷簩绾ц璇佹牎楠屻�丠ttpBasic鏍¢獙銆佸拷鐣ユ牎楠�<br/>瑙掕壊涓庢潈闄愭牎楠屾敮鎸佸绉嶆潯浠� 濡� `AND` `OR` 鎴� `鏉冮檺 OR 瑙掕壊` 绛夊鏉傝〃杈惧紡 | 鍙敮鎸佹槸鍚﹀瓨鍦ㄥ尮閰� | -| 涓夋柟閴存潈 | 閲囩敤 JustAuth 绗笁鏂圭櫥褰曠粍浠� 鏀寔寰俊銆侀拤閽夌瓑鏁板崄绉嶄笁鏂硅璇� | 鏃� | -| 鍏崇郴鏁版嵁搴撴敮鎸� | 鍘熺敓鏀寔 MySQL銆丱racle銆丳ostgreSQL銆丼QLServer<br/>鍙悓鏃朵娇鐢ㄥ紓鏋勫垏鎹�(鏀寔鍏朵粬 mybatis-plus 鏀寔鐨勬墍鏈夋暟鎹簱 鍙渶瑕佸鍔爅dbc渚濊禆鍗冲彲浣跨敤 杈炬ⅵ閲戜粨绛夊潎鏈夋垚鍔熸渚�) | 鏀寔 Mysql銆丱racle 涓嶆敮鎸佸悓鏃朵娇鐢ㄣ�佷笉鏀寔寮傛瀯鍒囨崲 | -| 缂撳瓨鏁版嵁搴� | 鏀寔 Redis 5-7 鏀寔澶ч儴鍒嗘柊鍔熻兘鐗规�� 濡� 鍒嗗竷寮忛檺娴併�佸垎甯冨紡闃熷垪 | Redis 绠�鍗� get set 鏀寔 | -| Redis瀹㈡埛绔� | 閲囩敤 Redisson Redis瀹樻柟鎺ㄨ崘 鍩轰簬Netty鐨勫鎴风宸ュ叿<br/>鏀寔Redis 90%浠ヤ笂鐨勫懡浠� 搴曞眰浼樺寲瑙勯伩寰堝涓嶆纭殑鐢ㄦ硶 渚嬪: keys琚浆鎹负scan<br/>鏀寔鍗曟満銆佸摠鍏点�佸崟涓婚泦缇ゃ�佸涓婚泦缇ょ瓑妯″紡 | Lettuce + RedisTemplate 鏀寔妯″紡灏� 宸ュ叿浣跨敤绻佺悙<br/>杩炴帴姹犻噰鐢� common-pool Bug澶氱粡甯告�у嚭闂 | -| 缂撳瓨娉ㄨВ | 閲囩敤 Spring-Cache 娉ㄨВ 瀵瑰叾鎵╁睍浜嗗疄鐜版敮鎸佷簡鏇村鍔熻兘<br/>渚嬪 杩囨湡鏃堕棿 鏈�澶х┖闂叉椂闂� 缁勬渶澶ч暱搴︾瓑 鍙渶涓�涓敞瑙e嵆鍙畬鎴愭暟鎹嚜鍔ㄧ紦瀛� | 闇�鎵嬪姩缂栧啓Redis浠g爜閫昏緫 | -| ORM妗嗘灦 | 閲囩敤 Mybatis-Plus 鍩轰簬瀵硅薄鍑犱箮涓嶇敤鍐橲QL鍏╦ava鎿嶄綔 鍔熻兘寮哄ぇ鎻掍欢浼楀<br/>渚嬪澶氱鎴锋彃浠� 鍒嗛〉鎻掍欢 涔愯閿佹彃浠剁瓑绛� | 閲囩敤 Mybatis 鍩轰簬XML闇�瑕佹墜鍐橲QL | -| SQL鐩戞帶 | 閲囩敤 p6spy 鍙緭鍑哄畬鏁碨QL涓庢墽琛屾椂闂寸洃鎺� | log杈撳嚭 闇�鎵嬪姩鎷兼帴sql涓庡弬鏁版棤娉曞揩閫熸煡鐪嬭皟璇曢棶棰� | -| 鏁版嵁鍒嗛〉 | 閲囩敤 Mybatis-Plus 鍒嗛〉鎻掍欢<br/>妗嗘灦瀵瑰叾杩涜浜嗘墿灞� 瀵硅薄鍖栧垎椤靛璞� 鏀寔澶氱鏂瑰紡浼犲弬 鏀寔鍓嶇澶氭帓搴� 澶嶆潅鎺掑簭 | 閲囩敤 PageHelper 浠呮敮鎸佸崟鏌ヨ鍒嗛〉 鍙傛暟鍙兘浠巔aram浼� 鍙兘鍗曟帓搴� 鍔熻兘鎵╁睍鎬у樊 浣撻獙涓嶅ソ | -| 鏁版嵁鏉冮檺 | 閲囩敤 Mybatis-Plus 鎻掍欢 鑷鍒嗘瀽鎷兼帴SQL 鏃犳劅寮忚繃婊�<br/>鍙渶涓篗apper璁剧疆濂芥敞瑙f潯浠� 鏀寔澶氱鑷畾涔� 涓嶉檺浜庨儴闂ㄨ鑹� | 閲囩敤 娉ㄨВ+aop 瀹炵幇 鍩轰簬閮ㄩ棬瑙掕壊 鐢熸垚鐨剆ql鍏煎鎬у樊 涓嶆敮鎸佸叾浠栦笟鍔℃墿灞�<br/>鐢熸垚sql鍚庨渶鎵嬪姩鎷兼帴鍒板叿浣撲笟鍔ql涓� 瀵逛簬澶氫釜Mapper鏌ヨ涓嶈捣浣滅敤 | -| 鏁版嵁鑴辨晱 | 閲囩敤 娉ㄨВ + jackson 搴忓垪鍖栨湡闂磋劚鏁� 鏀寔涓嶅悓妯″潡涓嶅悓鐨勮劚鏁忔潯浠�<br/>鏀寔澶氱绛栫暐 濡傝韩浠借瘉銆佹墜鏈哄彿銆佸湴鍧�銆侀偖绠便�侀摱琛屽崱绛� 鍙嚜琛屾墿灞� | 鏃� | -| 鏁版嵁鍔犺В瀵� | 閲囩敤 娉ㄨВ + mybatis 鎷︽埅鍣� 瀵瑰瓨鍙栨暟鎹湡闂磋嚜鍔ㄥ姞瑙e瘑<br/>鏀寔澶氱绛栫暐 濡侭ASE64銆丄ES銆丷SA銆丼M2銆丼M4绛� | 鏃� | -| 鎺ュ彛浼犺緭鍔犲瘑 | 閲囩敤 鍔ㄦ�� AES + RSA 鍔犲瘑璇锋眰 body 姣忎竴娆¤姹傜閽ラ兘涓嶅悓澶у箙搴﹂檷浣庡彲鐮磋В鎬� | 鏃� | -| 鏁版嵁缈昏瘧 | 閲囩敤 娉ㄨВ + jackson 搴忓垪鍖栨湡闂村姩鎬佷慨鏀规暟鎹� 鏁版嵁杩涜缈昏瘧<br/>鏀寔澶氱妯″紡: `鏄犲皠缈昏瘧` `鐩存帴缈昏瘧` `鍏朵粬鎵╁睍鏉′欢缈昏瘧` 鎺ュ彛鍖栦袱姝ュ嵆鍙畬鎴愯嚜瀹氫箟鎵╁睍 鍐呯疆澶氱缈昏瘧瀹炵幇 | 鏃� | -| 澶氭暟鎹簮妗嗘灦 | 閲囩敤 dynamic-datasource 鏀寔甯傞潰澶ч儴鍒嗘暟鎹簱<br/>閫氳繃yml閰嶇疆鍗冲彲鍔ㄦ�佺鐞嗗紓鏋勪笉鍚岀绫荤殑鏁版嵁搴� 涔熷彲閫氳繃鍓嶇椤甸潰娣诲姞鏁版嵁婧�<br/>鏀寔spel琛ㄨ揪寮忎粠璇锋眰澶村弬鏁扮瓑鏉′欢鍒囨崲鏁版嵁婧� | 鍩轰簬 druid 鎵嬪姩缂栧啓浠g爜閰嶇疆鏁版嵁婧� 閰嶇疆绻佺悙 鏀寔鎬у樊 | -| 澶氭暟鎹簮浜嬪姟 | 閲囩敤 dynamic-datasource 鏀寔澶氭暟鎹簮涓嶅悓绉嶇被鐨勬暟鎹簱浜嬪姟鍥炴粴 | 涓嶆敮鎸� | -| 鏁版嵁搴撹繛鎺ユ睜 | 閲囩敤 HikariCP Spring瀹樻柟鍐呯疆杩炴帴姹� 閰嶇疆绠�鍗� 浠ユ�ц兘涓庣ǔ瀹氭�ч椈鍚嶅ぉ涓� | 閲囩敤 druid bug浼楀 绀惧尯缁存姢宸� 娲昏穬搴︿綆 閰嶇疆浼楀绻佺悙鎬ц兘涓�鑸� | -| 鏁版嵁搴撲富閿� | 閲囩敤 闆姳ID 鍩轰簬鏃堕棿鎴崇殑 鏈夊簭澧為暱 鍞竴ID 鍐嶄篃涓嶇敤涓哄垎搴撳垎琛� 鏁版嵁鍚堝苟涓婚敭鍐茬獊閲嶅鑰屽彂鎰� | 閲囩敤 鏁版嵁搴撹嚜澧濱D 鏀寔鏁版嵁閲忔湁闄� 涓嶆敮鎸佸鏁版嵁婧愪富閿敮涓� | -| WebSocket鍗忚 | 鍩轰簬 Spring 灏佽鐨� WebSocket 鍗忚 鎵╁睍浜員oken閴存潈涓庡垎甯冨紡浼氳瘽鍚屾 涓嶅啀鍙槸鍩轰簬鍗曟満鐨勫簾鐗� | 鏃� | -| SSE鎺ㄩ�� | 閲囩敤 Spring SSE 瀹炵幇 鎵╁睍浜員oken閴存潈涓庡垎甯冨紡浼氳瘽鍚屾 | 鏃� | -| 搴忓垪鍖� | 閲囩敤 Jackson Spring瀹樻柟鍐呯疆搴忓垪鍖� 闈犺氨!!! | 閲囩敤 fastjson bugjson 杩滆繎闂诲悕 | -| 鍒嗗竷寮忓箓绛� | 鍙傝�冪編鍥TIS闃查噸绯荤粺绠�鍖栧疄鐜�(缁嗚妭鍙湅鏂囨。) | 鎵嬪姩缂栧啓娉ㄨВ鍩轰簬aop瀹炵幇 | -| 鍒嗗竷寮忛攣 | 閲囩敤 Lock4j 搴曞眰鍩轰簬 Redisson | 鏃� | -| 鍒嗗竷寮忎换鍔¤皟搴� | 閲囩敤 SnailJob 澶╃敓鏀寔鍒嗗竷寮� 缁熶竴鐨勭鐞嗕腑蹇� 鏀寔澶氱鏁版嵁搴� 鏀寔鍒嗙墖閲嶈瘯DAG浠诲姟娴佺瓑 | 閲囩敤 Quartz 鍩轰簬鏁版嵁搴撻攣鎬ц兘宸� 闆嗙兢闇�瑕佸仛寰堝閰嶇疆涓庢敼閫� | -| 鏂囦欢瀛樺偍 | 閲囩敤 Minio 鍒嗗竷寮忔枃浠跺瓨鍌� 澶╃敓鏀寔澶氭満銆佸纭洏銆佸鍒嗙墖銆佸鍓湰瀛樺偍<br/>鏀寔鏉冮檺绠$悊 瀹夊叏鍙潬 鏂囦欢鍙姞瀵嗗瓨鍌� | 閲囩敤 鏈満鏂囦欢瀛樺偍 鏂囦欢瑁告紡 鏄撲涪澶辨硠婕� 涓嶆敮鎸侀泦缇ゆ湁鍗曠偣鏁堝簲 | -| 浜戝瓨鍌� | 閲囩敤 AWS S3 鍗忚瀹㈡埛绔� 鏀寔 涓冪墰銆侀樋閲屻�佽吘璁� 绛変竴鍒囨敮鎸丼3鍗忚鐨勫巶瀹� | 涓嶆敮鎸� | -| 鐭俊 | 閲囩敤 sms4j 鐭俊铻嶅悎鍖� 鏀寔鏁板崄绉嶇煭淇″巶瀹� 鍙渶鍦▂ml閰嶇疆濂藉巶瀹跺瘑閽ュ嵆鍙娇鐢� 鍙鍘傚鍏辩敤 | 涓嶆敮鎸� | -| 閭欢 | 閲囩敤 mail-api 閫氱敤鍗忚鏀寔澶ч儴鍒嗛偖浠跺巶鍟� | 涓嶆敮鎸� | -| 鎺ュ彛鏂囨。 | 閲囩敤 SpringDoc銆乯avadoc 鏃犳敞瑙i浂鍏ヤ镜鍩轰簬java娉ㄩ噴<br/>鍙渶鎶婃敞閲婂啓濂� 鏃犻渶鍐嶅啓涓�澶у爢鐨勬枃妗f敞瑙d簡 | 閲囩敤 Springfox 宸插仠姝㈢淮鎶� 闇�瑕佺紪鍐欏ぇ閲忕殑娉ㄨВ鏉ユ敮鎸佹枃妗g敓鎴� | -| 鏍¢獙妗嗘灦 | 閲囩敤 Validation 鏀寔娉ㄨВ涓庡伐鍏风被鏍¢獙 娉ㄨВ鏀寔鍥介檯鍖� | 浠呮敮鎸佹敞瑙� 涓旀敞瑙d笉鏀寔鍥介檯鍖� | -| Excel妗嗘灦 | 閲囩敤 Alibaba EasyExcel 鍩轰簬鎻掍欢鍖�<br/>妗嗘灦瀵瑰叾澧炲姞浜嗗緢澶氬姛鑳� 渚嬪 鑷姩鍚堝苟鐩稿悓鍐呭 鑷姩鎺掑垪甯冨眬 瀛楀吀缈昏瘧绛� | 鍩轰簬 POI 鎵嬪啓瀹炵幇 鍔熻兘鏈夐檺 澶嶆潅 鎵╁睍鎬у樊 | -| 宸ヤ綔娴佹敮鎸� | 鏀寔鍚勭澶嶆潅瀹℃壒 杞姙 濮旀淳 鍔犲噺绛� 浼氱 鎴栫 绁ㄧ 绛夊姛鑳� | 鏃� | -| 宸ュ叿绫绘鏋� | 閲囩敤 Hutool銆丩ombok 涓婄櫨绉嶅伐鍏疯鐩�90%鐨勪娇鐢ㄩ渶姹� 鍩轰簬娉ㄨВ鑷姩鐢熸垚 get set 绛夌畝鍖栨鏋跺ぇ閲忎唬鐮� | 鎵嬪啓宸ュ叿绋冲畾鎬у樊鏄撳嚭闂 宸ュ叿鏁伴噺鏈夐檺 浠g爜鑷冭偪闇�鑷繁鎵嬪啓 get set 绛� | -| 鐩戞帶妗嗘灦 | 閲囩敤 SpringBoot-Admin 鍩轰簬SpringBoot瀹樻柟 actuator 鎺㈤拡鏈哄埗<br/>瀹炴椂鐩戞帶鏈嶅姟鐘舵�� 妗嗘灦杩樹负鍏舵墿灞曚簡鍦ㄧ嚎鏃ュ織鏌ョ湅鐩戞帶 | 鏃� | -| 閾捐矾杩借釜 | 閲囩敤 Apache SkyWalking 杩樺湪涓鸿姹備笉鐭ラ亾鍘诲摢浜� 鍒板摢鍑轰簡闂鑰岀儲鎭煎悧<br/>鐢ㄤ簡瀹冨嵆鍙疄鏃舵煡鐪嬭姹傜粡杩囩殑姣忎竴澶勬瘡涓�涓妭鐐� | 鏃� | -| 浠g爜鐢熸垚鍣� | 鍙渶璁捐濂借〃缁撴瀯 涓�閿敓鎴愭墍鏈塩rud浠g爜涓庨〉闈�<br/>闄嶄綆80%鐨勫紑鍙戦噺 鎶婄簿鍔涢兘鎶曞叆鍒颁笟鍔¤璁′笂<br/>妗嗘灦涓哄叾閫傞厤MP銆丼pringDoc瑙勮寖鍖栦唬鐮� 鍚屾椂鏀寔鍔ㄦ�佸鏁版嵁婧愪唬鐮佺敓鎴� | 浠g爜鐢熸垚鍘熺敓缁撴瀯 鍙敮鎸佸崟鏁版嵁婧愮敓鎴� | -| 閮ㄧ讲鏂瑰紡 | 鏀寔 Docker 缂栨帓 涓�閿惌寤烘墍鏈夌幆澧� 璁╁紑鍙戜汉鍛樹粠姝や笉鍐嶄负鎼缓鐜鑰岀儲鎭� | 鍘熺敓jar閮ㄧ讲 鍏朵粬鐜闇�鎵嬪姩涓嬭浇瀹夎 鑷鎼缓 | -| 椤圭洰璺緞淇敼 | 鎻愪緵璇︾粏鐨勪慨鏀规柟妗堟枃妗� 骞朵负鍏跺仛浜嗕竴浜涙敼鍔� 闈炲父绠�鍗曞嵆鍙慨鏀规垚鑷繁鎯宠鐨� | 闇�瑕佸仛寰堝鏀归�� 鏂囨。璇存槑鏈夐檺 | -| 鍥介檯鍖� | 鍩轰簬璇锋眰澶村姩鎬佽繑鍥炰笉鍚岃绉嶇殑鏂囨湰鍐呭 寮�鍙戦毦搴︿綆 鏈夊搴旂殑宸ュ叿绫� 鏀寔澶ч儴鍒嗘敞瑙e唴瀹瑰浗闄呭寲 | 鍙彁渚涘熀纭�鍔熻兘 鍏朵粬闇�鑷缂栧啓鎵╁睍 | -| 浠g爜鍗曚緥娴嬭瘯 | 鎻愪緵鍗曚緥娴嬭瘯 浣跨敤鏂瑰紡缂栧啓鏂规硶涓巑aven澶氱幆澧冨崟娴嬫彃浠� | 鍙彁渚涘熀纭�鍔熻兘 鍏朵粬闇�鑷缂栧啓鎵╁睍 | -| Demo妗堜緥 | 鎻愪緵妗嗘灦鍔熻兘鐨勫疄闄呬娇鐢ㄦ渚� 鍗曠嫭涓�涓ā鍧楁彁渚涗簡寰堝寰堝叏 | 鏃� | - - -## 鏈鏋朵笌RuoYi鐨勪笟鍔″樊寮� - -| 涓氬姟 | 鍔熻兘璇存槑 | 鏈鏋� | RuoYi | -|--------|----------------------------------------------------------------------|-----|------------------| -| 绉熸埛绠$悊 | 绯荤粺鍐呯鎴风殑绠$悊 濡�:绉熸埛濂楅銆佽繃鏈熸椂闂淬�佺敤鎴锋暟閲忋�佷紒涓氫俊鎭瓑 | 鏀寔 | 鏃� | -| 绉熸埛濂楅绠$悊 | 绯荤粺鍐呯鎴锋墍鑳戒娇鐢ㄧ殑濂楅绠$悊 濡�:濂楅鍐呮墍鍖呭惈鐨勮彍鍗曠瓑 | 鏀寔 | 鏃� | -| 瀹㈡埛绔鐞� | 绯荤粺鍐呭鎺ョ殑鎵�鏈夊鎴风绠$悊 濡�: pc绔�佸皬绋嬪簭绔瓑<br>鏀寔鍔ㄦ�佹巿鏉冪櫥褰曟柟寮� 濡�: 鐭俊鐧诲綍銆佸瘑鐮佺櫥褰曠瓑 鏀寔鍔ㄦ�佹帶鍒秚oken鏃舵晥 | 鏀寔 | 鏃� | -| 鐢ㄦ埛绠$悊 | 鐢ㄦ埛鐨勭鐞嗛厤缃� 濡�:鏂板鐢ㄦ埛銆佸垎閰嶇敤鎴锋墍灞為儴闂ㄣ�佽鑹层�佸矖浣嶇瓑 | 鏀寔 | 鏀寔 | -| 閮ㄩ棬绠$悊 | 閰嶇疆绯荤粺缁勭粐鏈烘瀯锛堝叕鍙搞�侀儴闂ㄣ�佸皬缁勶級 鏍戠粨鏋勫睍鐜版敮鎸佹暟鎹潈闄� | 鏀寔 | 鏀寔 | -| 宀椾綅绠$悊 | 閰嶇疆绯荤粺鐢ㄦ埛鎵�灞炴媴浠昏亴鍔� | 鏀寔 | 鏀寔 | -| 鑿滃崟绠$悊 | 閰嶇疆绯荤粺鑿滃崟銆佹搷浣滄潈闄愩�佹寜閽潈闄愭爣璇嗙瓑 | 鏀寔 | 鏀寔 | -| 瑙掕壊绠$悊 | 瑙掕壊鑿滃崟鏉冮檺鍒嗛厤銆佽缃鑹叉寜鏈烘瀯杩涜鏁版嵁鑼冨洿鏉冮檺鍒掑垎 | 鏀寔 | 鏀寔 | -| 瀛楀吀绠$悊 | 瀵圭郴缁熶腑缁忓父浣跨敤鐨勪竴浜涜緝涓哄浐瀹氱殑鏁版嵁杩涜缁存姢 | 鏀寔 | 鏀寔 | -| 鍙傛暟绠$悊 | 瀵圭郴缁熷姩鎬侀厤缃父鐢ㄥ弬鏁� | 鏀寔 | 鏀寔 | -| 閫氱煡鍏憡 | 绯荤粺閫氱煡鍏憡淇℃伅鍙戝竷缁存姢 | 鏀寔 | 鏀寔 | -| 鎿嶄綔鏃ュ織 | 绯荤粺姝e父鎿嶄綔鏃ュ織璁板綍鍜屾煡璇� 绯荤粺寮傚父淇℃伅鏃ュ織璁板綍鍜屾煡璇� | 鏀寔 | 鏀寔 | -| 鐧诲綍鏃ュ織 | 绯荤粺鐧诲綍鏃ュ織璁板綍鏌ヨ鍖呭惈鐧诲綍寮傚父 | 鏀寔 | 鏀寔 | -| 鏂囦欢绠$悊 | 绯荤粺鏂囦欢灞曠ず銆佷笂浼犮�佷笅杞姐�佸垹闄ょ瓑绠$悊 | 鏀寔 | 鏃� | -| 鏂囦欢閰嶇疆绠$悊 | 绯荤粺鏂囦欢涓婁紶銆佷笅杞芥墍闇�瑕佺殑閰嶇疆淇℃伅鍔ㄦ�佹坊鍔犮�佷慨鏀广�佸垹闄ょ瓑绠$悊 | 鏀寔 | 鏃� | -| 鍦ㄧ嚎鐢ㄦ埛绠$悊 | 宸茬櫥褰曠郴缁熺殑鍦ㄧ嚎鐢ㄦ埛淇℃伅鐩戞帶涓庡己鍒惰涪鍑烘搷浣� | 鏀寔 | 鏀寔 | -| 瀹氭椂浠诲姟 | 杩愯鎶ヨ〃銆佷换鍔$鐞�(娣诲姞銆佷慨鏀广�佸垹闄�)銆佹棩蹇楃鐞嗐�佹墽琛屽櫒绠$悊绛� | 鏀寔 | 浠呮敮鎸佷换鍔′笌鏃ュ織绠$悊 | -| 浠g爜鐢熸垚 | 澶氭暟鎹簮鍓嶅悗绔唬鐮佺殑鐢熸垚锛坖ava銆乭tml銆亁ml銆乻ql锛夋敮鎸丆RUD涓嬭浇 | 鏀寔 | 浠呮敮鎸佸崟鏁版嵁婧� | -| 绯荤粺鎺ュ彛 | 鏍规嵁涓氬姟浠g爜鑷姩鐢熸垚鐩稿叧鐨刟pi鎺ュ彛鏂囨。 | 鏀寔 | 鏀寔 | -| 鏈嶅姟鐩戞帶 | 鐩戣闆嗙兢绯荤粺CPU銆佸唴瀛樸�佺鐩樸�佸爢鏍堛�佸湪绾挎棩蹇椼�丼pring鐩稿叧閰嶇疆绛� | 鏀寔 | 浠呮敮鎸佸崟鏈篊PU銆佸唴瀛樸�佺鐩樼洃鎺� | -| 缂撳瓨鐩戞帶 | 瀵圭郴缁熺殑缂撳瓨淇℃伅鏌ヨ锛屽懡浠ょ粺璁$瓑銆� | 鏀寔 | 鏀寔 | -| 鍦ㄧ嚎鏋勫缓鍣� | 鎷栧姩琛ㄥ崟鍏冪礌鐢熸垚鐩稿簲鐨凥TML浠g爜銆� | 鏀寔 | 鏀寔 | -| 浣跨敤妗堜緥 | 绯荤粺鐨勪竴浜涘姛鑳芥渚� | 鏀寔 | 涓嶆敮鎸� | - - -## 婕旂ず鍥句緥 - -| | | -|--------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------| -|  |  | -|  |  | -|  |  | -|  |  | -|  |  | -|  |  | -|  |  | -|  |  | -|  |  | -|  |  | -|  |  | -|  |  | -|  |  | -|  |  | -|  |  | -|  |  | -|  |  | -|  |  | -|  |  | - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/4.Xinit.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/4.Xinit.md deleted file mode 100644 index 73a6dbc..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/4.Xinit.md +++ /dev/null @@ -1,67 +0,0 @@ -# 4.X椤圭洰鍒濆鍖� -- - - -### 椤圭洰鍒嗘敮璇存槑 -`4.X` 涓诲垎鏀� 4.X鐗堟湰 绋冲畾鍙戝竷鍒嗘敮<br> -`fast` 鍗曚綋鍒嗘敮 鍔熻兘涓庝富鍒嗘敮鐩稿悓 缁撴瀯涓哄崟妯″潡<br> -`dev` 寮�鍙戝垎鏀� 浠g爜闅忔椂鏇存柊 涓嶆帹鑽愪娇鐢� 缁忔祴璇曞悗浼氬彂甯冨埌涓诲垎鏀�<br> -`future/*` 鏂板姛鑳介瑙堝垎鏀�<br> - -### 椤圭洰蹇呭鐜 -> 鎺ㄨ崘浣跨敤 `docker` 瀹夎 椤圭洰鍐呯疆 `docker` 缂栨帓鏂囦欢 -* oracle jdk 8 11 (鏆傛椂涓嶆敮鎸� 17 涓嶆敮鎸佸ぇ浜� jdk8_202 鍥犱负202鏄渶鍚庝竴涓厤璐圭増鏈�) -* mysql 5.7 8.0 (5.6鏈�傞厤鍙兘浼氭湁闂) -* oracle 11g 12c -* postgres 13 14 -* sqlserver 2017 2019 -* redis 5.X 6.X 鐢变簬妗嗘灦澶ч噺浣跨敤浜唕edis鐗规�� 鐗堟湰蹇呴』 >= 5.X ([win redis 涓嬭浇鍦板潃](https://github.com/tporadowski/redis)) -* minio 鏈湴鏂囦欢瀛樺偍 鎴� 闃块噷浜� 鑵捐浜� 涓冪墰浜戠瓑涓�鍒囨敮鎸丼3鍗忚鐨勪簯瀛樺偍 -* maven 3.6.3 3.8.X -* nodejs >= 12 < 18 -* npm 6.X 8.X (7.X纭鏈夐棶棰�) - -### 3.2.0鍙婁互涓� 鍙渶鍕鹃�夊搴旂幆澧冨嵆鍙� - - -### 榛樿 `JDK1.8` 濡傛湁鍙樺姩 闇�鏇存敼浠ヤ笅閰嶇疆 - - - - - -### sql瀵煎叆 - -璇锋寜鐓т互涓嬮『搴忎緷娆″鍏� - - - -榛樿涓� `mysql` 鍏朵粬鏁版嵁搴撻渶瀵煎叆瀵瑰簲鐨剆ql鏂囦欢 - - - -**澶氭暟鎹簱浠呮敮鎸佷富搴旂敤 鎵╁睍搴旂敤闇�鑷閫傞厤(渚嬪: xxl-job浠呮敮鎸乵ysql)** - -### 鏈嶅姟鍚姩椤哄簭璇存槑 - -1. 蹇呴』鍚姩鍩虹寤鸿: mysql redis admin<br> -2. 鍙�夊惎鍔ㄥ熀纭�寤鸿: minio(褰卞搷鏂囦欢涓婁紶) monitor(褰卞搷鐩戞帶) xxljob(褰卞搷瀹氭椂浠诲姟)<br> - - - -* `MonitorAdminApplication` 涓� Admin鐩戞帶鏈嶅姟(闈炲繀瑕� 鍙弬鑰冨搴旀枃妗e叧闂�) -* `XxlJobAdminApplication` 涓� 浠诲姟璋冨害涓績鏈嶅姟(闈炲繀瑕� 鍙弬鑰冨搴旀枃妗e叧闂�) -* `RuoYiApplication` 涓� 涓诲簲鐢ㄦ湇鍔� -> 闇�浼樺厛鍚姩 `MonitorAdminApplication` 涓� `XxlJobAdminApplication` 鍏蜂綋閰嶇疆鏂瑰紡鍙傝�冨搴旀枃妗� -> 鏈�鍚庡惎鍔� 涓绘湇鍔� `RuoYiApplication` - -### 涓绘湇鍔¢厤缃柟寮� - -鍦ㄥ嬀閫夊搴旂幆澧冪殑閰嶇疆鏂囦欢鍐� 濉啓 mysql 涓� redis 閰嶇疆淇℃伅 - - - - -鍏朵粬鏁版嵁搴撻厤缃� 鎸夌収绯荤粺鑷甫鐨勯厤缃洿鏀瑰嵆鍙� - - - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/5.Xnew.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/5.Xnew.md deleted file mode 100644 index a966ada..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/5.Xnew.md +++ /dev/null @@ -1,5 +0,0 @@ -### 瑙嗛璁茶В - -[RuoYi-Vue-Plus 5.0.0 鏂板姛鑳戒笌鍙樻洿浠嬬粛](https://www.bilibili.com/video/BV1Us4y1m7ky/) - -[RuoYi-Vue-Plus 5.1.0 鏂板姛鑳戒笌鍙樻洿浠嬬粛](https://www.bilibili.com/video/BV1fj411y71X/) diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/admin_init.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/admin_init.md deleted file mode 100644 index 0a317a8..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/admin_init.md +++ /dev/null @@ -1,32 +0,0 @@ -# 鎼缓Admin鐩戞帶 -- - - -### 閰嶇疆鐩戞帶瀹㈡埛绔� - -> 淇敼涓绘湇鍔¢厤缃枃浠� - - - -* `enabled` 鍙惎鐢ㄦ垨鍏抽棴瀹㈡埛绔敞鍐� -* `url` 涓虹洃鎺т腑蹇冨湴鍧� -* `username 涓� password` 涓虹洃鎺т腑蹇冪殑璐﹀彿瀵嗙爜 - -### 鍚敤鐩戞帶涓績 -鍦� `鎵╁睍椤圭洰 -> 鐩戞帶妯″潡` 鍚姩 - - - -鍦ㄧ洃鎺фā鍧楀搴旂殑 `yml` 閰嶇疆鏂囦欢 鍙缃櫥褰曠殑璐﹀彿瀵嗙爜涓庤闂矾寰� - - - -### 鍓嶇淇敼admin鐩戞帶璁块棶璺緞 -`dev`鐜 榛樿浣跨敤 `.env.development` 閰嶇疆鏂囦欢鍐呭湴鍧� - - - -`prod`鐜 浣跨敤 `.env.production` 鏈満璺敱 - - -鏁呰�� `prod` 鐜鍙渶鏇存敼 `nginx` 鍙嶅悜浠g悊璺緞鍗冲彲 - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/deploy.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/deploy.md deleted file mode 100644 index 37e184c..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/deploy.md +++ /dev/null @@ -1,126 +0,0 @@ -# 搴旂敤閮ㄧ讲 -- - - -## 鐗堟湰 >= 4.3.0 - -### 璇蜂紭鍏堥槄璇� [idea鐜閰嶇疆](/ruoyi-vue-plus/quickstart/idea_environment.md) - -## 鎵嬪姩閮ㄧ讲 - -鍦ㄦ湇鍔″櫒瀹夎 `mysql` `redis` `nginx` `minio` - -灏嗛」鐩唴 `script/docker/nginx/nginx.conf` 閰嶇疆鏂囦欢 澶嶅埗鍒� `nginx` 閰嶇疆鍐�<br> -灏嗛」鐩唴 `script/docker/redis/redis.conf` 閰嶇疆鏂囦欢 澶嶅埗鍒� `redis` 閰嶇疆鍐� - -骞朵慨鏀圭浉鍏冲弬鏁板 `鍓嶇椤甸潰瀛樻斁浣嶇疆` `鍚庣Ip鍦板潃` 绛変娇鍏剁敓鏁� - -jar鍖呴儴缃插悗绔湇鍔� 鎵撳寘鍛戒护濡備笅 - -3.2.0鍙婁互涓� -```mvn -mvn clean package -D maven.test.skip=true -P prod -``` -鏈嶅姟鍣ㄩ渶鍒涘缓涓存椂鏂囦欢瀛樺偍鐩綍涓庨厤缃枃浠跺搴�(鏃犳鐩綍涓婁紶鏂囦欢浼氭姤閿�) - - - -鍓嶇鍙傝�冧笅鏂瑰墠绔儴缃茬珷鑺� - -## 閮ㄧ讲瑙嗛 - -[RuoYi-Vue-Plus 5.0 鐢熶骇鐜鎼缓閮ㄧ讲](https://www.bilibili.com/video/BV1mL411e7ha/) - -## docker 鍚庣閮ㄧ讲 - -### 璇蜂紭鍏堥槄璇� [idea鐜閰嶇疆](/ruoyi-vue-plus/quickstart/idea_environment.md) - -**閲嶇偣: 涓�鐭ュ崐瑙g殑蹇呯湅** -> [docker瀹夎](https://lionli.blog.csdn.net/article/details/83153029)<br> -> [docker-compose瀹夎](https://lionli.blog.csdn.net/article/details/111220320)<br> -> [docker缃戠粶妯″紡璁茶В](https://lionli.blog.csdn.net/article/details/109603785)<br> -> [docker 寮�鍚鍙� 2375 渚涘閮ㄧ▼搴忚闂甝(https://lionli.blog.csdn.net/article/details/92627962) - -### 灏嗛厤缃娇鐢‵TP涓婁紶鍒版牴鐩綍 -idea鎷栨嫿鏂囦欢鍒拌繙绋嬬洰褰曞嵆鍙笂浼� - - - -### 缁檇ocker鍒嗛厤鏂囦欢澶规潈闄� -**閲嶇偣娉ㄦ剰: 涓�瀹氳纭繚鐩綍 `/docker` 鍙婂叾鎵�鏈夊瓙鐩綍 鍏锋湁鍐欐潈闄� 濡傛灉鍚庣画鍑虹幇鏉冮檺寮傚父闂 閲嶆柊鎵ц涓�閬嶅垎閰嶆潈闄�** - - -```shell -chmod -R 777 /docker -``` -### 鏋勫缓搴旂敤闀滃儚 - -**1.闇�瑕佸厛浣跨敤maven鎵撳寘鎴恓ar鍖�** - - - -**2.鎵ц鏋勫缓** -> 椤圭洰鍒濆鍖栧悗浼氳嚜鍔ㄧ敓鎴愭瀯寤洪暅鍍忕殑杩愯閰嶇疆<br> -> 閰嶇疆濂絛ocker杩炴帴涔嬪悗 杩愯濡備笅鍗冲彲鏋勫缓瀵瑰簲鐨勫簲鐢ㄩ暅鍍� - -**閲嶇偣娉ㄦ剰: idea2024鍙婁互涓婄増鏈姹傚繀椤诲湪鏈湴瀹夎docker鎵嶅彲浠ユ墽琛屽涓嬫搷浣�** - - - - - -**3.缁撴瀯璁茶В** -鍙抽敭缂栬緫 鍗冲彲鐪嬪埌鍐呴儴閰嶇疆 - - - - - - -### 鍒涘缓鍩虹鏈嶅姟 - -```shell -docker-compose up -d mysql nginx-web redis minio -``` - -### 鍒涘缓涓氬姟鏈嶅姟(闇�瑕佸厛鏋勫缓鏈嶅姟闀滃儚) - -4.X -```shell -docker-compose up -d ruoyi-monitor-admin ruoyi-xxl-job-admin ruoyi-server1 ruoyi-server2 -``` - -5.X -```shell -docker-compose up -d ruoyi-monitor-admin ruoyi-snailjob-server ruoyi-server1 ruoyi-server2 -``` - -### docker鍏朵粬鎿嶄綔(idea鐨刣ocker鎻掍欢 鎺ㄨ崘浣跨敤) - - -## 鍓嶇閮ㄧ讲 - -鎵ц鎵撳寘鍛戒护 -```shell -# 鎵撳寘姝e紡鐜 -npm run build:prod -``` -鎵撳寘鍚庣敓鎴愭墦鍖呮枃浠跺湪 `ruoyi-ui/dist` 鐩綍 -灏� `dist` 鐩綍涓嬫枃浠�(涓嶅寘鍚� `dist` 鐩綍) 涓婁紶鍒伴儴缃叉湇鍔″櫒 `docker/nginx/html` 鐩綍涓�(鎵嬪姩閮ㄧ讲鏀惧叆鑷繁閰嶇疆鐨勮矾寰勫嵆鍙�) - - - -閲嶅惎 `nginx` 鏈嶅姟鍗冲彲 - - -### 濡傞渶鏇存敼鍚庣浠g悊璺緞鎴栬�呭悗绔痠p鍦板潃鐨勮瘽寰�涓嬬湅 - -鏇存敼`nginx.conf`閰嶇疆鏂囦欢浠g悊璺緞(娉ㄦ剰: /寮�澶�/缁撳熬) - - - -鏇存敼鍓嶇`.env.鐜` 鏂囦欢鍐呯殑 `VITE_APP_BASE_API` - - - -鏇存敼`nginx.conf`閰嶇疆鏂囦欢鍚庣ip鍦板潃 - - diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/extend_project.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/extend_project.md deleted file mode 100644 index 0c6f33a..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/extend_project.md +++ /dev/null @@ -1,49 +0,0 @@ -# 鍩轰簬 RuoYi-Vue-Plus 鐨勬墿灞曢」鐩垪琛� -- - - -### 绮惧搧PR 娆㈣繋鎶曠 -| 鍔熻兘浠嬬粛 | PR鍦板潃 | -|-------------------------------------|------------------------------------------------------| -| 鎷栨嫿鍥剧墖璋冩暣鏄剧ず椤哄簭 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/173 | -| 澧炲姞Jasypt鍔犲瘑搴撳閰嶇疆鏂囦欢鍔犲瘑 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/177 | -| 浣跨敤瀵屾枃鏈瑆angeditor5鏇挎崲Quill | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/213 | -| 闆嗘垚screw鏁版嵁搴撴枃妗e姛鑳芥ā鍧� | https://gitee.com/dromara/RuoYi-Cloud-Plus/pulls/42 | -| Excel瀵煎叆妯℃澘澧炲姞鎵规敞鏀寔 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/222 | -| 鍘嬬缉鍖呭鐞嗗伐鍏� 鏀寔鏈湴鏂囦欢/鐩綍+oss鏂囦欢/缃戠粶鏂囦欢娣峰悎 | https://gitee.com/dromara/RuoYi-Cloud-Plus/pulls/44 | -| 娣诲姞websocket妯″潡 鏀寔satoken閴存潈 | https://gitee.com/dromara/RuoYi-Cloud-Plus/pulls/65 | -| 鏁版嵁搴撳瓧娈靛姞瑙e瘑(鏀寔 base64 aes rsa sm2 sm4) | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/274 | -| 澧炲姞liquibase杩佺Щ鏁版嵁搴� | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/299 | -| 澧炲姞OSS妯″潡鏀寔鏈湴鐜 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/353 | -| 鎵╁睍妯″潡鐙珛闆嗘垚flyway | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/439 | -| 鎵╁睍妯″潡鐙珛闆嗘垚go-view澶у睆鐪嬫澘 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/445 | -| 鍩轰簬AmazonS3鍗忚鐨勫垎鐗囦笂浼� | https://gitee.com/dromara/RuoYi-Cloud-Plus/pulls/130 | -| 鎵╁睍forest http瀹㈡埛绔� 澹版槑寮廻ttp璇锋眰 浜屾灏佽鍍忓伐鍏风被 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/547 | -| 澧炲姞鐭摼鎺ョ敓鎴愬伐鍏� | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/515 | -| 鏂板oss棰勭鍚嶄笂浼犲伐鍏风粍鍚堜娇鐢ㄥ紓姝ュ鎴风鍒嗙墖 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/522 | -| 鏂板瑙勫垯寮曟搸LiteFlow锛孲QL鎸佷箙鍖栨帴鍏ワ紝鏀寔鍙鍖栭〉闈� | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/552 | -| 涓�閿儴缃插埌绉佹湁Nexus浠撳簱 | https://gitee.com/dromara/RuoYi-Cloud-Plus/pulls/181 | -| 鏈嶅姟鐘舵�佺洃鎺у彂閫侀偖浠堕拤閽夌瓑 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/568 | -| 鐧诲綍楠岃瘉鏀寔2FA楠岃瘉 | https://gitee.com/dromara/RuoYi-Vue-Plus/pulls/578 | - -### 椤圭洰浠嬬粛+椤圭洰鍦板潃 娆㈣繋鎶曠 - - -| 椤圭洰浠嬬粛 | 椤圭洰鍦板潃 | -|--------------------------------|---------------------------------------------------------------------------| -| 寰湇鍔℃墿灞� | https://gitee.com/dromara/RuoYi-Cloud-Plus | -| Plus瀛︿範绗旇 | https://zhonglingyuxiu1028.github.io/zlyx-space/#/ruoyi-vue-plus/home | -| 鍩轰簬uniapp+TmUI浠�0寮�鍙� 鏀寔H5/灏忕▼搴�/瀹夊崜 | https://gitee.com/dapppp/ruoyi-plus-miniapp | -| 鍩轰簬RuoYi-App妗嗘灦浜屾淇敼浣跨敤Uniapp+Vue3 | https://gitee.com/wangying110166/ruo-yi-uni-app-plus | -| 鍩轰簬RuoYi-App妗嗘灦瀵规帴Plus鍚庣 | https://gitee.com/FnTop/RuoYi-App-Plus | -| 鍩轰簬vben(ant-design-vue)鍓嶇椤圭洰 | https://gitee.com/dapppp/ruoyi-plus-vben | -| 鍩轰簬vue-next-admin鐨剉ue3+ts鍓嶇 | https://gitee.com/thiszhc/RuoYi-Vue3-UI | -| 闆嗘垚GoView鐗堟湰 | https://gitee.com/kdwqjwgqxx/RuoYi-Vue-Plus-GoView | -| mybatis-flex鐗堟湰 | https://gitee.com/dataprince/ruoyi-flex | -| blog鍗氬绯荤粺 | https://gitee.com/kalashok-pan/zhi-blog-plus | -| tdengine鏃跺簭鏁版嵁搴撴墿灞� | https://gitee.com/zhangbg/ruoyi-plus-tdengine | -| 閲嶆瀯椤圭洰缁撴瀯(鍙傝�僺pringboot婧愮爜) | https://gitee.com/denghuafeng/ruoyi-boot-plus | -| Activiti鎵╁睍 | https://gitee.com/sgs98/RuoYi-Vue-Plus-Activiti | -| flowable鎵╁睍 | https://gitee.com/sgs98/RuoYi-Vue-Plus-Flowable | -| flowable鎵╁睍 | https://gitee.com/KonBAI-Q/ruoyi-flowable-plus | -| mybatis-flex鐗堟湰 | https://gitee.com/yhan219/ruoyi-vue-flex | -| weblog鍗氬绯荤粺 | https://gitee.com/fu-zhanshuai/fzshuai-weblog | -| Annlcc鍗氬 | https://gitee.com/ahcode/ann-blog-plus | \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/idea_environment.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/idea_environment.md deleted file mode 100644 index 5995e0f..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/idea_environment.md +++ /dev/null @@ -1,50 +0,0 @@ -# idea鐜閰嶇疆 -- - - -## 閰嶇疆椤圭洰缂栫爜 - - -## 閰嶇疆杩愯鐪嬫澘 - -### 閰嶇疆spring涓巇ocker鐪嬫澘 - - - - - - - - -## 閰嶇疆鏈嶅姟鍣⊿SH杩炴帴 -杩涘叆 `Settings -> Tools -> SSH Configurations` 鐐瑰嚮鍔犲彿鍒涘缓SSH杩炴帴閰嶇疆<br> -濉啓 鏈嶅姟鍣↖P 鐢ㄦ埛鍚� 瀵嗙爜 绔彛鍙� 鐐瑰嚮 Test Connection 娴嬭瘯杩炴帴 - - - -浣跨敤Terminal 宸ュ叿 鐐瑰嚮绠ご鎵惧埌涓婃柟鍒涘缓鐨凷SH杩炴帴閰嶇疆<br> -閫夋嫨鍗冲彲杩涘叆SSH杩炴帴鐣岄潰 鍦ㄨ繖閲屽彲浠ュ鏈嶅姟鍣ㄨ繘琛屽懡浠ゆ搷浣� - - - -## 閰嶇疆鏈嶅姟鍣‵TP杩炴帴 -杩涘叆 `Settings -> Build-> Deployment` 鐐瑰嚮鍔犲彿 閫夋嫨SFTP 鍒涘缓 FTP 杩炴帴閰嶇疆<br> -閫夋嫨涔嬪墠鍒涘缓濂界殑SSH閰嶇疆 鐐瑰嚮 Test Connection 娴嬭瘯杩炴帴 - - - -鍦↖DEA涓婃柟宸ュ叿鏍� 鎵惧埌 `Tools -> Deployment -> Browse Remote Host` 鎵撳紑杩滅▼鐣岄潰<br> -鐐瑰嚮绠ご鎵惧埌鎴戜滑涓婃柟閰嶇疆鐨凷FTP杩炴帴閰嶇疆 鍗冲彲杩炴帴鍒版湇鍔″櫒鐨勬枃浠剁洰褰� - - - -## 閰嶇疆Docker杩炴帴 -### 鍙搷浣滆繙绋媎ocker涓庢瀯寤轰笂浼燿ocker闀滃儚(浠f浛鍘熸潵maven docker鎻掍欢) -tcp杩炴帴闇�瑕佸紑鏀炬湇鍔″櫒2375绔彛<br> -ssh闇�瑕佷娇鐢ㄤ笂鏂圭殑SSH杩炴帴閰嶇疆<br> -寤鸿浣跨敤SSH杩炴帴 - - - -閰嶇疆濂戒箣鍚� 鍦ㄨ繍琛岀獥鍙d細澶氬嚭涓�涓狣ocker鍥炬爣 鍙屽嚮鍗冲彲杩炴帴杩滅▼docker<br> -鍙互鏌ョ湅瀹瑰櫒瀹炴椂鏃ュ織 鍚姩 閲嶅惎 鍋滄 绛夋搷浣� - - \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/init.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/init.md deleted file mode 100644 index dba0905..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/init.md +++ /dev/null @@ -1,73 +0,0 @@ -# 5.X椤圭洰鍒濆鍖� -- - - -### 椤圭洰鍒嗘敮璇存槑 - -`5.X` 涓诲垎鏀� 5.X鐗堟湰 绋冲畾鍙戝竷鍒嗘敮<br> -`dev` 寮�鍙戝垎鏀� 浠g爜闅忔椂鏇存柊 涓嶆帹鑽愪娇鐢� 缁忔祴璇曞悗浼氬彂甯冨埌涓诲垎鏀�<br> -`future/*` 鏂板姛鑳介瑙堝垎鏀�<br> - -### 椤圭洰蹇呭鐜 -> 鎺ㄨ崘浣跨敤 `docker` 瀹夎 椤圭洰鍐呯疆 `docker` 缂栨帓鏂囦欢 - -**娉ㄦ剰: 绂佹浣跨敤 `oraclejdk`(鐢变簬spring鐨刡ug瀵艰嚧鎵撳寘杩愯浼氭姤閿�)** - -**Spring瀹樻柟鎺ㄨ崘浣跨敤JDK https://bell-sw.com/pages/downloads/** - - - -* openjdk-17/21 鎴� graalvm-community-jdk-17/21 [涓嬭浇鍦板潃](https://github.com/graalvm/graalvm-ce-builds/releases) 鐗堟湰 -* mysql 5.7 8.0 (鍏朵粬鐗堟湰鏈祴璇� 濡傚叾浠栫増鏈病闂 鍙互鍛婄煡鍜变滑) -* oracle >= 12c (鍏朵粬鐗堟湰鏈祴璇� 濡傚叾浠栫増鏈病闂 鍙互鍛婄煡鍜变滑) -* postgres 13 14 (鍏朵粬鐗堟湰鏈祴璇� 濡傚叾浠栫増鏈病闂 鍙互鍛婄煡鍜变滑) -* sqlserver 2017 2019 (鍏朵粬鐗堟湰鏈祴璇� 濡傚叾浠栫増鏈病闂 鍙互鍛婄煡鍜变滑) -* redis 5.X 6.X 7.X 鐢变簬妗嗘灦澶ч噺浣跨敤浜唕edis鐗规�� 鐗堟湰蹇呴』 >= 5.X ([win redis 涓嬭浇鍦板潃](https://github.com/zkteco-home/redis-windows)) -* minio 鏈湴鏂囦欢瀛樺偍 鎴� 闃块噷浜� 鑵捐浜� 涓冪墰浜戠瓑涓�鍒囨敮鎸丼3鍗忚鐨勪簯瀛樺偍 -* maven >= 3.8.X -* nodejs >= 18.18 (鍏朵粬鐗堟湰鏈祴璇� 濡傚叾浠栫増鏈病闂 鍙互鍛婄煡鍜变滑) -* npm >= 8.X (7.X纭鏈夐棶棰�) -* idea 2022 2024 (涓�瀹氫笉瑕佷娇鐢�2023鍚庢灉鑷礋 bug澶褰卞搷椤圭洰寮�鍙�) - -### 鎼缓瑙嗛 - -[RuoYi-Vue-Plus 5.0 鎼缓涓庤繍琛宂(https://www.bilibili.com/video/BV1Fg4y137JK/) - -### 鍕鹃�塵aven瀵瑰簲鐜 - - -### 榛樿 `JDK17` 濡傛湁鍙樺姩 闇�鏇存敼浠ヤ笅閰嶇疆 - - - - -### sql瀵煎叆 - -璇锋寜鐓т互涓嬮『搴忎緷娆″鍏� 榛樿涓� `mysql` 鍏朵粬鏁版嵁搴撻渶瀵煎叆瀵瑰簲鐨剆ql鏂囦欢<br> -濡傞渶浣跨敤鍏朵粬鏁版嵁搴� 鐪嬭繖閲� => [澶氭暟鎹簱鏁版嵁婧怾(../framework/extend/dynamic_datasource.md)<br> - - - -### 鏈嶅姟鍚姩椤哄簭璇存槑 - -1. 蹇呴』鍚姩鍩虹寤鸿: mysql redis admin<br> -2. 鍙�夊惎鍔ㄥ熀纭�寤鸿: minio(褰卞搷鏂囦欢涓婁紶) monitor(褰卞搷鐩戞帶) snailjob(褰卞搷瀹氭椂浠诲姟)<br> - - - -* `MonitorAdminApplication` 涓� Admin鐩戞帶鏈嶅姟(闈炲繀瑕� 鍙弬鑰冨搴旀枃妗e叧闂� [鎼缓Admin鐩戞帶](/ruoyi-vue-plus/quickstart/admin_init.md)) -* `SnailJobServerApplication` 涓� 浠诲姟璋冨害涓績鏈嶅姟(闈炲繀瑕� 鍙弬鑰冨搴旀枃妗e叧闂� [鎼缓璋冨害涓績](/ruoyi-vue-plus/quickstart/snail_job_init.md)) -* `DromaraApplication` 涓� 涓诲簲鐢ㄦ湇鍔� -> 闇�浼樺厛鍚姩 `MonitorAdminApplication` 涓� `SnailJobServerApplication` 鍏蜂綋閰嶇疆鏂瑰紡鍙傝�冨搴旀枃妗�<br> -> 鏈�鍚庡惎鍔� 涓绘湇鍔� `DromaraApplication`<br> -> 宸ヤ綔娴佺浉鍏冲垵濮嬪寲浣跨敤 [宸ヤ綔娴佸垵濮嬪寲](/ruoyi-vue-plus/quickstart/worker_init.md) - -### 涓绘湇鍔¢厤缃柟寮� - -鍦ㄥ嬀閫夊搴旂幆澧冪殑閰嶇疆鏂囦欢鍐� 濉啓 mysql 涓� redis 閰嶇疆淇℃伅 - - - - - -鍏朵粬鏁版嵁搴撻厤缃� 鎸夌収绯荤粺鑷甫鐨勯厤缃洿鏀瑰嵆鍙� - - \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/power_job_init.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/power_job_init.md deleted file mode 100644 index 863971b..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/power_job_init.md +++ /dev/null @@ -1,48 +0,0 @@ -# 鎼缓PowerJob浠诲姟璋冨害涓績(5.X鍒嗘敮宸插簾寮�) -- - - -### 搴熷純鍘熷洜 - -鎺ュ埌澶ч噺鎶曡瘔 浣跨敤鍥伴毦 鐢ㄦ硶璇″紓 鍚勭闂绛� - -### 閰嶇疆璋冨害涓績瀹㈡埛绔� -> 淇敼涓绘湇鍔¢厤缃枃浠� -> - - - - - -* `enabled` 鍙惎鐢ㄦ垨鍏抽棴瀹㈡埛绔敞鍐� -* `server-address` 涓鸿皟搴︿腑蹇冨湴鍧� -* `app-name` 涓烘墽琛屽櫒缁勮处鎴峰悕(闇�鍦ㄨ皟搴︿腑蹇冩敞鍐屾柟鍙櫥褰曟煡鐪�) - -### 鍚敤璋冨害涓績 -**闇�鎵ц powerjob.sql 榛樿璐﹀彿瀵嗙爜 `ruoyi-worker` `123456` 璐﹀彿鍦ㄦ暟鎹簱閲� 鍙互鍦ㄩ〉闈慨鏀瑰瘑鐮�** -<br> - - - -> 鍦� `鎵╁睍椤圭洰 -> powerjob-server妯″潡` 鍚姩 -> - - -> 闇�淇敼閰嶇疆鏂囦欢鏁版嵁搴撹繛鎺ュ湴鍧�(**娉ㄦ剰: 姝ゅ涓簉uoyi-powerjob-server鏈嶅姟鐨勯厤缃枃浠�**) -> - - -> 涔熷彲閰嶇疆閭欢鍙戦�� 閽夐拤鎺ㄩ�� 鍜� mongodb瀛樺偍 -> - - -### 鍓嶇淇敼浠诲姟璋冨害涓績璁块棶璺緞 -`dev`鐜 榛樿浣跨敤 `.env.development` 閰嶇疆鏂囦欢鍐呭湴鍧� - - - -`prod`鐜 浣跨敤 `.env.production` 鏈満璺敱 - - - -鏁呰�� `prod` 鐜鍙渶鏇存敼 `nginx` 鍙嶅悜浠g悊璺緞鍗冲彲 - - \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/snail_job_init.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/snail_job_init.md deleted file mode 100644 index 4c6d353..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/snail_job_init.md +++ /dev/null @@ -1,52 +0,0 @@ -# 鎼缓SnailJob浠诲姟璋冨害涓績(5.2.0鏂板姛鑳�) -- - - - -### 瑙嗛浠嬬粛 - -[Snail job浠诲姟璋冨害涓績锛氳交鏉炬帉鎻′换鍔$鐞嗐�侀噸璇曟満鍒跺拰浠诲姟缂栨帓](https://www.bilibili.com/video/BV19i421m7GL/) - -### 閰嶇疆璋冨害涓績瀹㈡埛绔� -> 淇敼涓绘湇鍔¢厤缃枃浠� -> - - - - - -* `enabled` 鍙惎鐢ㄦ垨鍏抽棴瀹㈡埛绔敞鍐� -* `server.address` 涓鸿皟搴︿腑蹇冨湴鍧� -* `server.port` 涓鸿皟搴︿腑蹇冮�氫俊绔彛 -* `token` 涓虹粍閫氫俊鏍¢獙token(鍙湪璋冨害涓績缁勯厤缃洿鎹�) -* `group-name` 涓烘墽琛屽櫒缁� -* `namespace` 浣滅敤鍩�(涓嶅悓浣滅敤鍩熺浉浜掗殧绂昏鍕垮~閿�) - -### 鍚敤璋冨害涓績 -**闇�鎵ц snail_job.sql 榛樿璐﹀彿瀵嗙爜 `admin` `admin` 璐﹀彿鍦ㄦ暟鎹簱閲� 鍙互鍦ㄩ〉闈慨鏀瑰瘑鐮�** -<br> - - - -> 鍦� `ruoyi-extend -> ruoyi-snailjob-server` 妯″潡鍚姩 -> - - -> 闇�淇敼閰嶇疆鏂囦欢鏁版嵁搴撹繛鎺ュ湴鍧�(**娉ㄦ剰: 姝ゅ涓簉uoyi-snailjob-server鏈嶅姟鐨勯厤缃枃浠� 鏀寔澶氱涓嶅悓鏁版嵁搴�**) -> - - -### 蹇�熷叆闂� - -[Snailjob蹇�熷叆闂� 鍩烘湰浣跨敤浠嬬粛](https://juejin.cn/post/7412955032092442675) - -### 鍓嶇淇敼浠诲姟璋冨害涓績璁块棶璺緞 -`dev`鐜 榛樿浣跨敤 `.env.development` 閰嶇疆鏂囦欢鍐呭湴鍧� - - - -`prod`鐜 浣跨敤 `.env.production` 鏈満璺敱 - - - -鏁呰�� `prod` 鐜鍙渶鏇存敼 `nginx` 鍙嶅悜浠g悊璺緞鍗冲彲 - - \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/worker_init.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/worker_init.md deleted file mode 100644 index da09117..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/worker_init.md +++ /dev/null @@ -1,43 +0,0 @@ -# 宸ヤ綔娴佸垵濮嬪寲 -- - - - -### 宸ヤ綔娴佷娇鐢ㄥ強閰嶇疆鏂瑰紡 - -1.鎵惧埌椤圭洰涓璼cript涓媌pmn鏂囦欢澶� - - - -2.鍚姩椤圭洰鎵惧埌娴佺▼瀹氫箟閫氳繃**閮ㄧ讲娴佺▼鏂囦欢**灏哹pmn鏂囦欢澶逛笅**妯″瀷.zip**涓婁紶 - - - - - -3.瀵煎叆**妯″瀷.zip**鍚庡皢浼氬嚭鐜颁互涓嬪垪琛紝榛樿浣跨敤**leave1**锛宼est_leave涓鸿鍋囩敵璇疯〃鍚嶇О - - - - - -**姝ゅ琛ㄥ悕鐢辨潵涓庤〃鍗曟簮鐮佸唴缂栧啓鐨勮〃鍚嶄繚鎸佷竴鑷存柟鍙簰鐩哥粦瀹�** - - - - -4.鏂板涓�鏉¤鍋囩敵璇凤紝鎻愪氦鍚庡皢浼氬緱鍒板涓嬩俊鎭� - - - - - -5.鍏充簬濡備綍鍒囨崲涓�涓柊鐨勬祦绋嬩娇鐢紝褰撳墠榛樿浣跨敤寰桲EY涓簂eave1 锛屾垜浠垏鎹㈠埌leave2浣跨敤锛屾垜浠彧闇�鐐瑰嚮缁戝畾涓氬姟灏嗚〃鍚嶇粦瀹氾紝閲嶆柊鍙戣捣涓�涓柊鐨勮鍋囩敵璇峰氨鍙互寰楀埌涓�涓柊鐨勬祦绋嬩俊鎭� - - - - - -**姝ゅ琛ㄥ悕鐢辨潵涓庤〃鍗曟簮鐮佸唴缂栧啓鐨勮〃鍚嶄繚鎸佷竴鑷存柟鍙簰鐩哥粦瀹�** - - - - \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/xxl_job_init.md b/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/xxl_job_init.md deleted file mode 100644 index f2751e9..0000000 --- a/ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/xxl_job_init.md +++ /dev/null @@ -1,43 +0,0 @@ -# 鎼缓Xxl-Job浠诲姟璋冨害涓績(5.X鍒嗘敮宸插簾寮�) -- - - -### 搴熷純鍘熷洜 - -闀挎椂闂翠笉缁存姢 绀惧尯鍐扮偣 涓嶆敮鎸乯dk17 涓嶆敮鎸乥oot3 涓嶆敮鎸佸叾浠栨暟鎹簱绛� - -### 閰嶇疆璋冨害涓績瀹㈡埛绔� -> 淇敼涓绘湇鍔¢厤缃枃浠� -> - - -* `enabled` 鍙惎鐢ㄦ垨鍏抽棴瀹㈡埛绔敞鍐� -* `admin-addresses` 涓鸿皟搴︿腑蹇冨湴鍧� -* `access-token` 涓鸿皟搴︿腑蹇冧氦浜掗壌鏉僼oken -* `executor` 涓烘墽琛屽櫒閰嶇疆 涓�涓鎴风涓轰竴涓墽琛屽櫒 鍙厤缃墽琛屽櫒闆嗙兢 浣跨敤鍒嗙墖浠诲姟澶勭悊 - -### 鍚敤璋冨害涓績 -**榛樿璐﹀彿瀵嗙爜 `admin` `123456` 璐﹀彿鍦ㄦ暟鎹簱閲� 鍙互鍦ㄩ〉闈慨鏀瑰瘑鐮�** - -> 鍦� `鎵╁睍椤圭洰 -> xxl-job-admin妯″潡` 鍚姩 -> - - -> 闇�淇敼閰嶇疆鏂囦欢鏁版嵁搴撹繛鎺ュ湴鍧�(**娉ㄦ剰: 姝ゅ涓簒xl-job-admin鏈嶅姟鐨勯厤缃枃浠�**) -> - - -> 涔熷彲閰嶇疆閭欢鍙戦�� -> - - -### 鍓嶇淇敼浠诲姟璋冨害涓績璁块棶璺緞 -`dev`鐜 榛樿浣跨敤 `.env.development` 閰嶇疆鏂囦欢鍐呭湴鍧� - - - -`prod`鐜 浣跨敤 `.env.production` 鏈満璺敱 - - - -鏁呰�� `prod` 鐜鍙渶鏇存敼 `nginx` 鍙嶅悜浠g悊璺緞鍗冲彲 - - diff --git a/ruoyi-admin/src/main/resources/static/static/css/vue.css b/ruoyi-admin/src/main/resources/static/static/css/vue.css deleted file mode 100644 index 847f385..0000000 --- a/ruoyi-admin/src/main/resources/static/static/css/vue.css +++ /dev/null @@ -1 +0,0 @@ -@import url("https://fonts.googleapis.com/css?family=Roboto+Mono|Source+Sans+Pro:300,400,600");*{-webkit-font-smoothing:antialiased;-webkit-overflow-scrolling:touch;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-text-size-adjust:none;-webkit-touch-callout:none;box-sizing:border-box}body:not(.ready){overflow:hidden}body:not(.ready) .app-nav,body:not(.ready)>nav,body:not(.ready) [data-cloak]{display:none}div#app{font-size:30px;font-weight:lighter;margin:40vh auto;text-align:center}div#app:empty:before{content:"Loading..."}img.emoji{height:1.2em}img.emoji,span.emoji{vertical-align:middle}span.emoji{font-family:Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-size:1.2em}.progress{background-color:#42b983;background-color:var(--theme-color,#42b983);height:2px;left:0;position:fixed;right:0;top:0;transition:width .2s,opacity .4s;width:0;z-index:999999}.search .search-keyword,.search a:hover{color:#42b983;color:var(--theme-color,#42b983)}.search .search-keyword{font-style:normal;font-weight:700}body,html{height:100%}body{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:#34495e;font-family:Source Sans Pro,Helvetica Neue,Arial,sans-serif;font-size:15px;letter-spacing:0;margin:0;overflow-x:hidden}img{max-width:100%}a[disabled]{cursor:not-allowed;opacity:.6}kbd{border:1px solid #ccc;border-radius:3px;display:inline-block;font-size:12px!important;line-height:12px;margin-bottom:3px;padding:3px 5px;vertical-align:middle}li input[type=checkbox]{margin:0 .2em .25em 0;vertical-align:middle}.app-nav{margin:25px 60px 0 0;position:absolute;right:0;text-align:right;z-index:10}.app-nav.no-badge{margin-right:25px}.app-nav p{margin:0}.app-nav>a{margin:0 1rem;padding:5px 0}.app-nav li,.app-nav ul{display:inline-block;list-style:none;margin:0}.app-nav a{color:inherit;font-size:16px;text-decoration:none;transition:color .3s}.app-nav a.active,.app-nav a:hover{color:#42b983;color:var(--theme-color,#42b983)}.app-nav a.active{border-bottom:2px solid #42b983;border-bottom:2px solid var(--theme-color,#42b983)}.app-nav li{display:inline-block;margin:0 1rem;padding:5px 0;position:relative;cursor:pointer}.app-nav li ul{background-color:#fff;border:1px solid;border-color:#ddd #ddd #ccc;border-radius:4px;box-sizing:border-box;display:none;max-height:calc(100vh - 61px);overflow-y:auto;padding:10px 0;position:absolute;right:-15px;text-align:left;top:100%;white-space:nowrap}.app-nav li ul li{display:block;font-size:14px;line-height:1rem;margin:8px 14px;white-space:nowrap}.app-nav li ul a{display:block;font-size:inherit;margin:0;padding:0}.app-nav li ul a.active{border-bottom:0}.app-nav li:hover ul{display:block}.github-corner{border-bottom:0;position:fixed;right:0;text-decoration:none;top:0;z-index:1}.github-corner:hover .octo-arm{animation:octocat-wave .56s ease-in-out}.github-corner svg{color:#fff;fill:#42b983;fill:var(--theme-color,#42b983);height:80px;width:80px}main{display:block;position:relative;width:100vw;height:100%;z-index:0}main.hidden{display:none}.anchor{display:inline-block;text-decoration:none;transition:all .3s}.anchor span{color:#34495e}.anchor:hover{text-decoration:underline}.sidebar{border-right:1px solid rgba(0,0,0,.07);overflow-y:auto;padding:40px 0 0;position:absolute;top:0;bottom:0;left:0;transition:transform .25s ease-out;width:300px;z-index:20}.sidebar>h1{margin:0 auto 1rem;font-size:1.5rem;font-weight:300;text-align:center}.sidebar>h1 a{color:inherit;text-decoration:none}.sidebar>h1 .app-nav{display:block;position:static}.sidebar .sidebar-nav{line-height:2em;padding-bottom:40px}.sidebar li.collapse .app-sub-sidebar{display:none}.sidebar ul{margin:0 0 0 15px;padding:0}.sidebar li>p{font-weight:700;margin:0}.sidebar ul,.sidebar ul li{list-style:none}.sidebar ul li a{border-bottom:none;display:block}.sidebar ul li ul{padding-left:20px}.sidebar::-webkit-scrollbar{width:4px}.sidebar::-webkit-scrollbar-thumb{background:transparent;border-radius:4px}.sidebar:hover::-webkit-scrollbar-thumb{background:hsla(0,0%,53.3%,.4)}.sidebar:hover::-webkit-scrollbar-track{background:hsla(0,0%,53.3%,.1)}.sidebar-toggle{background-color:transparent;background-color:hsla(0,0%,100%,.8);border:0;outline:none;padding:10px;position:absolute;bottom:0;left:0;text-align:center;transition:opacity .3s;width:284px;z-index:30;cursor:pointer}.sidebar-toggle:hover .sidebar-toggle-button{opacity:.4}.sidebar-toggle span{background-color:#42b983;background-color:var(--theme-color,#42b983);display:block;margin-bottom:4px;width:16px;height:2px}body.sticky .sidebar,body.sticky .sidebar-toggle{position:fixed}.content{padding-top:60px;position:absolute;top:0;right:0;bottom:0;left:300px;transition:left .25s ease}.markdown-section{margin:0 auto;max-width:80%;padding:30px 15px 40px;position:relative}.markdown-section>*{box-sizing:border-box;font-size:inherit}.markdown-section>:first-child{margin-top:0!important}.markdown-section hr{border:none;border-bottom:1px solid #eee;margin:2em 0}.markdown-section iframe{border:1px solid #eee;width:1px;min-width:100%}.markdown-section table{border-collapse:collapse;border-spacing:0;display:block;margin-bottom:1rem;overflow:auto;width:100%}.markdown-section th{font-weight:700}.markdown-section td,.markdown-section th{border:1px solid #ddd;padding:6px 13px}.markdown-section tr{border-top:1px solid #ccc}.markdown-section p.tip,.markdown-section tr:nth-child(2n){background-color:#f8f8f8}.markdown-section p.tip{border-bottom-right-radius:2px;border-left:4px solid #f66;border-top-right-radius:2px;margin:2em 0;padding:12px 24px 12px 30px;position:relative}.markdown-section p.tip:before{background-color:#f66;border-radius:100%;color:#fff;content:"!";font-family:Dosis,Source Sans Pro,Helvetica Neue,Arial,sans-serif;font-size:14px;font-weight:700;left:-12px;line-height:20px;position:absolute;height:20px;width:20px;text-align:center;top:14px}.markdown-section p.tip code{background-color:#efefef}.markdown-section p.tip em{color:#34495e}.markdown-section p.warn{background:rgba(66,185,131,.1);border-radius:2px;padding:1rem}.markdown-section ul.task-list>li{list-style-type:none}body.close .sidebar{transform:translateX(-300px)}body.close .sidebar-toggle{width:auto}body.close .content{left:0}@media print{.app-nav,.github-corner,.sidebar,.sidebar-toggle{display:none}}@media screen and (max-width:768px){.github-corner,.sidebar,.sidebar-toggle{position:fixed}.app-nav{margin-top:16px}.app-nav li ul{top:30px}main{height:auto;min-height:100vh;overflow-x:hidden}.sidebar{left:-300px;transition:transform .25s ease-out}.content{left:0;max-width:100vw;position:static;padding-top:20px;transition:transform .25s ease}.app-nav,.github-corner{transition:transform .25s ease-out}.sidebar-toggle{background-color:transparent;width:auto;padding:30px 30px 10px 10px}body.close .sidebar{transform:translateX(300px)}body.close .sidebar-toggle{background-color:hsla(0,0%,100%,.8);transition:background-color 1s;width:284px;padding:10px}body.close .content{transform:translateX(300px)}body.close .app-nav,body.close .github-corner{display:none}.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave .56s ease-in-out}}@keyframes octocat-wave{0%,to{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}section.cover{position:relative;align-items:center;background-position:50%;background-repeat:no-repeat;background-size:cover;min-height:100vh;width:100%;display:none}section.cover.show{display:flex}section.cover.has-mask .mask{background-color:#fff;opacity:.8;position:absolute;top:0;bottom:0;width:100%}section.cover .cover-main{flex:1;margin:0 16px;text-align:center;position:relative}section.cover a{color:inherit}section.cover a,section.cover a:hover{text-decoration:none}section.cover p{line-height:1.5rem;margin:1em 0}section.cover h1{color:inherit;font-size:2.5rem;font-weight:300;margin:.625rem 0 2.5rem;position:relative;text-align:center}section.cover h1 a{display:block}section.cover h1 small{bottom:-.4375rem;font-size:1rem;position:absolute}section.cover blockquote{font-size:1.5rem;text-align:center}section.cover ul{line-height:1.8;list-style-type:none;margin:1em auto;max-width:500px;padding:0}section.cover .cover-main>p:last-child a{border-radius:2rem;border:1px solid #42b983;border-color:var(--theme-color,#42b983);box-sizing:border-box;color:#42b983;color:var(--theme-color,#42b983);display:inline-block;font-size:1.05rem;letter-spacing:.1rem;margin:.5rem 1rem;padding:.75em 2rem;text-decoration:none;transition:all .15s ease}section.cover .cover-main>p:last-child a:last-child{background-color:#42b983;background-color:var(--theme-color,#42b983);color:#fff}section.cover .cover-main>p:last-child a:last-child:hover{color:inherit;opacity:.8}section.cover .cover-main>p:last-child a:hover{color:inherit}section.cover blockquote>p>a{border-bottom:2px solid #42b983;border-bottom:2px solid var(--theme-color,#42b983);transition:color .3s}section.cover blockquote>p>a:hover{color:#42b983;color:var(--theme-color,#42b983)}.sidebar,body{background-color:#fff}.sidebar{color:#364149}.sidebar li{margin:6px 0}.sidebar ul li a{color:#505d6b;font-size:14px;font-weight:400;overflow:hidden;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.sidebar ul li a:hover{text-decoration:underline}.sidebar ul li ul{padding:0}.sidebar ul li.active>a{border-right:2px solid;color:#42b983;color:var(--theme-color,#42b983);font-weight:600}.app-sub-sidebar li:before{content:"-";padding-right:4px;float:left}.markdown-section h1,.markdown-section h2,.markdown-section h3,.markdown-section h4,.markdown-section strong{color:#2c3e50;font-weight:600}.markdown-section a{color:#42b983;color:var(--theme-color,#42b983);font-weight:600}.markdown-section h1{font-size:2rem;margin:0 0 1rem}.markdown-section h2{font-size:1.75rem;margin:45px 0 .8rem}.markdown-section h3{font-size:1.5rem;margin:40px 0 .6rem}.markdown-section h4{font-size:1.25rem}.markdown-section h5{font-size:1rem}.markdown-section h6{color:#777;font-size:1rem}.markdown-section figure,.markdown-section p{margin:1.2em 0}.markdown-section ol,.markdown-section p,.markdown-section ul{line-height:1.6rem;word-spacing:.05rem}.markdown-section ol,.markdown-section ul{padding-left:1.5rem}.markdown-section blockquote{border-left:4px solid #42b983;border-left:4px solid var(--theme-color,#42b983);color:#858585;margin:2em 0;padding-left:20px}.markdown-section blockquote p{font-weight:600;margin-left:0}.markdown-section iframe{margin:1em 0}.markdown-section em{color:#7f8c8d}.markdown-section code,.markdown-section output:after,.markdown-section pre{font-family:Roboto Mono,Monaco,courier,monospace}.markdown-section code,.markdown-section pre{background-color:#f8f8f8}.markdown-section output,.markdown-section pre{margin:1.2em 0;position:relative}.markdown-section output,.markdown-section pre>code{border-radius:2px;display:block}.markdown-section output:after,.markdown-section pre>code{-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial}.markdown-section code{border-radius:2px;color:#e96900;margin:0 2px;padding:3px 5px;white-space:pre-wrap}.markdown-section>:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6) code{font-size:.8rem}.markdown-section pre{padding:0 1.4rem;line-height:1.5rem;overflow:auto;word-wrap:normal}.markdown-section pre>code{color:#525252;font-size:.8rem;padding:2.2em 5px;line-height:inherit;margin:0 2px;max-width:inherit;overflow:inherit;white-space:inherit}.markdown-section output{padding:1.7rem 1.4rem;border:1px dotted #ccc}.markdown-section output>:first-child{margin-top:0}.markdown-section output>:last-child{margin-bottom:0}.markdown-section code:after,.markdown-section code:before,.markdown-section output:after,.markdown-section output:before{letter-spacing:.05rem}.markdown-section output:after,.markdown-section pre:after{color:#ccc;font-size:.6rem;font-weight:600;height:15px;line-height:15px;padding:5px 10px 0;position:absolute;right:0;text-align:right;top:0;content:attr(data-lang)}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#8e908c}.token.namespace{opacity:.7}.token.boolean,.token.number{color:#c76b29}.token.punctuation{color:#525252}.token.property{color:#c08b30}.token.tag{color:#2973b7}.token.string{color:#42b983;color:var(--theme-color,#42b983)}.token.selector{color:#6679cc}.token.attr-name{color:#2973b7}.language-css .token.string,.style .token.string,.token.entity,.token.url{color:#22a2c9}.token.attr-value,.token.control,.token.directive,.token.unit{color:#42b983;color:var(--theme-color,#42b983)}.token.function,.token.keyword{color:#e96900}.token.atrule,.token.regex,.token.statement{color:#22a2c9}.token.placeholder,.token.variable{color:#3d8fd1}.token.deleted{text-decoration:line-through}.token.inserted{border-bottom:1px dotted #202746;text-decoration:none}.token.italic{font-style:italic}.token.bold,.token.important{font-weight:700}.token.important{color:#c94922}.token.entity{cursor:help}code .token{-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;min-height:1.5rem;position:relative;left:auto} \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/static/image/favicon.ico b/ruoyi-admin/src/main/resources/static/static/image/favicon.ico deleted file mode 100644 index 3f919d8..0000000 --- a/ruoyi-admin/src/main/resources/static/static/image/favicon.ico +++ /dev/null Binary files differ diff --git a/ruoyi-admin/src/main/resources/static/static/image/logo.png b/ruoyi-admin/src/main/resources/static/static/image/logo.png deleted file mode 100644 index 306851c..0000000 --- a/ruoyi-admin/src/main/resources/static/static/image/logo.png +++ /dev/null Binary files differ diff --git a/ruoyi-admin/src/main/resources/static/static/image/ruoyicloudplus.png b/ruoyi-admin/src/main/resources/static/static/image/ruoyicloudplus.png deleted file mode 100644 index cc697e6..0000000 --- a/ruoyi-admin/src/main/resources/static/static/image/ruoyicloudplus.png +++ /dev/null Binary files differ diff --git a/ruoyi-admin/src/main/resources/static/static/image/ruoyivueplus.png b/ruoyi-admin/src/main/resources/static/static/image/ruoyivueplus.png deleted file mode 100644 index d0eba10..0000000 --- a/ruoyi-admin/src/main/resources/static/static/image/ruoyivueplus.png +++ /dev/null Binary files differ diff --git a/ruoyi-admin/src/main/resources/static/static/js/docsify-copy-code.min.js b/ruoyi-admin/src/main/resources/static/static/js/docsify-copy-code.min.js deleted file mode 100644 index 02a83a3..0000000 --- a/ruoyi-admin/src/main/resources/static/static/js/docsify-copy-code.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * docsify-copy-code - * v3.0.0 - * https://github.com/jperasmus/docsify-copy-code - * (c) 2017-2023 JP Erasmus <jperasmus11@gmail.com> - * MIT license - */ -!function(){"use strict";function e(o){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(o)}!function(e,o){void 0===o&&(o={});var t=o.insertAt;if(e&&"undefined"!=typeof document){var n=document.head||document.getElementsByTagName("head")[0],c=document.createElement("style");c.type="text/css","top"===t&&n.firstChild?n.insertBefore(c,n.firstChild):n.appendChild(c),c.styleSheet?c.styleSheet.cssText=e:c.appendChild(document.createTextNode(e))}}(".docsify-copy-code-button,.docsify-copy-code-button>span{cursor:pointer;transition:all .25s ease}.docsify-copy-code-button{background:grey;background:var(--theme-color,grey);border:0;border-radius:0;color:#fff;font-size:1em;opacity:0;outline:0;overflow:visible;padding:.65em .8em;position:absolute;right:0;top:0;z-index:1}.docsify-copy-code-button>span{background:inherit;border-radius:3px;pointer-events:none}.docsify-copy-code-button>.error,.docsify-copy-code-button>.success{font-size:.825em;opacity:0;padding:.5em .65em;position:absolute;right:0;top:50%;transform:translateY(-50%);z-index:-100}.docsify-copy-code-button.error>.error,.docsify-copy-code-button.success>.success{opacity:1;right:100%;transform:translate(-25%,-50%)}.docsify-copy-code-button:focus,pre:hover .docsify-copy-code-button{opacity:1}.docsify-copy-code-button>[aria-live]{height:1px;left:-10000px;overflow:hidden;position:absolute;top:auto;width:1px}"),document.querySelector('link[href*="docsify-copy-code"]')&&console.warn("[Deprecation] Link to external docsify-copy-code stylesheet is no longer necessary."),window.DocsifyCopyCodePlugin={init:function(){return function(e,o){e.ready((function(){console.warn("[Deprecation] Manually initializing docsify-copy-code using window.DocsifyCopyCodePlugin.init() is no longer necessary.")}))}}},window.$docsify=window.$docsify||{},window.$docsify.plugins=[function(o,t){var n={buttonText:"Copy to clipboard",errorText:"Error",successText:"Copied"};o.doneEach((function(){var o=Array.from(document.querySelectorAll("pre[data-lang]"));t.config.copyCode&&Object.keys(n).forEach((function(o){var c=t.config.copyCode[o];"string"==typeof c?n[o]=c:"object"===e(c)&&Object.keys(c).some((function(e){var t=location.href.indexOf(e)>-1;return n[o]=t?c[e]:n[o],t}))}));var c=['<button class="docsify-copy-code-button">','<span class="label">'.concat(n.buttonText,"</span>"),'<span class="error" aria-hidden="hidden">'.concat(n.errorText,"</span>"),'<span class="success" aria-hidden="hidden">'.concat(n.successText,"</span>"),'<span aria-live="polite"></span>',"</button>"].join("");o.forEach((function(e){e.insertAdjacentHTML("beforeend",c)}))})),o.mounted((function(){var e=document.querySelector(".content");e&&e.addEventListener("click",(function(e){if(e.target.classList.contains("docsify-copy-code-button")){var o="BUTTON"===e.target.tagName?e.target:e.target.parentNode,t=document.createRange(),c=o.parentNode.querySelector("code"),i=o.querySelector("[aria-live]"),r=window.getSelection();t.selectNode(c),r&&(r.removeAllRanges(),r.addRange(t));try{document.execCommand("copy")&&(o.classList.add("success"),i.innerText=n.successText,setTimeout((function(){o.classList.remove("success"),i.innerText=""}),1e3))}catch(e){console.error("docsify-copy-code: ".concat(e)),o.classList.add("error"),i.innerText=n.errorText,setTimeout((function(){o.classList.remove("error"),i.innerText=""}),1e3)}(r=window.getSelection())&&("function"==typeof r.removeRange?r.removeRange(t):"function"==typeof r.removeAllRanges&&r.removeAllRanges())}}))}))}].concat(window.$docsify.plugins||[])}(); -//# sourceMappingURL=docsify-copy-code.min.js.map \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/static/js/docsify-footer.min.js b/ruoyi-admin/src/main/resources/static/static/js/docsify-footer.min.js deleted file mode 100644 index b426211..0000000 --- a/ruoyi-admin/src/main/resources/static/static/js/docsify-footer.min.js +++ /dev/null @@ -1,4 +0,0 @@ -parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;c<t.length;c++)try{f(t[c])}catch(e){i||(i=e)}if(t.length){var l=f(t[t.length-1]);"object"==typeof exports&&"undefined"!=typeof module?module.exports=l:"function"==typeof define&&define.amd?define(function(){return l}):n&&(this[n]=l)}if(parcelRequire=f,i)throw i;return f}({"WDEB":[function(require,module,exports) { - !function(e,o,t){o.plugins=[].concat(function(o,t){var n=t.config,c=n.loadFooter,r=n.ext,i=n.requestHeaders;if(c){var f=!0===c?"_footer"+r:c;o.mounted(function(o){var n=t.router.getFile(f),c=e.dom.getNode("article");e.get(n,!1,i).then(function(o){var n=t.compiler.compile(o),r=e.dom.create("footer",n);e.dom.appendTo(c,r),t._lifecycle.afterEach(function(e){return e+n})})})}},o.plugins)}(Docsify,$docsify); - },{}]},{},["WDEB"], null) -//# sourceMappingURL=/docsify-footer.min.js.map \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/static/js/docsify-pagination.min.js b/ruoyi-admin/src/main/resources/static/static/js/docsify-pagination.min.js deleted file mode 100644 index 83a77fa..0000000 --- a/ruoyi-admin/src/main/resources/static/static/js/docsify-pagination.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(t){("object"!=typeof exports||"undefined"==typeof module)&&"function"==typeof define&&define.amd?define(t):t()}(function(){"use strict";var i="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function t(t,e){return t(e={exports:{}},e.exports),e.exports}var c=t(function(t,e){function n(t,e){return e.querySelector(t)}(e=t.exports=function(t,e){return n(t,e=e||document)}).all=function(t,e){return(e=e||document).querySelectorAll(t)},e.engine=function(t){if(!t.one)throw new Error(".one callback required");if(t.all)return n=t.one,e.all=t.all,e;throw new Error(".all callback required")}}),e=(c.all,c.engine,t(function(e){var n=eval;try{n("export default global")}catch(t){try{n("export default self")}catch(t){try{e.exports=i}catch(t){try{self.global=self}catch(t){window.global=window}}}}}));try{var a=c}catch(t){a=c}var e=e.Element,e=e&&e.prototype||{},r=e.matches||e.webkitMatchesSelector||e.mozMatchesSelector||e.msMatchesSelector||e.oMatchesSelector,s=function(t,e){if(!t||1!==t.nodeType)return!1;if(r)return r.call(t,e);for(var n=a.all(e,t.parentNode),i=0;i<n.length;++i)if(n[i]==t)return!0;return!1};try{var o=s}catch(t){o=s}var p=function(t,e,n){n=n||document.documentElement;for(;t&&t!==n;){if(o(t,e))return t;t=t.parentNode}return o(t,e)?t:null};e=".docsify-pagination-container{display:flex;flex-wrap:wrap;justify-content:space-between;overflow:hidden;margin:5em 0 1em;border-top:1px solid rgba(0,0,0,.07)}.pagination-item{margin-top:2.5em}.pagination-item a,.pagination-item a:hover{text-decoration:none}.pagination-item a{color:currentColor}.pagination-item a:hover .pagination-item-title{text-decoration:underline}.pagination-item:not(:last-child) a .pagination-item-label,.pagination-item:not(:last-child) a .pagination-item-subtitle,.pagination-item:not(:last-child) a .pagination-item-title{opacity:.3;transition:all .2s}.pagination-item:last-child .pagination-item-label,.pagination-item:not(:last-child) a:hover .pagination-item-label{opacity:.6}.pagination-item:not(:last-child) a:hover .pagination-item-title{opacity:1}.pagination-item-label{font-size:.8em}.pagination-item-label>*{line-height:1;vertical-align:middle}.pagination-item-label svg{height:.8em;width:auto;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1px}.pagination-item--next{margin-left:auto;text-align:right}.pagination-item--next svg{margin-left:.5em}.pagination-item--previous svg{margin-right:.5em}.pagination-item-title{font-size:1.6em}.pagination-item-subtitle{text-transform:uppercase;opacity:.3}",u=(u=void 0===u?{}:u).insertAt,e&&"undefined"!=typeof document&&(n=document.head||document.getElementsByTagName("head")[0],(l=document.createElement("style")).type="text/css","top"===u&&n.firstChild?n.insertBefore(l,n.firstChild):n.appendChild(l),l.styleSheet?l.styleSheet.cssText=e:l.appendChild(document.createTextNode(e)));var n,l,u=function(t,e,n){return e&&f(t.prototype,e),n&&f(t,n),t};function f(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}var d=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n,i=arguments[e];for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(t[n]=i[n])}return t},h="docsify-pagination-container";function g(t){return Array.prototype.slice.call(t)}function m(t){return t.href?t:c("a",t)}function v(t){return t&&"#/README"===t.toUpperCase()?"#/":t}function x(e,t){return 1===arguments.length?function(t){return x(e,t)}:v(decodeURIComponent(t.getAttribute("href").split("?")[0]))===v(decodeURIComponent(e))}u(w,[{key:"toJSON",value:function(){if(this.hyperlink)return{name:this.hyperlink.innerText,href:this.hyperlink.getAttribute("href"),chapterName:this.chapter&&this.chapter.innerText||"",isExternal:"_blank"===this.hyperlink.getAttribute("target")}}}]);var y=w;function w(t){var e;if(!(this instanceof w))throw new TypeError("Cannot call a class as a function");t&&(this.chapter=(e=p(e=t,"div > ul > li"),c("p",e)),this.hyperlink=m(t))}var b=function(){return'<div class="'+h+'"></div>'},k=function(t,e){a=e,r=t.route.path,o={},["previousText","nextText"].forEach(function(n){var i=a[n];"string"==typeof i?o[n]=i:Object.keys(i).some(function(t){var e=r&&-1<r.indexOf(t);return o[n]=e?i[t]:i,e})});var a,r,o,n=o,i=n.previousText,n=n.nextText;return[t.prev&&'\n <div class="pagination-item pagination-item--previous">\n <a href="'+t.prev.href+'" '+(t.prev.isExternal?'target="_blank"':"")+'>\n <div class="pagination-item-label">\n <svg width="10" height="16" viewBox="0 0 10 16" xmlns="http://www.w3.org/2000/svg">\n <polyline fill="none" vector-effect="non-scaling-stroke" points="8,2 2,8 8,14"/>\n </svg>\n <span>'+i+'</span>\n </div>\n <div class="pagination-item-title">'+t.prev.name+"</div>\n ",t.prev&&e.crossChapterText&&'<div class="pagination-item-subtitle">'+t.prev.chapterName+"</div>",t.prev&&"</a>\n </div>\n ",t.next&&'\n <div class="pagination-item pagination-item--next">\n <a href="'+t.next.href+'" '+(t.next.isExternal?'target="_blank"':"")+'>\n <div class="pagination-item-label">\n <span>'+n+'</span>\n <svg width="10" height="16" viewBox="0 0 10 16" xmlns="http://www.w3.org/2000/svg">\n <polyline fill="none" vector-effect="non-scaling-stroke" points="2,2 8,8 2,14"/>\n </svg>\n </div>\n <div class="pagination-item-title">'+t.next.name+"</div>\n ",t.next&&e.crossChapterText&&'<div class="pagination-item-subtitle">'+t.next.chapterName+"</div>",t.next&&"</a>\n </div>\n "].filter(Boolean).join("")};window.$docsify=window.$docsify||{},window.$docsify.plugins=[function(t,e){var n=d({},(e.config,{previousText:"PREVIOUS",nextText:"NEXT",crossChapter:!1,crossChapterText:!1}),e.config.pagination||{});function i(){var t=c("."+h);t&&(t.innerHTML=k(function(t,e){e=e.crossChapter;try{var n=t.router.toURL(t.route.path),i=g(c.all(".sidebar-nav li a")).filter(function(t){return!s(t,".section-link")}),a=i.find(x(n)),r=g((p(a,"ul")||{}).children).filter(function(t){return"LI"===t.tagName.toUpperCase()}),o=e?i.findIndex(x(n)):r.findIndex(function(t){t=m(t);return t&&x(n,t)}),l=e?i:r;return{route:t.route,prev:new y(l[o-1]).toJSON(),next:new y(l[o+1]).toJSON()}}catch(t){return{route:{}}}}(e,n),n))}t.afterEach(function(t){return t+b()}),t.doneEach(i)}].concat(window.$docsify.plugins||[])}); \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/static/js/docsify-scroll-to-top.min.js b/ruoyi-admin/src/main/resources/static/static/js/docsify-scroll-to-top.min.js deleted file mode 100644 index c5ed3ca..0000000 --- a/ruoyi-admin/src/main/resources/static/static/js/docsify-scroll-to-top.min.js +++ /dev/null @@ -1 +0,0 @@ -var CONFIG={auto:true,text:"Top",right:15,bottom:15,offset:500};var install=function(hook,vm){var opts=vm.config.scrollToTop||CONFIG;CONFIG.auto=opts.auto&&typeof opts.auto==="boolean"?opts.auto:CONFIG.auto;CONFIG.text=opts.text&&typeof opts.text==="string"?opts.text:CONFIG.text;CONFIG.right=opts.right&&typeof opts.right==="number"?opts.right:CONFIG.right;CONFIG.bottom=opts.bottom&&typeof opts.bottom==="number"?opts.bottom:CONFIG.bottom;CONFIG.offset=opts.offset&&typeof opts.offset==="number"?opts.offset:CONFIG.offset;var onScroll=function(e){if(!CONFIG.auto){return}var offset=window.document.documentElement.scrollTop;var $scrollBtn=Docsify.dom.find("span.scroll-to-top");$scrollBtn.style.display=offset>=CONFIG.offset?"block":"none"};hook.mounted(function(){var scrollBtn=document.createElement("span");scrollBtn.className="scroll-to-top";scrollBtn.style.display=CONFIG.auto?"none":"block";scrollBtn.style.overflow="hidden";scrollBtn.style.position="fixed";scrollBtn.style.right=CONFIG.right+"px";scrollBtn.style.bottom=CONFIG.bottom+"px";scrollBtn.style.width="50px";scrollBtn.style.height="50px";scrollBtn.style.background="white";scrollBtn.style.color="#666";scrollBtn.style.border="1px solid #ddd";scrollBtn.style.borderRadius="4px";scrollBtn.style.lineHeight="42px";scrollBtn.style.fontSize="16px";scrollBtn.style.textAlign="center";scrollBtn.style.boxShadow="0px 0px 6px #eee";scrollBtn.style.cursor="pointer";var textNode=document.createTextNode(CONFIG.text);scrollBtn.appendChild(textNode);document.body.appendChild(scrollBtn);window.addEventListener("scroll",onScroll);scrollBtn.onclick=function(e){e.stopPropagation();var step=window.scrollY/15;var scroll=function(){window.scrollTo(0,window.scrollY-step);if(window.scrollY>0){setTimeout(scroll,15)}};scroll()}})};$docsify.plugins=[].concat(install,$docsify.plugins); \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/static/js/docsify.min.js b/ruoyi-admin/src/main/resources/static/static/js/docsify.min.js deleted file mode 100644 index 18e85aa..0000000 --- a/ruoyi-admin/src/main/resources/static/static/js/docsify.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(){function c(i){var o=Object.create(null);return function(e){var n=f(e)?e:JSON.stringify(e);return o[n]||(o[n]=i(e))}}var a=c(function(e){return e.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()})}),u=Object.prototype.hasOwnProperty,m=Object.assign||function(e){for(var n=arguments,i=1;i<arguments.length;i++){var o,t=Object(n[i]);for(o in t)u.call(t,o)&&(e[o]=t[o])}return e};function f(e){return"string"==typeof e||"number"==typeof e}function d(){}function o(e){return"function"==typeof e}function g(e){var n=e.match(/^([^:/?#]+:)?(?:\/{2,}([^/?#]*))?([^?#]+)?(\?[^#]*)?(#.*)?/);return"string"==typeof n[1]&&0<n[1].length&&n[1].toLowerCase()!==location.protocol||("string"==typeof n[2]&&0<n[2].length&&n[2].replace(new RegExp(":("+{"http:":80,"https:":443}[location.protocol]+")?$"),"")!==location.host||!!/^\/\\/.test(e))}var s=document.body.clientWidth<=600,t=window.history&&window.history.pushState&&window.history.replaceState&&!navigator.userAgent.match(/((iPod|iPhone|iPad).+\bOS\s+[1-4]\D|WebApps\/.+CFNetwork)/),i={};function l(e,n){if(void 0===n&&(n=!1),"string"==typeof e){if(void 0!==window.Vue)return b(e);e=n?b(e):i[e]||(i[e]=b(e))}return e}var v=document,h=v.body,_=v.head;function b(e,n){return n?e.querySelector(n):v.querySelector(e)}function k(e,n){return[].slice.call(n?e.querySelectorAll(n):v.querySelectorAll(e))}function w(e,n){return e=v.createElement(e),n&&(e.innerHTML=n),e}function r(e,n){return e.appendChild(n)}function y(e,n){return e.insertBefore(n,e.children[0])}function p(e,n,i){o(n)?window.addEventListener(e,n):e.addEventListener(n,i)}function x(e,n,i){o(n)?window.removeEventListener(e,n):e.removeEventListener(n,i)}function S(e,n,i){e&&e.classList[i?n:"toggle"](i||n)}function e(e,n){var i=(n=void 0===n?document:n).readyState;if("complete"===i||"interactive"===i)return setTimeout(e,0);n.addEventListener("DOMContentLoaded",e)}var n=Object.freeze({__proto__:null,getNode:l,$:v,body:h,head:_,find:b,findAll:k,create:w,appendTo:r,before:y,on:p,off:x,toggleClass:S,style:function(e){r(_,w("style",e))},documentReady:e});function A(e,n){return-1!==e.indexOf(n,e.length-n.length)}var $=decodeURIComponent,z=encodeURIComponent;function F(e){var n={};return(e=e.trim().replace(/^(\?|#|&)/,""))&&e.split("&").forEach(function(e){e=e.replace(/\+/g," ").split("=");n[e[0]]=e[1]&&$(e[1])}),n}function E(e,n){void 0===n&&(n=[]);var i,o=[];for(i in e)-1<n.indexOf(i)||o.push(e[i]?(z(i)+"="+z(e[i])).toLowerCase():z(i));return o.length?"?"+o.join("&"):""}var R=c(function(e){return/(:|(\/{2}))/g.test(e)}),T=c(function(e){return e.split(/[?#]/)[0]}),C=c(function(e){if(/\/$/g.test(e))return e;e=e.match(/(\S*\/)[^/]+$/);return e?e[1]:""}),j=c(function(e){return e.replace(/^\/+/,"/").replace(/([^:])\/{2,}/g,"$1/")}),L=c(function(e){for(var n=e.replace(/^\//,"").split("/"),i=[],o=0,t=n.length;o<t;o++){var a=n[o];".."===a?i.pop():"."!==a&&i.push(a)}return"/"+i.join("/")});function O(e){return e.split("/").filter(function(e){return-1===e.indexOf("#")}).join("/")}function q(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return j(e.map(O).join("/"))}var P=c(function(e){return e.replace("#","?id=")}),M={};function I(e){this.config=e}function N(e){var n=location.href.indexOf("#");location.replace(location.href.slice(0,0<=n?n:0)+"#"+e)}I.prototype.getBasePath=function(){return this.config.basePath},I.prototype.getFile=function(e,n){void 0===e&&(e=this.getCurrentPath());var i,o,t=this.config,a=this.getBasePath(),r="string"==typeof t.ext?t.ext:".md";return e=t.alias?function e(n,i,o){var t=Object.keys(i).filter(function(e){return(M[e]||(M[e]=new RegExp("^"+e+"$"))).test(n)&&n!==o})[0];return t?e(n.replace(M[t],i[t]),i,n):n}(e,t.alias):e,i=e,o=r,e=(e=new RegExp("\\.("+o.replace(/^\./,"")+"|html)$","g").test(i)?i:/\/$/g.test(i)?i+"README"+o:""+i+o)==="/README"+r&&t.homepage||e,e=R(e)?e:q(a,e),e=n?e.replace(new RegExp("^"+a),""):e},I.prototype.onchange=function(e){(e=void 0===e?d:e)()},I.prototype.getCurrentPath=function(){},I.prototype.normalize=function(){},I.prototype.parse=function(){},I.prototype.toURL=function(e,n,i){var o=i&&"#"===e[0],t=this.parse(P(e));if(t.query=m({},t.query,n),e=(e=t.path+E(t.query)).replace(/\.md(\?)|\.md$/,"$1"),o&&(e=(0<(o=i.indexOf("?"))?i.substring(0,o):i)+e),this.config.relativePath&&0!==e.indexOf("/")){i=i.substring(0,i.lastIndexOf("/")+1);return j(L(i+e))}return j("/"+e)};var H=function(o){function e(e){o.call(this,e),this.mode="hash"}return o&&(e.__proto__=o),((e.prototype=Object.create(o&&o.prototype)).constructor=e).prototype.getBasePath=function(){var e=window.location.pathname||"",n=this.config.basePath,e=A(e,".html")?e+"#/"+n:e+"/"+n;return/^(\/|https?:)/g.test(n)?n:j(e)},e.prototype.getCurrentPath=function(){var e=location.href,n=e.indexOf("#");return-1===n?"":e.slice(n+1)},e.prototype.onchange=function(i){void 0===i&&(i=d);var o=!1;p("click",function(e){e="A"===e.target.tagName?e.target:e.target.parentNode;e&&"A"===e.tagName&&!g(e.href)&&(o=!0)}),p("hashchange",function(e){var n=o?"navigate":"history";o=!1,i({event:e,source:n})})},e.prototype.normalize=function(){var e=this.getCurrentPath();if("/"===(e=P(e)).charAt(0))return N(e);N("/"+e)},e.prototype.parse=function(e){var n="",i=(e=void 0===e?location.href:e).indexOf("#"),i=(e=0<=i?e.slice(i+1):e).indexOf("?");return 0<=i&&(n=e.slice(i+1),e=e.slice(0,i)),{path:e,file:this.getFile(e,!0),query:F(n)}},e.prototype.toURL=function(e,n,i){return"#"+o.prototype.toURL.call(this,e,n,i)},e}(I),D=function(n){function e(e){n.call(this,e),this.mode="history"}return n&&(e.__proto__=n),((e.prototype=Object.create(n&&n.prototype)).constructor=e).prototype.getCurrentPath=function(){var e=this.getBasePath(),n=window.location.pathname;return((n=e&&0===n.indexOf(e)?n.slice(e.length):n)||"/")+window.location.search+window.location.hash},e.prototype.onchange=function(i){void 0===i&&(i=d),p("click",function(e){var n="A"===e.target.tagName?e.target:e.target.parentNode;n&&"A"===n.tagName&&!g(n.href)&&(e.preventDefault(),n=n.href,window.history.pushState({key:n},"",n),i({event:e,source:"navigate"}))}),p("popstate",function(e){i({event:e,source:"history"})})},e.prototype.parse=function(e){var n="",i=(e=void 0===e?location.href:e).indexOf("?");0<=i&&(n=e.slice(i+1),e=e.slice(0,i));var o=q(location.origin),i=e.indexOf(o);return{path:e=-1<i?e.slice(i+o.length):e,file:this.getFile(e),query:F(n)}},e}(I),U={};var Z,B,V=/([^{]*?)\w(?=\})/g,Y={YYYY:"getFullYear",YY:"getYear",MM:function(e){return e.getMonth()+1},DD:"getDate",HH:"getHours",mm:"getMinutes",ss:"getSeconds",fff:"getMilliseconds"};function G(e){var n,i=e.loaded,o=e.total,t=e.step;Z||((e=w("div")).classList.add("progress"),r(h,e),Z=e),n=t?80<(n=parseInt(Z.style.width||0,10)+t)?80:n:Math.floor(i/o*100),Z.style.opacity=1,Z.style.width=95<=n?"100%":n+"%",95<=n&&(clearTimeout(B),B=setTimeout(function(e){Z.style.opacity=0,Z.style.width="0%"},200))}var W={};function X(t,e,n){void 0===e&&(e=!1),void 0===n&&(n={});function a(){r.addEventListener.apply(r,arguments)}var i,r=new XMLHttpRequest,o=W[t];if(o)return{then:function(e){return e(o.content,o.opt)},abort:d};for(i in r.open("GET",t),n)u.call(n,i)&&r.setRequestHeader(i,n[i]);return r.send(),{then:function(n,i){var o;void 0===i&&(i=d),e&&(o=setInterval(function(e){return G({step:Math.floor(5*Math.random()+1)})},500),a("progress",G),a("loadend",function(e){G(e),clearInterval(o)})),a("error",i),a("load",function(e){var e=e.target;400<=e.status?i(e):(e=W[t]={content:e.response,opt:{updatedAt:r.getResponseHeader("last-modified")}},n(e.content,e.opt))})},abort:function(e){return 4!==r.readyState&&r.abort()}}}function Q(e,n){e.innerHTML=e.innerHTML.replace(/var\(\s*--theme-color.*?\)/g,n)}var J=v.title;function K(){var e,n=l("section.cover");n&&(e=n.getBoundingClientRect().height,window.pageYOffset>=e||n.classList.contains("hidden")?S(h,"add","sticky"):S(h,"remove","sticky"))}function ee(e,n,o,i){var t=[];null!=(n=l(n))&&(t=k(n,"a"));var a,r=decodeURI(e.toURL(e.getCurrentPath()));return t.sort(function(e,n){return n.href.length-e.href.length}).forEach(function(e){var n=decodeURI(e.getAttribute("href")),i=o?e.parentNode:e;e.title=e.title||e.innerText,0!==r.indexOf(n)||a?S(i,"remove","active"):(a=e,S(i,"add","active"))}),i&&(v.title=a?a.title||a.innerText+" - "+J:J),a}function ne(e,n){for(var i=0;i<n.length;i++){var o=n[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}var ie=(function(e,n,i){return n&&ne(e.prototype,n),i&&ne(e,i),e}(oe,[{key:"getIntermediateValue",value:function(e){return this.decimal?e:Math.round(e)}},{key:"getFinalValue",value:function(){return this.end}}]),oe);function oe(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};!function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}(this,oe),this.start=e.start,this.end=e.end,this.decimal=e.decimal}function te(e,n){for(var i=0;i<n.length;i++){var o=n[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}var ae=(function(e,n,i){return n&&te(e.prototype,n),i&&te(e,i),e}(re,[{key:"begin",value:function(){return this.isRunning||this.next===this.end||(this.frame=window.requestAnimationFrame(this._tick.bind(this))),this}},{key:"stop",value:function(){return window.cancelAnimationFrame(this.frame),this.isRunning=!1,this.frame=null,this.timeStart=null,this.next=null,this}},{key:"on",value:function(e,n){return this.events[e]=this.events[e]||[],this.events[e].push(n),this}},{key:"_emit",value:function(e,n){var i=this,e=this.events[e];e&&e.forEach(function(e){return e.call(i,n)})}},{key:"_tick",value:function(e){this.isRunning=!0;var n=this.next||this.start;this.timeStart||(this.timeStart=e),this.timeElapsed=e-this.timeStart,this.next=this.ease(this.timeElapsed,this.start,this.end-this.start,this.duration),this._shouldTick(n)?(this._emit("tick",this.tweener.getIntermediateValue(this.next)),this.frame=window.requestAnimationFrame(this._tick.bind(this))):(this._emit("tick",this.tweener.getFinalValue()),this._emit("done",null))}},{key:"_shouldTick",value:function(e){return{up:this.next<this.end&&e<=this.next,down:this.next>this.end&&e>=this.next}[this.direction]}},{key:"_defaultEase",value:function(e,n,i,o){return(e/=o/2)<1?i/2*e*e+n:-i/2*(--e*(e-2)-1)+n}}]),re);function re(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};!function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}(this,re),this.duration=e.duration||1e3,this.ease=e.easing||this._defaultEase,this.tweener=e.tweener||new ie(e),this.start=this.tweener.start,this.end=this.tweener.end,this.frame=null,this.next=null,this.isRunning=!1,this.events={},this.direction=this.start<this.end?"up":"down"}var ce=document.currentScript;function ue(e){var n,i=m({auto2top:!1,autoHeader:!1,basePath:"",catchPluginErrors:!0,cornerExternalLinkTarget:"_blank",coverpage:"",el:"#app",executeScript:null,ext:".md",externalLinkRel:"noopener",externalLinkTarget:"_blank",formatUpdated:"",ga:"",homepage:"README.md",loadNavbar:null,loadSidebar:null,maxLevel:6,mergeNavbar:!1,name:"",nameLink:window.location.pathname,nativeEmoji:!1,noCompileLinks:[],noEmoji:!1,notFoundPage:!0,relativePath:!1,repo:"",routes:{},routerMode:"hash",subMaxLevel:0,themeColor:"",topMargin:0},"function"==typeof window.$docsify?window.$docsify(e):window.$docsify),o=ce||[].slice.call(document.getElementsByTagName("script")).filter(function(e){return/docsify\./.test(e.src)})[0];if(o)for(var t in i)!u.call(i,t)||f(n=o.getAttribute("data-"+a(t)))&&(i[t]=""===n||n);return!0===i.loadSidebar&&(i.loadSidebar="_sidebar"+i.ext),!0===i.loadNavbar&&(i.loadNavbar="_navbar"+i.ext),!0===i.coverpage&&(i.coverpage="_coverpage"+i.ext),!0===i.repo&&(i.repo=""),!0===i.name&&(i.name=""),window.$docsify=i}var fe={},pe=!1,de=null,ge=!0,se=0;function le(e){if(ge){for(var n,i=l(".sidebar"),o=k(".anchor"),t=b(i,".sidebar-nav"),a=b(i,"li.active"),r=document.documentElement,c=(r&&r.scrollTop||document.body.scrollTop)-se,u=0,f=o.length;u<f;u+=1){var p=o[u];if(p.offsetTop>c){n=n||p;break}n=p}!n||(r=fe[ve(e,n.getAttribute("data-id"))])&&r!==a&&(a&&a.classList.remove("active"),r.classList.add("active"),a=r,!pe&&h.classList.contains("sticky")&&(e=i.clientHeight,r=a.offsetTop+a.clientHeight+40,a=a.offsetTop>=t.scrollTop&&r<=t.scrollTop+e,i.scrollTop=a?t.scrollTop:+r<e?0:r-e))}}function ve(e,n){return decodeURIComponent(e)+"?id="+decodeURIComponent(n)}function he(e,n){var i,o;n&&(o=ue().topMargin,(i=b("#"+n))&&(i=i,void 0===(o=o)&&(o=0),de&&de.stop(),ge=!1,de=new ae({start:window.pageYOffset,end:Math.round(i.getBoundingClientRect().top)+window.pageYOffset-o,duration:500}).on("tick",function(e){return window.scrollTo(0,e)}).on("done",function(){ge=!0,de=null}).begin()),e=fe[ve(e,n)],(n=b(l(".sidebar"),"li.active"))&&n.classList.remove("active"),e&&e.classList.add("active"))}var _e=v.scrollingElement||v.documentElement;var me="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function be(e,n){return e(n={exports:{}},n.exports),n.exports}function ke(e){return $e[e]}var we=be(function(n){function e(){return{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}n.exports={defaults:e(),getDefaults:e,changeDefaults:function(e){n.exports.defaults=e}}}),ye=(we.defaults,we.getDefaults,we.changeDefaults,/[&<>"']/),xe=/[&<>"']/g,Se=/[<>"']|&(?!#?\w+;)/,Ae=/[<>"']|&(?!#?\w+;)/g,$e={"&":"&","<":"<",">":">",'"':""","'":"'"};var ze=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function Fe(e){return e.replace(ze,function(e,n){return"colon"===(n=n.toLowerCase())?":":"#"===n.charAt(0)?"x"===n.charAt(1)?String.fromCharCode(parseInt(n.substring(2),16)):String.fromCharCode(+n.substring(1)):""})}var Ee=/(^|[^\[])\^/g;var Re=/[^\w:]/g,Te=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;var Ce={},je=/^[^:]+:\/*[^/]*$/,Le=/^([^:]+:)[\s\S]*$/,Oe=/^([^:]+:\/*[^/]*)[\s\S]*$/;function qe(e,n){Ce[" "+e]||(je.test(e)?Ce[" "+e]=e+"/":Ce[" "+e]=Pe(e,"/",!0));var i=-1===(e=Ce[" "+e]).indexOf(":");return"//"===n.substring(0,2)?i?n:e.replace(Le,"$1")+n:"/"===n.charAt(0)?i?n:e.replace(Oe,"$1")+n:e+n}function Pe(e,n,i){var o=e.length;if(0===o)return"";for(var t=0;t<o;){var a=e.charAt(o-t-1);if(a!==n||i){if(a===n||!i)break;t++}else t++}return e.substr(0,o-t)}var Me=function(e,n){if(n){if(ye.test(e))return e.replace(xe,ke)}else if(Se.test(e))return e.replace(Ae,ke);return e},Ie=Fe,Ne=function(i,e){i=i.source||i,e=e||"";var o={replace:function(e,n){return n=(n=n.source||n).replace(Ee,"$1"),i=i.replace(e,n),o},getRegex:function(){return new RegExp(i,e)}};return o},He=function(e,n,i){if(e){var o;try{o=decodeURIComponent(Fe(i)).replace(Re,"").toLowerCase()}catch(e){return null}if(0===o.indexOf("javascript:")||0===o.indexOf("vbscript:")||0===o.indexOf("data:"))return null}n&&!Te.test(i)&&(i=qe(n,i));try{i=encodeURI(i).replace(/%25/g,"%")}catch(e){return null}return i},De={exec:function(){}},Ue=function(e){for(var n,i,o=arguments,t=1;t<arguments.length;t++)for(i in n=o[t])Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i]);return e},Ze=function(e,n){var i=e.replace(/\|/g,function(e,n,i){for(var o=!1,t=n;0<=--t&&"\\"===i[t];)o=!o;return o?"|":" |"}).split(/ \|/),o=0;if(i.length>n)i.splice(n);else for(;i.length<n;)i.push("");for(;o<i.length;o++)i[o]=i[o].trim().replace(/\\\|/g,"|");return i},Be=Pe,Ve=function(e,n){if(-1===e.indexOf(n[1]))return-1;for(var i=e.length,o=0,t=0;t<i;t++)if("\\"===e[t])t++;else if(e[t]===n[0])o++;else if(e[t]===n[1]&&--o<0)return t;return-1},Ye=function(e){e&&e.sanitize&&!e.silent&&console.warn("marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options")},Ge=function(e,n){if(n<1)return"";for(var i="";1<n;)1&n&&(i+=e),n>>=1,e+=e;return i+e},We=we.defaults,Xe=Be,Qe=Ze,Je=Me,Ke=Ve;function en(e,n,i){var o=n.href,t=n.title?Je(n.title):null,n=e[1].replace(/\\([\[\]])/g,"$1");return"!"!==e[0].charAt(0)?{type:"link",raw:i,href:o,title:t,text:n}:{type:"image",raw:i,href:o,title:t,text:Je(n)}}var nn=function(){function e(e){this.options=e||We}return e.prototype.space=function(e){e=this.rules.block.newline.exec(e);if(e)return 1<e[0].length?{type:"space",raw:e[0]}:{raw:"\n"}},e.prototype.code=function(e,n){e=this.rules.block.code.exec(e);if(e){n=n[n.length-1];if(n&&"paragraph"===n.type)return{raw:e[0],text:e[0].trimRight()};n=e[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:e[0],codeBlockStyle:"indented",text:this.options.pedantic?n:Xe(n,"\n")}}},e.prototype.fences=function(e){var n=this.rules.block.fences.exec(e);if(n){var i=n[0],e=function(e,n){if(null===(e=e.match(/^(\s+)(?:```)/)))return n;var i=e[1];return n.split("\n").map(function(e){var n=e.match(/^\s+/);return null!==n&&n[0].length>=i.length?e.slice(i.length):e}).join("\n")}(i,n[3]||"");return{type:"code",raw:i,lang:n[2]&&n[2].trim(),text:e}}},e.prototype.heading=function(e){var n=this.rules.block.heading.exec(e);if(n){var i=n[2].trim();return/#$/.test(i)&&(e=Xe(i,"#"),!this.options.pedantic&&e&&!/ $/.test(e)||(i=e.trim())),{type:"heading",raw:n[0],depth:n[1].length,text:i}}},e.prototype.nptable=function(e){e=this.rules.block.nptable.exec(e);if(e){var n={type:"table",header:Qe(e[1].replace(/^ *| *\| *$/g,"")),align:e[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:e[3]?e[3].replace(/\n$/,"").split("\n"):[],raw:e[0]};if(n.header.length===n.align.length){for(var i=n.align.length,o=0;o<i;o++)/^ *-+: *$/.test(n.align[o])?n.align[o]="right":/^ *:-+: *$/.test(n.align[o])?n.align[o]="center":/^ *:-+ *$/.test(n.align[o])?n.align[o]="left":n.align[o]=null;for(i=n.cells.length,o=0;o<i;o++)n.cells[o]=Qe(n.cells[o],n.header.length);return n}}},e.prototype.hr=function(e){e=this.rules.block.hr.exec(e);if(e)return{type:"hr",raw:e[0]}},e.prototype.blockquote=function(e){var n=this.rules.block.blockquote.exec(e);if(n){e=n[0].replace(/^ *> ?/gm,"");return{type:"blockquote",raw:n[0],text:e}}},e.prototype.list=function(e){e=this.rules.block.list.exec(e);if(e){for(var n,i,o,t,a,r=e[0],c=e[2],u=1<c.length,f={type:"list",raw:r,ordered:u,start:u?+c.slice(0,-1):"",loose:!1,items:[]},p=e[0].match(this.rules.block.item),d=!1,g=p.length,s=this.rules.block.listItemStart.exec(p[0]),l=0;l<g;l++){if(r=n=p[l],l!==g-1){if(o=this.rules.block.listItemStart.exec(p[l+1]),this.options.pedantic?o[1].length>s[1].length:o[1].length>s[0].length||3<o[1].length){p.splice(l,2,p[l]+"\n"+p[l+1]),l--,g--;continue}(!this.options.pedantic||this.options.smartLists?o[2][o[2].length-1]!==c[c.length-1]:u==(1===o[2].length))&&(i=p.slice(l+1).join("\n"),f.raw=f.raw.substring(0,f.raw.length-i.length),l=g-1),s=o}o=n.length,~(n=n.replace(/^ *([*+-]|\d+[.)]) ?/,"")).indexOf("\n ")&&(o-=n.length,n=this.options.pedantic?n.replace(/^ {1,4}/gm,""):n.replace(new RegExp("^ {1,"+o+"}","gm"),"")),o=d||/\n\n(?!\s*$)/.test(n),l!==g-1&&(d="\n"===n.charAt(n.length-1),o=o||d),o&&(f.loose=!0),this.options.gfm&&(a=void 0,(t=/^\[[ xX]\] /.test(n))&&(a=" "!==n[1],n=n.replace(/^\[[ xX]\] +/,""))),f.items.push({type:"list_item",raw:r,task:t,checked:a,loose:o,text:n})}return f}},e.prototype.html=function(e){e=this.rules.block.html.exec(e);if(e)return{type:this.options.sanitize?"paragraph":"html",raw:e[0],pre:!this.options.sanitizer&&("pre"===e[1]||"script"===e[1]||"style"===e[1]),text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(e[0]):Je(e[0]):e[0]}},e.prototype.def=function(e){e=this.rules.block.def.exec(e);if(e)return e[3]&&(e[3]=e[3].substring(1,e[3].length-1)),{tag:e[1].toLowerCase().replace(/\s+/g," "),raw:e[0],href:e[2],title:e[3]}},e.prototype.table=function(e){e=this.rules.block.table.exec(e);if(e){var n={type:"table",header:Qe(e[1].replace(/^ *| *\| *$/g,"")),align:e[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:e[3]?e[3].replace(/\n$/,"").split("\n"):[]};if(n.header.length===n.align.length){n.raw=e[0];for(var i=n.align.length,o=0;o<i;o++)/^ *-+: *$/.test(n.align[o])?n.align[o]="right":/^ *:-+: *$/.test(n.align[o])?n.align[o]="center":/^ *:-+ *$/.test(n.align[o])?n.align[o]="left":n.align[o]=null;for(i=n.cells.length,o=0;o<i;o++)n.cells[o]=Qe(n.cells[o].replace(/^ *\| *| *\| *$/g,""),n.header.length);return n}}},e.prototype.lheading=function(e){e=this.rules.block.lheading.exec(e);if(e)return{type:"heading",raw:e[0],depth:"="===e[2].charAt(0)?1:2,text:e[1]}},e.prototype.paragraph=function(e){e=this.rules.block.paragraph.exec(e);if(e)return{type:"paragraph",raw:e[0],text:"\n"===e[1].charAt(e[1].length-1)?e[1].slice(0,-1):e[1]}},e.prototype.text=function(e,n){e=this.rules.block.text.exec(e);if(e){n=n[n.length-1];return n&&"text"===n.type?{raw:e[0],text:e[0]}:{type:"text",raw:e[0],text:e[0]}}},e.prototype.escape=function(e){e=this.rules.inline.escape.exec(e);if(e)return{type:"escape",raw:e[0],text:Je(e[1])}},e.prototype.tag=function(e,n,i){e=this.rules.inline.tag.exec(e);if(e)return!n&&/^<a /i.test(e[0])?n=!0:n&&/^<\/a>/i.test(e[0])&&(n=!1),!i&&/^<(pre|code|kbd|script)(\s|>)/i.test(e[0])?i=!0:i&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(e[0])&&(i=!1),{type:this.options.sanitize?"text":"html",raw:e[0],inLink:n,inRawBlock:i,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(e[0]):Je(e[0]):e[0]}},e.prototype.link=function(e){var n=this.rules.inline.link.exec(e);if(n){e=n[2].trim();if(!this.options.pedantic&&/^</.test(e)){if(!/>$/.test(e))return;var i=Xe(e.slice(0,-1),"\\");if((e.length-i.length)%2==0)return}else{var o=Ke(n[2],"()");-1<o&&(t=(0===n[0].indexOf("!")?5:4)+n[1].length+o,n[2]=n[2].substring(0,o),n[0]=n[0].substring(0,t).trim(),n[3]="")}var t,i=n[2],o="";return this.options.pedantic?(t=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(i))&&(i=t[1],o=t[3]):o=n[3]?n[3].slice(1,-1):"",i=i.trim(),en(n,{href:(i=/^</.test(i)?this.options.pedantic&&!/>$/.test(e)?i.slice(1):i.slice(1,-1):i)&&i.replace(this.rules.inline._escapes,"$1"),title:o&&o.replace(this.rules.inline._escapes,"$1")},n[0])}},e.prototype.reflink=function(e,n){if((i=this.rules.inline.reflink.exec(e))||(i=this.rules.inline.nolink.exec(e))){var e=(i[2]||i[1]).replace(/\s+/g," ");if((e=n[e.toLowerCase()])&&e.href)return en(i,e,i[0]);var i=i[0].charAt(0);return{type:"text",raw:i,text:i}}},e.prototype.strong=function(e,n,i){void 0===i&&(i="");var o=this.rules.inline.strong.start.exec(e);if(o&&(!o[1]||o[1]&&(""===i||this.rules.inline.punctuation.exec(i)))){n=n.slice(-1*e.length);var t,a="**"===o[0]?this.rules.inline.strong.endAst:this.rules.inline.strong.endUnd;for(a.lastIndex=0;null!=(o=a.exec(n));)if(t=this.rules.inline.strong.middle.exec(n.slice(0,o.index+3)))return{type:"strong",raw:e.slice(0,t[0].length),text:e.slice(2,t[0].length-2)}}},e.prototype.em=function(e,n,i){void 0===i&&(i="");var o=this.rules.inline.em.start.exec(e);if(o&&(!o[1]||o[1]&&(""===i||this.rules.inline.punctuation.exec(i)))){n=n.slice(-1*e.length);var t,a="*"===o[0]?this.rules.inline.em.endAst:this.rules.inline.em.endUnd;for(a.lastIndex=0;null!=(o=a.exec(n));)if(t=this.rules.inline.em.middle.exec(n.slice(0,o.index+2)))return{type:"em",raw:e.slice(0,t[0].length),text:e.slice(1,t[0].length-1)}}},e.prototype.codespan=function(e){var n=this.rules.inline.code.exec(e);if(n){var i=n[2].replace(/\n/g," "),o=/[^ ]/.test(i),e=/^ /.test(i)&&/ $/.test(i);return o&&e&&(i=i.substring(1,i.length-1)),i=Je(i,!0),{type:"codespan",raw:n[0],text:i}}},e.prototype.br=function(e){e=this.rules.inline.br.exec(e);if(e)return{type:"br",raw:e[0]}},e.prototype.del=function(e){e=this.rules.inline.del.exec(e);if(e)return{type:"del",raw:e[0],text:e[2]}},e.prototype.autolink=function(e,n){e=this.rules.inline.autolink.exec(e);if(e){var i,n="@"===e[2]?"mailto:"+(i=Je(this.options.mangle?n(e[1]):e[1])):i=Je(e[1]);return{type:"link",raw:e[0],text:i,href:n,tokens:[{type:"text",raw:i,text:i}]}}},e.prototype.url=function(e,n){var i,o,t,a;if(i=this.rules.inline.url.exec(e)){if("@"===i[2])t="mailto:"+(o=Je(this.options.mangle?n(i[0]):i[0]));else{for(;a=i[0],i[0]=this.rules.inline._backpedal.exec(i[0])[0],a!==i[0];);o=Je(i[0]),t="www."===i[1]?"http://"+o:o}return{type:"link",raw:i[0],text:o,href:t,tokens:[{type:"text",raw:o,text:o}]}}},e.prototype.inlineText=function(e,n,i){e=this.rules.inline.text.exec(e);if(e){i=n?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(e[0]):Je(e[0]):e[0]:Je(this.options.smartypants?i(e[0]):e[0]);return{type:"text",raw:e[0],text:i}}},e}(),Ze=De,Ve=Ne,De=Ue,Ne={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?:\n+|$)|$)/,hr:/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3})(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?! {0,3}bull )\n*|\s*$)/,html:"^ {0,3}(?:<(script|pre|style)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:\\n{2,}|$)|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$)|</(?!script|pre|style)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$))",def:/^ {0,3}\[(label)\]: *\n? *<?([^\s>]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,nptable:Ze,table:Ze,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html| +\n)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};Ne.def=Ve(Ne.def).replace("label",Ne._label).replace("title",Ne._title).getRegex(),Ne.bullet=/(?:[*+-]|\d{1,9}[.)])/,Ne.item=/^( *)(bull) ?[^\n]*(?:\n(?! *bull ?)[^\n]*)*/,Ne.item=Ve(Ne.item,"gm").replace(/bull/g,Ne.bullet).getRegex(),Ne.listItemStart=Ve(/^( *)(bull)/).replace("bull",Ne.bullet).getRegex(),Ne.list=Ve(Ne.list).replace(/bull/g,Ne.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+Ne.def.source+")").getRegex(),Ne._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Ne._comment=/<!--(?!-?>)[\s\S]*?(?:-->|$)/,Ne.html=Ve(Ne.html,"i").replace("comment",Ne._comment).replace("tag",Ne._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Ne.paragraph=Ve(Ne._paragraph).replace("hr",Ne.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|!--)").replace("tag",Ne._tag).getRegex(),Ne.blockquote=Ve(Ne.blockquote).replace("paragraph",Ne.paragraph).getRegex(),Ne.normal=De({},Ne),Ne.gfm=De({},Ne.normal,{nptable:"^ *([^|\\n ].*\\|.*)\\n {0,3}([-:]+ *\\|[-| :]*)(?:\\n((?:(?!\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)",table:"^ *\\|(.+)\\n {0,3}\\|?( *[-:]+[-| :]*)(?:\\n *((?:(?!\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),Ne.gfm.nptable=Ve(Ne.gfm.nptable).replace("hr",Ne.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|!--)").replace("tag",Ne._tag).getRegex(),Ne.gfm.table=Ve(Ne.gfm.table).replace("hr",Ne.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|!--)").replace("tag",Ne._tag).getRegex(),Ne.pedantic=De({},Ne.normal,{html:Ve("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\s[^'\"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",Ne._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Ze,paragraph:Ve(Ne.normal._paragraph).replace("hr",Ne.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",Ne.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});Ze={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:Ze,tag:"^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",strong:{start:/^(?:(\*\*(?=[*punctuation]))|\*\*)(?![\s])|__/,middle:/^\*\*(?:(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)|\*(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)*?\*)+?\*\*$|^__(?![\s])((?:(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)|_(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)*?_)+?)__$/,endAst:/[^punctuation\s]\*\*(?!\*)|[punctuation]\*\*(?!\*)(?:(?=[punctuation_\s]|$))/,endUnd:/[^\s]__(?!_)(?:(?=[punctuation*\s])|$)/},em:{start:/^(?:(\*(?=[punctuation]))|\*)(?![*\s])|_/,middle:/^\*(?:(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)|\*(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)*?\*)+?\*$|^_(?![_\s])(?:(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)|_(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)*?_)+?_$/,endAst:/[^punctuation\s]\*(?!\*)|[punctuation]\*(?!\*)(?:(?=[punctuation_\s]|$))/,endUnd:/[^\s]_(?!_)(?:(?=[punctuation*\s])|$)/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:Ze,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*]|\b_|$)|[^ ](?= {2,}\n)))/,punctuation:/^([\s*punctuation])/,_punctuation:"!\"#$%&'()+\\-.,/:;<=>?@\\[\\]`^{|}~"};Ze.punctuation=Ve(Ze.punctuation).replace(/punctuation/g,Ze._punctuation).getRegex(),Ze._blockSkip="\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>",Ze._overlapSkip="__[^_]*?__|\\*\\*\\[^\\*\\]*?\\*\\*",Ze._comment=Ve(Ne._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),Ze.em.start=Ve(Ze.em.start).replace(/punctuation/g,Ze._punctuation).getRegex(),Ze.em.middle=Ve(Ze.em.middle).replace(/punctuation/g,Ze._punctuation).replace(/overlapSkip/g,Ze._overlapSkip).getRegex(),Ze.em.endAst=Ve(Ze.em.endAst,"g").replace(/punctuation/g,Ze._punctuation).getRegex(),Ze.em.endUnd=Ve(Ze.em.endUnd,"g").replace(/punctuation/g,Ze._punctuation).getRegex(),Ze.strong.start=Ve(Ze.strong.start).replace(/punctuation/g,Ze._punctuation).getRegex(),Ze.strong.middle=Ve(Ze.strong.middle).replace(/punctuation/g,Ze._punctuation).replace(/overlapSkip/g,Ze._overlapSkip).getRegex(),Ze.strong.endAst=Ve(Ze.strong.endAst,"g").replace(/punctuation/g,Ze._punctuation).getRegex(),Ze.strong.endUnd=Ve(Ze.strong.endUnd,"g").replace(/punctuation/g,Ze._punctuation).getRegex(),Ze.blockSkip=Ve(Ze._blockSkip,"g").getRegex(),Ze.overlapSkip=Ve(Ze._overlapSkip,"g").getRegex(),Ze._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,Ze._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,Ze._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,Ze.autolink=Ve(Ze.autolink).replace("scheme",Ze._scheme).replace("email",Ze._email).getRegex(),Ze._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,Ze.tag=Ve(Ze.tag).replace("comment",Ze._comment).replace("attribute",Ze._attribute).getRegex(),Ze._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,Ze._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,Ze._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,Ze.link=Ve(Ze.link).replace("label",Ze._label).replace("href",Ze._href).replace("title",Ze._title).getRegex(),Ze.reflink=Ve(Ze.reflink).replace("label",Ze._label).getRegex(),Ze.reflinkSearch=Ve(Ze.reflinkSearch,"g").replace("reflink",Ze.reflink).replace("nolink",Ze.nolink).getRegex(),Ze.normal=De({},Ze),Ze.pedantic=De({},Ze.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:Ve(/^!?\[(label)\]\((.*?)\)/).replace("label",Ze._label).getRegex(),reflink:Ve(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Ze._label).getRegex()}),Ze.gfm=De({},Ze.normal,{escape:Ve(Ze.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*~]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))/}),Ze.gfm.url=Ve(Ze.gfm.url,"i").replace("email",Ze.gfm._extended_email).getRegex(),Ze.breaks=De({},Ze.gfm,{br:Ve(Ze.br).replace("{2,}","*").getRegex(),text:Ve(Ze.gfm.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()});var Ze={block:Ne,inline:Ze},on=we.defaults,tn=Ze.block,an=Ze.inline,rn=Ge;function cn(e){return e.replace(/---/g,"鈥�").replace(/--/g,"鈥�").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1鈥�").replace(/'/g,"鈥�").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1鈥�").replace(/"/g,"鈥�").replace(/\.{3}/g,"鈥�")}function un(e){for(var n,i="",o=e.length,t=0;t<o;t++)n=e.charCodeAt(t),i+="&#"+(n=.5<Math.random()?"x"+n.toString(16):n)+";";return i}var fn=function(){function i(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||on,this.options.tokenizer=this.options.tokenizer||new nn,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options;e={block:tn.normal,inline:an.normal};this.options.pedantic?(e.block=tn.pedantic,e.inline=an.pedantic):this.options.gfm&&(e.block=tn.gfm,this.options.breaks?e.inline=an.breaks:e.inline=an.gfm),this.tokenizer.rules=e}var e={rules:{configurable:!0}};return e.rules.get=function(){return{block:tn,inline:an}},i.lex=function(e,n){return new i(n).lex(e)},i.lexInline=function(e,n){return new i(n).inlineTokens(e)},i.prototype.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," "),this.blockTokens(e,this.tokens,!0),this.inline(this.tokens),this.tokens},i.prototype.blockTokens=function(e,n,i){var o,t,a,r;for(void 0===n&&(n=[]),void 0===i&&(i=!0),this.options.pedantic&&(e=e.replace(/^ +$/gm,""));e;)if(o=this.tokenizer.space(e))e=e.substring(o.raw.length),o.type&&n.push(o);else if(o=this.tokenizer.code(e,n))e=e.substring(o.raw.length),o.type?n.push(o):((r=n[n.length-1]).raw+="\n"+o.raw,r.text+="\n"+o.text);else if(o=this.tokenizer.fences(e))e=e.substring(o.raw.length),n.push(o);else if(o=this.tokenizer.heading(e))e=e.substring(o.raw.length),n.push(o);else if(o=this.tokenizer.nptable(e))e=e.substring(o.raw.length),n.push(o);else if(o=this.tokenizer.hr(e))e=e.substring(o.raw.length),n.push(o);else if(o=this.tokenizer.blockquote(e))e=e.substring(o.raw.length),o.tokens=this.blockTokens(o.text,[],i),n.push(o);else if(o=this.tokenizer.list(e)){for(e=e.substring(o.raw.length),a=o.items.length,t=0;t<a;t++)o.items[t].tokens=this.blockTokens(o.items[t].text,[],!1);n.push(o)}else if(o=this.tokenizer.html(e))e=e.substring(o.raw.length),n.push(o);else if(i&&(o=this.tokenizer.def(e)))e=e.substring(o.raw.length),this.tokens.links[o.tag]||(this.tokens.links[o.tag]={href:o.href,title:o.title});else if(o=this.tokenizer.table(e))e=e.substring(o.raw.length),n.push(o);else if(o=this.tokenizer.lheading(e))e=e.substring(o.raw.length),n.push(o);else if(i&&(o=this.tokenizer.paragraph(e)))e=e.substring(o.raw.length),n.push(o);else if(o=this.tokenizer.text(e,n))e=e.substring(o.raw.length),o.type?n.push(o):((r=n[n.length-1]).raw+="\n"+o.raw,r.text+="\n"+o.text);else if(e){var c="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(c);break}throw new Error(c)}return n},i.prototype.inline=function(e){for(var n,i,o,t,a,r=e.length,c=0;c<r;c++)switch((a=e[c]).type){case"paragraph":case"text":case"heading":a.tokens=[],this.inlineTokens(a.text,a.tokens);break;case"table":for(a.tokens={header:[],cells:[]},o=a.header.length,n=0;n<o;n++)a.tokens.header[n]=[],this.inlineTokens(a.header[n],a.tokens.header[n]);for(o=a.cells.length,n=0;n<o;n++)for(t=a.cells[n],a.tokens.cells[n]=[],i=0;i<t.length;i++)a.tokens.cells[n][i]=[],this.inlineTokens(t[i],a.tokens.cells[n][i]);break;case"blockquote":this.inline(a.tokens);break;case"list":for(o=a.items.length,n=0;n<o;n++)this.inline(a.items[n].tokens)}return e},i.prototype.inlineTokens=function(e,n,i,o){var t;void 0===n&&(n=[]),void 0===i&&(i=!1),void 0===o&&(o=!1);var a,r,c,u=e;if(this.tokens.links){var f=Object.keys(this.tokens.links);if(0<f.length)for(;null!=(a=this.tokenizer.rules.inline.reflinkSearch.exec(u));)f.includes(a[0].slice(a[0].lastIndexOf("[")+1,-1))&&(u=u.slice(0,a.index)+"["+rn("a",a[0].length-2)+"]"+u.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(a=this.tokenizer.rules.inline.blockSkip.exec(u));)u=u.slice(0,a.index)+"["+rn("a",a[0].length-2)+"]"+u.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;e;)if(r||(c=""),r=!1,t=this.tokenizer.escape(e))e=e.substring(t.raw.length),n.push(t);else if(t=this.tokenizer.tag(e,i,o))e=e.substring(t.raw.length),i=t.inLink,o=t.inRawBlock,n.push(t);else if(t=this.tokenizer.link(e))e=e.substring(t.raw.length),"link"===t.type&&(t.tokens=this.inlineTokens(t.text,[],!0,o)),n.push(t);else if(t=this.tokenizer.reflink(e,this.tokens.links))e=e.substring(t.raw.length),"link"===t.type&&(t.tokens=this.inlineTokens(t.text,[],!0,o)),n.push(t);else if(t=this.tokenizer.strong(e,u,c))e=e.substring(t.raw.length),t.tokens=this.inlineTokens(t.text,[],i,o),n.push(t);else if(t=this.tokenizer.em(e,u,c))e=e.substring(t.raw.length),t.tokens=this.inlineTokens(t.text,[],i,o),n.push(t);else if(t=this.tokenizer.codespan(e))e=e.substring(t.raw.length),n.push(t);else if(t=this.tokenizer.br(e))e=e.substring(t.raw.length),n.push(t);else if(t=this.tokenizer.del(e))e=e.substring(t.raw.length),t.tokens=this.inlineTokens(t.text,[],i,o),n.push(t);else if(t=this.tokenizer.autolink(e,un))e=e.substring(t.raw.length),n.push(t);else if(i||!(t=this.tokenizer.url(e,un))){if(t=this.tokenizer.inlineText(e,o,cn))e=e.substring(t.raw.length),c=t.raw.slice(-1),r=!0,n.push(t);else if(e){var p="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(p);break}throw new Error(p)}}else e=e.substring(t.raw.length),n.push(t);return n},Object.defineProperties(i,e),i}(),pn=we.defaults,dn=He,gn=Me,sn=function(){function e(e){this.options=e||pn}return e.prototype.code=function(e,n,i){var o=(n||"").match(/\S*/)[0];return!this.options.highlight||null!=(n=this.options.highlight(e,o))&&n!==e&&(i=!0,e=n),e=e.replace(/\n$/,"")+"\n",o?'<pre><code class="'+this.options.langPrefix+gn(o,!0)+'">'+(i?e:gn(e,!0))+"</code></pre>\n":"<pre><code>"+(i?e:gn(e,!0))+"</code></pre>\n"},e.prototype.blockquote=function(e){return"<blockquote>\n"+e+"</blockquote>\n"},e.prototype.html=function(e){return e},e.prototype.heading=function(e,n,i,o){return this.options.headerIds?"<h"+n+' id="'+this.options.headerPrefix+o.slug(i)+'">'+e+"</h"+n+">\n":"<h"+n+">"+e+"</h"+n+">\n"},e.prototype.hr=function(){return this.options.xhtml?"<hr/>\n":"<hr>\n"},e.prototype.list=function(e,n,i){var o=n?"ol":"ul";return"<"+o+(n&&1!==i?' start="'+i+'"':"")+">\n"+e+"</"+o+">\n"},e.prototype.listitem=function(e){return"<li>"+e+"</li>\n"},e.prototype.checkbox=function(e){return"<input "+(e?'checked="" ':"")+'disabled="" type="checkbox"'+(this.options.xhtml?" /":"")+"> "},e.prototype.paragraph=function(e){return"<p>"+e+"</p>\n"},e.prototype.table=function(e,n){return"<table>\n<thead>\n"+e+"</thead>\n"+(n=n&&"<tbody>"+n+"</tbody>")+"</table>\n"},e.prototype.tablerow=function(e){return"<tr>\n"+e+"</tr>\n"},e.prototype.tablecell=function(e,n){var i=n.header?"th":"td";return(n.align?"<"+i+' align="'+n.align+'">':"<"+i+">")+e+"</"+i+">\n"},e.prototype.strong=function(e){return"<strong>"+e+"</strong>"},e.prototype.em=function(e){return"<em>"+e+"</em>"},e.prototype.codespan=function(e){return"<code>"+e+"</code>"},e.prototype.br=function(){return this.options.xhtml?"<br/>":"<br>"},e.prototype.del=function(e){return"<del>"+e+"</del>"},e.prototype.link=function(e,n,i){if(null===(e=dn(this.options.sanitize,this.options.baseUrl,e)))return i;e='<a href="'+gn(e)+'"';return n&&(e+=' title="'+n+'"'),e+=">"+i+"</a>"},e.prototype.image=function(e,n,i){if(null===(e=dn(this.options.sanitize,this.options.baseUrl,e)))return i;i='<img src="'+e+'" alt="'+i+'"';return n&&(i+=' title="'+n+'"'),i+=this.options.xhtml?"/>":">"},e.prototype.text=function(e){return e},e}(),ln=function(){function e(){}return e.prototype.strong=function(e){return e},e.prototype.em=function(e){return e},e.prototype.codespan=function(e){return e},e.prototype.del=function(e){return e},e.prototype.html=function(e){return e},e.prototype.text=function(e){return e},e.prototype.link=function(e,n,i){return""+i},e.prototype.image=function(e,n,i){return""+i},e.prototype.br=function(){return""},e}(),vn=function(){function e(){this.seen={}}return e.prototype.serialize=function(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")},e.prototype.getNextSafeSlug=function(e,n){var i=e,o=0;if(this.seen.hasOwnProperty(i))for(o=this.seen[e];i=e+"-"+ ++o,this.seen.hasOwnProperty(i););return n||(this.seen[e]=o,this.seen[i]=0),i},e.prototype.slug=function(e,n){void 0===n&&(n={});e=this.serialize(e);return this.getNextSafeSlug(e,n.dryrun)},e}(),hn=we.defaults,_n=Ie,mn=function(){function i(e){this.options=e||hn,this.options.renderer=this.options.renderer||new sn,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new ln,this.slugger=new vn}return i.parse=function(e,n){return new i(n).parse(e)},i.parseInline=function(e,n){return new i(n).parseInline(e)},i.prototype.parse=function(e,n){void 0===n&&(n=!0);for(var i,o,t,a,r,c,u,f,p,d,g,s,l,v,h,_="",m=e.length,b=0;b<m;b++)switch((f=e[b]).type){case"space":continue;case"hr":_+=this.renderer.hr();continue;case"heading":_+=this.renderer.heading(this.parseInline(f.tokens),f.depth,_n(this.parseInline(f.tokens,this.textRenderer)),this.slugger);continue;case"code":_+=this.renderer.code(f.text,f.lang,f.escaped);continue;case"table":for(c=p="",t=f.header.length,i=0;i<t;i++)c+=this.renderer.tablecell(this.parseInline(f.tokens.header[i]),{header:!0,align:f.align[i]});for(p+=this.renderer.tablerow(c),u="",t=f.cells.length,i=0;i<t;i++){for(c="",a=(r=f.tokens.cells[i]).length,o=0;o<a;o++)c+=this.renderer.tablecell(this.parseInline(r[o]),{header:!1,align:f.align[o]});u+=this.renderer.tablerow(c)}_+=this.renderer.table(p,u);continue;case"blockquote":u=this.parse(f.tokens),_+=this.renderer.blockquote(u);continue;case"list":for(p=f.ordered,k=f.start,d=f.loose,t=f.items.length,u="",i=0;i<t;i++)l=(s=f.items[i]).checked,v=s.task,g="",s.task&&(h=this.renderer.checkbox(l),d?0<s.tokens.length&&"text"===s.tokens[0].type?(s.tokens[0].text=h+" "+s.tokens[0].text,s.tokens[0].tokens&&0<s.tokens[0].tokens.length&&"text"===s.tokens[0].tokens[0].type&&(s.tokens[0].tokens[0].text=h+" "+s.tokens[0].tokens[0].text)):s.tokens.unshift({type:"text",text:h}):g+=h),g+=this.parse(s.tokens,d),u+=this.renderer.listitem(g,v,l);_+=this.renderer.list(u,p,k);continue;case"html":_+=this.renderer.html(f.text);continue;case"paragraph":_+=this.renderer.paragraph(this.parseInline(f.tokens));continue;case"text":for(u=f.tokens?this.parseInline(f.tokens):f.text;b+1<m&&"text"===e[b+1].type;)u+="\n"+((f=e[++b]).tokens?this.parseInline(f.tokens):f.text);_+=n?this.renderer.paragraph(u):u;continue;default:var k='Token with "'+f.type+'" type was not found.';if(this.options.silent)return void console.error(k);throw new Error(k)}return _},i.prototype.parseInline=function(e,n){n=n||this.renderer;for(var i,o="",t=e.length,a=0;a<t;a++)switch((i=e[a]).type){case"escape":o+=n.text(i.text);break;case"html":o+=n.html(i.text);break;case"link":o+=n.link(i.href,i.title,this.parseInline(i.tokens,n));break;case"image":o+=n.image(i.href,i.title,i.text);break;case"strong":o+=n.strong(this.parseInline(i.tokens,n));break;case"em":o+=n.em(this.parseInline(i.tokens,n));break;case"codespan":o+=n.codespan(i.text);break;case"br":o+=n.br();break;case"del":o+=n.del(this.parseInline(i.tokens,n));break;case"text":o+=n.text(i.text);break;default:var r='Token with "'+i.type+'" type was not found.';if(this.options.silent)return void console.error(r);throw new Error(r)}return o},i}(),bn=Ue,kn=Ye,wn=Me,Me=we.getDefaults,yn=we.changeDefaults,we=we.defaults;function xn(e,i,o){if(null==e)throw new Error("marked(): input parameter is undefined or null");if("string"!=typeof e)throw new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");if("function"==typeof i&&(o=i,i=null),i=bn({},xn.defaults,i||{}),kn(i),o){var t,a=i.highlight;try{t=fn.lex(e,i)}catch(e){return o(e)}function r(n){var e;if(!n)try{e=mn.parse(t,i)}catch(e){n=e}return i.highlight=a,n?o(n):o(null,e)}if(!a||a.length<3)return r();if(delete i.highlight,!t.length)return r();var c=0;return xn.walkTokens(t,function(i){"code"===i.type&&(c++,setTimeout(function(){a(i.text,i.lang,function(e,n){return e?r(e):(null!=n&&n!==i.text&&(i.text=n,i.escaped=!0),void(0===--c&&r()))})},0))}),void(0===c&&r())}try{var n=fn.lex(e,i);return i.walkTokens&&xn.walkTokens(n,i.walkTokens),mn.parse(n,i)}catch(e){if(e.message+="\nPlease report this to https://github.com/markedjs/marked.",i.silent)return"<p>An error occurred:</p><pre>"+wn(e.message+"",!0)+"</pre>";throw e}}xn.options=xn.setOptions=function(e){return bn(xn.defaults,e),yn(xn.defaults),xn},xn.getDefaults=Me,xn.defaults=we,xn.use=function(a){var n,e=bn({},a);if(a.renderer){var i,r=xn.defaults.renderer||new sn;for(i in a.renderer)!function(o){var t=r[o];r[o]=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var i=a.renderer[o].apply(r,e);return i=!1===i?t.apply(r,e):i}}(i);e.renderer=r}if(a.tokenizer){var t,c=xn.defaults.tokenizer||new nn;for(t in a.tokenizer)!function(){var o=c[t];c[t]=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var i=a.tokenizer[t].apply(c,e);return i=!1===i?o.apply(c,e):i}}();e.tokenizer=c}a.walkTokens&&(n=xn.defaults.walkTokens,e.walkTokens=function(e){a.walkTokens(e),n&&n(e)}),xn.setOptions(e)},xn.walkTokens=function(e,n){for(var i=0,o=e;i<o.length;i+=1){var t=o[i];switch(n(t),t.type){case"table":for(var a=0,r=t.tokens.header;a<r.length;a+=1){var c=r[a];xn.walkTokens(c,n)}for(var u=0,f=t.tokens.cells;u<f.length;u+=1)for(var p=0,d=f[u];p<d.length;p+=1){var g=d[p];xn.walkTokens(g,n)}break;case"list":xn.walkTokens(t.items,n);break;default:t.tokens&&xn.walkTokens(t.tokens,n)}}},xn.parseInline=function(e,n){if(null==e)throw new Error("marked.parseInline(): input parameter is undefined or null");if("string"!=typeof e)throw new Error("marked.parseInline(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");n=bn({},xn.defaults,n||{}),kn(n);try{var i=fn.lexInline(e,n);return n.walkTokens&&xn.walkTokens(i,n.walkTokens),mn.parseInline(i,n)}catch(e){if(e.message+="\nPlease report this to https://github.com/markedjs/marked.",n.silent)return"<p>An error occurred:</p><pre>"+wn(e.message+"",!0)+"</pre>";throw e}},xn.Parser=mn,xn.parser=mn.parse,xn.Renderer=sn,xn.TextRenderer=ln,xn.Lexer=fn,xn.lexer=fn.lex,xn.Tokenizer=nn,xn.Slugger=vn;var Sn=xn.parse=xn;function An(e,i){if(void 0===i&&(i='<ul class="app-sub-sidebar">{inner}</ul>'),!e||!e.length)return"";var o="";return e.forEach(function(e){var n=e.title.replace(/(<([^>]+)>)/g,"");o+='<li><a class="section-link" href="'+e.slug+'" title="'+n+'">'+e.title+"</a></li>",e.children&&(o+=An(e.children,i))}),i.replace("{inner}",o)}function $n(e,n){return'<p class="'+e+'">'+n.slice(5).trim()+"</p>"}function zn(e,o){var t=[],a={};return e.forEach(function(e){var n=e.level||1,i=n-1;o<n||(a[i]?a[i].children=(a[i].children||[]).concat(e):t.push(e),a[n]=e)}),t}var Fn={},En=/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g;function Rn(e){return e.toLowerCase()}function Tn(e){if("string"!=typeof e)return"";var n=e.trim().replace(/[A-Z]+/g,Rn).replace(/<[^>]+>/g,"").replace(En,"").replace(/\s/g,"-").replace(/-+/g,"-").replace(/^(\d)/,"_$1"),e=Fn[n],e=u.call(Fn,n)?e+1:0;return n=(Fn[n]=e)?n+"-"+e:n}Tn.clear=function(){Fn={}};var Cn={baseURL:"https://github.githubassets.com/images/icons/emoji/",data:{100:"unicode/1f4af.png?v8",1234:"unicode/1f522.png?v8","+1":"unicode/1f44d.png?v8","-1":"unicode/1f44e.png?v8","1st_place_medal":"unicode/1f947.png?v8","2nd_place_medal":"unicode/1f948.png?v8","3rd_place_medal":"unicode/1f949.png?v8","8ball":"unicode/1f3b1.png?v8",a:"unicode/1f170.png?v8",ab:"unicode/1f18e.png?v8",abacus:"unicode/1f9ee.png?v8",abc:"unicode/1f524.png?v8",abcd:"unicode/1f521.png?v8",accept:"unicode/1f251.png?v8",accessibility:"accessibility.png?v8",accordion:"unicode/1fa97.png?v8",adhesive_bandage:"unicode/1fa79.png?v8",adult:"unicode/1f9d1.png?v8",aerial_tramway:"unicode/1f6a1.png?v8",afghanistan:"unicode/1f1e6-1f1eb.png?v8",airplane:"unicode/2708.png?v8",aland_islands:"unicode/1f1e6-1f1fd.png?v8",alarm_clock:"unicode/23f0.png?v8",albania:"unicode/1f1e6-1f1f1.png?v8",alembic:"unicode/2697.png?v8",algeria:"unicode/1f1e9-1f1ff.png?v8",alien:"unicode/1f47d.png?v8",ambulance:"unicode/1f691.png?v8",american_samoa:"unicode/1f1e6-1f1f8.png?v8",amphora:"unicode/1f3fa.png?v8",anatomical_heart:"unicode/1fac0.png?v8",anchor:"unicode/2693.png?v8",andorra:"unicode/1f1e6-1f1e9.png?v8",angel:"unicode/1f47c.png?v8",anger:"unicode/1f4a2.png?v8",angola:"unicode/1f1e6-1f1f4.png?v8",angry:"unicode/1f620.png?v8",anguilla:"unicode/1f1e6-1f1ee.png?v8",anguished:"unicode/1f627.png?v8",ant:"unicode/1f41c.png?v8",antarctica:"unicode/1f1e6-1f1f6.png?v8",antigua_barbuda:"unicode/1f1e6-1f1ec.png?v8",apple:"unicode/1f34e.png?v8",aquarius:"unicode/2652.png?v8",argentina:"unicode/1f1e6-1f1f7.png?v8",aries:"unicode/2648.png?v8",armenia:"unicode/1f1e6-1f1f2.png?v8",arrow_backward:"unicode/25c0.png?v8",arrow_double_down:"unicode/23ec.png?v8",arrow_double_up:"unicode/23eb.png?v8",arrow_down:"unicode/2b07.png?v8",arrow_down_small:"unicode/1f53d.png?v8",arrow_forward:"unicode/25b6.png?v8",arrow_heading_down:"unicode/2935.png?v8",arrow_heading_up:"unicode/2934.png?v8",arrow_left:"unicode/2b05.png?v8",arrow_lower_left:"unicode/2199.png?v8",arrow_lower_right:"unicode/2198.png?v8",arrow_right:"unicode/27a1.png?v8",arrow_right_hook:"unicode/21aa.png?v8",arrow_up:"unicode/2b06.png?v8",arrow_up_down:"unicode/2195.png?v8",arrow_up_small:"unicode/1f53c.png?v8",arrow_upper_left:"unicode/2196.png?v8",arrow_upper_right:"unicode/2197.png?v8",arrows_clockwise:"unicode/1f503.png?v8",arrows_counterclockwise:"unicode/1f504.png?v8",art:"unicode/1f3a8.png?v8",articulated_lorry:"unicode/1f69b.png?v8",artificial_satellite:"unicode/1f6f0.png?v8",artist:"unicode/1f9d1-1f3a8.png?v8",aruba:"unicode/1f1e6-1f1fc.png?v8",ascension_island:"unicode/1f1e6-1f1e8.png?v8",asterisk:"unicode/002a-20e3.png?v8",astonished:"unicode/1f632.png?v8",astronaut:"unicode/1f9d1-1f680.png?v8",athletic_shoe:"unicode/1f45f.png?v8",atm:"unicode/1f3e7.png?v8",atom:"atom.png?v8",atom_symbol:"unicode/269b.png?v8",australia:"unicode/1f1e6-1f1fa.png?v8",austria:"unicode/1f1e6-1f1f9.png?v8",auto_rickshaw:"unicode/1f6fa.png?v8",avocado:"unicode/1f951.png?v8",axe:"unicode/1fa93.png?v8",azerbaijan:"unicode/1f1e6-1f1ff.png?v8",b:"unicode/1f171.png?v8",baby:"unicode/1f476.png?v8",baby_bottle:"unicode/1f37c.png?v8",baby_chick:"unicode/1f424.png?v8",baby_symbol:"unicode/1f6bc.png?v8",back:"unicode/1f519.png?v8",bacon:"unicode/1f953.png?v8",badger:"unicode/1f9a1.png?v8",badminton:"unicode/1f3f8.png?v8",bagel:"unicode/1f96f.png?v8",baggage_claim:"unicode/1f6c4.png?v8",baguette_bread:"unicode/1f956.png?v8",bahamas:"unicode/1f1e7-1f1f8.png?v8",bahrain:"unicode/1f1e7-1f1ed.png?v8",balance_scale:"unicode/2696.png?v8",bald_man:"unicode/1f468-1f9b2.png?v8",bald_woman:"unicode/1f469-1f9b2.png?v8",ballet_shoes:"unicode/1fa70.png?v8",balloon:"unicode/1f388.png?v8",ballot_box:"unicode/1f5f3.png?v8",ballot_box_with_check:"unicode/2611.png?v8",bamboo:"unicode/1f38d.png?v8",banana:"unicode/1f34c.png?v8",bangbang:"unicode/203c.png?v8",bangladesh:"unicode/1f1e7-1f1e9.png?v8",banjo:"unicode/1fa95.png?v8",bank:"unicode/1f3e6.png?v8",bar_chart:"unicode/1f4ca.png?v8",barbados:"unicode/1f1e7-1f1e7.png?v8",barber:"unicode/1f488.png?v8",baseball:"unicode/26be.png?v8",basecamp:"basecamp.png?v8",basecampy:"basecampy.png?v8",basket:"unicode/1f9fa.png?v8",basketball:"unicode/1f3c0.png?v8",basketball_man:"unicode/26f9-2642.png?v8",basketball_woman:"unicode/26f9-2640.png?v8",bat:"unicode/1f987.png?v8",bath:"unicode/1f6c0.png?v8",bathtub:"unicode/1f6c1.png?v8",battery:"unicode/1f50b.png?v8",beach_umbrella:"unicode/1f3d6.png?v8",bear:"unicode/1f43b.png?v8",bearded_person:"unicode/1f9d4.png?v8",beaver:"unicode/1f9ab.png?v8",bed:"unicode/1f6cf.png?v8",bee:"unicode/1f41d.png?v8",beer:"unicode/1f37a.png?v8",beers:"unicode/1f37b.png?v8",beetle:"unicode/1fab2.png?v8",beginner:"unicode/1f530.png?v8",belarus:"unicode/1f1e7-1f1fe.png?v8",belgium:"unicode/1f1e7-1f1ea.png?v8",belize:"unicode/1f1e7-1f1ff.png?v8",bell:"unicode/1f514.png?v8",bell_pepper:"unicode/1fad1.png?v8",bellhop_bell:"unicode/1f6ce.png?v8",benin:"unicode/1f1e7-1f1ef.png?v8",bento:"unicode/1f371.png?v8",bermuda:"unicode/1f1e7-1f1f2.png?v8",beverage_box:"unicode/1f9c3.png?v8",bhutan:"unicode/1f1e7-1f1f9.png?v8",bicyclist:"unicode/1f6b4.png?v8",bike:"unicode/1f6b2.png?v8",biking_man:"unicode/1f6b4-2642.png?v8",biking_woman:"unicode/1f6b4-2640.png?v8",bikini:"unicode/1f459.png?v8",billed_cap:"unicode/1f9e2.png?v8",biohazard:"unicode/2623.png?v8",bird:"unicode/1f426.png?v8",birthday:"unicode/1f382.png?v8",bison:"unicode/1f9ac.png?v8",black_cat:"unicode/1f408-2b1b.png?v8",black_circle:"unicode/26ab.png?v8",black_flag:"unicode/1f3f4.png?v8",black_heart:"unicode/1f5a4.png?v8",black_joker:"unicode/1f0cf.png?v8",black_large_square:"unicode/2b1b.png?v8",black_medium_small_square:"unicode/25fe.png?v8",black_medium_square:"unicode/25fc.png?v8",black_nib:"unicode/2712.png?v8",black_small_square:"unicode/25aa.png?v8",black_square_button:"unicode/1f532.png?v8",blond_haired_man:"unicode/1f471-2642.png?v8",blond_haired_person:"unicode/1f471.png?v8",blond_haired_woman:"unicode/1f471-2640.png?v8",blonde_woman:"unicode/1f471-2640.png?v8",blossom:"unicode/1f33c.png?v8",blowfish:"unicode/1f421.png?v8",blue_book:"unicode/1f4d8.png?v8",blue_car:"unicode/1f699.png?v8",blue_heart:"unicode/1f499.png?v8",blue_square:"unicode/1f7e6.png?v8",blueberries:"unicode/1fad0.png?v8",blush:"unicode/1f60a.png?v8",boar:"unicode/1f417.png?v8",boat:"unicode/26f5.png?v8",bolivia:"unicode/1f1e7-1f1f4.png?v8",bomb:"unicode/1f4a3.png?v8",bone:"unicode/1f9b4.png?v8",book:"unicode/1f4d6.png?v8",bookmark:"unicode/1f516.png?v8",bookmark_tabs:"unicode/1f4d1.png?v8",books:"unicode/1f4da.png?v8",boom:"unicode/1f4a5.png?v8",boomerang:"unicode/1fa83.png?v8",boot:"unicode/1f462.png?v8",bosnia_herzegovina:"unicode/1f1e7-1f1e6.png?v8",botswana:"unicode/1f1e7-1f1fc.png?v8",bouncing_ball_man:"unicode/26f9-2642.png?v8",bouncing_ball_person:"unicode/26f9.png?v8",bouncing_ball_woman:"unicode/26f9-2640.png?v8",bouquet:"unicode/1f490.png?v8",bouvet_island:"unicode/1f1e7-1f1fb.png?v8",bow:"unicode/1f647.png?v8",bow_and_arrow:"unicode/1f3f9.png?v8",bowing_man:"unicode/1f647-2642.png?v8",bowing_woman:"unicode/1f647-2640.png?v8",bowl_with_spoon:"unicode/1f963.png?v8",bowling:"unicode/1f3b3.png?v8",bowtie:"bowtie.png?v8",boxing_glove:"unicode/1f94a.png?v8",boy:"unicode/1f466.png?v8",brain:"unicode/1f9e0.png?v8",brazil:"unicode/1f1e7-1f1f7.png?v8",bread:"unicode/1f35e.png?v8",breast_feeding:"unicode/1f931.png?v8",bricks:"unicode/1f9f1.png?v8",bride_with_veil:"unicode/1f470-2640.png?v8",bridge_at_night:"unicode/1f309.png?v8",briefcase:"unicode/1f4bc.png?v8",british_indian_ocean_territory:"unicode/1f1ee-1f1f4.png?v8",british_virgin_islands:"unicode/1f1fb-1f1ec.png?v8",broccoli:"unicode/1f966.png?v8",broken_heart:"unicode/1f494.png?v8",broom:"unicode/1f9f9.png?v8",brown_circle:"unicode/1f7e4.png?v8",brown_heart:"unicode/1f90e.png?v8",brown_square:"unicode/1f7eb.png?v8",brunei:"unicode/1f1e7-1f1f3.png?v8",bubble_tea:"unicode/1f9cb.png?v8",bucket:"unicode/1faa3.png?v8",bug:"unicode/1f41b.png?v8",building_construction:"unicode/1f3d7.png?v8",bulb:"unicode/1f4a1.png?v8",bulgaria:"unicode/1f1e7-1f1ec.png?v8",bullettrain_front:"unicode/1f685.png?v8",bullettrain_side:"unicode/1f684.png?v8",burkina_faso:"unicode/1f1e7-1f1eb.png?v8",burrito:"unicode/1f32f.png?v8",burundi:"unicode/1f1e7-1f1ee.png?v8",bus:"unicode/1f68c.png?v8",business_suit_levitating:"unicode/1f574.png?v8",busstop:"unicode/1f68f.png?v8",bust_in_silhouette:"unicode/1f464.png?v8",busts_in_silhouette:"unicode/1f465.png?v8",butter:"unicode/1f9c8.png?v8",butterfly:"unicode/1f98b.png?v8",cactus:"unicode/1f335.png?v8",cake:"unicode/1f370.png?v8",calendar:"unicode/1f4c6.png?v8",call_me_hand:"unicode/1f919.png?v8",calling:"unicode/1f4f2.png?v8",cambodia:"unicode/1f1f0-1f1ed.png?v8",camel:"unicode/1f42b.png?v8",camera:"unicode/1f4f7.png?v8",camera_flash:"unicode/1f4f8.png?v8",cameroon:"unicode/1f1e8-1f1f2.png?v8",camping:"unicode/1f3d5.png?v8",canada:"unicode/1f1e8-1f1e6.png?v8",canary_islands:"unicode/1f1ee-1f1e8.png?v8",cancer:"unicode/264b.png?v8",candle:"unicode/1f56f.png?v8",candy:"unicode/1f36c.png?v8",canned_food:"unicode/1f96b.png?v8",canoe:"unicode/1f6f6.png?v8",cape_verde:"unicode/1f1e8-1f1fb.png?v8",capital_abcd:"unicode/1f520.png?v8",capricorn:"unicode/2651.png?v8",car:"unicode/1f697.png?v8",card_file_box:"unicode/1f5c3.png?v8",card_index:"unicode/1f4c7.png?v8",card_index_dividers:"unicode/1f5c2.png?v8",caribbean_netherlands:"unicode/1f1e7-1f1f6.png?v8",carousel_horse:"unicode/1f3a0.png?v8",carpentry_saw:"unicode/1fa9a.png?v8",carrot:"unicode/1f955.png?v8",cartwheeling:"unicode/1f938.png?v8",cat:"unicode/1f431.png?v8",cat2:"unicode/1f408.png?v8",cayman_islands:"unicode/1f1f0-1f1fe.png?v8",cd:"unicode/1f4bf.png?v8",central_african_republic:"unicode/1f1e8-1f1eb.png?v8",ceuta_melilla:"unicode/1f1ea-1f1e6.png?v8",chad:"unicode/1f1f9-1f1e9.png?v8",chains:"unicode/26d3.png?v8",chair:"unicode/1fa91.png?v8",champagne:"unicode/1f37e.png?v8",chart:"unicode/1f4b9.png?v8",chart_with_downwards_trend:"unicode/1f4c9.png?v8",chart_with_upwards_trend:"unicode/1f4c8.png?v8",checkered_flag:"unicode/1f3c1.png?v8",cheese:"unicode/1f9c0.png?v8",cherries:"unicode/1f352.png?v8",cherry_blossom:"unicode/1f338.png?v8",chess_pawn:"unicode/265f.png?v8",chestnut:"unicode/1f330.png?v8",chicken:"unicode/1f414.png?v8",child:"unicode/1f9d2.png?v8",children_crossing:"unicode/1f6b8.png?v8",chile:"unicode/1f1e8-1f1f1.png?v8",chipmunk:"unicode/1f43f.png?v8",chocolate_bar:"unicode/1f36b.png?v8",chopsticks:"unicode/1f962.png?v8",christmas_island:"unicode/1f1e8-1f1fd.png?v8",christmas_tree:"unicode/1f384.png?v8",church:"unicode/26ea.png?v8",cinema:"unicode/1f3a6.png?v8",circus_tent:"unicode/1f3aa.png?v8",city_sunrise:"unicode/1f307.png?v8",city_sunset:"unicode/1f306.png?v8",cityscape:"unicode/1f3d9.png?v8",cl:"unicode/1f191.png?v8",clamp:"unicode/1f5dc.png?v8",clap:"unicode/1f44f.png?v8",clapper:"unicode/1f3ac.png?v8",classical_building:"unicode/1f3db.png?v8",climbing:"unicode/1f9d7.png?v8",climbing_man:"unicode/1f9d7-2642.png?v8",climbing_woman:"unicode/1f9d7-2640.png?v8",clinking_glasses:"unicode/1f942.png?v8",clipboard:"unicode/1f4cb.png?v8",clipperton_island:"unicode/1f1e8-1f1f5.png?v8",clock1:"unicode/1f550.png?v8",clock10:"unicode/1f559.png?v8",clock1030:"unicode/1f565.png?v8",clock11:"unicode/1f55a.png?v8",clock1130:"unicode/1f566.png?v8",clock12:"unicode/1f55b.png?v8",clock1230:"unicode/1f567.png?v8",clock130:"unicode/1f55c.png?v8",clock2:"unicode/1f551.png?v8",clock230:"unicode/1f55d.png?v8",clock3:"unicode/1f552.png?v8",clock330:"unicode/1f55e.png?v8",clock4:"unicode/1f553.png?v8",clock430:"unicode/1f55f.png?v8",clock5:"unicode/1f554.png?v8",clock530:"unicode/1f560.png?v8",clock6:"unicode/1f555.png?v8",clock630:"unicode/1f561.png?v8",clock7:"unicode/1f556.png?v8",clock730:"unicode/1f562.png?v8",clock8:"unicode/1f557.png?v8",clock830:"unicode/1f563.png?v8",clock9:"unicode/1f558.png?v8",clock930:"unicode/1f564.png?v8",closed_book:"unicode/1f4d5.png?v8",closed_lock_with_key:"unicode/1f510.png?v8",closed_umbrella:"unicode/1f302.png?v8",cloud:"unicode/2601.png?v8",cloud_with_lightning:"unicode/1f329.png?v8",cloud_with_lightning_and_rain:"unicode/26c8.png?v8",cloud_with_rain:"unicode/1f327.png?v8",cloud_with_snow:"unicode/1f328.png?v8",clown_face:"unicode/1f921.png?v8",clubs:"unicode/2663.png?v8",cn:"unicode/1f1e8-1f1f3.png?v8",coat:"unicode/1f9e5.png?v8",cockroach:"unicode/1fab3.png?v8",cocktail:"unicode/1f378.png?v8",coconut:"unicode/1f965.png?v8",cocos_islands:"unicode/1f1e8-1f1e8.png?v8",coffee:"unicode/2615.png?v8",coffin:"unicode/26b0.png?v8",coin:"unicode/1fa99.png?v8",cold_face:"unicode/1f976.png?v8",cold_sweat:"unicode/1f630.png?v8",collision:"unicode/1f4a5.png?v8",colombia:"unicode/1f1e8-1f1f4.png?v8",comet:"unicode/2604.png?v8",comoros:"unicode/1f1f0-1f1f2.png?v8",compass:"unicode/1f9ed.png?v8",computer:"unicode/1f4bb.png?v8",computer_mouse:"unicode/1f5b1.png?v8",confetti_ball:"unicode/1f38a.png?v8",confounded:"unicode/1f616.png?v8",confused:"unicode/1f615.png?v8",congo_brazzaville:"unicode/1f1e8-1f1ec.png?v8",congo_kinshasa:"unicode/1f1e8-1f1e9.png?v8",congratulations:"unicode/3297.png?v8",construction:"unicode/1f6a7.png?v8",construction_worker:"unicode/1f477.png?v8",construction_worker_man:"unicode/1f477-2642.png?v8",construction_worker_woman:"unicode/1f477-2640.png?v8",control_knobs:"unicode/1f39b.png?v8",convenience_store:"unicode/1f3ea.png?v8",cook:"unicode/1f9d1-1f373.png?v8",cook_islands:"unicode/1f1e8-1f1f0.png?v8",cookie:"unicode/1f36a.png?v8",cool:"unicode/1f192.png?v8",cop:"unicode/1f46e.png?v8",copyright:"unicode/00a9.png?v8",corn:"unicode/1f33d.png?v8",costa_rica:"unicode/1f1e8-1f1f7.png?v8",cote_divoire:"unicode/1f1e8-1f1ee.png?v8",couch_and_lamp:"unicode/1f6cb.png?v8",couple:"unicode/1f46b.png?v8",couple_with_heart:"unicode/1f491.png?v8",couple_with_heart_man_man:"unicode/1f468-2764-1f468.png?v8",couple_with_heart_woman_man:"unicode/1f469-2764-1f468.png?v8",couple_with_heart_woman_woman:"unicode/1f469-2764-1f469.png?v8",couplekiss:"unicode/1f48f.png?v8",couplekiss_man_man:"unicode/1f468-2764-1f48b-1f468.png?v8",couplekiss_man_woman:"unicode/1f469-2764-1f48b-1f468.png?v8",couplekiss_woman_woman:"unicode/1f469-2764-1f48b-1f469.png?v8",cow:"unicode/1f42e.png?v8",cow2:"unicode/1f404.png?v8",cowboy_hat_face:"unicode/1f920.png?v8",crab:"unicode/1f980.png?v8",crayon:"unicode/1f58d.png?v8",credit_card:"unicode/1f4b3.png?v8",crescent_moon:"unicode/1f319.png?v8",cricket:"unicode/1f997.png?v8",cricket_game:"unicode/1f3cf.png?v8",croatia:"unicode/1f1ed-1f1f7.png?v8",crocodile:"unicode/1f40a.png?v8",croissant:"unicode/1f950.png?v8",crossed_fingers:"unicode/1f91e.png?v8",crossed_flags:"unicode/1f38c.png?v8",crossed_swords:"unicode/2694.png?v8",crown:"unicode/1f451.png?v8",cry:"unicode/1f622.png?v8",crying_cat_face:"unicode/1f63f.png?v8",crystal_ball:"unicode/1f52e.png?v8",cuba:"unicode/1f1e8-1f1fa.png?v8",cucumber:"unicode/1f952.png?v8",cup_with_straw:"unicode/1f964.png?v8",cupcake:"unicode/1f9c1.png?v8",cupid:"unicode/1f498.png?v8",curacao:"unicode/1f1e8-1f1fc.png?v8",curling_stone:"unicode/1f94c.png?v8",curly_haired_man:"unicode/1f468-1f9b1.png?v8",curly_haired_woman:"unicode/1f469-1f9b1.png?v8",curly_loop:"unicode/27b0.png?v8",currency_exchange:"unicode/1f4b1.png?v8",curry:"unicode/1f35b.png?v8",cursing_face:"unicode/1f92c.png?v8",custard:"unicode/1f36e.png?v8",customs:"unicode/1f6c3.png?v8",cut_of_meat:"unicode/1f969.png?v8",cyclone:"unicode/1f300.png?v8",cyprus:"unicode/1f1e8-1f1fe.png?v8",czech_republic:"unicode/1f1e8-1f1ff.png?v8",dagger:"unicode/1f5e1.png?v8",dancer:"unicode/1f483.png?v8",dancers:"unicode/1f46f.png?v8",dancing_men:"unicode/1f46f-2642.png?v8",dancing_women:"unicode/1f46f-2640.png?v8",dango:"unicode/1f361.png?v8",dark_sunglasses:"unicode/1f576.png?v8",dart:"unicode/1f3af.png?v8",dash:"unicode/1f4a8.png?v8",date:"unicode/1f4c5.png?v8",de:"unicode/1f1e9-1f1ea.png?v8",deaf_man:"unicode/1f9cf-2642.png?v8",deaf_person:"unicode/1f9cf.png?v8",deaf_woman:"unicode/1f9cf-2640.png?v8",deciduous_tree:"unicode/1f333.png?v8",deer:"unicode/1f98c.png?v8",denmark:"unicode/1f1e9-1f1f0.png?v8",department_store:"unicode/1f3ec.png?v8",dependabot:"dependabot.png?v8",derelict_house:"unicode/1f3da.png?v8",desert:"unicode/1f3dc.png?v8",desert_island:"unicode/1f3dd.png?v8",desktop_computer:"unicode/1f5a5.png?v8",detective:"unicode/1f575.png?v8",diamond_shape_with_a_dot_inside:"unicode/1f4a0.png?v8",diamonds:"unicode/2666.png?v8",diego_garcia:"unicode/1f1e9-1f1ec.png?v8",disappointed:"unicode/1f61e.png?v8",disappointed_relieved:"unicode/1f625.png?v8",disguised_face:"unicode/1f978.png?v8",diving_mask:"unicode/1f93f.png?v8",diya_lamp:"unicode/1fa94.png?v8",dizzy:"unicode/1f4ab.png?v8",dizzy_face:"unicode/1f635.png?v8",djibouti:"unicode/1f1e9-1f1ef.png?v8",dna:"unicode/1f9ec.png?v8",do_not_litter:"unicode/1f6af.png?v8",dodo:"unicode/1f9a4.png?v8",dog:"unicode/1f436.png?v8",dog2:"unicode/1f415.png?v8",dollar:"unicode/1f4b5.png?v8",dolls:"unicode/1f38e.png?v8",dolphin:"unicode/1f42c.png?v8",dominica:"unicode/1f1e9-1f1f2.png?v8",dominican_republic:"unicode/1f1e9-1f1f4.png?v8",door:"unicode/1f6aa.png?v8",doughnut:"unicode/1f369.png?v8",dove:"unicode/1f54a.png?v8",dragon:"unicode/1f409.png?v8",dragon_face:"unicode/1f432.png?v8",dress:"unicode/1f457.png?v8",dromedary_camel:"unicode/1f42a.png?v8",drooling_face:"unicode/1f924.png?v8",drop_of_blood:"unicode/1fa78.png?v8",droplet:"unicode/1f4a7.png?v8",drum:"unicode/1f941.png?v8",duck:"unicode/1f986.png?v8",dumpling:"unicode/1f95f.png?v8",dvd:"unicode/1f4c0.png?v8","e-mail":"unicode/1f4e7.png?v8",eagle:"unicode/1f985.png?v8",ear:"unicode/1f442.png?v8",ear_of_rice:"unicode/1f33e.png?v8",ear_with_hearing_aid:"unicode/1f9bb.png?v8",earth_africa:"unicode/1f30d.png?v8",earth_americas:"unicode/1f30e.png?v8",earth_asia:"unicode/1f30f.png?v8",ecuador:"unicode/1f1ea-1f1e8.png?v8",egg:"unicode/1f95a.png?v8",eggplant:"unicode/1f346.png?v8",egypt:"unicode/1f1ea-1f1ec.png?v8",eight:"unicode/0038-20e3.png?v8",eight_pointed_black_star:"unicode/2734.png?v8",eight_spoked_asterisk:"unicode/2733.png?v8",eject_button:"unicode/23cf.png?v8",el_salvador:"unicode/1f1f8-1f1fb.png?v8",electric_plug:"unicode/1f50c.png?v8",electron:"electron.png?v8",elephant:"unicode/1f418.png?v8",elevator:"unicode/1f6d7.png?v8",elf:"unicode/1f9dd.png?v8",elf_man:"unicode/1f9dd-2642.png?v8",elf_woman:"unicode/1f9dd-2640.png?v8",email:"unicode/1f4e7.png?v8",end:"unicode/1f51a.png?v8",england:"unicode/1f3f4-e0067-e0062-e0065-e006e-e0067-e007f.png?v8",envelope:"unicode/2709.png?v8",envelope_with_arrow:"unicode/1f4e9.png?v8",equatorial_guinea:"unicode/1f1ec-1f1f6.png?v8",eritrea:"unicode/1f1ea-1f1f7.png?v8",es:"unicode/1f1ea-1f1f8.png?v8",estonia:"unicode/1f1ea-1f1ea.png?v8",ethiopia:"unicode/1f1ea-1f1f9.png?v8",eu:"unicode/1f1ea-1f1fa.png?v8",euro:"unicode/1f4b6.png?v8",european_castle:"unicode/1f3f0.png?v8",european_post_office:"unicode/1f3e4.png?v8",european_union:"unicode/1f1ea-1f1fa.png?v8",evergreen_tree:"unicode/1f332.png?v8",exclamation:"unicode/2757.png?v8",exploding_head:"unicode/1f92f.png?v8",expressionless:"unicode/1f611.png?v8",eye:"unicode/1f441.png?v8",eye_speech_bubble:"unicode/1f441-1f5e8.png?v8",eyeglasses:"unicode/1f453.png?v8",eyes:"unicode/1f440.png?v8",face_exhaling:"unicode/1f62e-1f4a8.png?v8",face_in_clouds:"unicode/1f636-1f32b.png?v8",face_with_head_bandage:"unicode/1f915.png?v8",face_with_spiral_eyes:"unicode/1f635-1f4ab.png?v8",face_with_thermometer:"unicode/1f912.png?v8",facepalm:"unicode/1f926.png?v8",facepunch:"unicode/1f44a.png?v8",factory:"unicode/1f3ed.png?v8",factory_worker:"unicode/1f9d1-1f3ed.png?v8",fairy:"unicode/1f9da.png?v8",fairy_man:"unicode/1f9da-2642.png?v8",fairy_woman:"unicode/1f9da-2640.png?v8",falafel:"unicode/1f9c6.png?v8",falkland_islands:"unicode/1f1eb-1f1f0.png?v8",fallen_leaf:"unicode/1f342.png?v8",family:"unicode/1f46a.png?v8",family_man_boy:"unicode/1f468-1f466.png?v8",family_man_boy_boy:"unicode/1f468-1f466-1f466.png?v8",family_man_girl:"unicode/1f468-1f467.png?v8",family_man_girl_boy:"unicode/1f468-1f467-1f466.png?v8",family_man_girl_girl:"unicode/1f468-1f467-1f467.png?v8",family_man_man_boy:"unicode/1f468-1f468-1f466.png?v8",family_man_man_boy_boy:"unicode/1f468-1f468-1f466-1f466.png?v8",family_man_man_girl:"unicode/1f468-1f468-1f467.png?v8",family_man_man_girl_boy:"unicode/1f468-1f468-1f467-1f466.png?v8",family_man_man_girl_girl:"unicode/1f468-1f468-1f467-1f467.png?v8",family_man_woman_boy:"unicode/1f468-1f469-1f466.png?v8",family_man_woman_boy_boy:"unicode/1f468-1f469-1f466-1f466.png?v8",family_man_woman_girl:"unicode/1f468-1f469-1f467.png?v8",family_man_woman_girl_boy:"unicode/1f468-1f469-1f467-1f466.png?v8",family_man_woman_girl_girl:"unicode/1f468-1f469-1f467-1f467.png?v8",family_woman_boy:"unicode/1f469-1f466.png?v8",family_woman_boy_boy:"unicode/1f469-1f466-1f466.png?v8",family_woman_girl:"unicode/1f469-1f467.png?v8",family_woman_girl_boy:"unicode/1f469-1f467-1f466.png?v8",family_woman_girl_girl:"unicode/1f469-1f467-1f467.png?v8",family_woman_woman_boy:"unicode/1f469-1f469-1f466.png?v8",family_woman_woman_boy_boy:"unicode/1f469-1f469-1f466-1f466.png?v8",family_woman_woman_girl:"unicode/1f469-1f469-1f467.png?v8",family_woman_woman_girl_boy:"unicode/1f469-1f469-1f467-1f466.png?v8",family_woman_woman_girl_girl:"unicode/1f469-1f469-1f467-1f467.png?v8",farmer:"unicode/1f9d1-1f33e.png?v8",faroe_islands:"unicode/1f1eb-1f1f4.png?v8",fast_forward:"unicode/23e9.png?v8",fax:"unicode/1f4e0.png?v8",fearful:"unicode/1f628.png?v8",feather:"unicode/1fab6.png?v8",feelsgood:"feelsgood.png?v8",feet:"unicode/1f43e.png?v8",female_detective:"unicode/1f575-2640.png?v8",female_sign:"unicode/2640.png?v8",ferris_wheel:"unicode/1f3a1.png?v8",ferry:"unicode/26f4.png?v8",field_hockey:"unicode/1f3d1.png?v8",fiji:"unicode/1f1eb-1f1ef.png?v8",file_cabinet:"unicode/1f5c4.png?v8",file_folder:"unicode/1f4c1.png?v8",film_projector:"unicode/1f4fd.png?v8",film_strip:"unicode/1f39e.png?v8",finland:"unicode/1f1eb-1f1ee.png?v8",finnadie:"finnadie.png?v8",fire:"unicode/1f525.png?v8",fire_engine:"unicode/1f692.png?v8",fire_extinguisher:"unicode/1f9ef.png?v8",firecracker:"unicode/1f9e8.png?v8",firefighter:"unicode/1f9d1-1f692.png?v8",fireworks:"unicode/1f386.png?v8",first_quarter_moon:"unicode/1f313.png?v8",first_quarter_moon_with_face:"unicode/1f31b.png?v8",fish:"unicode/1f41f.png?v8",fish_cake:"unicode/1f365.png?v8",fishing_pole_and_fish:"unicode/1f3a3.png?v8",fishsticks:"fishsticks.png?v8",fist:"unicode/270a.png?v8",fist_left:"unicode/1f91b.png?v8",fist_oncoming:"unicode/1f44a.png?v8",fist_raised:"unicode/270a.png?v8",fist_right:"unicode/1f91c.png?v8",five:"unicode/0035-20e3.png?v8",flags:"unicode/1f38f.png?v8",flamingo:"unicode/1f9a9.png?v8",flashlight:"unicode/1f526.png?v8",flat_shoe:"unicode/1f97f.png?v8",flatbread:"unicode/1fad3.png?v8",fleur_de_lis:"unicode/269c.png?v8",flight_arrival:"unicode/1f6ec.png?v8",flight_departure:"unicode/1f6eb.png?v8",flipper:"unicode/1f42c.png?v8",floppy_disk:"unicode/1f4be.png?v8",flower_playing_cards:"unicode/1f3b4.png?v8",flushed:"unicode/1f633.png?v8",fly:"unicode/1fab0.png?v8",flying_disc:"unicode/1f94f.png?v8",flying_saucer:"unicode/1f6f8.png?v8",fog:"unicode/1f32b.png?v8",foggy:"unicode/1f301.png?v8",fondue:"unicode/1fad5.png?v8",foot:"unicode/1f9b6.png?v8",football:"unicode/1f3c8.png?v8",footprints:"unicode/1f463.png?v8",fork_and_knife:"unicode/1f374.png?v8",fortune_cookie:"unicode/1f960.png?v8",fountain:"unicode/26f2.png?v8",fountain_pen:"unicode/1f58b.png?v8",four:"unicode/0034-20e3.png?v8",four_leaf_clover:"unicode/1f340.png?v8",fox_face:"unicode/1f98a.png?v8",fr:"unicode/1f1eb-1f1f7.png?v8",framed_picture:"unicode/1f5bc.png?v8",free:"unicode/1f193.png?v8",french_guiana:"unicode/1f1ec-1f1eb.png?v8",french_polynesia:"unicode/1f1f5-1f1eb.png?v8",french_southern_territories:"unicode/1f1f9-1f1eb.png?v8",fried_egg:"unicode/1f373.png?v8",fried_shrimp:"unicode/1f364.png?v8",fries:"unicode/1f35f.png?v8",frog:"unicode/1f438.png?v8",frowning:"unicode/1f626.png?v8",frowning_face:"unicode/2639.png?v8",frowning_man:"unicode/1f64d-2642.png?v8",frowning_person:"unicode/1f64d.png?v8",frowning_woman:"unicode/1f64d-2640.png?v8",fu:"unicode/1f595.png?v8",fuelpump:"unicode/26fd.png?v8",full_moon:"unicode/1f315.png?v8",full_moon_with_face:"unicode/1f31d.png?v8",funeral_urn:"unicode/26b1.png?v8",gabon:"unicode/1f1ec-1f1e6.png?v8",gambia:"unicode/1f1ec-1f1f2.png?v8",game_die:"unicode/1f3b2.png?v8",garlic:"unicode/1f9c4.png?v8",gb:"unicode/1f1ec-1f1e7.png?v8",gear:"unicode/2699.png?v8",gem:"unicode/1f48e.png?v8",gemini:"unicode/264a.png?v8",genie:"unicode/1f9de.png?v8",genie_man:"unicode/1f9de-2642.png?v8",genie_woman:"unicode/1f9de-2640.png?v8",georgia:"unicode/1f1ec-1f1ea.png?v8",ghana:"unicode/1f1ec-1f1ed.png?v8",ghost:"unicode/1f47b.png?v8",gibraltar:"unicode/1f1ec-1f1ee.png?v8",gift:"unicode/1f381.png?v8",gift_heart:"unicode/1f49d.png?v8",giraffe:"unicode/1f992.png?v8",girl:"unicode/1f467.png?v8",globe_with_meridians:"unicode/1f310.png?v8",gloves:"unicode/1f9e4.png?v8",goal_net:"unicode/1f945.png?v8",goat:"unicode/1f410.png?v8",goberserk:"goberserk.png?v8",godmode:"godmode.png?v8",goggles:"unicode/1f97d.png?v8",golf:"unicode/26f3.png?v8",golfing:"unicode/1f3cc.png?v8",golfing_man:"unicode/1f3cc-2642.png?v8",golfing_woman:"unicode/1f3cc-2640.png?v8",gorilla:"unicode/1f98d.png?v8",grapes:"unicode/1f347.png?v8",greece:"unicode/1f1ec-1f1f7.png?v8",green_apple:"unicode/1f34f.png?v8",green_book:"unicode/1f4d7.png?v8",green_circle:"unicode/1f7e2.png?v8",green_heart:"unicode/1f49a.png?v8",green_salad:"unicode/1f957.png?v8",green_square:"unicode/1f7e9.png?v8",greenland:"unicode/1f1ec-1f1f1.png?v8",grenada:"unicode/1f1ec-1f1e9.png?v8",grey_exclamation:"unicode/2755.png?v8",grey_question:"unicode/2754.png?v8",grimacing:"unicode/1f62c.png?v8",grin:"unicode/1f601.png?v8",grinning:"unicode/1f600.png?v8",guadeloupe:"unicode/1f1ec-1f1f5.png?v8",guam:"unicode/1f1ec-1f1fa.png?v8",guard:"unicode/1f482.png?v8",guardsman:"unicode/1f482-2642.png?v8",guardswoman:"unicode/1f482-2640.png?v8",guatemala:"unicode/1f1ec-1f1f9.png?v8",guernsey:"unicode/1f1ec-1f1ec.png?v8",guide_dog:"unicode/1f9ae.png?v8",guinea:"unicode/1f1ec-1f1f3.png?v8",guinea_bissau:"unicode/1f1ec-1f1fc.png?v8",guitar:"unicode/1f3b8.png?v8",gun:"unicode/1f52b.png?v8",guyana:"unicode/1f1ec-1f1fe.png?v8",haircut:"unicode/1f487.png?v8",haircut_man:"unicode/1f487-2642.png?v8",haircut_woman:"unicode/1f487-2640.png?v8",haiti:"unicode/1f1ed-1f1f9.png?v8",hamburger:"unicode/1f354.png?v8",hammer:"unicode/1f528.png?v8",hammer_and_pick:"unicode/2692.png?v8",hammer_and_wrench:"unicode/1f6e0.png?v8",hamster:"unicode/1f439.png?v8",hand:"unicode/270b.png?v8",hand_over_mouth:"unicode/1f92d.png?v8",handbag:"unicode/1f45c.png?v8",handball_person:"unicode/1f93e.png?v8",handshake:"unicode/1f91d.png?v8",hankey:"unicode/1f4a9.png?v8",hash:"unicode/0023-20e3.png?v8",hatched_chick:"unicode/1f425.png?v8",hatching_chick:"unicode/1f423.png?v8",headphones:"unicode/1f3a7.png?v8",headstone:"unicode/1faa6.png?v8",health_worker:"unicode/1f9d1-2695.png?v8",hear_no_evil:"unicode/1f649.png?v8",heard_mcdonald_islands:"unicode/1f1ed-1f1f2.png?v8",heart:"unicode/2764.png?v8",heart_decoration:"unicode/1f49f.png?v8",heart_eyes:"unicode/1f60d.png?v8",heart_eyes_cat:"unicode/1f63b.png?v8",heart_on_fire:"unicode/2764-1f525.png?v8",heartbeat:"unicode/1f493.png?v8",heartpulse:"unicode/1f497.png?v8",hearts:"unicode/2665.png?v8",heavy_check_mark:"unicode/2714.png?v8",heavy_division_sign:"unicode/2797.png?v8",heavy_dollar_sign:"unicode/1f4b2.png?v8",heavy_exclamation_mark:"unicode/2757.png?v8",heavy_heart_exclamation:"unicode/2763.png?v8",heavy_minus_sign:"unicode/2796.png?v8",heavy_multiplication_x:"unicode/2716.png?v8",heavy_plus_sign:"unicode/2795.png?v8",hedgehog:"unicode/1f994.png?v8",helicopter:"unicode/1f681.png?v8",herb:"unicode/1f33f.png?v8",hibiscus:"unicode/1f33a.png?v8",high_brightness:"unicode/1f506.png?v8",high_heel:"unicode/1f460.png?v8",hiking_boot:"unicode/1f97e.png?v8",hindu_temple:"unicode/1f6d5.png?v8",hippopotamus:"unicode/1f99b.png?v8",hocho:"unicode/1f52a.png?v8",hole:"unicode/1f573.png?v8",honduras:"unicode/1f1ed-1f1f3.png?v8",honey_pot:"unicode/1f36f.png?v8",honeybee:"unicode/1f41d.png?v8",hong_kong:"unicode/1f1ed-1f1f0.png?v8",hook:"unicode/1fa9d.png?v8",horse:"unicode/1f434.png?v8",horse_racing:"unicode/1f3c7.png?v8",hospital:"unicode/1f3e5.png?v8",hot_face:"unicode/1f975.png?v8",hot_pepper:"unicode/1f336.png?v8",hotdog:"unicode/1f32d.png?v8",hotel:"unicode/1f3e8.png?v8",hotsprings:"unicode/2668.png?v8",hourglass:"unicode/231b.png?v8",hourglass_flowing_sand:"unicode/23f3.png?v8",house:"unicode/1f3e0.png?v8",house_with_garden:"unicode/1f3e1.png?v8",houses:"unicode/1f3d8.png?v8",hugs:"unicode/1f917.png?v8",hungary:"unicode/1f1ed-1f1fa.png?v8",hurtrealbad:"hurtrealbad.png?v8",hushed:"unicode/1f62f.png?v8",hut:"unicode/1f6d6.png?v8",ice_cream:"unicode/1f368.png?v8",ice_cube:"unicode/1f9ca.png?v8",ice_hockey:"unicode/1f3d2.png?v8",ice_skate:"unicode/26f8.png?v8",icecream:"unicode/1f366.png?v8",iceland:"unicode/1f1ee-1f1f8.png?v8",id:"unicode/1f194.png?v8",ideograph_advantage:"unicode/1f250.png?v8",imp:"unicode/1f47f.png?v8",inbox_tray:"unicode/1f4e5.png?v8",incoming_envelope:"unicode/1f4e8.png?v8",india:"unicode/1f1ee-1f1f3.png?v8",indonesia:"unicode/1f1ee-1f1e9.png?v8",infinity:"unicode/267e.png?v8",information_desk_person:"unicode/1f481.png?v8",information_source:"unicode/2139.png?v8",innocent:"unicode/1f607.png?v8",interrobang:"unicode/2049.png?v8",iphone:"unicode/1f4f1.png?v8",iran:"unicode/1f1ee-1f1f7.png?v8",iraq:"unicode/1f1ee-1f1f6.png?v8",ireland:"unicode/1f1ee-1f1ea.png?v8",isle_of_man:"unicode/1f1ee-1f1f2.png?v8",israel:"unicode/1f1ee-1f1f1.png?v8",it:"unicode/1f1ee-1f1f9.png?v8",izakaya_lantern:"unicode/1f3ee.png?v8",jack_o_lantern:"unicode/1f383.png?v8",jamaica:"unicode/1f1ef-1f1f2.png?v8",japan:"unicode/1f5fe.png?v8",japanese_castle:"unicode/1f3ef.png?v8",japanese_goblin:"unicode/1f47a.png?v8",japanese_ogre:"unicode/1f479.png?v8",jeans:"unicode/1f456.png?v8",jersey:"unicode/1f1ef-1f1ea.png?v8",jigsaw:"unicode/1f9e9.png?v8",jordan:"unicode/1f1ef-1f1f4.png?v8",joy:"unicode/1f602.png?v8",joy_cat:"unicode/1f639.png?v8",joystick:"unicode/1f579.png?v8",jp:"unicode/1f1ef-1f1f5.png?v8",judge:"unicode/1f9d1-2696.png?v8",juggling_person:"unicode/1f939.png?v8",kaaba:"unicode/1f54b.png?v8",kangaroo:"unicode/1f998.png?v8",kazakhstan:"unicode/1f1f0-1f1ff.png?v8",kenya:"unicode/1f1f0-1f1ea.png?v8",key:"unicode/1f511.png?v8",keyboard:"unicode/2328.png?v8",keycap_ten:"unicode/1f51f.png?v8",kick_scooter:"unicode/1f6f4.png?v8",kimono:"unicode/1f458.png?v8",kiribati:"unicode/1f1f0-1f1ee.png?v8",kiss:"unicode/1f48b.png?v8",kissing:"unicode/1f617.png?v8",kissing_cat:"unicode/1f63d.png?v8",kissing_closed_eyes:"unicode/1f61a.png?v8",kissing_heart:"unicode/1f618.png?v8",kissing_smiling_eyes:"unicode/1f619.png?v8",kite:"unicode/1fa81.png?v8",kiwi_fruit:"unicode/1f95d.png?v8",kneeling_man:"unicode/1f9ce-2642.png?v8",kneeling_person:"unicode/1f9ce.png?v8",kneeling_woman:"unicode/1f9ce-2640.png?v8",knife:"unicode/1f52a.png?v8",knot:"unicode/1faa2.png?v8",koala:"unicode/1f428.png?v8",koko:"unicode/1f201.png?v8",kosovo:"unicode/1f1fd-1f1f0.png?v8",kr:"unicode/1f1f0-1f1f7.png?v8",kuwait:"unicode/1f1f0-1f1fc.png?v8",kyrgyzstan:"unicode/1f1f0-1f1ec.png?v8",lab_coat:"unicode/1f97c.png?v8",label:"unicode/1f3f7.png?v8",lacrosse:"unicode/1f94d.png?v8",ladder:"unicode/1fa9c.png?v8",lady_beetle:"unicode/1f41e.png?v8",lantern:"unicode/1f3ee.png?v8",laos:"unicode/1f1f1-1f1e6.png?v8",large_blue_circle:"unicode/1f535.png?v8",large_blue_diamond:"unicode/1f537.png?v8",large_orange_diamond:"unicode/1f536.png?v8",last_quarter_moon:"unicode/1f317.png?v8",last_quarter_moon_with_face:"unicode/1f31c.png?v8",latin_cross:"unicode/271d.png?v8",latvia:"unicode/1f1f1-1f1fb.png?v8",laughing:"unicode/1f606.png?v8",leafy_green:"unicode/1f96c.png?v8",leaves:"unicode/1f343.png?v8",lebanon:"unicode/1f1f1-1f1e7.png?v8",ledger:"unicode/1f4d2.png?v8",left_luggage:"unicode/1f6c5.png?v8",left_right_arrow:"unicode/2194.png?v8",left_speech_bubble:"unicode/1f5e8.png?v8",leftwards_arrow_with_hook:"unicode/21a9.png?v8",leg:"unicode/1f9b5.png?v8",lemon:"unicode/1f34b.png?v8",leo:"unicode/264c.png?v8",leopard:"unicode/1f406.png?v8",lesotho:"unicode/1f1f1-1f1f8.png?v8",level_slider:"unicode/1f39a.png?v8",liberia:"unicode/1f1f1-1f1f7.png?v8",libra:"unicode/264e.png?v8",libya:"unicode/1f1f1-1f1fe.png?v8",liechtenstein:"unicode/1f1f1-1f1ee.png?v8",light_rail:"unicode/1f688.png?v8",link:"unicode/1f517.png?v8",lion:"unicode/1f981.png?v8",lips:"unicode/1f444.png?v8",lipstick:"unicode/1f484.png?v8",lithuania:"unicode/1f1f1-1f1f9.png?v8",lizard:"unicode/1f98e.png?v8",llama:"unicode/1f999.png?v8",lobster:"unicode/1f99e.png?v8",lock:"unicode/1f512.png?v8",lock_with_ink_pen:"unicode/1f50f.png?v8",lollipop:"unicode/1f36d.png?v8",long_drum:"unicode/1fa98.png?v8",loop:"unicode/27bf.png?v8",lotion_bottle:"unicode/1f9f4.png?v8",lotus_position:"unicode/1f9d8.png?v8",lotus_position_man:"unicode/1f9d8-2642.png?v8",lotus_position_woman:"unicode/1f9d8-2640.png?v8",loud_sound:"unicode/1f50a.png?v8",loudspeaker:"unicode/1f4e2.png?v8",love_hotel:"unicode/1f3e9.png?v8",love_letter:"unicode/1f48c.png?v8",love_you_gesture:"unicode/1f91f.png?v8",low_brightness:"unicode/1f505.png?v8",luggage:"unicode/1f9f3.png?v8",lungs:"unicode/1fac1.png?v8",luxembourg:"unicode/1f1f1-1f1fa.png?v8",lying_face:"unicode/1f925.png?v8",m:"unicode/24c2.png?v8",macau:"unicode/1f1f2-1f1f4.png?v8",macedonia:"unicode/1f1f2-1f1f0.png?v8",madagascar:"unicode/1f1f2-1f1ec.png?v8",mag:"unicode/1f50d.png?v8",mag_right:"unicode/1f50e.png?v8",mage:"unicode/1f9d9.png?v8",mage_man:"unicode/1f9d9-2642.png?v8",mage_woman:"unicode/1f9d9-2640.png?v8",magic_wand:"unicode/1fa84.png?v8",magnet:"unicode/1f9f2.png?v8",mahjong:"unicode/1f004.png?v8",mailbox:"unicode/1f4eb.png?v8",mailbox_closed:"unicode/1f4ea.png?v8",mailbox_with_mail:"unicode/1f4ec.png?v8",mailbox_with_no_mail:"unicode/1f4ed.png?v8",malawi:"unicode/1f1f2-1f1fc.png?v8",malaysia:"unicode/1f1f2-1f1fe.png?v8",maldives:"unicode/1f1f2-1f1fb.png?v8",male_detective:"unicode/1f575-2642.png?v8",male_sign:"unicode/2642.png?v8",mali:"unicode/1f1f2-1f1f1.png?v8",malta:"unicode/1f1f2-1f1f9.png?v8",mammoth:"unicode/1f9a3.png?v8",man:"unicode/1f468.png?v8",man_artist:"unicode/1f468-1f3a8.png?v8",man_astronaut:"unicode/1f468-1f680.png?v8",man_beard:"unicode/1f9d4-2642.png?v8",man_cartwheeling:"unicode/1f938-2642.png?v8",man_cook:"unicode/1f468-1f373.png?v8",man_dancing:"unicode/1f57a.png?v8",man_facepalming:"unicode/1f926-2642.png?v8",man_factory_worker:"unicode/1f468-1f3ed.png?v8",man_farmer:"unicode/1f468-1f33e.png?v8",man_feeding_baby:"unicode/1f468-1f37c.png?v8",man_firefighter:"unicode/1f468-1f692.png?v8",man_health_worker:"unicode/1f468-2695.png?v8",man_in_manual_wheelchair:"unicode/1f468-1f9bd.png?v8",man_in_motorized_wheelchair:"unicode/1f468-1f9bc.png?v8",man_in_tuxedo:"unicode/1f935-2642.png?v8",man_judge:"unicode/1f468-2696.png?v8",man_juggling:"unicode/1f939-2642.png?v8",man_mechanic:"unicode/1f468-1f527.png?v8",man_office_worker:"unicode/1f468-1f4bc.png?v8",man_pilot:"unicode/1f468-2708.png?v8",man_playing_handball:"unicode/1f93e-2642.png?v8",man_playing_water_polo:"unicode/1f93d-2642.png?v8",man_scientist:"unicode/1f468-1f52c.png?v8",man_shrugging:"unicode/1f937-2642.png?v8",man_singer:"unicode/1f468-1f3a4.png?v8",man_student:"unicode/1f468-1f393.png?v8",man_teacher:"unicode/1f468-1f3eb.png?v8",man_technologist:"unicode/1f468-1f4bb.png?v8",man_with_gua_pi_mao:"unicode/1f472.png?v8",man_with_probing_cane:"unicode/1f468-1f9af.png?v8",man_with_turban:"unicode/1f473-2642.png?v8",man_with_veil:"unicode/1f470-2642.png?v8",mandarin:"unicode/1f34a.png?v8",mango:"unicode/1f96d.png?v8",mans_shoe:"unicode/1f45e.png?v8",mantelpiece_clock:"unicode/1f570.png?v8",manual_wheelchair:"unicode/1f9bd.png?v8",maple_leaf:"unicode/1f341.png?v8",marshall_islands:"unicode/1f1f2-1f1ed.png?v8",martial_arts_uniform:"unicode/1f94b.png?v8",martinique:"unicode/1f1f2-1f1f6.png?v8",mask:"unicode/1f637.png?v8",massage:"unicode/1f486.png?v8",massage_man:"unicode/1f486-2642.png?v8",massage_woman:"unicode/1f486-2640.png?v8",mate:"unicode/1f9c9.png?v8",mauritania:"unicode/1f1f2-1f1f7.png?v8",mauritius:"unicode/1f1f2-1f1fa.png?v8",mayotte:"unicode/1f1fe-1f1f9.png?v8",meat_on_bone:"unicode/1f356.png?v8",mechanic:"unicode/1f9d1-1f527.png?v8",mechanical_arm:"unicode/1f9be.png?v8",mechanical_leg:"unicode/1f9bf.png?v8",medal_military:"unicode/1f396.png?v8",medal_sports:"unicode/1f3c5.png?v8",medical_symbol:"unicode/2695.png?v8",mega:"unicode/1f4e3.png?v8",melon:"unicode/1f348.png?v8",memo:"unicode/1f4dd.png?v8",men_wrestling:"unicode/1f93c-2642.png?v8",mending_heart:"unicode/2764-1fa79.png?v8",menorah:"unicode/1f54e.png?v8",mens:"unicode/1f6b9.png?v8",mermaid:"unicode/1f9dc-2640.png?v8",merman:"unicode/1f9dc-2642.png?v8",merperson:"unicode/1f9dc.png?v8",metal:"unicode/1f918.png?v8",metro:"unicode/1f687.png?v8",mexico:"unicode/1f1f2-1f1fd.png?v8",microbe:"unicode/1f9a0.png?v8",micronesia:"unicode/1f1eb-1f1f2.png?v8",microphone:"unicode/1f3a4.png?v8",microscope:"unicode/1f52c.png?v8",middle_finger:"unicode/1f595.png?v8",military_helmet:"unicode/1fa96.png?v8",milk_glass:"unicode/1f95b.png?v8",milky_way:"unicode/1f30c.png?v8",minibus:"unicode/1f690.png?v8",minidisc:"unicode/1f4bd.png?v8",mirror:"unicode/1fa9e.png?v8",mobile_phone_off:"unicode/1f4f4.png?v8",moldova:"unicode/1f1f2-1f1e9.png?v8",monaco:"unicode/1f1f2-1f1e8.png?v8",money_mouth_face:"unicode/1f911.png?v8",money_with_wings:"unicode/1f4b8.png?v8",moneybag:"unicode/1f4b0.png?v8",mongolia:"unicode/1f1f2-1f1f3.png?v8",monkey:"unicode/1f412.png?v8",monkey_face:"unicode/1f435.png?v8",monocle_face:"unicode/1f9d0.png?v8",monorail:"unicode/1f69d.png?v8",montenegro:"unicode/1f1f2-1f1ea.png?v8",montserrat:"unicode/1f1f2-1f1f8.png?v8",moon:"unicode/1f314.png?v8",moon_cake:"unicode/1f96e.png?v8",morocco:"unicode/1f1f2-1f1e6.png?v8",mortar_board:"unicode/1f393.png?v8",mosque:"unicode/1f54c.png?v8",mosquito:"unicode/1f99f.png?v8",motor_boat:"unicode/1f6e5.png?v8",motor_scooter:"unicode/1f6f5.png?v8",motorcycle:"unicode/1f3cd.png?v8",motorized_wheelchair:"unicode/1f9bc.png?v8",motorway:"unicode/1f6e3.png?v8",mount_fuji:"unicode/1f5fb.png?v8",mountain:"unicode/26f0.png?v8",mountain_bicyclist:"unicode/1f6b5.png?v8",mountain_biking_man:"unicode/1f6b5-2642.png?v8",mountain_biking_woman:"unicode/1f6b5-2640.png?v8",mountain_cableway:"unicode/1f6a0.png?v8",mountain_railway:"unicode/1f69e.png?v8",mountain_snow:"unicode/1f3d4.png?v8",mouse:"unicode/1f42d.png?v8",mouse2:"unicode/1f401.png?v8",mouse_trap:"unicode/1faa4.png?v8",movie_camera:"unicode/1f3a5.png?v8",moyai:"unicode/1f5ff.png?v8",mozambique:"unicode/1f1f2-1f1ff.png?v8",mrs_claus:"unicode/1f936.png?v8",muscle:"unicode/1f4aa.png?v8",mushroom:"unicode/1f344.png?v8",musical_keyboard:"unicode/1f3b9.png?v8",musical_note:"unicode/1f3b5.png?v8",musical_score:"unicode/1f3bc.png?v8",mute:"unicode/1f507.png?v8",mx_claus:"unicode/1f9d1-1f384.png?v8",myanmar:"unicode/1f1f2-1f1f2.png?v8",nail_care:"unicode/1f485.png?v8",name_badge:"unicode/1f4db.png?v8",namibia:"unicode/1f1f3-1f1e6.png?v8",national_park:"unicode/1f3de.png?v8",nauru:"unicode/1f1f3-1f1f7.png?v8",nauseated_face:"unicode/1f922.png?v8",nazar_amulet:"unicode/1f9ff.png?v8",neckbeard:"neckbeard.png?v8",necktie:"unicode/1f454.png?v8",negative_squared_cross_mark:"unicode/274e.png?v8",nepal:"unicode/1f1f3-1f1f5.png?v8",nerd_face:"unicode/1f913.png?v8",nesting_dolls:"unicode/1fa86.png?v8",netherlands:"unicode/1f1f3-1f1f1.png?v8",neutral_face:"unicode/1f610.png?v8",new:"unicode/1f195.png?v8",new_caledonia:"unicode/1f1f3-1f1e8.png?v8",new_moon:"unicode/1f311.png?v8",new_moon_with_face:"unicode/1f31a.png?v8",new_zealand:"unicode/1f1f3-1f1ff.png?v8",newspaper:"unicode/1f4f0.png?v8",newspaper_roll:"unicode/1f5de.png?v8",next_track_button:"unicode/23ed.png?v8",ng:"unicode/1f196.png?v8",ng_man:"unicode/1f645-2642.png?v8",ng_woman:"unicode/1f645-2640.png?v8",nicaragua:"unicode/1f1f3-1f1ee.png?v8",niger:"unicode/1f1f3-1f1ea.png?v8",nigeria:"unicode/1f1f3-1f1ec.png?v8",night_with_stars:"unicode/1f303.png?v8",nine:"unicode/0039-20e3.png?v8",ninja:"unicode/1f977.png?v8",niue:"unicode/1f1f3-1f1fa.png?v8",no_bell:"unicode/1f515.png?v8",no_bicycles:"unicode/1f6b3.png?v8",no_entry:"unicode/26d4.png?v8",no_entry_sign:"unicode/1f6ab.png?v8",no_good:"unicode/1f645.png?v8",no_good_man:"unicode/1f645-2642.png?v8",no_good_woman:"unicode/1f645-2640.png?v8",no_mobile_phones:"unicode/1f4f5.png?v8",no_mouth:"unicode/1f636.png?v8",no_pedestrians:"unicode/1f6b7.png?v8",no_smoking:"unicode/1f6ad.png?v8","non-potable_water":"unicode/1f6b1.png?v8",norfolk_island:"unicode/1f1f3-1f1eb.png?v8",north_korea:"unicode/1f1f0-1f1f5.png?v8",northern_mariana_islands:"unicode/1f1f2-1f1f5.png?v8",norway:"unicode/1f1f3-1f1f4.png?v8",nose:"unicode/1f443.png?v8",notebook:"unicode/1f4d3.png?v8",notebook_with_decorative_cover:"unicode/1f4d4.png?v8",notes:"unicode/1f3b6.png?v8",nut_and_bolt:"unicode/1f529.png?v8",o:"unicode/2b55.png?v8",o2:"unicode/1f17e.png?v8",ocean:"unicode/1f30a.png?v8",octocat:"octocat.png?v8",octopus:"unicode/1f419.png?v8",oden:"unicode/1f362.png?v8",office:"unicode/1f3e2.png?v8",office_worker:"unicode/1f9d1-1f4bc.png?v8",oil_drum:"unicode/1f6e2.png?v8",ok:"unicode/1f197.png?v8",ok_hand:"unicode/1f44c.png?v8",ok_man:"unicode/1f646-2642.png?v8",ok_person:"unicode/1f646.png?v8",ok_woman:"unicode/1f646-2640.png?v8",old_key:"unicode/1f5dd.png?v8",older_adult:"unicode/1f9d3.png?v8",older_man:"unicode/1f474.png?v8",older_woman:"unicode/1f475.png?v8",olive:"unicode/1fad2.png?v8",om:"unicode/1f549.png?v8",oman:"unicode/1f1f4-1f1f2.png?v8",on:"unicode/1f51b.png?v8",oncoming_automobile:"unicode/1f698.png?v8",oncoming_bus:"unicode/1f68d.png?v8",oncoming_police_car:"unicode/1f694.png?v8",oncoming_taxi:"unicode/1f696.png?v8",one:"unicode/0031-20e3.png?v8",one_piece_swimsuit:"unicode/1fa71.png?v8",onion:"unicode/1f9c5.png?v8",open_book:"unicode/1f4d6.png?v8",open_file_folder:"unicode/1f4c2.png?v8",open_hands:"unicode/1f450.png?v8",open_mouth:"unicode/1f62e.png?v8",open_umbrella:"unicode/2602.png?v8",ophiuchus:"unicode/26ce.png?v8",orange:"unicode/1f34a.png?v8",orange_book:"unicode/1f4d9.png?v8",orange_circle:"unicode/1f7e0.png?v8",orange_heart:"unicode/1f9e1.png?v8",orange_square:"unicode/1f7e7.png?v8",orangutan:"unicode/1f9a7.png?v8",orthodox_cross:"unicode/2626.png?v8",otter:"unicode/1f9a6.png?v8",outbox_tray:"unicode/1f4e4.png?v8",owl:"unicode/1f989.png?v8",ox:"unicode/1f402.png?v8",oyster:"unicode/1f9aa.png?v8",package:"unicode/1f4e6.png?v8",page_facing_up:"unicode/1f4c4.png?v8",page_with_curl:"unicode/1f4c3.png?v8",pager:"unicode/1f4df.png?v8",paintbrush:"unicode/1f58c.png?v8",pakistan:"unicode/1f1f5-1f1f0.png?v8",palau:"unicode/1f1f5-1f1fc.png?v8",palestinian_territories:"unicode/1f1f5-1f1f8.png?v8",palm_tree:"unicode/1f334.png?v8",palms_up_together:"unicode/1f932.png?v8",panama:"unicode/1f1f5-1f1e6.png?v8",pancakes:"unicode/1f95e.png?v8",panda_face:"unicode/1f43c.png?v8",paperclip:"unicode/1f4ce.png?v8",paperclips:"unicode/1f587.png?v8",papua_new_guinea:"unicode/1f1f5-1f1ec.png?v8",parachute:"unicode/1fa82.png?v8",paraguay:"unicode/1f1f5-1f1fe.png?v8",parasol_on_ground:"unicode/26f1.png?v8",parking:"unicode/1f17f.png?v8",parrot:"unicode/1f99c.png?v8",part_alternation_mark:"unicode/303d.png?v8",partly_sunny:"unicode/26c5.png?v8",partying_face:"unicode/1f973.png?v8",passenger_ship:"unicode/1f6f3.png?v8",passport_control:"unicode/1f6c2.png?v8",pause_button:"unicode/23f8.png?v8",paw_prints:"unicode/1f43e.png?v8",peace_symbol:"unicode/262e.png?v8",peach:"unicode/1f351.png?v8",peacock:"unicode/1f99a.png?v8",peanuts:"unicode/1f95c.png?v8",pear:"unicode/1f350.png?v8",pen:"unicode/1f58a.png?v8",pencil:"unicode/1f4dd.png?v8",pencil2:"unicode/270f.png?v8",penguin:"unicode/1f427.png?v8",pensive:"unicode/1f614.png?v8",people_holding_hands:"unicode/1f9d1-1f91d-1f9d1.png?v8",people_hugging:"unicode/1fac2.png?v8",performing_arts:"unicode/1f3ad.png?v8",persevere:"unicode/1f623.png?v8",person_bald:"unicode/1f9d1-1f9b2.png?v8",person_curly_hair:"unicode/1f9d1-1f9b1.png?v8",person_feeding_baby:"unicode/1f9d1-1f37c.png?v8",person_fencing:"unicode/1f93a.png?v8",person_in_manual_wheelchair:"unicode/1f9d1-1f9bd.png?v8",person_in_motorized_wheelchair:"unicode/1f9d1-1f9bc.png?v8",person_in_tuxedo:"unicode/1f935.png?v8",person_red_hair:"unicode/1f9d1-1f9b0.png?v8",person_white_hair:"unicode/1f9d1-1f9b3.png?v8",person_with_probing_cane:"unicode/1f9d1-1f9af.png?v8",person_with_turban:"unicode/1f473.png?v8",person_with_veil:"unicode/1f470.png?v8",peru:"unicode/1f1f5-1f1ea.png?v8",petri_dish:"unicode/1f9eb.png?v8",philippines:"unicode/1f1f5-1f1ed.png?v8",phone:"unicode/260e.png?v8",pick:"unicode/26cf.png?v8",pickup_truck:"unicode/1f6fb.png?v8",pie:"unicode/1f967.png?v8",pig:"unicode/1f437.png?v8",pig2:"unicode/1f416.png?v8",pig_nose:"unicode/1f43d.png?v8",pill:"unicode/1f48a.png?v8",pilot:"unicode/1f9d1-2708.png?v8",pinata:"unicode/1fa85.png?v8",pinched_fingers:"unicode/1f90c.png?v8",pinching_hand:"unicode/1f90f.png?v8",pineapple:"unicode/1f34d.png?v8",ping_pong:"unicode/1f3d3.png?v8",pirate_flag:"unicode/1f3f4-2620.png?v8",pisces:"unicode/2653.png?v8",pitcairn_islands:"unicode/1f1f5-1f1f3.png?v8",pizza:"unicode/1f355.png?v8",placard:"unicode/1faa7.png?v8",place_of_worship:"unicode/1f6d0.png?v8",plate_with_cutlery:"unicode/1f37d.png?v8",play_or_pause_button:"unicode/23ef.png?v8",pleading_face:"unicode/1f97a.png?v8",plunger:"unicode/1faa0.png?v8",point_down:"unicode/1f447.png?v8",point_left:"unicode/1f448.png?v8",point_right:"unicode/1f449.png?v8",point_up:"unicode/261d.png?v8",point_up_2:"unicode/1f446.png?v8",poland:"unicode/1f1f5-1f1f1.png?v8",polar_bear:"unicode/1f43b-2744.png?v8",police_car:"unicode/1f693.png?v8",police_officer:"unicode/1f46e.png?v8",policeman:"unicode/1f46e-2642.png?v8",policewoman:"unicode/1f46e-2640.png?v8",poodle:"unicode/1f429.png?v8",poop:"unicode/1f4a9.png?v8",popcorn:"unicode/1f37f.png?v8",portugal:"unicode/1f1f5-1f1f9.png?v8",post_office:"unicode/1f3e3.png?v8",postal_horn:"unicode/1f4ef.png?v8",postbox:"unicode/1f4ee.png?v8",potable_water:"unicode/1f6b0.png?v8",potato:"unicode/1f954.png?v8",potted_plant:"unicode/1fab4.png?v8",pouch:"unicode/1f45d.png?v8",poultry_leg:"unicode/1f357.png?v8",pound:"unicode/1f4b7.png?v8",pout:"unicode/1f621.png?v8",pouting_cat:"unicode/1f63e.png?v8",pouting_face:"unicode/1f64e.png?v8",pouting_man:"unicode/1f64e-2642.png?v8",pouting_woman:"unicode/1f64e-2640.png?v8",pray:"unicode/1f64f.png?v8",prayer_beads:"unicode/1f4ff.png?v8",pregnant_woman:"unicode/1f930.png?v8",pretzel:"unicode/1f968.png?v8",previous_track_button:"unicode/23ee.png?v8",prince:"unicode/1f934.png?v8",princess:"unicode/1f478.png?v8",printer:"unicode/1f5a8.png?v8",probing_cane:"unicode/1f9af.png?v8",puerto_rico:"unicode/1f1f5-1f1f7.png?v8",punch:"unicode/1f44a.png?v8",purple_circle:"unicode/1f7e3.png?v8",purple_heart:"unicode/1f49c.png?v8",purple_square:"unicode/1f7ea.png?v8",purse:"unicode/1f45b.png?v8",pushpin:"unicode/1f4cc.png?v8",put_litter_in_its_place:"unicode/1f6ae.png?v8",qatar:"unicode/1f1f6-1f1e6.png?v8",question:"unicode/2753.png?v8",rabbit:"unicode/1f430.png?v8",rabbit2:"unicode/1f407.png?v8",raccoon:"unicode/1f99d.png?v8",racehorse:"unicode/1f40e.png?v8",racing_car:"unicode/1f3ce.png?v8",radio:"unicode/1f4fb.png?v8",radio_button:"unicode/1f518.png?v8",radioactive:"unicode/2622.png?v8",rage:"unicode/1f621.png?v8",rage1:"rage1.png?v8",rage2:"rage2.png?v8",rage3:"rage3.png?v8",rage4:"rage4.png?v8",railway_car:"unicode/1f683.png?v8",railway_track:"unicode/1f6e4.png?v8",rainbow:"unicode/1f308.png?v8",rainbow_flag:"unicode/1f3f3-1f308.png?v8",raised_back_of_hand:"unicode/1f91a.png?v8",raised_eyebrow:"unicode/1f928.png?v8",raised_hand:"unicode/270b.png?v8",raised_hand_with_fingers_splayed:"unicode/1f590.png?v8",raised_hands:"unicode/1f64c.png?v8",raising_hand:"unicode/1f64b.png?v8",raising_hand_man:"unicode/1f64b-2642.png?v8",raising_hand_woman:"unicode/1f64b-2640.png?v8",ram:"unicode/1f40f.png?v8",ramen:"unicode/1f35c.png?v8",rat:"unicode/1f400.png?v8",razor:"unicode/1fa92.png?v8",receipt:"unicode/1f9fe.png?v8",record_button:"unicode/23fa.png?v8",recycle:"unicode/267b.png?v8",red_car:"unicode/1f697.png?v8",red_circle:"unicode/1f534.png?v8",red_envelope:"unicode/1f9e7.png?v8",red_haired_man:"unicode/1f468-1f9b0.png?v8",red_haired_woman:"unicode/1f469-1f9b0.png?v8",red_square:"unicode/1f7e5.png?v8",registered:"unicode/00ae.png?v8",relaxed:"unicode/263a.png?v8",relieved:"unicode/1f60c.png?v8",reminder_ribbon:"unicode/1f397.png?v8",repeat:"unicode/1f501.png?v8",repeat_one:"unicode/1f502.png?v8",rescue_worker_helmet:"unicode/26d1.png?v8",restroom:"unicode/1f6bb.png?v8",reunion:"unicode/1f1f7-1f1ea.png?v8",revolving_hearts:"unicode/1f49e.png?v8",rewind:"unicode/23ea.png?v8",rhinoceros:"unicode/1f98f.png?v8",ribbon:"unicode/1f380.png?v8",rice:"unicode/1f35a.png?v8",rice_ball:"unicode/1f359.png?v8",rice_cracker:"unicode/1f358.png?v8",rice_scene:"unicode/1f391.png?v8",right_anger_bubble:"unicode/1f5ef.png?v8",ring:"unicode/1f48d.png?v8",ringed_planet:"unicode/1fa90.png?v8",robot:"unicode/1f916.png?v8",rock:"unicode/1faa8.png?v8",rocket:"unicode/1f680.png?v8",rofl:"unicode/1f923.png?v8",roll_eyes:"unicode/1f644.png?v8",roll_of_paper:"unicode/1f9fb.png?v8",roller_coaster:"unicode/1f3a2.png?v8",roller_skate:"unicode/1f6fc.png?v8",romania:"unicode/1f1f7-1f1f4.png?v8",rooster:"unicode/1f413.png?v8",rose:"unicode/1f339.png?v8",rosette:"unicode/1f3f5.png?v8",rotating_light:"unicode/1f6a8.png?v8",round_pushpin:"unicode/1f4cd.png?v8",rowboat:"unicode/1f6a3.png?v8",rowing_man:"unicode/1f6a3-2642.png?v8",rowing_woman:"unicode/1f6a3-2640.png?v8",ru:"unicode/1f1f7-1f1fa.png?v8",rugby_football:"unicode/1f3c9.png?v8",runner:"unicode/1f3c3.png?v8",running:"unicode/1f3c3.png?v8",running_man:"unicode/1f3c3-2642.png?v8",running_shirt_with_sash:"unicode/1f3bd.png?v8",running_woman:"unicode/1f3c3-2640.png?v8",rwanda:"unicode/1f1f7-1f1fc.png?v8",sa:"unicode/1f202.png?v8",safety_pin:"unicode/1f9f7.png?v8",safety_vest:"unicode/1f9ba.png?v8",sagittarius:"unicode/2650.png?v8",sailboat:"unicode/26f5.png?v8",sake:"unicode/1f376.png?v8",salt:"unicode/1f9c2.png?v8",samoa:"unicode/1f1fc-1f1f8.png?v8",san_marino:"unicode/1f1f8-1f1f2.png?v8",sandal:"unicode/1f461.png?v8",sandwich:"unicode/1f96a.png?v8",santa:"unicode/1f385.png?v8",sao_tome_principe:"unicode/1f1f8-1f1f9.png?v8",sari:"unicode/1f97b.png?v8",sassy_man:"unicode/1f481-2642.png?v8",sassy_woman:"unicode/1f481-2640.png?v8",satellite:"unicode/1f4e1.png?v8",satisfied:"unicode/1f606.png?v8",saudi_arabia:"unicode/1f1f8-1f1e6.png?v8",sauna_man:"unicode/1f9d6-2642.png?v8",sauna_person:"unicode/1f9d6.png?v8",sauna_woman:"unicode/1f9d6-2640.png?v8",sauropod:"unicode/1f995.png?v8",saxophone:"unicode/1f3b7.png?v8",scarf:"unicode/1f9e3.png?v8",school:"unicode/1f3eb.png?v8",school_satchel:"unicode/1f392.png?v8",scientist:"unicode/1f9d1-1f52c.png?v8",scissors:"unicode/2702.png?v8",scorpion:"unicode/1f982.png?v8",scorpius:"unicode/264f.png?v8",scotland:"unicode/1f3f4-e0067-e0062-e0073-e0063-e0074-e007f.png?v8",scream:"unicode/1f631.png?v8",scream_cat:"unicode/1f640.png?v8",screwdriver:"unicode/1fa9b.png?v8",scroll:"unicode/1f4dc.png?v8",seal:"unicode/1f9ad.png?v8",seat:"unicode/1f4ba.png?v8",secret:"unicode/3299.png?v8",see_no_evil:"unicode/1f648.png?v8",seedling:"unicode/1f331.png?v8",selfie:"unicode/1f933.png?v8",senegal:"unicode/1f1f8-1f1f3.png?v8",serbia:"unicode/1f1f7-1f1f8.png?v8",service_dog:"unicode/1f415-1f9ba.png?v8",seven:"unicode/0037-20e3.png?v8",sewing_needle:"unicode/1faa1.png?v8",seychelles:"unicode/1f1f8-1f1e8.png?v8",shallow_pan_of_food:"unicode/1f958.png?v8",shamrock:"unicode/2618.png?v8",shark:"unicode/1f988.png?v8",shaved_ice:"unicode/1f367.png?v8",sheep:"unicode/1f411.png?v8",shell:"unicode/1f41a.png?v8",shield:"unicode/1f6e1.png?v8",shinto_shrine:"unicode/26e9.png?v8",ship:"unicode/1f6a2.png?v8",shipit:"shipit.png?v8",shirt:"unicode/1f455.png?v8",shit:"unicode/1f4a9.png?v8",shoe:"unicode/1f45e.png?v8",shopping:"unicode/1f6cd.png?v8",shopping_cart:"unicode/1f6d2.png?v8",shorts:"unicode/1fa73.png?v8",shower:"unicode/1f6bf.png?v8",shrimp:"unicode/1f990.png?v8",shrug:"unicode/1f937.png?v8",shushing_face:"unicode/1f92b.png?v8",sierra_leone:"unicode/1f1f8-1f1f1.png?v8",signal_strength:"unicode/1f4f6.png?v8",singapore:"unicode/1f1f8-1f1ec.png?v8",singer:"unicode/1f9d1-1f3a4.png?v8",sint_maarten:"unicode/1f1f8-1f1fd.png?v8",six:"unicode/0036-20e3.png?v8",six_pointed_star:"unicode/1f52f.png?v8",skateboard:"unicode/1f6f9.png?v8",ski:"unicode/1f3bf.png?v8",skier:"unicode/26f7.png?v8",skull:"unicode/1f480.png?v8",skull_and_crossbones:"unicode/2620.png?v8",skunk:"unicode/1f9a8.png?v8",sled:"unicode/1f6f7.png?v8",sleeping:"unicode/1f634.png?v8",sleeping_bed:"unicode/1f6cc.png?v8",sleepy:"unicode/1f62a.png?v8",slightly_frowning_face:"unicode/1f641.png?v8",slightly_smiling_face:"unicode/1f642.png?v8",slot_machine:"unicode/1f3b0.png?v8",sloth:"unicode/1f9a5.png?v8",slovakia:"unicode/1f1f8-1f1f0.png?v8",slovenia:"unicode/1f1f8-1f1ee.png?v8",small_airplane:"unicode/1f6e9.png?v8",small_blue_diamond:"unicode/1f539.png?v8",small_orange_diamond:"unicode/1f538.png?v8",small_red_triangle:"unicode/1f53a.png?v8",small_red_triangle_down:"unicode/1f53b.png?v8",smile:"unicode/1f604.png?v8",smile_cat:"unicode/1f638.png?v8",smiley:"unicode/1f603.png?v8",smiley_cat:"unicode/1f63a.png?v8",smiling_face_with_tear:"unicode/1f972.png?v8",smiling_face_with_three_hearts:"unicode/1f970.png?v8",smiling_imp:"unicode/1f608.png?v8",smirk:"unicode/1f60f.png?v8",smirk_cat:"unicode/1f63c.png?v8",smoking:"unicode/1f6ac.png?v8",snail:"unicode/1f40c.png?v8",snake:"unicode/1f40d.png?v8",sneezing_face:"unicode/1f927.png?v8",snowboarder:"unicode/1f3c2.png?v8",snowflake:"unicode/2744.png?v8",snowman:"unicode/26c4.png?v8",snowman_with_snow:"unicode/2603.png?v8",soap:"unicode/1f9fc.png?v8",sob:"unicode/1f62d.png?v8",soccer:"unicode/26bd.png?v8",socks:"unicode/1f9e6.png?v8",softball:"unicode/1f94e.png?v8",solomon_islands:"unicode/1f1f8-1f1e7.png?v8",somalia:"unicode/1f1f8-1f1f4.png?v8",soon:"unicode/1f51c.png?v8",sos:"unicode/1f198.png?v8",sound:"unicode/1f509.png?v8",south_africa:"unicode/1f1ff-1f1e6.png?v8",south_georgia_south_sandwich_islands:"unicode/1f1ec-1f1f8.png?v8",south_sudan:"unicode/1f1f8-1f1f8.png?v8",space_invader:"unicode/1f47e.png?v8",spades:"unicode/2660.png?v8",spaghetti:"unicode/1f35d.png?v8",sparkle:"unicode/2747.png?v8",sparkler:"unicode/1f387.png?v8",sparkles:"unicode/2728.png?v8",sparkling_heart:"unicode/1f496.png?v8",speak_no_evil:"unicode/1f64a.png?v8",speaker:"unicode/1f508.png?v8",speaking_head:"unicode/1f5e3.png?v8",speech_balloon:"unicode/1f4ac.png?v8",speedboat:"unicode/1f6a4.png?v8",spider:"unicode/1f577.png?v8",spider_web:"unicode/1f578.png?v8",spiral_calendar:"unicode/1f5d3.png?v8",spiral_notepad:"unicode/1f5d2.png?v8",sponge:"unicode/1f9fd.png?v8",spoon:"unicode/1f944.png?v8",squid:"unicode/1f991.png?v8",sri_lanka:"unicode/1f1f1-1f1f0.png?v8",st_barthelemy:"unicode/1f1e7-1f1f1.png?v8",st_helena:"unicode/1f1f8-1f1ed.png?v8",st_kitts_nevis:"unicode/1f1f0-1f1f3.png?v8",st_lucia:"unicode/1f1f1-1f1e8.png?v8",st_martin:"unicode/1f1f2-1f1eb.png?v8",st_pierre_miquelon:"unicode/1f1f5-1f1f2.png?v8",st_vincent_grenadines:"unicode/1f1fb-1f1e8.png?v8",stadium:"unicode/1f3df.png?v8",standing_man:"unicode/1f9cd-2642.png?v8",standing_person:"unicode/1f9cd.png?v8",standing_woman:"unicode/1f9cd-2640.png?v8",star:"unicode/2b50.png?v8",star2:"unicode/1f31f.png?v8",star_and_crescent:"unicode/262a.png?v8",star_of_david:"unicode/2721.png?v8",star_struck:"unicode/1f929.png?v8",stars:"unicode/1f320.png?v8",station:"unicode/1f689.png?v8",statue_of_liberty:"unicode/1f5fd.png?v8",steam_locomotive:"unicode/1f682.png?v8",stethoscope:"unicode/1fa7a.png?v8",stew:"unicode/1f372.png?v8",stop_button:"unicode/23f9.png?v8",stop_sign:"unicode/1f6d1.png?v8",stopwatch:"unicode/23f1.png?v8",straight_ruler:"unicode/1f4cf.png?v8",strawberry:"unicode/1f353.png?v8",stuck_out_tongue:"unicode/1f61b.png?v8",stuck_out_tongue_closed_eyes:"unicode/1f61d.png?v8",stuck_out_tongue_winking_eye:"unicode/1f61c.png?v8",student:"unicode/1f9d1-1f393.png?v8",studio_microphone:"unicode/1f399.png?v8",stuffed_flatbread:"unicode/1f959.png?v8",sudan:"unicode/1f1f8-1f1e9.png?v8",sun_behind_large_cloud:"unicode/1f325.png?v8",sun_behind_rain_cloud:"unicode/1f326.png?v8",sun_behind_small_cloud:"unicode/1f324.png?v8",sun_with_face:"unicode/1f31e.png?v8",sunflower:"unicode/1f33b.png?v8",sunglasses:"unicode/1f60e.png?v8",sunny:"unicode/2600.png?v8",sunrise:"unicode/1f305.png?v8",sunrise_over_mountains:"unicode/1f304.png?v8",superhero:"unicode/1f9b8.png?v8",superhero_man:"unicode/1f9b8-2642.png?v8",superhero_woman:"unicode/1f9b8-2640.png?v8",supervillain:"unicode/1f9b9.png?v8",supervillain_man:"unicode/1f9b9-2642.png?v8",supervillain_woman:"unicode/1f9b9-2640.png?v8",surfer:"unicode/1f3c4.png?v8",surfing_man:"unicode/1f3c4-2642.png?v8",surfing_woman:"unicode/1f3c4-2640.png?v8",suriname:"unicode/1f1f8-1f1f7.png?v8",sushi:"unicode/1f363.png?v8",suspect:"suspect.png?v8",suspension_railway:"unicode/1f69f.png?v8",svalbard_jan_mayen:"unicode/1f1f8-1f1ef.png?v8",swan:"unicode/1f9a2.png?v8",swaziland:"unicode/1f1f8-1f1ff.png?v8",sweat:"unicode/1f613.png?v8",sweat_drops:"unicode/1f4a6.png?v8",sweat_smile:"unicode/1f605.png?v8",sweden:"unicode/1f1f8-1f1ea.png?v8",sweet_potato:"unicode/1f360.png?v8",swim_brief:"unicode/1fa72.png?v8",swimmer:"unicode/1f3ca.png?v8",swimming_man:"unicode/1f3ca-2642.png?v8",swimming_woman:"unicode/1f3ca-2640.png?v8",switzerland:"unicode/1f1e8-1f1ed.png?v8",symbols:"unicode/1f523.png?v8",synagogue:"unicode/1f54d.png?v8",syria:"unicode/1f1f8-1f1fe.png?v8",syringe:"unicode/1f489.png?v8","t-rex":"unicode/1f996.png?v8",taco:"unicode/1f32e.png?v8",tada:"unicode/1f389.png?v8",taiwan:"unicode/1f1f9-1f1fc.png?v8",tajikistan:"unicode/1f1f9-1f1ef.png?v8",takeout_box:"unicode/1f961.png?v8",tamale:"unicode/1fad4.png?v8",tanabata_tree:"unicode/1f38b.png?v8",tangerine:"unicode/1f34a.png?v8",tanzania:"unicode/1f1f9-1f1ff.png?v8",taurus:"unicode/2649.png?v8",taxi:"unicode/1f695.png?v8",tea:"unicode/1f375.png?v8",teacher:"unicode/1f9d1-1f3eb.png?v8",teapot:"unicode/1fad6.png?v8",technologist:"unicode/1f9d1-1f4bb.png?v8",teddy_bear:"unicode/1f9f8.png?v8",telephone:"unicode/260e.png?v8",telephone_receiver:"unicode/1f4de.png?v8",telescope:"unicode/1f52d.png?v8",tennis:"unicode/1f3be.png?v8",tent:"unicode/26fa.png?v8",test_tube:"unicode/1f9ea.png?v8",thailand:"unicode/1f1f9-1f1ed.png?v8",thermometer:"unicode/1f321.png?v8",thinking:"unicode/1f914.png?v8",thong_sandal:"unicode/1fa74.png?v8",thought_balloon:"unicode/1f4ad.png?v8",thread:"unicode/1f9f5.png?v8",three:"unicode/0033-20e3.png?v8",thumbsdown:"unicode/1f44e.png?v8",thumbsup:"unicode/1f44d.png?v8",ticket:"unicode/1f3ab.png?v8",tickets:"unicode/1f39f.png?v8",tiger:"unicode/1f42f.png?v8",tiger2:"unicode/1f405.png?v8",timer_clock:"unicode/23f2.png?v8",timor_leste:"unicode/1f1f9-1f1f1.png?v8",tipping_hand_man:"unicode/1f481-2642.png?v8",tipping_hand_person:"unicode/1f481.png?v8",tipping_hand_woman:"unicode/1f481-2640.png?v8",tired_face:"unicode/1f62b.png?v8",tm:"unicode/2122.png?v8",togo:"unicode/1f1f9-1f1ec.png?v8",toilet:"unicode/1f6bd.png?v8",tokelau:"unicode/1f1f9-1f1f0.png?v8",tokyo_tower:"unicode/1f5fc.png?v8",tomato:"unicode/1f345.png?v8",tonga:"unicode/1f1f9-1f1f4.png?v8",tongue:"unicode/1f445.png?v8",toolbox:"unicode/1f9f0.png?v8",tooth:"unicode/1f9b7.png?v8",toothbrush:"unicode/1faa5.png?v8",top:"unicode/1f51d.png?v8",tophat:"unicode/1f3a9.png?v8",tornado:"unicode/1f32a.png?v8",tr:"unicode/1f1f9-1f1f7.png?v8",trackball:"unicode/1f5b2.png?v8",tractor:"unicode/1f69c.png?v8",traffic_light:"unicode/1f6a5.png?v8",train:"unicode/1f68b.png?v8",train2:"unicode/1f686.png?v8",tram:"unicode/1f68a.png?v8",transgender_flag:"unicode/1f3f3-26a7.png?v8",transgender_symbol:"unicode/26a7.png?v8",triangular_flag_on_post:"unicode/1f6a9.png?v8",triangular_ruler:"unicode/1f4d0.png?v8",trident:"unicode/1f531.png?v8",trinidad_tobago:"unicode/1f1f9-1f1f9.png?v8",tristan_da_cunha:"unicode/1f1f9-1f1e6.png?v8",triumph:"unicode/1f624.png?v8",trolleybus:"unicode/1f68e.png?v8",trollface:"trollface.png?v8",trophy:"unicode/1f3c6.png?v8",tropical_drink:"unicode/1f379.png?v8",tropical_fish:"unicode/1f420.png?v8",truck:"unicode/1f69a.png?v8",trumpet:"unicode/1f3ba.png?v8",tshirt:"unicode/1f455.png?v8",tulip:"unicode/1f337.png?v8",tumbler_glass:"unicode/1f943.png?v8",tunisia:"unicode/1f1f9-1f1f3.png?v8",turkey:"unicode/1f983.png?v8",turkmenistan:"unicode/1f1f9-1f1f2.png?v8",turks_caicos_islands:"unicode/1f1f9-1f1e8.png?v8",turtle:"unicode/1f422.png?v8",tuvalu:"unicode/1f1f9-1f1fb.png?v8",tv:"unicode/1f4fa.png?v8",twisted_rightwards_arrows:"unicode/1f500.png?v8",two:"unicode/0032-20e3.png?v8",two_hearts:"unicode/1f495.png?v8",two_men_holding_hands:"unicode/1f46c.png?v8",two_women_holding_hands:"unicode/1f46d.png?v8",u5272:"unicode/1f239.png?v8",u5408:"unicode/1f234.png?v8",u55b6:"unicode/1f23a.png?v8",u6307:"unicode/1f22f.png?v8",u6708:"unicode/1f237.png?v8",u6709:"unicode/1f236.png?v8",u6e80:"unicode/1f235.png?v8",u7121:"unicode/1f21a.png?v8",u7533:"unicode/1f238.png?v8",u7981:"unicode/1f232.png?v8",u7a7a:"unicode/1f233.png?v8",uganda:"unicode/1f1fa-1f1ec.png?v8",uk:"unicode/1f1ec-1f1e7.png?v8",ukraine:"unicode/1f1fa-1f1e6.png?v8",umbrella:"unicode/2614.png?v8",unamused:"unicode/1f612.png?v8",underage:"unicode/1f51e.png?v8",unicorn:"unicode/1f984.png?v8",united_arab_emirates:"unicode/1f1e6-1f1ea.png?v8",united_nations:"unicode/1f1fa-1f1f3.png?v8",unlock:"unicode/1f513.png?v8",up:"unicode/1f199.png?v8",upside_down_face:"unicode/1f643.png?v8",uruguay:"unicode/1f1fa-1f1fe.png?v8",us:"unicode/1f1fa-1f1f8.png?v8",us_outlying_islands:"unicode/1f1fa-1f1f2.png?v8",us_virgin_islands:"unicode/1f1fb-1f1ee.png?v8",uzbekistan:"unicode/1f1fa-1f1ff.png?v8",v:"unicode/270c.png?v8",vampire:"unicode/1f9db.png?v8",vampire_man:"unicode/1f9db-2642.png?v8",vampire_woman:"unicode/1f9db-2640.png?v8",vanuatu:"unicode/1f1fb-1f1fa.png?v8",vatican_city:"unicode/1f1fb-1f1e6.png?v8",venezuela:"unicode/1f1fb-1f1ea.png?v8",vertical_traffic_light:"unicode/1f6a6.png?v8",vhs:"unicode/1f4fc.png?v8",vibration_mode:"unicode/1f4f3.png?v8",video_camera:"unicode/1f4f9.png?v8",video_game:"unicode/1f3ae.png?v8",vietnam:"unicode/1f1fb-1f1f3.png?v8",violin:"unicode/1f3bb.png?v8",virgo:"unicode/264d.png?v8",volcano:"unicode/1f30b.png?v8",volleyball:"unicode/1f3d0.png?v8",vomiting_face:"unicode/1f92e.png?v8",vs:"unicode/1f19a.png?v8",vulcan_salute:"unicode/1f596.png?v8",waffle:"unicode/1f9c7.png?v8",wales:"unicode/1f3f4-e0067-e0062-e0077-e006c-e0073-e007f.png?v8",walking:"unicode/1f6b6.png?v8",walking_man:"unicode/1f6b6-2642.png?v8",walking_woman:"unicode/1f6b6-2640.png?v8",wallis_futuna:"unicode/1f1fc-1f1eb.png?v8",waning_crescent_moon:"unicode/1f318.png?v8",waning_gibbous_moon:"unicode/1f316.png?v8",warning:"unicode/26a0.png?v8",wastebasket:"unicode/1f5d1.png?v8",watch:"unicode/231a.png?v8",water_buffalo:"unicode/1f403.png?v8",water_polo:"unicode/1f93d.png?v8",watermelon:"unicode/1f349.png?v8",wave:"unicode/1f44b.png?v8",wavy_dash:"unicode/3030.png?v8",waxing_crescent_moon:"unicode/1f312.png?v8",waxing_gibbous_moon:"unicode/1f314.png?v8",wc:"unicode/1f6be.png?v8",weary:"unicode/1f629.png?v8",wedding:"unicode/1f492.png?v8",weight_lifting:"unicode/1f3cb.png?v8",weight_lifting_man:"unicode/1f3cb-2642.png?v8",weight_lifting_woman:"unicode/1f3cb-2640.png?v8",western_sahara:"unicode/1f1ea-1f1ed.png?v8",whale:"unicode/1f433.png?v8",whale2:"unicode/1f40b.png?v8",wheel_of_dharma:"unicode/2638.png?v8",wheelchair:"unicode/267f.png?v8",white_check_mark:"unicode/2705.png?v8",white_circle:"unicode/26aa.png?v8",white_flag:"unicode/1f3f3.png?v8",white_flower:"unicode/1f4ae.png?v8",white_haired_man:"unicode/1f468-1f9b3.png?v8",white_haired_woman:"unicode/1f469-1f9b3.png?v8",white_heart:"unicode/1f90d.png?v8",white_large_square:"unicode/2b1c.png?v8",white_medium_small_square:"unicode/25fd.png?v8",white_medium_square:"unicode/25fb.png?v8",white_small_square:"unicode/25ab.png?v8",white_square_button:"unicode/1f533.png?v8",wilted_flower:"unicode/1f940.png?v8",wind_chime:"unicode/1f390.png?v8",wind_face:"unicode/1f32c.png?v8",window:"unicode/1fa9f.png?v8",wine_glass:"unicode/1f377.png?v8",wink:"unicode/1f609.png?v8",wolf:"unicode/1f43a.png?v8",woman:"unicode/1f469.png?v8",woman_artist:"unicode/1f469-1f3a8.png?v8",woman_astronaut:"unicode/1f469-1f680.png?v8",woman_beard:"unicode/1f9d4-2640.png?v8",woman_cartwheeling:"unicode/1f938-2640.png?v8",woman_cook:"unicode/1f469-1f373.png?v8",woman_dancing:"unicode/1f483.png?v8",woman_facepalming:"unicode/1f926-2640.png?v8",woman_factory_worker:"unicode/1f469-1f3ed.png?v8",woman_farmer:"unicode/1f469-1f33e.png?v8",woman_feeding_baby:"unicode/1f469-1f37c.png?v8",woman_firefighter:"unicode/1f469-1f692.png?v8",woman_health_worker:"unicode/1f469-2695.png?v8",woman_in_manual_wheelchair:"unicode/1f469-1f9bd.png?v8",woman_in_motorized_wheelchair:"unicode/1f469-1f9bc.png?v8",woman_in_tuxedo:"unicode/1f935-2640.png?v8",woman_judge:"unicode/1f469-2696.png?v8",woman_juggling:"unicode/1f939-2640.png?v8",woman_mechanic:"unicode/1f469-1f527.png?v8",woman_office_worker:"unicode/1f469-1f4bc.png?v8",woman_pilot:"unicode/1f469-2708.png?v8",woman_playing_handball:"unicode/1f93e-2640.png?v8",woman_playing_water_polo:"unicode/1f93d-2640.png?v8",woman_scientist:"unicode/1f469-1f52c.png?v8",woman_shrugging:"unicode/1f937-2640.png?v8",woman_singer:"unicode/1f469-1f3a4.png?v8",woman_student:"unicode/1f469-1f393.png?v8",woman_teacher:"unicode/1f469-1f3eb.png?v8",woman_technologist:"unicode/1f469-1f4bb.png?v8",woman_with_headscarf:"unicode/1f9d5.png?v8",woman_with_probing_cane:"unicode/1f469-1f9af.png?v8",woman_with_turban:"unicode/1f473-2640.png?v8",woman_with_veil:"unicode/1f470-2640.png?v8",womans_clothes:"unicode/1f45a.png?v8",womans_hat:"unicode/1f452.png?v8",women_wrestling:"unicode/1f93c-2640.png?v8",womens:"unicode/1f6ba.png?v8",wood:"unicode/1fab5.png?v8",woozy_face:"unicode/1f974.png?v8",world_map:"unicode/1f5fa.png?v8",worm:"unicode/1fab1.png?v8",worried:"unicode/1f61f.png?v8",wrench:"unicode/1f527.png?v8",wrestling:"unicode/1f93c.png?v8",writing_hand:"unicode/270d.png?v8",x:"unicode/274c.png?v8",yarn:"unicode/1f9f6.png?v8",yawning_face:"unicode/1f971.png?v8",yellow_circle:"unicode/1f7e1.png?v8",yellow_heart:"unicode/1f49b.png?v8",yellow_square:"unicode/1f7e8.png?v8",yemen:"unicode/1f1fe-1f1ea.png?v8",yen:"unicode/1f4b4.png?v8",yin_yang:"unicode/262f.png?v8",yo_yo:"unicode/1fa80.png?v8",yum:"unicode/1f60b.png?v8",zambia:"unicode/1f1ff-1f1f2.png?v8",zany_face:"unicode/1f92a.png?v8",zap:"unicode/26a1.png?v8",zebra:"unicode/1f993.png?v8",zero:"unicode/0030-20e3.png?v8",zimbabwe:"unicode/1f1ff-1f1fc.png?v8",zipper_mouth_face:"unicode/1f910.png?v8",zombie:"unicode/1f9df.png?v8",zombie_man:"unicode/1f9df-2642.png?v8",zombie_woman:"unicode/1f9df-2640.png?v8",zzz:"unicode/1f4a4.png?v8"}};function jn(e,t){return e.replace(/<(code|pre|script|template)[^>]*?>[\s\S]+?<\/(code|pre|script|template)>/g,function(e){return e.replace(/:/g,"__colon__")}).replace(/<!--[\s\S]+?-->/g,function(e){return e.replace(/:/g,"__colon__")}).replace(/([a-z]{2,}:)?\/\/[^\s'">)]+/gi,function(e){return e.replace(/:/g,"__colon__")}).replace(/:([a-z0-9_\-+]+?):/g,function(e,n){return i=e,o=n,e=t,n=Cn.data[o],i,i=n?e&&/unicode/.test(n)?'<span class="emoji">'+n.replace("unicode/","").replace(/\.png.*/,"").split("-").map(function(e){return"&#x"+e+";"}).join("‍").concat("︎")+"</span>":'<img src="'+Cn.baseURL+n+'.png" alt="'+o+'" class="emoji" loading="lazy">':i;var i,o}).replace(/__colon__/g,":")}function Ln(e){var o={};return{str:e=(e=void 0===e?"":e)&&e.replace(/^('|")/,"").replace(/('|")$/,"").replace(/(?:^|\s):([\w-]+:?)=?([\w-%]+)?/g,function(e,n,i){return-1===n.indexOf(":")?(o[n]=i&&i.replace(/"/g,"")||!0,""):e}).trim(),config:o}}function On(e){return(e=void 0===e?"":e).replace(/(<\/?a.*?>)/gi,"")}var qn,Pn=be(function(e){var u,f,p,d,n,g=function(u){var i=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,n=0,e={},R={manual:u.Prism&&u.Prism.manual,disableWorkerMessageHandler:u.Prism&&u.Prism.disableWorkerMessageHandler,util:{encode:function e(n){return n instanceof T?new T(n.type,e(n.content),n.alias):Array.isArray(n)?n.map(e):n.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++n}),e.__id},clone:function i(e,o){var t,n;switch(o=o||{},R.util.type(e)){case"Object":if(n=R.util.objId(e),o[n])return o[n];for(var a in t={},o[n]=t,e)e.hasOwnProperty(a)&&(t[a]=i(e[a],o));return t;case"Array":return(n=R.util.objId(e),o[n])?o[n]:(t=[],o[n]=t,e.forEach(function(e,n){t[n]=i(e,o)}),t);default:return e}},getLanguage:function(e){for(;e;){var n=i.exec(e.className);if(n)return n[1].toLowerCase();e=e.parentElement}return"none"},setLanguage:function(e,n){e.className=e.className.replace(RegExp(i,"gi"),""),e.classList.add("language-"+n)},currentScript:function(){if("undefined"==typeof document)return null;if("currentScript"in document)return document.currentScript;try{throw new Error}catch(e){var n=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(e.stack)||[])[1];if(n){var i,o=document.getElementsByTagName("script");for(i in o)if(o[i].src==n)return o[i]}return null}},isActive:function(e,n,i){for(var o="no-"+n;e;){var t=e.classList;if(t.contains(n))return!0;if(t.contains(o))return!1;e=e.parentElement}return!!i}},languages:{plain:e,plaintext:e,text:e,txt:e,extend:function(e,n){var i,o=R.util.clone(R.languages[e]);for(i in n)o[i]=n[i];return o},insertBefore:function(i,e,n,o){var t,a=(o=o||R.languages)[i],r={};for(t in a)if(a.hasOwnProperty(t)){if(t==e)for(var c in n)n.hasOwnProperty(c)&&(r[c]=n[c]);n.hasOwnProperty(t)||(r[t]=a[t])}var u=o[i];return o[i]=r,R.languages.DFS(R.languages,function(e,n){n===u&&e!=i&&(this[e]=r)}),r},DFS:function e(n,i,o,t){t=t||{};var a,r,c,u=R.util.objId;for(a in n)n.hasOwnProperty(a)&&(i.call(n,a,n[a],o||a),r=n[a],"Object"!==(c=R.util.type(r))||t[u(r)]?"Array"!==c||t[u(r)]||(t[u(r)]=!0,e(r,i,a,t)):(t[u(r)]=!0,e(r,i,null,t)))}},plugins:{},highlightAll:function(e,n){R.highlightAllUnder(document,e,n)},highlightAllUnder:function(e,n,i){var o={callback:i,container:e,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};R.hooks.run("before-highlightall",o),o.elements=Array.prototype.slice.apply(o.container.querySelectorAll(o.selector)),R.hooks.run("before-all-elements-highlight",o);for(var t,a=0;t=o.elements[a++];)R.highlightElement(t,!0===n,o.callback)},highlightElement:function(e,n,i){var o=R.util.getLanguage(e),t=R.languages[o];R.util.setLanguage(e,o);var a=e.parentElement;a&&"pre"===a.nodeName.toLowerCase()&&R.util.setLanguage(a,o);var r={element:e,language:o,grammar:t,code:e.textContent};function c(e){r.highlightedCode=e,R.hooks.run("before-insert",r),r.element.innerHTML=r.highlightedCode,R.hooks.run("after-highlight",r),R.hooks.run("complete",r),i&&i.call(r.element)}if(R.hooks.run("before-sanity-check",r),(a=r.element.parentElement)&&"pre"===a.nodeName.toLowerCase()&&!a.hasAttribute("tabindex")&&a.setAttribute("tabindex","0"),!r.code)return R.hooks.run("complete",r),void(i&&i.call(r.element));R.hooks.run("before-highlight",r),r.grammar?n&&u.Worker?((n=new Worker(R.filename)).onmessage=function(e){c(e.data)},n.postMessage(JSON.stringify({language:r.language,code:r.code,immediateClose:!0}))):c(R.highlight(r.code,r.grammar,r.language)):c(R.util.encode(r.code))},highlight:function(e,n,i){i={code:e,grammar:n,language:i};if(R.hooks.run("before-tokenize",i),!i.grammar)throw new Error('The language "'+i.language+'" has no grammar.');return i.tokens=R.tokenize(i.code,i.grammar),R.hooks.run("after-tokenize",i),T.stringify(R.util.encode(i.tokens),i.language)},tokenize:function(e,n){var i=n.rest;if(i){for(var o in i)n[o]=i[o];delete n.rest}var t=new a;return j(t,t.head,e),function e(n,i,o,t,a,r){for(var c in o)if(o.hasOwnProperty(c)&&o[c]){var u=o[c];u=Array.isArray(u)?u:[u];for(var f=0;f<u.length;++f){if(r&&r.cause==c+","+f)return;var p,d=u[f],g=d.inside,s=!!d.lookbehind,l=!!d.greedy,v=d.alias;l&&!d.pattern.global&&(p=d.pattern.toString().match(/[imsuy]*$/)[0],d.pattern=RegExp(d.pattern.source,p+"g"));for(var h=d.pattern||d,_=t.next,m=a;_!==i.tail&&!(r&&m>=r.reach);m+=_.value.length,_=_.next){var b=_.value;if(i.length>n.length)return;if(!(b instanceof T)){var k,w=1;if(l){if(!(k=C(h,m,n,s))||k.index>=n.length)break;var y=k.index,x=k.index+k[0].length,S=m;for(S+=_.value.length;S<=y;)_=_.next,S+=_.value.length;if(S-=_.value.length,m=S,_.value instanceof T)continue;for(var A=_;A!==i.tail&&(S<x||"string"==typeof A.value);A=A.next)w++,S+=A.value.length;w--,b=n.slice(m,S),k.index-=m}else if(!(k=C(h,0,b,s)))continue;var y=k.index,$=k[0],z=b.slice(0,y),F=b.slice(y+$.length),E=m+b.length;r&&E>r.reach&&(r.reach=E);b=_.prev;z&&(b=j(i,b,z),m+=z.length),L(i,b,w);$=new T(c,g?R.tokenize($,g):$,v,$);_=j(i,b,$),F&&j(i,_,F),1<w&&(E={cause:c+","+f,reach:E},e(n,i,o,_.prev,m,E),r&&E.reach>r.reach&&(r.reach=E.reach))}}}}}(e,t,n,t.head,0),function(e){var n=[],i=e.head.next;for(;i!==e.tail;)n.push(i.value),i=i.next;return n}(t)},hooks:{all:{},add:function(e,n){var i=R.hooks.all;i[e]=i[e]||[],i[e].push(n)},run:function(e,n){var i=R.hooks.all[e];if(i&&i.length)for(var o,t=0;o=i[t++];)o(n)}},Token:T};function T(e,n,i,o){this.type=e,this.content=n,this.alias=i,this.length=0|(o||"").length}function C(e,n,i,o){e.lastIndex=n;i=e.exec(i);return i&&o&&i[1]&&(o=i[1].length,i.index+=o,i[0]=i[0].slice(o)),i}function a(){var e={value:null,prev:null,next:null},n={value:null,prev:e,next:null};e.next=n,this.head=e,this.tail=n,this.length=0}function j(e,n,i){var o=n.next,i={value:i,prev:n,next:o};return n.next=i,o.prev=i,e.length++,i}function L(e,n,i){for(var o=n.next,t=0;t<i&&o!==e.tail;t++)o=o.next;(n.next=o).prev=n,e.length-=t}if(u.Prism=R,T.stringify=function n(e,i){if("string"==typeof e)return e;if(Array.isArray(e)){var o="";return e.forEach(function(e){o+=n(e,i)}),o}var t={type:e.type,content:n(e.content,i),tag:"span",classes:["token",e.type],attributes:{},language:i},e=e.alias;e&&(Array.isArray(e)?Array.prototype.push.apply(t.classes,e):t.classes.push(e)),R.hooks.run("wrap",t);var a,r="";for(a in t.attributes)r+=" "+a+'="'+(t.attributes[a]||"").replace(/"/g,""")+'"';return"<"+t.tag+' class="'+t.classes.join(" ")+'"'+r+">"+t.content+"</"+t.tag+">"},!u.document)return u.addEventListener&&(R.disableWorkerMessageHandler||u.addEventListener("message",function(e){var n=JSON.parse(e.data),i=n.language,e=n.code,n=n.immediateClose;u.postMessage(R.highlight(e,R.languages[i],i)),n&&u.close()},!1)),R;var o=R.util.currentScript();function t(){R.manual||R.highlightAll()}return o&&(R.filename=o.src,o.hasAttribute("data-manual")&&(R.manual=!0)),R.manual||("loading"===(e=document.readyState)||"interactive"===e&&o&&o.defer?document.addEventListener("DOMContentLoaded",t):window.requestAnimationFrame?window.requestAnimationFrame(t):window.setTimeout(t,16)),R}("undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{});e.exports&&(e.exports=g),void 0!==me&&(me.Prism=g),g.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},g.languages.markup.tag.inside["attr-value"].inside.entity=g.languages.markup.entity,g.languages.markup.doctype.inside["internal-subset"].inside=g.languages.markup,g.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),Object.defineProperty(g.languages.markup.tag,"addInlined",{value:function(e,n){var i={};i["language-"+n]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:g.languages[n]},i.cdata=/^<!\[CDATA\[|\]\]>$/i;i={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:i}};i["language-"+n]={pattern:/[\s\S]+/,inside:g.languages[n]};n={};n[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,function(){return e}),"i"),lookbehind:!0,greedy:!0,inside:i},g.languages.insertBefore("markup","cdata",n)}}),Object.defineProperty(g.languages.markup.tag,"addAttribute",{value:function(e,n){g.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[n,"language-"+n],inside:g.languages[n]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),g.languages.html=g.languages.markup,g.languages.mathml=g.languages.markup,g.languages.svg=g.languages.markup,g.languages.xml=g.languages.extend("markup",{}),g.languages.ssml=g.languages.xml,g.languages.atom=g.languages.xml,g.languages.rss=g.languages.xml,function(e){var n=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+n.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+n.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+n.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+n.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:n,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;e=e.languages.markup;e&&(e.tag.addInlined("style","css"),e.tag.addAttribute("style","css"))}(g),g.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},g.languages.javascript=g.languages.extend("clike",{"class-name":[g.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),g.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,g.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:g.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:g.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:g.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:g.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:g.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),g.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:g.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),g.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),g.languages.markup&&(g.languages.markup.tag.addInlined("script","javascript"),g.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),g.languages.js=g.languages.javascript,void 0!==g&&"undefined"!=typeof document&&(Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector),u={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"},d="pre[data-src]:not(["+(f="data-src-status")+'="loaded"]):not(['+f+'="'+(p="loading")+'"])',g.hooks.add("before-highlightall",function(e){e.selector+=", "+d}),g.hooks.add("before-sanity-check",function(e){var t,n,i,o,a,r,c=e.element;c.matches(d)&&(e.code="",c.setAttribute(f,p),(t=c.appendChild(document.createElement("CODE"))).textContent="Loading鈥�",i=c.getAttribute("data-src"),"none"===(e=e.language)&&(n=(/\.(\w+)$/.exec(i)||[,"none"])[1],e=u[n]||n),g.util.setLanguage(t,e),g.util.setLanguage(c,e),(n=g.plugins.autoloader)&&n.loadLanguages(e),i=i,o=function(e){c.setAttribute(f,"loaded");var n,i,o=function(e){if(i=/^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(e||"")){var n=Number(i[1]),e=i[2],i=i[3];return e?i?[n,Number(i)]:[n,void 0]:[n,n]}}(c.getAttribute("data-range"));o&&(n=e.split(/\r\n?|\n/g),i=o[0],o=null==o[1]?n.length:o[1],i<0&&(i+=n.length),i=Math.max(0,Math.min(i-1,n.length)),o<0&&(o+=n.length),o=Math.max(0,Math.min(o,n.length)),e=n.slice(i,o).join("\n"),c.hasAttribute("data-start")||c.setAttribute("data-start",String(i+1))),t.textContent=e,g.highlightElement(t)},a=function(e){c.setAttribute(f,"failed"),t.textContent=e},(r=new XMLHttpRequest).open("GET",i,!0),r.onreadystatechange=function(){4==r.readyState&&(r.status<400&&r.responseText?o(r.responseText):400<=r.status?a("鉁� Error "+r.status+" while fetching file: "+r.statusText):a("鉁� Error: File does not exist or is empty"))},r.send(null))}),n=!(g.plugins.fileHighlight={highlight:function(e){for(var n,i=(e||document).querySelectorAll(d),o=0;n=i[o++];)g.highlightElement(n)}}),g.fileHighlight=function(){n||(console.warn("Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead."),n=!0),g.plugins.fileHighlight.highlight.apply(this,arguments)})});function Mn(e,n){return"___"+e.toUpperCase()+n+"___"}qn=Prism,Object.defineProperties(qn.languages["markup-templating"]={},{buildPlaceholders:{value:function(o,t,e,a){var r;o.language===t&&(r=o.tokenStack=[],o.code=o.code.replace(e,function(e){if("function"==typeof a&&!a(e))return e;for(var n,i=r.length;-1!==o.code.indexOf(n=Mn(t,i));)++i;return r[i]=e,n}),o.grammar=qn.languages.markup)}},tokenizePlaceholders:{value:function(f,p){var d,g;f.language===p&&f.tokenStack&&(f.grammar=qn.languages[p],d=0,g=Object.keys(f.tokenStack),function e(n){for(var i=0;i<n.length&&!(d>=g.length);i++){var o,t,a,r,c,u=n[i];"string"==typeof u||u.content&&"string"==typeof u.content?(t=g[d],a=f.tokenStack[t],o="string"==typeof u?u:u.content,c=Mn(p,t),-1<(r=o.indexOf(c))&&(++d,t=o.substring(0,r),a=new qn.Token(p,qn.tokenize(a,f.grammar),"language-"+p,a),r=o.substring(r+c.length),c=[],t&&c.push.apply(c,e([t])),c.push(a),r&&c.push.apply(c,e([r])),"string"==typeof u?n.splice.apply(n,[i,1].concat(c)):u.content=c)):u.content&&e(u.content)}return n}(f.tokens))}}});function In(t,e){var a=this;this.config=t,this.router=e,this.cacheTree={},this.toc=[],this.cacheTOC={},this.linkTarget=t.externalLinkTarget||"_blank",this.linkRel="_blank"===this.linkTarget?t.externalLinkRel||"noopener":"",this.contentBase=e.getBasePath();var n=this._initRenderer();this.heading=n.heading;var r=o(e=t.markdown||{})?e(Sn,n):(Sn.setOptions(m(e,{renderer:m(n,e.renderer)})),Sn);this._marked=r,this.compile=function(i){var o=!0,e=c(function(e){o=!1;var n="";return i&&(n=f(i)?r(i):r.parser(i),n=t.noEmoji?n:jn(n,t.nativeEmoji),Tn.clear(),n)})(i),n=a.router.parse().file;return o?a.toc=a.cacheTOC[n]:a.cacheTOC[n]=[].concat(a.toc),e}}var Nn={},Hn={markdown:function(e){return{url:e}},mermaid:function(e){return{url:e}},iframe:function(e,n){return{html:'<iframe src="'+e+'" '+(n||"width=100% height=400")+"></iframe>"}},video:function(e,n){return{html:'<video src="'+e+'" '+(n||"controls")+">Not Support</video>"}},audio:function(e,n){return{html:'<audio src="'+e+'" '+(n||"controls")+">Not Support</audio>"}},code:function(e,n){var i=e.match(/\.(\w+)$/);return{url:e,lang:i="md"===(i=n||i&&i[1])?"markdown":i}}};In.prototype.compileEmbed=function(e,n){var i,o,t=Ln(n),a=t.str,t=t.config;if(n=a,t.include)return R(e)||(e=q(this.contentBase,C(this.router.getCurrentPath()),e)),t.type&&(o=Hn[t.type])?(i=o.call(this,e,n)).type=t.type:(o="code",/\.(md|markdown)/.test(e)?o="markdown":/\.mmd/.test(e)?o="mermaid":/\.html?/.test(e)?o="iframe":/\.(mp4|ogg)/.test(e)?o="video":/\.mp3/.test(e)&&(o="audio"),(i=Hn[o].call(this,e,n)).type=o),i.fragment=t.fragment,i},In.prototype._matchNotCompileLink=function(e){for(var n=this.config.noCompileLinks||[],i=0;i<n.length;i++){var o=n[i];if((Nn[o]||(Nn[o]=new RegExp("^"+o+"$"))).test(e))return e}},In.prototype._initRenderer=function(){var r,c,u,f,p,d,e=new Sn.Renderer,n=this.linkTarget,i=this.linkRel,a=this.router,o=this.contentBase,g=this,t={};return t.heading=e.heading=function(e,n){var i=Ln(e),o=i.str,t=i.config,e={level:n,title:On(o)};/<!-- {docsify-ignore} -->/g.test(o)&&(o=o.replace("\x3c!-- {docsify-ignore} --\x3e",""),e.title=On(o),e.ignoreSubHeading=!0),/{docsify-ignore}/g.test(o)&&(o=o.replace("{docsify-ignore}",""),e.title=On(o),e.ignoreSubHeading=!0),/<!-- {docsify-ignore-all} -->/g.test(o)&&(o=o.replace("\x3c!-- {docsify-ignore-all} --\x3e",""),e.title=On(o),e.ignoreAllSubs=!0),/{docsify-ignore-all}/g.test(o)&&(o=o.replace("{docsify-ignore-all}",""),e.title=On(o),e.ignoreAllSubs=!0);i=Tn(t.id||o),t=a.toURL(a.getCurrentPath(),{id:i});return e.slug=t,g.toc.push(e),"<h"+n+' id="'+i+'"><a href="'+t+'" data-id="'+i+'" class="anchor"><span>'+o+"</span></a></h"+n+">"},t.code={renderer:e}.renderer.code=function(e,n){var i=Pn.languages[n=void 0===n?"markup":n]||Pn.languages.markup;return'<pre v-pre data-lang="'+n+'"><code class="lang-'+n+'">'+Pn.highlight(e.replace(/@DOCSIFY_QM@/g,"`"),i,n)+"</code></pre>"},t.link=(i=(n={renderer:e,router:a,linkTarget:n,linkRel:i,compilerClass:g}).renderer,c=n.router,u=n.linkTarget,n.linkRel,f=n.compilerClass,i.link=function(e,n,i){var o=[],t=Ln(n=void 0===n?"":n),a=t.str,t=t.config;return u=t.target||u,r="_blank"===u?f.config.externalLinkRel||"noopener":"",n=a,R(e)||f._matchNotCompileLink(e)||t.ignore?(R(e)||"./"!==e.slice(0,2)||(e=document.URL.replace(/\/(?!.*\/).*/,"/").replace("#/./","")+e),o.push(0===e.indexOf("mailto:")?"":'target="'+u+'"'),o.push(0!==e.indexOf("mailto:")&&""!==r?' rel="'+r+'"':"")):(e===f.config.homepage&&(e="README"),e=c.toURL(e,null,c.getCurrentPath())),t.disabled&&(o.push("disabled"),e="javascript:void(0)"),t.class&&o.push('class="'+t.class+'"'),t.id&&o.push('id="'+t.id+'"'),n&&o.push('title="'+n+'"'),'<a href="'+e+'" '+o.join(" ")+">"+i+"</a>"}),t.paragraph={renderer:e}.renderer.paragraph=function(e){e=/^!>/.test(e)?$n("tip",e):/^\?>/.test(e)?$n("warn",e):"<p>"+e+"</p>";return e},t.image=(o=(i={renderer:e,contentBase:o,router:a}).renderer,p=i.contentBase,d=i.router,o.image=function(e,n,i){var o=e,t=[],a=Ln(n),r=a.str,a=a.config;return n=r,a["no-zoom"]&&t.push("data-no-zoom"),n&&t.push('title="'+n+'"'),a.size&&(n=(r=a.size.split("x"))[0],(r=r[1])?t.push('width="'+n+'" height="'+r+'"'):t.push('width="'+n+'"')),a.class&&t.push('class="'+a.class+'"'),a.id&&t.push('id="'+a.id+'"'),R(e)||(o=q(p,C(d.getCurrentPath()),e)),0<t.length?'<img src="'+o+'" data-origin="'+e+'" alt="'+i+'" '+t.join(" ")+" />":'<img src="'+o+'" data-origin="'+e+'" alt="'+i+'"'+t+">"}),t.list={renderer:e}.renderer.list=function(e,n,i){n=n?"ol":"ul";return"<"+n+" "+[/<li class="task-list-item">/.test(e.split('class="task-list"')[0])?'class="task-list"':"",i&&1<i?'start="'+i+'"':""].join(" ").trim()+">"+e+"</"+n+">"},t.listitem={renderer:e}.renderer.listitem=function(e){return/^(<input.*type="checkbox"[^>]*>)/.test(e)?'<li class="task-list-item"><label>'+e+"</label></li>":"<li>"+e+"</li>"},e.origin=t,e},In.prototype.sidebar=function(e,n){var i=this.toc,o=this.router.getCurrentPath(),t="";if(e)t=this.compile(e);else{for(var a=0;a<i.length;a++)if(i[a].ignoreSubHeading){var r=i[a].level;i.splice(a,1);for(var c=a;c<i.length&&r<i[c].level;c++)i.splice(c,1)&&c--&&a++;a--}n=this.cacheTree[o]||zn(i,n),t=An(n,"<ul>{inner}</ul>");this.cacheTree[o]=n}return t},In.prototype.subSidebar=function(e){if(e){var n=this.router.getCurrentPath(),i=this.cacheTree,o=this.toc;o[0]&&o[0].ignoreAllSubs&&o.splice(0),o[0]&&1===o[0].level&&o.shift();for(var t=0;t<o.length;t++)o[t].ignoreSubHeading&&o.splice(t,1)&&t--;e=i[n]||zn(o,e);return i[n]=e,this.toc=[],An(e)}this.toc=[]},In.prototype.header=function(e,n){return this.heading(e,n)},In.prototype.article=function(e){return this.compile(e)},In.prototype.cover=function(e){var n=this.toc.slice(),e=this.compile(e);return this.toc=n.slice(),e};function Dn(e){var n=Zn(e);return 0===n?e:(n=new RegExp("^[ \\t]{"+n+"}","gm"),e.replace(n,""))}var Un,Zn=function(e){e=e.match(/^[ \t]*(?=\S)/gm);return e?e.reduce(function(e,n){return Math.min(e,n.length)},1/0):0},Bn={};function Vn(e,o){var a=e.compiler,t=e.raw;void 0===t&&(t="");var n=e.fetch,e=Bn[t];if(e){var i=e.slice();return i.links=e.links,o(i)}var i=a._marked,r=i.lexer(t),c=[],u=i.Lexer.rules.inline.link,f=r.links;r.forEach(function(e,t){"paragraph"===e.type&&(e.text=e.text.replace(new RegExp(u.source,"g"),function(e,n,i,o){o=a.compileEmbed(i,o);return o&&c.push({index:t,embed:o}),e}))});var p=[];!function(e,a){var n,i=e.embedTokens,r=e.compile,c=(e.fetch,0),u=1;if(!i.length)return a({});for(;n=i[c++];){var o=function(t){return function(e){var n,i,o;e&&("markdown"===t.embed.type?((i=t.embed.url.split("/")).pop(),i=i.join("/"),e=e.replace(/\[([^[\]]+)\]\(([^)]+)\)/g,function(e){var n=e.indexOf("(");return"(."===e.slice(n,n+2)?e.substring(0,n)+"("+window.location.protocol+"//"+window.location.host+i+"/"+e.substring(n+1,e.length-1)+")":e}),!0===(($docsify.frontMatter||{}).installed||!1)&&(e=$docsify.frontMatter.parseMarkdown(e)),n=r.lexer(e)):"code"===t.embed.type?(t.embed.fragment&&(o=t.embed.fragment,o=new RegExp("(?:###|\\/\\/\\/)\\s*\\["+o+"\\]([\\s\\S]*)(?:###|\\/\\/\\/)\\s*\\["+o+"\\]"),e=Dn((e.match(o)||[])[1]||"").trim()),n=r.lexer("```"+t.embed.lang+"\n"+e.replace(/`/g,"@DOCSIFY_QM@")+"\n```\n")):"mermaid"===t.embed.type?(n=[{type:"html",text:'<div class="mermaid">\n'+e+"\n</div>"}]).links={}:(n=[{type:"html",text:e}]).links={}),a({token:t,embedToken:n}),++u>=c&&a({})}}(n);n.embed.url?X(n.embed.url).then(o):o(n.embed.html)}}({compile:i,embedTokens:c,fetch:n},function(e){var n,i=e.embedToken,e=e.token;e?(n=e.index,p.forEach(function(e){n>e.start&&(n+=e.length)}),m(f,i.links),r=r.slice(0,n).concat(i,r.slice(n+1)),p.push({start:n,length:i.length-1})):(Bn[t]=r.concat(),r.links=Bn[t].links=f,o(r))})}function Yn(e,n,i){var o,t,a,r;return n="function"==typeof i?i(n):"string"==typeof i?(a=[],r=0,(o=i).replace(V,function(n,e,i){a.push(o.substring(r,i-1)),r=i+=n.length+1,a.push(t&&t[n]||function(e){return("00"+("string"==typeof Y[n]?e[Y[n]]():Y[n](e))).slice(-n.length)})}),r!==o.length&&a.push(o.substring(r)),function(e){for(var n="",i=0,o=e||new Date;i<a.length;i++)n+="string"==typeof a[i]?a[i]:a[i](o);return n}(new Date(n))):n,e.replace(/{docsify-updated}/g,n)}function Gn(e){function n(e){var n=Boolean(e.__vue__&&e.__vue__._isVue),e=Boolean(e._vnode&&e._vnode.__v_skip);return n||e}var i=this.config,o=b(".markdown-section"),t="Vue"in window&&window.Vue.version&&Number(window.Vue.version.charAt(0));if(e=e||"<h1>404 - Not found</h1>","Vue"in window)for(var a=0,r=k(".markdown-section > *").filter(n);a<r.length;a+=1){var c=r[a];2===t?c.__vue__.$destroy():3===t&&c.__vue_app__.unmount()}if(this._renderTo(o,e),i.loadSidebar||this._renderSidebar(),(i.executeScript||"Vue"in window&&!1!==i.executeScript)&&(!(e=k(".markdown-section>script").filter(function(e){return!/template/.test(e.type)})[0])||(e=e.innerText.trim())&&new Function(e)()),"Vue"in window){var u,f,p=[],d=Object.keys(i.vueComponents||{});2===t&&d.length&&d.forEach(function(e){window.Vue.options.components[e]||window.Vue.component(e,i.vueComponents[e])}),!Un&&i.vueGlobalOptions&&"function"==typeof i.vueGlobalOptions.data&&(Un=i.vueGlobalOptions.data()),p.push.apply(p,Object.keys(i.vueMounts||{}).map(function(e){return[b(o,e),i.vueMounts[e]]}).filter(function(e){var n=e[0];e[1];return n})),(i.vueGlobalOptions||d.length)&&(u=/{{2}[^{}]*}{2}/,f=/<[^>/]+\s([@:]|v-)[\w-:.[\]]+[=>\s]/,p.push.apply(p,k(".markdown-section > *").filter(function(i){return!p.some(function(e){var n=e[0];e[1];return n===i})}).filter(function(e){return e.tagName.toLowerCase()in(i.vueComponents||{})||e.querySelector(d.join(",")||null)||u.test(e.outerHTML)||f.test(e.outerHTML)}).map(function(e){var n=m({},i.vueGlobalOptions||{});return Un&&(n.data=function(){return Un}),[e,n]})));for(var g=0,s=p;g<s.length;g+=1){var l,v=s[g],h=v[0],_=v[1],v="data-isvue";h.matches("pre, script")||n(h)||h.querySelector("["+v+"]")||(h.setAttribute(v,""),2===t?(_.el=void 0,new window.Vue(_).$mount(h)):3===t&&(l=window.Vue.createApp(_),d.forEach(function(e){var n=i.vueComponents[e];l.component(e,n)}),l.mount(h)))}}}function Wn(n,i,o,t,a,e){n=e?n:n.replace(/\/$/,""),(n=C(n))&&X(a.router.getFile(n+o)+i,!1,a.config.requestHeaders).then(t,function(e){return Wn(n,i,o,t,a)})}function Xn(){var n=function(){return null};return[function(e){n(e)},function(e){n=e}]}Me=Object.freeze({__proto__:null,cached:c,hyphenate:a,hasOwn:u,merge:m,isPrimitive:f,noop:d,isFn:o,isExternal:g,inBrowser:!0,isMobile:s,supportsPushState:t,parseQuery:F,stringifyQuery:E,isAbsolutePath:R,removeParams:T,getParentPath:C,cleanPath:j,resolvePath:L,getPath:q,replaceSlug:P});var Qn,Jn=function(e){function n(){e.call(this),this.config=ue(this),this.initLifecycle(),this.initPlugin(),this.callHook("init"),this.initRouter(),this.initRender(),this.initEvent(),this.initFetch(),this.callHook("mounted")}return e&&(n.__proto__=e),((n.prototype=Object.create(e&&e.prototype)).constructor=n).prototype.initPlugin=function(){var n=this;[].concat(this.config.plugins).forEach(function(e){try{o(e)&&e(n._lifecycle,n)}catch(e){if(!n.config.catchPluginErrors)throw e;console.error("Docsify plugin error",e)}})},n}((we=Object,function(e){function n(){e.apply(this,arguments)}return e&&(n.__proto__=e),((n.prototype=Object.create(e&&e.prototype)).constructor=n).prototype._loadSideAndNav=function(e,n,i,o){var t=this;return function(){if(!i)return o();Wn(e,n,i,function(e){t._renderSidebar(e),o()},t,!0)}},n.prototype._fetch=function(i){var o=this;void 0===i&&(i=d);var t,e,n,a,r,c,u,f=this.route.query,p=this.route.path;g(p)?(history.replaceState(null,"","#"),this.router.normalize()):(t=E(f,["id"]),f=(e=this.config).loadNavbar,n=e.requestHeaders,a=e.loadSidebar,r=this.router.getFile(p),this.isRemoteUrl=g(r),this.isHTML=/\.html$/g.test(r),c=function(e,n){o._renderMain(e,n,o._loadSideAndNav(p,t,a,i))},u=function(e){o._fetchFallbackPage(p,t,i)||o._fetch404(r,t,i)},this.isRemoteUrl?Kn(r+t,0,n).then(c,u):this.matchVirtualRoute(p).then(function(e){"string"==typeof e?c(e):Kn(r+t,0,n).then(c,u)}),f&&Wn(p,t,f,function(e){return o._renderNav(e)},this,!0))},n.prototype._fetchCover=function(){var n=this,e=this.config,i=e.coverpage,o=e.requestHeaders,t=this.route.query,a=C(this.route.path);if(i){var r=null,e=this.route.path;"string"==typeof i?"/"===e&&(r=i):r=Array.isArray(i)?-1<i.indexOf(e)&&"_coverpage":!0===(e=i[e])?"_coverpage":e;var c=Boolean(r)&&this.config.onlyCover;return r?(r=this.router.getFile(a+r),this.coverIsHTML=/\.html$/g.test(r),X(r+E(t,["id"]),!1,o).then(function(e){return n._renderCover(e,c)})):this._renderCover(null,c),c}},n.prototype.$fetch=function(e,n){var i=this;void 0===e&&(e=d),void 0===n&&(n=this.$resetEvents.bind(this));function o(){i.callHook("doneEach"),e()}this._fetchCover()?o():this._fetch(function(){n(),o()})},n.prototype._fetchFallbackPage=function(i,o,t){var a=this;void 0===t&&(t=d);var e=this.config,n=e.requestHeaders,r=e.fallbackLanguages,c=e.loadSidebar;if(!r)return!1;e=i.split("/")[1];if(-1===r.indexOf(e))return!1;e=this.router.getFile(i.replace(new RegExp("^/"+e),""));return Kn(e+o,0,n).then(function(e,n){return a._renderMain(e,n,a._loadSideAndNav(i,o,c,t))},function(){return a._fetch404(i,o,t)}),!0},n.prototype._fetch404=function(e,n,i){var o=this,t=this.config,a=t.loadSidebar,r=t.requestHeaders,t=t.notFoundPage,c=this._loadSideAndNav(e,n,a,i=void 0===i?d:i);if(t){e=function(n,e){var i,o,t=e.notFoundPage,a="_404"+(e.ext||".md");switch(typeof t){case"boolean":o=a;break;case"string":o=t;break;case"object":o=(i=Object.keys(t).sort(function(e,n){return n.length-e.length}).filter(function(e){return n.match(new RegExp("^"+e))})[0])&&t[i]||a}return o}(e,this.config);return Kn(this.router.getFile(e),0,r).then(function(e,n){return o._renderMain(e,n,c)},function(){return o._renderMain(null,{},c)}),!0}return this._renderMain(null,{},c),!1},n.prototype.initFetch=function(){var e,n=this,i=this.config.loadSidebar;this.rendered?(e=ee(this.router,".sidebar-nav",!0,!0),i&&e&&(e.parentNode.innerHTML+=window.__SUB_SIDEBAR__),this._bindEventOnRendered(e),this.$resetEvents(),this.callHook("doneEach"),this.callHook("ready")):this.$fetch(function(e){return n.callHook("ready")})},n}(function(e){function n(){e.apply(this,arguments)}return e&&(n.__proto__=e),((n.prototype=Object.create(e&&e.prototype)).constructor=n).prototype.$resetEvents=function(e){var n=this,i=this.config.auto2top;"history"!==e&&(n.route.query.id&&he(n.route.path,n.route.query.id),"navigate"===e&&i&&(i=i,_e.scrollTop=!0===(i=void 0===i?0:i)?0:Number(i))),this.config.loadNavbar&&ee(this.router,"nav")},n.prototype.initEvent=function(){function n(e){return h.classList.toggle("close")}var e;e="button.sidebar-toggle",this.router,null!=(e=l(e))&&(p(e,"click",function(e){e.stopPropagation(),n()}),s&&p(h,"click",function(e){return h.classList.contains("close")&&n()})),e=".sidebar",this.router,null!=(e=l(e))&&p(e,"click",function(e){e=e.target;"A"===e.nodeName&&e.nextSibling&&e.nextSibling.classList&&e.nextSibling.classList.contains("app-sub-sidebar")&&S(e.parentNode,"collapse")}),this.config.coverpage?s||p("scroll",K):h.classList.add("sticky")},n}(function(e){function n(){e.apply(this,arguments)}return e&&(n.__proto__=e),((n.prototype=Object.create(e&&e.prototype)).constructor=n).prototype._renderTo=function(e,n,i){e=l(e);e&&(e[i?"outerHTML":"innerHTML"]=n)},n.prototype._renderSidebar=function(e){var n=this.config,i=n.maxLevel,o=n.subMaxLevel,t=n.loadSidebar;if(n.hideSidebar)return[document.querySelector("aside.sidebar"),document.querySelector("button.sidebar-toggle")].filter(function(e){return!!e}).forEach(function(e){return e.parentNode.removeChild(e)}),document.querySelector("section.content").style.right="unset",document.querySelector("section.content").style.left="unset",document.querySelector("section.content").style.position="relative",document.querySelector("section.content").style.width="100%",null;this._renderTo(".sidebar-nav",this.compiler.sidebar(e,i));i=ee(this.router,".sidebar-nav",!0,!0);t&&i?i.parentNode.innerHTML+=this.compiler.subSidebar(o)||"":this.compiler.subSidebar(),this._bindEventOnRendered(i)},n.prototype._bindEventOnRendered=function(e){var n,i=this.config.autoHeader;!function(e){var n=b(".cover.show");se=n?n.offsetHeight:0;for(var i,n=l(".sidebar"),o=[],t=0,a=(o=null!=n?k(n,"li"):o).length;t<a;t+=1){var r,c,u=o[t],f=u.querySelector("a");f&&("/"!==(r=f.getAttribute("href"))&&(f=(c=e.parse(r)).query.id,c=c.path,f&&(r=ve(c,f))),r&&(fe[decodeURIComponent(r)]=u))}s||(i=T(e.getCurrentPath()),x("scroll",function(){return le(i)}),p("scroll",function(){return le(i)}),p(n,"mouseover",function(){pe=!0}),p(n,"mouseleave",function(){pe=!1}))}(this.router),i&&e&&((i=(n=l("#main")).children[0])&&"H1"!==i.tagName&&y(n,w("div",this.compiler.header(e.innerText,1)).children[0]))},n.prototype._renderNav=function(e){e&&this._renderTo("nav",this.compiler.compile(e)),this.config.loadNavbar&&ee(this.router,"nav")},n.prototype._renderMain=function(o,t,a){var r=this;if(void 0===t&&(t={}),!o)return Gn.call(this,o);this.callHook("beforeEach",o,function(e){function n(){t.updatedAt&&(i=Yn(i,t.updatedAt,r.config.formatUpdated)),r.callHook("afterEach",i,function(e){Gn.call(r,e),a()})}var i;r.isHTML?(i=r.result=o,n()):Vn({compiler:r.compiler,raw:e},function(e){i=r.compiler.compile(e),n()})})},n.prototype._renderCover=function(e,n){var i,o=l(".cover");S(l("main"),n?"add":"remove","hidden"),e?(S(o,"add","show"),(n=(i=this.coverIsHTML?e:this.compiler.cover(e)).trim().match('<p><img.*?data-origin="(.*?)"[^a]+alt="(.*?)">([^<]*?)</p>$'))&&("color"===n[2]?o.style.background=n[1]+(n[3]||""):(e=n[1],S(o,"add","has-mask"),R(n[1])||(e=q(this.router.getBasePath(),n[1])),o.style.backgroundImage="url("+e+")",o.style.backgroundSize="cover",o.style.backgroundPosition="center center"),i=i.replace(n[0],"")),this._renderTo(".cover-main",i),K()):S(o,"remove","show")},n.prototype._updateRender=function(){var e,n,i,o;e=this,n=l(".app-name-link"),i=e.config.nameLink,o=e.route.path,n&&(f(e.config.nameLink)?n.setAttribute("href",i):"object"==typeof i&&(e=Object.keys(i).filter(function(e){return-1<o.indexOf(e)})[0],n.setAttribute("href",i[e])))},n.prototype.initRender=function(){var e=this.config;this.compiler=new In(e,this.router),window.__current_docsify_compiler__=this.compiler;var n,i,o,t,a,r=e.el||"#app",c=b("nav")||w("nav"),u=b(r),f="",p=h;u?(e.repo&&(f+=(t=e.repo,r=e.cornerExternalLinkTarget,t?'<a href="'+(t=(t=!/\/\//.test(t)?"https://github.com/"+t:t).replace(/^git\+/,""))+'" target="'+(r=r||"_blank")+'" class="github-corner" aria-label="View source on Github"><svg viewBox="0 0 250 250" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a>':"")),e.coverpage&&(f+=(o=", 100%, 85%",'<section class="cover show" style="background: '+("linear-gradient(to left bottom, hsl("+Math.floor(255*Math.random())+o+") 0%,hsl("+Math.floor(255*Math.random())+o+") 100%)")+'"><div class="mask"></div><div class="cover-main">\x3c!--cover--\x3e</div></section>')),e.logo&&(o=/^data:image/.test(e.logo),n=/(?:http[s]?:)?\/\//.test(e.logo),i=/^\./.test(e.logo),o||n||i||(e.logo=q(this.router.getBasePath(),e.logo))),f+=(i=(n=e).name||"","<main>"+('<button class="sidebar-toggle" aria-label="Menu"><div class="sidebar-toggle-button"><span></span><span></span><span></span></div></button><aside class="sidebar">'+(n.name?'<h1 class="app-name"><a class="app-name-link" data-nosearch>'+(n.logo?'<img alt="'+i+'" src='+n.logo+">":i)+"</a></h1>":"")+'<div class="sidebar-nav">\x3c!--sidebar--\x3e</div></aside>')+'<section class="content"><article class="markdown-section" id="main">\x3c!--main--\x3e</article></section></main>'),this._renderTo(u,f,!0)):this.rendered=!0,e.mergeNavbar&&s?p=b(".sidebar"):(c.classList.add("app-nav"),e.repo||c.classList.add("no-badge")),e.loadNavbar&&y(p,c),e.themeColor&&(v.head.appendChild(w("div","<style>:root{--theme-color: "+e.themeColor+";}</style>").firstElementChild),a=e.themeColor,window.CSS&&window.CSS.supports&&window.CSS.supports("(--v:red)")||(e=k("style:not(.inserted),link"),[].forEach.call(e,function(e){"STYLE"===e.nodeName?Q(e,a):"LINK"===e.nodeName&&(e=e.getAttribute("href"),/\.css$/.test(e)&&X(e).then(function(e){e=w("style",e);_.appendChild(e),Q(e,a)}))}))),this._updateRender(),S(h,"ready")},n}(function(e){function n(){e.apply(this,arguments)}return e&&(n.__proto__=e),((n.prototype=Object.create(e&&e.prototype)).constructor=n).prototype.routes=function(){return this.config.routes||{}},n.prototype.matchVirtualRoute=function(t){var a=this.routes(),r=Object.keys(a),c=function(){return null};function u(){var e=r.shift();if(!e)return c(null);var n=A(o=(i="^",0===(o=e).indexOf(i)?o:"^"+o),"$")?o:o+"$",i=t.match(n);if(!i)return u();var o=a[e];if("string"==typeof o)return c(o);if("function"!=typeof o)return u();n=o,e=Xn(),o=e[0];return(0,e[1])(function(e){return"string"==typeof e?c(e):!1===e?c(null):u()}),n.length<=2?o(n(t,i)):n(t,i,o)}return{then:function(e){c=e,u()}}},n}(function(i){function e(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];i.apply(this,e),this.route={}}return i&&(e.__proto__=i),((e.prototype=Object.create(i&&i.prototype)).constructor=e).prototype.updateRender=function(){this.router.normalize(),this.route=this.router.parse(),h.setAttribute("data-page",this.route.file)},e.prototype.initRouter=function(){var n=this,e=this.config,e=new("history"===(e.routerMode||"hash")&&t?D:H)(e);this.router=e,this.updateRender(),U=this.route,e.onchange(function(e){n.updateRender(),n._updateRender(),U.path!==n.route.path?(n.$fetch(d,n.$resetEvents.bind(n,e.source)),U=n.route):n.$resetEvents(e.source)})},e}(function(e){function n(){e.apply(this,arguments)}return e&&(n.__proto__=e),((n.prototype=Object.create(e&&e.prototype)).constructor=n).prototype.initLifecycle=function(){var i=this;this._hooks={},this._lifecycle={},["init","mounted","beforeEach","afterEach","doneEach","ready"].forEach(function(e){var n=i._hooks[e]=[];i._lifecycle[e]=function(e){return n.push(e)}})},n.prototype.callHook=function(e,t,a){void 0===a&&(a=d);var r=this._hooks[e],c=this.config.catchPluginErrors,u=function(n){var e=r[n];if(n>=r.length)a(t);else if("function"==typeof e){var i="Docsify plugin error";if(2===e.length)try{e(t,function(e){t=e,u(n+1)})}catch(e){if(!c)throw e;console.error(i,e),u(n+1)}else try{var o=e(t);t=void 0===o?t:o,u(n+1)}catch(e){if(!c)throw e;console.error(i,e),u(n+1)}}else u(n+1)};u(0)},n}(we))))))));function Kn(e,n,i){return Qn&&Qn.abort&&Qn.abort(),Qn=X(e,!0,i)}window.Docsify={util:Me,dom:n,get:X,slugify:Tn,version:"4.13.1"},window.DocsifyCompiler=In,window.marked=Sn,window.Prism=Pn,e(function(e){return new Jn})}(); \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/static/js/emoji.min.js b/ruoyi-admin/src/main/resources/static/static/js/emoji.min.js deleted file mode 100644 index 8915160..0000000 --- a/ruoyi-admin/src/main/resources/static/static/js/emoji.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(){var o="https://github.githubassets.com/images/icons/emoji/",i={100:"unicode/1f4af.png?v8",1234:"unicode/1f522.png?v8","+1":"unicode/1f44d.png?v8","-1":"unicode/1f44e.png?v8","1st_place_medal":"unicode/1f947.png?v8","2nd_place_medal":"unicode/1f948.png?v8","3rd_place_medal":"unicode/1f949.png?v8","8ball":"unicode/1f3b1.png?v8",a:"unicode/1f170.png?v8",ab:"unicode/1f18e.png?v8",abacus:"unicode/1f9ee.png?v8",abc:"unicode/1f524.png?v8",abcd:"unicode/1f521.png?v8",accept:"unicode/1f251.png?v8",accessibility:"accessibility.png?v8",accordion:"unicode/1fa97.png?v8",adhesive_bandage:"unicode/1fa79.png?v8",adult:"unicode/1f9d1.png?v8",aerial_tramway:"unicode/1f6a1.png?v8",afghanistan:"unicode/1f1e6-1f1eb.png?v8",airplane:"unicode/2708.png?v8",aland_islands:"unicode/1f1e6-1f1fd.png?v8",alarm_clock:"unicode/23f0.png?v8",albania:"unicode/1f1e6-1f1f1.png?v8",alembic:"unicode/2697.png?v8",algeria:"unicode/1f1e9-1f1ff.png?v8",alien:"unicode/1f47d.png?v8",ambulance:"unicode/1f691.png?v8",american_samoa:"unicode/1f1e6-1f1f8.png?v8",amphora:"unicode/1f3fa.png?v8",anatomical_heart:"unicode/1fac0.png?v8",anchor:"unicode/2693.png?v8",andorra:"unicode/1f1e6-1f1e9.png?v8",angel:"unicode/1f47c.png?v8",anger:"unicode/1f4a2.png?v8",angola:"unicode/1f1e6-1f1f4.png?v8",angry:"unicode/1f620.png?v8",anguilla:"unicode/1f1e6-1f1ee.png?v8",anguished:"unicode/1f627.png?v8",ant:"unicode/1f41c.png?v8",antarctica:"unicode/1f1e6-1f1f6.png?v8",antigua_barbuda:"unicode/1f1e6-1f1ec.png?v8",apple:"unicode/1f34e.png?v8",aquarius:"unicode/2652.png?v8",argentina:"unicode/1f1e6-1f1f7.png?v8",aries:"unicode/2648.png?v8",armenia:"unicode/1f1e6-1f1f2.png?v8",arrow_backward:"unicode/25c0.png?v8",arrow_double_down:"unicode/23ec.png?v8",arrow_double_up:"unicode/23eb.png?v8",arrow_down:"unicode/2b07.png?v8",arrow_down_small:"unicode/1f53d.png?v8",arrow_forward:"unicode/25b6.png?v8",arrow_heading_down:"unicode/2935.png?v8",arrow_heading_up:"unicode/2934.png?v8",arrow_left:"unicode/2b05.png?v8",arrow_lower_left:"unicode/2199.png?v8",arrow_lower_right:"unicode/2198.png?v8",arrow_right:"unicode/27a1.png?v8",arrow_right_hook:"unicode/21aa.png?v8",arrow_up:"unicode/2b06.png?v8",arrow_up_down:"unicode/2195.png?v8",arrow_up_small:"unicode/1f53c.png?v8",arrow_upper_left:"unicode/2196.png?v8",arrow_upper_right:"unicode/2197.png?v8",arrows_clockwise:"unicode/1f503.png?v8",arrows_counterclockwise:"unicode/1f504.png?v8",art:"unicode/1f3a8.png?v8",articulated_lorry:"unicode/1f69b.png?v8",artificial_satellite:"unicode/1f6f0.png?v8",artist:"unicode/1f9d1-1f3a8.png?v8",aruba:"unicode/1f1e6-1f1fc.png?v8",ascension_island:"unicode/1f1e6-1f1e8.png?v8",asterisk:"unicode/002a-20e3.png?v8",astonished:"unicode/1f632.png?v8",astronaut:"unicode/1f9d1-1f680.png?v8",athletic_shoe:"unicode/1f45f.png?v8",atm:"unicode/1f3e7.png?v8",atom:"atom.png?v8",atom_symbol:"unicode/269b.png?v8",australia:"unicode/1f1e6-1f1fa.png?v8",austria:"unicode/1f1e6-1f1f9.png?v8",auto_rickshaw:"unicode/1f6fa.png?v8",avocado:"unicode/1f951.png?v8",axe:"unicode/1fa93.png?v8",azerbaijan:"unicode/1f1e6-1f1ff.png?v8",b:"unicode/1f171.png?v8",baby:"unicode/1f476.png?v8",baby_bottle:"unicode/1f37c.png?v8",baby_chick:"unicode/1f424.png?v8",baby_symbol:"unicode/1f6bc.png?v8",back:"unicode/1f519.png?v8",bacon:"unicode/1f953.png?v8",badger:"unicode/1f9a1.png?v8",badminton:"unicode/1f3f8.png?v8",bagel:"unicode/1f96f.png?v8",baggage_claim:"unicode/1f6c4.png?v8",baguette_bread:"unicode/1f956.png?v8",bahamas:"unicode/1f1e7-1f1f8.png?v8",bahrain:"unicode/1f1e7-1f1ed.png?v8",balance_scale:"unicode/2696.png?v8",bald_man:"unicode/1f468-1f9b2.png?v8",bald_woman:"unicode/1f469-1f9b2.png?v8",ballet_shoes:"unicode/1fa70.png?v8",balloon:"unicode/1f388.png?v8",ballot_box:"unicode/1f5f3.png?v8",ballot_box_with_check:"unicode/2611.png?v8",bamboo:"unicode/1f38d.png?v8",banana:"unicode/1f34c.png?v8",bangbang:"unicode/203c.png?v8",bangladesh:"unicode/1f1e7-1f1e9.png?v8",banjo:"unicode/1fa95.png?v8",bank:"unicode/1f3e6.png?v8",bar_chart:"unicode/1f4ca.png?v8",barbados:"unicode/1f1e7-1f1e7.png?v8",barber:"unicode/1f488.png?v8",baseball:"unicode/26be.png?v8",basecamp:"basecamp.png?v8",basecampy:"basecampy.png?v8",basket:"unicode/1f9fa.png?v8",basketball:"unicode/1f3c0.png?v8",basketball_man:"unicode/26f9-2642.png?v8",basketball_woman:"unicode/26f9-2640.png?v8",bat:"unicode/1f987.png?v8",bath:"unicode/1f6c0.png?v8",bathtub:"unicode/1f6c1.png?v8",battery:"unicode/1f50b.png?v8",beach_umbrella:"unicode/1f3d6.png?v8",bear:"unicode/1f43b.png?v8",bearded_person:"unicode/1f9d4.png?v8",beaver:"unicode/1f9ab.png?v8",bed:"unicode/1f6cf.png?v8",bee:"unicode/1f41d.png?v8",beer:"unicode/1f37a.png?v8",beers:"unicode/1f37b.png?v8",beetle:"unicode/1fab2.png?v8",beginner:"unicode/1f530.png?v8",belarus:"unicode/1f1e7-1f1fe.png?v8",belgium:"unicode/1f1e7-1f1ea.png?v8",belize:"unicode/1f1e7-1f1ff.png?v8",bell:"unicode/1f514.png?v8",bell_pepper:"unicode/1fad1.png?v8",bellhop_bell:"unicode/1f6ce.png?v8",benin:"unicode/1f1e7-1f1ef.png?v8",bento:"unicode/1f371.png?v8",bermuda:"unicode/1f1e7-1f1f2.png?v8",beverage_box:"unicode/1f9c3.png?v8",bhutan:"unicode/1f1e7-1f1f9.png?v8",bicyclist:"unicode/1f6b4.png?v8",bike:"unicode/1f6b2.png?v8",biking_man:"unicode/1f6b4-2642.png?v8",biking_woman:"unicode/1f6b4-2640.png?v8",bikini:"unicode/1f459.png?v8",billed_cap:"unicode/1f9e2.png?v8",biohazard:"unicode/2623.png?v8",bird:"unicode/1f426.png?v8",birthday:"unicode/1f382.png?v8",bison:"unicode/1f9ac.png?v8",black_cat:"unicode/1f408-2b1b.png?v8",black_circle:"unicode/26ab.png?v8",black_flag:"unicode/1f3f4.png?v8",black_heart:"unicode/1f5a4.png?v8",black_joker:"unicode/1f0cf.png?v8",black_large_square:"unicode/2b1b.png?v8",black_medium_small_square:"unicode/25fe.png?v8",black_medium_square:"unicode/25fc.png?v8",black_nib:"unicode/2712.png?v8",black_small_square:"unicode/25aa.png?v8",black_square_button:"unicode/1f532.png?v8",blond_haired_man:"unicode/1f471-2642.png?v8",blond_haired_person:"unicode/1f471.png?v8",blond_haired_woman:"unicode/1f471-2640.png?v8",blonde_woman:"unicode/1f471-2640.png?v8",blossom:"unicode/1f33c.png?v8",blowfish:"unicode/1f421.png?v8",blue_book:"unicode/1f4d8.png?v8",blue_car:"unicode/1f699.png?v8",blue_heart:"unicode/1f499.png?v8",blue_square:"unicode/1f7e6.png?v8",blueberries:"unicode/1fad0.png?v8",blush:"unicode/1f60a.png?v8",boar:"unicode/1f417.png?v8",boat:"unicode/26f5.png?v8",bolivia:"unicode/1f1e7-1f1f4.png?v8",bomb:"unicode/1f4a3.png?v8",bone:"unicode/1f9b4.png?v8",book:"unicode/1f4d6.png?v8",bookmark:"unicode/1f516.png?v8",bookmark_tabs:"unicode/1f4d1.png?v8",books:"unicode/1f4da.png?v8",boom:"unicode/1f4a5.png?v8",boomerang:"unicode/1fa83.png?v8",boot:"unicode/1f462.png?v8",bosnia_herzegovina:"unicode/1f1e7-1f1e6.png?v8",botswana:"unicode/1f1e7-1f1fc.png?v8",bouncing_ball_man:"unicode/26f9-2642.png?v8",bouncing_ball_person:"unicode/26f9.png?v8",bouncing_ball_woman:"unicode/26f9-2640.png?v8",bouquet:"unicode/1f490.png?v8",bouvet_island:"unicode/1f1e7-1f1fb.png?v8",bow:"unicode/1f647.png?v8",bow_and_arrow:"unicode/1f3f9.png?v8",bowing_man:"unicode/1f647-2642.png?v8",bowing_woman:"unicode/1f647-2640.png?v8",bowl_with_spoon:"unicode/1f963.png?v8",bowling:"unicode/1f3b3.png?v8",bowtie:"bowtie.png?v8",boxing_glove:"unicode/1f94a.png?v8",boy:"unicode/1f466.png?v8",brain:"unicode/1f9e0.png?v8",brazil:"unicode/1f1e7-1f1f7.png?v8",bread:"unicode/1f35e.png?v8",breast_feeding:"unicode/1f931.png?v8",bricks:"unicode/1f9f1.png?v8",bride_with_veil:"unicode/1f470-2640.png?v8",bridge_at_night:"unicode/1f309.png?v8",briefcase:"unicode/1f4bc.png?v8",british_indian_ocean_territory:"unicode/1f1ee-1f1f4.png?v8",british_virgin_islands:"unicode/1f1fb-1f1ec.png?v8",broccoli:"unicode/1f966.png?v8",broken_heart:"unicode/1f494.png?v8",broom:"unicode/1f9f9.png?v8",brown_circle:"unicode/1f7e4.png?v8",brown_heart:"unicode/1f90e.png?v8",brown_square:"unicode/1f7eb.png?v8",brunei:"unicode/1f1e7-1f1f3.png?v8",bubble_tea:"unicode/1f9cb.png?v8",bucket:"unicode/1faa3.png?v8",bug:"unicode/1f41b.png?v8",building_construction:"unicode/1f3d7.png?v8",bulb:"unicode/1f4a1.png?v8",bulgaria:"unicode/1f1e7-1f1ec.png?v8",bullettrain_front:"unicode/1f685.png?v8",bullettrain_side:"unicode/1f684.png?v8",burkina_faso:"unicode/1f1e7-1f1eb.png?v8",burrito:"unicode/1f32f.png?v8",burundi:"unicode/1f1e7-1f1ee.png?v8",bus:"unicode/1f68c.png?v8",business_suit_levitating:"unicode/1f574.png?v8",busstop:"unicode/1f68f.png?v8",bust_in_silhouette:"unicode/1f464.png?v8",busts_in_silhouette:"unicode/1f465.png?v8",butter:"unicode/1f9c8.png?v8",butterfly:"unicode/1f98b.png?v8",cactus:"unicode/1f335.png?v8",cake:"unicode/1f370.png?v8",calendar:"unicode/1f4c6.png?v8",call_me_hand:"unicode/1f919.png?v8",calling:"unicode/1f4f2.png?v8",cambodia:"unicode/1f1f0-1f1ed.png?v8",camel:"unicode/1f42b.png?v8",camera:"unicode/1f4f7.png?v8",camera_flash:"unicode/1f4f8.png?v8",cameroon:"unicode/1f1e8-1f1f2.png?v8",camping:"unicode/1f3d5.png?v8",canada:"unicode/1f1e8-1f1e6.png?v8",canary_islands:"unicode/1f1ee-1f1e8.png?v8",cancer:"unicode/264b.png?v8",candle:"unicode/1f56f.png?v8",candy:"unicode/1f36c.png?v8",canned_food:"unicode/1f96b.png?v8",canoe:"unicode/1f6f6.png?v8",cape_verde:"unicode/1f1e8-1f1fb.png?v8",capital_abcd:"unicode/1f520.png?v8",capricorn:"unicode/2651.png?v8",car:"unicode/1f697.png?v8",card_file_box:"unicode/1f5c3.png?v8",card_index:"unicode/1f4c7.png?v8",card_index_dividers:"unicode/1f5c2.png?v8",caribbean_netherlands:"unicode/1f1e7-1f1f6.png?v8",carousel_horse:"unicode/1f3a0.png?v8",carpentry_saw:"unicode/1fa9a.png?v8",carrot:"unicode/1f955.png?v8",cartwheeling:"unicode/1f938.png?v8",cat:"unicode/1f431.png?v8",cat2:"unicode/1f408.png?v8",cayman_islands:"unicode/1f1f0-1f1fe.png?v8",cd:"unicode/1f4bf.png?v8",central_african_republic:"unicode/1f1e8-1f1eb.png?v8",ceuta_melilla:"unicode/1f1ea-1f1e6.png?v8",chad:"unicode/1f1f9-1f1e9.png?v8",chains:"unicode/26d3.png?v8",chair:"unicode/1fa91.png?v8",champagne:"unicode/1f37e.png?v8",chart:"unicode/1f4b9.png?v8",chart_with_downwards_trend:"unicode/1f4c9.png?v8",chart_with_upwards_trend:"unicode/1f4c8.png?v8",checkered_flag:"unicode/1f3c1.png?v8",cheese:"unicode/1f9c0.png?v8",cherries:"unicode/1f352.png?v8",cherry_blossom:"unicode/1f338.png?v8",chess_pawn:"unicode/265f.png?v8",chestnut:"unicode/1f330.png?v8",chicken:"unicode/1f414.png?v8",child:"unicode/1f9d2.png?v8",children_crossing:"unicode/1f6b8.png?v8",chile:"unicode/1f1e8-1f1f1.png?v8",chipmunk:"unicode/1f43f.png?v8",chocolate_bar:"unicode/1f36b.png?v8",chopsticks:"unicode/1f962.png?v8",christmas_island:"unicode/1f1e8-1f1fd.png?v8",christmas_tree:"unicode/1f384.png?v8",church:"unicode/26ea.png?v8",cinema:"unicode/1f3a6.png?v8",circus_tent:"unicode/1f3aa.png?v8",city_sunrise:"unicode/1f307.png?v8",city_sunset:"unicode/1f306.png?v8",cityscape:"unicode/1f3d9.png?v8",cl:"unicode/1f191.png?v8",clamp:"unicode/1f5dc.png?v8",clap:"unicode/1f44f.png?v8",clapper:"unicode/1f3ac.png?v8",classical_building:"unicode/1f3db.png?v8",climbing:"unicode/1f9d7.png?v8",climbing_man:"unicode/1f9d7-2642.png?v8",climbing_woman:"unicode/1f9d7-2640.png?v8",clinking_glasses:"unicode/1f942.png?v8",clipboard:"unicode/1f4cb.png?v8",clipperton_island:"unicode/1f1e8-1f1f5.png?v8",clock1:"unicode/1f550.png?v8",clock10:"unicode/1f559.png?v8",clock1030:"unicode/1f565.png?v8",clock11:"unicode/1f55a.png?v8",clock1130:"unicode/1f566.png?v8",clock12:"unicode/1f55b.png?v8",clock1230:"unicode/1f567.png?v8",clock130:"unicode/1f55c.png?v8",clock2:"unicode/1f551.png?v8",clock230:"unicode/1f55d.png?v8",clock3:"unicode/1f552.png?v8",clock330:"unicode/1f55e.png?v8",clock4:"unicode/1f553.png?v8",clock430:"unicode/1f55f.png?v8",clock5:"unicode/1f554.png?v8",clock530:"unicode/1f560.png?v8",clock6:"unicode/1f555.png?v8",clock630:"unicode/1f561.png?v8",clock7:"unicode/1f556.png?v8",clock730:"unicode/1f562.png?v8",clock8:"unicode/1f557.png?v8",clock830:"unicode/1f563.png?v8",clock9:"unicode/1f558.png?v8",clock930:"unicode/1f564.png?v8",closed_book:"unicode/1f4d5.png?v8",closed_lock_with_key:"unicode/1f510.png?v8",closed_umbrella:"unicode/1f302.png?v8",cloud:"unicode/2601.png?v8",cloud_with_lightning:"unicode/1f329.png?v8",cloud_with_lightning_and_rain:"unicode/26c8.png?v8",cloud_with_rain:"unicode/1f327.png?v8",cloud_with_snow:"unicode/1f328.png?v8",clown_face:"unicode/1f921.png?v8",clubs:"unicode/2663.png?v8",cn:"unicode/1f1e8-1f1f3.png?v8",coat:"unicode/1f9e5.png?v8",cockroach:"unicode/1fab3.png?v8",cocktail:"unicode/1f378.png?v8",coconut:"unicode/1f965.png?v8",cocos_islands:"unicode/1f1e8-1f1e8.png?v8",coffee:"unicode/2615.png?v8",coffin:"unicode/26b0.png?v8",coin:"unicode/1fa99.png?v8",cold_face:"unicode/1f976.png?v8",cold_sweat:"unicode/1f630.png?v8",collision:"unicode/1f4a5.png?v8",colombia:"unicode/1f1e8-1f1f4.png?v8",comet:"unicode/2604.png?v8",comoros:"unicode/1f1f0-1f1f2.png?v8",compass:"unicode/1f9ed.png?v8",computer:"unicode/1f4bb.png?v8",computer_mouse:"unicode/1f5b1.png?v8",confetti_ball:"unicode/1f38a.png?v8",confounded:"unicode/1f616.png?v8",confused:"unicode/1f615.png?v8",congo_brazzaville:"unicode/1f1e8-1f1ec.png?v8",congo_kinshasa:"unicode/1f1e8-1f1e9.png?v8",congratulations:"unicode/3297.png?v8",construction:"unicode/1f6a7.png?v8",construction_worker:"unicode/1f477.png?v8",construction_worker_man:"unicode/1f477-2642.png?v8",construction_worker_woman:"unicode/1f477-2640.png?v8",control_knobs:"unicode/1f39b.png?v8",convenience_store:"unicode/1f3ea.png?v8",cook:"unicode/1f9d1-1f373.png?v8",cook_islands:"unicode/1f1e8-1f1f0.png?v8",cookie:"unicode/1f36a.png?v8",cool:"unicode/1f192.png?v8",cop:"unicode/1f46e.png?v8",copyright:"unicode/00a9.png?v8",corn:"unicode/1f33d.png?v8",costa_rica:"unicode/1f1e8-1f1f7.png?v8",cote_divoire:"unicode/1f1e8-1f1ee.png?v8",couch_and_lamp:"unicode/1f6cb.png?v8",couple:"unicode/1f46b.png?v8",couple_with_heart:"unicode/1f491.png?v8",couple_with_heart_man_man:"unicode/1f468-2764-1f468.png?v8",couple_with_heart_woman_man:"unicode/1f469-2764-1f468.png?v8",couple_with_heart_woman_woman:"unicode/1f469-2764-1f469.png?v8",couplekiss:"unicode/1f48f.png?v8",couplekiss_man_man:"unicode/1f468-2764-1f48b-1f468.png?v8",couplekiss_man_woman:"unicode/1f469-2764-1f48b-1f468.png?v8",couplekiss_woman_woman:"unicode/1f469-2764-1f48b-1f469.png?v8",cow:"unicode/1f42e.png?v8",cow2:"unicode/1f404.png?v8",cowboy_hat_face:"unicode/1f920.png?v8",crab:"unicode/1f980.png?v8",crayon:"unicode/1f58d.png?v8",credit_card:"unicode/1f4b3.png?v8",crescent_moon:"unicode/1f319.png?v8",cricket:"unicode/1f997.png?v8",cricket_game:"unicode/1f3cf.png?v8",croatia:"unicode/1f1ed-1f1f7.png?v8",crocodile:"unicode/1f40a.png?v8",croissant:"unicode/1f950.png?v8",crossed_fingers:"unicode/1f91e.png?v8",crossed_flags:"unicode/1f38c.png?v8",crossed_swords:"unicode/2694.png?v8",crown:"unicode/1f451.png?v8",cry:"unicode/1f622.png?v8",crying_cat_face:"unicode/1f63f.png?v8",crystal_ball:"unicode/1f52e.png?v8",cuba:"unicode/1f1e8-1f1fa.png?v8",cucumber:"unicode/1f952.png?v8",cup_with_straw:"unicode/1f964.png?v8",cupcake:"unicode/1f9c1.png?v8",cupid:"unicode/1f498.png?v8",curacao:"unicode/1f1e8-1f1fc.png?v8",curling_stone:"unicode/1f94c.png?v8",curly_haired_man:"unicode/1f468-1f9b1.png?v8",curly_haired_woman:"unicode/1f469-1f9b1.png?v8",curly_loop:"unicode/27b0.png?v8",currency_exchange:"unicode/1f4b1.png?v8",curry:"unicode/1f35b.png?v8",cursing_face:"unicode/1f92c.png?v8",custard:"unicode/1f36e.png?v8",customs:"unicode/1f6c3.png?v8",cut_of_meat:"unicode/1f969.png?v8",cyclone:"unicode/1f300.png?v8",cyprus:"unicode/1f1e8-1f1fe.png?v8",czech_republic:"unicode/1f1e8-1f1ff.png?v8",dagger:"unicode/1f5e1.png?v8",dancer:"unicode/1f483.png?v8",dancers:"unicode/1f46f.png?v8",dancing_men:"unicode/1f46f-2642.png?v8",dancing_women:"unicode/1f46f-2640.png?v8",dango:"unicode/1f361.png?v8",dark_sunglasses:"unicode/1f576.png?v8",dart:"unicode/1f3af.png?v8",dash:"unicode/1f4a8.png?v8",date:"unicode/1f4c5.png?v8",de:"unicode/1f1e9-1f1ea.png?v8",deaf_man:"unicode/1f9cf-2642.png?v8",deaf_person:"unicode/1f9cf.png?v8",deaf_woman:"unicode/1f9cf-2640.png?v8",deciduous_tree:"unicode/1f333.png?v8",deer:"unicode/1f98c.png?v8",denmark:"unicode/1f1e9-1f1f0.png?v8",department_store:"unicode/1f3ec.png?v8",dependabot:"dependabot.png?v8",derelict_house:"unicode/1f3da.png?v8",desert:"unicode/1f3dc.png?v8",desert_island:"unicode/1f3dd.png?v8",desktop_computer:"unicode/1f5a5.png?v8",detective:"unicode/1f575.png?v8",diamond_shape_with_a_dot_inside:"unicode/1f4a0.png?v8",diamonds:"unicode/2666.png?v8",diego_garcia:"unicode/1f1e9-1f1ec.png?v8",disappointed:"unicode/1f61e.png?v8",disappointed_relieved:"unicode/1f625.png?v8",disguised_face:"unicode/1f978.png?v8",diving_mask:"unicode/1f93f.png?v8",diya_lamp:"unicode/1fa94.png?v8",dizzy:"unicode/1f4ab.png?v8",dizzy_face:"unicode/1f635.png?v8",djibouti:"unicode/1f1e9-1f1ef.png?v8",dna:"unicode/1f9ec.png?v8",do_not_litter:"unicode/1f6af.png?v8",dodo:"unicode/1f9a4.png?v8",dog:"unicode/1f436.png?v8",dog2:"unicode/1f415.png?v8",dollar:"unicode/1f4b5.png?v8",dolls:"unicode/1f38e.png?v8",dolphin:"unicode/1f42c.png?v8",dominica:"unicode/1f1e9-1f1f2.png?v8",dominican_republic:"unicode/1f1e9-1f1f4.png?v8",door:"unicode/1f6aa.png?v8",doughnut:"unicode/1f369.png?v8",dove:"unicode/1f54a.png?v8",dragon:"unicode/1f409.png?v8",dragon_face:"unicode/1f432.png?v8",dress:"unicode/1f457.png?v8",dromedary_camel:"unicode/1f42a.png?v8",drooling_face:"unicode/1f924.png?v8",drop_of_blood:"unicode/1fa78.png?v8",droplet:"unicode/1f4a7.png?v8",drum:"unicode/1f941.png?v8",duck:"unicode/1f986.png?v8",dumpling:"unicode/1f95f.png?v8",dvd:"unicode/1f4c0.png?v8","e-mail":"unicode/1f4e7.png?v8",eagle:"unicode/1f985.png?v8",ear:"unicode/1f442.png?v8",ear_of_rice:"unicode/1f33e.png?v8",ear_with_hearing_aid:"unicode/1f9bb.png?v8",earth_africa:"unicode/1f30d.png?v8",earth_americas:"unicode/1f30e.png?v8",earth_asia:"unicode/1f30f.png?v8",ecuador:"unicode/1f1ea-1f1e8.png?v8",egg:"unicode/1f95a.png?v8",eggplant:"unicode/1f346.png?v8",egypt:"unicode/1f1ea-1f1ec.png?v8",eight:"unicode/0038-20e3.png?v8",eight_pointed_black_star:"unicode/2734.png?v8",eight_spoked_asterisk:"unicode/2733.png?v8",eject_button:"unicode/23cf.png?v8",el_salvador:"unicode/1f1f8-1f1fb.png?v8",electric_plug:"unicode/1f50c.png?v8",electron:"electron.png?v8",elephant:"unicode/1f418.png?v8",elevator:"unicode/1f6d7.png?v8",elf:"unicode/1f9dd.png?v8",elf_man:"unicode/1f9dd-2642.png?v8",elf_woman:"unicode/1f9dd-2640.png?v8",email:"unicode/1f4e7.png?v8",end:"unicode/1f51a.png?v8",england:"unicode/1f3f4-e0067-e0062-e0065-e006e-e0067-e007f.png?v8",envelope:"unicode/2709.png?v8",envelope_with_arrow:"unicode/1f4e9.png?v8",equatorial_guinea:"unicode/1f1ec-1f1f6.png?v8",eritrea:"unicode/1f1ea-1f1f7.png?v8",es:"unicode/1f1ea-1f1f8.png?v8",estonia:"unicode/1f1ea-1f1ea.png?v8",ethiopia:"unicode/1f1ea-1f1f9.png?v8",eu:"unicode/1f1ea-1f1fa.png?v8",euro:"unicode/1f4b6.png?v8",european_castle:"unicode/1f3f0.png?v8",european_post_office:"unicode/1f3e4.png?v8",european_union:"unicode/1f1ea-1f1fa.png?v8",evergreen_tree:"unicode/1f332.png?v8",exclamation:"unicode/2757.png?v8",exploding_head:"unicode/1f92f.png?v8",expressionless:"unicode/1f611.png?v8",eye:"unicode/1f441.png?v8",eye_speech_bubble:"unicode/1f441-1f5e8.png?v8",eyeglasses:"unicode/1f453.png?v8",eyes:"unicode/1f440.png?v8",face_exhaling:"unicode/1f62e-1f4a8.png?v8",face_in_clouds:"unicode/1f636-1f32b.png?v8",face_with_head_bandage:"unicode/1f915.png?v8",face_with_spiral_eyes:"unicode/1f635-1f4ab.png?v8",face_with_thermometer:"unicode/1f912.png?v8",facepalm:"unicode/1f926.png?v8",facepunch:"unicode/1f44a.png?v8",factory:"unicode/1f3ed.png?v8",factory_worker:"unicode/1f9d1-1f3ed.png?v8",fairy:"unicode/1f9da.png?v8",fairy_man:"unicode/1f9da-2642.png?v8",fairy_woman:"unicode/1f9da-2640.png?v8",falafel:"unicode/1f9c6.png?v8",falkland_islands:"unicode/1f1eb-1f1f0.png?v8",fallen_leaf:"unicode/1f342.png?v8",family:"unicode/1f46a.png?v8",family_man_boy:"unicode/1f468-1f466.png?v8",family_man_boy_boy:"unicode/1f468-1f466-1f466.png?v8",family_man_girl:"unicode/1f468-1f467.png?v8",family_man_girl_boy:"unicode/1f468-1f467-1f466.png?v8",family_man_girl_girl:"unicode/1f468-1f467-1f467.png?v8",family_man_man_boy:"unicode/1f468-1f468-1f466.png?v8",family_man_man_boy_boy:"unicode/1f468-1f468-1f466-1f466.png?v8",family_man_man_girl:"unicode/1f468-1f468-1f467.png?v8",family_man_man_girl_boy:"unicode/1f468-1f468-1f467-1f466.png?v8",family_man_man_girl_girl:"unicode/1f468-1f468-1f467-1f467.png?v8",family_man_woman_boy:"unicode/1f468-1f469-1f466.png?v8",family_man_woman_boy_boy:"unicode/1f468-1f469-1f466-1f466.png?v8",family_man_woman_girl:"unicode/1f468-1f469-1f467.png?v8",family_man_woman_girl_boy:"unicode/1f468-1f469-1f467-1f466.png?v8",family_man_woman_girl_girl:"unicode/1f468-1f469-1f467-1f467.png?v8",family_woman_boy:"unicode/1f469-1f466.png?v8",family_woman_boy_boy:"unicode/1f469-1f466-1f466.png?v8",family_woman_girl:"unicode/1f469-1f467.png?v8",family_woman_girl_boy:"unicode/1f469-1f467-1f466.png?v8",family_woman_girl_girl:"unicode/1f469-1f467-1f467.png?v8",family_woman_woman_boy:"unicode/1f469-1f469-1f466.png?v8",family_woman_woman_boy_boy:"unicode/1f469-1f469-1f466-1f466.png?v8",family_woman_woman_girl:"unicode/1f469-1f469-1f467.png?v8",family_woman_woman_girl_boy:"unicode/1f469-1f469-1f467-1f466.png?v8",family_woman_woman_girl_girl:"unicode/1f469-1f469-1f467-1f467.png?v8",farmer:"unicode/1f9d1-1f33e.png?v8",faroe_islands:"unicode/1f1eb-1f1f4.png?v8",fast_forward:"unicode/23e9.png?v8",fax:"unicode/1f4e0.png?v8",fearful:"unicode/1f628.png?v8",feather:"unicode/1fab6.png?v8",feelsgood:"feelsgood.png?v8",feet:"unicode/1f43e.png?v8",female_detective:"unicode/1f575-2640.png?v8",female_sign:"unicode/2640.png?v8",ferris_wheel:"unicode/1f3a1.png?v8",ferry:"unicode/26f4.png?v8",field_hockey:"unicode/1f3d1.png?v8",fiji:"unicode/1f1eb-1f1ef.png?v8",file_cabinet:"unicode/1f5c4.png?v8",file_folder:"unicode/1f4c1.png?v8",film_projector:"unicode/1f4fd.png?v8",film_strip:"unicode/1f39e.png?v8",finland:"unicode/1f1eb-1f1ee.png?v8",finnadie:"finnadie.png?v8",fire:"unicode/1f525.png?v8",fire_engine:"unicode/1f692.png?v8",fire_extinguisher:"unicode/1f9ef.png?v8",firecracker:"unicode/1f9e8.png?v8",firefighter:"unicode/1f9d1-1f692.png?v8",fireworks:"unicode/1f386.png?v8",first_quarter_moon:"unicode/1f313.png?v8",first_quarter_moon_with_face:"unicode/1f31b.png?v8",fish:"unicode/1f41f.png?v8",fish_cake:"unicode/1f365.png?v8",fishing_pole_and_fish:"unicode/1f3a3.png?v8",fishsticks:"fishsticks.png?v8",fist:"unicode/270a.png?v8",fist_left:"unicode/1f91b.png?v8",fist_oncoming:"unicode/1f44a.png?v8",fist_raised:"unicode/270a.png?v8",fist_right:"unicode/1f91c.png?v8",five:"unicode/0035-20e3.png?v8",flags:"unicode/1f38f.png?v8",flamingo:"unicode/1f9a9.png?v8",flashlight:"unicode/1f526.png?v8",flat_shoe:"unicode/1f97f.png?v8",flatbread:"unicode/1fad3.png?v8",fleur_de_lis:"unicode/269c.png?v8",flight_arrival:"unicode/1f6ec.png?v8",flight_departure:"unicode/1f6eb.png?v8",flipper:"unicode/1f42c.png?v8",floppy_disk:"unicode/1f4be.png?v8",flower_playing_cards:"unicode/1f3b4.png?v8",flushed:"unicode/1f633.png?v8",fly:"unicode/1fab0.png?v8",flying_disc:"unicode/1f94f.png?v8",flying_saucer:"unicode/1f6f8.png?v8",fog:"unicode/1f32b.png?v8",foggy:"unicode/1f301.png?v8",fondue:"unicode/1fad5.png?v8",foot:"unicode/1f9b6.png?v8",football:"unicode/1f3c8.png?v8",footprints:"unicode/1f463.png?v8",fork_and_knife:"unicode/1f374.png?v8",fortune_cookie:"unicode/1f960.png?v8",fountain:"unicode/26f2.png?v8",fountain_pen:"unicode/1f58b.png?v8",four:"unicode/0034-20e3.png?v8",four_leaf_clover:"unicode/1f340.png?v8",fox_face:"unicode/1f98a.png?v8",fr:"unicode/1f1eb-1f1f7.png?v8",framed_picture:"unicode/1f5bc.png?v8",free:"unicode/1f193.png?v8",french_guiana:"unicode/1f1ec-1f1eb.png?v8",french_polynesia:"unicode/1f1f5-1f1eb.png?v8",french_southern_territories:"unicode/1f1f9-1f1eb.png?v8",fried_egg:"unicode/1f373.png?v8",fried_shrimp:"unicode/1f364.png?v8",fries:"unicode/1f35f.png?v8",frog:"unicode/1f438.png?v8",frowning:"unicode/1f626.png?v8",frowning_face:"unicode/2639.png?v8",frowning_man:"unicode/1f64d-2642.png?v8",frowning_person:"unicode/1f64d.png?v8",frowning_woman:"unicode/1f64d-2640.png?v8",fu:"unicode/1f595.png?v8",fuelpump:"unicode/26fd.png?v8",full_moon:"unicode/1f315.png?v8",full_moon_with_face:"unicode/1f31d.png?v8",funeral_urn:"unicode/26b1.png?v8",gabon:"unicode/1f1ec-1f1e6.png?v8",gambia:"unicode/1f1ec-1f1f2.png?v8",game_die:"unicode/1f3b2.png?v8",garlic:"unicode/1f9c4.png?v8",gb:"unicode/1f1ec-1f1e7.png?v8",gear:"unicode/2699.png?v8",gem:"unicode/1f48e.png?v8",gemini:"unicode/264a.png?v8",genie:"unicode/1f9de.png?v8",genie_man:"unicode/1f9de-2642.png?v8",genie_woman:"unicode/1f9de-2640.png?v8",georgia:"unicode/1f1ec-1f1ea.png?v8",ghana:"unicode/1f1ec-1f1ed.png?v8",ghost:"unicode/1f47b.png?v8",gibraltar:"unicode/1f1ec-1f1ee.png?v8",gift:"unicode/1f381.png?v8",gift_heart:"unicode/1f49d.png?v8",giraffe:"unicode/1f992.png?v8",girl:"unicode/1f467.png?v8",globe_with_meridians:"unicode/1f310.png?v8",gloves:"unicode/1f9e4.png?v8",goal_net:"unicode/1f945.png?v8",goat:"unicode/1f410.png?v8",goberserk:"goberserk.png?v8",godmode:"godmode.png?v8",goggles:"unicode/1f97d.png?v8",golf:"unicode/26f3.png?v8",golfing:"unicode/1f3cc.png?v8",golfing_man:"unicode/1f3cc-2642.png?v8",golfing_woman:"unicode/1f3cc-2640.png?v8",gorilla:"unicode/1f98d.png?v8",grapes:"unicode/1f347.png?v8",greece:"unicode/1f1ec-1f1f7.png?v8",green_apple:"unicode/1f34f.png?v8",green_book:"unicode/1f4d7.png?v8",green_circle:"unicode/1f7e2.png?v8",green_heart:"unicode/1f49a.png?v8",green_salad:"unicode/1f957.png?v8",green_square:"unicode/1f7e9.png?v8",greenland:"unicode/1f1ec-1f1f1.png?v8",grenada:"unicode/1f1ec-1f1e9.png?v8",grey_exclamation:"unicode/2755.png?v8",grey_question:"unicode/2754.png?v8",grimacing:"unicode/1f62c.png?v8",grin:"unicode/1f601.png?v8",grinning:"unicode/1f600.png?v8",guadeloupe:"unicode/1f1ec-1f1f5.png?v8",guam:"unicode/1f1ec-1f1fa.png?v8",guard:"unicode/1f482.png?v8",guardsman:"unicode/1f482-2642.png?v8",guardswoman:"unicode/1f482-2640.png?v8",guatemala:"unicode/1f1ec-1f1f9.png?v8",guernsey:"unicode/1f1ec-1f1ec.png?v8",guide_dog:"unicode/1f9ae.png?v8",guinea:"unicode/1f1ec-1f1f3.png?v8",guinea_bissau:"unicode/1f1ec-1f1fc.png?v8",guitar:"unicode/1f3b8.png?v8",gun:"unicode/1f52b.png?v8",guyana:"unicode/1f1ec-1f1fe.png?v8",haircut:"unicode/1f487.png?v8",haircut_man:"unicode/1f487-2642.png?v8",haircut_woman:"unicode/1f487-2640.png?v8",haiti:"unicode/1f1ed-1f1f9.png?v8",hamburger:"unicode/1f354.png?v8",hammer:"unicode/1f528.png?v8",hammer_and_pick:"unicode/2692.png?v8",hammer_and_wrench:"unicode/1f6e0.png?v8",hamster:"unicode/1f439.png?v8",hand:"unicode/270b.png?v8",hand_over_mouth:"unicode/1f92d.png?v8",handbag:"unicode/1f45c.png?v8",handball_person:"unicode/1f93e.png?v8",handshake:"unicode/1f91d.png?v8",hankey:"unicode/1f4a9.png?v8",hash:"unicode/0023-20e3.png?v8",hatched_chick:"unicode/1f425.png?v8",hatching_chick:"unicode/1f423.png?v8",headphones:"unicode/1f3a7.png?v8",headstone:"unicode/1faa6.png?v8",health_worker:"unicode/1f9d1-2695.png?v8",hear_no_evil:"unicode/1f649.png?v8",heard_mcdonald_islands:"unicode/1f1ed-1f1f2.png?v8",heart:"unicode/2764.png?v8",heart_decoration:"unicode/1f49f.png?v8",heart_eyes:"unicode/1f60d.png?v8",heart_eyes_cat:"unicode/1f63b.png?v8",heart_on_fire:"unicode/2764-1f525.png?v8",heartbeat:"unicode/1f493.png?v8",heartpulse:"unicode/1f497.png?v8",hearts:"unicode/2665.png?v8",heavy_check_mark:"unicode/2714.png?v8",heavy_division_sign:"unicode/2797.png?v8",heavy_dollar_sign:"unicode/1f4b2.png?v8",heavy_exclamation_mark:"unicode/2757.png?v8",heavy_heart_exclamation:"unicode/2763.png?v8",heavy_minus_sign:"unicode/2796.png?v8",heavy_multiplication_x:"unicode/2716.png?v8",heavy_plus_sign:"unicode/2795.png?v8",hedgehog:"unicode/1f994.png?v8",helicopter:"unicode/1f681.png?v8",herb:"unicode/1f33f.png?v8",hibiscus:"unicode/1f33a.png?v8",high_brightness:"unicode/1f506.png?v8",high_heel:"unicode/1f460.png?v8",hiking_boot:"unicode/1f97e.png?v8",hindu_temple:"unicode/1f6d5.png?v8",hippopotamus:"unicode/1f99b.png?v8",hocho:"unicode/1f52a.png?v8",hole:"unicode/1f573.png?v8",honduras:"unicode/1f1ed-1f1f3.png?v8",honey_pot:"unicode/1f36f.png?v8",honeybee:"unicode/1f41d.png?v8",hong_kong:"unicode/1f1ed-1f1f0.png?v8",hook:"unicode/1fa9d.png?v8",horse:"unicode/1f434.png?v8",horse_racing:"unicode/1f3c7.png?v8",hospital:"unicode/1f3e5.png?v8",hot_face:"unicode/1f975.png?v8",hot_pepper:"unicode/1f336.png?v8",hotdog:"unicode/1f32d.png?v8",hotel:"unicode/1f3e8.png?v8",hotsprings:"unicode/2668.png?v8",hourglass:"unicode/231b.png?v8",hourglass_flowing_sand:"unicode/23f3.png?v8",house:"unicode/1f3e0.png?v8",house_with_garden:"unicode/1f3e1.png?v8",houses:"unicode/1f3d8.png?v8",hugs:"unicode/1f917.png?v8",hungary:"unicode/1f1ed-1f1fa.png?v8",hurtrealbad:"hurtrealbad.png?v8",hushed:"unicode/1f62f.png?v8",hut:"unicode/1f6d6.png?v8",ice_cream:"unicode/1f368.png?v8",ice_cube:"unicode/1f9ca.png?v8",ice_hockey:"unicode/1f3d2.png?v8",ice_skate:"unicode/26f8.png?v8",icecream:"unicode/1f366.png?v8",iceland:"unicode/1f1ee-1f1f8.png?v8",id:"unicode/1f194.png?v8",ideograph_advantage:"unicode/1f250.png?v8",imp:"unicode/1f47f.png?v8",inbox_tray:"unicode/1f4e5.png?v8",incoming_envelope:"unicode/1f4e8.png?v8",india:"unicode/1f1ee-1f1f3.png?v8",indonesia:"unicode/1f1ee-1f1e9.png?v8",infinity:"unicode/267e.png?v8",information_desk_person:"unicode/1f481.png?v8",information_source:"unicode/2139.png?v8",innocent:"unicode/1f607.png?v8",interrobang:"unicode/2049.png?v8",iphone:"unicode/1f4f1.png?v8",iran:"unicode/1f1ee-1f1f7.png?v8",iraq:"unicode/1f1ee-1f1f6.png?v8",ireland:"unicode/1f1ee-1f1ea.png?v8",isle_of_man:"unicode/1f1ee-1f1f2.png?v8",israel:"unicode/1f1ee-1f1f1.png?v8",it:"unicode/1f1ee-1f1f9.png?v8",izakaya_lantern:"unicode/1f3ee.png?v8",jack_o_lantern:"unicode/1f383.png?v8",jamaica:"unicode/1f1ef-1f1f2.png?v8",japan:"unicode/1f5fe.png?v8",japanese_castle:"unicode/1f3ef.png?v8",japanese_goblin:"unicode/1f47a.png?v8",japanese_ogre:"unicode/1f479.png?v8",jeans:"unicode/1f456.png?v8",jersey:"unicode/1f1ef-1f1ea.png?v8",jigsaw:"unicode/1f9e9.png?v8",jordan:"unicode/1f1ef-1f1f4.png?v8",joy:"unicode/1f602.png?v8",joy_cat:"unicode/1f639.png?v8",joystick:"unicode/1f579.png?v8",jp:"unicode/1f1ef-1f1f5.png?v8",judge:"unicode/1f9d1-2696.png?v8",juggling_person:"unicode/1f939.png?v8",kaaba:"unicode/1f54b.png?v8",kangaroo:"unicode/1f998.png?v8",kazakhstan:"unicode/1f1f0-1f1ff.png?v8",kenya:"unicode/1f1f0-1f1ea.png?v8",key:"unicode/1f511.png?v8",keyboard:"unicode/2328.png?v8",keycap_ten:"unicode/1f51f.png?v8",kick_scooter:"unicode/1f6f4.png?v8",kimono:"unicode/1f458.png?v8",kiribati:"unicode/1f1f0-1f1ee.png?v8",kiss:"unicode/1f48b.png?v8",kissing:"unicode/1f617.png?v8",kissing_cat:"unicode/1f63d.png?v8",kissing_closed_eyes:"unicode/1f61a.png?v8",kissing_heart:"unicode/1f618.png?v8",kissing_smiling_eyes:"unicode/1f619.png?v8",kite:"unicode/1fa81.png?v8",kiwi_fruit:"unicode/1f95d.png?v8",kneeling_man:"unicode/1f9ce-2642.png?v8",kneeling_person:"unicode/1f9ce.png?v8",kneeling_woman:"unicode/1f9ce-2640.png?v8",knife:"unicode/1f52a.png?v8",knot:"unicode/1faa2.png?v8",koala:"unicode/1f428.png?v8",koko:"unicode/1f201.png?v8",kosovo:"unicode/1f1fd-1f1f0.png?v8",kr:"unicode/1f1f0-1f1f7.png?v8",kuwait:"unicode/1f1f0-1f1fc.png?v8",kyrgyzstan:"unicode/1f1f0-1f1ec.png?v8",lab_coat:"unicode/1f97c.png?v8",label:"unicode/1f3f7.png?v8",lacrosse:"unicode/1f94d.png?v8",ladder:"unicode/1fa9c.png?v8",lady_beetle:"unicode/1f41e.png?v8",lantern:"unicode/1f3ee.png?v8",laos:"unicode/1f1f1-1f1e6.png?v8",large_blue_circle:"unicode/1f535.png?v8",large_blue_diamond:"unicode/1f537.png?v8",large_orange_diamond:"unicode/1f536.png?v8",last_quarter_moon:"unicode/1f317.png?v8",last_quarter_moon_with_face:"unicode/1f31c.png?v8",latin_cross:"unicode/271d.png?v8",latvia:"unicode/1f1f1-1f1fb.png?v8",laughing:"unicode/1f606.png?v8",leafy_green:"unicode/1f96c.png?v8",leaves:"unicode/1f343.png?v8",lebanon:"unicode/1f1f1-1f1e7.png?v8",ledger:"unicode/1f4d2.png?v8",left_luggage:"unicode/1f6c5.png?v8",left_right_arrow:"unicode/2194.png?v8",left_speech_bubble:"unicode/1f5e8.png?v8",leftwards_arrow_with_hook:"unicode/21a9.png?v8",leg:"unicode/1f9b5.png?v8",lemon:"unicode/1f34b.png?v8",leo:"unicode/264c.png?v8",leopard:"unicode/1f406.png?v8",lesotho:"unicode/1f1f1-1f1f8.png?v8",level_slider:"unicode/1f39a.png?v8",liberia:"unicode/1f1f1-1f1f7.png?v8",libra:"unicode/264e.png?v8",libya:"unicode/1f1f1-1f1fe.png?v8",liechtenstein:"unicode/1f1f1-1f1ee.png?v8",light_rail:"unicode/1f688.png?v8",link:"unicode/1f517.png?v8",lion:"unicode/1f981.png?v8",lips:"unicode/1f444.png?v8",lipstick:"unicode/1f484.png?v8",lithuania:"unicode/1f1f1-1f1f9.png?v8",lizard:"unicode/1f98e.png?v8",llama:"unicode/1f999.png?v8",lobster:"unicode/1f99e.png?v8",lock:"unicode/1f512.png?v8",lock_with_ink_pen:"unicode/1f50f.png?v8",lollipop:"unicode/1f36d.png?v8",long_drum:"unicode/1fa98.png?v8",loop:"unicode/27bf.png?v8",lotion_bottle:"unicode/1f9f4.png?v8",lotus_position:"unicode/1f9d8.png?v8",lotus_position_man:"unicode/1f9d8-2642.png?v8",lotus_position_woman:"unicode/1f9d8-2640.png?v8",loud_sound:"unicode/1f50a.png?v8",loudspeaker:"unicode/1f4e2.png?v8",love_hotel:"unicode/1f3e9.png?v8",love_letter:"unicode/1f48c.png?v8",love_you_gesture:"unicode/1f91f.png?v8",low_brightness:"unicode/1f505.png?v8",luggage:"unicode/1f9f3.png?v8",lungs:"unicode/1fac1.png?v8",luxembourg:"unicode/1f1f1-1f1fa.png?v8",lying_face:"unicode/1f925.png?v8",m:"unicode/24c2.png?v8",macau:"unicode/1f1f2-1f1f4.png?v8",macedonia:"unicode/1f1f2-1f1f0.png?v8",madagascar:"unicode/1f1f2-1f1ec.png?v8",mag:"unicode/1f50d.png?v8",mag_right:"unicode/1f50e.png?v8",mage:"unicode/1f9d9.png?v8",mage_man:"unicode/1f9d9-2642.png?v8",mage_woman:"unicode/1f9d9-2640.png?v8",magic_wand:"unicode/1fa84.png?v8",magnet:"unicode/1f9f2.png?v8",mahjong:"unicode/1f004.png?v8",mailbox:"unicode/1f4eb.png?v8",mailbox_closed:"unicode/1f4ea.png?v8",mailbox_with_mail:"unicode/1f4ec.png?v8",mailbox_with_no_mail:"unicode/1f4ed.png?v8",malawi:"unicode/1f1f2-1f1fc.png?v8",malaysia:"unicode/1f1f2-1f1fe.png?v8",maldives:"unicode/1f1f2-1f1fb.png?v8",male_detective:"unicode/1f575-2642.png?v8",male_sign:"unicode/2642.png?v8",mali:"unicode/1f1f2-1f1f1.png?v8",malta:"unicode/1f1f2-1f1f9.png?v8",mammoth:"unicode/1f9a3.png?v8",man:"unicode/1f468.png?v8",man_artist:"unicode/1f468-1f3a8.png?v8",man_astronaut:"unicode/1f468-1f680.png?v8",man_beard:"unicode/1f9d4-2642.png?v8",man_cartwheeling:"unicode/1f938-2642.png?v8",man_cook:"unicode/1f468-1f373.png?v8",man_dancing:"unicode/1f57a.png?v8",man_facepalming:"unicode/1f926-2642.png?v8",man_factory_worker:"unicode/1f468-1f3ed.png?v8",man_farmer:"unicode/1f468-1f33e.png?v8",man_feeding_baby:"unicode/1f468-1f37c.png?v8",man_firefighter:"unicode/1f468-1f692.png?v8",man_health_worker:"unicode/1f468-2695.png?v8",man_in_manual_wheelchair:"unicode/1f468-1f9bd.png?v8",man_in_motorized_wheelchair:"unicode/1f468-1f9bc.png?v8",man_in_tuxedo:"unicode/1f935-2642.png?v8",man_judge:"unicode/1f468-2696.png?v8",man_juggling:"unicode/1f939-2642.png?v8",man_mechanic:"unicode/1f468-1f527.png?v8",man_office_worker:"unicode/1f468-1f4bc.png?v8",man_pilot:"unicode/1f468-2708.png?v8",man_playing_handball:"unicode/1f93e-2642.png?v8",man_playing_water_polo:"unicode/1f93d-2642.png?v8",man_scientist:"unicode/1f468-1f52c.png?v8",man_shrugging:"unicode/1f937-2642.png?v8",man_singer:"unicode/1f468-1f3a4.png?v8",man_student:"unicode/1f468-1f393.png?v8",man_teacher:"unicode/1f468-1f3eb.png?v8",man_technologist:"unicode/1f468-1f4bb.png?v8",man_with_gua_pi_mao:"unicode/1f472.png?v8",man_with_probing_cane:"unicode/1f468-1f9af.png?v8",man_with_turban:"unicode/1f473-2642.png?v8",man_with_veil:"unicode/1f470-2642.png?v8",mandarin:"unicode/1f34a.png?v8",mango:"unicode/1f96d.png?v8",mans_shoe:"unicode/1f45e.png?v8",mantelpiece_clock:"unicode/1f570.png?v8",manual_wheelchair:"unicode/1f9bd.png?v8",maple_leaf:"unicode/1f341.png?v8",marshall_islands:"unicode/1f1f2-1f1ed.png?v8",martial_arts_uniform:"unicode/1f94b.png?v8",martinique:"unicode/1f1f2-1f1f6.png?v8",mask:"unicode/1f637.png?v8",massage:"unicode/1f486.png?v8",massage_man:"unicode/1f486-2642.png?v8",massage_woman:"unicode/1f486-2640.png?v8",mate:"unicode/1f9c9.png?v8",mauritania:"unicode/1f1f2-1f1f7.png?v8",mauritius:"unicode/1f1f2-1f1fa.png?v8",mayotte:"unicode/1f1fe-1f1f9.png?v8",meat_on_bone:"unicode/1f356.png?v8",mechanic:"unicode/1f9d1-1f527.png?v8",mechanical_arm:"unicode/1f9be.png?v8",mechanical_leg:"unicode/1f9bf.png?v8",medal_military:"unicode/1f396.png?v8",medal_sports:"unicode/1f3c5.png?v8",medical_symbol:"unicode/2695.png?v8",mega:"unicode/1f4e3.png?v8",melon:"unicode/1f348.png?v8",memo:"unicode/1f4dd.png?v8",men_wrestling:"unicode/1f93c-2642.png?v8",mending_heart:"unicode/2764-1fa79.png?v8",menorah:"unicode/1f54e.png?v8",mens:"unicode/1f6b9.png?v8",mermaid:"unicode/1f9dc-2640.png?v8",merman:"unicode/1f9dc-2642.png?v8",merperson:"unicode/1f9dc.png?v8",metal:"unicode/1f918.png?v8",metro:"unicode/1f687.png?v8",mexico:"unicode/1f1f2-1f1fd.png?v8",microbe:"unicode/1f9a0.png?v8",micronesia:"unicode/1f1eb-1f1f2.png?v8",microphone:"unicode/1f3a4.png?v8",microscope:"unicode/1f52c.png?v8",middle_finger:"unicode/1f595.png?v8",military_helmet:"unicode/1fa96.png?v8",milk_glass:"unicode/1f95b.png?v8",milky_way:"unicode/1f30c.png?v8",minibus:"unicode/1f690.png?v8",minidisc:"unicode/1f4bd.png?v8",mirror:"unicode/1fa9e.png?v8",mobile_phone_off:"unicode/1f4f4.png?v8",moldova:"unicode/1f1f2-1f1e9.png?v8",monaco:"unicode/1f1f2-1f1e8.png?v8",money_mouth_face:"unicode/1f911.png?v8",money_with_wings:"unicode/1f4b8.png?v8",moneybag:"unicode/1f4b0.png?v8",mongolia:"unicode/1f1f2-1f1f3.png?v8",monkey:"unicode/1f412.png?v8",monkey_face:"unicode/1f435.png?v8",monocle_face:"unicode/1f9d0.png?v8",monorail:"unicode/1f69d.png?v8",montenegro:"unicode/1f1f2-1f1ea.png?v8",montserrat:"unicode/1f1f2-1f1f8.png?v8",moon:"unicode/1f314.png?v8",moon_cake:"unicode/1f96e.png?v8",morocco:"unicode/1f1f2-1f1e6.png?v8",mortar_board:"unicode/1f393.png?v8",mosque:"unicode/1f54c.png?v8",mosquito:"unicode/1f99f.png?v8",motor_boat:"unicode/1f6e5.png?v8",motor_scooter:"unicode/1f6f5.png?v8",motorcycle:"unicode/1f3cd.png?v8",motorized_wheelchair:"unicode/1f9bc.png?v8",motorway:"unicode/1f6e3.png?v8",mount_fuji:"unicode/1f5fb.png?v8",mountain:"unicode/26f0.png?v8",mountain_bicyclist:"unicode/1f6b5.png?v8",mountain_biking_man:"unicode/1f6b5-2642.png?v8",mountain_biking_woman:"unicode/1f6b5-2640.png?v8",mountain_cableway:"unicode/1f6a0.png?v8",mountain_railway:"unicode/1f69e.png?v8",mountain_snow:"unicode/1f3d4.png?v8",mouse:"unicode/1f42d.png?v8",mouse2:"unicode/1f401.png?v8",mouse_trap:"unicode/1faa4.png?v8",movie_camera:"unicode/1f3a5.png?v8",moyai:"unicode/1f5ff.png?v8",mozambique:"unicode/1f1f2-1f1ff.png?v8",mrs_claus:"unicode/1f936.png?v8",muscle:"unicode/1f4aa.png?v8",mushroom:"unicode/1f344.png?v8",musical_keyboard:"unicode/1f3b9.png?v8",musical_note:"unicode/1f3b5.png?v8",musical_score:"unicode/1f3bc.png?v8",mute:"unicode/1f507.png?v8",mx_claus:"unicode/1f9d1-1f384.png?v8",myanmar:"unicode/1f1f2-1f1f2.png?v8",nail_care:"unicode/1f485.png?v8",name_badge:"unicode/1f4db.png?v8",namibia:"unicode/1f1f3-1f1e6.png?v8",national_park:"unicode/1f3de.png?v8",nauru:"unicode/1f1f3-1f1f7.png?v8",nauseated_face:"unicode/1f922.png?v8",nazar_amulet:"unicode/1f9ff.png?v8",neckbeard:"neckbeard.png?v8",necktie:"unicode/1f454.png?v8",negative_squared_cross_mark:"unicode/274e.png?v8",nepal:"unicode/1f1f3-1f1f5.png?v8",nerd_face:"unicode/1f913.png?v8",nesting_dolls:"unicode/1fa86.png?v8",netherlands:"unicode/1f1f3-1f1f1.png?v8",neutral_face:"unicode/1f610.png?v8",new:"unicode/1f195.png?v8",new_caledonia:"unicode/1f1f3-1f1e8.png?v8",new_moon:"unicode/1f311.png?v8",new_moon_with_face:"unicode/1f31a.png?v8",new_zealand:"unicode/1f1f3-1f1ff.png?v8",newspaper:"unicode/1f4f0.png?v8",newspaper_roll:"unicode/1f5de.png?v8",next_track_button:"unicode/23ed.png?v8",ng:"unicode/1f196.png?v8",ng_man:"unicode/1f645-2642.png?v8",ng_woman:"unicode/1f645-2640.png?v8",nicaragua:"unicode/1f1f3-1f1ee.png?v8",niger:"unicode/1f1f3-1f1ea.png?v8",nigeria:"unicode/1f1f3-1f1ec.png?v8",night_with_stars:"unicode/1f303.png?v8",nine:"unicode/0039-20e3.png?v8",ninja:"unicode/1f977.png?v8",niue:"unicode/1f1f3-1f1fa.png?v8",no_bell:"unicode/1f515.png?v8",no_bicycles:"unicode/1f6b3.png?v8",no_entry:"unicode/26d4.png?v8",no_entry_sign:"unicode/1f6ab.png?v8",no_good:"unicode/1f645.png?v8",no_good_man:"unicode/1f645-2642.png?v8",no_good_woman:"unicode/1f645-2640.png?v8",no_mobile_phones:"unicode/1f4f5.png?v8",no_mouth:"unicode/1f636.png?v8",no_pedestrians:"unicode/1f6b7.png?v8",no_smoking:"unicode/1f6ad.png?v8","non-potable_water":"unicode/1f6b1.png?v8",norfolk_island:"unicode/1f1f3-1f1eb.png?v8",north_korea:"unicode/1f1f0-1f1f5.png?v8",northern_mariana_islands:"unicode/1f1f2-1f1f5.png?v8",norway:"unicode/1f1f3-1f1f4.png?v8",nose:"unicode/1f443.png?v8",notebook:"unicode/1f4d3.png?v8",notebook_with_decorative_cover:"unicode/1f4d4.png?v8",notes:"unicode/1f3b6.png?v8",nut_and_bolt:"unicode/1f529.png?v8",o:"unicode/2b55.png?v8",o2:"unicode/1f17e.png?v8",ocean:"unicode/1f30a.png?v8",octocat:"octocat.png?v8",octopus:"unicode/1f419.png?v8",oden:"unicode/1f362.png?v8",office:"unicode/1f3e2.png?v8",office_worker:"unicode/1f9d1-1f4bc.png?v8",oil_drum:"unicode/1f6e2.png?v8",ok:"unicode/1f197.png?v8",ok_hand:"unicode/1f44c.png?v8",ok_man:"unicode/1f646-2642.png?v8",ok_person:"unicode/1f646.png?v8",ok_woman:"unicode/1f646-2640.png?v8",old_key:"unicode/1f5dd.png?v8",older_adult:"unicode/1f9d3.png?v8",older_man:"unicode/1f474.png?v8",older_woman:"unicode/1f475.png?v8",olive:"unicode/1fad2.png?v8",om:"unicode/1f549.png?v8",oman:"unicode/1f1f4-1f1f2.png?v8",on:"unicode/1f51b.png?v8",oncoming_automobile:"unicode/1f698.png?v8",oncoming_bus:"unicode/1f68d.png?v8",oncoming_police_car:"unicode/1f694.png?v8",oncoming_taxi:"unicode/1f696.png?v8",one:"unicode/0031-20e3.png?v8",one_piece_swimsuit:"unicode/1fa71.png?v8",onion:"unicode/1f9c5.png?v8",open_book:"unicode/1f4d6.png?v8",open_file_folder:"unicode/1f4c2.png?v8",open_hands:"unicode/1f450.png?v8",open_mouth:"unicode/1f62e.png?v8",open_umbrella:"unicode/2602.png?v8",ophiuchus:"unicode/26ce.png?v8",orange:"unicode/1f34a.png?v8",orange_book:"unicode/1f4d9.png?v8",orange_circle:"unicode/1f7e0.png?v8",orange_heart:"unicode/1f9e1.png?v8",orange_square:"unicode/1f7e7.png?v8",orangutan:"unicode/1f9a7.png?v8",orthodox_cross:"unicode/2626.png?v8",otter:"unicode/1f9a6.png?v8",outbox_tray:"unicode/1f4e4.png?v8",owl:"unicode/1f989.png?v8",ox:"unicode/1f402.png?v8",oyster:"unicode/1f9aa.png?v8",package:"unicode/1f4e6.png?v8",page_facing_up:"unicode/1f4c4.png?v8",page_with_curl:"unicode/1f4c3.png?v8",pager:"unicode/1f4df.png?v8",paintbrush:"unicode/1f58c.png?v8",pakistan:"unicode/1f1f5-1f1f0.png?v8",palau:"unicode/1f1f5-1f1fc.png?v8",palestinian_territories:"unicode/1f1f5-1f1f8.png?v8",palm_tree:"unicode/1f334.png?v8",palms_up_together:"unicode/1f932.png?v8",panama:"unicode/1f1f5-1f1e6.png?v8",pancakes:"unicode/1f95e.png?v8",panda_face:"unicode/1f43c.png?v8",paperclip:"unicode/1f4ce.png?v8",paperclips:"unicode/1f587.png?v8",papua_new_guinea:"unicode/1f1f5-1f1ec.png?v8",parachute:"unicode/1fa82.png?v8",paraguay:"unicode/1f1f5-1f1fe.png?v8",parasol_on_ground:"unicode/26f1.png?v8",parking:"unicode/1f17f.png?v8",parrot:"unicode/1f99c.png?v8",part_alternation_mark:"unicode/303d.png?v8",partly_sunny:"unicode/26c5.png?v8",partying_face:"unicode/1f973.png?v8",passenger_ship:"unicode/1f6f3.png?v8",passport_control:"unicode/1f6c2.png?v8",pause_button:"unicode/23f8.png?v8",paw_prints:"unicode/1f43e.png?v8",peace_symbol:"unicode/262e.png?v8",peach:"unicode/1f351.png?v8",peacock:"unicode/1f99a.png?v8",peanuts:"unicode/1f95c.png?v8",pear:"unicode/1f350.png?v8",pen:"unicode/1f58a.png?v8",pencil:"unicode/1f4dd.png?v8",pencil2:"unicode/270f.png?v8",penguin:"unicode/1f427.png?v8",pensive:"unicode/1f614.png?v8",people_holding_hands:"unicode/1f9d1-1f91d-1f9d1.png?v8",people_hugging:"unicode/1fac2.png?v8",performing_arts:"unicode/1f3ad.png?v8",persevere:"unicode/1f623.png?v8",person_bald:"unicode/1f9d1-1f9b2.png?v8",person_curly_hair:"unicode/1f9d1-1f9b1.png?v8",person_feeding_baby:"unicode/1f9d1-1f37c.png?v8",person_fencing:"unicode/1f93a.png?v8",person_in_manual_wheelchair:"unicode/1f9d1-1f9bd.png?v8",person_in_motorized_wheelchair:"unicode/1f9d1-1f9bc.png?v8",person_in_tuxedo:"unicode/1f935.png?v8",person_red_hair:"unicode/1f9d1-1f9b0.png?v8",person_white_hair:"unicode/1f9d1-1f9b3.png?v8",person_with_probing_cane:"unicode/1f9d1-1f9af.png?v8",person_with_turban:"unicode/1f473.png?v8",person_with_veil:"unicode/1f470.png?v8",peru:"unicode/1f1f5-1f1ea.png?v8",petri_dish:"unicode/1f9eb.png?v8",philippines:"unicode/1f1f5-1f1ed.png?v8",phone:"unicode/260e.png?v8",pick:"unicode/26cf.png?v8",pickup_truck:"unicode/1f6fb.png?v8",pie:"unicode/1f967.png?v8",pig:"unicode/1f437.png?v8",pig2:"unicode/1f416.png?v8",pig_nose:"unicode/1f43d.png?v8",pill:"unicode/1f48a.png?v8",pilot:"unicode/1f9d1-2708.png?v8",pinata:"unicode/1fa85.png?v8",pinched_fingers:"unicode/1f90c.png?v8",pinching_hand:"unicode/1f90f.png?v8",pineapple:"unicode/1f34d.png?v8",ping_pong:"unicode/1f3d3.png?v8",pirate_flag:"unicode/1f3f4-2620.png?v8",pisces:"unicode/2653.png?v8",pitcairn_islands:"unicode/1f1f5-1f1f3.png?v8",pizza:"unicode/1f355.png?v8",placard:"unicode/1faa7.png?v8",place_of_worship:"unicode/1f6d0.png?v8",plate_with_cutlery:"unicode/1f37d.png?v8",play_or_pause_button:"unicode/23ef.png?v8",pleading_face:"unicode/1f97a.png?v8",plunger:"unicode/1faa0.png?v8",point_down:"unicode/1f447.png?v8",point_left:"unicode/1f448.png?v8",point_right:"unicode/1f449.png?v8",point_up:"unicode/261d.png?v8",point_up_2:"unicode/1f446.png?v8",poland:"unicode/1f1f5-1f1f1.png?v8",polar_bear:"unicode/1f43b-2744.png?v8",police_car:"unicode/1f693.png?v8",police_officer:"unicode/1f46e.png?v8",policeman:"unicode/1f46e-2642.png?v8",policewoman:"unicode/1f46e-2640.png?v8",poodle:"unicode/1f429.png?v8",poop:"unicode/1f4a9.png?v8",popcorn:"unicode/1f37f.png?v8",portugal:"unicode/1f1f5-1f1f9.png?v8",post_office:"unicode/1f3e3.png?v8",postal_horn:"unicode/1f4ef.png?v8",postbox:"unicode/1f4ee.png?v8",potable_water:"unicode/1f6b0.png?v8",potato:"unicode/1f954.png?v8",potted_plant:"unicode/1fab4.png?v8",pouch:"unicode/1f45d.png?v8",poultry_leg:"unicode/1f357.png?v8",pound:"unicode/1f4b7.png?v8",pout:"unicode/1f621.png?v8",pouting_cat:"unicode/1f63e.png?v8",pouting_face:"unicode/1f64e.png?v8",pouting_man:"unicode/1f64e-2642.png?v8",pouting_woman:"unicode/1f64e-2640.png?v8",pray:"unicode/1f64f.png?v8",prayer_beads:"unicode/1f4ff.png?v8",pregnant_woman:"unicode/1f930.png?v8",pretzel:"unicode/1f968.png?v8",previous_track_button:"unicode/23ee.png?v8",prince:"unicode/1f934.png?v8",princess:"unicode/1f478.png?v8",printer:"unicode/1f5a8.png?v8",probing_cane:"unicode/1f9af.png?v8",puerto_rico:"unicode/1f1f5-1f1f7.png?v8",punch:"unicode/1f44a.png?v8",purple_circle:"unicode/1f7e3.png?v8",purple_heart:"unicode/1f49c.png?v8",purple_square:"unicode/1f7ea.png?v8",purse:"unicode/1f45b.png?v8",pushpin:"unicode/1f4cc.png?v8",put_litter_in_its_place:"unicode/1f6ae.png?v8",qatar:"unicode/1f1f6-1f1e6.png?v8",question:"unicode/2753.png?v8",rabbit:"unicode/1f430.png?v8",rabbit2:"unicode/1f407.png?v8",raccoon:"unicode/1f99d.png?v8",racehorse:"unicode/1f40e.png?v8",racing_car:"unicode/1f3ce.png?v8",radio:"unicode/1f4fb.png?v8",radio_button:"unicode/1f518.png?v8",radioactive:"unicode/2622.png?v8",rage:"unicode/1f621.png?v8",rage1:"rage1.png?v8",rage2:"rage2.png?v8",rage3:"rage3.png?v8",rage4:"rage4.png?v8",railway_car:"unicode/1f683.png?v8",railway_track:"unicode/1f6e4.png?v8",rainbow:"unicode/1f308.png?v8",rainbow_flag:"unicode/1f3f3-1f308.png?v8",raised_back_of_hand:"unicode/1f91a.png?v8",raised_eyebrow:"unicode/1f928.png?v8",raised_hand:"unicode/270b.png?v8",raised_hand_with_fingers_splayed:"unicode/1f590.png?v8",raised_hands:"unicode/1f64c.png?v8",raising_hand:"unicode/1f64b.png?v8",raising_hand_man:"unicode/1f64b-2642.png?v8",raising_hand_woman:"unicode/1f64b-2640.png?v8",ram:"unicode/1f40f.png?v8",ramen:"unicode/1f35c.png?v8",rat:"unicode/1f400.png?v8",razor:"unicode/1fa92.png?v8",receipt:"unicode/1f9fe.png?v8",record_button:"unicode/23fa.png?v8",recycle:"unicode/267b.png?v8",red_car:"unicode/1f697.png?v8",red_circle:"unicode/1f534.png?v8",red_envelope:"unicode/1f9e7.png?v8",red_haired_man:"unicode/1f468-1f9b0.png?v8",red_haired_woman:"unicode/1f469-1f9b0.png?v8",red_square:"unicode/1f7e5.png?v8",registered:"unicode/00ae.png?v8",relaxed:"unicode/263a.png?v8",relieved:"unicode/1f60c.png?v8",reminder_ribbon:"unicode/1f397.png?v8",repeat:"unicode/1f501.png?v8",repeat_one:"unicode/1f502.png?v8",rescue_worker_helmet:"unicode/26d1.png?v8",restroom:"unicode/1f6bb.png?v8",reunion:"unicode/1f1f7-1f1ea.png?v8",revolving_hearts:"unicode/1f49e.png?v8",rewind:"unicode/23ea.png?v8",rhinoceros:"unicode/1f98f.png?v8",ribbon:"unicode/1f380.png?v8",rice:"unicode/1f35a.png?v8",rice_ball:"unicode/1f359.png?v8",rice_cracker:"unicode/1f358.png?v8",rice_scene:"unicode/1f391.png?v8",right_anger_bubble:"unicode/1f5ef.png?v8",ring:"unicode/1f48d.png?v8",ringed_planet:"unicode/1fa90.png?v8",robot:"unicode/1f916.png?v8",rock:"unicode/1faa8.png?v8",rocket:"unicode/1f680.png?v8",rofl:"unicode/1f923.png?v8",roll_eyes:"unicode/1f644.png?v8",roll_of_paper:"unicode/1f9fb.png?v8",roller_coaster:"unicode/1f3a2.png?v8",roller_skate:"unicode/1f6fc.png?v8",romania:"unicode/1f1f7-1f1f4.png?v8",rooster:"unicode/1f413.png?v8",rose:"unicode/1f339.png?v8",rosette:"unicode/1f3f5.png?v8",rotating_light:"unicode/1f6a8.png?v8",round_pushpin:"unicode/1f4cd.png?v8",rowboat:"unicode/1f6a3.png?v8",rowing_man:"unicode/1f6a3-2642.png?v8",rowing_woman:"unicode/1f6a3-2640.png?v8",ru:"unicode/1f1f7-1f1fa.png?v8",rugby_football:"unicode/1f3c9.png?v8",runner:"unicode/1f3c3.png?v8",running:"unicode/1f3c3.png?v8",running_man:"unicode/1f3c3-2642.png?v8",running_shirt_with_sash:"unicode/1f3bd.png?v8",running_woman:"unicode/1f3c3-2640.png?v8",rwanda:"unicode/1f1f7-1f1fc.png?v8",sa:"unicode/1f202.png?v8",safety_pin:"unicode/1f9f7.png?v8",safety_vest:"unicode/1f9ba.png?v8",sagittarius:"unicode/2650.png?v8",sailboat:"unicode/26f5.png?v8",sake:"unicode/1f376.png?v8",salt:"unicode/1f9c2.png?v8",samoa:"unicode/1f1fc-1f1f8.png?v8",san_marino:"unicode/1f1f8-1f1f2.png?v8",sandal:"unicode/1f461.png?v8",sandwich:"unicode/1f96a.png?v8",santa:"unicode/1f385.png?v8",sao_tome_principe:"unicode/1f1f8-1f1f9.png?v8",sari:"unicode/1f97b.png?v8",sassy_man:"unicode/1f481-2642.png?v8",sassy_woman:"unicode/1f481-2640.png?v8",satellite:"unicode/1f4e1.png?v8",satisfied:"unicode/1f606.png?v8",saudi_arabia:"unicode/1f1f8-1f1e6.png?v8",sauna_man:"unicode/1f9d6-2642.png?v8",sauna_person:"unicode/1f9d6.png?v8",sauna_woman:"unicode/1f9d6-2640.png?v8",sauropod:"unicode/1f995.png?v8",saxophone:"unicode/1f3b7.png?v8",scarf:"unicode/1f9e3.png?v8",school:"unicode/1f3eb.png?v8",school_satchel:"unicode/1f392.png?v8",scientist:"unicode/1f9d1-1f52c.png?v8",scissors:"unicode/2702.png?v8",scorpion:"unicode/1f982.png?v8",scorpius:"unicode/264f.png?v8",scotland:"unicode/1f3f4-e0067-e0062-e0073-e0063-e0074-e007f.png?v8",scream:"unicode/1f631.png?v8",scream_cat:"unicode/1f640.png?v8",screwdriver:"unicode/1fa9b.png?v8",scroll:"unicode/1f4dc.png?v8",seal:"unicode/1f9ad.png?v8",seat:"unicode/1f4ba.png?v8",secret:"unicode/3299.png?v8",see_no_evil:"unicode/1f648.png?v8",seedling:"unicode/1f331.png?v8",selfie:"unicode/1f933.png?v8",senegal:"unicode/1f1f8-1f1f3.png?v8",serbia:"unicode/1f1f7-1f1f8.png?v8",service_dog:"unicode/1f415-1f9ba.png?v8",seven:"unicode/0037-20e3.png?v8",sewing_needle:"unicode/1faa1.png?v8",seychelles:"unicode/1f1f8-1f1e8.png?v8",shallow_pan_of_food:"unicode/1f958.png?v8",shamrock:"unicode/2618.png?v8",shark:"unicode/1f988.png?v8",shaved_ice:"unicode/1f367.png?v8",sheep:"unicode/1f411.png?v8",shell:"unicode/1f41a.png?v8",shield:"unicode/1f6e1.png?v8",shinto_shrine:"unicode/26e9.png?v8",ship:"unicode/1f6a2.png?v8",shipit:"shipit.png?v8",shirt:"unicode/1f455.png?v8",shit:"unicode/1f4a9.png?v8",shoe:"unicode/1f45e.png?v8",shopping:"unicode/1f6cd.png?v8",shopping_cart:"unicode/1f6d2.png?v8",shorts:"unicode/1fa73.png?v8",shower:"unicode/1f6bf.png?v8",shrimp:"unicode/1f990.png?v8",shrug:"unicode/1f937.png?v8",shushing_face:"unicode/1f92b.png?v8",sierra_leone:"unicode/1f1f8-1f1f1.png?v8",signal_strength:"unicode/1f4f6.png?v8",singapore:"unicode/1f1f8-1f1ec.png?v8",singer:"unicode/1f9d1-1f3a4.png?v8",sint_maarten:"unicode/1f1f8-1f1fd.png?v8",six:"unicode/0036-20e3.png?v8",six_pointed_star:"unicode/1f52f.png?v8",skateboard:"unicode/1f6f9.png?v8",ski:"unicode/1f3bf.png?v8",skier:"unicode/26f7.png?v8",skull:"unicode/1f480.png?v8",skull_and_crossbones:"unicode/2620.png?v8",skunk:"unicode/1f9a8.png?v8",sled:"unicode/1f6f7.png?v8",sleeping:"unicode/1f634.png?v8",sleeping_bed:"unicode/1f6cc.png?v8",sleepy:"unicode/1f62a.png?v8",slightly_frowning_face:"unicode/1f641.png?v8",slightly_smiling_face:"unicode/1f642.png?v8",slot_machine:"unicode/1f3b0.png?v8",sloth:"unicode/1f9a5.png?v8",slovakia:"unicode/1f1f8-1f1f0.png?v8",slovenia:"unicode/1f1f8-1f1ee.png?v8",small_airplane:"unicode/1f6e9.png?v8",small_blue_diamond:"unicode/1f539.png?v8",small_orange_diamond:"unicode/1f538.png?v8",small_red_triangle:"unicode/1f53a.png?v8",small_red_triangle_down:"unicode/1f53b.png?v8",smile:"unicode/1f604.png?v8",smile_cat:"unicode/1f638.png?v8",smiley:"unicode/1f603.png?v8",smiley_cat:"unicode/1f63a.png?v8",smiling_face_with_tear:"unicode/1f972.png?v8",smiling_face_with_three_hearts:"unicode/1f970.png?v8",smiling_imp:"unicode/1f608.png?v8",smirk:"unicode/1f60f.png?v8",smirk_cat:"unicode/1f63c.png?v8",smoking:"unicode/1f6ac.png?v8",snail:"unicode/1f40c.png?v8",snake:"unicode/1f40d.png?v8",sneezing_face:"unicode/1f927.png?v8",snowboarder:"unicode/1f3c2.png?v8",snowflake:"unicode/2744.png?v8",snowman:"unicode/26c4.png?v8",snowman_with_snow:"unicode/2603.png?v8",soap:"unicode/1f9fc.png?v8",sob:"unicode/1f62d.png?v8",soccer:"unicode/26bd.png?v8",socks:"unicode/1f9e6.png?v8",softball:"unicode/1f94e.png?v8",solomon_islands:"unicode/1f1f8-1f1e7.png?v8",somalia:"unicode/1f1f8-1f1f4.png?v8",soon:"unicode/1f51c.png?v8",sos:"unicode/1f198.png?v8",sound:"unicode/1f509.png?v8",south_africa:"unicode/1f1ff-1f1e6.png?v8",south_georgia_south_sandwich_islands:"unicode/1f1ec-1f1f8.png?v8",south_sudan:"unicode/1f1f8-1f1f8.png?v8",space_invader:"unicode/1f47e.png?v8",spades:"unicode/2660.png?v8",spaghetti:"unicode/1f35d.png?v8",sparkle:"unicode/2747.png?v8",sparkler:"unicode/1f387.png?v8",sparkles:"unicode/2728.png?v8",sparkling_heart:"unicode/1f496.png?v8",speak_no_evil:"unicode/1f64a.png?v8",speaker:"unicode/1f508.png?v8",speaking_head:"unicode/1f5e3.png?v8",speech_balloon:"unicode/1f4ac.png?v8",speedboat:"unicode/1f6a4.png?v8",spider:"unicode/1f577.png?v8",spider_web:"unicode/1f578.png?v8",spiral_calendar:"unicode/1f5d3.png?v8",spiral_notepad:"unicode/1f5d2.png?v8",sponge:"unicode/1f9fd.png?v8",spoon:"unicode/1f944.png?v8",squid:"unicode/1f991.png?v8",sri_lanka:"unicode/1f1f1-1f1f0.png?v8",st_barthelemy:"unicode/1f1e7-1f1f1.png?v8",st_helena:"unicode/1f1f8-1f1ed.png?v8",st_kitts_nevis:"unicode/1f1f0-1f1f3.png?v8",st_lucia:"unicode/1f1f1-1f1e8.png?v8",st_martin:"unicode/1f1f2-1f1eb.png?v8",st_pierre_miquelon:"unicode/1f1f5-1f1f2.png?v8",st_vincent_grenadines:"unicode/1f1fb-1f1e8.png?v8",stadium:"unicode/1f3df.png?v8",standing_man:"unicode/1f9cd-2642.png?v8",standing_person:"unicode/1f9cd.png?v8",standing_woman:"unicode/1f9cd-2640.png?v8",star:"unicode/2b50.png?v8",star2:"unicode/1f31f.png?v8",star_and_crescent:"unicode/262a.png?v8",star_of_david:"unicode/2721.png?v8",star_struck:"unicode/1f929.png?v8",stars:"unicode/1f320.png?v8",station:"unicode/1f689.png?v8",statue_of_liberty:"unicode/1f5fd.png?v8",steam_locomotive:"unicode/1f682.png?v8",stethoscope:"unicode/1fa7a.png?v8",stew:"unicode/1f372.png?v8",stop_button:"unicode/23f9.png?v8",stop_sign:"unicode/1f6d1.png?v8",stopwatch:"unicode/23f1.png?v8",straight_ruler:"unicode/1f4cf.png?v8",strawberry:"unicode/1f353.png?v8",stuck_out_tongue:"unicode/1f61b.png?v8",stuck_out_tongue_closed_eyes:"unicode/1f61d.png?v8",stuck_out_tongue_winking_eye:"unicode/1f61c.png?v8",student:"unicode/1f9d1-1f393.png?v8",studio_microphone:"unicode/1f399.png?v8",stuffed_flatbread:"unicode/1f959.png?v8",sudan:"unicode/1f1f8-1f1e9.png?v8",sun_behind_large_cloud:"unicode/1f325.png?v8",sun_behind_rain_cloud:"unicode/1f326.png?v8",sun_behind_small_cloud:"unicode/1f324.png?v8",sun_with_face:"unicode/1f31e.png?v8",sunflower:"unicode/1f33b.png?v8",sunglasses:"unicode/1f60e.png?v8",sunny:"unicode/2600.png?v8",sunrise:"unicode/1f305.png?v8",sunrise_over_mountains:"unicode/1f304.png?v8",superhero:"unicode/1f9b8.png?v8",superhero_man:"unicode/1f9b8-2642.png?v8",superhero_woman:"unicode/1f9b8-2640.png?v8",supervillain:"unicode/1f9b9.png?v8",supervillain_man:"unicode/1f9b9-2642.png?v8",supervillain_woman:"unicode/1f9b9-2640.png?v8",surfer:"unicode/1f3c4.png?v8",surfing_man:"unicode/1f3c4-2642.png?v8",surfing_woman:"unicode/1f3c4-2640.png?v8",suriname:"unicode/1f1f8-1f1f7.png?v8",sushi:"unicode/1f363.png?v8",suspect:"suspect.png?v8",suspension_railway:"unicode/1f69f.png?v8",svalbard_jan_mayen:"unicode/1f1f8-1f1ef.png?v8",swan:"unicode/1f9a2.png?v8",swaziland:"unicode/1f1f8-1f1ff.png?v8",sweat:"unicode/1f613.png?v8",sweat_drops:"unicode/1f4a6.png?v8",sweat_smile:"unicode/1f605.png?v8",sweden:"unicode/1f1f8-1f1ea.png?v8",sweet_potato:"unicode/1f360.png?v8",swim_brief:"unicode/1fa72.png?v8",swimmer:"unicode/1f3ca.png?v8",swimming_man:"unicode/1f3ca-2642.png?v8",swimming_woman:"unicode/1f3ca-2640.png?v8",switzerland:"unicode/1f1e8-1f1ed.png?v8",symbols:"unicode/1f523.png?v8",synagogue:"unicode/1f54d.png?v8",syria:"unicode/1f1f8-1f1fe.png?v8",syringe:"unicode/1f489.png?v8","t-rex":"unicode/1f996.png?v8",taco:"unicode/1f32e.png?v8",tada:"unicode/1f389.png?v8",taiwan:"unicode/1f1f9-1f1fc.png?v8",tajikistan:"unicode/1f1f9-1f1ef.png?v8",takeout_box:"unicode/1f961.png?v8",tamale:"unicode/1fad4.png?v8",tanabata_tree:"unicode/1f38b.png?v8",tangerine:"unicode/1f34a.png?v8",tanzania:"unicode/1f1f9-1f1ff.png?v8",taurus:"unicode/2649.png?v8",taxi:"unicode/1f695.png?v8",tea:"unicode/1f375.png?v8",teacher:"unicode/1f9d1-1f3eb.png?v8",teapot:"unicode/1fad6.png?v8",technologist:"unicode/1f9d1-1f4bb.png?v8",teddy_bear:"unicode/1f9f8.png?v8",telephone:"unicode/260e.png?v8",telephone_receiver:"unicode/1f4de.png?v8",telescope:"unicode/1f52d.png?v8",tennis:"unicode/1f3be.png?v8",tent:"unicode/26fa.png?v8",test_tube:"unicode/1f9ea.png?v8",thailand:"unicode/1f1f9-1f1ed.png?v8",thermometer:"unicode/1f321.png?v8",thinking:"unicode/1f914.png?v8",thong_sandal:"unicode/1fa74.png?v8",thought_balloon:"unicode/1f4ad.png?v8",thread:"unicode/1f9f5.png?v8",three:"unicode/0033-20e3.png?v8",thumbsdown:"unicode/1f44e.png?v8",thumbsup:"unicode/1f44d.png?v8",ticket:"unicode/1f3ab.png?v8",tickets:"unicode/1f39f.png?v8",tiger:"unicode/1f42f.png?v8",tiger2:"unicode/1f405.png?v8",timer_clock:"unicode/23f2.png?v8",timor_leste:"unicode/1f1f9-1f1f1.png?v8",tipping_hand_man:"unicode/1f481-2642.png?v8",tipping_hand_person:"unicode/1f481.png?v8",tipping_hand_woman:"unicode/1f481-2640.png?v8",tired_face:"unicode/1f62b.png?v8",tm:"unicode/2122.png?v8",togo:"unicode/1f1f9-1f1ec.png?v8",toilet:"unicode/1f6bd.png?v8",tokelau:"unicode/1f1f9-1f1f0.png?v8",tokyo_tower:"unicode/1f5fc.png?v8",tomato:"unicode/1f345.png?v8",tonga:"unicode/1f1f9-1f1f4.png?v8",tongue:"unicode/1f445.png?v8",toolbox:"unicode/1f9f0.png?v8",tooth:"unicode/1f9b7.png?v8",toothbrush:"unicode/1faa5.png?v8",top:"unicode/1f51d.png?v8",tophat:"unicode/1f3a9.png?v8",tornado:"unicode/1f32a.png?v8",tr:"unicode/1f1f9-1f1f7.png?v8",trackball:"unicode/1f5b2.png?v8",tractor:"unicode/1f69c.png?v8",traffic_light:"unicode/1f6a5.png?v8",train:"unicode/1f68b.png?v8",train2:"unicode/1f686.png?v8",tram:"unicode/1f68a.png?v8",transgender_flag:"unicode/1f3f3-26a7.png?v8",transgender_symbol:"unicode/26a7.png?v8",triangular_flag_on_post:"unicode/1f6a9.png?v8",triangular_ruler:"unicode/1f4d0.png?v8",trident:"unicode/1f531.png?v8",trinidad_tobago:"unicode/1f1f9-1f1f9.png?v8",tristan_da_cunha:"unicode/1f1f9-1f1e6.png?v8",triumph:"unicode/1f624.png?v8",trolleybus:"unicode/1f68e.png?v8",trollface:"trollface.png?v8",trophy:"unicode/1f3c6.png?v8",tropical_drink:"unicode/1f379.png?v8",tropical_fish:"unicode/1f420.png?v8",truck:"unicode/1f69a.png?v8",trumpet:"unicode/1f3ba.png?v8",tshirt:"unicode/1f455.png?v8",tulip:"unicode/1f337.png?v8",tumbler_glass:"unicode/1f943.png?v8",tunisia:"unicode/1f1f9-1f1f3.png?v8",turkey:"unicode/1f983.png?v8",turkmenistan:"unicode/1f1f9-1f1f2.png?v8",turks_caicos_islands:"unicode/1f1f9-1f1e8.png?v8",turtle:"unicode/1f422.png?v8",tuvalu:"unicode/1f1f9-1f1fb.png?v8",tv:"unicode/1f4fa.png?v8",twisted_rightwards_arrows:"unicode/1f500.png?v8",two:"unicode/0032-20e3.png?v8",two_hearts:"unicode/1f495.png?v8",two_men_holding_hands:"unicode/1f46c.png?v8",two_women_holding_hands:"unicode/1f46d.png?v8",u5272:"unicode/1f239.png?v8",u5408:"unicode/1f234.png?v8",u55b6:"unicode/1f23a.png?v8",u6307:"unicode/1f22f.png?v8",u6708:"unicode/1f237.png?v8",u6709:"unicode/1f236.png?v8",u6e80:"unicode/1f235.png?v8",u7121:"unicode/1f21a.png?v8",u7533:"unicode/1f238.png?v8",u7981:"unicode/1f232.png?v8",u7a7a:"unicode/1f233.png?v8",uganda:"unicode/1f1fa-1f1ec.png?v8",uk:"unicode/1f1ec-1f1e7.png?v8",ukraine:"unicode/1f1fa-1f1e6.png?v8",umbrella:"unicode/2614.png?v8",unamused:"unicode/1f612.png?v8",underage:"unicode/1f51e.png?v8",unicorn:"unicode/1f984.png?v8",united_arab_emirates:"unicode/1f1e6-1f1ea.png?v8",united_nations:"unicode/1f1fa-1f1f3.png?v8",unlock:"unicode/1f513.png?v8",up:"unicode/1f199.png?v8",upside_down_face:"unicode/1f643.png?v8",uruguay:"unicode/1f1fa-1f1fe.png?v8",us:"unicode/1f1fa-1f1f8.png?v8",us_outlying_islands:"unicode/1f1fa-1f1f2.png?v8",us_virgin_islands:"unicode/1f1fb-1f1ee.png?v8",uzbekistan:"unicode/1f1fa-1f1ff.png?v8",v:"unicode/270c.png?v8",vampire:"unicode/1f9db.png?v8",vampire_man:"unicode/1f9db-2642.png?v8",vampire_woman:"unicode/1f9db-2640.png?v8",vanuatu:"unicode/1f1fb-1f1fa.png?v8",vatican_city:"unicode/1f1fb-1f1e6.png?v8",venezuela:"unicode/1f1fb-1f1ea.png?v8",vertical_traffic_light:"unicode/1f6a6.png?v8",vhs:"unicode/1f4fc.png?v8",vibration_mode:"unicode/1f4f3.png?v8",video_camera:"unicode/1f4f9.png?v8",video_game:"unicode/1f3ae.png?v8",vietnam:"unicode/1f1fb-1f1f3.png?v8",violin:"unicode/1f3bb.png?v8",virgo:"unicode/264d.png?v8",volcano:"unicode/1f30b.png?v8",volleyball:"unicode/1f3d0.png?v8",vomiting_face:"unicode/1f92e.png?v8",vs:"unicode/1f19a.png?v8",vulcan_salute:"unicode/1f596.png?v8",waffle:"unicode/1f9c7.png?v8",wales:"unicode/1f3f4-e0067-e0062-e0077-e006c-e0073-e007f.png?v8",walking:"unicode/1f6b6.png?v8",walking_man:"unicode/1f6b6-2642.png?v8",walking_woman:"unicode/1f6b6-2640.png?v8",wallis_futuna:"unicode/1f1fc-1f1eb.png?v8",waning_crescent_moon:"unicode/1f318.png?v8",waning_gibbous_moon:"unicode/1f316.png?v8",warning:"unicode/26a0.png?v8",wastebasket:"unicode/1f5d1.png?v8",watch:"unicode/231a.png?v8",water_buffalo:"unicode/1f403.png?v8",water_polo:"unicode/1f93d.png?v8",watermelon:"unicode/1f349.png?v8",wave:"unicode/1f44b.png?v8",wavy_dash:"unicode/3030.png?v8",waxing_crescent_moon:"unicode/1f312.png?v8",waxing_gibbous_moon:"unicode/1f314.png?v8",wc:"unicode/1f6be.png?v8",weary:"unicode/1f629.png?v8",wedding:"unicode/1f492.png?v8",weight_lifting:"unicode/1f3cb.png?v8",weight_lifting_man:"unicode/1f3cb-2642.png?v8",weight_lifting_woman:"unicode/1f3cb-2640.png?v8",western_sahara:"unicode/1f1ea-1f1ed.png?v8",whale:"unicode/1f433.png?v8",whale2:"unicode/1f40b.png?v8",wheel_of_dharma:"unicode/2638.png?v8",wheelchair:"unicode/267f.png?v8",white_check_mark:"unicode/2705.png?v8",white_circle:"unicode/26aa.png?v8",white_flag:"unicode/1f3f3.png?v8",white_flower:"unicode/1f4ae.png?v8",white_haired_man:"unicode/1f468-1f9b3.png?v8",white_haired_woman:"unicode/1f469-1f9b3.png?v8",white_heart:"unicode/1f90d.png?v8",white_large_square:"unicode/2b1c.png?v8",white_medium_small_square:"unicode/25fd.png?v8",white_medium_square:"unicode/25fb.png?v8",white_small_square:"unicode/25ab.png?v8",white_square_button:"unicode/1f533.png?v8",wilted_flower:"unicode/1f940.png?v8",wind_chime:"unicode/1f390.png?v8",wind_face:"unicode/1f32c.png?v8",window:"unicode/1fa9f.png?v8",wine_glass:"unicode/1f377.png?v8",wink:"unicode/1f609.png?v8",wolf:"unicode/1f43a.png?v8",woman:"unicode/1f469.png?v8",woman_artist:"unicode/1f469-1f3a8.png?v8",woman_astronaut:"unicode/1f469-1f680.png?v8",woman_beard:"unicode/1f9d4-2640.png?v8",woman_cartwheeling:"unicode/1f938-2640.png?v8",woman_cook:"unicode/1f469-1f373.png?v8",woman_dancing:"unicode/1f483.png?v8",woman_facepalming:"unicode/1f926-2640.png?v8",woman_factory_worker:"unicode/1f469-1f3ed.png?v8",woman_farmer:"unicode/1f469-1f33e.png?v8",woman_feeding_baby:"unicode/1f469-1f37c.png?v8",woman_firefighter:"unicode/1f469-1f692.png?v8",woman_health_worker:"unicode/1f469-2695.png?v8",woman_in_manual_wheelchair:"unicode/1f469-1f9bd.png?v8",woman_in_motorized_wheelchair:"unicode/1f469-1f9bc.png?v8",woman_in_tuxedo:"unicode/1f935-2640.png?v8",woman_judge:"unicode/1f469-2696.png?v8",woman_juggling:"unicode/1f939-2640.png?v8",woman_mechanic:"unicode/1f469-1f527.png?v8",woman_office_worker:"unicode/1f469-1f4bc.png?v8",woman_pilot:"unicode/1f469-2708.png?v8",woman_playing_handball:"unicode/1f93e-2640.png?v8",woman_playing_water_polo:"unicode/1f93d-2640.png?v8",woman_scientist:"unicode/1f469-1f52c.png?v8",woman_shrugging:"unicode/1f937-2640.png?v8",woman_singer:"unicode/1f469-1f3a4.png?v8",woman_student:"unicode/1f469-1f393.png?v8",woman_teacher:"unicode/1f469-1f3eb.png?v8",woman_technologist:"unicode/1f469-1f4bb.png?v8",woman_with_headscarf:"unicode/1f9d5.png?v8",woman_with_probing_cane:"unicode/1f469-1f9af.png?v8",woman_with_turban:"unicode/1f473-2640.png?v8",woman_with_veil:"unicode/1f470-2640.png?v8",womans_clothes:"unicode/1f45a.png?v8",womans_hat:"unicode/1f452.png?v8",women_wrestling:"unicode/1f93c-2640.png?v8",womens:"unicode/1f6ba.png?v8",wood:"unicode/1fab5.png?v8",woozy_face:"unicode/1f974.png?v8",world_map:"unicode/1f5fa.png?v8",worm:"unicode/1fab1.png?v8",worried:"unicode/1f61f.png?v8",wrench:"unicode/1f527.png?v8",wrestling:"unicode/1f93c.png?v8",writing_hand:"unicode/270d.png?v8",x:"unicode/274c.png?v8",yarn:"unicode/1f9f6.png?v8",yawning_face:"unicode/1f971.png?v8",yellow_circle:"unicode/1f7e1.png?v8",yellow_heart:"unicode/1f49b.png?v8",yellow_square:"unicode/1f7e8.png?v8",yemen:"unicode/1f1fe-1f1ea.png?v8",yen:"unicode/1f4b4.png?v8",yin_yang:"unicode/262f.png?v8",yo_yo:"unicode/1fa80.png?v8",yum:"unicode/1f60b.png?v8",zambia:"unicode/1f1ff-1f1f2.png?v8",zany_face:"unicode/1f92a.png?v8",zap:"unicode/26a1.png?v8",zebra:"unicode/1f993.png?v8",zero:"unicode/0030-20e3.png?v8",zimbabwe:"unicode/1f1ff-1f1fc.png?v8",zipper_mouth_face:"unicode/1f910.png?v8",zombie:"unicode/1f9df.png?v8",zombie_man:"unicode/1f9df-2642.png?v8",zombie_woman:"unicode/1f9df-2640.png?v8",zzz:"unicode/1f4a4.png?v8"};window&&window.console&&console.info("Docsify emoji plugin has been deprecated as of v4.13"),window.emojify=function(n,e){return!1===Object.prototype.hasOwnProperty.call(i,e)?n:'<img src="'+o+i[e]+'" alt="'+e+'" class="emoji" />'}}(); \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/static/js/prism-bash.min.js b/ruoyi-admin/src/main/resources/static/static/js/prism-bash.min.js deleted file mode 100644 index f1659f1..0000000 --- a/ruoyi-admin/src/main/resources/static/static/js/prism-bash.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",a={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},n={bash:a,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},parameter:{pattern:/(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:n},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:a}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:n},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:n.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:n.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},a.inside=e.languages.bash;for(var s=["comment","function-name","for-or-select","assign-left","parameter","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=n.variable[1].inside,i=0;i<s.length;i++)o[s[i]]=e.languages.bash[s[i]];e.languages.sh=e.languages.bash,e.languages.shell=e.languages.bash}(Prism); \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/static/js/prism-typescript.min.js b/ruoyi-admin/src/main/resources/static/static/js/prism-typescript.min.js deleted file mode 100644 index b512c16..0000000 --- a/ruoyi-admin/src/main/resources/static/static/js/prism-typescript.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var s=e.languages.extend("typescript",{});delete s["class-name"],e.languages.typescript["class-name"].inside=s,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:s}}}}),e.languages.ts=e.languages.typescript}(Prism); \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/static/js/search.min.js b/ruoyi-admin/src/main/resources/static/static/js/search.min.js deleted file mode 100644 index 9719f65..0000000 --- a/ruoyi-admin/src/main/resources/static/static/js/search.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(){function u(e){return e.replace(/<!-- {docsify-ignore} -->/,"").replace(/{docsify-ignore}/,"").replace(/<!-- {docsify-ignore-all} -->/,"").replace(/{docsify-ignore-all}/,"").trim()}var f={},m={EXPIRE_KEY:"docsify.search.expires",INDEX_KEY:"docsify.search.index"};function g(e){var n={"&":"&","<":"<",">":">",'"':""","'":"'"};return String(e).replace(/[&<>"']/g,function(e){return n[e]})}function y(e){return e.text||"table"!==e.type||(e.cells.unshift(e.header),e.text=e.cells.map(function(e){return e.join(" | ")}).join(" |\n ")),e.text}function v(e){return e.text||"list"!==e.type||(e.text=e.raw),e.text}function b(o,e,s,c){void 0===e&&(e="");var d,e=window.marked.lexer(e),l=window.Docsify.slugify,p={},h="";return e.forEach(function(e,n){var t,a,i,r;"heading"===e.type&&e.depth<=c?(t=(a=(i=e.text,r={},{str:i=(i=void 0===i?"":i)&&i.replace(/^('|")/,"").replace(/('|")$/,"").replace(/(?:^|\s):([\w-]+:?)=?([\w-%]+)?/g,function(e,n,t){return-1===n.indexOf(":")?(r[n]=t&&t.replace(/"/g,"")||!0,""):e}).trim(),config:r})).str,i=a.config,a=u(e.text),d=i.id?s.toURL(o,{id:l(i.id)}):s.toURL(o,{id:l(g(a))}),t&&(h=u(t)),p[d]={slug:d,title:h,body:""}):(0===n&&(d=s.toURL(o),p[d]={slug:d,title:"/"!==o?o.slice(1):"Home Page",body:e.text||""}),d&&(p[d]?p[d].body?(e.text=y(e),e.text=v(e),p[d].body+="\n"+(e.text||"")):(e.text=y(e),e.text=v(e),p[d].body=e.text||""):p[d]={slug:d,title:"",body:""}))}),l.clear(),p}function p(e){return e&&e.normalize?e.normalize("NFD").replace(/[\u0300-\u036f]/g,""):e}function o(e){var n=[],t=[];Object.keys(f).forEach(function(n){t=t.concat(Object.keys(f[n]).map(function(e){return f[n][e]}))});var a=(e=e.trim()).split(/[\s\-锛孿\/]+/);1!==a.length&&(a=[].concat(e,a));for(var i=0;i<t.length;i++)!function(e){var e=t[e],r=0,o="",s="",c="",d=e.title&&e.title.trim(),l=e.body&&e.body.trim(),e=e.slug||"";d&&(a.forEach(function(e){var n,t,a=new RegExp(g(p(e)).replace(/[|\\{}()[\]^$+*?.]/g,"\\$&"),"gi"),i=-1;s=d&&g(p(d)),c=l&&g(p(l)),t=d?s.search(a):-1,i=l?c.search(a):-1,(0<=t||0<=i)&&(r+=0<=t?3:0<=i?2:0,t=(t=n=0)==(n=(i=i<0?0:i)<11?0:i-10)?70:i+e.length+60,l&&t>l.length&&(t=l.length),a=c&&"..."+c.substring(n,t).replace(a,function(e){return'<em class="search-keyword">'+e+"</em>"})+"...",o+=a)}),0<r&&(e={title:s,content:l?o:"",url:e,score:r},n.push(e)))}(i);return n.sort(function(e,n){return n.score-e.score})}function r(a,i){var t,r,n,e,o="auto"===a.paths,s=o?(t=i.router,r=[],Docsify.dom.findAll(".sidebar-nav a:not(.section-link):not([data-nosearch])").forEach(function(e){var n=e.href,e=e.getAttribute("href"),n=t.parse(n).path;n&&-1===r.indexOf(n)&&!Docsify.util.isAbsolutePath(e)&&r.push(n)}),r):a.paths,c="";s.length&&o&&a.pathNamespaces?(n=s[0],Array.isArray(a.pathNamespaces)?c=a.pathNamespaces.filter(function(e){return n.slice(0,e.length)===e})[0]||c:a.pathNamespaces instanceof RegExp&&((d=n.match(a.pathNamespaces))&&(c=d[0])),e=-1===s.indexOf(c+"/"),d=-1===s.indexOf(c+"/README"),e&&d&&s.unshift(c+"/")):-1===s.indexOf("/")&&-1===s.indexOf("/README")&&s.unshift("/");var d,l=((d=a.namespace)?m.EXPIRE_KEY+"/"+d:m.EXPIRE_KEY)+c,p=((d=a.namespace)?m.INDEX_KEY+"/"+d:m.INDEX_KEY)+c,c=localStorage.getItem(l)<Date.now();if(f=JSON.parse(localStorage.getItem(p)),c)f={};else if(!o)return;var h=s.length,u=0;s.forEach(function(t){return f[t]?u++:void Docsify.get(i.router.getFile(t),!1,i.config.requestHeaders).then(function(e){var n;f[t]=b(t,e,i.router,a.depth),h===++u&&(n=a.maxAge,e=p,localStorage.setItem(l,Date.now()+n),localStorage.setItem(e,JSON.stringify(f)))})})}var s,c="";function d(e){var n=Docsify.dom.find("div.search"),t=Docsify.dom.find(n,".results-panel"),a=Docsify.dom.find(n,".clear-button"),i=Docsify.dom.find(".sidebar-nav"),n=Docsify.dom.find(".app-name");if(!e)return t.classList.remove("show"),a.classList.remove("show"),t.innerHTML="",void(s.hideOtherSidebarContent&&(i&&i.classList.remove("hide"),n&&n.classList.remove("hide")));var e=o(e),r="";e.forEach(function(e){r+='<div class="matching-post">\n<a href="'+e.url+'">\n<h2>'+e.title+"</h2>\n<p>"+e.content+"</p>\n</a>\n</div>"}),t.classList.add("show"),a.classList.add("show"),t.innerHTML=r||'<p class="empty">'+c+"</p>",s.hideOtherSidebarContent&&(i&&i.classList.add("hide"),n&&n.classList.add("hide"))}function l(e){s=e}function h(e,n){var t,a,i=n.router.parse().query.s;l(e),Docsify.dom.style("\n.sidebar {\n padding-top: 0;\n}\n\n.search {\n margin-bottom: 20px;\n padding: 6px;\n border-bottom: 1px solid #eee;\n}\n\n.search .input-wrap {\n display: flex;\n align-items: center;\n}\n\n.search .results-panel {\n display: none;\n}\n\n.search .results-panel.show {\n display: block;\n}\n\n.search input {\n outline: none;\n border: none;\n width: 100%;\n padding: 0.6em 7px;\n font-size: inherit;\n border: 1px solid transparent;\n}\n\n.search input:focus {\n box-shadow: 0 0 5px var(--theme-color, #42b983);\n border: 1px solid var(--theme-color, #42b983);\n}\n\n.search input::-webkit-search-decoration,\n.search input::-webkit-search-cancel-button,\n.search input {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n\n.search input::-ms-clear {\n display: none;\n height: 0;\n width: 0;\n}\n\n.search .clear-button {\n cursor: pointer;\n width: 36px;\n text-align: right;\n display: none;\n}\n\n.search .clear-button.show {\n display: block;\n}\n\n.search .clear-button svg {\n transform: scale(.5);\n}\n\n.search h2 {\n font-size: 17px;\n margin: 10px 0;\n}\n\n.search a {\n text-decoration: none;\n color: inherit;\n}\n\n.search .matching-post {\n border-bottom: 1px solid #eee;\n}\n\n.search .matching-post:last-child {\n border-bottom: 0;\n}\n\n.search p {\n font-size: 14px;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n\n.search p.empty {\n text-align: center;\n}\n\n.app-name.hide, .sidebar-nav.hide {\n display: none;\n}"),function(e){void 0===e&&(e="");var n=Docsify.dom.create("div",'<div class="input-wrap">\n <input type="search" value="'+e+'" aria-label="Search text" />\n <div class="clear-button">\n <svg width="26" height="24">\n <circle cx="12" cy="12" r="11" fill="#ccc" />\n <path stroke="white" stroke-width="2" d="M8.25,8.25,15.75,15.75" />\n <path stroke="white" stroke-width="2"d="M8.25,15.75,15.75,8.25" />\n </svg>\n </div>\n </div>\n <div class="results-panel"></div>\n </div>'),e=Docsify.dom.find("aside");Docsify.dom.toggleClass(n,"search"),Docsify.dom.before(e,n)}(i),n=Docsify.dom.find("div.search"),a=Docsify.dom.find(n,"input"),e=Docsify.dom.find(n,".input-wrap"),Docsify.dom.on(n,"click",function(e){return-1===["A","H2","P","EM"].indexOf(e.target.tagName)&&e.stopPropagation()}),Docsify.dom.on(a,"input",function(n){clearTimeout(t),t=setTimeout(function(e){return d(n.target.value.trim())},100)}),Docsify.dom.on(e,"click",function(e){"INPUT"!==e.target.tagName&&(a.value="",d())}),i&&setTimeout(function(e){return d(i)},500)}function x(e,n){var t,a,i,r,o;l(e),t=e.placeholder,a=n.route.path,(r=Docsify.dom.getNode('.search input[type="search"]'))&&("string"==typeof t?r.placeholder=t:(i=Object.keys(t).filter(function(e){return-1<a.indexOf(e)})[0],r.placeholder=t[i])),e=e.noData,o=n.route.path,c="string"==typeof e?e:e[Object.keys(e).filter(function(e){return-1<o.indexOf(e)})[0]]}var w={placeholder:"Type to search",noData:"No Results!",paths:"auto",depth:2,maxAge:864e5,hideOtherSidebarContent:!1,namespace:void 0,pathNamespaces:void 0};$docsify.plugins=[].concat(function(e,n){var t=Docsify.util,a=n.config.search||w;Array.isArray(a)?w.paths=a:"object"==typeof a&&(w.paths=Array.isArray(a.paths)?a.paths:"auto",w.maxAge=(t.isPrimitive(a.maxAge)?a:w).maxAge,w.placeholder=a.placeholder||w.placeholder,w.noData=a.noData||w.noData,w.depth=a.depth||w.depth,w.hideOtherSidebarContent=a.hideOtherSidebarContent||w.hideOtherSidebarContent,w.namespace=a.namespace||w.namespace,w.pathNamespaces=a.pathNamespaces||w.pathNamespaces);var i="auto"===w.paths;e.mounted(function(e){h(w,n),i||r(w,n)}),e.doneEach(function(e){x(w,n),i&&r(w,n)})},$docsify.plugins)}(); \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/static/js/zoom-image.min.js b/ruoyi-admin/src/main/resources/static/static/js/zoom-image.min.js deleted file mode 100644 index c157c7a..0000000 --- a/ruoyi-admin/src/main/resources/static/static/js/zoom-image.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(){function t(e){return"IMG"===e.tagName}function d(e){function t(){for(var e=arguments,t=arguments.length,o=Array(t),n=0;n<t;n++)o[n]=e[n];var i=o.reduce(function(e,t){return[].concat(e,z(t))},[]);return i.filter(function(e){return-1===m.indexOf(e)}).forEach(function(e){m.push(e),e.classList.add("medium-zoom-image")}),r.forEach(function(e){var t=e.type,o=e.listener,n=e.options;i.forEach(function(e){e.addEventListener(t,o,n)})}),f}function o(){var e=(0<arguments.length&&void 0!==arguments[0]?arguments[0]:{}).target;return s.original?a():i({target:e})}var n=window.Promise||function(e){function t(){}e(t,t)},i=function(){function r(){var e={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},t=void 0,o=void 0;u.container&&(u.container instanceof Object?(t=(e=g({},e,u.container)).width-e.left-e.right-2*u.margin,o=e.height-e.top-e.bottom-2*u.margin):(r=(i=(h(u.container)?u.container:document.querySelector(u.container)).getBoundingClientRect()).width,m=i.height,d=i.left,a=i.top,e=g({},e,{width:r,height:m,left:d,top:a})));var t=t||e.width-2*u.margin,o=o||e.height-2*u.margin,n=s.zoomedHd||s.original,i=!v(n)&&n.naturalWidth||t,r=!v(n)&&n.naturalHeight||o,d=(m=n.getBoundingClientRect()).top,a=m.left,n=m.width,m=m.height,i=Math.min(Math.max(n,i),t)/n,r=Math.min(Math.max(m,r),o)/m,r="scale("+(r=Math.min(i,r))+") translate3d("+((t-n)/2-a+u.margin+e.left)/r+"px, "+((o-m)/2-d+u.margin+e.top)/r+"px, 0)";s.zoomed.style.transform=r,s.zoomedHd&&(s.zoomedHd.style.transform=r)}var d=(0<arguments.length&&void 0!==arguments[0]?arguments[0]:{}).target;return new n(function(e){if(d&&-1===m.indexOf(d))e(f);else{function t(){c=!1,s.zoomed.removeEventListener("transitionend",t),s.original.dispatchEvent(E("medium-zoom:opened",{detail:{zoom:f}})),e(f)}var o,n;if(s.zoomed)e(f);else{if(d)s.original=d;else{if(!(0<m.length))return void e(f);var i=m;s.original=i[0]}s.original.dispatchEvent(E("medium-zoom:open",{detail:{zoom:f}})),l=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,c=!0,s.zoomed=b(s.original),document.body.appendChild(p),u.template&&(i=h(u.template)?u.template:document.querySelector(u.template),s.template=document.createElement("div"),s.template.appendChild(i.content.cloneNode(!0)),document.body.appendChild(s.template)),s.original.parentElement&&"PICTURE"===s.original.parentElement.tagName&&s.original.currentSrc&&(s.zoomed.src=s.original.currentSrc),document.body.appendChild(s.zoomed),window.requestAnimationFrame(function(){document.body.classList.add("medium-zoom--opened")}),s.original.classList.add("medium-zoom-image--hidden"),s.zoomed.classList.add("medium-zoom-image--opened"),s.zoomed.addEventListener("click",a),s.zoomed.addEventListener("transitionend",t),s.original.getAttribute("data-zoom-src")?(s.zoomedHd=s.zoomed.cloneNode(),s.zoomedHd.removeAttribute("srcset"),s.zoomedHd.removeAttribute("sizes"),s.zoomedHd.removeAttribute("loading"),s.zoomedHd.src=s.zoomed.getAttribute("data-zoom-src"),s.zoomedHd.onerror=function(){clearInterval(o),console.warn("Unable to reach the zoom image target "+s.zoomedHd.src),s.zoomedHd=null,r()},o=setInterval(function(){s.zoomedHd.complete&&(clearInterval(o),s.zoomedHd.classList.add("medium-zoom-image--opened"),s.zoomedHd.addEventListener("click",a),document.body.appendChild(s.zoomedHd),r())},10)):s.original.hasAttribute("srcset")?(s.zoomedHd=s.zoomed.cloneNode(),s.zoomedHd.removeAttribute("sizes"),s.zoomedHd.removeAttribute("loading"),n=s.zoomedHd.addEventListener("load",function(){s.zoomedHd.removeEventListener("load",n),s.zoomedHd.classList.add("medium-zoom-image--opened"),s.zoomedHd.addEventListener("click",a),document.body.appendChild(s.zoomedHd),r()})):r()}}})},a=function(){return new n(function(t){var e;!c&&s.original?(e=function e(){s.original.classList.remove("medium-zoom-image--hidden"),document.body.removeChild(s.zoomed),s.zoomedHd&&document.body.removeChild(s.zoomedHd),document.body.removeChild(p),s.zoomed.classList.remove("medium-zoom-image--opened"),s.template&&document.body.removeChild(s.template),c=!1,s.zoomed.removeEventListener("transitionend",e),s.original.dispatchEvent(E("medium-zoom:closed",{detail:{zoom:f}})),s.original=null,s.zoomed=null,s.zoomedHd=null,s.template=null,t(f)},c=!0,document.body.classList.remove("medium-zoom--opened"),s.zoomed.style.transform="",s.zoomedHd&&(s.zoomedHd.style.transform=""),s.template&&(s.template.style.transition="opacity 150ms",s.template.style.opacity=0),s.original.dispatchEvent(E("medium-zoom:close",{detail:{zoom:f}})),s.zoomed.addEventListener("transitionend",e)):t(f)})},m=[],r=[],c=!1,l=0,u=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},s={original:null,zoomed:null,zoomedHd:null,template:null};"[object Object]"===Object.prototype.toString.call(e)?u=e:!e&&"string"!=typeof e||t(e);var u=g({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},u),p=y(u.background);document.addEventListener("click",function(e){e=e.target;e!==p?-1!==m.indexOf(e)&&o({target:e}):a()}),document.addEventListener("keyup",function(e){e=e.key||e.keyCode;"Escape"!==e&&"Esc"!==e&&27!==e||a()}),document.addEventListener("scroll",function(){var e;!c&&s.original&&(e=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,Math.abs(l-e)>u.scrollOffset&&setTimeout(a,150))}),window.addEventListener("resize",a);var f={open:i,close:a,toggle:o,update:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=e;return e.background&&(p.style.background=e.background),e.container&&e.container instanceof Object&&(t.container=g({},u.container,e.container)),e.template&&(e=h(e.template)?e.template:document.querySelector(e.template),t.template=e),u=g({},u,t),m.forEach(function(e){e.dispatchEvent(E("medium-zoom:update",{detail:{zoom:f}}))}),f},clone:function(){return d(g({},u,0<arguments.length&&void 0!==arguments[0]?arguments[0]:{}))},attach:t,detach:function(){for(var e=arguments,t=arguments.length,o=Array(t),n=0;n<t;n++)o[n]=e[n];s.zoomed&&a();var i=0<o.length?o.reduce(function(e,t){return[].concat(e,z(t))},[]):m;return i.forEach(function(e){e.classList.remove("medium-zoom-image"),e.dispatchEvent(E("medium-zoom:detach",{detail:{zoom:f}}))}),m=m.filter(function(e){return-1===i.indexOf(e)}),f},on:function(t,o){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};return m.forEach(function(e){e.addEventListener("medium-zoom:"+t,o,n)}),r.push({type:"medium-zoom:"+t,listener:o,options:n}),f},off:function(t,o){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};return m.forEach(function(e){e.removeEventListener("medium-zoom:"+t,o,n)}),r=r.filter(function(e){return!(e.type==="medium-zoom:"+t&&e.listener.toString()===o.toString())}),f},getOptions:function(){return u},getImages:function(){return m},getZoomedImage:function(){return s.original}};return f}var g=Object.assign||function(e){for(var t=arguments,o=1;o<arguments.length;o++){var n,i=t[o];for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e},h=function(e){return e&&1===e.nodeType},v=function(e){return".svg"===(e.currentSrc||e.src).substr(-4).toLowerCase()},z=function(e){try{return Array.isArray(e)?e.filter(t):NodeList.prototype.isPrototypeOf(e)?[].slice.call(e).filter(t):h(e)?[e].filter(t):"string"==typeof e?[].slice.call(document.querySelectorAll(e)).filter(t):[]}catch(e){throw new TypeError("The provided selector is invalid.\nExpects a CSS selector, a Node element, a NodeList or an array.\nSee: https://github.com/francoischalifour/medium-zoom")}},y=function(e){var t=document.createElement("div");return t.classList.add("medium-zoom-overlay"),t.style.background=e,t},b=function(e){var t=e.getBoundingClientRect(),o=t.top,n=t.left,i=t.width,r=t.height,d=e.cloneNode(),t=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,e=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;return d.removeAttribute("id"),d.style.position="absolute",d.style.top=o+t+"px",d.style.left=n+e+"px",d.style.width=i+"px",d.style.height=r+"px",d.style.transform="",d},E=function(e,t){var o=g({bubbles:!1,cancelable:!1,detail:void 0},t);if("function"==typeof window.CustomEvent)return new CustomEvent(e,o);t=document.createEvent("CustomEvent");return t.initCustomEvent(e,o.bubbles,o.cancelable,o.detail),t};var e,o,n,i;e=".medium-zoom-overlay{position:fixed;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .3s;will-change:opacity}.medium-zoom--opened .medium-zoom-overlay{cursor:pointer;cursor:zoom-out;opacity:1}.medium-zoom-image{cursor:pointer;cursor:zoom-in;transition:transform .3s cubic-bezier(.2,0,.2,1)!important}.medium-zoom-image--hidden{visibility:hidden}.medium-zoom-image--opened{position:relative;cursor:pointer;cursor:zoom-out;will-change:transform}",i=(o=void 0===o?{}:o).insertAt,e&&"undefined"!=typeof document&&(n=document.head||document.getElementsByTagName("head")[0],(o=document.createElement("style")).type="text/css","top"===i&&n.firstChild?n.insertBefore(o,n.firstChild):n.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e)));var r=Element.prototype.matches||Element.prototype.webkitMatchesSelector||Element.prototype.msMatchesSelector;$docsify.plugins=[].concat(function(e){var o;e.doneEach(function(e){var t=(t=Array.apply(null,document.querySelectorAll(".markdown-section img:not(.emoji):not([data-no-zoom])"))).filter(function(e){return!1===r.call(e,"a img")});o&&o.detach(),o=d(t)})},$docsify.plugins)}(); \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/MilvusVectorStore.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/MilvusVectorStore.java index eb993f9..32e6216 100644 --- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/MilvusVectorStore.java +++ b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/MilvusVectorStore.java @@ -239,7 +239,7 @@ List<List<Float>> vectorFloatList = new ArrayList<>(); List<String> kidList = new ArrayList<>(); List<String> docIdList = new ArrayList<>(); - for (int i = 0; i < chunkList.size(); i++) { + for (int i = 0; i < Math.min(chunkList.size(), vectorList.size()); i++) { List<Double> vector = vectorList.get(i); List<Float> vfList = new ArrayList<>(); for (int j = 0; j < vector.size(); j++) { diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/WeaviateVectorStore.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/WeaviateVectorStore.java index 3b28d91..785054d 100644 --- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/WeaviateVectorStore.java +++ b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/WeaviateVectorStore.java @@ -40,7 +40,7 @@ @Service @Slf4j -public class WeaviateVectorStore implements VectorStore{ +public class WeaviateVectorStore implements VectorStore { private volatile String protocol; private volatile String host; @@ -56,18 +56,18 @@ @PostConstruct public void loadConfig() { - this.protocol = configService.getConfigValue("weaviate", "protocol"); + this.protocol = configService.getConfigValue("weaviate", "protocol"); this.host = configService.getConfigValue("weaviate", "host"); this.className = configService.getConfigValue("weaviate", "classname"); } - public WeaviateClient getClient(){ + public WeaviateClient getClient() { Config config = new Config(protocol, host); WeaviateClient client = new WeaviateClient(config); return client; } - public Result<Meta> getMeta(){ + public Result<Meta> getMeta() { WeaviateClient client = getClient(); Result<Meta> meta = client.misc().metaGetter().run(); if (meta.getError() == null) { @@ -80,114 +80,135 @@ return meta; } - public Result<Schema> getSchemas(){ + public Result<Schema> getSchemas() { WeaviateClient client = getClient(); Result<Schema> result = client.schema().getter().run(); if (result.hasErrors()) { System.out.println(result.getError()); - }else { + } else { System.out.println(result.getResult()); } return result; } - public Result<Boolean> createSchema(String kid){ + public Result<Boolean> createSchema(String kid) { WeaviateClient client = getClient(); VectorIndexConfig vectorIndexConfig = VectorIndexConfig.builder() - .distance("cosine") - .cleanupIntervalSeconds(300) - .efConstruction(128) - .maxConnections(64) - .vectorCacheMaxObjects(500000L) - .ef(-1) - .skip(false) - .dynamicEfFactor(8) - .dynamicEfMax(500) - .dynamicEfMin(100) - .flatSearchCutoff(40000) - .build(); + .distance("cosine") + .cleanupIntervalSeconds(300) + .efConstruction(128) + .maxConnections(64) + .vectorCacheMaxObjects(500000L) + .ef(-1) + .skip(false) + .dynamicEfFactor(8) + .dynamicEfMax(500) + .dynamicEfMin(100) + .flatSearchCutoff(40000) + .build(); ShardingConfig shardingConfig = ShardingConfig.builder() - .desiredCount(3) - .desiredVirtualCount(128) - .function("murmur3") - .key("_id") - .strategy("hash") - .virtualPerPhysical(128) - .build(); + .desiredCount(3) + .desiredVirtualCount(128) + .function("murmur3") + .key("_id") + .strategy("hash") + .virtualPerPhysical(128) + .build(); ReplicationConfig replicationConfig = ReplicationConfig.builder() - .factor(1) - .build(); + .factor(1) + .build(); JSONObject classModuleConfigValue = new JSONObject(); - classModuleConfigValue.put("vectorizeClassName",false); + classModuleConfigValue.put("vectorizeClassName", false); JSONObject classModuleConfig = new JSONObject(); - classModuleConfig.put("text2vec-transformers",classModuleConfigValue); + classModuleConfig.put("text2vec-transformers", classModuleConfigValue); JSONObject propertyModuleConfigValueSkipTrue = new JSONObject(); - propertyModuleConfigValueSkipTrue.put("vectorizePropertyName",false); - propertyModuleConfigValueSkipTrue.put("skip",true); + propertyModuleConfigValueSkipTrue.put("vectorizePropertyName", false); + propertyModuleConfigValueSkipTrue.put("skip", true); JSONObject propertyModuleConfigSkipTrue = new JSONObject(); - propertyModuleConfigSkipTrue.put("text2vec-transformers",propertyModuleConfigValueSkipTrue); + propertyModuleConfigSkipTrue.put("text2vec-transformers", propertyModuleConfigValueSkipTrue); JSONObject propertyModuleConfigValueSkipFalse = new JSONObject(); - propertyModuleConfigValueSkipFalse.put("vectorizePropertyName",false); - propertyModuleConfigValueSkipFalse.put("skip",false); + propertyModuleConfigValueSkipFalse.put("vectorizePropertyName", false); + propertyModuleConfigValueSkipFalse.put("skip", false); JSONObject propertyModuleConfigSkipFalse = new JSONObject(); - propertyModuleConfigSkipFalse.put("text2vec-transformers",propertyModuleConfigValueSkipFalse); + propertyModuleConfigSkipFalse.put("text2vec-transformers", propertyModuleConfigValueSkipFalse); WeaviateClass clazz = WeaviateClass.builder() - .className(className + kid) - .description("local knowledge") - .vectorIndexType("hnsw") - .vectorizer("text2vec-transformers") - .shardingConfig(shardingConfig) - .vectorIndexConfig(vectorIndexConfig) - .replicationConfig(replicationConfig) - .moduleConfig(classModuleConfig) - .properties(new ArrayList() {{ - add(Property.builder() - .dataType(new ArrayList(){ { add(DataType.TEXT); } }) - .name("content") - .description("The content of the local knowledge,for search") - .moduleConfig(propertyModuleConfigSkipFalse) - .build()); - add(Property.builder() - .dataType(new ArrayList(){ { add(DataType.TEXT); } }) - .name("kid") - .description("The knowledge id of the local knowledge,for search") - .moduleConfig(propertyModuleConfigSkipTrue) - .build()); - add(Property.builder() - .dataType(new ArrayList(){ { add(DataType.TEXT); } }) - .name("docId") - .description("The doc id of the local knowledge,for search") - .moduleConfig(propertyModuleConfigSkipTrue) - .build()); - add(Property.builder() - .dataType(new ArrayList(){ { add(DataType.TEXT); } }) - .name("fid") - .description("The fragment id of the local knowledge,for search") - .moduleConfig(propertyModuleConfigSkipTrue) - .build()); - add(Property.builder() - .dataType(new ArrayList(){ { add(DataType.TEXT); } }) - .name("uuid") - .description("The uuid id of the local knowledge fragment(same with id properties),for search") - .moduleConfig(propertyModuleConfigSkipTrue) - .build()); - } }) - .build(); + .className(className + kid) + .description("local knowledge") + .vectorIndexType("hnsw") + .vectorizer("text2vec-transformers") + .shardingConfig(shardingConfig) + .vectorIndexConfig(vectorIndexConfig) + .replicationConfig(replicationConfig) + .moduleConfig(classModuleConfig) + .properties(new ArrayList() { + { + add(Property.builder() + .dataType(new ArrayList() { + { + add(DataType.TEXT); + } + }) + .name("content") + .description("The content of the local knowledge,for search") + .moduleConfig(propertyModuleConfigSkipFalse) + .build()); + add(Property.builder() + .dataType(new ArrayList() { + { + add(DataType.TEXT); + } + }) + .name("kid") + .description("The knowledge id of the local knowledge,for search") + .moduleConfig(propertyModuleConfigSkipTrue) + .build()); + add(Property.builder() + .dataType(new ArrayList() { + { + add(DataType.TEXT); + } + }) + .name("docId") + .description("The doc id of the local knowledge,for search") + .moduleConfig(propertyModuleConfigSkipTrue) + .build()); + add(Property.builder() + .dataType(new ArrayList() { + { + add(DataType.TEXT); + } + }) + .name("fid") + .description("The fragment id of the local knowledge,for search") + .moduleConfig(propertyModuleConfigSkipTrue) + .build()); + add(Property.builder() + .dataType(new ArrayList() { + { + add(DataType.TEXT); + } + }) + .name("uuid") + .description("The uuid id of the local knowledge fragment(same with id properties),for search") + .moduleConfig(propertyModuleConfigSkipTrue) + .build()); + } }) + .build(); Result<Boolean> result = client.schema().classCreator().withClass(clazz).run(); if (result.hasErrors()) { System.out.println(result.getError()); } System.out.println(result.getResult()); - return result; + return result; } @Override @@ -201,7 +222,7 @@ WeaviateClient client = getClient(); Field fieldId = Field.builder().name("uuid").build(); WhereFilter where = WhereFilter.builder() - .path(new String[]{ "fid" }) + .path(new String[]{"fid"}) .operator(Operator.Equal) .valueString(fid) .build(); @@ -210,10 +231,10 @@ .withFields(fieldId) .withWhere(where) .run(); - LinkedTreeMap<String,Object> t = (LinkedTreeMap<String, Object>) result.getResult().getData(); - LinkedTreeMap<String,ArrayList<LinkedTreeMap>> l = (LinkedTreeMap<String, ArrayList<LinkedTreeMap>>) t.get("Get"); + LinkedTreeMap<String, Object> t = (LinkedTreeMap<String, Object>) result.getResult().getData(); + LinkedTreeMap<String, ArrayList<LinkedTreeMap>> l = (LinkedTreeMap<String, ArrayList<LinkedTreeMap>>) t.get("Get"); ArrayList<LinkedTreeMap> m = l.get(className + kid); - for (LinkedTreeMap linkedTreeMap : m){ + for (LinkedTreeMap linkedTreeMap : m) { String uuid = linkedTreeMap.get("uuid").toString(); resultList.add(uuid); } @@ -227,59 +248,59 @@ } @Override - public void storeEmbeddings(List<String> chunkList, List<List<Double>> vectorList,String kid, String docId,List<String> fidList) { + public void storeEmbeddings(List<String> chunkList, List<List<Double>> vectorList, String kid, String docId, List<String> fidList) { WeaviateClient client = getClient(); - if (vectorList != null) { - for (int i = 0; i < Math.min(chunkList.size(), vectorList.size()); i++) { - List<Double> vector = vectorList.get(i); - Float[] vf = vector.stream().map(Double::floatValue).toArray(Float[]::new); - Map<String, Object> dataSchema = new HashMap<>(); - dataSchema.put("content", chunkList.get(i)); - dataSchema.put("kid", kid); - dataSchema.put("docId", docId); - dataSchema.put("fid", fidList.get(i)); - String uuid = UUID.randomUUID().toString(); - dataSchema.put("uuid", uuid); + for (int i = 0; i < Math.min(chunkList.size(), vectorList.size()); i++) { + List<Double> vector = vectorList.get(i); + Float[] vf = vector.stream().map(Double::floatValue).toArray(Float[]::new); - Result<WeaviateObject> result = client.data().creator() - .withClassName(className + kid) - .withID(uuid) - .withVector(vf) - .withProperties(dataSchema) - .run(); - } + Map<String, Object> dataSchema = new HashMap<>(); + dataSchema.put("content", chunkList.get(i)); + dataSchema.put("kid", kid); + dataSchema.put("docId", docId); + dataSchema.put("fid", fidList.get(i)); + String uuid = UUID.randomUUID().toString(); + dataSchema.put("uuid", uuid); + + Result<WeaviateObject> result = client.data().creator() + .withClassName(className + kid) + .withID(uuid) + .withVector(vf) + .withProperties(dataSchema) + .run(); } + } @Override - public void removeByDocId(String kid,String docId) { + public void removeByDocId(String kid, String docId) { List<String> resultList = new ArrayList<>(); WeaviateClient client = getClient(); Field fieldId = Field.builder().name("uuid").build(); WhereFilter where = WhereFilter.builder() - .path(new String[]{ "docId" }) - .operator(Operator.Equal) - .valueString(docId) - .build(); + .path(new String[]{"docId"}) + .operator(Operator.Equal) + .valueString(docId) + .build(); Result<GraphQLResponse> result = client.graphQL().get() - .withClassName(className + kid) - .withFields(fieldId) - .withWhere(where) - .run(); - LinkedTreeMap<String,Object> t = (LinkedTreeMap<String, Object>) result.getResult().getData(); - LinkedTreeMap<String,ArrayList<LinkedTreeMap>> l = (LinkedTreeMap<String, ArrayList<LinkedTreeMap>>) t.get("Get"); + .withClassName(className + kid) + .withFields(fieldId) + .withWhere(where) + .run(); + LinkedTreeMap<String, Object> t = (LinkedTreeMap<String, Object>) result.getResult().getData(); + LinkedTreeMap<String, ArrayList<LinkedTreeMap>> l = (LinkedTreeMap<String, ArrayList<LinkedTreeMap>>) t.get("Get"); ArrayList<LinkedTreeMap> m = l.get(className + kid); - for (LinkedTreeMap linkedTreeMap : m){ + for (LinkedTreeMap linkedTreeMap : m) { String uuid = linkedTreeMap.get("uuid").toString(); resultList.add(uuid); } for (String uuid : resultList) { Result<Boolean> deleteResult = client.data().deleter() - .withID(uuid) - .withClassName(className + kid) - .withConsistencyLevel(ConsistencyLevel.ALL) // default QUORUM - .run(); + .withID(uuid) + .withClassName(className + kid) + .withConsistencyLevel(ConsistencyLevel.ALL) // default QUORUM + .run(); } } @@ -289,15 +310,15 @@ Result<Boolean> result = client.schema().classDeleter().withClassName(className + kid).run(); if (result.hasErrors()) { System.out.println("鍒犻櫎schema澶辫触" + result.getError()); - }else { + } else { System.out.println("鍒犻櫎schema鎴愬姛" + result.getResult()); } - log.info("drop schema by kid, result = {}",result); + log.info("drop schema by kid, result = {}", result); } @Override - public List<String> nearest(List<Double> queryVector,String kid) { - if (StringUtils.isBlank(kid)){ + public List<String> nearest(List<Double> queryVector, String kid) { + if (StringUtils.isBlank(kid)) { return new ArrayList<String>(); } List<String> resultList = new ArrayList<>(); @@ -320,14 +341,14 @@ KnowledgeInfoVo knowledgeInfoVo = knowledgeInfoService.queryById(Long.valueOf(kid)); Result<GraphQLResponse> result = client.graphQL().get() .withClassName(className + kid) - .withFields(contentField,_additional) + .withFields(contentField, _additional) .withNearVector(nearVector) .withLimit(knowledgeInfoVo.getRetrieveLimit()) .run(); - LinkedTreeMap<String,Object> t = (LinkedTreeMap<String, Object>) result.getResult().getData(); - LinkedTreeMap<String,ArrayList<LinkedTreeMap>> l = (LinkedTreeMap<String, ArrayList<LinkedTreeMap>>) t.get("Get"); + LinkedTreeMap<String, Object> t = (LinkedTreeMap<String, Object>) result.getResult().getData(); + LinkedTreeMap<String, ArrayList<LinkedTreeMap>> l = (LinkedTreeMap<String, ArrayList<LinkedTreeMap>>) t.get("Get"); ArrayList<LinkedTreeMap> m = l.get(className + kid); - for (LinkedTreeMap linkedTreeMap : m){ + for (LinkedTreeMap linkedTreeMap : m) { String content = linkedTreeMap.get("content").toString(); resultList.add(content); } @@ -335,8 +356,8 @@ } @Override - public List<String> nearest(String query,String kid) { - if (StringUtils.isBlank(kid)){ + public List<String> nearest(String query, String kid) { + if (StringUtils.isBlank(kid)) { return new ArrayList<String>(); } List<String> resultList = new ArrayList<>(); @@ -348,20 +369,20 @@ Field.builder().name("distance").build() }).build(); NearTextArgument nearText = client.graphQL().arguments().nearTextArgBuilder() - .concepts(new String[]{ query }) + .concepts(new String[]{query}) .distance(1.6f) // certainty = 1f - distance /2f .build(); KnowledgeInfoVo knowledgeInfoVo = knowledgeInfoService.queryById(Long.valueOf(kid)); Result<GraphQLResponse> result = client.graphQL().get() .withClassName(className + kid) - .withFields(contentField,_additional) + .withFields(contentField, _additional) .withNearText(nearText) .withLimit(knowledgeInfoVo.getRetrieveLimit()) .run(); - LinkedTreeMap<String,Object> t = (LinkedTreeMap<String, Object>) result.getResult().getData(); - LinkedTreeMap<String,ArrayList<LinkedTreeMap>> l = (LinkedTreeMap<String, ArrayList<LinkedTreeMap>>) t.get("Get"); + LinkedTreeMap<String, Object> t = (LinkedTreeMap<String, Object>) result.getResult().getData(); + LinkedTreeMap<String, ArrayList<LinkedTreeMap>> l = (LinkedTreeMap<String, ArrayList<LinkedTreeMap>>) t.get("Get"); ArrayList<LinkedTreeMap> m = l.get(className + kid); - for (LinkedTreeMap linkedTreeMap : m){ + for (LinkedTreeMap linkedTreeMap : m) { String content = linkedTreeMap.get("content").toString(); resultList.add(content); } @@ -370,10 +391,10 @@ public Result<Boolean> deleteSchema(String kid) { WeaviateClient client = getClient(); - Result<Boolean> result = client.schema().classDeleter().withClassName(className+ kid).run(); + Result<Boolean> result = client.schema().classDeleter().withClassName(className + kid).run(); if (result.hasErrors()) { System.out.println(result.getError()); - }else { + } else { System.out.println(result.getResult()); } return result; -- Gitblit v1.9.3