SearchController.java 2.96 KB
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());
    }

}