From 5ac72fbfc76d24974a620d0b0e17abd09138f43a Mon Sep 17 00:00:00 2001
From: DYL <Dn1332079466>
Date: 星期五, 10 一月 2025 16:21:29 +0800
Subject: [PATCH] 知识库接口开发

---
 zhitan-common/src/main/java/com/zhitan/common/constant/MessageConstant.java                     |    9 
 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 +++
 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 ++
 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/mapper/KnowledgeBaseFileMapper.java        |   17 +
 zhitan-system/src/main/java/com/zhitan/knowledgeBase/service/impl/KnowledgeBaseServiceImpl.java |  157 ++++++++++++++
 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-system/src/main/java/com/zhitan/knowledgeBase/domain/enums/EnergyTypeEnum.java           |   48 ++++
 zhitan-admin/src/main/java/com/zhitan/web/controller/knowledgeBase/KnowledgeBaseController.java |   86 +++++++
 zhitan-system/src/main/java/com/zhitan/knowledgeBase/mapper/KnowledgeBaseMapper.java            |   17 +
 16 files changed, 654 insertions(+), 0 deletions(-)

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>
+

--
Gitblit v1.9.3