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 { ...@@ -19,7 +19,7 @@ public class UserReserve extends BaseEntity {
private String matchId; private String matchId;
//0比赛 1球队 //0比赛 1球队 2 资讯
private Integer type; 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 { ...@@ -26,6 +26,11 @@ public interface ArticleService {
ResponseData<?> getArticleListByTeamId(GetArticleListByTeamIdRequest commonPage, HttpServletRequest request); ResponseData<?> getArticleListByTeamId(GetArticleListByTeamIdRequest commonPage, HttpServletRequest request);
ResponseData<?> articleSearch(ArticleSearchRequest searchRequest, HttpServletRequest request);
//type 0 收藏 1 取消收藏
ResponseData<?> collectArticle(CommonIntId commonIntId, int type, HttpServletRequest request);
// back // back
ResponseData<?> getArticleList(ArticleListRequest articleListRequest, HttpServletRequest request); ResponseData<?> getArticleList(ArticleListRequest articleListRequest, HttpServletRequest request);
......
...@@ -44,6 +44,8 @@ public class ArticleServiceImpl implements ArticleService { ...@@ -44,6 +44,8 @@ public class ArticleServiceImpl implements ArticleService {
@Resource @Resource
private ArticleMapper articleMapper; private ArticleMapper articleMapper;
@Resource @Resource
private UserReserveMapper userReserveMapper;
@Resource
private RedisUtilsService redisUtilsService; private RedisUtilsService redisUtilsService;
@Resource @Resource
private ArticleLikeMapper articleLikeMapper; private ArticleLikeMapper articleLikeMapper;
...@@ -375,7 +377,7 @@ public class ArticleServiceImpl implements ArticleService { ...@@ -375,7 +377,7 @@ public class ArticleServiceImpl implements ArticleService {
@Override @Override
public ResponseData<?> getArticleListByTeamId(GetArticleListByTeamIdRequest commonPage, HttpServletRequest request) { public ResponseData<?> getArticleListByTeamId(GetArticleListByTeamIdRequest commonPage, HttpServletRequest request) {
Team team = teamMapper.selectById(commonPage.getId()); Team team = teamMapper.selectById(commonPage.getId());
if(team == null) if (team == null)
return ResponseData.fail400Response("Team id 错误"); return ResponseData.fail400Response("Team id 错误");
Sports sports = sportsMapper.selectById(team.getSportsDbId()); Sports sports = sportsMapper.selectById(team.getSportsDbId());
...@@ -397,16 +399,16 @@ public class ArticleServiceImpl implements ArticleService { ...@@ -397,16 +399,16 @@ public class ArticleServiceImpl implements ArticleService {
wrapper.eq("deleted", StatusEnum.ENABLE.getCode()); wrapper.eq("deleted", StatusEnum.ENABLE.getCode());
wrapper.eq("content_type", 0); 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.apply("FIND_IN_SET({0},tag_id)", sportsTag.getId());
wrapper.or(); wrapper.or();
wrapper.apply("FIND_IN_SET({0},tag_id)", teamTag.getId()); 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()); 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()); wrapper.apply("FIND_IN_SET({0},tag_id)", teamTag.getId());
} else { } 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); long count = articleMapper.selectCount(wrapper);
...@@ -419,6 +421,80 @@ public class ArticleServiceImpl implements ArticleService { ...@@ -419,6 +421,80 @@ public class ArticleServiceImpl implements ArticleService {
} }
@Override @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) { public ResponseData<?> getArticleList(ArticleListRequest commonPage, HttpServletRequest request) {
int jumpNum = (commonPage.getPageNum() - 1) * commonPage.getPageSize(); int jumpNum = (commonPage.getPageNum() - 1) * commonPage.getPageSize();
...@@ -436,7 +512,7 @@ public class ArticleServiceImpl implements ArticleService { ...@@ -436,7 +512,7 @@ public class ArticleServiceImpl implements ArticleService {
new ResultPage<>(commonPage.getPageNum(), commonPage.getPageSize(), (int) count, responses)); 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<>(); List<GetArticleListResponse> responses = new LinkedList<>();
for (Article article : quizRecords) { for (Article article : quizRecords) {
long isLike = articleLikeMapper.selectCount(Wrappers.<ArticleLike>lambdaQuery() long isLike = articleLikeMapper.selectCount(Wrappers.<ArticleLike>lambdaQuery()
......
...@@ -583,13 +583,19 @@ public class UserServiceImpl implements UserService { ...@@ -583,13 +583,19 @@ public class UserServiceImpl implements UserService {
.eq(UserReserve::getType, 1) .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() return ResponseData.successResponse(UserInfoResponse.builder()
.avatarUrl(ConstantValue.completeAddress(account.getUserIcon())) .avatarUrl(ConstantValue.completeAddress(account.getUserIcon()))
.id(account.getId()) .id(account.getId())
.userName(account.getUserName()) .userName(account.getUserName())
.userDesc(account.getUserDesc()) .userDesc(account.getUserDesc())
.message((int) count + 1) .message((int) count + 1)
.collectArticle(0) .collectArticle((int) collectArticle)
.collectTeam((int) collectTeam) .collectTeam((int) collectTeam)
.build()); .build());
} }
......
...@@ -46,7 +46,7 @@ public class JWTInterceptor implements HandlerInterceptor { ...@@ -46,7 +46,7 @@ public class JWTInterceptor implements HandlerInterceptor {
renderJson(response, ResponseData.failResponse(ExceptionCode.LOGIN_INVALID_STATUS_CODE, "Token 失效请重新登录")); renderJson(response, ResponseData.failResponse(ExceptionCode.LOGIN_INVALID_STATUS_CODE, "Token 失效请重新登录"));
return false; return false;
} catch (Exception e) { } 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 false;
} }
return true; return true;
......
...@@ -34,11 +34,18 @@ public class IntercaptorConfig implements WebMvcConfigurer { ...@@ -34,11 +34,18 @@ public class IntercaptorConfig implements WebMvcConfigurer {
"/match/customMadeTeam") "/match/customMadeTeam")
.excludePathPatterns("/room/getGiftList", "/room/getRoomInfo", "/room/getAnchorMatch", "/room/leaderboard", "/room/getHotAnchor", "/room/getChatMessage") .excludePathPatterns("/room/getGiftList", "/room/getRoomInfo", "/room/getAnchorMatch", "/room/leaderboard", "/room/getHotAnchor", "/room/getChatMessage")
.excludePathPatterns("/live/**") .excludePathPatterns("/live/**")
.excludePathPatterns("/article/**")
.excludePathPatterns("/pcHome/**") .excludePathPatterns("/pcHome/**")
.excludePathPatterns("/data/**") .excludePathPatterns("/data/**")
.excludePathPatterns("/platform/liveCutImgNotify") .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; ...@@ -2,6 +2,7 @@ package com.live.server.controller;
import com.live.common.domain.ResponseData; import com.live.common.domain.ResponseData;
import com.live.common.domain.request.ArticleByTagIdRequest; 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.CommonIntId;
import com.live.common.domain.request.CommonStringId; import com.live.common.domain.request.CommonStringId;
import com.live.common.service.ArticleService; import com.live.common.service.ArticleService;
...@@ -14,7 +15,7 @@ import javax.servlet.http.HttpServletRequest; ...@@ -14,7 +15,7 @@ import javax.servlet.http.HttpServletRequest;
@CrossOrigin @CrossOrigin
@RestController @RestController
@RequestMapping("/article") @RequestMapping("/article")
@Api(tags = "新闻接口") @Api(tags = "新闻 资讯接口")
public class ArticleController { public class ArticleController {
@Resource @Resource
...@@ -85,6 +86,22 @@ public class ArticleController { ...@@ -85,6 +86,22 @@ public class ArticleController {
return articleService.getArticleInfoById(commonStringId, request); 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") @PostMapping(value = "/likeArticle")
@ApiOperation(value = "给文章点赞 / 取消点赞 文章ID") @ApiOperation(value = "给文章点赞 / 取消点赞 文章ID")
@ApiResponses({ @ApiResponses({
...@@ -101,4 +118,36 @@ public class ArticleController { ...@@ -101,4 +118,36 @@ public class ArticleController {
return articleService.likeArticle(commonIntId, request); 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