From 0bf9cb3853e43aed924afac6a760c53ca08c8c71 Mon Sep 17 00:00:00 2001
From: ali <ali9696@163.com>
Date: 星期一, 13 一月 2025 18:10:24 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/develop1.0' into develop_alioo

---
 zhitan-common/src/main/java/com/zhitan/common/constant/MessageConstant.java                     |    9 
 readme/img/5-1-区域能耗分析-浅色.png                                                                    |    0 
 zhitan-system/src/main/java/com/zhitan/knowledgeBase/service/IKnowledgeBaseService.java         |   44 +++
 zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/dto/KnowledgeBaseAddDTO.java        |   44 +++
 zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/entity/KnowledgeBaseFile.java       |   29 ++
 readme/img/2-1-首页-浅色.png                                                                        |    0 
 zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/vo/KnowledgeBaseDetailVO.java       |   46 +++
 zhitan-system/src/main/resources/mapper/knowledgeBase/KnowledgeBaseFileMapper.xml               |    6 
 zhitan-system/src/main/resources/mapper/knowledgeBase/KnowledgeBaseMapper.xml                   |   18 +
 zhitan-system/src/main/java/com/zhitan/knowledgeBase/service/impl/KnowledgeBaseServiceImpl.java |  157 +++++++++++
 readme/img/1-登录页.png                                                                            |    0 
 zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/dto/KnowledgeBaseEditDTO.java       |   22 +
 zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/entity/KnowledgeBase.java           |   38 ++
 zhitan-admin/src/main/java/com/zhitan/web/controller/knowledgeBase/KnowledgeBaseController.java |   86 ++++++
 zhitan-system/src/main/resources/mapper/system/SysMenuMapper.xml                                |    2 
 zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/dto/KnowledgeBasePageDTO.java       |   38 ++
 zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/vo/KnowledgeBasePageVO.java         |   35 ++
 readme/img/2-2-首页-深色.png                                                                        |    0 
 readme/img/4-2-峰平谷时段统计-深色.png                                                                   |    0 
 README.md                                                                                       |   75 ++++-
 /dev/null                                                                                       |   86 ------
 zhitan-system/src/main/java/com/zhitan/knowledgeBase/mapper/KnowledgeBaseFileMapper.java        |   17 +
 readme/img/3-1-能源实时监测-浅色.png                                                                    |    0 
 zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/enums/EnergyTypeEnum.java           |   48 +++
 readme/img/3-2-能源实时监测-深色.png                                                                    |    0 
 readme/img/4-1-峰平谷时段统计-浅色.png                                                                   |    0 
 readme/img/5-2-区域能耗分析-深色.png                                                                    |    0 
 zhitan-system/src/main/java/com/zhitan/knowledgeBase/mapper/KnowledgeBaseMapper.java            |   17 +
 zhitan-system/target/classes/mapper/system/SysMenuMapper.xml                                    |    2 
 29 files changed, 713 insertions(+), 106 deletions(-)

diff --git a/README.md b/README.md
index fb7083c..0b2fdd8 100644
--- a/README.md
+++ b/README.md
@@ -1,29 +1,38 @@
 <h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">浼佷笟鑳芥簮绠$悊骞冲彴</h1>
 <h4 align="center">鍩轰簬SpringBoot鍜岃嫢渚濇鏋跺紑鍙�</h4>
+<p align="center">
+    <a href='https://gitee.com/ustcyc/zhitan-ems/stargazers'><img src='https://gitee.com/ustcyc/zhitan-ems/badge/star.svg?theme=dark' alt='star'></img></a>
+	<a href="https://gitee.com/y_project/RuoYi/blob/master/LICENSE"><img src="https://img.shields.io/github/license/mashape/apistatus.svg"></a>
+</p>
 
-
-#### 浠嬬粛
+## 浠嬬粛
 閫氳繃鐗╄仈缃戞妧鏈紝閲囬泦浼佷笟姘淬�佺數銆佹皵銆佺儹绛夎兘鑰楁暟鎹紝甯紒涓氬缓绔嬭兘婧愮鐞嗕綋绯伙紝鎵惧埌璺戝啋婊存紡锛屼粠鑰屼负浼佷笟鑺傝兘鎻愪緵渚濇嵁銆�
 杩涗竴姝ヤ负浼佷笟瀹炵幇纰宠窡韪�佺⒊鐩樻煡銆佺⒊浜ゆ槗銆佽皥姹囨姤鐨勫叏鐢熷懡杩囩▼銆� 涓轰腑鍥界⒊杈惧嘲-纰充腑鍜屽仛鍑鸿础鐚��
 閽堝瀹㈡埛鍦烘櫙锛氭斂搴溿�佸洯鍖恒�佷紒涓氥�佸伐鐭裤�佸叕鍏卞缓绛戠瓑銆�
 
-妗嗘灦锛氬熀浜嶴pringBoot鐨勮嫢渚濇鏋� 鏄撹鏄撴噦銆佺晫闈㈢畝娲佺編瑙傘��
-鍏崇郴鏁版嵁搴擄細influxdb 2.X
-鏃跺簭鏁版嵁搴擄細mysql 鎴栬�� postgredb
-涓棿浠讹細redis锛宮q
+宸插悓姝ユ洿鏂板埌github浠撳簱锛歨ttps://github.com/Andy-Yin/zhitan-ems
 
-#### 鏁版嵁椹卞姩鐨勮绠楁ā鍨嬪拰涓氬姟妯″瀷閰嶇疆
-鏀寔鍔ㄦ�佺偣浣嶉厤缃�佹暟鎹ā鍨嬨�佷笟鍔℃ā鍨嬬瓑銆�
+## 妗嗘灦锛�
 
-#### 浠g爜缁撴瀯锛堝緟瀹屾垚锛�   
+鍩轰簬SpringBoot鐨勮嫢渚濇鏋� 鏄撹鏄撴噦銆佺晫闈㈢畝娲佺編瑙傘��   
+鍏崇郴鏁版嵁搴擄細mysql 鎴栬�� postgredb   
+鏃跺簭鏁版嵁搴擄細influxdb 2.7+  
+涓棿浠讹細redis锛宮q  
+VUE鐗堟湰锛歏UE 3
 
