知识库代码框架

This commit is contained in:
spllzh
2025-10-28 08:39:35 +08:00
parent 7af226b8a4
commit 6c40d95604
26 changed files with 832 additions and 3 deletions

View File

@@ -0,0 +1,350 @@
package com.rj.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.rj.entity.KnowledgeBase;
import com.rj.mapper.KnowledgeBaseMapper;
import com.rj.service.IKnowledgeBaseService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
/**
* <p>
* 知识库管理表 服务实现类
* </p>
*
* @author 李中华 ,spllzh
* @since 2025-01-27
*/
@Service
public class KnowledgeBaseServiceImpl extends ServiceImpl<KnowledgeBaseMapper, KnowledgeBase> implements IKnowledgeBaseService {
@Override
public Map<String, Object> addKnowledge(KnowledgeBase knowledgeBase) {
Map<String, Object> result = new HashMap<>();
try {
// 生成UUID作为主键
knowledgeBase.setId(UUID.randomUUID().toString().replace("-", ""));
knowledgeBase.setCreateTime(LocalDateTime.now());
knowledgeBase.setUpdateTime(LocalDateTime.now());
// 设置默认值
if (knowledgeBase.getViewCount() == null) {
knowledgeBase.setViewCount(0);
}
if (knowledgeBase.getLikeCount() == null) {
knowledgeBase.setLikeCount(0);
}
if (knowledgeBase.getSortOrder() == null) {
knowledgeBase.setSortOrder(0);
}
if (knowledgeBase.getIsTop() == null) {
knowledgeBase.setIsTop(false);
}
if (knowledgeBase.getStatus() == null || knowledgeBase.getStatus().trim().isEmpty()) {
knowledgeBase.setStatus("已发布");
}
boolean success = this.save(knowledgeBase);
if (success) {
result.put("success", true);
result.put("message", "知识添加成功");
result.put("data", knowledgeBase);
} else {
result.put("success", false);
result.put("message", "知识添加失败");
}
} catch (Exception e) {
result.put("success", false);
result.put("message", "知识添加异常:" + e.getMessage());
}
return result;
}
@Override
public Map<String, Object> getKnowledgeById(String id) {
Map<String, Object> result = new HashMap<>();
try {
KnowledgeBase knowledge = this.getById(id);
if (knowledge != null) {
// 增加浏览次数
knowledge.setViewCount(knowledge.getViewCount() + 1);
this.updateById(knowledge);
result.put("success", true);
result.put("message", "查询成功");
result.put("data", knowledge);
} else {
result.put("success", false);
result.put("message", "知识不存在");
}
} catch (Exception e) {
result.put("success", false);
result.put("message", "查询异常:" + e.getMessage());
}
return result;
}
@Override
public Map<String, Object> getKnowledgeList(Integer current, Integer size, String title,
String category, String industry, String creator, String status) {
Map<String, Object> result = new HashMap<>();
try {
Page<KnowledgeBase> page = new Page<>(current, size);
LambdaQueryWrapper<KnowledgeBase> queryWrapper = new LambdaQueryWrapper<>();
// 添加查询条件
if (title != null && !title.trim().isEmpty()) {
queryWrapper.like(KnowledgeBase::getTitle, title);
}
if (category != null && !category.trim().isEmpty()) {
queryWrapper.eq(KnowledgeBase::getCategory, category);
}
if (industry != null && !industry.trim().isEmpty()) {
queryWrapper.eq(KnowledgeBase::getIndustry, industry);
}
if (creator != null && !creator.trim().isEmpty()) {
queryWrapper.like(KnowledgeBase::getCreator, creator);
}
if (status != null && !status.trim().isEmpty()) {
queryWrapper.eq(KnowledgeBase::getStatus, status);
}
// 排序:置顶优先,然后按排序权重,最后按创建时间倒序
queryWrapper.orderByDesc(KnowledgeBase::getUpdateTime);
Page<KnowledgeBase> knowledgePage = this.page(page, queryWrapper);
result.put("success", true);
result.put("message", "查询成功");
result.put("data", knowledgePage.getRecords());
result.put("total", knowledgePage.getTotal());
result.put("current", knowledgePage.getCurrent());
result.put("size", knowledgePage.getSize());
result.put("pages", knowledgePage.getPages());
} catch (Exception e) {
result.put("success", false);
result.put("message", "查询异常:" + e.getMessage());
}
return result;
}
@Override
public Map<String, Object> updateKnowledge(KnowledgeBase knowledgeBase) {
Map<String, Object> result = new HashMap<>();
try {
if (knowledgeBase.getId() == null || knowledgeBase.getId().trim().isEmpty()) {
result.put("success", false);
result.put("message", "知识ID不能为空");
return result;
}
knowledgeBase.setUpdateTime(LocalDateTime.now());
boolean success = this.updateById(knowledgeBase);
if (success) {
result.put("success", true);
result.put("message", "知识信息更新成功");
result.put("data", knowledgeBase);
} else {
result.put("success", false);
result.put("message", "知识信息更新失败");
}
} catch (Exception e) {
result.put("success", false);
result.put("message", "更新异常:" + e.getMessage());
}
return result;
}
@Override
public Map<String, Object> deleteKnowledge(String id) {
Map<String, Object> result = new HashMap<>();
try {
boolean success = this.removeById(id);
if (success) {
result.put("success", true);
result.put("message", "知识删除成功");
} else {
result.put("success", false);
result.put("message", "知识删除失败");
}
} catch (Exception e) {
result.put("success", false);
result.put("message", "删除异常:" + e.getMessage());
}
return result;
}
@Override
public Map<String, Object> batchDeleteKnowledge(List<String> ids) {
Map<String, Object> result = new HashMap<>();
try {
if (ids == null || ids.isEmpty()) {
result.put("success", false);
result.put("message", "知识ID列表不能为空");
return result;
}
boolean success = this.removeByIds(ids);
if (success) {
result.put("success", true);
result.put("message", "批量删除成功,共删除 " + ids.size() + " 条记录");
} else {
result.put("success", false);
result.put("message", "批量删除失败");
}
} catch (Exception e) {
result.put("success", false);
result.put("message", "批量删除异常:" + e.getMessage());
}
return result;
}
@Override
public Map<String, Object> likeKnowledge(String id) {
Map<String, Object> result = new HashMap<>();
try {
KnowledgeBase knowledge = this.getById(id);
if (knowledge != null) {
knowledge.setLikeCount(knowledge.getLikeCount() + 1);
knowledge.setUpdateTime(LocalDateTime.now());
boolean success = this.updateById(knowledge);
if (success) {
result.put("success", true);
result.put("message", "点赞成功");
result.put("data", knowledge);
} else {
result.put("success", false);
result.put("message", "点赞失败");
}
} else {
result.put("success", false);
result.put("message", "知识不存在");
}
} catch (Exception e) {
result.put("success", false);
result.put("message", "点赞异常:" + e.getMessage());
}
return result;
}
@Override
public Map<String, Object> toggleTopKnowledge(String id) {
Map<String, Object> result = new HashMap<>();
try {
KnowledgeBase knowledge = this.getById(id);
if (knowledge != null) {
knowledge.setIsTop(!knowledge.getIsTop());
knowledge.setUpdateTime(LocalDateTime.now());
boolean success = this.updateById(knowledge);
if (success) {
result.put("success", true);
result.put("message", knowledge.getIsTop() ? "置顶成功" : "取消置顶成功");
result.put("data", knowledge);
} else {
result.put("success", false);
result.put("message", "操作失败");
}
} else {
result.put("success", false);
result.put("message", "知识不存在");
}
} catch (Exception e) {
result.put("success", false);
result.put("message", "操作异常:" + e.getMessage());
}
return result;
}
@Override
public Map<String, Object> getKnowledgeStatistics() {
Map<String, Object> result = new HashMap<>();
try {
long totalCount = this.count();
// 按状态统计
LambdaQueryWrapper<KnowledgeBase> publishedWrapper = new LambdaQueryWrapper<>();
publishedWrapper.eq(KnowledgeBase::getStatus, "已发布");
long publishedCount = this.count(publishedWrapper);
LambdaQueryWrapper<KnowledgeBase> draftWrapper = new LambdaQueryWrapper<>();
draftWrapper.eq(KnowledgeBase::getStatus, "草稿");
long draftCount = this.count(draftWrapper);
LambdaQueryWrapper<KnowledgeBase> topWrapper = new LambdaQueryWrapper<>();
topWrapper.eq(KnowledgeBase::getIsTop, true);
long topCount = this.count(topWrapper);
Map<String, Object> statistics = new HashMap<>();
statistics.put("totalKnowledge", totalCount);
statistics.put("publishedCount", publishedCount);
statistics.put("draftCount", draftCount);
statistics.put("topCount", topCount);
result.put("success", true);
result.put("message", "统计信息获取成功");
result.put("data", statistics);
} catch (Exception e) {
result.put("success", false);
result.put("message", "统计信息获取异常:" + e.getMessage());
}
return result;
}
@Override
public Map<String, Object> getCategories() {
Map<String, Object> result = new HashMap<>();
try {
LambdaQueryWrapper<KnowledgeBase> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.select(KnowledgeBase::getCategory)
.groupBy(KnowledgeBase::getCategory);
List<KnowledgeBase> categories = this.list(queryWrapper);
List<String> categoryList = categories.stream()
.map(KnowledgeBase::getCategory)
.distinct()
.toList();
result.put("success", true);
result.put("message", "分类列表获取成功");
result.put("data", categoryList);
} catch (Exception e) {
result.put("success", false);
result.put("message", "分类列表获取异常:" + e.getMessage());
}
return result;
}
@Override
public Map<String, Object> getIndustries() {
Map<String, Object> result = new HashMap<>();
try {
LambdaQueryWrapper<KnowledgeBase> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.select(KnowledgeBase::getIndustry)
.groupBy(KnowledgeBase::getIndustry);
List<KnowledgeBase> industries = this.list(queryWrapper);
List<String> industryList = industries.stream()
.map(KnowledgeBase::getIndustry)
.distinct()
.toList();
result.put("success", true);
result.put("message", "行业列表获取成功");
result.put("data", industryList);
} catch (Exception e) {
result.put("success", false);
result.put("message", "行业列表获取异常:" + e.getMessage());
}
return result;
}
}