Code Monkey home page Code Monkey logo

durancer / jmu-campus Goto Github PK

View Code? Open in Web Editor NEW
24.0 3.0 13.0 2.02 MB

i集大校园软件服务端,基于SpringCloud Alibaba 微服务组件及部分分布式技术实现服务之间关联及协作进行前后端分离项目实现。欢迎参加开源贡献😄。

Home Page: http://www.jmucampus.top/

License: Apache License 2.0

Java 75.70% Dockerfile 0.76% JavaScript 0.12% HTML 0.09% Vue 18.00% TypeScript 4.99% Less 0.34%
microservice java springcloudalibaba docker nacos rabbitmq mybatis-plus springboot uniapp oauth2

jmu-campus's Introduction

  • Hi there, I’m Durance 👋
  • 👀 Grade 20 student of Software Engineering in Chengyi College of Jimei University
  • Core team member of Xiamen Snow Blade Network Technology Co., LTD 💞️

Sticki's GitHub stats

jmu-campus's People

Contributors

durancer avatar fsj0591 avatar mc-kanon avatar renmengzuozuo avatar yettobetested avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

jmu-campus's Issues

bug & 建议 反馈系统构建

业务场景 & 需求
用户在发现 bug 或者 想要提些建议的时候 能够通过该渠道进行提交,向开发人员发送反馈消息
该功能添加在管理站上,在有人进行反馈时发送邮件提示

解决方案
可以在用户服务中实现,添加对应的表等信息。
邮件相关调用资源服务

公共数据模块解耦

问题描述

redis 和 mybatis-plus目前耦合在同一个模块,如果针对有些服务只需要引入其中一个,会造成一定的资源浪费。

解决策略

将不同的数据库分为不同的公共模块, 对其进行单个引入

#话题 类似微博、抖音、腾讯体育的话题功能实现

功能描述

这一块要实现的样子大概是像微博那样,在前端带上该话题之后,点击话题可以进行搜索。能够找出同样带有该话题的帖子
也是一块较多的内容

需求描述

  • 也需要用户能够创建话题
  • 新的话题进行创建存入数据库,旧的直接进行引用。
  • 发帖时对话题数量进行限制

🥢项目规划

项目计划实现 web 客户端(优先)及版本,所以整理出预计需要的模块功能及大致实现方案,便于大家更轻松的参与开源贡献👨‍💻

项目描述🌹

简单来说就是实现一个集大校园范围内的微博,是一个社交软件,让你的朋友圈扩大到你所在的整个校园范围内。能够及时拓展各式各样的活动,最好也能够提供某些功能服务。如扫门禁等☺

模块功能实现✨

基本架构,基础建设 @Durancer

功能层面

  • post服务
    1、帖子相关功能 @Durancer
    2、集成 ES 中文 IK 分词器实现用户帖子搜索引擎 @fsj0591
    3、实现 话题功能 @renmengzuozuo
    4、热门帖子推荐 @fsj0591
    这就像 微博 和 抖音 那样,以一个 # 携带。在帖子里附带上自己想要带的话题。然后能通过话题找到同个话题的帖子
    5、帖子内容富文本化 @fsj0591 @MC-kanon
    也就是让帖子信息能够更丰富地展示,而不是单一的字符串
    6、类似于牛客网的投票功能 @fsj0591
    7、统一更新浏览量,点赞量等数据,如帖子高频收到浏览将频繁修改数据库。优化方案减小数据库压力。

  • user服务
    1、基本服务 @Durancer
    2、好友(需要关联腾讯IM)
    3、数据统计(用户转评赞等) @Durancer
    4、用户资产、物品相关 @Durancer
    5、建立 bug & 建议 反馈系统
    (由于部分bug开发人员不是很容易发现)用户可以进行描述 bug 向管理人员进行反馈。如我发布了 5条评论,统计数据却只有 3条等bug。
    也可以提出想要使用的新功能模块,或已有相关模块的建议,等等。这些内容在后期也将加入管理站使用。

  • chat服务
    社交软件聊天功能是必不可少的,这一块使用 环信IM 完成
    1、集成 环信 IM 完成

  • comment服务
    1、基本功能 @Durancer
    2、热评 @fsj0591

  • gateway 服务
    1、全系统限流 @Durancer
    2、单ip限流 @Durancer

  • 后台管理站建设
    这一块主要提供操作员对帖子进行审核等操作。对违规的信息进行删除等等
    除去审核功能外,管理还要能查询数据,如 用户数量变化。点赞变化等

