Skip to content

Commit 168400c

Browse files
committed
feat: consumer, tag
1 parent 70a3365 commit 168400c

File tree

13 files changed

+710
-1
lines changed

13 files changed

+710
-1
lines changed
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
package com.hackyle.blog.consumer.controller;
2+
3+
import com.alibaba.fastjson.JSON;
4+
import com.hackyle.blog.consumer.dto.PageRequestDto;
5+
import com.hackyle.blog.consumer.dto.PageResponseDto;
6+
import com.hackyle.blog.consumer.qo.TagQo;
7+
import com.hackyle.blog.consumer.service.ArticleTagService;
8+
import com.hackyle.blog.consumer.vo.ArticleVo;
9+
import com.hackyle.blog.consumer.vo.TagVo;
10+
import org.apache.commons.lang3.StringUtils;
11+
import org.slf4j.Logger;
12+
import org.slf4j.LoggerFactory;
13+
import org.springframework.beans.factory.annotation.Autowired;
14+
import org.springframework.web.bind.annotation.PathVariable;
15+
import org.springframework.web.bind.annotation.RequestMapping;
16+
import org.springframework.web.bind.annotation.RequestMethod;
17+
import org.springframework.web.bind.annotation.RestController;
18+
import org.springframework.web.servlet.ModelAndView;
19+
20+
import javax.servlet.http.HttpServletRequest;
21+
import java.util.List;
22+
import java.util.stream.Collectors;
23+
24+
/**
25+
* 标签:读取标签,渲染tag.html。
26+
* 点击tag,获取该tag的所有文章,tag/tag名/页码
27+
*/
28+
@RestController
29+
public class TagController {
30+
private static final Logger LOGGER = LoggerFactory.getLogger(TagController.class);
31+
32+
@Autowired
33+
private ArticleTagService articleTagService;
34+
35+
36+
/**
37+
* 查询所有文章标签
38+
*/
39+
@RequestMapping(value = {"/tag"}, method = {RequestMethod.GET, RequestMethod.POST})
40+
public ModelAndView queryTag(ModelAndView modelAndView) {
41+
List<TagVo> tagVoList = articleTagService.selectTag();
42+
43+
modelAndView.addObject("tagVoList", tagVoList);
44+
LOGGER.info("查询所有文章标签-controller层出参-tagVoList={}", JSON.toJSONString(tagVoList));
45+
46+
modelAndView.setViewName("tag");
47+
return modelAndView;
48+
}
49+
50+
/**
51+
* 分页获取某标签下的所有文章
52+
*/
53+
@RequestMapping(value = {"/tag/{tagCode}/{pageNum}"}, method = {RequestMethod.GET, RequestMethod.POST})
54+
public ModelAndView tagArticle(ModelAndView modelAndView, @PathVariable("tagCode") String tagCode,
55+
@PathVariable("pageNum") Integer pageNum, HttpServletRequest request) {
56+
PageRequestDto<TagQo> pageRequestDto = new PageRequestDto<>();
57+
TagQo tagQo = new TagQo();
58+
tagQo.setTagCode(tagCode);
59+
60+
if(pageNum == null || pageNum < 1) {
61+
pageNum = 1;
62+
}
63+
pageRequestDto.setCurrentPage(pageNum);
64+
65+
String pageSize = request.getParameter("pageSize");
66+
if(StringUtils.isBlank(pageSize)) {
67+
pageRequestDto.setPageSize(15);
68+
} else {
69+
pageRequestDto.setPageSize(Integer.parseInt(pageSize));
70+
}
71+
72+
//多个关键字,使用逗号分割
73+
String tagKeys = request.getParameter("tagKeys");
74+
if(StringUtils.isNotBlank(tagKeys)) {
75+
tagQo.setTagKeys(tagKeys);
76+
modelAndView.addObject("tagKeys", tagKeys);
77+
}
78+
pageRequestDto.setCondition(tagQo);
79+
80+
LOGGER.info("分页获取某标签下的所有文章-controller入参-pageRequestDto={}", JSON.toJSONString(pageRequestDto));
81+
PageResponseDto<ArticleVo> pageResponseDto = articleTagService.selectArticleByTag(pageRequestDto);
82+
String articleUris = pageResponseDto.getRows().stream().map(ArticleVo::getUri).collect(Collectors.joining(","));
83+
LOGGER.info("分页获取某标签下的所有文章-controller出参-pageRequestDto={}-articleUris={}", JSON.toJSONString(pageRequestDto), articleUris);
84+
85+
modelAndView.addObject("pageResponseDto", pageResponseDto);
86+
modelAndView.addObject("tagCode", tagCode);
87+
modelAndView.addObject("tagName", pageRequestDto.getCondition().getTagName());
88+
89+
modelAndView.setViewName("tag");
90+
return modelAndView;
91+
}
92+
93+
}
Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
package com.hackyle.blog.consumer.entity;
2+
3+
import com.baomidou.mybatisplus.annotation.TableField;
4+
import com.baomidou.mybatisplus.annotation.TableId;
5+
import com.baomidou.mybatisplus.annotation.TableName;
6+
7+
import java.io.Serializable;
8+
import java.util.Date;
9+
10+
/**
11+
* 文章标签
12+
*/
13+
@TableName(value ="tb_tag")
14+
public class TagEntity implements Serializable {
15+
/**
16+
* ID:为了后续数据迁移,不使用自增主键,使用时间戳
17+
*/
18+
@TableId
19+
private Long id;
20+
21+
/**
22+
* 标签名称
23+
*/
24+
private String name;
25+
26+
/**
27+
* 标签颜色
28+
*/
29+
private String color;
30+
31+
/**
32+
* 标签编码
33+
*/
34+
private String code;
35+
36+
/**
37+
* 标签描述
38+
*/
39+
private String description;
40+
41+
/**
42+
* 创建时间: 年-月-日 时:分:秒
43+
*/
44+
private Date createTime;
45+
46+
/**
47+
* 更新时间
48+
*/
49+
private Date updateTime;
50+
51+
/**
52+
* 是否删除:0-false-未删除;1-true-已删除
53+
*/
54+
@TableField("is_deleted")
55+
private Boolean deleted;
56+
57+
@TableField(exist = false)
58+
private static final long serialVersionUID = 1L;
59+
60+
public Long getId() {
61+
return id;
62+
}
63+
64+
public void setId(Long id) {
65+
this.id = id;
66+
}
67+
68+
public String getName() {
69+
return name;
70+
}
71+
72+
public void setName(String name) {
73+
this.name = name;
74+
}
75+
76+
public String getColor() {
77+
return color;
78+
}
79+
80+
public void setColor(String color) {
81+
this.color = color;
82+
}
83+
84+
public String getCode() {
85+
return code;
86+
}
87+
88+
public void setCode(String code) {
89+
this.code = code;
90+
}
91+
92+
public String getDescription() {
93+
return description;
94+
}
95+
96+
public void setDescription(String description) {
97+
this.description = description;
98+
}
99+
100+
public Date getCreateTime() {
101+
return createTime;
102+
}
103+
104+
public void setCreateTime(Date createTime) {
105+
this.createTime = createTime;
106+
}
107+
108+
public Date getUpdateTime() {
109+
return updateTime;
110+
}
111+
112+
public void setUpdateTime(Date updateTime) {
113+
this.updateTime = updateTime;
114+
}
115+
116+
public Boolean getDeleted() {
117+
return deleted;
118+
}
119+
120+
public void setDeleted(Boolean deleted) {
121+
this.deleted = deleted;
122+
}
123+
124+
public static long getSerialVersionUID() {
125+
return serialVersionUID;
126+
}
127+
}

