提交 35f50558 作者: obcy

知识库分类左侧树操作

上级 a2f30171
...@@ -4,10 +4,9 @@ package com.zzsn.knowbase.controller; ...@@ -4,10 +4,9 @@ package com.zzsn.knowbase.controller;
import com.zzsn.knowbase.entity.KbKnowledgeProject; import com.zzsn.knowbase.entity.KbKnowledgeProject;
import com.zzsn.knowbase.service.KbKnowledgeProjectService; import com.zzsn.knowbase.service.KbKnowledgeProjectService;
import com.zzsn.knowbase.vo.Result; import com.zzsn.knowbase.vo.Result;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/** /**
* <p> * <p>
...@@ -24,10 +23,45 @@ public class KbKnowledgeProjectController { ...@@ -24,10 +23,45 @@ public class KbKnowledgeProjectController {
KbKnowledgeProjectService knowledgeProjectService; KbKnowledgeProjectService knowledgeProjectService;
/** /**
* 添加知识库 * 根据id查询
* */ * */
@GetMapping
public Result<?> getById(@RequestParam(name="id",required=true) String id){
return Result.OK(knowledgeProjectService.getById(id));
}
@PostMapping("/add") @PostMapping("/add")
public Result<?> add(KbKnowledgeProject knowledgeProject){ public Result<?> add(@RequestBody KbKnowledgeProject knowledgeProject){
return knowledgeProjectService.add(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; package com.zzsn.knowbase.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType; 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 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.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.util.Date;
/** /**
* <p> * <p>
* *
...@@ -93,6 +93,11 @@ public class KbKnowledgeProject extends Model<KbKnowledgeProject> { ...@@ -93,6 +93,11 @@ public class KbKnowledgeProject extends Model<KbKnowledgeProject> {
*/ */
@TableField("sys_org_code") @TableField("sys_org_code")
private String sysOrgCode; private String sysOrgCode;
/**
* 知识库描述
*/
@TableField("project_description")
private String projectDescription;
......
...@@ -22,4 +22,10 @@ public interface KbKnowledgeProjectService extends IService<KbKnowledgeProject> ...@@ -22,4 +22,10 @@ public interface KbKnowledgeProjectService extends IService<KbKnowledgeProject>
/**树节点无子节点状态值*/ /**树节点无子节点状态值*/
public static final String NOCHILD = "0"; public static final String NOCHILD = "0";
Result<?> add(KbKnowledgeProject knowledgeProject); Result<?> add(KbKnowledgeProject knowledgeProject);
Result<?> edit(KbKnowledgeProject knowledgeProject);
Result<?> del(String id);
Result<?> lists(String sign, String projectId);
} }
package com.zzsn.knowbase.service.impl; 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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zzsn.knowbase.entity.KbKnowledgeProject; import com.zzsn.knowbase.entity.KbKnowledgeProject;
import com.zzsn.knowbase.mapper.KbKnowledgeProjectMapper; import com.zzsn.knowbase.mapper.KbKnowledgeProjectMapper;
import com.zzsn.knowbase.service.KbKnowledgeProjectService; import com.zzsn.knowbase.service.KbKnowledgeProjectService;
import com.zzsn.knowbase.vo.Result; import com.zzsn.knowbase.vo.Result;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/** /**
* <p> * <p>
...@@ -21,6 +27,7 @@ import org.springframework.stereotype.Service; ...@@ -21,6 +27,7 @@ import org.springframework.stereotype.Service;
public class KbKnowledgeProjectServiceImpl extends ServiceImpl<KbKnowledgeProjectMapper, KbKnowledgeProject> implements KbKnowledgeProjectService { public class KbKnowledgeProjectServiceImpl extends ServiceImpl<KbKnowledgeProjectMapper, KbKnowledgeProject> implements KbKnowledgeProjectService {
@Override @Override
@Transactional
public Result<?> add(KbKnowledgeProject knowledgeProject) { public Result<?> add(KbKnowledgeProject knowledgeProject) {
if (StringUtils.isBlank(knowledgeProject.getPid())){ if (StringUtils.isBlank(knowledgeProject.getPid())){
knowledgeProject.setPid(KbKnowledgeProjectService.ROOT_PID_VALUE); knowledgeProject.setPid(KbKnowledgeProjectService.ROOT_PID_VALUE);
...@@ -31,6 +38,10 @@ public class KbKnowledgeProjectServiceImpl extends ServiceImpl<KbKnowledgeProjec ...@@ -31,6 +38,10 @@ public class KbKnowledgeProjectServiceImpl extends ServiceImpl<KbKnowledgeProjec
super.updateById(parent); super.updateById(parent);
} }
} }
knowledgeProject.setStatus(0);
knowledgeProject.setHasChild(KbKnowledgeProjectService.NOCHILD);
/**第一次保存赋默认值*/
knowledgeProject.setFullPath("0");
super.save(knowledgeProject); super.save(knowledgeProject);
if (KbKnowledgeProjectService.ROOT_PID_VALUE.equals(knowledgeProject.getPid())){ if (KbKnowledgeProjectService.ROOT_PID_VALUE.equals(knowledgeProject.getPid())){
knowledgeProject.setFullPath(knowledgeProject.getId().toString()); knowledgeProject.setFullPath(knowledgeProject.getId().toString());
...@@ -38,9 +49,94 @@ public class KbKnowledgeProjectServiceImpl extends ServiceImpl<KbKnowledgeProjec ...@@ -38,9 +49,94 @@ public class KbKnowledgeProjectServiceImpl extends ServiceImpl<KbKnowledgeProjec
KbKnowledgeProject parent = super.getById(knowledgeProject.getPid()); KbKnowledgeProject parent = super.getById(knowledgeProject.getPid());
knowledgeProject.setFullPath(parent.getFullPath() +","+ knowledgeProject.getId()); knowledgeProject.setFullPath(parent.getFullPath() +","+ knowledgeProject.getId());
} }
knowledgeProject.setHasChild(KbKnowledgeProjectService.NOCHILD);
super.updateById(knowledgeProject); super.updateById(knowledgeProject);
return Result.OK(); 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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论