-#### 涓氬姟鏋舵瀯
-![杈撳叆鍥剧墖璇存槑](readme/涓氬姟鏋舵瀯.png)
-#### 鎶�鏈灦鏋勩�愭湭鏉ヨ鍒掋��
-![杈撳叆鍥剧墖璇存槑](readme/鎶�鏈灦鏋�.png)
-#### 浜偣鍔熻兘
+## 鏁版嵁椹卞姩鐨勮绠楁ā鍨嬪拰涓氬姟妯″瀷閰嶇疆
+鏀寔鍔ㄦ�佺偣浣嶉厤缃�佹暟鎹ā鍨嬨�佷笟鍔℃ā鍨嬬瓑銆� 
+
+## 鍦ㄧ嚎浣撻獙
+
+- guestUser/guestUser  
+
+婕旂ず鍦板潃锛歨ttps://demo-ems.zhitancloud.com/  
+
+## 浜偣鍔熻兘
 ![杈撳叆鍥剧墖璇存槑](readme/浜偣鍔熻兘.png)
-#### 鍔熻兘瑙勫垝
+
+## 鍔熻兘鍒楄〃
 1.  棣栭〉鐪嬫澘
 2.  瀹炴椂鏁版嵁鐩戞祴  
     2.1.  瀹炴椂鏁版嵁鏌ョ湅  
@@ -62,11 +71,41 @@
 19. 鍩虹鏁版嵁绠$悊锛堝瓧鍏搞�佽兘婧愮被鍨嬬瓑锛�
 20. 绯荤粺绠$悊锛堢敤鎴枫�佽鑹层�佹潈闄愮瓑锛�
 
-#### UI灞曠ず锛堝緟瀹屽杽锛�
+## UI灞曠ず锛堝钩鍙板垎娣辫壊鍜屾祬鑹蹭袱绉嶉鏍煎垏鎹級
 
-#### 婕旂ず璐﹀彿锛堝緟瀹屽杽锛�
+    鐧诲綍椤甸潰
+![杈撳叆鍥剧墖璇存槑](readme/img/1-鐧诲綍椤�.png)
 
-#### 鍙備笌璐$尞
+    棣栭〉-娴呰壊 
+![杈撳叆鍥剧墖璇存槑](readme/img/2-1-棣栭〉-娴呰壊.png)
+
+    棣栭〉-娣辫壊 
+![杈撳叆鍥剧墖璇存槑](readme/img/2-2-棣栭〉-娣辫壊.png)
+
+    瀹炴椂鐩戞祴-娴呰壊 
+![杈撳叆鍥剧墖璇存槑](readme/img/3-1-鑳芥簮瀹炴椂鐩戞祴-娴呰壊.png)
+
+    瀹炴椂鐩戞祴-娣辫壊 
+![杈撳叆鍥剧墖璇存槑](readme/img/3-2-鑳芥簮瀹炴椂鐩戞祴-娣辫壊.png)
+
+    灏栧嘲骞宠胺-娴呰壊 
+![杈撳叆鍥剧墖璇存槑](readme/img/4-1-宄板钩璋锋椂娈电粺璁�-娴呰壊.png)
+
+    灏栧嘲骞宠胺-娣辫壊 
+![杈撳叆鍥剧墖璇存槑](readme/img/4-2-宄板钩璋锋椂娈电粺璁�-娣辫壊.png)
+
+    鍖哄煙鑳借��-娴呰壊 
+![杈撳叆鍥剧墖璇存槑](readme/img/5-1-鍖哄煙鑳借�楀垎鏋�-娴呰壊.png)
+
+    鍖哄煙鑳借��-娣辫壊 
+![杈撳叆鍥剧墖璇存槑](readme/img/5-2-鍖哄煙鑳借�楀垎鏋�-娣辫壊.png)
+
+## 涓氬姟鏋舵瀯
+![杈撳叆鍥剧墖璇存槑](readme/涓氬姟鏋舵瀯.png)
+## 鎶�鏈灦鏋�
+![杈撳叆鍥剧墖璇存槑](readme/鎶�鏈灦鏋�.png)
+
+## 鍙備笌璐$尞
 
 1.  Fork 鏈粨搴�
 2.  鏂板缓 Feat_xxx 鍒嗘敮
