bihuisong 1 год назад
Родитель
Сommit
6a17401942

+ 95 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/knowledge/JnbKnowledgeBaserController.java

@@ -0,0 +1,95 @@
+package com.ruoyi.web.controller.knowledge;
+
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.sooka.jnb.knowledge.dto.JnbKnowledgeBaseDTO;
+import com.sooka.jnb.knowledge.service.IJnbKnowledgeBaseService;
+import com.sooka.jnb.knowledge.vo.JnbKnowledgeBaseVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 知识库Controller
+ *
+ * @author ruoyi
+ * @date 2024-03-01
+ */
+@RestController
+@RequestMapping("/knowledge/base")
+public class JnbKnowledgeBaserController extends BaseController {
+
+    @Autowired
+    private IJnbKnowledgeBaseService jnbKnowledgeBaseService;
+
+    /**
+     * 查询知识库列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo list(JnbKnowledgeBaseVO jnbKnowledgeBaseVO) {
+        startPage();
+        List<JnbKnowledgeBaseVO> list = jnbKnowledgeBaseService.selectJnbKnowledgeBaseList(jnbKnowledgeBaseVO);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出知识库列表
+     */
+    @Log(title = "知识库", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, JnbKnowledgeBaseVO jnbKnowledgeBaseVO) {
+        List<JnbKnowledgeBaseVO> list = jnbKnowledgeBaseService.selectJnbKnowledgeBaseList(jnbKnowledgeBaseVO);
+        ExcelUtil<JnbKnowledgeBaseVO> util = new ExcelUtil<JnbKnowledgeBaseVO>(JnbKnowledgeBaseVO.class);
+        util.exportExcel(response, list, "知识库数据");
+    }
+
+    /**
+     * 获取知识库详细信息
+     */
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(jnbKnowledgeBaseService.selectJnbKnowledgeBaseById(id));
+    }
+
+    /**
+     * 新增知识库
+     */
+    @Log(title = "知识库", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody JnbKnowledgeBaseVO jnbKnowledgeBaseVO) {
+        return toAjax(jnbKnowledgeBaseService.insertJnbKnowledgeBase(jnbKnowledgeBaseVO));
+    }
+
+    /**
+     * 修改知识库
+     */
+    @Log(title = "知识库", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody JnbKnowledgeBaseVO jnbKnowledgeBaseVO) {
+        return toAjax(jnbKnowledgeBaseService.updateJnbKnowledgeBase(jnbKnowledgeBaseVO));
+    }
+
+    /**
+     * 删除知识库
+     */
+    @Log(title = "知识库", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(jnbKnowledgeBaseService.deleteJnbKnowledgeBaseByIds(ids));
+    }
+
+    /**
+     * 修改是否热门
+     */
+    @Log(title = "修改是否热门", businessType = BusinessType.UPDATE)
+    @PutMapping("/updateIsPopular")
+    public AjaxResult updateIsPopular(@RequestBody JnbKnowledgeBaseDTO JnbKnowledgeBaseDTO) {
+        return toAjax(jnbKnowledgeBaseService.updateIsPopular(JnbKnowledgeBaseDTO));
+    }
+}

+ 2 - 2
sooka-jnb/src/main/java/com/sooka/jnb/highServer/service/impl/JnbHighServerServiceImpl.java