后端优化及安全

1、七牛云 cdn 加速 (已启用)
2、后端接口防刷及拉黑名单ip 、尤其是敏感接口,异常ip进行暂时拉黑

前端选型👨‍💻

使用 Vue3 实现 @yetToBeTested
前端基本功能建设 @MC-kanon

后端技术选型👨‍💻

后端会基于Spring Cloud Alibaba 针对服务进行技术选型
预计使用的技术栈包括 nacossentinelopenfeigngatewayspringbootmybatis-plusredisrabbitMQJWTESminIO七牛云CDN等,可见项目README.md文件

后期运维部署🚴‍♀️

后端接口已进行部署运维,整合前端基本功能能够使用之后将会上线程序

QQ交流群:294590170
或见 README 二维码

热评功能的实现

业务场景
评论的点赞操作和查看

需求分析
用户对评论的点赞,取消点赞,查看用户点赞列表和被点赞列表等

解决方案
使用redis存储点赞数据,使用quartz在每隔固定时间后执行redis数据写入mysql

话题功能所需的后端接口

1.创建话题接口
在用户没有找到自己想添加的话题之后 用户可以自定义创建话题,话题内容是不能重复的
2.获取话题接口
用户可以获取话题列表 查看所有的话题
3.搜索话题接口
用户可以根据关键字搜索话题
4.完善发布帖子接口
这一块就是用户在进入发布帖子页面,可以选择已经存在的话题(包括用户自己创建的话题),然后会对用户可以引用的话题数量
做一个限制,在用户发布帖子时候,会将帖子和话题进行关联,一起存进数据库里面
5.根据话题获取帖子内容接口
用户可以通过指定话题来获取与该话题相关的帖子内容

前端项目规划

技术栈
vue3.2 + vue-router + pinia + axios + typescript + vite

内容拓展

热点文章功能的实现

业务场景
用户查看帖子时会推荐近日较热门的帖子

需求分析
image

解决方案
使用xxl-job定时计算前一周文章的分数
使用redis存储分数前20的数据

perf: 降低浏览、点赞等高频操作对数据库的压力

业务场景 & 需求分析
目前浏览、点赞等操作,将直接修改数据库的统计数据,如:一条帖子被浏览,将修改帖子的浏览量和用户收到的浏览量。有较多用户同时在线时,将对数据库造成一定的压力

解决方案
其实这并不是很急着修改数据库的操作,可以先将数据在 redis 中存储,使用定时任务刷新每日浏览量,并更新到数据库中。

流量券每周定时抢送功能

业务场景
提供一个活动入口,在到点之后对流量券进行抢送,先到先得。
流量券用来提高用户帖子的流量。
打算在 每周日 的 中午12点,进行抢送。每周10张。

需求分析
定时对商品的一个抢送。 因为是 “抢” ,所以理论上这是一个 高并发的场景,也要防止 流量券 的超送漏送。

解决方案
在抢送之前对数据进行缓存预热。
对于 时间,使用SpringTask 定时来完成。
打算基于 Redis的分布式锁和Redis 的预扣减来完成。
对于活动相关的操作,后期考虑单独添加 活动服务 来专门实现活动相关的功能。
目前暂时直接加在 user 服务当中。

内容拓展
这是程序第一次涉及到用户物品相关的功能,所以要对物品以及用户拥有物品进行数据库设计。
其次活动功能的实现灵活度较高,数据库变化大,在后期专项开发活动相关功能需要对数据库进行良好的设计。

完善审核系统

业务场景
目前帖子审核失败之后,没有任何响应。用户在帖子未审核通过时无感

需求分析
审核时添加 反馈信息,用户能在自己的帖子列表中查看到 未通过原因。
抽离邮箱 到资源服务。在完成审核时 向用户发送 通过 or 不通过 结果

解决方案
邮箱相关整合到 resource 服务中。
反馈信息单独建表实现。

投票功能实现

业务场景
在帖子内发起自定义话题的投票。

需求分析
需要实现发起投票,投票类型单选或多选,统计投票人数,显示投票结果等

类似牛客网的投票功能

业务场景
类似于牛客网上的投票功能

需求分析
能够创建不同的选项
统计票数和人数并计算百分比

帖子内容富文本化

业务场景
这不需要像文章一样使用 md文件存储,只需要富文本存在数据库里就行

需求分析
帖子一般都是富文本的

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.