blog-consumer/src/main/java/com/hackyle/blog/consumer/mapper/ArticleTagMapper.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
44
import com.hackyle.blog.consumer.entity.ArticleTagEntity;
5+
import com.hackyle.blog.consumer.entity.TagEntity;
56
import com.hackyle.blog.consumer.po.ArticleTagPo;
67
import org.apache.ibatis.annotations.Mapper;
78
import org.apache.ibatis.annotations.Param;
@@ -12,6 +13,12 @@
1213
public interface ArticleTagMapper extends BaseMapper<ArticleTagEntity> {
1314

1415
List<ArticleTagPo> selectByArticleIds(@Param("articleIds") List<Long> articleIds);
16+
17+
List<ArticleTagPo> selectTag();
18+
19+
TagEntity selectTagByTagCode(@Param("tagCode") String tagCode);
20+
21+
List<Long> selectArticleByTag(@Param("tagCode") String tagCode);
1522
}
1623

1724

blog-consumer/src/main/java/com/hackyle/blog/consumer/po/ArticleTagPo.java

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
11
package com.hackyle.blog.consumer.po;
22

3+
import java.util.Date;
4+
35
public class ArticleTagPo {
46

57
private Long articleId;
68

79
private Long tagId;
810

11+
/**
12+
* 该个tagId下的文章数量
13+
*/
14+
private Integer articleNum;
15+
916
/**
1017
* 标签编码
1118
*/
@@ -21,6 +28,12 @@ public class ArticleTagPo {
2128
*/
2229
private String color;
2330

31+
private String description;
32+
33+
private Date createTime;
34+
35+
private Date updateTime;
36+
2437
public Long getArticleId() {
2538
return articleId;
2639
}
@@ -37,6 +50,14 @@ public void setTagId(Long tagId) {
3750
this.tagId = tagId;
3851
}
3952

53+
public Integer getArticleNum() {
54+
return articleNum;
55+
}
56+
57+
public void setArticleNum(Integer articleNum) {
58+
this.articleNum = articleNum;
59+
}
60+
4061
public String getCode() {
4162
return code;
4263
}
@@ -60,4 +81,28 @@ public String getColor() {
6081
public void setColor(String color) {
6182
this.color = color;
6283
}
84+
85+
public String getDescription() {
86+
return description;
87+
}
88+
89+
public void setDescription(String description) {
90+
this.description = description;
91+
}
92+
93+
public Date getCreateTime() {
94+
return createTime;
95+
}
96+
97+
public void setCreateTime(Date createTime) {
98+
this.createTime = createTime;
99+
}
100+
101+
public Date getUpdateTime() {
102+
return updateTime;
103+
}
104+
105+
public void setUpdateTime(Date updateTime) {
106+
this.updateTime = updateTime;
107+
}
63108
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.hackyle.blog.consumer.qo;
2+
3+
public class TagQo {
4+
private String tagCode;
5+
private String tagName;
6+
private String tagKeys;
7+
8+
public String getTagCode() {
9+
return tagCode;
10+
}
11+
12+
public void setTagCode(String tagCode) {
13+
this.tagCode = tagCode;
14+
}
15+
16+
public String getTagName() {
17+
return tagName;
18+
}
19+
20+
public void setTagName(String tagName) {
21+
this.tagName = tagName;
22+
}
23+
24+
public String getTagKeys() {
25+
return tagKeys;
26+
}
27+
28+
public void setTagKeys(String tagKeys) {
29+
this.tagKeys = tagKeys;
30+
}
31+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,22 @@
11
package com.hackyle.blog.consumer.service;
22

33
import com.baomidou.mybatisplus.extension.service.IService;
4+
import com.hackyle.blog.consumer.dto.PageRequestDto;
5+
import com.hackyle.blog.consumer.dto.PageResponseDto;
46
import com.hackyle.blog.consumer.entity.ArticleTagEntity;
57
import com.hackyle.blog.consumer.po.ArticleTagPo;
8+
import com.hackyle.blog.consumer.qo.TagQo;
9+
import com.hackyle.blog.consumer.vo.ArticleVo;
10+
import com.hackyle.blog.consumer.vo.TagVo;
611

712
import java.util.List;
813
import java.util.Map;
914

1015
public interface ArticleTagService extends IService<ArticleTagEntity> {
1116
Map<Long, List<ArticleTagPo>> selectByArticleIds(List<Long> articleIds);
1217

18+
List<TagVo> selectTag();
19+
20+
PageResponseDto<ArticleVo> selectArticleByTag(PageRequestDto<TagQo> pageRequestDto);
21+
1322
}

0 commit comments

Comments
 (0)