Commit 8cd6c2f8 by Lem

文章搜索,收藏

parent c3eb7653
package com.live.common.domain.dto.api;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ArticleSearchResponse {
private List<TagInfoResponse> tags;
private List<ArticleInfo> articleInfos;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class ArticleInfo {
private Integer id;
private String title;
private String dateTime;
}
}
......@@ -19,7 +19,7 @@ public class UserReserve extends BaseEntity {
private String matchId;
//0比赛 1球队
//0比赛 1球队 2 资讯
private Integer type;
}
package com.live.common.domain.request;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
public class ArticleSearchRequest extends CommonPage {
private String searchContent;
}
......@@ -26,6 +26,11 @@ public interface ArticleService {
ResponseData<?> getArticleListByTeamId(GetArticleListByTeamIdRequest commonPage, HttpServletRequest request);
ResponseData<?> articleSearch(ArticleSearchRequest searchRequest, HttpServletRequest request);
//type 0 收藏 1 取消收藏
ResponseData<?> collectArticle(CommonIntId commonIntId, int type, HttpServletRequest request);
// back
ResponseData<?> getArticleList(ArticleListRequest articleListRequest, HttpServletRequest request);
......
......@@ -44,6 +44,8 @@ public class ArticleServiceImpl implements ArticleService {
@Resource
private ArticleMapper articleMapper;
@Resource
private UserReserveMapper userReserveMapper;
@Resource
private RedisUtilsService redisUtilsService;
@Resource
private ArticleLikeMapper articleLikeMapper;
......@@ -375,7 +377,7 @@ public class ArticleServiceImpl implements ArticleService {
@Override
public ResponseData<?> getArticleListByTeamId(GetArticleListByTeamIdRequest commonPage, HttpServletRequest request) {
Team team = teamMapper.selectById(commonPage.getId());
if(team == null)
if (team == null)
return ResponseData.fail400Response("Team id 错误");
Sports sports = sportsMapper.selectById(team.getSportsDbId());
......@@ -397,16 +399,16 @@ public class ArticleServiceImpl implements ArticleService {
wrapper.eq("deleted", StatusEnum.ENABLE.getCode());
wrapper.eq("content_type", 0);
if(sportsTag != null && teamTag != null){
if (sportsTag != null && teamTag != null) {
wrapper.apply("FIND_IN_SET({0},tag_id)", sportsTag.getId());
wrapper.or();
wrapper.apply("FIND_IN_SET({0},tag_id)", teamTag.getId());
} else if(sportsTag != null){
} else if (sportsTag != null) {
wrapper.apply("FIND_IN_SET({0},tag_id)", sportsTag.getId());
} else if(teamTag != null){
} else if (teamTag != null) {
wrapper.apply("FIND_IN_SET({0},tag_id)", teamTag.getId());
} else {
return ResponseData.successResponse(new ResultPage<>(commonPage.getPageNum(), commonPage.getPageSize(), (int) 0, new ArrayList()));
return ResponseData.successResponse(new ResultPage<>(commonPage.getPageNum(), commonPage.getPageSize(), (int) 0, new ArrayList()));
}
long count = articleMapper.selectCount(wrapper);
......@@ -419,6 +421,80 @@ public class ArticleServiceImpl implements ArticleService {
}
@Override
public ResponseData<?> articleSearch(ArticleSearchRequest commonPage, HttpServletRequest request) {
if(StringUtils.isBlank(commonPage.getSearchContent()))
return ResponseData.fail400Response("请输入搜索内容");
int jumpNum = (commonPage.getPageNum() - 1) * commonPage.getPageSize();
QueryWrapper<Article> wrapper = new QueryWrapper<>();
wrapper.eq("deleted", StatusEnum.ENABLE.getCode());
wrapper.like("title", commonPage.getSearchContent());
long count = articleMapper.selectCount(wrapper);
wrapper.orderByDesc("create_time");
wrapper.last(String.format(" limit %s,%s", jumpNum, commonPage.getPageSize()));
List<Article> quizRecords = articleMapper.selectList(wrapper);
ArticleSearchResponse responses = new ArticleSearchResponse();
responses.setArticleInfos(new ArrayList<>());
responses.setTags(new ArrayList<>());
List<Tag> tags = tagMapper.selectList(Wrappers.<Tag>lambdaQuery()
.eq(Tag::getDeleted, 0)
.like(Tag::getTagName, commonPage.getSearchContent())
.orderByDesc(Tag::getSort)
);
for (Tag tag : tags) {
responses.getTags().add(TagInfoResponse.builder()
.id(tag.getId())
.name(tag.getTagName())
.build());
}
for (Article article : quizRecords) {
responses.getArticleInfos().add(ArticleSearchResponse.ArticleInfo.builder()
.id(article.getId())
.dateTime(DateUtil.format(article.getReleaseTime(), DateUtil.MDHM_))
.title(article.getTitle())
.build());
}
return ResponseData.successResponse(
new ResultPage<>(commonPage.getPageNum(), commonPage.getPageSize(), (int) count, responses));
}
@Override
public ResponseData<?> collectArticle(CommonIntId commonIntId, int type, HttpServletRequest request) {
try {
Article article = articleMapper.selectById(commonIntId.getId());
if(article == null)
return ResponseData.fail400Response("文章不存在");
String phone = CommonMethod.getUserPhone(request);
User account = userMapper.selectOne(Wrappers.<User>lambdaQuery()
.eq(User::getPhone, phone)
);
if(type == 0) {
userReserveMapper.insert(UserReserve.builder()
.userId(account.getId())
.matchId(String.valueOf(article.getId()))
.type(2)
.build());
} else if(type == 1){
userReserveMapper.delete(Wrappers.<UserReserve>lambdaQuery()
.eq(UserReserve::getUserId, account.getId())
.eq(UserReserve::getType, 2)
);
}
} catch (Exception e) {
e.printStackTrace();
}
return ResponseData.successResponse();
}
@Override
public ResponseData<?> getArticleList(ArticleListRequest commonPage, HttpServletRequest request) {
int jumpNum = (commonPage.getPageNum() - 1) * commonPage.getPageSize();
......@@ -436,7 +512,7 @@ public class ArticleServiceImpl implements ArticleService {
new ResultPage<>(commonPage.getPageNum(), commonPage.getPageSize(), (int) count, responses));
}
private List<GetArticleListResponse> changeDto(List<Article> quizRecords){
private List<GetArticleListResponse> changeDto(List<Article> quizRecords) {
List<GetArticleListResponse> responses = new LinkedList<>();
for (Article article : quizRecords) {
long isLike = articleLikeMapper.selectCount(Wrappers.<ArticleLike>lambdaQuery()
......
......@@ -583,13 +583,19 @@ public class UserServiceImpl implements UserService {
.eq(UserReserve::getType, 1)
);
long collectArticle = userReserveMapper.selectCount(Wrappers.<UserReserve>lambdaQuery()
.eq(UserReserve::getDeleted, StatusEnum.ENABLE.getCode())
.eq(UserReserve::getUserId, account.getId())
.eq(UserReserve::getType, 2)
);
return ResponseData.successResponse(UserInfoResponse.builder()
.avatarUrl(ConstantValue.completeAddress(account.getUserIcon()))
.id(account.getId())
.userName(account.getUserName())
.userDesc(account.getUserDesc())
.message((int) count + 1)
.collectArticle(0)
.collectArticle((int) collectArticle)
.collectTeam((int) collectTeam)
.build());
}
......
......@@ -46,7 +46,7 @@ public class JWTInterceptor implements HandlerInterceptor {
renderJson(response, ResponseData.failResponse(ExceptionCode.LOGIN_INVALID_STATUS_CODE, "Token 失效请重新登录"));
return false;
} catch (Exception e) {
renderJson(response, ResponseData.failResponse(ExceptionCode.LOGIN_INVALID_STATUS_CODE, "获取 Token 错误"));
renderJson(response, ResponseData.failResponse(ExceptionCode.LOGIN_INVALID_STATUS_CODE, "请先登录"));
return false;
}
return true;
......
......@@ -34,11 +34,18 @@ public class IntercaptorConfig implements WebMvcConfigurer {
"/match/customMadeTeam")
.excludePathPatterns("/room/getGiftList", "/room/getRoomInfo", "/room/getAnchorMatch", "/room/leaderboard", "/room/getHotAnchor", "/room/getChatMessage")
.excludePathPatterns("/live/**")
.excludePathPatterns("/article/**")
.excludePathPatterns("/pcHome/**")
.excludePathPatterns("/data/**")
.excludePathPatterns("/platform/liveCutImgNotify")
.excludePathPatterns("/article/getArticleTopTagList",
"/article/getArticleAllTagList",
"/article/getTopArticleList",
"/article/getArticleListByTagId",
"/article/getArticleInfoById",
"/article/articleSearch"
)
;
}
}
\ No newline at end of file
......@@ -2,6 +2,7 @@ package com.live.server.controller;
import com.live.common.domain.ResponseData;
import com.live.common.domain.request.ArticleByTagIdRequest;
import com.live.common.domain.request.ArticleSearchRequest;
import com.live.common.domain.request.CommonIntId;
import com.live.common.domain.request.CommonStringId;
import com.live.common.service.ArticleService;
......@@ -14,7 +15,7 @@ import javax.servlet.http.HttpServletRequest;
@CrossOrigin
@RestController
@RequestMapping("/article")
@Api(tags = "新闻接口")
@Api(tags = "新闻 资讯接口")
public class ArticleController {
@Resource
......@@ -85,6 +86,22 @@ public class ArticleController {
return articleService.getArticleInfoById(commonStringId, request);
}
@PostMapping(value = "/articleSearch")
@ApiOperation(value = "文章/资讯 搜索")
@ApiResponses({
@ApiResponse(code = 200, message = "成功处理请求"),
@ApiResponse(code = 401, message = "没有权限访问该服务"),
@ApiResponse(code = 403, message = "权限不足无法访问该服务"),
@ApiResponse(code = 404, message = "未发现该服务"),
@ApiResponse(code = 500, message = "服务器内部错误")
})
@ApiImplicitParams({
@ApiImplicitParam(name = "token", value = "登录凭证(登录后 token 值)", dataType = "String", paramType = "header", required = true)
})
public ResponseData<?> articleSearch(@RequestBody ArticleSearchRequest searchRequest, HttpServletRequest request) {
return articleService.articleSearch(searchRequest, request);
}
@PostMapping(value = "/likeArticle")
@ApiOperation(value = "给文章点赞 / 取消点赞 文章ID")
@ApiResponses({
......@@ -101,4 +118,36 @@ public class ArticleController {
return articleService.likeArticle(commonIntId, request);
}
@PostMapping(value = "/collectArticle")
@ApiOperation(value = "收藏文章")
@ApiResponses({
@ApiResponse(code = 200, message = "成功处理请求"),
@ApiResponse(code = 401, message = "没有权限访问该服务"),
@ApiResponse(code = 403, message = "权限不足无法访问该服务"),
@ApiResponse(code = 404, message = "未发现该服务"),
@ApiResponse(code = 500, message = "服务器内部错误")
})
@ApiImplicitParams({
@ApiImplicitParam(name = "token", value = "登录凭证(登录后 token 值)", dataType = "String", paramType = "header", required = true)
})
public ResponseData<?> collectArticle(@RequestBody CommonIntId commonIntId, HttpServletRequest request) {
return articleService.collectArticle(commonIntId, 0, request);
}
@PostMapping(value = "/cancelCollectArticle")
@ApiOperation(value = "取消收藏文章")
@ApiResponses({
@ApiResponse(code = 200, message = "成功处理请求"),
@ApiResponse(code = 401, message = "没有权限访问该服务"),
@ApiResponse(code = 403, message = "权限不足无法访问该服务"),
@ApiResponse(code = 404, message = "未发现该服务"),
@ApiResponse(code = 500, message = "服务器内部错误")
})
@ApiImplicitParams({
@ApiImplicitParam(name = "token", value = "登录凭证(登录后 token 值)", dataType = "String", paramType = "header", required = true)
})
public ResponseData<?> cancelCollectArticle(@RequestBody CommonIntId commonIntId, HttpServletRequest request) {
return articleService.collectArticle(commonIntId, 1, request);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment