diff --git "a/Document/2.\350\256\276\350\256\241/4.\346\216\245\345\217\243\350\256\276\350\256\241/\350\247\204\345\210\231\347\256\241\347\220\206.md" "b/Document/2.\350\256\276\350\256\241/4.\346\216\245\345\217\243\350\256\276\350\256\241/\350\247\204\345\210\231\347\256\241\347\220\206.md"
index aa8e0a4d605c12327c747ca134bc0f427869fb7e..ad73aa5c7ec4a67fd362680a542df34e0ee20a58 100644
--- "a/Document/2.\350\256\276\350\256\241/4.\346\216\245\345\217\243\350\256\276\350\256\241/\350\247\204\345\210\231\347\256\241\347\220\206.md"
+++ "b/Document/2.\350\256\276\350\256\241/4.\346\216\245\345\217\243\350\256\276\350\256\241/\350\247\204\345\210\231\347\256\241\347\220\206.md"
@@ -155,35 +155,35 @@
 
 
 
-### 4 鏌ヨ鍒跺害鍏宠仈鏂囦欢(鍜屾湭鍏宠仈鏂囦欢)(鍖呭惈妯$硦鏌ヨ)
+### 4 鏌ヨ鍒跺害鍏宠仈鍒跺害(鍜屾湭鍏宠仈鍒跺害)(鍖呭惈妯$硦鏌ヨ)
 
 | 绫�     | 鍊�                                                           |
 | ------ | ------------------------------------------------------------ |
-| URL    | http://localhost:8088/institution/getInstitutionRelationFile |
+| URL    | http://localhost:8088/institution/getInstitutionRelationList |
 | Method | GET                                                          |
 
 ##### 璇锋眰鍙傛暟
 
-| 鍙傛暟鍚�   | 绫诲瀷   | 鍏佽绌哄€� | 澶囨敞   |
-| -------- | ------ | -------- | ------ |
-| id       | Long   | N        | 鍒跺害id |
-| fileName | String | Y        | 闄勪欢鍚� |
+| 鍙傛暟鍚� | 绫诲瀷   | 鍏佽绌哄€� | 澶囨敞     |
+| ------ | ------ | -------- | -------- |
+| id     | Long   | N        | 鍒跺害id   |
+| title  | String | Y        | 鍒跺害鏍囬 |
 
 ##### 璇锋眰浣�
 
 ```
 {
 	"id":1,
-	"fileName":"涓婃捣"
+	"title":"涓婃捣"
 }
 ```
 
 ##### 杩斿洖
 
