目录
项目介绍
业务说明
技术栈
-
Spring-Cloud-Gateway : 微服务之前架设的网关服务,实现服务注册中的API请求路由,以及控制流速控制和熔断处理都是常用的架构手段,而这些功能Gateway天然支持
-
运用Spring Boot快速开发框架,构建项目工程;并结合Spring Cloud全家桶技术,实现后端个人中心、自媒体、管理中心等微服务。
-
运用Spring Cloud Alibaba Nacos作为项目中的注册中心和配置中心
-
运用mybatis-plus作为持久层提升开发效率
-
运用Kafka完成内部系统消息通知;与客户端系统消息通知;以及实时数据计算
-
运用Redis缓存技术,实现热数据的计算,提升系统性能指标
-
使用Mysql存储用户数据,以保证上层数据查询的高性能
-
使用Mongo存储用户热数据,以保证用户热数据高扩展和高性能指标
-
使用FastDFS作为静态资源存储器,在其上实现热静态资源缓存、淘汰等功能
-
运用Hbase技术,存储系统中的冷数据,保证系统数据的可靠性
-
运用ES搜索技术,对冷数据、文章数据建立索引,以保证冷数据、文章查询性能
-
运用AI技术,来完成系统自动化功能,以提升效率及节省成本。比如实名认证自动化
-
PMD&P3C : 静态代码扫描工具,在项目中扫描项目代码,检查异常点、优化点、代码规范等,为开发团队提供规范统一,提升项目代码质量
环境搭建
nacos安装
①:docker拉取镜像
docker pull nacos/nacos-server:1.2.0
②:创建容器
docker run --env MODE=standalone --name nacos --restart=always -d -p 8848:8848 nacos/nacos-server:1.2.0
-
MODE=standalone 单机版
-
--restart=always 开机启动
-
-p 8848:8848 映射端口
-
-d 创建一个守护式容器在后台运行
③:访问地址:http://192.168.xxx.xxx:8848/nacos
初始工程搭建
①:项目依赖环境
-
JDK1.8
-
Intellij Idea
-
maven-3.6.1
-
MySQL 8
②:在链接中下载heima-leadnews.zip文件,拷贝到一个没有中文和空格的目录,使用idea打开即可
③:IDEA开发工具配置
④:设置项目编码格式
登录功能实现
需求分析
-
用户点击开始使用
登录后的用户权限较大,可以查看,也可以操作(点赞,关注,评论)
-
用户点击不登录,先看看
游客只有查看的权限
表结构分析
不同模块下与之相关的内容较多,数据库采用模块分库的模式,app端用户相关的内容较多,所以单独设置一个库leadnews_user
表名称 | 说明 |
---|---|
ap_user | APP用户信息表 |
ap_user_fan | APP用户粉丝信息表 |
ap_user_follow | APP用户关注信息表 |
ap_user_realname | APP实名认证信息表 |
在链接中下载sql文件,执行该脚本即可创建对应的数据库,数据表及表中以及准备好的数据
登录需要用到的是ap_user表,表结构如下:
项目中的持久层使用的mybatis-plus,一般都使用mybais-plus逆向生成对应的实体类
app_user表对应的实体类如下:
package com.heima.model.user.pojos;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* APP用户信息表
* @author Dcoin
*/
@Data
@TableName("ap_user")
public class ApUser implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* 密码、通信等加密盐
*/
@TableField("salt")
private String salt;
/**
* 用户名
*/
@TableField("name")
private String name;
/**
* 密码,md5加密
*/
@TableField("password")
private String password;
/**
* 手机号
*/
@TableField("phone")
private String phone;
/**
* 头像
*/
@TableField("image")
private String image;
/**
* 0 男
1 女
2 未知
*/
@TableField("sex")
private Boolean sex;
/**
* 0 未
1 是
*/
@TableField("is_certification")
private Boolean certification;
/**
* 是否身份认证
*/
@TableField("is_identity_authentication")
private Boolean identityAuthentication;
/**
* 0正常
1锁定
*/
@TableField("status")
private Boolean status;
/**
* 0 普通用户
1 自媒体人
2 大V