头条项目总结

97 阅读3分钟

文章发布业务流程图

1.png

文章内容图片和封面图片与素材的关系.png

项目总结

头条这个项目是基于现在网络的发达,大家在手机上随时随地都能翻阅信息这个条件产生的.这个项目分为三类用户,app端看文章的用户,pc端写文章的作者用户,和管理端审核文章和用户的管理员.这个项目基于微服务+大数据技术架构实现.

app端除了翻页展示 上划下拉展示,用户还可以根据不同的频道自由选择想看的内容,文章展示是通过freemarker技术生成静态文件,文件存入分布式文件系统中,html访问路径存到文章中,在获取时根据html的url访问minlo静态页面,从而将文章详情展示出来

pc端作者可以进行文章的新增 二次发布 存为草稿等操作,其中用户提交文章和保存为草稿调用的是一个接口,后端根据前端传的status字段来标识是提交操作还是存为草稿操作。网关层的过滤器解析token中的用户id,符合条件后将用户id放入请求头中,下游服务在拦截器中获取请求头中的用户id,并用ThreadLocal存起来,以便后续操作。下游服务的拦截器中有afterCompletion方法,用于在请求结束后释放ThreadLocal中的资源。然后在service层根据用户是否传过来文章的id来判断是新增文章还是修改文章。若id不存在则为新增文章,就在文章表中插入数据并回显主键,之后根据status字段来判断用户执行的是否是保存为草稿操作,若为草稿则直接返回操作成功给前端;若不为草稿则在表中建立封面中的图片与素材的关系,和文章内容中的图片与素材的关系,然后返回成功结果给前端。若id不存在就为修改文章的操作,先删除图片与素材已关联的关系,然后修改文章内容,之后判断是否保存为草稿,走与新增文章同样的逻辑。还有就是,在上传封面图片时有一个自动选择几个图片的封面,若用户勾选了此项,那么会在service层中会获取文章内容中的图片并根据图片的个数来决定哪几个图片作为封面。前端传来的文章内容是个json数据,先通过fastjson将其转化成一个List集合,然后在用stream流过滤出集合中的图片url,然后再输出集合中的大小就能知道文章的内容中有几个图片了。比如若解析到文章中含有1-2个图片则为1图片的封面;3个以及以上的则为3图片的封面。