|
@@ -1,62 +1,115 @@
|
|
-//package com.tourism.webadmin.app.website.controller;
|
|
|
|
-//
|
|
|
|
-//import cn.dev33.satoken.annotation.SaIgnore;
|
|
|
|
-//import com.tourism.common.core.annotation.DisableDataFilter;
|
|
|
|
-//import com.tourism.common.core.object.ResponseResult;
|
|
|
|
-//import com.tourism.common.core.object.TokenData;
|
|
|
|
-//import com.tourism.webadmin.app.website.dto.TourTravelNotesTopicByNameDto;
|
|
|
|
-//import com.tourism.webadmin.app.website.dto.TourTravelNotesTopicListByNameDto;
|
|
|
|
-//import com.tourism.webadmin.app.website.dto.TourVisaSearchDto;
|
|
|
|
-//import com.tourism.webadmin.app.website.vo.TourTravelNotesTopicSearchVo;
|
|
|
|
-//import com.tourism.webadmin.back.model.TourUserLikeTopic;
|
|
|
|
-//import com.tourism.webadmin.back.service.TourUserLikeTopicService;
|
|
|
|
-//import io.swagger.v3.oas.annotations.tags.Tag;
|
|
|
|
-//import lombok.extern.slf4j.Slf4j;
|
|
|
|
-//import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
-//import org.springframework.validation.annotation.Validated;
|
|
|
|
-//import org.springframework.web.bind.annotation.GetMapping;
|
|
|
|
-//import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
|
-//import org.springframework.web.bind.annotation.RestController;
|
|
|
|
-//
|
|
|
|
-///**
|
|
|
|
-// * @author 陈
|
|
|
|
-// * @date 2024年1月24日 9:00:00
|
|
|
|
-// */
|
|
|
|
-//@Tag(name = "游记话题")
|
|
|
|
-//@Slf4j
|
|
|
|
-//@RestController
|
|
|
|
-//@RequestMapping("/website/tourism/travelNotesTopic")
|
|
|
|
-//@DisableDataFilter
|
|
|
|
-//public class TourWebTravelNotesTopicController {
|
|
|
|
-//
|
|
|
|
-//
|
|
|
|
-// @Autowired
|
|
|
|
-// private TourUserLikeTopicService tourUserLikeTopicService;
|
|
|
|
-//
|
|
|
|
-//
|
|
|
|
-// /**
|
|
|
|
-// * 分页条件查询游记话题,默认根据最热进行排序
|
|
|
|
-// * @param tourTravelNotesTopicListByNameDto
|
|
|
|
-// * @return
|
|
|
|
-// */
|
|
|
|
-// @GetMapping("/list")
|
|
|
|
-// public ResponseResult<TourTravelNotesTopicSearchVo> listPage(@Validated TourTravelNotesTopicListByNameDto tourTravelNotesTopicListByNameDto) {
|
|
|
|
-//
|
|
|
|
-// TourTravelNotesTopicSearchVo tourTravelNotesTopicSearchVo = new TourTravelNotesTopicSearchVo();
|
|
|
|
-//
|
|
|
|
-// //根据话题名称查询本人是否收藏
|
|
|
|
-// TourUserLikeTopic tourUserLikeTopic = new TourUserLikeTopic();
|
|
|
|
-// tourUserLikeTopic.setTourTravelNotesTopicName(tourTravelNotesTopicListByNameDto.getName());
|
|
|
|
-// tourUserLikeTopic.setTourUserId(TokenData.takeFromRequest().getUserId());
|
|
|
|
-// if(tourUserLikeTopicService.existByFilter(tourUserLikeTopic)){
|
|
|
|
-// tourTravelNotesTopicSearchVo.setIsCollect(1);
|
|
|
|
-// }else {
|
|
|
|
-// tourTravelNotesTopicSearchVo.setIsCollect(0);
|
|
|
|
-// }
|
|
|
|
-// //根据话题名称查询浏览量
|
|
|
|
-//
|
|
|
|
-// //根据话题名称查询讨论量
|
|
|
|
-// //根据话题名称查询帖子数量
|
|
|
|
-// //根据话题名称查询游记列表
|
|
|
|
-// }
|
|
|
|
-//}
|
|
|
|
|
|
+package com.tourism.webadmin.app.website.controller;
|
|
|
|
+
|
|
|
|
+import cn.dev33.satoken.annotation.SaIgnore;
|
|
|
|
+import com.github.pagehelper.page.PageMethod;
|
|
|
|
+import com.tourism.common.core.annotation.DisableDataFilter;
|
|
|
|
+import com.tourism.common.core.object.ResponseResult;
|
|
|
|
+import com.tourism.common.core.object.TokenData;
|
|
|
|
+import com.tourism.common.core.util.MyModelUtil;
|
|
|
|
+import com.tourism.webadmin.app.website.dto.TourTravelNotesTopicByNameDto;
|
|
|
|
+import com.tourism.webadmin.app.website.dto.TourTravelNotesTopicListByNameDto;
|
|
|
|
+import com.tourism.webadmin.app.website.dto.TourVisaSearchDto;
|
|
|
|
+import com.tourism.webadmin.app.website.vo.TourTravelNotesTopicNotesSearchVo;
|
|
|
|
+import com.tourism.webadmin.app.website.vo.TourTravelNotesTopicSearchVo;
|
|
|
|
+import com.tourism.webadmin.back.model.TourUser;
|
|
|
|
+import com.tourism.webadmin.back.model.TourUserLikeTopic;
|
|
|
|
+import com.tourism.webadmin.back.model.TourismProjectTravelNotesWrite;
|
|
|
|
+import com.tourism.webadmin.back.service.TourTravelNotesTopicService;
|
|
|
|
+import com.tourism.webadmin.back.service.TourUserLikeTopicService;
|
|
|
|
+import com.tourism.webadmin.back.service.TourUserService;
|
|
|
|
+import com.tourism.webadmin.back.vo.TourUserVo;
|
|
|
|
+import io.swagger.v3.oas.annotations.tags.Tag;
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
|
+import org.apache.commons.collections4.CollectionUtils;
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.validation.annotation.Validated;
|
|
|
|
+import org.springframework.web.bind.annotation.GetMapping;
|
|
|
|
+import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
|
+import org.springframework.web.bind.annotation.RestController;
|
|
|
|
+
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
+import java.util.HashSet;
|
|
|
|
+import java.util.List;
|
|
|
|
+import java.util.Map;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * @author 陈
|
|
|
|
+ * @date 2024年1月24日 9:00:00
|
|
|
|
+ */
|
|
|
|
+@Tag(name = "游记话题")
|
|
|
|
+@Slf4j
|
|
|
|
+@RestController
|
|
|
|
+@RequestMapping("/website/tourism/travelNotesTopic")
|
|
|
|
+@DisableDataFilter
|
|
|
|
+public class TourWebTravelNotesTopicController {
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private TourUserLikeTopicService tourUserLikeTopicService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private TourTravelNotesTopicService tourTravelNotesTopicService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private TourUserService tourUserService;
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 分页条件查询游记话题,默认根据最热进行排序
|
|
|
|
+ * @param tourTravelNotesTopicListByNameDto
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ @GetMapping("/list")
|
|
|
|
+ public ResponseResult<TourTravelNotesTopicSearchVo> listPage(@Validated TourTravelNotesTopicListByNameDto tourTravelNotesTopicListByNameDto) {
|
|
|
|
+
|
|
|
|
+ TourTravelNotesTopicSearchVo tourTravelNotesTopicSearchVo = new TourTravelNotesTopicSearchVo();
|
|
|
|
+
|
|
|
|
+ //根据话题名称查询本人是否收藏
|
|
|
|
+ TourUserLikeTopic tourUserLikeTopic = new TourUserLikeTopic();
|
|
|
|
+ tourUserLikeTopic.setTourTravelNotesTopicName(tourTravelNotesTopicListByNameDto.getTopicName());
|
|
|
|
+ tourUserLikeTopic.setTourUserId(TokenData.takeFromRequest().getUserId());
|
|
|
|
+ if(tourUserLikeTopicService.existByFilter(tourUserLikeTopic)){
|
|
|
|
+ tourTravelNotesTopicSearchVo.setIsCollect(1);
|
|
|
|
+ }else {
|
|
|
|
+ tourTravelNotesTopicSearchVo.setIsCollect(0);
|
|
|
|
+ }
|
|
|
|
+ //根据话题名称查询浏览量
|
|
|
|
+ Integer viewCountTopicByName = tourTravelNotesTopicService.getViewCountTopicByName(tourTravelNotesTopicListByNameDto.getTopicName(),tourTravelNotesTopicListByNameDto.getTitleName());
|
|
|
|
+ tourTravelNotesTopicSearchVo.setViewCount(viewCountTopicByName);
|
|
|
|
+ //根据话题名称查询讨论量
|
|
|
|
+ Integer commentCountTopicByName = tourTravelNotesTopicService.getCommentCountTopicByName(tourTravelNotesTopicListByNameDto.getTopicName(),tourTravelNotesTopicListByNameDto.getTitleName());
|
|
|
|
+ tourTravelNotesTopicSearchVo.setCommentCount(commentCountTopicByName);
|
|
|
|
+ //根据话题名称查询帖子数量
|
|
|
|
+ Integer countTravelNotesByName = tourTravelNotesTopicService.getCountTravelNotesByName(tourTravelNotesTopicListByNameDto.getTopicName(),tourTravelNotesTopicListByNameDto.getTitleName());
|
|
|
|
+ tourTravelNotesTopicSearchVo.setTravelNotesCount(countTravelNotesByName);
|
|
|
|
+ //根据话题名称查询游记列表
|
|
|
|
+
|
|
|
|
+ PageMethod.startPage(tourTravelNotesTopicListByNameDto.getPageNum(), tourTravelNotesTopicListByNameDto.getPageSize(), true);
|
|
|
|
+ List<TourismProjectTravelNotesWrite> travelNotesByTopicName =
|
|
|
|
+ tourTravelNotesTopicService.getTravelNotesByTopicName(tourTravelNotesTopicListByNameDto.getTopicName(),tourTravelNotesTopicListByNameDto.getOrderBy());
|
|
|
|
+
|
|
|
|
+ if(CollectionUtils.isNotEmpty(travelNotesByTopicName)) {
|
|
|
|
+ List<TourTravelNotesTopicNotesSearchVo> tourTravelNotesTopicNotesSearchVoList =
|
|
|
|
+ MyModelUtil.copyCollectionTo(travelNotesByTopicName, TourTravelNotesTopicNotesSearchVo.class);
|
|
|
|
+
|
|
|
|
+ //赋值每个游记的创作者昵称和创作者头像
|
|
|
|
+ List<String> userIdList =
|
|
|
|
+ tourTravelNotesTopicNotesSearchVoList.stream().map(TourTravelNotesTopicNotesSearchVo::getCreateUserId).collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ List<TourUser> tourUserList = tourUserService.getInList("userId", new HashSet<>(userIdList));
|
|
|
|
+
|
|
|
|
+ List<TourUserVo> tourUserVoList = MyModelUtil.copyCollectionTo(tourUserList, TourUserVo.class);
|
|
|
|
+ // 按照 userId 分组
|
|
|
|
+ Map<String, List<TourUserVo>> userIdGroupedMap = tourUserVoList.stream().collect(Collectors.groupingBy(TourUserVo::getUserId));
|
|
|
|
+
|
|
|
|
+ tourTravelNotesTopicNotesSearchVoList.stream().forEach(item->{
|
|
|
|
+ List<TourUserVo> tourUsers = userIdGroupedMap.get(item.getCreateUserId());
|
|
|
|
+ item.setCreatedShowName(tourUsers.get(0).getShowName());
|
|
|
|
+ item.setCreatedHeadImageUrl(tourUsers.get(0).getHeadImageUrl());
|
|
|
|
+ });
|
|
|
|
+ tourTravelNotesTopicSearchVo.setTourTravelNotesTopicNotesSearchVoList(tourTravelNotesTopicNotesSearchVoList);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return ResponseResult.success(tourTravelNotesTopicSearchVo);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+}
|