diff --git "a/readme/img/1-\347\231\273\345\275\225\351\241\265.png" "b/readme/img/1-\347\231\273\345\275\225\351\241\265.png"
new file mode 100644
index 0000000..40e9eba
--- /dev/null
+++ "b/readme/img/1-\347\231\273\345\275\225\351\241\265.png"
Binary files differ
diff --git "a/readme/img/2-1-\351\246\226\351\241\265-\346\265\205\350\211\262.png" "b/readme/img/2-1-\351\246\226\351\241\265-\346\265\205\350\211\262.png"
new file mode 100644
index 0000000..fb500c9
--- /dev/null
+++ "b/readme/img/2-1-\351\246\226\351\241\265-\346\265\205\350\211\262.png"
Binary files differ
diff --git "a/readme/img/2-2-\351\246\226\351\241\265-\346\267\261\350\211\262.png" "b/readme/img/2-2-\351\246\226\351\241\265-\346\267\261\350\211\262.png"
new file mode 100644
index 0000000..612750b
--- /dev/null
+++ "b/readme/img/2-2-\351\246\226\351\241\265-\346\267\261\350\211\262.png"
Binary files differ
diff --git "a/readme/img/3-1-\350\203\275\346\272\220\345\256\236\346\227\266\347\233\221\346\265\213-\346\265\205\350\211\262.png" "b/readme/img/3-1-\350\203\275\346\272\220\345\256\236\346\227\266\347\233\221\346\265\213-\346\265\205\350\211\262.png"
new file mode 100644
index 0000000..b66ed6e
--- /dev/null
+++ "b/readme/img/3-1-\350\203\275\346\272\220\345\256\236\346\227\266\347\233\221\346\265\213-\346\265\205\350\211\262.png"
Binary files differ
diff --git "a/readme/img/3-2-\350\203\275\346\272\220\345\256\236\346\227\266\347\233\221\346\265\213-\346\267\261\350\211\262.png" "b/readme/img/3-2-\350\203\275\346\272\220\345\256\236\346\227\266\347\233\221\346\265\213-\346\267\261\350\211\262.png"
new file mode 100644
index 0000000..0c89313
--- /dev/null
+++ "b/readme/img/3-2-\350\203\275\346\272\220\345\256\236\346\227\266\347\233\221\346\265\213-\346\267\261\350\211\262.png"
Binary files differ
diff --git "a/readme/img/4-1-\345\263\260\345\271\263\350\260\267\346\227\266\346\256\265\347\273\237\350\256\241-\346\265\205\350\211\262.png" "b/readme/img/4-1-\345\263\260\345\271\263\350\260\267\346\227\266\346\256\265\347\273\237\350\256\241-\346\265\205\350\211\262.png"
new file mode 100644
index 0000000..2dee897
--- /dev/null
+++ "b/readme/img/4-1-\345\263\260\345\271\263\350\260\267\346\227\266\346\256\265\347\273\237\350\256\241-\346\265\205\350\211\262.png"
Binary files differ
diff --git "a/readme/img/4-2-\345\263\260\345\271\263\350\260\267\346\227\266\346\256\265\347\273\237\350\256\241-\346\267\261\350\211\262.png" "b/readme/img/4-2-\345\263\260\345\271\263\350\260\267\346\227\266\346\256\265\347\273\237\350\256\241-\346\267\261\350\211\262.png"
new file mode 100644
index 0000000..5c78664
--- /dev/null
+++ "b/readme/img/4-2-\345\263\260\345\271\263\350\260\267\346\227\266\346\256\265\347\273\237\350\256\241-\346\267\261\350\211\262.png"
Binary files differ
diff --git "a/readme/img/5-1-\345\214\272\345\237\237\350\203\275\350\200\227\345\210\206\346\236\220-\346\265\205\350\211\262.png" "b/readme/img/5-1-\345\214\272\345\237\237\350\203\275\350\200\227\345\210\206\346\236\220-\346\265\205\350\211\262.png"
new file mode 100644
index 0000000..8ad5c2b
--- /dev/null
+++ "b/readme/img/5-1-\345\214\272\345\237\237\350\203\275\350\200\227\345\210\206\346\236\220-\346\265\205\350\211\262.png"
Binary files differ
diff --git "a/readme/img/5-2-\345\214\272\345\237\237\350\203\275\350\200\227\345\210\206\346\236\220-\346\267\261\350\211\262.png" "b/readme/img/5-2-\345\214\272\345\237\237\350\203\275\350\200\227\345\210\206\346\236\220-\346\267\261\350\211\262.png"
new file mode 100644
index 0000000..f86b1cc
--- /dev/null
+++ "b/readme/img/5-2-\345\214\272\345\237\237\350\203\275\350\200\227\345\210\206\346\236\220-\346\267\261\350\211\262.png"
Binary files differ
diff --git a/start.bat b/start.bat
deleted file mode 100644
index c61dac9..0000000
--- a/start.bat
+++ /dev/null
@@ -1,67 +0,0 @@
-@echo off
-
-rem jar平锟斤拷目录
-set AppName=admin-admin.jar
-
-rem JVM锟斤拷锟斤拷
-set JVM_OPTS="-Dname=%AppName%  -Duser.timezone=Asia/Shanghai -Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps  -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC"
-
-
-ECHO.
-	ECHO.  [1] 锟斤拷锟斤拷%AppName%
-	ECHO.  [2] 锟截憋拷%AppName%
-	ECHO.  [3] 锟斤拷锟斤拷%AppName%
-	ECHO.  [4] 锟斤拷锟斤拷状态 %AppName%
-	ECHO.  [5] 锟斤拷 锟斤拷
-ECHO.
-
-ECHO.锟斤拷锟斤拷锟斤拷选锟斤拷锟斤拷目锟斤拷锟斤拷锟�:
-set /p ID=
-	IF "%id%"=="1" GOTO start
-	IF "%id%"=="2" GOTO stop
-	IF "%id%"=="3" GOTO restart
-	IF "%id%"=="4" GOTO status
-	IF "%id%"=="5" EXIT
-PAUSE
-:start
-    for /f "usebackq tokens=1-2" %%a in (`jps -l ^| findstr %AppName%`) do (
-		set pid=%%a
-		set image_name=%%b
-	)
-	if  defined pid (
-		echo %%is running
-		PAUSE
-	)
-
-start javaw %JVM_OPTS% -jar %AppName%
-
-echo  starting锟斤拷锟斤拷
-echo  Start %AppName% success...
-goto:eof
-
-rem 锟斤拷锟斤拷stop通锟斤拷jps锟斤拷锟斤拷锟斤拷锟絧id锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷
-:stop
-	for /f "usebackq tokens=1-2" %%a in (`jps -l ^| findstr %AppName%`) do (
-		set pid=%%a
-		set image_name=%%b
-	)
-	if not defined pid (echo process %AppName% does not exists) else (
-		echo prepare to kill %image_name%
-		echo start kill %pid% ...
-		rem 锟斤拷锟捷斤拷锟斤拷ID锟斤拷kill锟斤拷锟斤拷
-		taskkill /f /pid %pid%
-	)
-goto:eof
-:restart
-	call :stop
-    call :start
-goto:eof
-:status
-	for /f "usebackq tokens=1-2" %%a in (`jps -l ^| findstr %AppName%`) do (
-		set pid=%%a
-		set image_name=%%b
-	)
-	if not defined pid (echo process %AppName% is dead ) else (
-		echo %image_name% is running
-	)
-goto:eof
diff --git a/start.sh b/start.sh
deleted file mode 100644
index 6d524ff..0000000
--- a/start.sh
+++ /dev/null
@@ -1,86 +0,0 @@
-#!/bin/sh
-# ./start.sh start 鍚姩 stop 鍋滄 restart 閲嶅惎 status 鐘舵��
-AppName=admin-admin.jar
-
-# JVM鍙傛暟
-JVM_OPTS="-Dname=$AppName  -Duser.timezone=Asia/Shanghai -Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps  -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC"
-APP_HOME=`pwd`
-LOG_PATH=$APP_HOME/logs/$AppName.log
-
-if [ "$1" = "" ];
-then
-    echo -e "\033[0;31m 鏈緭鍏ユ搷浣滃悕 \033[0m  \033[0;34m {start|stop|restart|status} \033[0m"
-    exit 1
-fi
-
-if [ "$AppName" = "" ];
-then
-    echo -e "\033[0;31m 鏈緭鍏ュ簲鐢ㄥ悕 \033[0m"
-    exit 1
-fi
-
-function start()
-{
-    PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`
-
-	if [ x"$PID" != x"" ]; then
-	    echo "$AppName is running..."
-	else
-		nohup java $JVM_OPTS -jar $AppName > /dev/null 2>&1 &
-		echo "Start $AppName success..."
-	fi
-}
-
-function stop()
-{
-    echo "Stop $AppName"
-
-	PID=""
-	query(){
-		PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`
-	}
-
-	query
-	if [ x"$PID" != x"" ]; then
-		kill -TERM $PID
-		echo "$AppName (pid:$PID) exiting..."
-		while [ x"$PID" != x"" ]
-		do
-			sleep 1
-			query
-		done
-		echo "$AppName exited."
-	else
-		echo "$AppName already stopped."
-	fi
-}
-
-function restart()
-{
-    stop
-    sleep 2
-    start
-}
-
-function status()
-{
-    PID=`ps -ef |grep java|grep $AppName|grep -v grep|wc -l`
-    if [ $PID != 0 ];then
-        echo "$AppName is running..."
-    else
-        echo "$AppName is not running..."
-    fi
-}
-
-case $1 in
-    start)
-    start;;
-    stop)
-    stop;;
-    restart)
-    restart;;
-    status)
-    status;;
-    *)
-
-esac
diff --git a/zhitan-admin/src/main/java/com/zhitan/web/controller/knowledgeBase/KnowledgeBaseController.java b/zhitan-admin/src/main/java/com/zhitan/web/controller/knowledgeBase/KnowledgeBaseController.java
new file mode 100644
index 0000000..2b71db9
--- /dev/null
+++ b/zhitan-admin/src/main/java/com/zhitan/web/controller/knowledgeBase/KnowledgeBaseController.java
@@ -0,0 +1,86 @@
+package com.zhitan.web.controller.knowledgeBase;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zhitan.common.core.controller.BaseController;
+import com.zhitan.common.core.domain.AjaxResult;
+import com.zhitan.common.core.page.TableDataInfo;
+import com.zhitan.knowledgeBase.domain.dto.KnowledgeBaseAddDTO;
+import com.zhitan.knowledgeBase.domain.dto.KnowledgeBaseEditDTO;
+import com.zhitan.knowledgeBase.domain.dto.KnowledgeBasePageDTO;
+import com.zhitan.knowledgeBase.domain.vo.KnowledgeBaseDetailVO;
+import com.zhitan.knowledgeBase.domain.vo.KnowledgeBasePageVO;
+import com.zhitan.knowledgeBase.service.IKnowledgeBaseService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+/**
+ * 鐭ヨ瘑搴�(KnowledgeBase)琛ㄦ帶鍒跺眰
+ *
+ * @author makejava
+ * @since 2025-01-10 15:05:26
+ */
+@RestController
+@Api(tags = "鐭ヨ瘑搴撶鐞�")
+@RequestMapping("/knowledgeBase")
+public class KnowledgeBaseController extends BaseController {
+    /**
+     * 鏈嶅姟瀵硅薄
+     */
+    @Resource
+    private IKnowledgeBaseService IKnowledgeBaseService;
+
+    /**
+     * 鐭ヨ瘑搴�-鍒楄〃鏌ヨ
+     */
+    @GetMapping("/page")
+    @ApiOperation(value = "鐭ヨ瘑搴�-鍒楄〃鏌ヨ")
+    public TableDataInfo page(KnowledgeBasePageDTO pageDTO) {
+        Page<KnowledgeBasePageVO> responsePage = IKnowledgeBaseService.getPageList(pageDTO);
+        return getDataTable(responsePage);
+    }
+
+    /**
+     * 鐭ヨ瘑搴�-鏌ヨ璇︽儏
+     */
+    @GetMapping("/detail")
+    @ApiOperation(value = "鐭ヨ瘑搴�-鏌ヨ璇︽儏")
+    public AjaxResult page(@RequestParam("id") Long id) {
+        KnowledgeBaseDetailVO responsePage = IKnowledgeBaseService.getDetail(id);
+        return success(responsePage);
+    }
+
+    /**
+     * 鐭ヨ瘑搴�-鏂板
+     */
+    @PostMapping("/add")
+    @ApiOperation(value = "鐭ヨ瘑搴�-鏂板")
+    public AjaxResult add(@RequestBody @Validated KnowledgeBaseAddDTO addDTO) {
+        IKnowledgeBaseService.add(addDTO);
+        return success();
+    }
+
+    /**
+     * 鐭ヨ瘑搴�-鏇存柊
+     */
+    @PostMapping("/edit")
+    @ApiOperation(value = "鐭ヨ瘑搴�-鏇存柊")
+    public AjaxResult edit(@RequestBody @Validated KnowledgeBaseEditDTO editDTO) {
+        IKnowledgeBaseService.edit(editDTO);
+        return success();
+    }
+
+    /**
+     * 鐭ヨ瘑搴�-鍒犻櫎
+     */
+    @DeleteMapping("/delete/{id}")
+    @ApiOperation(value = "鐭ヨ瘑搴�-鍒犻櫎")
+    public AjaxResult delete(@PathVariable("id") Long id) {
+        IKnowledgeBaseService.delete(id);
+        return success();
+    }
+}
+
diff --git a/zhitan-common/src/main/java/com/zhitan/common/constant/MessageConstant.java b/zhitan-common/src/main/java/com/zhitan/common/constant/MessageConstant.java
new file mode 100644
index 0000000..b45991a
--- /dev/null
+++ b/zhitan-common/src/main/java/com/zhitan/common/constant/MessageConstant.java
@@ -0,0 +1,9 @@
+package com.zhitan.common.constant;
+
+/**
+ * @Author DYL
+ **/
+public class MessageConstant {
+
+    public static final String KNOWLEDGE_BASE_NOT_EXIST = "鐭ヨ瘑搴撲俊鎭笉瀛樺湪";
+}
diff --git a/zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/dto/KnowledgeBaseAddDTO.java b/zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/dto/KnowledgeBaseAddDTO.java
new file mode 100644
index 0000000..d4cedc0
--- /dev/null
+++ b/zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/dto/KnowledgeBaseAddDTO.java
@@ -0,0 +1,44 @@
+package com.zhitan.knowledgeBase.domain.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * @Author DYL
+ **/
+@Data
+@ApiModel(value = "鐭ヨ瘑搴撴柊澧炲弬鏁�")
+public class KnowledgeBaseAddDTO {
+
+    /**
+     * 鏍囬
+     */
+    @ApiModelProperty(value = "鏍囬", required = true)
+    @NotBlank(message = "璇峰~鍐欐爣棰�")
+    private String title;
+
+    /**
+     * 鑳芥簮绫诲瀷
+     */
+    @ApiModelProperty(value = "鑳芥簮绫诲瀷", required = true)
+    @NotNull(message = "璇烽�夋嫨鑳芥簮绫诲瀷")
+    private Integer type;
+
+    /**
+     * 鍐呭
+     */
+    @ApiModelProperty(value = "鍐呭", required = true)
+    @NotBlank(message = "璇峰~鍐欏唴瀹�")
+    private String content;
+
+    /**
+     * 闄勪欢
+     */
+    @ApiModelProperty(value = "闄勪欢")
+    private List<String> url;
+}
diff --git a/zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/dto/KnowledgeBaseEditDTO.java b/zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/dto/KnowledgeBaseEditDTO.java
new file mode 100644
index 0000000..6cbff4f
--- /dev/null
+++ b/zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/dto/KnowledgeBaseEditDTO.java
@@ -0,0 +1,22 @@
+package com.zhitan.knowledgeBase.domain.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Author DYL
+ **/
+@Data
+@ApiModel(value = "鐭ヨ瘑搴撶紪杈戝弬鏁�")
+public class KnowledgeBaseEditDTO extends KnowledgeBaseAddDTO {
+
+    /**
+     * id
+     */
+    @ApiModelProperty(value = "id", required = true)
+    @NotNull(message = "id涓嶈兘涓虹┖")
+    private Long id;
+}
diff --git a/zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/dto/KnowledgeBasePageDTO.java b/zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/dto/KnowledgeBasePageDTO.java
new file mode 100644
index 0000000..2a7576e
--- /dev/null
+++ b/zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/dto/KnowledgeBasePageDTO.java
@@ -0,0 +1,38 @@
+package com.zhitan.knowledgeBase.domain.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @Author DYL
+ **/
+@Data
+@ApiModel(value = "鐭ヨ瘑搴撳垎椤垫煡璇㈠弬鏁�")
+public class KnowledgeBasePageDTO {
+
+
+    /**
+     * 椤电爜
+     */
+    @ApiModelProperty(value = "椤电爜")
+    private Integer pageNum;
+
+    /**
+     * 姣忛〉鏉℃暟
+     */
+    @ApiModelProperty(value = "姣忛〉鏉℃暟")
+    private Integer pageSize;
+
+    /**
+     * 鏍囬
+     */
+    @ApiModelProperty(value = "鏍囬")
+    private String title;
+
+    /**
+     * 鑳芥簮绫诲瀷
+     */
+    @ApiModelProperty(value = "鑳芥簮绫诲瀷")
+    private Integer type;
+}
diff --git a/zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/entity/KnowledgeBase.java b/zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/entity/KnowledgeBase.java
new file mode 100644
index 0000000..5e54b0c
--- /dev/null
+++ b/zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/entity/KnowledgeBase.java
@@ -0,0 +1,38 @@
+package com.zhitan.knowledgeBase.domain.entity;
+
+import com.zhitan.common.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 鐭ヨ瘑搴�(KnowledgeBase)瀹炰綋绫�
+ *
+ * @author makejava
+ * @since 2025-01-10 14:57:10
+ */
+@Data
+public class KnowledgeBase extends BaseEntity implements Serializable {
+    private static final long serialVersionUID = -68391633692977272L;
+    /**
+     * id
+     */
+    private Long id;
+    /**
+     * 鏍囬
+     */
+    private String title;
+    /**
+     * 鑳芥簮绫诲瀷(0:鐢�;1:姘�;2:澶╃劧姘�;3:钂告苯)
+     */
+    private Integer type;
+    /**
+     * 鍐呭
+     */
+    private String content;
+    /**
+     * 鍒犻櫎鏍囧織
+     */
+    private Boolean delFlag;
+}
+
diff --git a/zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/entity/KnowledgeBaseFile.java b/zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/entity/KnowledgeBaseFile.java
new file mode 100644
index 0000000..c5222da
--- /dev/null
+++ b/zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/entity/KnowledgeBaseFile.java
@@ -0,0 +1,29 @@
+package com.zhitan.knowledgeBase.domain.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 鐭ヨ瘑搴撻檮浠惰〃(KnowledgeBaseFile)瀹炰綋绫�
+ *
+ * @author makejava
+ * @since 2025-01-10 14:57:12
+ */
+@Data
+public class KnowledgeBaseFile implements Serializable {
+    private static final long serialVersionUID = 998732434860554353L;
+    /**
+     * id
+     */
+    private Long id;
+    /**
+     * 鐭ヨ瘑搴搃d
+     */
+    private Long knowledgeBaseId;
+    /**
+     * 鏂囦欢鍦板潃
+     */
+    private String url;
+}
+
diff --git a/zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/enums/EnergyTypeEnum.java b/zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/enums/EnergyTypeEnum.java
new file mode 100644
index 0000000..66662d5
--- /dev/null
+++ b/zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/enums/EnergyTypeEnum.java
@@ -0,0 +1,48 @@
+package com.zhitan.knowledgeBase.domain.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @Author DYL
+ **/
+@Getter
+@AllArgsConstructor
+public enum EnergyTypeEnum {
+
+    ELECTRICITY(0,"Electricity", "鐢�"),
+    WATER(1,"Water", "姘�"),
+    GAS(2,"Gas", "澶╃劧姘�"),
+    STEAM(3,"Steam", "钂告苯");
+
+    private final Integer code;
+    private final String name;
+    private final String desc;
+
+    public static EnergyTypeEnum getEnumByCode(Integer code) {
+        for (EnergyTypeEnum e : EnergyTypeEnum.values()) {
+            if (e.code.equals(code)) {
+                return e;
+            }
+        }
+        return null;
+    }
+
+    public static String getNameByCode(Integer code) {
+        for (EnergyTypeEnum e : EnergyTypeEnum.values()) {
+            if (e.code.equals(code)) {
+                return e.name;
+            }
+        }
+        return null;
+    }
+
+    public static String getDescByCode(Integer code) {
+        for (EnergyTypeEnum e : EnergyTypeEnum.values()) {
+            if (e.code.equals(code)) {
+                return e.desc;
+            }
+        }
+        return null;
+    }
+}
diff --git a/zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/vo/KnowledgeBaseDetailVO.java b/zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/vo/KnowledgeBaseDetailVO.java
new file mode 100644
index 0000000..099829e
--- /dev/null
+++ b/zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/vo/KnowledgeBaseDetailVO.java
@@ -0,0 +1,46 @@
+package com.zhitan.knowledgeBase.domain.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author DYL
+ **/
+@Data
+@ApiModel(value = "鐭ヨ瘑搴撹鎯�")
+public class KnowledgeBaseDetailVO {
+
+    /**
+     * id
+     */
+    @ApiModelProperty(value = "id")
+    private Long id;
+    /**
+     * 鏍囬
+     */
+    @ApiModelProperty(value = "鏍囬")
+    private String title;
+    /**
+     * 鑳芥簮绫诲瀷(0:鐢�;1:姘�;2:澶╃劧姘�;3:钂告苯)
+     */
+    @ApiModelProperty(value = "鑳芥簮绫诲瀷(0:鐢�;1:姘�;2:澶╃劧姘�;3:钂告苯)")
+    private Integer type;
+    /**
+     * 鑳芥簮绫诲瀷鎻忚堪
+     */
+    @ApiModelProperty(value = "鑳芥簮绫诲瀷鎻忚堪")
+    private String typeDesc;
+    /**
+     * 鍐呭
+     */
+    @ApiModelProperty(value = "鍐呭")
+    private String content;
+    /**
+     * 闄勪欢
+     */
+    @ApiModelProperty(value = "闄勪欢")
+    private List<String> url;
+}
diff --git a/zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/vo/KnowledgeBasePageVO.java b/zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/vo/KnowledgeBasePageVO.java
new file mode 100644
index 0000000..22b923d
--- /dev/null
+++ b/zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/vo/KnowledgeBasePageVO.java
@@ -0,0 +1,35 @@
+package com.zhitan.knowledgeBase.domain.vo;
+
+import lombok.Data;
+
+/**
+ * @Author DYL
+ **/
+@Data
+public class KnowledgeBasePageVO {
+
+    /**
+     * id
+     */
+    private Long id;
+    /**
+     * 鏍囬
+     */
+    private String title;
+    /**
+     * 鑳芥簮绫诲瀷(0:鐢�;1:姘�;2:澶╃劧姘�;3:钂告苯)
+     */
+    private Integer type;
+    /**
+     * 鑳芥簮绫诲瀷鎻忚堪
+     */
+    private String typeDesc;
+    /**
+     * 鍐呭
+     */
+    private String content;
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    private String createTime;
+}
diff --git a/zhitan-system/src/main/java/com/zhitan/knowledgeBase/mapper/KnowledgeBaseFileMapper.java b/zhitan-system/src/main/java/com/zhitan/knowledgeBase/mapper/KnowledgeBaseFileMapper.java
new file mode 100644
index 0000000..bf43c50
--- /dev/null
+++ b/zhitan-system/src/main/java/com/zhitan/knowledgeBase/mapper/KnowledgeBaseFileMapper.java
@@ -0,0 +1,17 @@
+package com.zhitan.knowledgeBase.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhitan.knowledgeBase.domain.entity.KnowledgeBaseFile;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 鐭ヨ瘑搴撻檮浠惰〃(KnowledgeBaseFile)琛ㄦ暟鎹簱璁块棶灞�
+ *
+ * @author makejava
+ * @since 2025-01-10 14:57:12
+ */
+@Mapper
+public interface KnowledgeBaseFileMapper extends BaseMapper<KnowledgeBaseFile> {
+
+}
+
diff --git a/zhitan-system/src/main/java/com/zhitan/knowledgeBase/mapper/KnowledgeBaseMapper.java b/zhitan-system/src/main/java/com/zhitan/knowledgeBase/mapper/KnowledgeBaseMapper.java
new file mode 100644
index 0000000..6d6fd44
--- /dev/null
+++ b/zhitan-system/src/main/java/com/zhitan/knowledgeBase/mapper/KnowledgeBaseMapper.java
@@ -0,0 +1,17 @@
+package com.zhitan.knowledgeBase.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhitan.knowledgeBase.domain.entity.KnowledgeBase;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 鐭ヨ瘑搴�(KnowledgeBase)琛ㄦ暟鎹簱璁块棶灞�
+ *
+ * @author makejava
+ * @since 2025-01-10 14:57:08
+ */
+@Mapper
+public interface KnowledgeBaseMapper extends BaseMapper<KnowledgeBase> {
+
+}
+
diff --git a/zhitan-system/src/main/java/com/zhitan/knowledgeBase/service/IKnowledgeBaseService.java b/zhitan-system/src/main/java/com/zhitan/knowledgeBase/service/IKnowledgeBaseService.java
new file mode 100644
index 0000000..040f52e
--- /dev/null
+++ b/zhitan-system/src/main/java/com/zhitan/knowledgeBase/service/IKnowledgeBaseService.java
@@ -0,0 +1,44 @@
+package com.zhitan.knowledgeBase.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhitan.knowledgeBase.domain.dto.KnowledgeBaseAddDTO;
+import com.zhitan.knowledgeBase.domain.dto.KnowledgeBaseEditDTO;
+import com.zhitan.knowledgeBase.domain.dto.KnowledgeBasePageDTO;
+import com.zhitan.knowledgeBase.domain.entity.KnowledgeBase;
+import com.zhitan.knowledgeBase.domain.vo.KnowledgeBaseDetailVO;
+import com.zhitan.knowledgeBase.domain.vo.KnowledgeBasePageVO;
+
+/**
+ * 鐭ヨ瘑搴�(KnowledgeBase)琛ㄦ湇鍔℃帴鍙�
+ *
+ * @author makejava
+ * @since 2025-01-10 15:05:27
+ */
+public interface IKnowledgeBaseService extends IService<KnowledgeBase> {
+
+    /**
+     * 鐭ヨ瘑搴�-鍒楄〃鏌ヨ
+     */
+    Page<KnowledgeBasePageVO> getPageList(KnowledgeBasePageDTO pageDTO);
+
+    /**
+     * 鐭ヨ瘑搴�-鏌ヨ璇︽儏
+     */
+    KnowledgeBaseDetailVO getDetail(Long id);
+
+    /**
+     * 鐭ヨ瘑搴�-鏂板
+     */
+    void add(KnowledgeBaseAddDTO addDTO);
+
+    /**
+     * 鐭ヨ瘑搴�-鏇存柊
+     */
+    void edit(KnowledgeBaseEditDTO editDTO);
+
+    /**
+     * 鐭ヨ瘑搴�-鍒犻櫎
+     */
+    void delete(Long id);
+}
diff --git a/zhitan-system/src/main/java/com/zhitan/knowledgeBase/service/impl/KnowledgeBaseServiceImpl.java b/zhitan-system/src/main/java/com/zhitan/knowledgeBase/service/impl/KnowledgeBaseServiceImpl.java
new file mode 100644
index 0000000..44f17b7
--- /dev/null
+++ b/zhitan-system/src/main/java/com/zhitan/knowledgeBase/service/impl/KnowledgeBaseServiceImpl.java
@@ -0,0 +1,157 @@
+package com.zhitan.knowledgeBase.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhitan.common.constant.MessageConstant;
+import com.zhitan.common.exception.ServiceException;
+import com.zhitan.knowledgeBase.domain.dto.KnowledgeBaseAddDTO;
+import com.zhitan.knowledgeBase.domain.dto.KnowledgeBaseEditDTO;
+import com.zhitan.knowledgeBase.domain.dto.KnowledgeBasePageDTO;
+import com.zhitan.knowledgeBase.domain.entity.KnowledgeBase;
+import com.zhitan.knowledgeBase.domain.entity.KnowledgeBaseFile;
+import com.zhitan.knowledgeBase.domain.enums.EnergyTypeEnum;
+import com.zhitan.knowledgeBase.domain.vo.KnowledgeBaseDetailVO;
+import com.zhitan.knowledgeBase.domain.vo.KnowledgeBasePageVO;
+import com.zhitan.knowledgeBase.mapper.KnowledgeBaseFileMapper;
+import com.zhitan.knowledgeBase.mapper.KnowledgeBaseMapper;
+import com.zhitan.knowledgeBase.service.IKnowledgeBaseService;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 鐭ヨ瘑搴�(KnowledgeBase)琛ㄦ湇鍔″疄鐜扮被
+ *
+ * @author makejava
+ * @since 2025-01-10 15:05:28
+ */
+@Service
+public class KnowledgeBaseServiceImpl extends ServiceImpl<KnowledgeBaseMapper, KnowledgeBase> implements IKnowledgeBaseService {
+
+    @Resource
+    private KnowledgeBaseFileMapper fileMapper;
+
+
+    /**
+     * 鐭ヨ瘑搴�-鍒楄〃鏌ヨ
+     */
+    public Page<KnowledgeBasePageVO> getPageList(KnowledgeBasePageDTO pageDTO) {
+        Page<KnowledgeBasePageVO> voPage = new Page<>(pageDTO.getPageNum(), pageDTO.getPageSize());
+
+        // 鍒嗛〉鏌ヨ
+        Page<KnowledgeBase> knowledgeBasePage = baseMapper.selectPage(new Page<>(pageDTO.getPageNum(), pageDTO.getPageSize()),
+                Wrappers.<KnowledgeBase>lambdaQuery()
+                        .like(ObjectUtils.isNotEmpty(pageDTO.getTitle()), KnowledgeBase::getTitle, pageDTO.getTitle())
+                        .eq(ObjectUtils.isNotEmpty(pageDTO.getType()), KnowledgeBase::getType, pageDTO.getType())
+                        .eq(KnowledgeBase::getDelFlag, false).orderByDesc(KnowledgeBase::getCreateTime));
+
+        List<KnowledgeBase> records = knowledgeBasePage.getRecords();
+        if (records.isEmpty()){
+            return voPage;
+        }
+        // 鏁版嵁杞崲
+        voPage.setRecords(records.stream().map(item -> {
+            KnowledgeBasePageVO pageVO = new KnowledgeBasePageVO();
+            BeanUtil.copyProperties(item, pageVO);
+            pageVO.setTypeDesc(EnergyTypeEnum.getDescByCode(item.getType()));
+            return pageVO;
+        }).collect(Collectors.toList()));
+        voPage.setTotal(knowledgeBasePage.getTotal());
+        return voPage;
+    }
+
+    /**
+     * 鐭ヨ瘑搴�-鏌ヨ璇︽儏
+     */
+    public KnowledgeBaseDetailVO getDetail(Long id) {
+        KnowledgeBaseDetailVO vo = new KnowledgeBaseDetailVO();
+
+        // 鏌ヨ鏁版嵁
+        KnowledgeBase knowledgeBase = baseMapper.selectById(id);
+        if (knowledgeBase != null){
+            // 鏁版嵁杞崲
+            BeanUtil.copyProperties(knowledgeBase, vo);
+            vo.setUrl(fileMapper.selectList(Wrappers.<KnowledgeBaseFile>lambdaQuery()
+                    .select(KnowledgeBaseFile::getUrl)
+                    .eq(KnowledgeBaseFile::getKnowledgeBaseId, id))
+                    .stream().map(KnowledgeBaseFile::getUrl).collect(Collectors.toList()));
+        }
+        return vo;
+    }
+
+    /**
+     * 鐭ヨ瘑搴�-鏂板
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void add(KnowledgeBaseAddDTO addDTO) {
+        // 鎻掑叆鏁版嵁
+        KnowledgeBase knowledgeBase = new KnowledgeBase();
+        BeanUtil.copyProperties(addDTO, knowledgeBase);
+        baseMapper.insert(knowledgeBase);
+
+        // 鎻掑叆鏂囦欢
+        if (ObjectUtils.isNotEmpty(addDTO.getUrl())){
+            addDTO.getUrl().forEach(url->{
+                KnowledgeBaseFile file = new KnowledgeBaseFile();
+                file.setKnowledgeBaseId(knowledgeBase.getId());
+                file.setUrl(url);
+                fileMapper.insert(file);
+            });
+        }
+    }
+
+    /**
+     * 鐭ヨ瘑搴�-鏇存柊
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void edit(KnowledgeBaseEditDTO editDTO) {
+        // 鏌ヨ鏁版嵁
+        KnowledgeBase knowledgeBase = baseMapper.selectById(editDTO.getId());
+        if (ObjectUtils.isEmpty(knowledgeBase)){
+            throw new ServiceException(MessageConstant.KNOWLEDGE_BASE_NOT_EXIST);
+        }
+        // 鏇存柊鏁版嵁
+        BeanUtils.copyProperties(editDTO, knowledgeBase);
+        baseMapper.updateById(knowledgeBase);
+
+        // 鍒犻櫎鏂囦欢
+        fileMapper.delete(Wrappers.<KnowledgeBaseFile>lambdaQuery()
+                .eq(KnowledgeBaseFile::getKnowledgeBaseId, knowledgeBase.getId()));
+
+        // 鎻掑叆鏂囦欢
+        if (ObjectUtils.isNotEmpty(editDTO.getUrl())){
+            editDTO.getUrl().forEach(url->{
+                KnowledgeBaseFile file = new KnowledgeBaseFile();
+                file.setKnowledgeBaseId(knowledgeBase.getId());
+                file.setUrl(url);
+                fileMapper.insert(file);
+            });
+        }
+    }
+
+    /**
+     * 鐭ヨ瘑搴�-鍒犻櫎
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void delete(Long id) {
+        // 鏌ヨ鏁版嵁
+        KnowledgeBase knowledgeBase = baseMapper.selectById(id);
+        if (ObjectUtils.isEmpty(knowledgeBase)){
+            throw new ServiceException(MessageConstant.KNOWLEDGE_BASE_NOT_EXIST);
+        }
+        // 鍒犻櫎鏁版嵁
+        knowledgeBase.setDelFlag(true);
+        baseMapper.updateById(knowledgeBase);
+
+        // 鍒犻櫎鏂囦欢
+        fileMapper.delete(Wrappers.<KnowledgeBaseFile>lambdaQuery()
+                .eq(KnowledgeBaseFile::getKnowledgeBaseId, id));
+    }
+}
diff --git a/zhitan-system/src/main/resources/mapper/knowledgeBase/KnowledgeBaseFileMapper.xml b/zhitan-system/src/main/resources/mapper/knowledgeBase/KnowledgeBaseFileMapper.xml
new file mode 100644
index 0000000..3558679
--- /dev/null
+++ b/zhitan-system/src/main/resources/mapper/knowledgeBase/KnowledgeBaseFileMapper.xml
@@ -0,0 +1,6 @@
+<?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.zhitan.knowledgeBase.mapper.KnowledgeBaseFileMapper">
+
+</mapper>
+
diff --git a/zhitan-system/src/main/resources/mapper/knowledgeBase/KnowledgeBaseMapper.xml b/zhitan-system/src/main/resources/mapper/knowledgeBase/KnowledgeBaseMapper.xml
new file mode 100644
index 0000000..803a036
--- /dev/null
+++ b/zhitan-system/src/main/resources/mapper/knowledgeBase/KnowledgeBaseMapper.xml
@@ -0,0 +1,18 @@
+<?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.zhitan.knowledgeBase.mapper.KnowledgeBaseMapper">
+
+    <resultMap type="com.zhitan.knowledgeBase.domain.entity.KnowledgeBase" id="KnowledgeBaseMap">
+        <result property="id" column="id" jdbcType="INTEGER"/>
+        <result property="title" column="title" jdbcType="VARCHAR"/>
+        <result property="type" column="type" jdbcType="INTEGER"/>
+        <result property="content" column="content" jdbcType="VARCHAR"/>
+        <result property="delFlag" column="del_flag" jdbcType="BOOLEAN"/>
+        <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+        <result property="createBy" column="create_by" jdbcType="VARCHAR"/>
+        <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+        <result property="updateBy" column="update_by" jdbcType="VARCHAR"/>
+    </resultMap>
+
+</mapper>
+
diff --git a/zhitan-system/src/main/resources/mapper/system/SysMenuMapper.xml b/zhitan-system/src/main/resources/mapper/system/SysMenuMapper.xml
index 6fb3299..dc49256 100644
--- a/zhitan-system/src/main/resources/mapper/system/SysMenuMapper.xml
+++ b/zhitan-system/src/main/resources/mapper/system/SysMenuMapper.xml
@@ -75,7 +75,7 @@
 	</select>
     
     <select id="selectMenuTreeByUserId" parameterType="Long" resultMap="SysMenuResult">
-		select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.visible, m.status, COALESCE(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time,m.page_parameter
+		select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component,m.query, m.visible, m.status, COALESCE(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time,m.page_parameter
 		from sys_menu m
 			 left join sys_role_menu rm on m.menu_id = rm.menu_id
 			 left join sys_user_role ur on rm.role_id = ur.role_id
diff --git a/zhitan-system/target/classes/mapper/system/SysMenuMapper.xml b/zhitan-system/target/classes/mapper/system/SysMenuMapper.xml
index 6fb3299..dc49256 100644
--- a/zhitan-system/target/classes/mapper/system/SysMenuMapper.xml
+++ b/zhitan-system/target/classes/mapper/system/SysMenuMapper.xml
@@ -75,7 +75,7 @@
 	</select>
     
     <select id="selectMenuTreeByUserId" parameterType="Long" resultMap="SysMenuResult">
-		select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.visible, m.status, COALESCE(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time,m.page_parameter
+		select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component,m.query, m.visible, m.status, COALESCE(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time,m.page_parameter
 		from sys_menu m
 			 left join sys_role_menu rm on m.menu_id = rm.menu_id
 			 left join sys_user_role ur on rm.role_id = ur.role_id

--
Gitblit v1.9.3