-| 鍙傛暟鍚�         | 绫诲瀷       | 鍏佽绌哄€� | 澶囨敞         |
-| -------------- | ---------- | -------- | ------------ |
-| noRelationFile | List<File> | N        | 鏈叧鑱旀枃浠跺悕 |
-| relationFile   | List<File> | Y        | 宸插叧鑱旀枃浠跺悕 |
+| 鍙傛暟鍚�                    | 绫诲瀷                 | 鍏佽绌哄€� | 澶囨敞           |
+| ------------------------- | -------------------- | -------- | -------------- |
+| noRelationInstitutionList | List<InstitutionOut> | Y        | 鏈叧鑱斿埗搴﹂泦鍚� |
+| relationInstitutionList   | List<InstitutionOut> | Y        | 宸插叧鑱斿埗搴﹂泦鍚� |
 
 ```
 {
@@ -199,14 +199,14 @@
   [
   	{
   		"id":1,
-  		"fileName":"aaaa.xml"
+  		"title":"aaaa"
   	},
   	....
   ],
   [
   	{
   		"id":2,
-  		"fileName":"bbbbb.xml"
+  		"title":"bbbbb"
   	},
   	.....
   ]
@@ -218,28 +218,28 @@
 
 
 
-### 5 鏂板鍒跺害鍏宠仈鏂囦欢鐨勫叧鑱�
+### 5 鏂板鍒跺害鍏宠仈鍒跺害
 
 
 
-| 绫�     | 鍊�                                                           |
-| ------ | ------------------------------------------------------------ |
-| URL    | http://localhost:8088/institution/addInstitutionRelationFile |
-| Method | POST                                                         |
+| 绫�     | 鍊�                                                       |
+| ------ | -------------------------------------------------------- |
+| URL    | http://localhost:8088/institution/addInstitutionRelation |
+| Method | POST                                                     |
 
 ##### 璇锋眰鍙傛暟
 
-| 鍙傛暟鍚�        | 绫诲瀷       | 鍏佽绌哄€� | 澶囨敞       |
-| ------------- | ---------- | -------- | ---------- |
-| fileIdList    | List<Long> | N        | 闄勪欢id闆嗗悎 |
-| institutionId | Long       | N        | 鍒跺害id     |
+| 鍙傛暟鍚�            | 绫诲瀷       | 鍏佽绌哄€� | 澶囨敞         |
+| ----------------- | ---------- | -------- | ------------ |
+| InstitutionIdList | List<Long> | N        | 浠庡埗搴d闆嗗悎 |
+| Id                | Long       | N        | 涓诲埗搴d     |
 
 ##### 璇锋眰浣�
 
 ```
 {
-	"fileIdList":[1,2,3,4,5],
-	"institutionId":111111
+	"institutionIdList":[1,2,3,4,5],
+	"id":111111
 }
 ```
 
@@ -264,25 +264,25 @@
 
 
 
-### 6 鍒犻櫎鍒跺害鍏宠仈鏂囦欢
+### 6 鍒犻櫎鍒跺害鍏宠仈鍒跺害
 
-| 绫�     | 鍊�                                                           |
-| ------ | ------------------------------------------------------------ |
-| URL    | http://localhost:8088/institution/removeInstitutionRelationFile |
-| Method | POST                                                         |
+| 绫�     | 鍊�                                                          |
+| ------ | ----------------------------------------------------------- |
+| URL    | http://localhost:8088/institution/removeInstitutionRelation |
+| Method | POST                                                        |
 
 ##### 璇锋眰鍙傛暟
 
-| 鍙傛暟鍚�        | 绫诲瀷       | 鍏佽绌哄€� | 澶囨敞       |
-| ------------- | ---------- | -------- | ---------- |
-| fileIdList    | List<Long> | N        | 闄勪欢id闆嗗悎 |
-| institutionId | Long       | N        | 鍒跺害id     |
+| 鍙傛暟鍚�            | 绫诲瀷       | 鍏佽绌哄€� | 澶囨敞         |
+| ----------------- | ---------- | -------- | ------------ |
+| InstitutionIdList | List<Long> | N        | 浠庡埗搴d闆嗗悎 |
+| institutionId     | Long       | N        | 涓诲埗搴d     |
 
 ##### 璇锋眰浣�
 
 ```
 {
-	"fileIdList":[1,2,3,4,5],
+	"institutionIdList":[1,2,3,4,5],
 	"institutionId":111111
 }
 ```
diff --git "a/Document/2.\350\256\276\350\256\241/7.\344\270\232\345\212\241\350\256\276\350\256\241/ClassifyService\344\270\232\345\212\241\350\256\276\350\256\241(\345\210\206\347\261\273).md" "b/Document/2.\350\256\276\350\256\241/7.\344\270\232\345\212\241\350\256\276\350\256\241/ClassifyService\344\270\232\345\212\241\350\256\276\350\256\241(\345\210\206\347\261\273).md"
new file mode 100644
index 0000000000000000000000000000000000000000..d25b63868eea749c6abee9aa8b465bd2540b2128
--- /dev/null
+++ "b/Document/2.\350\256\276\350\256\241/7.\344\270\232\345\212\241\350\256\276\350\256\241/ClassifyService\344\270\232\345\212\241\350\256\276\350\256\241(\345\210\206\347\261\273).md"
@@ -0,0 +1,162 @@
+[TOC]
+# 鍒嗙被璁捐
+
+## 1.  姒傝堪
+
+### 1.1  鐩爣涓庤寖鍥�
+
+鎺ュ彛涓昏鏄疄鐜板埗搴﹀垎绫荤殑绠$悊
+
+### 1.2  璇昏€�
+
+璐熻矗璁捐锛屽紑鍙戞垨缁存姢搴旂敤绋嬪簭鐨勪汉鍛樺繀椤婚槄璇绘湰鏂囨。銆� 瀵逛簬搴旂敤绋嬪簭鐨勭鐞嗗憳鎴栨祴璇曚汉鍛橈紝浠嶅缓璁偍浠旂粏闃呰璇ユ枃妗c€�
+
+## 2.  Classify Interface
+
+### 2.1  saveClassify
+
+#### 2.1.1 姒傝堪
+
+鏂板/缂栬緫鍒跺害鍒嗙被  涓烘爲缁撴瀯
+
+#### 2.1.2 鍓嶆彁鏉′欢
+
+N/A
+
+#### 2.1.3  鍙傛暟
+
+| No   | 鍙傛暟鍚�    | 绫诲瀷   | 鍏佽绌哄€� | 澶囨敞   |
+| ---- | --------- | ------ | -------- | ------ |
+| 1    | name      | String | N        | 鍚嶇О   |
+| 2    | parent_id | Long   | N        | 鐖剁骇id |
+| 3    | id        | Long   | Y        | id     |
+
+#### 2.1.4  杩斿洖鍊�
+
+| No   | 绫诲瀷 | 鍏佽绌哄€� | 澶囨敞 |
+| ---- | ---- | -------- | ---- |
+|      |      |          |      |
+
+#### 2.1.5 楠岃瘉鏉′欢
+
+1. 鍒嗙被鍚嶇О涓嶈兘涓虹┖
+
+2. 鐖剁骇id 涓嶈兘涓虹┖
+
+#### 2.1.6  鎵ц鏉′欢涓庣粨鏋�
+
+1. 鎵ц楠岃瘉鏉′欢1, 鑻ュ垎绫诲悕绉颁负绌�,鍒欒繑鍥為敊璇俊鎭� "鍒嗙被鍚嶇О涓嶈兘涓虹┖"
+
+2. 鎵ц楠岃瘉2 ,鑻ョ埗绾d涓虹┖,鍒欒繑鍥為敊璇俊鎭� ""
+
+3. 鑻d涓虹┖   insert
+
+   鈥�    3.1 鍒欐牎楠屽悓绾у垎绫诲悕绉颁笉鍙噸澶�,鑻ラ噸澶嶅垯杩斿洖閿欒淇℃伅 "璇ュ垎绫诲悕绉板凡瀛樺湪"
+
+   鈥�    3.2 淇濆瓨鍒嗙被淇℃伅鍒版暟鎹簱
+
+4. 鑻ヤ笉涓虹┖   update
+
+    4.1 鍒欐牎楠屽悓绾у垎绫诲悕绉颁笉鍙噸澶�  鑻ラ噸澶嶅垯杩斿洖閿欒淇℃伅"璇ュ垎绫诲悕绉板凡瀛樺湪"
+
+      	4.2 鏇存柊鍒嗙被淇℃伅鍒版暟鎹簱
+
+5. 杩斿洖鎴愬姛
+
+
+
+鏂板 鍚岀骇涓� 涓嶈兘瀛樺湪鍚屾牱鐨勫垎绫诲悕绉�
+
+缂栬緫  
+
+------
+
+
+
+### 2.2  removeClassifyById
+
+#### 2.2.1 姒傝堪
+
+鏍规嵁id鍒犻櫎鍒跺害鍒嗙被
+
+#### 2.2.2 鍓嶆彁鏉′欢
+
+N/A
+
+#### 2.2.3 鍙傛暟
+
+| 鍙傛暟鍚� | 绫诲瀷 | 鍏佽绌哄€� | 澶囨敞 |
+| -----: | ---- | -------- | ---- |
+|     id | Long | N        | id   |
+
+#### 2.2.4 杩斿洖鍊�
+
+| 鍙傛暟鍚� | 绫诲瀷 | 鍏佽绌哄€� | 澶囨敞 |
+| ------ | ---- | -------- | ---- |
+|        |      |          |      |
+
+#### 2.2.5 楠岃瘉鏉′欢
+
+1. 鍒嗙被id涓嶅彲涓虹┖
+
+#### 2.2.6 鎵ц鏉′欢涓庣粨鏋�
+
+1. 鎵ц楠岃瘉1锛岃嫢id 涓虹┖锛屾姏鍑哄紓甯镐俊鎭€滃垎绫籭d 涓嶅彲涓虹┖鈥�
+
+2. 鏍规嵁鍒嗙被id 鏌ヨ鏁版嵁搴撳垎绫讳俊鎭� ${classifyPo}
+
+3. 鑻�${classifyPo}涓虹┖锛屾姏鍑哄紓甯镐俊鎭� 鈥滆鍒嗙被涓嶅瓨鍦ㄢ€�
+
+4. 鏍规嵁鍒嗙被id 鏌ヨ鏁版嵁搴撲腑璇ュ垎绫� 鏄惁瀛樺湪瀛愮骇鍒嗙被 ${children}
+
+5. 鑻�${children} 涓嶄负绌猴紝鍒欐姏鍑哄紓甯镐俊鎭� 鈥滆鍒嗙被涓嬪瓨鍦ㄥ瓙绾у垎绫伙紝涓嶅彲鍒犻櫎鈥�
+
+6. 鏍规嵁鍒嗙被id 鏌ヨ鏁版嵁搴撲腑 璇ュ垎绫绘槸鍚﹀瓨鍦ㄥ叧鑱斿埗搴� ${institutionList}
+
+7. 鑻� ${institutionList}涓嶄负绌猴紝鍒欐姏鍑哄紓甯镐俊鎭� 鈥滆鍒嗙被宸插叧鑱斿埗搴︼紝涓嶅彲鍒犻櫎鈥�
+
+8. 鏍规嵁鍒嗙被id,鍒犻櫎鏁版嵁搴撲腑璇ュ垎绫�
+
+9. 杩斿洖鎴愬姛
+
+   
+
+------
+
+
+
+### 2.3  getClassifyTree
+
+#### 2.3.1 姒傝堪
+
+鏌ヨ鍒跺害鍒嗙被鏍戠粨鏋�
+
+#### 2.3.2 鍓嶆彁鏉′欢
+
+N/A
+
+#### 2.3.3  鍙傛暟
+
+| No   | 鍙傛暟鍚� | 绫诲瀷 | 鍏佽绌哄€� | 澶囨敞 |
+| ---- | ------ | ---- | -------- | ---- |
+|      |        |      |          |      |
+
+#### 2.3.4  杩斿洖鍊�
+
+| No   | 鍙傛暟鍚�   | 绫诲瀷              | 鍏佽绌哄€� | 澶囨敞     |
+| ---- | -------- | ----------------- | -------- | -------- |
+| 1    | id       | Long              | N        | id       |
+| 2    | name     | String            | N        | 鍒嗙被鍚嶇О |
+| 3    | parentId | Long              | N        | 鐖剁骇id   |
+| 4    | children | List<ClassifyOut> | Y        | 瀛愮骇     |
+
+#### 2.3.5 楠岃瘉鏉′欢
+
+N/A
+
+#### 2.3.6  鎵ц鏉′欢涓庣粨鏋�
+
+1. 鏌ヨ鍑哄垎绫诲垪琛�
+2. 鎶婂垎绫诲垪琛ㄨ浆鍖栦负鏍戠粨鏋�
+3. 杩斿洖鍒嗙被鏍�
+
diff --git "a/Document/2.\350\256\276\350\256\241/7.\344\270\232\345\212\241\350\256\276\350\256\241/InstitutionFileService\344\270\232\345\212\241\350\256\276\350\256\241(\345\210\266\345\272\246\345\205\263\350\201\224\345\210\266\345\272\246).md" "b/Document/2.\350\256\276\350\256\241/7.\344\270\232\345\212\241\350\256\276\350\256\241/InstitutionFileService\344\270\232\345\212\241\350\256\276\350\256\241(\345\210\266\345\272\246\345\205\263\350\201\224\345\210\266\345\272\246).md"
new file mode 100644
index 0000000000000000000000000000000000000000..727b1935ef1cd64de439d960977d8aa96afc04ca
--- /dev/null
+++ "b/Document/2.\350\256\276\350\256\241/7.\344\270\232\345\212\241\350\256\276\350\256\241/InstitutionFileService\344\270\232\345\212\241\350\256\276\350\256\241(\345\210\266\345\272\246\345\205\263\350\201\224\345\210\266\345\272\246).md"
@@ -0,0 +1,155 @@
+# 鍒跺害鍏宠仈鍒跺害璁捐
+
+## 1.  姒傝堪
+
+### 1.1  鐩爣涓庤寖鍥�
+
+鎺ュ彛涓昏鏄疄鐜扮鐞嗗埗搴﹀埗搴︿箣闂寸殑鍏宠仈
+
+### 1.2  璇昏€�
+
+璐熻矗璁捐锛屽紑鍙戞垨缁存姢搴旂敤绋嬪簭鐨勪汉鍛樺繀椤婚槄璇绘湰鏂囨。銆� 瀵逛簬搴旂敤绋嬪簭鐨勭鐞嗗憳鎴栨祴璇曚汉鍛橈紝浠嶅缓璁偍浠旂粏闃呰璇ユ枃妗c€�
+
+## 2.  InstitutionRelation Interface
+
+### 2.1 getInstitutionRelationList
+
+#### 2.1.1 姒傝堪
+
+鏌ヨ鍒跺害鍏宠仈琛�  浠d浣滀负master_id鍘绘煡璇�  
+
+鏌ヨ鍑轰笌璇ュ埗搴﹀叧鑱旂殑鍒跺害  浠ュ強  鏈叧鑱旂殑鍒跺害(鍓�50)
+
+鏍规嵁鍒跺害鏍囬鍘绘ā绯婃煡璇�
+
+#### 2.1.2 鍓嶆彁鏉′欢
+
+N/A
+
+#### 2.1.3  鍙傛暟
+
+| No   | 鍙傛暟鍚� | 绫诲瀷   | 鍏佽绌哄€� | 澶囨敞               |
+| ---- | ------ | ------ | -------- | ------------------ |
+| 1    | id     | Long   | N        | 鍒跺害id             |
+| 2    | title  | String | Y        | 鍒跺害鏍囬(妯$硦鏌ヨ) |
+
+#### 2.1.4  杩斿洖鍊�
+
+| No                        | 绫诲瀷                 | 鍏佽绌哄€� | 澶囨敞           |
+| ------------------------- | -------------------- | -------- | -------------- |
+| noRelationInstitutionList | List<InstitutionOut> | Y        | 鏈叧鑱斿埗搴﹂泦鍚� |
+| relationInstitutionList   | List<InstitutionOut> | Y        | 宸插叧鑱斿埗搴﹂泦鍚� |
+
+**Institution**
+
+| No    | 绫诲瀷   | 鍏佽绌哄€� | 澶囨敞     |
+| ----- | ------ | -------- | -------- |
+| id    | Long   | N        | 鍒跺害id   |
+| title | String | N        | 鍒跺害鍚嶇О |
+
+#### 2.1.5 楠岃瘉鏉′欢
+
+1. 鍒跺害id涓嶈兘涓虹┖
+
+#### 2.1.6  鎵ц鏉′欢涓庣粨鏋�
+
+1. 鎵ц楠岃瘉鏉′欢1,鑻ュ埗搴d涓虹┖ 鍒欐姏鍑哄紓甯镐俊鎭�"鍒跺害id 涓嶅彲涓虹┖";
+2. 鍏堝湪  鍒跺害鍏宠仈琛�   涓煡璇�  鍒涘缓鏌ヨ鏉′欢  鍒跺害id 
+3. 鏍规嵁鏌ヨ鏉′欢鏌ヨ鍑哄叧鑱旀枃浠朵俊鎭疞ist<File>  ${relationInstitutionList};
+4. 鏍¢獙 ${relationInstitutionList}鏄惁涓虹┖
+
+鈥�         4.1 鑻elationInstitution 涓虹┖鍒欎笉杩涜杩欎竴姝�  鍒�  鏃犲叧鑱斿埗搴�   鍏ㄩ兘鏄潪鍏宠仈鍒跺害
+
+鈥�         4.2  鑻ヤ笉涓虹┖ 鍒欏皢3 涓煡鍑虹殑鍏宠仈鍒跺害鍒楄〃杩囨护鑾峰緱鍏宠仈鍒跺害id闆嗗悎 LIst<Long>  ${relationIdList}
+
+5. 鍦ㄥ埗搴﹁〃涓� 浠�${relationIdList} 浣滀负鏉′欢 鏌ヨ鍑洪潪鍏宠仈鍒跺害list(寰呬慨鏀�)
+6. 鍙栨湭鍏宠仈鍒跺害闆嗗悎鐨勫墠浜斿崄涓�  鍜�  鍏宠仈鍒跺害  涓や釜闆嗗悎  noRelationInstitution鍜宺elationInstitution
+7. 鍒涘缓涓€涓繑鍥瀝esult  灏嗕袱涓泦鍚堟坊鍔犺繘result
+8. 杩斿洖result
+
+------
+
+
+
+### 2.2  addInstitutionRelation
+
+#### 2.2.1 姒傝堪
+
+娣诲姞鍒跺害涓庣幇鏈夋枃浠剁殑鍏宠仈
+
+#### 2.2.2 鍓嶆彁鏉′欢
+
+N/A
+
+#### 2.2.3 鍙傛暟
+
+| 鍙傛暟鍚�            | 绫诲瀷       | 鍏佽绌哄€� | 澶囨敞         |
+| ----------------- | ---------- | -------- | ------------ |
+| InstitutionIdList | List<Long> | N        | 浠庡埗搴d闆嗗悎 |
+| id                | Long       | N        | 涓诲埗搴d     |
+
+#### 2.2.4 杩斿洖鍊�
+
+| 鍙傛暟鍚� | 绫诲瀷 | 鍏佽绌哄€� | 澶囨敞 |
+| ------ | ---- | -------- | ---- |
+|        |      |          |      |
+
+#### 2.2.5 楠岃瘉鏉′欢
+
+1. 浠庡埗搴d闆嗗悎涓嶈兘涓虹┖
+
+2. 鍒跺害id涓嶈兘涓虹┖
+
+#### 2.2.6 鎵ц鏉′欢涓庣粨鏋�
+
+1. 鎵ц楠岃瘉1,鑻ヤ粠鍒跺害id闆嗗悎涓虹┖,鎶涘嚭寮傚父淇℃伅"璇烽€夋嫨鍏宠仈鍒跺害"
+2. 鎵ц楠岃瘉2,鑻ュ埗搴d涓虹┖,鎶涘嚭寮傚父淇℃伅"鍒跺害id 涓嶅彲涓虹┖"
+3. 鏍规嵁浠庡埗搴d闆嗗悎鍘绘暟鎹簱(鍒跺害琛�)涓煡璇㈠嚭${InstitutionList}
+4. 鍒ゆ柇${InstitutionList}鐨勯暱搴︿笌浠庡埗搴d闆嗗悎鐨勯暱搴︽槸鍚︾浉绛�  濡傛灉涓嶇浉绛夊垯鎶涘嚭寮傚父淇℃伅"鍒跺害涓嶅瓨鍦�"
+5. 閬嶅巻浠庡埗搴d闆嗗悎 
+6. 鍒涘缓RelationFilePO 娣诲姞浠庡埗搴d 鍜� 涓诲埗搴d 
+7. 鐒跺悗灏嗗叾寰幆娣诲姞杩涘埗搴﹀叧鑱旇〃
+8. 杩斿洖鎴愬姛
+
+------
+
+
+
+### 2.3  removeInstitutionRelation
+
+#### 2.3.1 姒傝堪
+
+鍒犻櫎鍒跺害涓庡叧鑱斿埗搴︾殑鍏宠仈
+
+#### 2.3.2 鍓嶆彁鏉′欢
+
+N/A
+
+#### 2.3.3 鍙傛暟
+
+| 鍙傛暟鍚�            | 绫诲瀷       | 鍏佽绌哄€� | 澶囨敞         |
+| ----------------- | ---------- | -------- | ------------ |
+| InstitutionIdList | List<Long> | N        | 浠庡埗搴d闆嗗悎 |
+| id                | Long       | N        | 涓诲埗搴d     |
+
+#### 2.3.4 杩斿洖鍊�
+
+| 鍙傛暟鍚� | 绫诲瀷 | 鍏佽绌哄€� | 澶囨敞 |
+| ------ | ---- | -------- | ---- |
+|        |      |          |      |
+
+#### 2.3.5 楠岃瘉鏉′欢
+
+1 浠庡埗搴d闆嗗悎涓嶈兘涓虹┖
+
+2 鍒跺害id涓嶈兘瀛樺湪  
+
+#### 2.3.6 鎵ц鏉′欢涓庣粨鏋�
+
+1. 鎵ц楠岃瘉1,鑻ヤ粠鍒跺害id闆嗗悎涓虹┖,鎶涘嚭寮傚父淇℃伅"璇烽€夋嫨瑕佸垹闄ょ殑鍏宠仈鍒跺害"
+2. 鎵ц楠岃瘉2,鑻ュ埗搴d涓虹┖,鎶涘嚭寮傚父淇℃伅"鍒跺害id 涓嶅彲涓虹┖"
+3. 鏍规嵁浠庡埗搴d闆嗗悎鍘绘暟鎹簱(鍒跺害琛�)涓煡璇㈠嚭${InstitutionList}
+4. 鍒ゆ柇${InstitutionList}鐨勯暱搴︿笌浠庡埗搴d闆嗗悎鐨勯暱搴︽槸鍚︾浉绛�  濡傛灉涓嶇浉绛夊垯鎶涘嚭寮傚父淇℃伅"鍒跺害涓嶅瓨鍦�"
+5. 閬嶅巻浠庡埗搴d闆嗗悎 
+6. 鏍规嵁 鍒跺害id  鍜�  浠庡埗搴d闆嗗悎  鍒犻櫎鏁版嵁搴撲腑鐨勬暟鎹�
+7. 杩斿洖鎴愬姛
\ No newline at end of file
diff --git a/ServiceSite/facade/src/main/java/com/seasky/educationinstitutionallibrary/enums/AuditStatusEnum.java b/ServiceSite/facade/src/main/java/com/seasky/educationinstitutionallibrary/enums/AuditStatusEnum.java
new file mode 100644
index 0000000000000000000000000000000000000000..96818425a58250b71f7ed0e394be3a0fc71e3c0a
--- /dev/null
+++ b/ServiceSite/facade/src/main/java/com/seasky/educationinstitutionallibrary/enums/AuditStatusEnum.java
@@ -0,0 +1,47 @@
+package com.seasky.educationinstitutionallibrary.enums;
+
+/**
+ * 瀹℃牳鐘舵€佹灇涓�
+ */
+public enum AuditStatusEnum {
+
+    EMPTY("",0),
+    TOBEAUDIT("寰呭鏍�",1),
+    AUDITPASS("瀹℃牳閫氳繃",2),
+    AUDITREJECT("瀹℃牳椹冲洖",3);
+
+    /**
+     * 鏋氫妇灞炴€ц鏄�
+     */
+    private final String name;
+
+    private final Integer index;
+
+    AuditStatusEnum(String name, Integer index) {
+        this.name = name;
+        this.index = index;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public Integer getIndex() {
+        return index;
+    }
+
+
+    /**
+     * 閫氳繃key 鏌ユ壘鎻忚堪 鏂规硶
+     *
+     * @param index
+     */
+    public static AuditStatusEnum getValueByIndex(Integer index) {
+        for (AuditStatusEnum openEnum : AuditStatusEnum.values()) {
+            if (openEnum.getIndex().equals(index)) {
+                return openEnum;
+            }
+        }
+        throw new IllegalArgumentException(index + "? There is no such value!");
+    }
+}
\ No newline at end of file
diff --git a/ServiceSite/facade/src/main/java/com/seasky/educationinstitutionallibrary/enums/LibraryEnum.java b/ServiceSite/facade/src/main/java/com/seasky/educationinstitutionallibrary/enums/LibraryEnum.java
new file mode 100644
index 0000000000000000000000000000000000000000..26ddf1aadb6690cc93200a0977a294a3e3422a76
--- /dev/null
+++ b/ServiceSite/facade/src/main/java/com/seasky/educationinstitutionallibrary/enums/LibraryEnum.java
@@ -0,0 +1,45 @@
+package com.seasky.educationinstitutionallibrary.enums;
+
+/**
+ * 鎵€灞炲簱鏋氫妇
+ */
+public enum LibraryEnum {
+
+    CURRENT("閫氱敤鍒跺害搴�",1),
+    PRIVATE("閮ㄩ棬绉佹湁搴�",2);
+
+    /**
+     * 鏋氫妇灞炴€ц鏄�
+     */
+    private final String name;
+
+    private final Integer index;
+
+    LibraryEnum(String name, Integer index) {
+        this.name = name;
+        this.index = index;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public Integer getIndex() {
+        return index;
+    }
+
+
+    /**
+     * 閫氳繃key 鏌ユ壘鎻忚堪 鏂规硶
+     *
+     * @param index
+     */
+    public static LibraryEnum getValueByIndex(Integer index) {
+        for (LibraryEnum openEnum : LibraryEnum.values()) {
+            if (openEnum.getIndex().equals(index)) {
+                return openEnum;
+            }
+        }
+        throw new IllegalArgumentException(index + "? There is no such value!");
+    }
+}
\ No newline at end of file
diff --git a/ServiceSite/facade/src/main/java/com/seasky/educationinstitutionallibrary/enums/OperateEnum.java b/ServiceSite/facade/src/main/java/com/seasky/educationinstitutionallibrary/enums/OperateEnum.java
new file mode 100644
index 0000000000000000000000000000000000000000..4225d62faceecd6bf00d9747e8628e439f8aebdd
--- /dev/null
+++ b/ServiceSite/facade/src/main/java/com/seasky/educationinstitutionallibrary/enums/OperateEnum.java
@@ -0,0 +1,47 @@
+package com.seasky.educationinstitutionallibrary.enums;
+
+/**
+ * 鎿嶄綔鏋氫妇
+ */
+
+public enum OperateEnum {
+
+    PUBLISH("鍙戝竷",1),
+    CANCEL("浣滃簾",2),
+    RECOVER("鎭㈠",3);
+
+    /**
+     * 鏋氫妇灞炴€ц鏄�
+     */
+    private final String name;
+
+    private final Integer index;
+
+    OperateEnum(String name, Integer index) {
+        this.name = name;
+        this.index = index;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public Integer getIndex() {
+        return index;
+    }
+
+
+    /**
+     * 閫氳繃key 鏌ユ壘鎻忚堪 鏂规硶
+     *
+     * @param index
+     */
+    public static OperateEnum getValueByIndex(Integer index) {
+        for (OperateEnum openEnum : OperateEnum.values()) {
+            if (openEnum.getIndex().equals(index)) {
+                return openEnum;
+            }
+        }
+        throw new IllegalArgumentException(index + "? There is no such value!");
+    }
+}
\ No newline at end of file
diff --git a/ServiceSite/facade/src/main/java/com/seasky/educationinstitutionallibrary/enums/PublishStatusEnum.java b/ServiceSite/facade/src/main/java/com/seasky/educationinstitutionallibrary/enums/PublishStatusEnum.java
new file mode 100644
index 0000000000000000000000000000000000000000..a225027678c052176e73121ffbbf09ff24f160d7
--- /dev/null
+++ b/ServiceSite/facade/src/main/java/com/seasky/educationinstitutionallibrary/enums/PublishStatusEnum.java
@@ -0,0 +1,46 @@
+package com.seasky.educationinstitutionallibrary.enums;
+
+/**
+ * 鍙戝竷鐘舵€佹灇涓�
+ */
+public enum PublishStatusEnum {
+
+    UNPUBLISHED("鏈彂甯�",0),
+    PUBLISHED("宸插彂甯�",1),
+    CANCEL("浣滃簾",2);
+
+    /**
+     * 鏋氫妇灞炴€ц鏄�
+     */
+    private final String name;
+
+    private final Integer index;
+
+    PublishStatusEnum(String name, Integer index) {
+        this.name = name;
+        this.index = index;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public Integer getIndex() {
+        return index;
+    }
+
+
+    /**
+     * 閫氳繃key 鏌ユ壘鎻忚堪 鏂规硶
+     *
+     * @param index
+     */
+    public static PublishStatusEnum getValueByIndex(Integer index) {
+        for (PublishStatusEnum openEnum : PublishStatusEnum.values()) {
+            if (openEnum.getIndex().equals(index)) {
+                return openEnum;
+            }
+        }
+        throw new IllegalArgumentException(index + "? There is no such value!");
+    }
+}
\ No newline at end of file
diff --git a/ServiceSite/facade/src/main/java/com/seasky/educationinstitutionallibrary/enums/RoleEnum.java b/ServiceSite/facade/src/main/java/com/seasky/educationinstitutionallibrary/enums/RoleEnum.java
new file mode 100644
index 0000000000000000000000000000000000000000..6b825092d839e17942cdc8c205f61e613dbb1ddb
--- /dev/null
+++ b/ServiceSite/facade/src/main/java/com/seasky/educationinstitutionallibrary/enums/RoleEnum.java
@@ -0,0 +1,47 @@
+package com.seasky.educationinstitutionallibrary.enums;
+
+/**
+ * 瑙掕壊鏋氫妇
+ */
+public enum RoleEnum {
+
+    EDUADMIN("鏁欏绠$悊鍛�",1),
+    DEPTADMIN("閮ㄩ棬绠$悊鍛�",2),
+    EDUAUDITOR("鏁欏瀹℃牳鍛�",3),
+    DEPTAUDITOR("閮ㄩ棬瀹℃牳鍛�",4);
+
+    /**
+     * 鏋氫妇灞炴€ц鏄�
+     */
+    private final String name;
+
+    private final Integer index;
+
+    RoleEnum(String name, Integer index) {
+        this.name = name;
+        this.index = index;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public Integer getIndex() {
+        return index;
+    }
+
+
+    /**
+     * 閫氳繃key 鏌ユ壘鎻忚堪 鏂规硶
+     *
+     * @param index
+     */
+    public static RoleEnum getValueByIndex(Integer index) {
+        for (RoleEnum openEnum : RoleEnum.values()) {
+            if (openEnum.getIndex().equals(index)) {
+                return openEnum;
+            }
+        }
+        throw new IllegalArgumentException(index + "? There is no such value!");
+    }
+}
\ No newline at end of file
diff --git a/ServiceSite/facade/src/main/java/com/seasky/educationinstitutionallibrary/web/api/IClassifyController.java b/ServiceSite/facade/src/main/java/com/seasky/educationinstitutionallibrary/web/api/IClassifyController.java
new file mode 100644
index 0000000000000000000000000000000000000000..813f35fa2029a10735c0a5b4d353c5512dbf5562
--- /dev/null
+++ b/ServiceSite/facade/src/main/java/com/seasky/educationinstitutionallibrary/web/api/IClassifyController.java
@@ -0,0 +1,33 @@
+package com.seasky.educationinstitutionallibrary.web.api;
+
+import com.seasky.core.common.Result;
+import com.seasky.educationinstitutionallibrary.web.dto.request.IdRequest;
+import com.seasky.educationinstitutionallibrary.web.dto.request.classify.ClassifyCmd;
+import com.seasky.educationinstitutionallibrary.web.dto.result.classify.ClassifyTreeOut;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+@FeignClient("education-institutional-library")
+@RequestMapping("classify")
+@Api("鍒嗙被绠$悊")
+@Validated
+public interface IClassifyController {
+
+    @ApiOperation("1.鏂板/缂栬緫鍒跺害鍒嗙被")
+    @PostMapping(path = "/saveClassify")
+    Result<Integer> saveClassify(@Validated @RequestBody ClassifyCmd classifyCmd);
+
+    @ApiOperation("2.鍒犻櫎鍒跺害")
+    @PostMapping(path = "/removeClassifyById")
+    Result<Integer> removeClassifyById(@Validated @RequestBody IdRequest idRequest);
+
+    @ApiOperation("3.鏌ヨ鍒跺害鍒嗙被鏍戠粨鏋�")
+    @GetMapping(path = "/getClassifyTree")
+    Result<ClassifyTreeOut> getClassifyTree();
+}
diff --git a/ServiceSite/facade/src/main/java/com/seasky/educationinstitutionallibrary/web/api/IInstitutionController.java b/ServiceSite/facade/src/main/java/com/seasky/educationinstitutionallibrary/web/api/IInstitutionController.java
index 6bc849a8caa0a400dd68674e950aca0fae56390a..a7de9cafb444cd94f65c664f5344af73d778bc7d 100644
--- a/ServiceSite/facade/src/main/java/com/seasky/educationinstitutionallibrary/web/api/IInstitutionController.java
+++ b/ServiceSite/facade/src/main/java/com/seasky/educationinstitutionallibrary/web/api/IInstitutionController.java
@@ -5,8 +5,6 @@ import com.seasky.educationinstitutionallibrary.web.dto.request.IdRequest;
 import com.seasky.educationinstitutionallibrary.web.dto.request.institution.InstitutionCmd;
 import com.seasky.educationinstitutionallibrary.web.dto.result.institution.InstitutionOut;
 import com.seasky.educationinstitutionallibrary.web.dto.result.institution.InstitutionSignalOut;
-import com.seasky.template.web.dto.request.TestRequest;
-import com.seasky.template.web.dto.result.TestResult;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.cloud.openfeign.FeignClient;
diff --git a/ServiceSite/facade/src/main/java/com/seasky/educationinstitutionallibrary/web/api/ISearchLogController.java b/ServiceSite/facade/src/main/java/com/seasky/educationinstitutionallibrary/web/api/ISearchLogController.java
new file mode 100644
index 0000000000000000000000000000000000000000..6b1bb974dc2736c802dcec174960027d3cf04be8
--- /dev/null
+++ b/ServiceSite/facade/src/main/java/com/seasky/educationinstitutionallibrary/web/api/ISearchLogController.java
@@ -0,0 +1,27 @@
+package com.seasky.educationinstitutionallibrary.web.api;
+
+import com.seasky.core.common.Result;
+import com.seasky.educationinstitutionallibrary.web.dto.request.searchLog.SearchCmd;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+@FeignClient("education-institutional-library")
+@RequestMapping("searchLog")
+@Api("鐑悳绠$悊")
+@Validated
+public interface ISearchLogController {
+
+    @ApiOperation("1.淇濆瓨鎼滅储璁板綍")
+    @PostMapping(path = "/addSearchLog")
+    Result<Integer> addSearchLog(@Validated @RequestBody SearchCmd searchCmd);
+
+    @ApiOperation("2.鏌ヨ鐑悳鍒楄〃")
+    @GetMapping(path = "/getSearchLogList")
+    Result<String> getSearchLogList();
+}
diff --git a/ServiceSite/facade/src/main/java/com/seasky/educationinstitutionallibrary/web/dto/request/classify/ClassifyCmd.java b/ServiceSite/facade/src/main/java/com/seasky/educationinstitutionallibrary/web/dto/request/classify/ClassifyCmd.java
new file mode 100644
index 0000000000000000000000000000000000000000..cecb603b5cc3053ac0b8eb89b4e1e559b1544f20
--- /dev/null
+++ b/ServiceSite/facade/src/main/java/com/seasky/educationinstitutionallibrary/web/dto/request/classify/ClassifyCmd.java
@@ -0,0 +1,40 @@
+package com.seasky.educationinstitutionallibrary.web.dto.request.classify;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author kejinlong
+ * @since 2022/6/22
+ */
+@ApiModel("鍒嗙被Cmd")
+@Data
+@Accessors(chain = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ClassifyCmd implements Serializable {
+
+    @ApiModelProperty(value = "鍒嗙被id")
+    private Long id;
+
+    @ApiModelProperty(value = "鍒嗙被鍚嶇О")
+    @NotBlank(message = "鍒嗙被鍚嶇О涓嶅厑璁镐负绌�")
+    private String name;
+
+    @ApiModelProperty(value = "鐖剁骇id")
+    @NotNull(message = "鐖剁骇id涓嶅厑璁镐负绌�")
+    private Long parentId;
+}
diff --git a/ServiceSite/facade/src/main/java/com/seasky/educationinstitutionallibrary/web/dto/request/searchLog/SearchCmd.java b/ServiceSite/facade/src/main/java/com/seasky/educationinstitutionallibrary/web/dto/request/searchLog/SearchCmd.java
new file mode 100644
index 0000000000000000000000000000000000000000..7d5b42c0b8d3c3c450e0da7a5df4028ab874bf9c
--- /dev/null
+++ b/ServiceSite/facade/src/main/java/com/seasky/educationinstitutionallibrary/web/dto/request/searchLog/SearchCmd.java
@@ -0,0 +1,29 @@
+package com.seasky.educationinstitutionallibrary.web.dto.request.searchLog;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+/**
+ * @author: kejinlong
+ * @create: 2022-06-23 08:56
+ **/
+@ApiModel("鐑悳Cmd")
+@Data
+@Accessors(chain = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SearchCmd implements Serializable {
+
+    @ApiModelProperty(value = "鎼滅储鍐呭")
+    @NotBlank(message = "鎼滅储鍐呭涓嶅厑璁镐负绌�")
+    private String content;
+}
diff --git a/ServiceSite/facade/src/main/java/com/seasky/educationinstitutionallibrary/web/dto/result/classify/ClassifyTreeOut.java b/ServiceSite/facade/src/main/java/com/seasky/educationinstitutionallibrary/web/dto/result/classify/ClassifyTreeOut.java
new file mode 100644
index 0000000000000000000000000000000000000000..785de85e11da77288079dca8743d1f1caa5e9da2
--- /dev/null
+++ b/ServiceSite/facade/src/main/java/com/seasky/educationinstitutionallibrary/web/dto/result/classify/ClassifyTreeOut.java
@@ -0,0 +1,35 @@
+package com.seasky.educationinstitutionallibrary.web.dto.result.classify;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author kejinlong
+ * @since 2022/6/22
+ */
+@Builder
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(JsonInclude.Include.ALWAYS)
+public class ClassifyTreeOut implements Serializable {
+    @ApiModelProperty(value = "鍒嗙被id", example = "1")
+    private Long id;
+
+    @ApiModelProperty(value = "鍒嗙被鍚嶇О", example = "娴嬭瘯閮�")
+    private String name;
+
+    @ApiModelProperty(value = "鐖剁骇閮ㄩ棬id", example = "0")
+    private Long parentId;
+
+    @ApiModelProperty(value = "瀛愮骇閮ㄩ棬鍒楄〃")
+    private List<ClassifyTreeOut> children = new ArrayList<ClassifyTreeOut>();
+}
diff --git a/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/api/ClassifyService.java b/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/api/ClassifyService.java
new file mode 100644
index 0000000000000000000000000000000000000000..a6b3652ef1605a4381d8c964af23e3e1c1f6f4ab
--- /dev/null
+++ b/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/api/ClassifyService.java
@@ -0,0 +1,21 @@
+package com.seasky.educationinstitutionallibrary.business.api;
+
+import com.seasky.core.base.BaseService;
+import com.seasky.educationinstitutionallibrary.business.entity.ClassifyPo;
+import com.seasky.educationinstitutionallibrary.web.dto.request.IdRequest;
+import com.seasky.educationinstitutionallibrary.web.dto.request.classify.ClassifyCmd;
+import com.seasky.educationinstitutionallibrary.web.dto.result.classify.ClassifyTreeOut;
+
+import java.util.List;
+
+/**
+ * @Author: kejinlong
+ * @Date: 2022/06/22/10:37
+ */
+public interface ClassifyService extends BaseService<ClassifyPo> {
+    Integer saveClassify(ClassifyCmd classifyCmd);
+
+    Integer removeClassifyById(IdRequest idRequest);
+
+    List<ClassifyTreeOut> getClassifyTree();
+}
diff --git a/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/api/SearchLogService.java b/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/api/SearchLogService.java
new file mode 100644
index 0000000000000000000000000000000000000000..43b5add45fef8c475e3d6de27d00f574a788e7e8
--- /dev/null
+++ b/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/api/SearchLogService.java
@@ -0,0 +1,11 @@
+package com.seasky.educationinstitutionallibrary.business.api;
+
+import com.seasky.educationinstitutionallibrary.web.dto.request.searchLog.SearchCmd;
+
+import java.util.List;
+
+public interface SearchLogService {
+    Integer addSearchLog(SearchCmd searchCmd);
+
+    List<String> getSearchLogList();
+}
diff --git a/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/dao/mapper/ClassifyMapper.java b/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/dao/mapper/ClassifyMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..4acff1c4f347a7e6b10a4ae6f23a935429e6662a
--- /dev/null
+++ b/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/dao/mapper/ClassifyMapper.java
@@ -0,0 +1,15 @@
+package com.seasky.educationinstitutionallibrary.business.dao.mapper;
+
+import com.seasky.core.base.BaseMapper;
+import com.seasky.educationinstitutionallibrary.business.entity.ClassifyPo;
+import com.seasky.educationinstitutionallibrary.business.entity.InstitutionPo;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @Author: kejinlong
+ * @Date: 2022/06/22/10:52
+ * @Description:
+ */
+@Mapper
+public interface ClassifyMapper extends BaseMapper<ClassifyPo> {
+}
diff --git a/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/dao/mapper/InstitutionMapper.java b/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/dao/mapper/InstitutionMapper.java
index bb3c39297b2a69888b51d5c2420702399e3d660a..1f28ffe164e95630bec799c30d5c36b2f25d433a 100644
--- a/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/dao/mapper/InstitutionMapper.java
+++ b/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/dao/mapper/InstitutionMapper.java
@@ -2,6 +2,10 @@ package com.seasky.educationinstitutionallibrary.business.dao.mapper;
 
 import com.seasky.core.base.BaseMapper;
 import com.seasky.educationinstitutionallibrary.business.entity.InstitutionPo;
+import org.apache.ibatis.annotations.Mapper;
 
+import javax.validation.constraints.NotNull;
+
+@Mapper
 public interface InstitutionMapper extends BaseMapper<InstitutionPo> {
 }
diff --git a/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/dao/mapper/SearchLogMapper.java b/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/dao/mapper/SearchLogMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..5a85eef8cd8b346e8908df76f6d732e0366bd041
--- /dev/null
+++ b/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/dao/mapper/SearchLogMapper.java
@@ -0,0 +1,9 @@
+package com.seasky.educationinstitutionallibrary.business.dao.mapper;
+
+import com.seasky.core.base.BaseMapper;
+import com.seasky.educationinstitutionallibrary.business.entity.SearchLogPo;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SearchLogMapper extends BaseMapper<SearchLogPo> {
+}
diff --git a/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/dao/xml/ClassifyMapper.xml b/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/dao/xml/ClassifyMapper.xml
new file mode 100644
index 0000000000000000000000000000000000000000..322a9692e5ae4f073c065b217c50885f681d1859
--- /dev/null
+++ b/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/dao/xml/ClassifyMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.seasky.educationinstitutionallibrary.business.dao.mapper.ClassifyMapper">
+
+</mapper>
diff --git a/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/dao/xml/InstitutionMapper.xml b/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/dao/xml/InstitutionMapper.xml
index 165763e41d24382c57012554b540f34d2bbf0ff2..062d51b0b136d54c88874acd045f1551d3209337 100644
--- a/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/dao/xml/InstitutionMapper.xml
+++ b/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/dao/xml/InstitutionMapper.xml
@@ -1,15 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.seasky.educationinstitutionallibrary.business.dao.mapper.TestMapper">
-
-    <select id="selectIdPage" resultType="com.seasky.core.base.IdModel" useCache="false">
-        select id from tb_institution
-        <where>
-            available = 'YES'
-            <if test="cm.name != null and cm.name != ''">
-                and name like concat('%', #{cm.name}, '%') ESCAPE '/'
-            </if>
-        </where>
-    </select>
+<mapper namespace="com.seasky.educationinstitutionallibrary.business.dao.mapper.InstitutionMapper">
 
 </mapper>
diff --git a/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/dao/xml/SearchLogMapper.xml b/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/dao/xml/SearchLogMapper.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c202b5665165f6f8b2c387bc485b24268ac8d216
--- /dev/null
+++ b/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/dao/xml/SearchLogMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.seasky.educationinstitutionallibrary.business.dao.mapper.SearchLogMapper">
+
+</mapper>
diff --git a/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/entity/ClassifyPo.java b/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/entity/ClassifyPo.java
new file mode 100644
index 0000000000000000000000000000000000000000..0b220ea242dd86fb22c3a0eb804de15d79f4dcf0
--- /dev/null
+++ b/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/entity/ClassifyPo.java
@@ -0,0 +1,30 @@
+package com.seasky.educationinstitutionallibrary.business.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.seasky.core.base.BaseModel;
+import io.swagger.annotations.ApiModel;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+/**
+ * @author: kejinlong
+ * @create: 2022-06-22 10:44
+ **/
+@Data
+@TableName("tb_institution_classify")
+@AllArgsConstructor
+@NoArgsConstructor
+@Accessors(chain = true)
+@Builder
+@ApiModel(value = "鍒跺害鍒嗙被瀹炰綋")
+public class ClassifyPo extends BaseModel {
+    @TableField(value = "name")
+    private String name;
+
+    @TableField(value = "parent_id")
+    private Long parentId;
+}
diff --git a/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/entity/InstitutionPo.java b/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/entity/InstitutionPo.java
index 707a711e353d020352d07dece8b80c7a7b7ccd7a..cb3c2b7559975ae050cf9f2c45ffbea384f2ceaf 100644
--- a/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/entity/InstitutionPo.java
+++ b/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/entity/InstitutionPo.java
@@ -8,6 +8,7 @@ import io.swagger.models.auth.In;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
 
 import java.util.Date;
@@ -15,6 +16,7 @@ import java.util.Date;
 @Data
 @TableName("tb_institution")
 @AllArgsConstructor
+@NoArgsConstructor
 @Accessors(chain = true)
 @Builder
 @ApiModel(value = "鍒跺害瀹炰綋")
@@ -52,7 +54,7 @@ public class InstitutionPo extends BaseModel {
     @TableField(value = "publish_status")
     private Integer publishStatus;
 
-    @TableField(value = "audits_status")
+    @TableField(value = "audit_status")
     private Integer auditStatus;
 
     @TableField(value = "reject_reason")
diff --git a/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/entity/SearchLogPo.java b/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/entity/SearchLogPo.java
new file mode 100644
index 0000000000000000000000000000000000000000..4ef084d191d1d76b89b164ab100aa7f65ab80a32
--- /dev/null
+++ b/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/entity/SearchLogPo.java
@@ -0,0 +1,30 @@
+package com.seasky.educationinstitutionallibrary.business.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.seasky.core.base.BaseModel;
+import io.swagger.annotations.ApiModel;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+/**
+ * @author: kejinlong
+ * @create: 2022-06-22 10:44
+ **/
+@Data
+@TableName("tb_search_log")
+@AllArgsConstructor
+@NoArgsConstructor
+@Accessors(chain = true)
+@Builder
+@ApiModel(value = "鐑悳瀹炰綋")
+public class SearchLogPo extends BaseModel {
+    @TableField(value = "content")
+    private String content;
+
+    @TableField(value = "count")
+    private Integer count;
+}
diff --git a/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/service/ClassifyServiceImpl.java b/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/service/ClassifyServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..6e91f28eb7766999aee68a269f3eda0c9ed91a29
--- /dev/null
+++ b/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/service/ClassifyServiceImpl.java
@@ -0,0 +1,106 @@
+package com.seasky.educationinstitutionallibrary.business.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.seasky.core.base.AbstractService;
+import com.seasky.core.util.ExceptionUtil;
+import com.seasky.educationinstitutionallibrary.business.api.ClassifyService;
+import com.seasky.educationinstitutionallibrary.business.dao.mapper.ClassifyMapper;
+import com.seasky.educationinstitutionallibrary.business.dao.mapper.InstitutionMapper;
+import com.seasky.educationinstitutionallibrary.business.entity.ClassifyPo;
+import com.seasky.educationinstitutionallibrary.business.entity.InstitutionPo;
+import com.seasky.educationinstitutionallibrary.business.service.convert.ClassifyConvert;
+import com.seasky.educationinstitutionallibrary.web.dto.request.IdRequest;
+import com.seasky.educationinstitutionallibrary.web.dto.request.classify.ClassifyCmd;
+import com.seasky.educationinstitutionallibrary.web.dto.result.classify.ClassifyTreeOut;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author: kejinlong
+ * @create: 2022-06-22 10:37
+ **/
+@Service
+public class ClassifyServiceImpl extends AbstractService<ClassifyPo, ClassifyMapper> implements ClassifyService {
+    @Autowired
+    private ClassifyMapper classifyMapper;
+
+    @Autowired
+    private InstitutionMapper institutionMapper;
+
+    @Override
+    public Integer saveClassify(ClassifyCmd classifyCmd) {
+        //杞寲涓簆o
+        ClassifyPo classifyPo = ClassifyConvert.cmdToPo(classifyCmd);
+
+        //鏍¢獙鍚嶇О鏄惁宸插瓨鍦�
+        QueryWrapper<ClassifyPo> wrapper = new QueryWrapper<>();
+        wrapper.eq("parent_id",classifyCmd.getParentId())
+                .eq("name",classifyCmd.getName());
+        List<ClassifyPo> classifyPos = classifyMapper.selectList(wrapper);
+        if (ObjectUtils.isEmpty(classifyPos)){
+            throw ExceptionUtil.getException(null, "璇ュ垎绫诲悕绉板凡瀛樺湪");
+        }
+        //鏍规嵁id鎵ц鏂板鎴栬€呯紪杈�
+        if (ObjectUtils.isNotEmpty(classifyCmd.getId())){
+            //缂栬緫
+            classifyMapper.updateById(classifyPo);
+        }else {
+            //鏂板
+            classifyMapper.insert(classifyPo);
+        }
+        return 1;
+    }
+
+    @Override
+    public Integer removeClassifyById(IdRequest idRequest) {
+        //鏍规嵁id鏌ヨ鍒嗙被淇℃伅
+        ClassifyPo classifyPo = classifyMapper.selectById(idRequest);
+        //鑻ヤ笉瀛樺湪 鍒欐姏鍑哄紓甯�
+        if (ObjectUtils.isEmpty(classifyPo)){
+            throw ExceptionUtil.getException(null, "璇ュ垎绫讳笉瀛樺湪");
+        }
+        //鏍规嵁鍒嗙被id 鏌ヨ鏁版嵁搴撲腑璇ュ垎绫� 鏄惁瀛樺湪瀛愮骇鍒嗙被
+        List<ClassifyPo> children = classifyMapper.selectList(new QueryWrapper<ClassifyPo>().eq("parent_id", idRequest.getId()));
+        if (ObjectUtils.isNotEmpty(children)){
+            throw ExceptionUtil.getException(null, "璇ュ垎绫讳笅瀛樺湪瀛愮骇鍒嗙被锛屼笉鍙垹闄�");
+        }
+        //鏍规嵁鍒嗙被id 鏌ヨ鏁版嵁搴撲腑 璇ュ垎绫绘槸鍚﹀瓨鍦ㄥ叧鑱斿埗搴�
+        List<InstitutionPo> institutionPoList = institutionMapper.selectList(new QueryWrapper<InstitutionPo>().eq("classify_id", idRequest.getId()));
+        if (ObjectUtils.isNotEmpty(institutionPoList)){
+            throw ExceptionUtil.getException(null, "璇ュ垎绫诲凡鍏宠仈鍒跺害锛屼笉鍙垹闄�");
+        }
+        //鏍规嵁鍒嗙被id,鍒犻櫎鏁版嵁搴撲腑璇ュ垎绫�
+        classifyMapper.deleteById(idRequest.getId());
+        return 1;
+    }
+
+    @Override
+    public List<ClassifyTreeOut> getClassifyTree() {
+        List<ClassifyTreeOut> treeList = new ArrayList<>();
+        QueryWrapper<ClassifyPo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("parent_id", 0);
+        List<ClassifyPo> organizationList = classifyMapper.selectList(queryWrapper);
+        for (ClassifyPo root : organizationList) {
+            ClassifyTreeOut rootNode = ClassifyConvert.poToTreeOut(root);
+            //閫掑綊鏋勫缓鏍�
+            this.buildTree(rootNode);
+            treeList.add(rootNode);
+        }
+        return treeList;
+    }
+
+    private void buildTree(ClassifyTreeOut treeNode) {
+        QueryWrapper<ClassifyPo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("parent_id", treeNode.getId());
+        List<ClassifyPo> children = classifyMapper.selectList(queryWrapper);
+        List<ClassifyTreeOut> classifyQueryTreeOutList = ClassifyConvert.listPOToListTreeOut(children);
+        treeNode.setChildren(classifyQueryTreeOutList);
+        for (ClassifyTreeOut child : treeNode.getChildren()) {
+            this.buildTree(child);
+        }
+    }
+}
diff --git a/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/service/SearchLogServiceImpl.java b/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/service/SearchLogServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..a41d39d442e11ed6f2e8a6da98fbeee70942f443
--- /dev/null
+++ b/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/service/SearchLogServiceImpl.java
@@ -0,0 +1,56 @@
+package com.seasky.educationinstitutionallibrary.business.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.seasky.core.base.AbstractService;
+import com.seasky.educationinstitutionallibrary.business.api.SearchLogService;
+import com.seasky.educationinstitutionallibrary.business.dao.mapper.SearchLogMapper;
+import com.seasky.educationinstitutionallibrary.business.entity.SearchLogPo;
+import com.seasky.educationinstitutionallibrary.business.service.convert.SearchLogConvert;
+import com.seasky.educationinstitutionallibrary.web.dto.request.searchLog.SearchCmd;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @program:
+ * @author: kejinlong
+ * @create: 2022-06-23 09:38
+ **/
+@Service
+public class SearchLogServiceImpl extends AbstractService<SearchLogPo, SearchLogMapper> implements SearchLogService {
+    @Autowired
+    private SearchLogMapper searchLogMapper;
+
+    @Override
+    public Integer addSearchLog(SearchCmd searchCmd) {
+        //鎼滅储鍐呭 涓嶄负绌�  鏍¢獙鏄惁瀛樺湪
+        SearchLogPo content = searchLogMapper.selectOne(new QueryWrapper<SearchLogPo>().eq("content", searchCmd.getContent()));
+        if (ObjectUtils.isEmpty(content)){
+            //涓嶅瓨鍦ㄨ鍐呭 娣诲姞璇ュ唴瀹�
+            SearchLogPo searchLogPo = SearchLogConvert.cmdToPo(searchCmd);
+            searchLogPo.setCount(1);
+            searchLogMapper.insert(searchLogPo);
+        }else {
+            //宸插瓨鍦ㄨ鍐呭 淇敼count+1
+            content.setCount(content.getCount()+1);
+            searchLogMapper.updateById(content);
+        }
+        return 1;
+    }
+
+    @Override
+    public List<String> getSearchLogList() {
+        //鍒涘缓鏌ヨ鏉′欢  鎸夋悳绱㈡鏁板€掑簭鏌ユ壘
+        QueryWrapper<SearchLogPo> wrapper = new QueryWrapper<>();
+        wrapper.orderByDesc("count");
+        Page page = new Page<>(1,5);
+        Page searchLogPos = searchLogMapper.selectPage(page, wrapper);
+        List<SearchLogPo> mostSearchedPos = searchLogPos.getRecords();
+        List<String> mostSearchedLog = mostSearchedPos.stream().map(SearchLogPo::getContent).collect(Collectors.toList());
+        return mostSearchedLog;
+    }
+}
diff --git a/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/service/convert/ClassifyConvert.java b/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/service/convert/ClassifyConvert.java
new file mode 100644
index 0000000000000000000000000000000000000000..f702cd1bb5ac2920d56cdcc0adb5755d575d3aa2
--- /dev/null
+++ b/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/service/convert/ClassifyConvert.java
@@ -0,0 +1,37 @@
+package com.seasky.educationinstitutionallibrary.business.service.convert;
+
+import com.seasky.core.ddd.utils.MapperUtils;
+import com.seasky.educationinstitutionallibrary.business.entity.ClassifyPo;
+import com.seasky.educationinstitutionallibrary.web.dto.request.classify.ClassifyCmd;
+import com.seasky.educationinstitutionallibrary.web.dto.result.classify.ClassifyTreeOut;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @program:
+ * @author: kejinlong
+ * @create: 2022-06-22 11:01
+ **/
+public class ClassifyConvert {
+    public static ClassifyPo cmdToPo(ClassifyCmd cmd){
+        //杞崲瀵瑰簲閿€糾ap
+        Map<String, String> map = new HashMap<>(3);
+        ClassifyPo classifyPo = MapperUtils.INSTANCE.map(ClassifyPo.class, cmd);
+        return classifyPo;
+    }
+
+    public static List<ClassifyTreeOut> listPOToListTreeOut(List<ClassifyPo> children) {
+        //杞崲瀵瑰簲閿€糾ap
+        Map<String, String> map = new HashMap<>(3);
+        List<ClassifyTreeOut> treeOuts = MapperUtils.INSTANCE.mapAsList(ClassifyTreeOut.class,children);
+        return treeOuts;
+    }
+
+    public static ClassifyTreeOut poToTreeOut(ClassifyPo root) {
+        Map<String, String> map = new HashMap<>(3);
+        ClassifyTreeOut treeOuts = MapperUtils.INSTANCE.map(ClassifyTreeOut.class,root);
+        return treeOuts;
+    }
+}
diff --git a/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/service/convert/SearchLogConvert.java b/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/service/convert/SearchLogConvert.java
new file mode 100644
index 0000000000000000000000000000000000000000..a390d453be568e87b365109cf432f1046c9fdbb3
--- /dev/null
+++ b/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/business/service/convert/SearchLogConvert.java
@@ -0,0 +1,22 @@
+package com.seasky.educationinstitutionallibrary.business.service.convert;
+
+import com.seasky.core.ddd.utils.MapperUtils;
+import com.seasky.educationinstitutionallibrary.business.entity.SearchLogPo;
+import com.seasky.educationinstitutionallibrary.web.dto.request.searchLog.SearchCmd;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @program:
+ * @author: kejinlong
+ * @create: 2022-06-23 09:51
+ **/
+public class SearchLogConvert {
+    public static SearchLogPo cmdToPo(SearchCmd cmd){
+        //杞崲瀵瑰簲閿€糾ap
+        Map<String, String> map = new HashMap<>(3);
+        SearchLogPo searchLogPo = MapperUtils.INSTANCE.map(SearchLogPo.class, cmd);
+        return searchLogPo;
+    }
+}
diff --git a/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/web/controller/ClassifyController.java b/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/web/controller/ClassifyController.java
new file mode 100644
index 0000000000000000000000000000000000000000..d63083975f51b280d470ce4cdab350e8634f4f30
--- /dev/null
+++ b/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/web/controller/ClassifyController.java
@@ -0,0 +1,39 @@
+package com.seasky.educationinstitutionallibrary.web.controller;
+
+import com.seasky.core.common.ResponseCode;
+import com.seasky.core.common.Result;
+import com.seasky.educationinstitutionallibrary.business.api.ClassifyService;
+import com.seasky.educationinstitutionallibrary.web.api.IClassifyController;
+import com.seasky.educationinstitutionallibrary.web.dto.request.IdRequest;
+import com.seasky.educationinstitutionallibrary.web.dto.request.classify.ClassifyCmd;
+import com.seasky.educationinstitutionallibrary.web.dto.result.classify.ClassifyTreeOut;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RestController;
+
+import static com.seasky.core.common.Response.ok;
+
+/**
+ * @author: kejinlong
+ * @create: 2022-06-22 10:33
+ **/
+@RestController
+public class ClassifyController implements IClassifyController {
+
+    @Autowired
+    private ClassifyService classifyService;
+
+    @Override
+    public Result<Integer> saveClassify(ClassifyCmd classifyCmd) {
+        return ok(ResponseCode.SUCCESS, classifyService.saveClassify(classifyCmd));
+    }
+
+    @Override
+    public Result<Integer> removeClassifyById(IdRequest idRequest) {
+        return ok(ResponseCode.SUCCESS, classifyService.removeClassifyById(idRequest));
+    }
+
+    @Override
+    public Result<ClassifyTreeOut> getClassifyTree() {
+        return ok(ResponseCode.SUCCESS, classifyService.getClassifyTree());
+    }
+}
diff --git a/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/web/controller/SearchLogController.java b/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/web/controller/SearchLogController.java
new file mode 100644
index 0000000000000000000000000000000000000000..f2d55f10ab91f3d245ea2791f2976cb085fb7e5d
--- /dev/null
+++ b/ServiceSite/src/main/java/com/seasky/educationinstitutionallibrary/web/controller/SearchLogController.java
@@ -0,0 +1,32 @@
+package com.seasky.educationinstitutionallibrary.web.controller;
+
+import com.seasky.core.common.ResponseCode;
+import com.seasky.core.common.Result;
+import com.seasky.educationinstitutionallibrary.business.api.SearchLogService;
+import com.seasky.educationinstitutionallibrary.web.api.ISearchLogController;
+import com.seasky.educationinstitutionallibrary.web.dto.request.searchLog.SearchCmd;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RestController;
+
+import static com.seasky.core.common.Response.ok;
+
+/**
+ * @program:
+ * @author: kejinlong
+ * @create: 2022-06-23 09:37
+ **/
+@RestController
+public class SearchLogController implements ISearchLogController {
+    @Autowired
+    private SearchLogService searchLogService;
+
+    @Override
+    public Result<Integer> addSearchLog(SearchCmd searchCmd) {
+        return ok(ResponseCode.SUCCESS, searchLogService.addSearchLog(searchCmd));
+    }
+
+    @Override
+    public Result<String> getSearchLogList() {
+        return ok(ResponseCode.SUCCESS, searchLogService.getSearchLogList());
+    }
+}