From 686314701465cdd51c980610913299d3fce7a12f Mon Sep 17 00:00:00 2001 From: sunflower2014 Date: Tue, 17 Jun 2025 21:41:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=A8=E9=87=8F=E8=B5=84=E8=AE=AF=E6=A6=82?= =?UTF-8?q?=E5=BF=B5=E6=A0=87=E7=AD=BE=E4=B8=8D=E5=AD=98=E5=9C=A8=E5=88=99?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/controller/TagController.java | 32 ++++++++--- .../reference/core/mapper/TagMapper.java | 10 +++- .../reference/core/model/entity/Tag.java | 11 ++++ .../reference/core/model/vo/tag/TagVO.java | 15 ++++++ .../core/service/NewsInfoService.java | 54 ++++++++++++++----- .../reference/core/service/TagService.java | 26 ++++++++- 6 files changed, 125 insertions(+), 23 deletions(-) diff --git a/admin/src/main/java/com/jinrui/reference/admin/controller/TagController.java b/admin/src/main/java/com/jinrui/reference/admin/controller/TagController.java index 348bf7b..c171173 100644 --- a/admin/src/main/java/com/jinrui/reference/admin/controller/TagController.java +++ b/admin/src/main/java/com/jinrui/reference/admin/controller/TagController.java @@ -1,12 +1,7 @@ package com.jinrui.reference.admin.controller; -import com.jinrui.reference.admin.model.entity.AdminUser; -import com.jinrui.reference.admin.service.AdminJwtService; -import com.jinrui.reference.core.model.dto.news.SaveTagsDTO; -import com.jinrui.reference.core.model.vo.PageObject; -import com.jinrui.reference.core.model.vo.ResultObject; -import com.jinrui.reference.core.model.vo.tag.TagVO; -import com.jinrui.reference.core.service.TagService; +import java.util.List; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.util.StringUtils; @@ -18,6 +13,14 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import com.jinrui.reference.admin.model.entity.AdminUser; +import com.jinrui.reference.admin.service.AdminJwtService; +import com.jinrui.reference.core.model.dto.news.SaveTagsDTO; +import com.jinrui.reference.core.model.vo.PageObject; +import com.jinrui.reference.core.model.vo.ResultObject; +import com.jinrui.reference.core.model.vo.tag.TagVO; +import com.jinrui.reference.core.service.TagService; + /** * 标签管理 */ @@ -265,4 +268,19 @@ public class TagController { @RequestParam(value = "direction", required = false, defaultValue = "asc") String direction) { return queryTag(token, parent, needChildren, keyword, 1L, page, size, orderBy, direction); } + + @GetMapping("/concept") + public ResultObject> queryConcept(@RequestHeader("auth-token") String token) { + AdminUser adminUser = AdminJwtService.parseToken(token); + if (adminUser == null) { + log.warn("解析token {}拿不到AdminUser对象!", token); + return ResultObject.failed("登陆Token有误,请联系系统管理员!"); + } + + if (!adminUser.isActive()) { + log.warn("当前用户已被封禁! id = {}", adminUser.getId()); + return ResultObject.failed("当前用户已被封禁!请联系系统管理员!"); + } + return tagService.getAllConceptTag(); + } } diff --git a/core/src/main/java/com/jinrui/reference/core/mapper/TagMapper.java b/core/src/main/java/com/jinrui/reference/core/mapper/TagMapper.java index 81cff57..7a8608e 100644 --- a/core/src/main/java/com/jinrui/reference/core/mapper/TagMapper.java +++ b/core/src/main/java/com/jinrui/reference/core/mapper/TagMapper.java @@ -5,6 +5,7 @@ import com.jinrui.reference.core.model.entity.NewsTagRel; import com.jinrui.reference.core.model.entity.Tag; import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Options; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Result; import org.apache.ibatis.annotations.Results; @@ -61,8 +62,12 @@ public interface TagMapper { @Insert("insert into news_tag_rel(news_id, tag_id) values (#{newsId}, #{tagId})") void saveNewsTagRel(@Param("newsId") Long newsId, @Param("tagId") Long tagId); - @Insert("insert into tag(parent_id, name, create_time, update_time) values (#{parentId},#{name}, now(), now())") - void saveTag(@Param("parentId") Long parentId, @Param("name") String name); +// @Insert("insert into tag(parent_id, name, create_time, update_time) values (#{parentId},#{name}, now(), now())") +// void saveTag(@Param("parentId") Long parentId, @Param("name") String name); + + @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") + @Insert("insert into tag(parent_id, parent_name, name, level, create_time, update_time) values (#{parentId},#{parentName}, #{name},#{level}, now(), now())") + void saveTag(Tag tag); @Insert("update tag set name=#{name}, update_time=now() where id=#{id}") void updateTag(@Param("id") Long id, @Param("name") String name); @@ -73,6 +78,7 @@ public interface TagMapper { @Results({ @Result(column = "id", property = "id", id = true), @Result(column = "parent_id", property = "parentId"), + @Result(column = "parent_name", property = "parentName"), @Result(column = "name", property = "name"), @Result(column = "create_time", property = "createTime", javaType = Date.class, jdbcType = JdbcType.TIMESTAMP), @Result(column = "update_time", property = "updateTime", javaType = Date.class, jdbcType = JdbcType.TIMESTAMP) diff --git a/core/src/main/java/com/jinrui/reference/core/model/entity/Tag.java b/core/src/main/java/com/jinrui/reference/core/model/entity/Tag.java index 2066512..e2a8b64 100644 --- a/core/src/main/java/com/jinrui/reference/core/model/entity/Tag.java +++ b/core/src/main/java/com/jinrui/reference/core/model/entity/Tag.java @@ -21,6 +21,9 @@ public class Tag { private Long parentId; private String parentName; + + + private Integer level; /** * 标签名称 @@ -85,6 +88,14 @@ public class Tag { this.parentName = parentName; } + public Integer getLevel() { + return level; + } + + public void setLevel(Integer level) { + this.level = level; + } + public String getDisplayName() { if (ObjectUtils.isEmpty(this.getParentName())) { return this.getName(); diff --git a/core/src/main/java/com/jinrui/reference/core/model/vo/tag/TagVO.java b/core/src/main/java/com/jinrui/reference/core/model/vo/tag/TagVO.java index c44c31f..a42c518 100644 --- a/core/src/main/java/com/jinrui/reference/core/model/vo/tag/TagVO.java +++ b/core/src/main/java/com/jinrui/reference/core/model/vo/tag/TagVO.java @@ -22,7 +22,13 @@ public class TagVO { * 标签名称 */ private String name; + + /** + * 父级标签名称 + */ + private String parentName; + /** * 创建时间 */ @@ -43,6 +49,7 @@ public class TagVO { public TagVO(Tag tag) { this.id = tag.getId(); this.name = tag.getName(); + this.parentName = tag.getParentName(); this.createTime = tag.getCreateTime(); this.updateTime = tag.getUpdateTime(); } @@ -86,4 +93,12 @@ public class TagVO { public void setChildren(List children) { this.children = children; } + + public String getParentName() { + return parentName; + } + + public void setParentName(String parentName) { + this.parentName = parentName; + } } diff --git a/core/src/main/java/com/jinrui/reference/core/service/NewsInfoService.java b/core/src/main/java/com/jinrui/reference/core/service/NewsInfoService.java index 63aeac2..788a465 100644 --- a/core/src/main/java/com/jinrui/reference/core/service/NewsInfoService.java +++ b/core/src/main/java/com/jinrui/reference/core/service/NewsInfoService.java @@ -77,14 +77,6 @@ public class NewsInfoService { this.industryMapper = industryMapper; this.newsMapper = newsMapper; this.newsTagsMapper = newsTagsMapper; - - NewsTags newsTags = newsTagsMapper.getNewsTagsByNewsId("102694660"); - for (String conceptLabel: newsTags.getConceptLabel()) { - System.out.println("+++++++++++++++++++++conceptLabel++++++++++++++++++++++" + conceptLabel); - } - for (String industryLabel: newsTags.getIndustryLabel()) { - System.out.println("+++++++++++++++++++++industryLabel++++++++++++++++++++++" + industryLabel); - } } public ResultObject publish(String id, long editorId) { @@ -156,7 +148,12 @@ public class NewsInfoService { } } if (!isFound) { - tagMapper.saveTag(1L, sourcename); + Tag sourceTag = new Tag(); + sourceTag.setParentId(1L); + sourceTag.setName(sourcename); + sourceTag.setLevel(1); + tagMapper.saveTag(sourceTag); + tagMapper.saveNewsTagRel(newsId, sourceTag.getId()); } } @@ -164,17 +161,48 @@ public class NewsInfoService { if (!ObjectUtils.isEmpty(conceptLabels)) { List tags = tagMapper.queryAll().stream().filter(e -> !ObjectUtils.isEmpty(e.getParentName())).collect(Collectors.toList()); for (String conceptLabel: conceptLabels) { + boolean existed = false; for (Tag tag:tags) { if (conceptLabel.equals(tag.getDisplayName())) { tagMapper.saveNewsTagRel(newsId, tag.getId()); + existed = true; break; } } + if (!existed) { + Long conceptTagId = saveConceptLabel(conceptLabel); + tagMapper.saveNewsTagRel(newsId, conceptTagId); + } } } } - public ResultObject detail(String id) { + private Long saveConceptLabel(String conceptLabel) { + String[] conceptTags = conceptLabel.split("-"); + Tag levelOneTag = new Tag(); + levelOneTag.setParentId(6L); + levelOneTag.setLevel(1); + levelOneTag.setName(conceptTags[0]); + tagMapper.saveTag(levelOneTag); + if (conceptTags.length > 1) { + Tag levelTwoTag = new Tag(); + levelTwoTag.setParentId(levelOneTag.getId()); + levelTwoTag.setLevel(2); + levelTwoTag.setParentName(conceptTags[0]); + levelTwoTag.setName(conceptTags[1]); + return levelTwoTag.getId(); + } + return levelOneTag.getId(); + } + + public static void main(String[] args) { + String a = "对外开放-出海50"; + String[] tags = a.split("-"); + System.out.println(tags[0]); + System.out.println(tags[1]); + } + + public ResultObject detail(String id) { try { GetResponse newsInfoResp = elasticsearchClient.get(g -> g.index(NewsInfo.INDEX_NAME).id(String.valueOf(id)), NewsInfo.class); @@ -230,9 +258,9 @@ public class NewsInfoService { for (Industry industry: allIndustrys) { if (Objects.equals(industry.getDisplayName(), industryLabel)) { NewsDetailIndustry newsDetailIndustry = new NewsDetailIndustry(); - newsDetailIndustry.setId(newsDetailIndustry.getId()); - newsDetailIndustry.setPrimaryName(newsDetailIndustry.getPrimaryName()); - newsDetailIndustry.setSecondaryName(newsDetailIndustry.getSecondaryName()); + newsDetailIndustry.setId(industry.getId()); + newsDetailIndustry.setPrimaryName(industry.getPrimaryName()); + newsDetailIndustry.setSecondaryName(industry.getSecondaryName()); industries.add(newsDetailIndustry); break; } diff --git a/core/src/main/java/com/jinrui/reference/core/service/TagService.java b/core/src/main/java/com/jinrui/reference/core/service/TagService.java index 0e094f3..d819c06 100644 --- a/core/src/main/java/com/jinrui/reference/core/service/TagService.java +++ b/core/src/main/java/com/jinrui/reference/core/service/TagService.java @@ -14,6 +14,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import java.util.ArrayList; +import java.util.LinkedList; import java.util.List; import java.util.stream.Collectors; @@ -122,7 +123,19 @@ public class TagService { * 目前来源标签写死为1 * id=1的初始化的时候就是来源标签 */ - tagMapper.saveTag(parentId, name); + Tag tag = new Tag(); + tag.setParentId(parentId); + if (parentId == 1L || parentId == 6L) { + tag.setLevel(1); + } else { + tag.setLevel(2); + Tag parentTag = tagMapper.queryById(parentId); + if (parentTag != null) { + tag.setParentName(parentTag.getName()); + } + } + tag.setName(name); + tagMapper.saveTag(tag); return ResultObject.success(); } @@ -166,4 +179,15 @@ public class TagService { tagMapper.deleteTag(id); return ResultObject.success(); } + + public ResultObject> getAllConceptTag() { + List result = new LinkedList<>(); + List levelOneTags = tagMapper.queryTag(6L, null, null, "id", "asc"); + for (Tag levelOneTag: levelOneTags) { + result.add(new TagVO(levelOneTag)); + List levelTwoTags = tagMapper.queryTag(levelOneTag.getId(), null, null, "id", "asc"); + result.addAll(levelTwoTags.stream().map(TagVO::new).collect(Collectors.toList())); + } + return ResultObject.success(result); + } }