常用代码
程序员文章站
2022-07-12 10:23:50
...
1.处理需要修改保存多个项,如角色权限保存,文章标签等等.
/**
* 对标签更新的处理:
* 1.查询原文章所有对应记录
* 2.将记录封装为 中间表ID ,标签名name 组成的map, key=Id value=name
* 3.判断新传入的标签tag 是否在刚查询的map集合中
* 4.若存在与map集合中,则从改集合中删除该条记录
* 5.若不在其中,则执行插入操作
* 6.按集合中存在的元素去删除DB中中间关联表中的记录.
* @param article
* @param result
* @return
*/
@ResponseBody
@PostMapping("/modify")
public RestResponseBo modify(@Valid ArticleVo article, BindingResult result) {
TArticle oldArticle = articleService.selectArticleById(article.getId());
Map<Integer, String> map = articleTagService.getArticleTagIdAndTagName(article.getId());
String tags = article.getTags();
boolean addFlag = true;
if (StringUtils.isNotBlank(tags)) {
String[] tag = tags.split(",");
for (String t : tag) {
addFlag = true;
Iterator<Map.Entry<Integer, String>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<Integer, String> next = it.next();
if (next.getValue().equals(t)) {
it.remove();
addFlag = false;
}
}
if(addFlag){ // 添加文章与标签的新的关联关系
TTag tag1 = tagService.saveOrUpdate(new TTag(t, 0, new Date()));
articleTagService.insert(new TArticleTag(article.getId(), tag1.getId()));
}
}
}
2.用户评论,菜单树结构广度遍历
/**
* 广度遍历
*
* @param totalMessage 总的留言列表
* @param newAdd 上一次递归过程中,新查询出来的列表
* @return
*/
public List<CollectionMessageVO> getChildMessage(List<CollectionMessageVO> totalMessage, List<CollectionMessageVO> newAdd) {
boolean addFlag = false;
List<CollectionMessageVO> newVo = new ArrayList<>(); // 此次递归过程中,新增的列表
Iterator<CollectionMessageVO> iterator = newAdd.iterator();
List<CollectionMessageVO> childMessage;
while (iterator.hasNext()) {
childMessage = getMessageByPId(iterator.next().getId());
if (childMessage != null && childMessage.size() > 0) {
newVo.addAll(childMessage);
addFlag = true;
}
}
if (addFlag) {
totalMessage.addAll(newVo);
getChildMessage(totalMessage, newVo);
}
return totalMessage;
}
public List<CollectionMessageVO> getMessageByPId(Long pId) {
return classCollectionMapper.getMessageByPId(pId);
}
上一篇: 常用代码
下一篇: STM32按键实验学习笔记