From f5a2b242ffc43d367d7b25bf30c709cd7aa22f20 Mon Sep 17 00:00:00 2001 From: Gary Date: Tue, 6 Feb 2024 15:02:33 +0800 Subject: [PATCH] 1.add search interafce --- .../music/controller/JournalController.java | 17 +-- .../music/controller/SearchController.java | 100 ++++++++++++++++++ .../com/luoo/music/dao/JournalTagDao.java | 4 +- .../main/java/com/luoo/music/dao/TagDao.java | 11 +- .../music/dto/request/JournalQueryReq.java | 6 +- .../music/dto/response/JournalFilterDTO.java | 4 +- .../music/dto/response/SearchCategoryDTO.java | 18 ++++ .../com/luoo/music/dto/response/TagDTO.java | 12 +++ .../main/java/com/luoo/music/pojo/Tag.java | 21 ++-- .../luoo/music/service/JournalService.java | 7 +- .../com/luoo/music/service/TagService.java | 9 +- 11 files changed, 178 insertions(+), 31 deletions(-) create mode 100644 luoo_music/src/main/java/com/luoo/music/controller/SearchController.java create mode 100644 luoo_music/src/main/java/com/luoo/music/dto/response/SearchCategoryDTO.java create mode 100644 luoo_music/src/main/java/com/luoo/music/dto/response/TagDTO.java diff --git a/luoo_music/src/main/java/com/luoo/music/controller/JournalController.java b/luoo_music/src/main/java/com/luoo/music/controller/JournalController.java index 32af9e7..dc0de6b 100644 --- a/luoo_music/src/main/java/com/luoo/music/controller/JournalController.java +++ b/luoo_music/src/main/java/com/luoo/music/controller/JournalController.java @@ -23,7 +23,7 @@ import com.luoo.music.dao.TagDao; import com.luoo.music.dto.request.JournalQueryReq; import com.luoo.music.dto.response.JournalFilterDTO; import com.luoo.music.dto.response.JournalRespDTO; - +import com.luoo.music.dto.response.TagDTO; import com.luoo.music.dto.response.TotalCommentVo; import com.luoo.music.pojo.Comment; import io.swagger.annotations.*; @@ -121,8 +121,7 @@ public class JournalController { @VerifyParam JournalQueryReq queryReq) { UserLoginDto user = jwtUtil.getUserLoginDto(authorization); if (null == user) { - queryReq.setLanguage(null); - queryReq.setStyle(null); + queryReq.setCategoryId(null); queryReq.setPageNum(1); queryReq.setPageSize(10); } @@ -179,11 +178,17 @@ public class JournalController { @RequestHeader(value = "Authorization", required = false) String authorization) { JournalFilterDTO journalFilterDTO=new JournalFilterDTO(); journalFilterDTO.setJournalNoList(journalService.getJournalNoList(JOURNAL_FILTER_NUMBER_RANGE)); - journalFilterDTO.setLanguageList(tagService.getLanguageList()); - journalFilterDTO.setStyleList(tagService.getStyleList()); + + journalFilterDTO.setLanguageList(tagService.getLanguageList().stream().map(this::getTagDto).collect(Collectors.toList())); + journalFilterDTO.setStyleList(tagService.getStyleList().stream().map(this::getTagDto).collect(Collectors.toList())); return Result.success(journalFilterDTO); } - + private TagDTO getTagDto(Tag tag) { + TagDTO tagDTO=new TagDTO(); + tagDTO.setName(tag.getNameCh()); + tagDTO.setId(tag.getId()); + return tagDTO; + } private JournalRespDTO getJournalRespDTO(Journal journal, Set journalCollectSet) { JournalRespDTO journalRespDTO = new JournalRespDTO(); journalRespDTO.setId(journal.getId()); diff --git a/luoo_music/src/main/java/com/luoo/music/controller/SearchController.java b/luoo_music/src/main/java/com/luoo/music/controller/SearchController.java new file mode 100644 index 0000000..8ba89a4 --- /dev/null +++ b/luoo_music/src/main/java/com/luoo/music/controller/SearchController.java @@ -0,0 +1,100 @@ +package com.luoo.music.controller; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.time.LocalDateTime; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +import javax.annotation.PostConstruct; + +import com.apifan.common.random.RandomSource; +import com.apifan.common.random.entity.Poem; +import com.luoo.music.dao.CommentDao; +import com.luoo.music.dao.TagDao; +import com.luoo.music.dto.request.JournalQueryReq; +import com.luoo.music.dto.response.JournalFilterDTO; +import com.luoo.music.dto.response.JournalRespDTO; +import com.luoo.music.dto.response.SearchCategoryDTO; +import com.luoo.music.dto.response.TotalCommentVo; +import com.luoo.music.pojo.Comment; +import io.swagger.annotations.*; + +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.ClassPathResource; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.aggregation.Aggregation; +import org.springframework.data.mongodb.core.aggregation.AggregationResults; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.web.bind.annotation.*; +import com.luoo.music.pojo.Journal; +import com.luoo.music.pojo.Tag; +import com.luoo.music.service.JournalService; +import com.luoo.music.service.JournalSongService; +import com.luoo.music.service.TagService; +import com.luoo.music.service.UserCollectInfoService; +import annotation.GlobalInterceptor; +import annotation.VerifyParam; +import api.PageResult; +import api.Result; +import constants.Constants; +import dto.UserLoginDto; +import enums.CollectTypeEnum; +import enums.DateTimePatternEnum; +import lombok.SneakyThrows; +import util.DateUtil; +import util.JwtUtil; +import util.StringTools; + +/** + * 控制器层 + * + * @author Administrator + * + */ +@RestController +@CrossOrigin +@Api(tags = "雀跃APP搜索 APIs") +@RequestMapping("/search") +public class SearchController { + @Autowired + private UserCollectInfoService userCollectInfoService; + + @Autowired + private JournalController journalController; + + @Autowired + private JournalService journalService; + + @Autowired + private JournalSongService journalSongService; + + @Autowired + private TagService tagService; + + + @ApiOperation(value = "1.查询搜索大类", notes = "如 ‘民谣’,‘电子’") + @GetMapping("/category") + @GlobalInterceptor + public Result> getCategory() { + List tags=tagService.getLevel1Tags(); + List searchCategoryDTOs=tags.stream().map(this::getSearchCategoryDTO).collect(Collectors.toList()); + return Result.success(searchCategoryDTOs); + } + private SearchCategoryDTO getSearchCategoryDTO(Tag tag) { + SearchCategoryDTO searchCategoryDTO=new SearchCategoryDTO(); + BeanUtils.copyProperties(tag, searchCategoryDTO); + return searchCategoryDTO; + } +} diff --git a/luoo_music/src/main/java/com/luoo/music/dao/JournalTagDao.java b/luoo_music/src/main/java/com/luoo/music/dao/JournalTagDao.java index b055f7c..471a2b1 100644 --- a/luoo_music/src/main/java/com/luoo/music/dao/JournalTagDao.java +++ b/luoo_music/src/main/java/com/luoo/music/dao/JournalTagDao.java @@ -29,6 +29,6 @@ public interface JournalTagDao extends JpaRepository, JpaSpec @Query("DELETE FROM JournalTag jt WHERE jt.journalId = :journalId") int deleteByJournalId(@Param("journalId") String journalId); - @Query(value = "select journal_id FROM tb_journal_tag where tag_id=(select id from tb_tag_info where level=?1 and name_ch=?2 limit 1)", nativeQuery = true) - List getJournalIdByLevelAndChName(int level,String chName); + @Query(value = "select journal_id FROM tb_journal_tag where tag_id=?1", nativeQuery = true) + List getJournalIdByTagId(String tagId); } diff --git a/luoo_music/src/main/java/com/luoo/music/dao/TagDao.java b/luoo_music/src/main/java/com/luoo/music/dao/TagDao.java index c888f53..fc47281 100644 --- a/luoo_music/src/main/java/com/luoo/music/dao/TagDao.java +++ b/luoo_music/src/main/java/com/luoo/music/dao/TagDao.java @@ -18,9 +18,12 @@ public interface TagDao extends JpaRepository, JpaSpecificationExec @Query(value = "select * from tb_tag_info where parent_id='' order by rand() limit ?1 ", nativeQuery = true) List random(int limit); - @Query(value = "select name_ch from tb_tag_info where parent_id=(select id from tb_tag_info where name_ch='语言' and level=1 limit 1) ", nativeQuery = true) - List getLanguageList(); + @Query(value = "select * from tb_tag_info where parent_id=(select id from tb_tag_info where name_ch='语言' and level=1 limit 1) ", nativeQuery = true) + List getLanguageList(); - @Query(value = "select name_ch from tb_tag_info where level=1 and not name_ch='语言' ", nativeQuery = true) - List getStyleList(); + @Query(value = "select * from tb_tag_info where level=1 and not name_ch='语言' ", nativeQuery = true) + List getStyleList(); + + @Query(value = "select * from tb_tag_info where level=1", nativeQuery = true) + List getLevel1Tags(); } diff --git a/luoo_music/src/main/java/com/luoo/music/dto/request/JournalQueryReq.java b/luoo_music/src/main/java/com/luoo/music/dto/request/JournalQueryReq.java index e2c21f7..aa3410f 100644 --- a/luoo_music/src/main/java/com/luoo/music/dto/request/JournalQueryReq.java +++ b/luoo_music/src/main/java/com/luoo/music/dto/request/JournalQueryReq.java @@ -12,10 +12,8 @@ import java.io.Serializable; @ApiModel public class JournalQueryReq implements Serializable { private static final long serialVersionUID = -1198060864891902188L; - @ApiModelProperty(value = "筛选条件:风格", example = "民谣") - private String style; - @ApiModelProperty(value = "筛选条件:语言", example = "国语") - private String language; + @ApiModelProperty(value = "筛选条件:类目Id", example = "民谣/国语 id") + private String categoryId; @ApiModelProperty(value = "筛选条件:期刊号范围", example = "900~800") private String journalNoRange; @ApiModelProperty(value = "分页: 页码,以1开始,即获取最新的几期", example = "1") diff --git a/luoo_music/src/main/java/com/luoo/music/dto/response/JournalFilterDTO.java b/luoo_music/src/main/java/com/luoo/music/dto/response/JournalFilterDTO.java index 05de373..4f55bd4 100644 --- a/luoo_music/src/main/java/com/luoo/music/dto/response/JournalFilterDTO.java +++ b/luoo_music/src/main/java/com/luoo/music/dto/response/JournalFilterDTO.java @@ -8,9 +8,9 @@ import lombok.Data; @Data public class JournalFilterDTO { @ApiModelProperty(value = "风格筛选条件") - private List styleList; + private List styleList; @ApiModelProperty(value = "语言筛选条件") - private List languageList; + private List languageList; @ApiModelProperty(value = "期刊号筛选条件") private List journalNoList; } diff --git a/luoo_music/src/main/java/com/luoo/music/dto/response/SearchCategoryDTO.java b/luoo_music/src/main/java/com/luoo/music/dto/response/SearchCategoryDTO.java new file mode 100644 index 0000000..32e0c91 --- /dev/null +++ b/luoo_music/src/main/java/com/luoo/music/dto/response/SearchCategoryDTO.java @@ -0,0 +1,18 @@ +package com.luoo.music.dto.response; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class SearchCategoryDTO { + @ApiModelProperty(value = "ID") + private String id; + @ApiModelProperty(value = "中文名") + private String nameCh; + @ApiModelProperty(value = "英文名") + private String nameEn; + @ApiModelProperty(value = "图片路径") + private String image; + @ApiModelProperty(value = "说明文案") + private String description; +} diff --git a/luoo_music/src/main/java/com/luoo/music/dto/response/TagDTO.java b/luoo_music/src/main/java/com/luoo/music/dto/response/TagDTO.java new file mode 100644 index 0000000..63bed1f --- /dev/null +++ b/luoo_music/src/main/java/com/luoo/music/dto/response/TagDTO.java @@ -0,0 +1,12 @@ +package com.luoo.music.dto.response; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class TagDTO { + @ApiModelProperty(value = "ID") + private String id; + @ApiModelProperty(value = "中文名") + private String name; +} diff --git a/luoo_music/src/main/java/com/luoo/music/pojo/Tag.java b/luoo_music/src/main/java/com/luoo/music/pojo/Tag.java index e10cd50..c9ac810 100644 --- a/luoo_music/src/main/java/com/luoo/music/pojo/Tag.java +++ b/luoo_music/src/main/java/com/luoo/music/pojo/Tag.java @@ -1,7 +1,7 @@ package com.luoo.music.pojo; -import lombok.Data; +import lombok.*; import org.hibernate.proxy.HibernateProxy; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDate; @@ -15,11 +15,10 @@ import java.io.Serializable; import java.time.LocalDateTime; import java.util.Objects; -/** - * 标签信息表 - * @author locust - */ -@Data +@Getter +@Setter +@ToString +@RequiredArgsConstructor @Entity @Table(name = "tb_tag_info") @EntityListeners(AuditingEntityListener.class) @@ -54,6 +53,16 @@ public class Tag implements Serializable { */ private Integer state; + /** + * 说明文案 + */ + private String description; + + /** + * 图片路径 + */ + private String image; + /** * 创建人用户ID */ diff --git a/luoo_music/src/main/java/com/luoo/music/service/JournalService.java b/luoo_music/src/main/java/com/luoo/music/service/JournalService.java index 7c65d4b..57aa4e7 100644 --- a/luoo_music/src/main/java/com/luoo/music/service/JournalService.java +++ b/luoo_music/src/main/java/com/luoo/music/service/JournalService.java @@ -205,11 +205,8 @@ public class JournalService { private List getJournalIds(JournalQueryReq queryReq) { - if(StringUtils.isNotBlank(queryReq.getLanguage())){ - return journalTagDao.getJournalIdByLevelAndChName(2,queryReq.getLanguage()); - } - if(StringUtils.isNotBlank(queryReq.getStyle())){ - return journalTagDao.getJournalIdByLevelAndChName(1,queryReq.getStyle()); + if(StringUtils.isNotBlank(queryReq.getCategoryId())){ + return journalTagDao.getJournalIdByTagId(queryReq.getCategoryId()); } return Collections.emptyList(); } diff --git a/luoo_music/src/main/java/com/luoo/music/service/TagService.java b/luoo_music/src/main/java/com/luoo/music/service/TagService.java index d85e5b3..d0587c8 100644 --- a/luoo_music/src/main/java/com/luoo/music/service/TagService.java +++ b/luoo_music/src/main/java/com/luoo/music/service/TagService.java @@ -6,17 +6,22 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.luoo.music.dao.TagDao; +import com.luoo.music.pojo.Tag; @Service public class TagService { @Autowired private TagDao tagDao; - public List getLanguageList() { + public List getLanguageList() { return tagDao.getLanguageList(); } - public List getStyleList() { + public List getStyleList() { return tagDao.getStyleList(); } + public List getLevel1Tags() { + return tagDao.getLevel1Tags(); + } + }