探花细节
开发环境:IDEA+Git+Maven
技术框架:SpingCloud+MyBatisPlus+Redis+MangoDB+FastDFS+Dubbo+Nacos+RabbitMQ
项目描述:
一款主打陌生人社交的软件, 用户可以发布音视频作品,可以搜索附近的人,查看好友动态,平台还会通过大数据计算进行智能推荐,通过智能推荐匹配好友,提供了在线即时通讯功能,可以实时的与好友进行沟通
个人职责:
配合产品部门进行业务流程梳理评审和技术可行性评估的相关工作
负责用户单点登录、完善个人信息模块开发工作
●使用JWT加密用户信息生成token缓存Redis(对应单点登录)
负责个人中心、互动、附近推荐、评论模块开发工作
●基于MangoDB存储用户的关注作者、粉丝、点赞作品、作品点赞数量、评论点赞数量
●使用mongodb geo 实现地理位置查询实现搜索发现附近的人
负责图片、音视频等动态信息发布展示,IM即时通讯模块开发工作
●使用第三方API进行图片存储、内容审核、人脸识别、即时通讯
APP端
单点登录
-
注册
- 上传头像(ALiFace)
- 保存用户信息
-
登录接口放行
- 基于WebMvcConfigurer接口类对所有接口处理
- addInterceptors:拦截器
- addInterceptor:需要一个实现HandlerInterceptor接口的拦截器实例
- addPathPatterns:用于设置拦截器的过滤路径规则;
addPathPatterns("/**")
对所有请求都拦截 - excludePathPatterns:用于设置不需要拦截的过滤规则
- 拦截器主要用途:进行用户登录状态的拦截,日志的拦截等。
实现思想
放行用户进入登录接口拦截所有后续请求交给给Interceptor进行验证
-
统一JWT验证处理(重点)
-
注册登录 -->基于ThreadLocal + HandlerInterceptor拦截器的形式统一处理
-
拦截器HandlerInterceptor
-
- HandlerInterceptor是一种动态拦截方法调用的机制; - 类似于Servlet 开发中的过滤器Filter,用于对处理器进行前置处理和后置处理。
-
-
ThreadLocal
- 线程内部的存储类,赋予了线程存储数据的能力。 - 线程内调用的方法都可以从ThreadLocal中获取同一个对象。 - 多个线程中ThreadLocal数据相互隔离
实现思想
- 定义一个实现HandlerInterceptor接口统一处理Token的类
- 重写preHandle方法,这个方法会在controller之前执行
- 在preHandle方法中拦截获取请求头中的'Authorization'判断token是否有效
- 如果有效就将token中的用户信息封装进ThreadLocal中,放行请求进入controller并延长token在redis中的存储时间
- 如果无效就返回401让用户先登陆账号
- 定义一个实现HandlerInterceptor接口统一处理Token的类
-
-
-
信息管理
- 查看、更新用户资料
- 设置陌生人问题
- 设置黑名单
圈子互动
-
个人中心
- 发布动态(发布视频(FastDFS、SpringCache)、图片(OSS))
- 查看个人动态
-
动态查询
- 查询好友动态
- 查询推荐动态
- 根据ID查询动态
-
互动
- 动态评论
- 点赞
- 喜欢
即时通讯
- 通讯
- 查看佳人、陌生人信息
- 联系人管理(添加、删除、列表)
- 信息通讯(图、音、视频)
- 访客
- 访客记录,谁看过我、查看访客列表
- 附近的人
- 上报定位
- 搜索附近
后台系统
配置
- gateway网关
- Nacos配置中心
- nginx负载均衡
后台系统
- 生成验证码
- 用户登录
- 获取用户资料
- 查看用户列表
- 查看用户详情
- 查看视频列表
- 查看动态列表
- 用户冻结解冻
数据统计和动态审核
- 查询数据列表
- 数据统计
- 定时任务
- 首页统计
- 阿里云内容审核
- 动态审核