提交 35f50558 作者: obcy

知识库分类左侧树操作

上级 a2f30171
......@@ -4,10 +4,9 @@ package com.zzsn.knowbase.controller;
import com.zzsn.knowbase.entity.KbKnowledgeProject;
import com.zzsn.knowbase.service.KbKnowledgeProjectService;
import com.zzsn.knowbase.vo.Result;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
/**
* <p>
......@@ -24,10 +23,45 @@ public class KbKnowledgeProjectController {
KbKnowledgeProjectService knowledgeProjectService;
/**
* 添加知识库
* 根据id查询
* */
@GetMapping
public Result<?> getById(@RequestParam(name="id",required=true) String id){
return Result.OK(knowledgeProjectService.getById(id));
}
@PostMapping("/add")
public Result<?> add(KbKnowledgeProject knowledgeProject){
return knowledgeProjectService.add(knowledgeProject);
public Result<?> add(@RequestBody KbKnowledgeProject knowledgeProject){
return knowledgeProjectService.add(knowledgeProject);
}
/**
* 编辑知识库
* */
@PostMapping("/edit")
public Result<?> edit(@RequestBody KbKnowledgeProject knowledgeProject){
return knowledgeProjectService.edit(knowledgeProject);
}
/**
* 删除知识库
* */
@GetMapping("/del")
public Result<?> del(@RequestParam(name="id",required=true) String id){
return knowledgeProjectService.del(id);
}
@GetMapping("/list")
public Result<?> list(
@RequestParam(name="sign",defaultValue = "1") String sign,
@RequestParam(name="projectId",required = false) String projectId
){
if (!"1".equals(sign)){
if (StringUtils.isBlank(projectId)){
return Result.error("查询非顶级节点列表时需要projectId参数");
}
}
return knowledgeProjectService.lists(sign,projectId);
}
}
package com.zzsn.knowbase.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* <p>
*
......@@ -93,6 +93,11 @@ public class KbKnowledgeProject extends Model<KbKnowledgeProject> {
*/
@TableField("sys_org_code")
private String sysOrgCode;
/**
* 知识库描述
*/
@TableField("project_description")
private String projectDescription;
......
......@@ -22,4 +22,10 @@ public interface KbKnowledgeProjectService extends IService<KbKnowledgeProject>
/**树节点无子节点状态值*/
public static final String NOCHILD = "0";
Result<?> add(KbKnowledgeProject knowledgeProject);
Result<?> edit(KbKnowledgeProject knowledgeProject);
Result<?> del(String id);
Result<?> lists(String sign, String projectId);
}
package com.zzsn.knowbase.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zzsn.knowbase.entity.KbKnowledgeProject;
import com.zzsn.knowbase.mapper.KbKnowledgeProjectMapper;
import com.zzsn.knowbase.service.KbKnowledgeProjectService;
import com.zzsn.knowbase.vo.Result;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* <p>
......@@ -21,6 +27,7 @@ import org.springframework.stereotype.Service;
public class KbKnowledgeProjectServiceImpl extends ServiceImpl<KbKnowledgeProjectMapper, KbKnowledgeProject> implements KbKnowledgeProjectService {
@Override
@Transactional
public Result<?> add(KbKnowledgeProject knowledgeProject) {
if (StringUtils.isBlank(knowledgeProject.getPid())){
knowledgeProject.setPid(KbKnowledgeProjectService.ROOT_PID_VALUE);
......@@ -31,6 +38,10 @@ public class KbKnowledgeProjectServiceImpl extends ServiceImpl<KbKnowledgeProjec
super.updateById(parent);
}
}
knowledgeProject.setStatus(0);
knowledgeProject.setHasChild(KbKnowledgeProjectService.NOCHILD);
/**第一次保存赋默认值*/
knowledgeProject.setFullPath("0");
super.save(knowledgeProject);
if (KbKnowledgeProjectService.ROOT_PID_VALUE.equals(knowledgeProject.getPid())){
knowledgeProject.setFullPath(knowledgeProject.getId().toString());
......@@ -38,9 +49,94 @@ public class KbKnowledgeProjectServiceImpl extends ServiceImpl<KbKnowledgeProjec
KbKnowledgeProject parent = super.getById(knowledgeProject.getPid());
knowledgeProject.setFullPath(parent.getFullPath() +","+ knowledgeProject.getId());
}
knowledgeProject.setHasChild(KbKnowledgeProjectService.NOCHILD);
super.updateById(knowledgeProject);
return Result.OK();
}
@Override
@Transactional
public Result<?> edit(KbKnowledgeProject knowledgeProject) {
KbKnowledgeProject byId = super.getById(knowledgeProject.getId());
if (ObjectUtils.isEmpty(byId)){
return Result.error("未找到对应的知识库");
}
String oldPid = byId.getPid();
String newPid = knowledgeProject.getPid();
if(!oldPid.equals(newPid)) {
/**处理之前父节点的hasChild字段*/
updateOldParentNode(oldPid);
if(StringUtils.isBlank(newPid) || KbKnowledgeProjectService.ROOT_PID_VALUE.equals(newPid)){
knowledgeProject.setPid(KbKnowledgeProjectService.ROOT_PID_VALUE);
newPid = knowledgeProject.getPid();
}
/**处理新的父节点的hasChild字段*/
if(!KbKnowledgeProjectService.ROOT_PID_VALUE.equals(knowledgeProject.getPid())) {
super.update(Wrappers.<KbKnowledgeProject>lambdaUpdate().set(KbKnowledgeProject::getHasChild,KbKnowledgeProjectService.HASCHILD).eq(KbKnowledgeProject::getId,newPid));
}
super.updateById(knowledgeProject);
/**处理本节点的所有子节点的绝对路径*/
List<KbKnowledgeProject> list = super.list(Wrappers.<KbKnowledgeProject>lambdaQuery().like(KbKnowledgeProject::getFullPath,knowledgeProject.getId()));
if (CollectionUtil.isNotEmpty(list)){
String finalNewPid = newPid;
if (!KbKnowledgeProjectService.ROOT_PID_VALUE.equals(finalNewPid)) {
/**非根节点 移动到其他非根节点*/
if (!KbKnowledgeProjectService.ROOT_PID_VALUE.equals(oldPid)) {
list.forEach(e->{
e.setFullPath(e.getFullPath().replace(oldPid, finalNewPid));
});
}else {
/**根节点 移动到其他非根节点*/
list.forEach(e->{
e.setFullPath(finalNewPid+","+e.getFullPath());
});
}
}else {
/**移动到根节点*/
list.forEach(e->{
e.setFullPath(e.getFullPath().replace(oldPid+",", ""));
});
}
}
super.updateBatchById(list);
}
return Result.OK();
}
@Override
public Result<?> del(String id) {
KbKnowledgeProject byId = super.getById(id);
super.remove(Wrappers.<KbKnowledgeProject>lambdaQuery().like(KbKnowledgeProject::getFullPath,id));
if (StringUtils.isNotBlank(byId.getPid())&&!KbKnowledgeProjectService.ROOT_PID_VALUE.equals(byId.getPid())){
updateOldParentNode(byId.getPid());
}
return Result.OK();
}
@Override
public Result<?> lists(String sign, String projectId) {
List<KbKnowledgeProject> kbKnowledgeProjects ;
if ("1".equals(sign)&&StringUtils.isBlank(projectId)){
kbKnowledgeProjects = super.list(Wrappers.<KbKnowledgeProject>lambdaQuery().eq(KbKnowledgeProject::getPid, KbKnowledgeProjectService.ROOT_PID_VALUE));
}else {
kbKnowledgeProjects = super.list(Wrappers.<KbKnowledgeProject>lambdaQuery().eq(KbKnowledgeProject::getPid,projectId));
}
return Result.OK(kbKnowledgeProjects);
}
/**
* 根据所传pid查询旧的父级节点的子节点并修改相应状态值
* @param pid
*/
private void updateOldParentNode(String pid) {
if(!KbKnowledgeProjectService.ROOT_PID_VALUE.equals(pid)) {
Integer count = baseMapper.selectCount(Wrappers.<KbKnowledgeProject>lambdaQuery().eq(KbKnowledgeProject::getPid,pid));
if(count==null || count<=1) {
super.update(Wrappers.<KbKnowledgeProject>lambdaUpdate().set(KbKnowledgeProject::getHasChild,KbKnowledgeProjectService.NOCHILD).eq(KbKnowledgeProject::getId,pid));
}
}
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论