文章目录
- 一、个人中心主页
- 1. 主页元素
- 2. 表设计
- 3. 计数方案评估
- 二、用户信息查询~接口设计
- 2.1. 用户信息查询流程图
- 2.2. 用户信息查询流程
- 三、用户信息更新~接口设计
- 3.1. 流程图
- 3.2. 流程简述
- 四、用户背景图+用户头像~接口设计
- 4.1. 更新/上传图片流程图
- 4.2. 更新/上传~流程简述
- 五、腾讯云~安装MinIO
- 六、分布式文件存储
- 七、短视频列表
一、个人中心主页
1. 主页元素
- 基本信息:
昵称
抖音号
头像
性别 1:男 0:女 2:保密
个人简介
生日
个人介绍的背景图
关注~我的关注博主总数量
粉丝~我的粉丝总数
获赞~用户获赞总数,视频博主(点赞/喜欢)总和
关注详情列表
粉丝详情列表
- 编辑资料元素
国家
省份
城市
区县
- 设置
头像、昵称、个人优势介绍、个人作品
- 视频相关
作品、私密、赞过
2. 表设计
-- ----------------------------
-- Table structure for users
-- ----------------------------
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`id` varchar(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`mobile` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '手机号',
`password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '密码 MD5+盐值',
`salt` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '盐值',
`nickname` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '昵称,媒体号',
`imooc_num` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '抖音号,公众号,唯一标识,需要限制修改次数,比如终生1次,每年1次,每半年1次等,可以用于付费修改。',
`face` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '头像',
`sex` int(11) NOT NULL COMMENT '性别 1:男 0:女 2:保密',
`birthday` date NOT NULL COMMENT '生日',
`country` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '国家',
`province` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '省份',
`city` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '城市',
`district` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '区县',
`description` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '简介',
`bg_img` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '个人介绍的背景图',
`can_imooc_num_be_updated` int(1) NOT NULL COMMENT '慕课号能否被修改,1:默认,可以修改;0,无法修改',
`created_time` datetime NOT NULL COMMENT '创建时间 创建时间',
`updated_time` datetime NOT NULL COMMENT '更新时间 更新时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `mobile`(`mobile`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户表' ROW_FORMAT = Dynamic;
3. 计数方案评估
个人中心页面上有3处属于计数范畴:
关注~我的关注博主总数量
粉丝~我的粉丝总数
获赞~用户获赞总数,视频博主(点赞/喜欢)总和
-
传统方案:
存储数据库,计数使用总数求conut,当数据量达到上亿级别对数据库压力,是非常大的,真实的抖音app这3项计数是非常可观的。
-
优雅方案:
redis本身就支持计数,我们计数时只需要获取2个函数即可,非常方便。因此,后面的计数相关功能点都采用redis来做计数。
二、用户信息查询~接口设计
2.1. 用户信息查询流程图
2.2. 用户信息查询流程
- 1.接收前端用户UserId
- 2.根据用户UserId查询用户是否存在
- 2.1.不存在,则提示“账户不存在!”
- 2.2.存在,用户数据镜像同步
- 3.从Redis中获取计数
- 3.1.我的关注数量
- 3.2. 我的粉丝量
- 3.3.我赞过的数量(视频+评论)
- 4.类型转换,封装打包
- 5.返回封装好的对象
三、用户信息更新~接口设计
根据参数类型更新个人中心基本信息(不包括头像+背景图)
type: 1-昵称 2-慕课号 3-性别 4-生日 5-所在地 6-简介
3.1. 流程图
3.2. 流程简述
- 1.接收用户信息和更新类型
- 2.校验类型,不合法,则提示“用户信息修改失败”,合法流程继续。
- 3.昵称判断
- 3.1.存在,则提示“昵称已经存在!”
- 3.2.不存在,流程继续。
- 4.抖音号判断
- 4.1.存在,则提示“抖音号已经存在!”
- 4.2.不存在,允许修改,进一步判断是第一次修改
- 4.2.1.不是第一次,则提示“抖音号无法修改!”
- 4.2.2.是第一次,更新修改标识,以后无法修改,流程继续。
- 5.用户数据镜像同步
- 6.数据落库更新
- 返回更新后的用户,响应前端
四、用户背景图+用户头像~接口设计
根据参数类型更新个人中心图片(用户背景图+用户头像)
type: 1-用户背景图 2-用户头像
4.1. 更新/上传图片流程图
4.2. 更新/上传~流程简述
- 1.接收用户userId、更新类型、文件
- 2.文件格式校验,不合法,则提示“文件上传失败”,核发流程继续。
- 3.获取文件名称
- 4.上传文件
- 5.获取上传文件路径
- 6.图片类型判断
- 7.用户信息镜像同步
- 8.返回更新后的用户信息