package com.tanpu.community.controller; import com.tanpu.common.api.CommonResp; import com.tanpu.common.auth.UserHolder; import com.tanpu.community.api.beans.qo.FollowQo; import com.tanpu.community.api.beans.qo.TopicRankQo; import com.tanpu.community.api.beans.req.search.ThemeFullSearchReq; import com.tanpu.community.api.beans.resp.ThemeAndUserSearchResp; import com.tanpu.community.api.beans.resp.ThemeFullSearchResp; import com.tanpu.community.api.beans.resp.UserSearchResp; import com.tanpu.community.manager.HomePageManager; import com.tanpu.community.manager.ThemeManager; import com.tanpu.community.manager.TopicManager; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.util.List; @RestController @Slf4j @RequestMapping(value = "/api/search") public class SearchController { @Resource private UserHolder userHolder; @Resource private ThemeManager themeManager; @Resource private HomePageManager homePageManager; @Resource private TopicManager topicManager; // 内容全文搜索 @ApiOperation("帖子全文搜索") @PostMapping(value = "/themeFullText") @ResponseBody public CommonResp<ThemeFullSearchResp> themeFullText(@RequestBody ThemeFullSearchReq req) { ThemeFullSearchResp resp = themeManager.themeFullSearch(req.keyword, req.page.pageNumber, req.page.pageSize, req.ident, userHolder.getUserId()); return CommonResp.success(resp); } // 用户+内容全文+话题搜索 @ApiOperation("综合搜索") @PostMapping(value = "/muLtipuleSearch") @ResponseBody public CommonResp<ThemeAndUserSearchResp> themeFullTextAndUserSearch(@RequestBody ThemeFullSearchReq req) { ThemeFullSearchResp themeFullSearch = themeManager.themeFullSearch(req.keyword, req.page.pageNumber, req.page.pageSize, req.ident, userHolder.getUserId()); List<FollowQo> users = homePageManager.userNameSerach(req.keyword, 1, 3, req.ident, userHolder.getUserId()); List<TopicRankQo> topics = topicManager.getTopicRankList(req.getKeyword()); return CommonResp.success(ThemeAndUserSearchResp.builder().themes(themeFullSearch.getThemes()).users(users).topics(topics).build()); } // 用户搜索 @ApiOperation("用户姓名模糊查询") @PostMapping(value = "/userNameFuzzy") @ResponseBody public CommonResp<UserSearchResp> userNameSerach(@RequestBody ThemeFullSearchReq req) { List<FollowQo> users = homePageManager.userNameSerach(req.keyword, req.page.pageNumber, req.page.pageSize, req.ident, userHolder.getUserId()); return CommonResp.success(UserSearchResp.builder().users(users).build()); } }