# cms
**Repository Path**: luozongwei/cms
## Basic Information
- **Project Name**: cms
- **Description**: 看点资讯管理系统
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2023-11-14
- **Last Updated**: 2023-11-29
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 看点资讯管理系统
## 介绍
> jd2311 第二小组 cms(看点资讯管理)项目
> 从 0-1 手动搭建 + 团队合作
> 具体代码介绍:https://www.lzwgxust.top/post/33997261.html
### 项目背景及环境搭建
> 日常生活中,内容管理系统占据我们80%以上的常用系统,如个人博客、今日头条、腾讯新闻、知乎等。这些系统的核心功能集中在内容(资讯)管理,
> 以一篇文章为一个资讯,反映了人们越来越喜欢简洁记录生活所见所闻。通用的看点资讯管理系统采用前后台分离技术,分为前台页面展示和后台资讯管理系统,后台通用而前台可根据客户需求定制。
### MybatisPlus基础及应用
> 主要是通过官网学习mp的配置、注解、代码生成器、CRUD接口、条件构造器、主键策略、自定义ID生成器、逻辑删除、分页插件
> 开启了新大陆 官网:https://baomidou.com/pages/24112f/
### 轮播图模块
主要功能:查询启用的轮播图、条件+分页查询、根据id查询、新增或修改、删除轮播图等
技术如下:
- 使用CollectionUtils 进行对集合类型的判空
- 使用mp代码生成器MybatisPlusGenerator简化开发
- 使用常量类CmsConstant,避免硬编码
### 登录及用户模块
主要功能:登录、退出、文件上传、新增用户、根据id查询、更新用户、删除用户、雪花算法Bug解决
技术如下:
- md5对密码进行加密+Jwt-HS256对称加密
- 通过七牛云oss+文件上传工具实现图片上传功能(也可使用阿里云oss主要在于工具类的不同实现)
- 细节: IPage的两种使用思路:①通过selectPage(page,lqw);②通过xml实现必须把page参数传进去xxxXXX(page, 条件...);
- 细节: code success必须返回200,否则登录不进去
- 细节: 对于路径参数/{ids}的测试postman和knife4j不同点做一下说明:
- - postman必须通过/xxx/1,2,3 路径后面添加的方式 原因:postman的x-www-form-urlencoded默认发送的String类型,
若坚持使用postman测,则必须在java做类型处理`List -> List`
- - knife4j都可以路径添加或者x-www-form-urlencoded两种方式
- 通过注解`@JsonSerialize(using=ToStringSerializer.class)` 解决 官方雪花算法长度过长导致JS精度丢失问题
将Long值返回给前端时转为String,前端传递String给后端时会再转换成Long类型。
### 栏目模块
主要功能:新增栏目、根据id查询栏目信息、更新栏目、根据ids批量删除栏目、分页+条件查询、查询所有1级栏目(含二级)、
查询所有一级栏目(不含二级)、excel文件导入导出功能
技术如下:
- 通过使用Stream来替代部分mp+xml模式的查询
- 使用EasyExcel实现excel文件的导入导出功能包含了 Listener、Converter、EasyUtils
- 分级栏目困难,目前只实现1,2级功能(后面再想想)
- 业务逻辑相对较难
- 难点:关于导入模块,需要实现先单独(没有实现批量)插入一级栏目,后批量插入二级栏目;
解决方法就是再`CategoryParentIdConverter`中添加一个`map<唯一Integer值, parentName名字>`
然后在`CategoryServiceImpl`中对整个list数据进行分类除了,因为一级栏目在`CategoryListener`中单独加入,所以只需要在impl中处理二级栏目批量插入即可
### 资讯模块
主要功能:新增或修改文章、审核文章、删除文章、查询指定文章、分页+条件查询文章、redis优化阅读量
技术如下:
- 通过Spring监听器+Spring定时器+redis缓存防止用户恶意刷新阅读量,导致数据库压力过大
-
### 评论模块
主要功能:新增一级评论、新增二级评论、删除评论、批量删除评论、查询指定1级评论下所有的2级评论、分页+查询指定文章下的所有一级评论(包含2级)
分页+条件+查询所有一级评论(包含二级)
技术如下:
- 通过嵌套结果、嵌套查询、mp条件构造器三种方式实现多表联查+分页
### 日志模块
主要功能:新增日志、查询日志、导出日志
技术如下:
- 通过注解Logging+切面类LogAspect实现日志记录功能
# 参与贡献
1. Fork 本仓库
2. 新建 Feat_xxx 分支
3. 提交代码
4. 新建 Pull Request