@@ -60,6 +60,7 @@ public class JnbHighServerServiceImpl implements IJnbHighServerService {
      * @return 结果
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public int insertJnbHighServer(JnbHighServerVO jnbHighServerVO) {
         jnbHighServerVO.setCreateTime(DateUtils.getNowDate());
         jnbHighServerMapper.insertJnbHighServer(jnbHighServerVO);
@@ -69,7 +70,6 @@ public class JnbHighServerServiceImpl implements IJnbHighServerService {
             for (int i = 0; i < imgUrlArray.size(); i++) {
                 JnbHighServerImg jnbHighServerImg = new JnbHighServerImg();
                 jnbHighServerImg.setServerId(jnbHighServerVO.getId());
-//                jnbHighServerImg.setType(jnbHighServerVO.getType());
                 jnbHighServerImg.setImgUrl(imgUrlArray.get(i));
                 saveList.add(jnbHighServerImg);
             }
@@ -85,6 +85,7 @@ public class JnbHighServerServiceImpl implements IJnbHighServerService {
      * @return 结果
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public int updateJnbHighServer(JnbHighServerVO jnbHighServerVO) {
         jnbHighServerVO.setUpdateTime(DateUtils.getNowDate());
         jnbHighServerMapper.updateJnbHighServer(jnbHighServerVO);
@@ -95,7 +96,6 @@ public class JnbHighServerServiceImpl implements IJnbHighServerService {
             for (int i = 0; i < imgUrlArray.size(); i++) {
                 JnbHighServerImg jnbHighServerImg = new JnbHighServerImg();
                 jnbHighServerImg.setServerId(jnbHighServerVO.getId());
-//                jnbHighServerImg.setType(jnbHighServerVO.getType());
                 jnbHighServerImg.setImgUrl(imgUrlArray.get(i));
                 saveList.add(jnbHighServerImg);
             }

+ 0 - 5
sooka-jnb/src/main/java/com/sooka/jnb/highServer/vo/JnbHighServerVO.java

@@ -87,11 +87,6 @@ public class JnbHighServerVO {
     private String imgId;
 
     /**
-     * 高频服务图片名称
-     */
-    private String imgNameList;
-
-    /**
      * 高频服务图片路径
      */
      private String imgUrlList;

+ 133 - 0
sooka-jnb/src/main/java/com/sooka/jnb/knowledge/domain/JnbKnowledgeBase.java

@@ -0,0 +1,133 @@
+package com.sooka.jnb.knowledge.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 知识库对象 jnb_knowledge_base
+ *
+ * @author ruoyi
+ * @date 2024-03-02
+ */
+public class JnbKnowledgeBase extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    private Long id;
+
+    /**
+     * 标题
+     */
+    @Excel(name = "标题")
+    private String titleName;
+
+    /**
+     * 正文
+     */
+    @Excel(name = "正文")
+    private String textDetails;
+
+    /**
+     * 是否热门
+     */
+    @Excel(name = "是否热门")
+    private Boolean popular;
+
+    /**
+     * 付费积分
+     */
+    @Excel(name = "付费积分")
+    private Long integral;
+
+    /**
+     * 点赞数
+     */
+    @Excel(name = "点赞数")
+    private Long likeNum;
+
+    /**
+     * 浏览数
+     */
+    @Excel(name = "浏览数")
+    private Long watchNum;
+
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setTitleName(String titleName) {
+        this.titleName = titleName;
+    }
+
+    public String getTitleName() {
+        return titleName;
+    }
+
+    public void setTextDetails(String textDetails) {
+        this.textDetails = textDetails;
+    }
+
+    public String getTextDetails() {
+        return textDetails;
+    }
+
+    public void setPopular(Boolean popular) {
+        this.popular = popular;
+    }
+
+    public Boolean getPopular() {
+        return popular;
+    }
+
+    public void setIntegral(Long integral) {
+        this.integral = integral;
+    }
+
+    public Long getIntegral() {
+        return integral;
+    }
+
+    public void setLikeNum(Long likeNum) {
+        this.likeNum = likeNum;
+    }
+
+    public Long getLikeNum() {
+        return likeNum;
+    }
+
+    public void setWatchNum(Long watchNum) {
+        this.watchNum = watchNum;
+    }
+
+    public Long getWatchNum() {
+        return watchNum;
+    }
+
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("titleName", getTitleName())
+                .append("textDetails", getTextDetails())
+                .append("popular", getPopular())
+                .append("integral", getIntegral())
+                .append("likeNum", getLikeNum())
+                .append("watchNum", getWatchNum())
+                .append("createBy", getCreateBy())
+                .append("createTime", getCreateTime())
+                .append("updateBy", getUpdateBy())
+                .append("updateTime", getUpdateTime())
+                .append("delFlag", getDelFlag())
+                .toString();
+    }
+}

+ 73 - 0
sooka-jnb/src/main/java/com/sooka/jnb/knowledge/domain/JnbKnowledgeBaseImg.java

@@ -0,0 +1,73 @@
+package com.sooka.jnb.knowledge.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 知识库图片子对象 jnb_knowledge_base_img
+ *
+ * @author ruoyi
+ * @date 2024-03-02
+ */
+public class JnbKnowledgeBaseImg extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    private Long id;
+
+    /**
+     * 知识库主键id
+     */
+    @Excel(name = "知识库主键id")
+    private Long knowledgeId;
+
+    /**
+     * 图片类型
+     */
+    @Excel(name = "图片类型")
+    private String imgUrl;
+
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setKnowledgeId(Long knowledgeId) {
+        this.knowledgeId = knowledgeId;
+    }
+
+    public Long getKnowledgeId() {
+        return knowledgeId;
+    }
+
+    public void setImgUrl(String imgUrl) {
+        this.imgUrl = imgUrl;
+    }
+
+    public String getImgUrl() {
+        return imgUrl;
+    }
+
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("knowledgeId", getKnowledgeId())
+                .append("imgUrl", getImgUrl())
+                .append("createBy", getCreateBy())
+                .append("createTime", getCreateTime())
+                .append("updateBy", getUpdateBy())
+                .append("updateTime", getUpdateTime())
+                .append("delFlag", getDelFlag())
+                .toString();
+    }
+}

+ 15 - 0
sooka-jnb/src/main/java/com/sooka/jnb/knowledge/dto/JnbKnowledgeBaseDTO.java

@@ -0,0 +1,15 @@
+package com.sooka.jnb.knowledge.dto;
+
+
+import lombok.Data;
+
+@Data
+public class JnbKnowledgeBaseDTO {
+
+    /**
+     * id
+     */
+    private Long id;
+
+    private Boolean popular;
+}

+ 22 - 0
sooka-jnb/src/main/java/com/sooka/jnb/knowledge/mapper/JnbKnowledgeBaseImgMapper.java

@@ -0,0 +1,22 @@
+package com.sooka.jnb.knowledge.mapper;
+
+
+import com.sooka.jnb.knowledge.domain.JnbKnowledgeBaseImg;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 知识库图片子Mapper接口
+ *
+ * @author ruoyi
+ * @date 2024-03-02
+ */
+public interface JnbKnowledgeBaseImgMapper {
+
+    public int deleteJnbKnowledgeBaseImgByServerIds(Long[] knowledgeId);
+
+    public int deleteJnbKnowledgeBaseImgByServerId(@Param("knowledgeId") Long knowledgeId);
+
+    int saveJnbKnowledgeBaseImg(List<JnbKnowledgeBaseImg> saveList);
+}

+ 66 - 0
sooka-jnb/src/main/java/com/sooka/jnb/knowledge/mapper/JnbKnowledgeBaseMapper.java

@@ -0,0 +1,66 @@
+package com.sooka.jnb.knowledge.mapper;
+
+
+import com.sooka.jnb.knowledge.dto.JnbKnowledgeBaseDTO;
+import com.sooka.jnb.knowledge.vo.JnbKnowledgeBaseVO;
+
+import java.util.List;
+
+
+/**
+ * 知识库Mapper接口
+ *
+ * @author ruoyi
+ * @date 2024-03-02
+ */
+public interface JnbKnowledgeBaseMapper {
+    /**
+     * 查询知识库
+     *
+     * @param id 知识库主键
+     * @return 知识库
+     */
+    public JnbKnowledgeBaseVO selectJnbKnowledgeBaseById(Long id);
+
+    /**
+     * 查询知识库列表
+     *
+     * @param jnbKnowledgeBaseVO 知识库
+     * @return 知识库集合
+     */
+    public List<JnbKnowledgeBaseVO> selectJnbKnowledgeBaseList(JnbKnowledgeBaseVO jnbKnowledgeBaseVO);
+
+    /**
+     * 新增知识库
+     *
+     * @param jnbKnowledgeBaseVO 知识库
+     * @return 结果
+     */
+    public int insertJnbKnowledgeBase(JnbKnowledgeBaseVO jnbKnowledgeBaseVO);
+
+    /**
+     * 修改知识库
+     *
+     * @param jnbKnowledgeBaseVO 知识库
+     * @return 结果
+     */
+    public int updateJnbKnowledgeBase(JnbKnowledgeBaseVO jnbKnowledgeBaseVO);
+
+    /**
+     * 删除知识库
+     *
+     * @param id 知识库主键
+     * @return 结果
+     */
+    public int deleteJnbKnowledgeBaseById(Long id);
+
+    /**
+     * 批量删除知识库
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteJnbKnowledgeBaseByIds(Long[] ids);
+
+    int updateIsPopular(JnbKnowledgeBaseDTO jnbKnowledgeBaseDTO);
+}

+ 65 - 0
sooka-jnb/src/main/java/com/sooka/jnb/knowledge/service/IJnbKnowledgeBaseService.java

@@ -0,0 +1,65 @@
+package com.sooka.jnb.knowledge.service;
+
+
+import com.sooka.jnb.knowledge.dto.JnbKnowledgeBaseDTO;
+import com.sooka.jnb.knowledge.vo.JnbKnowledgeBaseVO;
+
+import java.util.List;
+
+/**
+ * 知识库Service接口
+ *
+ * @author ruoyi
+ * @date 2024-03-02
+ */
+public interface IJnbKnowledgeBaseService {
+    /**
+     * 查询知识库
+     *
+     * @param id 知识库主键
+     * @return 知识库
+     */
+    public JnbKnowledgeBaseVO selectJnbKnowledgeBaseById(Long id);
+
+    /**
+     * 查询知识库列表
+     *
+     * @param jnbKnowledgeBaseVO 知识库
+     * @return 知识库集合
+     */
+    public List<JnbKnowledgeBaseVO> selectJnbKnowledgeBaseList(JnbKnowledgeBaseVO jnbKnowledgeBaseVO);
+
+    /**
+     * 新增知识库
+     *
+     * @param jnbKnowledgeBaseVO 知识库
+     * @return 结果
+     */
+    public int insertJnbKnowledgeBase(JnbKnowledgeBaseVO jnbKnowledgeBaseVO);
+
+    /**
+     * 修改知识库
+     *
+     * @param jnbKnowledgeBaseVO 知识库
+     * @return 结果
+     */
+    public int updateJnbKnowledgeBase(JnbKnowledgeBaseVO jnbKnowledgeBaseVO);
+
+    /**
+     * 批量删除知识库
+     *
+     * @param ids 需要删除的知识库主键集合
+     * @return 结果
+     */
+    public int deleteJnbKnowledgeBaseByIds(Long[] ids);
+
+    /**
+     * 删除知识库信息
+     *
+     * @param id 知识库主键
+     * @return 结果
+     */
+    public int deleteJnbKnowledgeBaseById(Long id);
+
+    int updateIsPopular(JnbKnowledgeBaseDTO jnbKnowledgeBaseDTO);
+}

+ 134 - 0
sooka-jnb/src/main/java/com/sooka/jnb/knowledge/service/impl/JnbKnowledgeBaseServiceImpl.java

@@ -0,0 +1,134 @@
+package com.sooka.jnb.knowledge.service.impl;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.sooka.jnb.highServer.domain.JnbHighServerImg;
+import com.sooka.jnb.knowledge.domain.JnbKnowledgeBaseImg;
+import com.sooka.jnb.knowledge.dto.JnbKnowledgeBaseDTO;
+import com.sooka.jnb.knowledge.mapper.JnbKnowledgeBaseImgMapper;
+import com.sooka.jnb.knowledge.mapper.JnbKnowledgeBaseMapper;
+import com.sooka.jnb.knowledge.service.IJnbKnowledgeBaseService;
+import com.sooka.jnb.knowledge.vo.JnbKnowledgeBaseVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 知识库Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2024-03-02
+ */
+@Service
+public class JnbKnowledgeBaseServiceImpl implements IJnbKnowledgeBaseService {
+    @Autowired
+    private JnbKnowledgeBaseMapper jnbKnowledgeBaseMapper;
+    @Autowired
+    private JnbKnowledgeBaseImgMapper jnbKnowledgeBaseImgMapper;
+    /**
+     * 查询知识库j
+     *
+     * @param id 知识库主键
+     * @return 知识库
+     */
+    @Override
+    public JnbKnowledgeBaseVO selectJnbKnowledgeBaseById(Long id) {
+        return jnbKnowledgeBaseMapper.selectJnbKnowledgeBaseById(id);
+    }
+
+    /**
+     * 查询知识库列表
+     *
+     * @param jnbKnowledgeBaseVO 知识库
+     * @return 知识库
+     */
+    @Override
+    public List<JnbKnowledgeBaseVO> selectJnbKnowledgeBaseList(JnbKnowledgeBaseVO jnbKnowledgeBaseVO) {
+        return jnbKnowledgeBaseMapper.selectJnbKnowledgeBaseList(jnbKnowledgeBaseVO);
+    }
+
+    /**
+     * 新增知识库
+     *
+     * @param jnbKnowledgeBaseVO 知识库
+     * @return 结果
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int insertJnbKnowledgeBase(JnbKnowledgeBaseVO jnbKnowledgeBaseVO) {
+        jnbKnowledgeBaseVO.setPopular(false);
+        jnbKnowledgeBaseVO.setCreateTime(DateUtils.getNowDate());
+        jnbKnowledgeBaseMapper.insertJnbKnowledgeBase(jnbKnowledgeBaseVO);
+        if (StringUtils.isNotEmpty(jnbKnowledgeBaseVO.getImgUrlList())) {
+            List<String> imgUrlArray = Arrays.asList(jnbKnowledgeBaseVO.getImgUrlList().split(","));
+            List<JnbKnowledgeBaseImg> saveList = new ArrayList<>();
+            for (int i = 0; i < imgUrlArray.size(); i++) {
+                JnbKnowledgeBaseImg jnbKnowledgeBaseImg = new JnbKnowledgeBaseImg();
+                jnbKnowledgeBaseImg.setKnowledgeId(jnbKnowledgeBaseVO.getId());
+                jnbKnowledgeBaseImg.setImgUrl(imgUrlArray.get(i));
+                saveList.add(jnbKnowledgeBaseImg);
+            }
+            return jnbKnowledgeBaseImgMapper.saveJnbKnowledgeBaseImg(saveList);
+        }
+        return 1;
+    }
+
+    /**
+     * 修改知识库
+     *
+     * @param jnbKnowledgeBaseVO 知识库
+     * @return 结果
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int updateJnbKnowledgeBase(JnbKnowledgeBaseVO jnbKnowledgeBaseVO) {
+        jnbKnowledgeBaseVO.setUpdateTime(DateUtils.getNowDate());
+        jnbKnowledgeBaseMapper.updateJnbKnowledgeBase(jnbKnowledgeBaseVO);
+        if (StringUtils.isNotEmpty(jnbKnowledgeBaseVO.getImgUrlList())) {
+            jnbKnowledgeBaseImgMapper.deleteJnbKnowledgeBaseImgByServerId(jnbKnowledgeBaseVO.getId());
+            List<String> imgUrlArray = Arrays.asList(jnbKnowledgeBaseVO.getImgUrlList().split(","));
+            List<JnbKnowledgeBaseImg> saveList = new ArrayList<>();
+            for (int i = 0; i < imgUrlArray.size(); i++) {
+                JnbKnowledgeBaseImg jnbKnowledgeBaseImg = new JnbKnowledgeBaseImg();
+                jnbKnowledgeBaseImg.setKnowledgeId(jnbKnowledgeBaseVO.getId());
+                jnbKnowledgeBaseImg.setImgUrl(imgUrlArray.get(i));
+                saveList.add(jnbKnowledgeBaseImg);
+            }
+            return jnbKnowledgeBaseImgMapper.saveJnbKnowledgeBaseImg(saveList);
+        }
+        return 1;
+    }
+
+    /**
+     * 批量删除知识库
+     *
+     * @param ids 需要删除的知识库主键
+     * @return 结果
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int deleteJnbKnowledgeBaseByIds(Long[] ids) {
+        jnbKnowledgeBaseImgMapper.deleteJnbKnowledgeBaseImgByServerIds(ids);
+        return jnbKnowledgeBaseMapper.deleteJnbKnowledgeBaseByIds(ids);
+    }
+
+    /**
+     * 删除知识库信息
+     *
+     * @param id 知识库主键
+     * @return 结果
+     */
+    @Override
+    public int deleteJnbKnowledgeBaseById(Long id) {
+        return jnbKnowledgeBaseMapper.deleteJnbKnowledgeBaseById(id);
+    }
+
+    @Override
+    public int updateIsPopular(JnbKnowledgeBaseDTO jnbKnowledgeBaseDTO) {
+        return jnbKnowledgeBaseMapper.updateIsPopular(jnbKnowledgeBaseDTO);
+    }
+}

+ 92 - 0
sooka-jnb/src/main/java/com/sooka/jnb/knowledge/vo/JnbKnowledgeBaseVO.java

@@ -0,0 +1,92 @@
+package com.sooka.jnb.knowledge.vo;
+
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class JnbKnowledgeBaseVO {
+
+    /**
+     * id
+     */
+    private Long id;
+
+    /**
+     * 标题
+     */
+    @Excel(name = "标题")
+    private String titleName;
+
+    /**
+     * 正文
+     */
+    @Excel(name = "正文")
+    private String textDetails;
+
+    /**
+     * 是否热门
+     */
+    @Excel(name = "是否热门")
+    private Boolean popular;
+
+    /**
+     * 付费积分
+     */
+    @Excel(name = "付费积分")
+    private Long integral;
+
+    /**
+     * 点赞数
+     */
+    @Excel(name = "点赞数")
+    private Long likeNum;
+
+    /**
+     * 浏览数
+     */
+    @Excel(name = "浏览数")
+    private Long watchNum;
+
+
+    /**
+     * 创建人
+     */
+    @TableField(value = "create_by", fill = FieldFill.INSERT)
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(value = "create_time", fill = FieldFill.INSERT)
+    private Date createTime;
+
+    /**
+     * 修改人
+     */
+    @TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE)
+    private String updateBy;
+
+    /**
+     * 修改时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
+    private Date updateTime;
+
+    /**
+     * 知识库图片id
+     */
+    private String imgId;
+
+    /**
+     * 知识库图片路径
+     */
+    private String imgUrlList;
+}

+ 23 - 0
sooka-jnb/src/main/resources/mapper/knowledge/JnbKnowledgeBaseImgMapper.xml

@@ -0,0 +1,23 @@
+<?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.sooka.jnb.knowledge.mapper.JnbKnowledgeBaseImgMapper">
+
+    <delete id="deleteJnbKnowledgeBaseImgByServerIds" parameterType="String">
+        update jnb_knowledge_base_img set del_flag = 1 where knowledge_id in
+        <foreach item="knowledgeId" collection="array" open="(" separator="," close=")">
+            #{knowledgeId}
+        </foreach>
+    </delete>
+    <delete id="deleteJnbKnowledgeBaseImgByServerId">
+        update jnb_knowledge_base_img set del_flag = 1 where knowledge_id = #{knowledgeId}
+    </delete>
+    <insert id="saveJnbKnowledgeBaseImg" parameterType="java.lang.Integer">
+        insert into jnb_knowledge_base_img (knowledge_id,img_url,create_by,update_by,update_time,create_time) values
+        <foreach collection="list" item="item" separator=",">
+            (#{item.knowledgeId},#{item.imgUrl},#{item.createBy},#{item.updateBy},#{item.updateTime},#{item.createTime})
+        </foreach>
+    </insert>
+
+</mapper>

+ 125 - 0
sooka-jnb/src/main/resources/mapper/knowledge/JnbKnowledgeBaseMapper.xml

@@ -0,0 +1,125 @@
+<?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.sooka.jnb.knowledge.mapper.JnbKnowledgeBaseMapper">
+    
+    <resultMap type="JnbKnowledgeBase" id="JnbKnowledgeBaseResult">
+        <result property="id"    column="id"    />
+        <result property="titleName"    column="title_name"    />
+        <result property="textDetails"    column="text_details"    />
+        <result property="popular"    column="popular"    />
+        <result property="integral"    column="integral"    />
+        <result property="likeNum"    column="like_num"    />
+        <result property="watchNum"    column="watch_num"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="delFlag"    column="del_flag"    />
+    </resultMap>
+
+    <sql id="selectJnbKnowledgeBaseVo">
+        SELECT
+            jkb.id,
+            title_name,
+            text_details,
+            popular,
+            integral,
+            like_num,
+            watch_num,
+            jkb.create_by,
+            jkb.create_time,
+            jkb.update_by,
+            jkb.update_time ,
+            GROUP_CONCAT(jkbi.id)       AS imgId,
+            GROUP_CONCAT(jkbi.img_url)  AS imgUrlList
+        FROM
+            jnb_knowledge_base jkb
+                left join jnb_knowledge_base_img jkbi on jkb.id = jkbi.knowledge_id and jkbi.del_flag = 0
+        where jkb.del_flag = 0
+    </sql>
+
+    <select id="selectJnbKnowledgeBaseList" resultType="com.sooka.jnb.knowledge.vo.JnbKnowledgeBaseVO">
+        <include refid="selectJnbKnowledgeBaseVo"/>
+            <if test="titleName != null  and titleName != ''"> and title_name like concat('%', #{titleName}, '%')</if>
+            <if test="textDetails != null  and textDetails != ''"> and text_details = #{textDetails}</if>
+            <if test="popular != null "> and popular = #{popular}</if>
+            <if test="integral != null "> and integral = #{integral}</if>
+            <if test="likeNum != null "> and like_num = #{likeNum}</if>
+            <if test="watchNum != null "> and watch_num = #{watchNum}</if>
+        GROUP BY jkb.id
+    </select>
+    
+    <select id="selectJnbKnowledgeBaseById" resultType="com.sooka.jnb.knowledge.vo.JnbKnowledgeBaseVO">
+        <include refid="selectJnbKnowledgeBaseVo"/>
+        and jkb.id = #{id}
+        GROUP BY jkb.id
+    </select>
+        
+    <insert id="insertJnbKnowledgeBase" parameterType="com.sooka.jnb.knowledge.vo.JnbKnowledgeBaseVO" useGeneratedKeys="true" keyProperty="id">
+        <selectKey keyProperty="id" resultType="java.lang.Long" order="AFTER">
+            SELECT LAST_INSERT_ID() AS id
+        </selectKey>
+        insert into jnb_knowledge_base
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="titleName != null">title_name,</if>
+            <if test="textDetails != null">text_details,</if>
+            <if test="popular != null">popular,</if>
+            <if test="integral != null">integral,</if>
+            <if test="likeNum != null">like_num,</if>
+            <if test="watchNum != null">watch_num,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="titleName != null">#{titleName},</if>
+            <if test="textDetails != null">#{textDetails},</if>
+            <if test="popular != null">#{popular},</if>
+            <if test="integral != null">#{integral},</if>
+            <if test="likeNum != null">#{likeNum},</if>
+            <if test="watchNum != null">#{watchNum},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+         </trim>
+    </insert>
+
+    <update id="updateJnbKnowledgeBase" parameterType="com.sooka.jnb.knowledge.vo.JnbKnowledgeBaseVO">
+        update jnb_knowledge_base
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="titleName != null">title_name = #{titleName},</if>
+            <if test="textDetails != null">text_details = #{textDetails},</if>
+            <if test="popular != null">popular = #{popular},</if>
+            <if test="integral != null">integral = #{integral},</if>
+            <if test="likeNum != null">like_num = #{likeNum},</if>
+            <if test="watchNum != null">watch_num = #{watchNum},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteJnbKnowledgeBaseById" parameterType="Long">
+        delete from jnb_knowledge_base where id = #{id}
+    </delete>
+
+    <delete id="deleteJnbKnowledgeBaseByIds" parameterType="String">
+        update jnb_knowledge_base set del_flag = 1 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+    <update id="updateIsPopular" parameterType="JnbKnowledgeBase">
+        update jnb_knowledge_base
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="popular != null">popular = #{popular},</if>
+        </trim>
+        where id = #{id}
+    </update>
+</mapper>