Skip to content

Commit ae4f492

Browse files
committed
feat: 专栏文章分组
1 parent bd4dff3 commit ae4f492

File tree

12 files changed

+174
-1
lines changed

12 files changed

+174
-1
lines changed

README.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,11 @@ GitHub 上标星 13000+ 的开源知识库《 [二哥的 Java 进阶之路](http
247247

248248
![沉默王二公众号](https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/gongzhonghao.png)
249249

250-
## 九、许可证
250+
## 九、更新记录
251+
252+
[关键版本迭代记录](docs/version.md)
253+
254+
## 十、许可证
251255

252256
[Apache License 2.0](https://github.com/itwanger/paicoding/edit/main/README.md)
253257

docs/version.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,19 @@
11
## 技术派迭代关键历史进程
22

3+
### 2024年度
4+
5+
- 2024/12/06 完成微信支付集成,微信支付解锁文章付费阅读
6+
- [Feature/241203/h5 pay by liuyueyi · Pull Request #89 · itwanger/paicoding](https://github.com/itwanger/paicoding/pull/89)
7+
- [Feature/241206/pay reconsitution by liuyueyi · Pull Request #91 · itwanger/paicoding](https://github.com/itwanger/paicoding/pull/91)
8+
- [Feature/241203/h5 pay by liuyueyi · Pull Request #88 · itwanger/paicoding](https://github.com/itwanger/paicoding/pull/88)
9+
- 2024/11/27 完成WebSocket的消息实时通知
10+
- [完成消息通知长连接 by liuyueyi · Pull Request #87 · itwanger/paicoding](https://github.com/itwanger/paicoding/pull/87)
11+
- 2024/11/12 新增文章付费解锁功能
12+
- [新增文章付费解锁功能 by liuyueyi · Pull Request #85 · itwanger/paicoding](https://github.com/itwanger/paicoding/pull/85)
13+
14+
15+
### 2023年度
16+
317
- 2023//06/30 基于ChatGPT,讯飞星火大模型的派聪明上线
418
- 2023/06/09 mysql同步es,支持es查询集成
519
- 2023/05 动态数据源方案集成
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
2+
package com.github.paicoding.forum.api.model.vo.article;
3+
4+
import lombok.Data;
5+
6+
import java.io.Serializable;
7+
8+
/**
9+
* 保存Column分组请求参数
10+
*
11+
* @author yihui
12+
* @date 2024/12/17
13+
*/
14+
@Data
15+
public class ColumnArticleGroupReq implements Serializable {
16+
17+
/**
18+
* 主键ID
19+
*/
20+
private Long id;
21+
22+
/**
23+
* 专栏ID
24+
*/
25+
private Long columnId;
26+
27+
/**
28+
* 文章ID
29+
*/
30+
private String title;
31+
32+
/**
33+
* 专栏排序
34+
*/
35+
private Integer sort;
36+
}

paicoding-service/src/main/java/com/github/paicoding/forum/service/article/conveter/ColumnStructMapper.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package com.github.paicoding.forum.service.article.conveter;
22

3+
import com.github.paicoding.forum.api.model.vo.article.ColumnArticleGroupReq;
34
import com.github.paicoding.forum.api.model.vo.article.ColumnReq;
45
import com.github.paicoding.forum.api.model.vo.article.SearchColumnReq;
56
import com.github.paicoding.forum.api.model.vo.article.dto.ColumnDTO;
67
import com.github.paicoding.forum.api.model.vo.article.dto.SimpleColumnDTO;
8+
import com.github.paicoding.forum.service.article.repository.entity.ColumnArticleGroupDO;
79
import com.github.paicoding.forum.service.article.repository.entity.ColumnInfoDO;
810
import com.github.paicoding.forum.service.article.repository.params.SearchColumnParams;
911
import org.mapstruct.Mapper;
@@ -59,4 +61,8 @@ public interface ColumnStructMapper {
5961
@Mapping(target = "freeStartTime", expression = "java(new java.util.Date(req.getFreeStartTime()))")
6062
@Mapping(target = "freeEndTime", expression = "java(new java.util.Date(req.getFreeEndTime()))")
6163
ColumnInfoDO toDo(ColumnReq req);
64+
65+
66+
@Mapping(source = "sort", target = "section")
67+
ColumnArticleGroupDO toDO(ColumnArticleGroupReq req);
6268
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.github.paicoding.forum.service.article.repository.dao;
2+
3+
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
4+
import com.github.paicoding.forum.service.article.repository.entity.ColumnArticleGroupDO;
5+
import com.github.paicoding.forum.service.article.repository.mapper.ColumnArticleGroupMapper;
6+
import org.springframework.stereotype.Repository;
7+
8+
/**
9+
* 专栏文章分组
10+
*
11+
* @author yihui
12+
* @date 24/12/17
13+
*/
14+
@Repository
15+
public class ColumnArticleGroupDao extends ServiceImpl<ColumnArticleGroupMapper, ColumnArticleGroupDO> {
16+
17+
}

paicoding-service/src/main/java/com/github/paicoding/forum/service/article/repository/entity/ColumnArticleDO.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,21 @@
1818
public class ColumnArticleDO extends BaseDO {
1919
private static final long serialVersionUID = -2372103913090667453L;
2020

21+
/**
22+
* 专栏
23+
*/
2124
private Long columnId;
2225

26+
/**
27+
* 专栏文章
28+
*/
2329
private Long articleId;
2430

31+
/**
32+
* 专栏文章分组
33+
*/
34+
private Long groupId;
35+
2536
/**
2637
* 顺序,越小越靠前
2738
*/
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.github.paicoding.forum.service.article.repository.entity;
2+
3+
import com.baomidou.mybatisplus.annotation.TableName;
4+
import com.github.paicoding.forum.api.model.entity.BaseDO;
5+
import lombok.Data;
6+
import lombok.EqualsAndHashCode;
7+
8+
/**
9+
* 专栏文章
10+
*
11+
* @author YiHui
12+
* @date 2022/9/14
13+
*/
14+
@Data
15+
@EqualsAndHashCode(callSuper = true)
16+
@TableName("column_article_group")
17+
public class ColumnArticleGroupDO extends BaseDO {
18+
private static final long serialVersionUID = -2372103913090667453L;
19+
20+
private Long columnId;
21+
22+
private String title;
23+
24+
/**
25+
* 顺序,越小越靠前
26+
*/
27+
private Integer section;
28+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.github.paicoding.forum.service.article.repository.mapper;
2+
3+
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4+
import com.github.paicoding.forum.service.article.repository.entity.ColumnArticleGroupDO;
5+
6+
/**
7+
* 专栏文章分组
8+
*
9+
* @author YiHui
10+
* @date 2024/12/17
11+
*/
12+
public interface ColumnArticleGroupMapper extends BaseMapper<ColumnArticleGroupDO> {
13+
}

paicoding-service/src/main/java/com/github/paicoding/forum/service/article/service/ColumnSettingService.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,13 @@ public interface ColumnSettingService {
3131
*/
3232
void saveColumn(ColumnReq columnReq);
3333

34+
/**
35+
* 保存专栏文章分组
36+
* @param req
37+
* @return
38+
*/
39+
void saveColumnArticleGroup(ColumnArticleGroupReq req);
40+
3441
/**
3542
* 保存专栏文章
3643
*

paicoding-service/src/main/java/com/github/paicoding/forum/service/article/service/impl/ColumnSettingServiceImpl.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,11 @@
1818
import com.github.paicoding.forum.service.article.conveter.ColumnStructMapper;
1919
import com.github.paicoding.forum.service.article.repository.dao.ArticleDao;
2020
import com.github.paicoding.forum.service.article.repository.dao.ColumnArticleDao;
21+
import com.github.paicoding.forum.service.article.repository.dao.ColumnArticleGroupDao;
2122
import com.github.paicoding.forum.service.article.repository.dao.ColumnDao;
2223
import com.github.paicoding.forum.service.article.repository.entity.ArticleDO;
2324
import com.github.paicoding.forum.service.article.repository.entity.ColumnArticleDO;
25+
import com.github.paicoding.forum.service.article.repository.entity.ColumnArticleGroupDO;
2426
import com.github.paicoding.forum.service.article.repository.entity.ColumnInfoDO;
2527
import com.github.paicoding.forum.service.article.repository.params.SearchColumnArticleParams;
2628
import com.github.paicoding.forum.service.article.repository.params.SearchColumnParams;
@@ -51,6 +53,9 @@ public class ColumnSettingServiceImpl implements ColumnSettingService {
5153
@Autowired
5254
private ColumnArticleDao columnArticleDao;
5355

56+
@Autowired
57+
private ColumnArticleGroupDao columnArticleGroupDao;
58+
5459
@Autowired
5560
private ColumnDao columnDao;
5661

@@ -71,6 +76,17 @@ public void saveColumn(ColumnReq req) {
7176
}
7277
}
7378

79+
@Override
80+
public void saveColumnArticleGroup(ColumnArticleGroupReq req) {
81+
ColumnArticleGroupDO groupDO = columnStructMapper.toDO(req);
82+
if (NumUtil.nullOrZero(req.getId())) {
83+
columnArticleGroupDao.save(groupDO);
84+
} else {
85+
groupDO.setId(req.getId());
86+
columnArticleGroupDao.updateById(groupDO);
87+
}
88+
}
89+
7490

7591
/**
7692
* 将文章保存到对应的专栏中

paicoding-web/src/main/java/com/github/paicoding/forum/web/admin/rest/ColumnSettingRestController.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,12 @@ public ResVo<String> saveColumn(@RequestBody ColumnReq req) {
5252
return ResVo.ok();
5353
}
5454

55+
@Permission(role = UserRole.ADMIN)
56+
@PostMapping(path = "saveColumnGroup")
57+
public ResVo<Boolean> saveColumnArticleGroup(@RequestBody ColumnArticleGroupReq req) {
58+
59+
}
60+
5561
@Permission(role = UserRole.ADMIN)
5662
@PostMapping(path = "saveColumnArticle")
5763
public ResVo<String> saveColumnArticle(@RequestBody ColumnArticleReq req) {
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
-- 专栏文章分组;主要用于前台列表显示时,对文章进行聚合
2+
CREATE TABLE `column_article_group`
3+
(
4+
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
5+
`column_id` int unsigned NOT NULL DEFAULT '0' COMMENT '专栏ID',
6+
`title` varchar NOT NULL DEFAULT '' COMMENT '分组名',
7+
`section` int unsigned NOT NULL DEFAULT '0' COMMENT '分组顺序,越小越靠前',
8+
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
9+
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间',
10+
PRIMARY KEY (`id`),
11+
KEY `column_id` (`column_id`)
12+
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COMMENT='专栏文章分组';
13+
14+
alter table column_article
15+
add column group_id bigint unsigned not null default 0 comment '文章对应的分组id,为0时归属在未分组的集合中';

0 commit comments

Comments
 (0)