SearchController.java 2.96 KB
Newer Older
张辰's avatar
张辰 committed
1 2 3 4
package com.tanpu.community.controller;

import com.tanpu.common.api.CommonResp;
import com.tanpu.common.auth.UserHolder;
刘基明's avatar
刘基明 committed
5
import com.tanpu.community.api.beans.qo.FollowQo;
刘基明's avatar
刘基明 committed
6
import com.tanpu.community.api.beans.qo.TopicRankQo;
张辰's avatar
张辰 committed
7
import com.tanpu.community.api.beans.req.search.ThemeFullSearchReq;
刘基明's avatar
刘基明 committed
8
import com.tanpu.community.api.beans.resp.ThemeAndUserSearchResp;
张辰's avatar
张辰 committed
9
import com.tanpu.community.api.beans.resp.ThemeFullSearchResp;
刘基明's avatar
刘基明 committed
10 11
import com.tanpu.community.api.beans.resp.UserSearchResp;
import com.tanpu.community.manager.HomePageManager;
张辰's avatar
张辰 committed
12
import com.tanpu.community.manager.ThemeManager;
刘基明's avatar
刘基明 committed
13
import com.tanpu.community.manager.TopicManager;
张辰's avatar
张辰 committed
14 15
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
刘基明's avatar
刘基明 committed
16 17 18 19 20
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;
张辰's avatar
张辰 committed
21 22 23 24 25 26 27 28 29 30 31 32

import javax.annotation.Resource;
import java.util.List;

@RestController
@Slf4j
@RequestMapping(value = "/api/search")
public class SearchController {

    @Resource
    private UserHolder userHolder;

刘基明's avatar
刘基明 committed
33
    @Resource
张辰's avatar
张辰 committed
34 35
    private ThemeManager themeManager;

刘基明's avatar
刘基明 committed
36
    @Resource
刘基明's avatar
刘基明 committed
37 38
    private HomePageManager homePageManager;

刘基明's avatar
刘基明 committed
39 40 41
    @Resource
    private TopicManager topicManager;

张辰's avatar
张辰 committed
42
    // 内容全文搜索
刘基明's avatar
刘基明 committed
43
    @ApiOperation("帖子全文搜索")
张辰's avatar
张辰 committed
44 45 46
    @PostMapping(value = "/themeFullText")
    @ResponseBody
    public CommonResp<ThemeFullSearchResp> themeFullText(@RequestBody ThemeFullSearchReq req) {
张辰's avatar
张辰 committed
47
        ThemeFullSearchResp resp = themeManager.themeFullSearch(req.keyword, req.page.pageNumber, req.page.pageSize, req.ident, userHolder.getUserId());
张辰's avatar
张辰 committed
48
        return CommonResp.success(resp);
张辰's avatar
张辰 committed
49 50
    }

刘基明's avatar
刘基明 committed
51
    // 用户+内容全文+话题搜索
刘基明's avatar
刘基明 committed
52 53
    @ApiOperation("综合搜索")
    @PostMapping(value = "/muLtipuleSearch")
刘基明's avatar
刘基明 committed
54 55 56
    @ResponseBody
    public CommonResp<ThemeAndUserSearchResp> themeFullTextAndUserSearch(@RequestBody ThemeFullSearchReq req) {
        ThemeFullSearchResp themeFullSearch = themeManager.themeFullSearch(req.keyword, req.page.pageNumber, req.page.pageSize, req.ident, userHolder.getUserId());
刘基明's avatar
刘基明 committed
57
        List<FollowQo> users = homePageManager.userNameSerach(req.keyword, 1, 3, req.ident, userHolder.getUserId());
刘基明's avatar
刘基明 committed
58 59
        List<TopicRankQo> topics = topicManager.getTopicRankList(req.getKeyword());

刘基明's avatar
刘基明 committed
60

刘基明's avatar
刘基明 committed
61
        return CommonResp.success(ThemeAndUserSearchResp.builder().themes(themeFullSearch.getThemes()).users(users).topics(topics).build());
刘基明's avatar
刘基明 committed
62 63 64 65 66 67 68 69 70 71 72
    }

    // 用户搜索
    @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());
    }

张辰's avatar
张辰 committed
73
}