天天看点

抖音实战~个人中心模块

抖音实战~个人中心模块
抖音实战~个人中心模块
抖音实战~个人中心模块

文章目录

  • ​​一、个人中心主页​​
  • ​​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.返回更新后的用户信息
五、腾讯云~安装MinIO
六、分布式文件存储
七、短视频列表

继续阅读