个人项目

个人项目-维扣

我想让大家有一个私密的树洞和一个可以分享自己图片的地方

WEcho

img

介绍

  • 一个发布树洞和摄影的小软件
  • 我给这个程序起了两个名字Whisper(耳语)Echo(回声),目前我在想如何把他们两个组合起来,所以我目前打算给它去一个奇葩的名字叫做"维扣"
  • 我想让大家有一个私密的树洞和一个可以分享自己图片的地方

功能展示

  • 原型地址:https://modao.cc/app/wEWpHIxirx936ySg8ixQz7
  1. 树洞功能:
    1. 只允许用户发布树洞,并且对树洞进行点赞和热度排行以及分享,暂不做其他用途
    2. 其他功能暂时还在想…
  2. 摄影社区功能
    1. 支持图文混编,以标题+内容+图片的方式展示自己的摄影作品
    2. 点击图文可以查看详细+下载该图片功能
    3. 可对图片进行收藏、点赞、分享、搜索
    4. 发现页可以查看近期热门壁纸、壁纸分类等内容
    5. 个人详细页面:显示自己个人信息资料片

遵循Restful接口的规范

此接口并不代表最终接口

一个数据对象大致分为以下五个接口

  • GET /treeholes : 获取树洞列表
  • POST /treeholes : 发布一条树洞
  • GET /treeholes/:tree_id : 获取单个树洞内容详细
  • PUT /treeholes/:tree_id: 修改单个树洞内容详细
  • DELETE /treeholes/:tree_id: 删除单个树洞详细

基本的后端技术栈

  • Go
  • MeiliSearch: 一款好用的搜索引擎
  • Gorm: 简单好用搞笑的ORM框架
  • Gin: 速度极快的Web框架
  • Minio: 分布式存储

项目目录

  • 还没写呢

项目缓存规范

  • RedisKey的规范
1
2
project:module:business:uk
项目名    模块名   业务名  唯一标识

用户信息模块缓存

  • 这部分还没设计完成,等待完善吧。
Key类型过期时间说明
Wecho:user:login_user:{user_id}string2天存储用户生成的JWT
Wecho:users:cacheHSET2天用HSET缓存用户信息

数据库设计

用户表结构

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '唯一标识一个用户的编号,通常使用自增长整数来表示',
  `username` varchar(50) NOT NULL COMMENT '注册登录用户名',
  `nickname` varchar(50) DEFAULT '该用户未设置nickname' COMMENT '用户在树洞中使用的昵称,可以包含中英文字符和数字',
  `password` varchar(255) NOT NULL COMMENT '用户登录树洞时需要使用的密码',
  `phone` varchar(20) NOT NULL COMMENT '用户在注册时提供的手机号码',
  `gender` enum('F','M','Nil') NOT NULL DEFAULT 'Nil' COMMENT '用户的性别,可以使用枚举类型(0男、1女、2保密)',
  `avatar` varchar(255) DEFAULT NULL COMMENT '用户上传或选择的头像图片的文件路径或URL地址',
  `status` int(1) unsigned zerofill NOT NULL DEFAULT '0' COMMENT '用户的状态: 0: 禁用  1: 启用',
  `tree_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '用户发布的树洞数量',
  `like_count` int(11) NOT NULL DEFAULT '0' COMMENT '用户所有树洞的点赞总数',
  `is_banned` int(1) NOT NULL DEFAULT '0' COMMENT '用户是否被管理员禁言 0: 无禁言 1: 已禁言',
  `is_blocked` int(4) NOT NULL DEFAULT '0' COMMENT '用户是否被管理员封号 0: 无封号 1: 已封号',
  `created_at` bigint(20) NOT NULL COMMENT '创建时间',
  `updated_at` bigint(20) NOT NULL COMMENT '更新时间',
  `register_at` bigint(20) NOT NULL COMMENT '用户在树洞中注册的时间,使用日期时间类型来表示',
  `last_login_time` bigint(20) DEFAULT NULL COMMENT '用户最近一次登录树洞的时间,使用日期时间类型来表示',
  `is_admin` int(1) NOT NULL DEFAULT '0' COMMENT '是否为管理员用户 0: 不是 1: 是',
  `is_del` int(1) NOT NULL DEFAULT '0' COMMENT '用户是否注销 true=正常 false=注销',
  `description` varchar(255) DEFAULT '该用户未设置签名' COMMENT '用户签名或描述信息',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `username` (`username`) USING BTREE,
  UNIQUE KEY `phone` (`phone`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
字段名类型是否为空主键/索引注释
idINTNOT NULLAUTO_INCREMENT唯一标识一个用户的编号,通常使用自增长整数来表示

树洞表结构

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
CREATE TABLE treehole (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    content TEXT NOT NULL,
    user_id INT UNSIGNED,
    category_id INT UNSIGNED,
    status TINYINT(1) DEFAULT 1,
    views INT UNSIGNED DEFAULT 0,
    likes INT UNSIGNED DEFAULT 0,
    created_at DATETIME NOT NULL,
    updated_at DATETIME NOT NULL,
  	receive_gifts INT DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
字段名数据类型约束描述
idintPRIMARY KEY, AUTO_INCREMENT树洞的自增id
treehole_idstringNOT NULL树洞的唯一标识符
titlevarchar(255)NOT NULL树洞的主题或标题
contenttextNOT NULL树洞的内容
created_atdatetimeNOT NULL树洞创建的时间
updated_atdatetimeNOT NULL树洞最后更新的时间
user_idintNOT NULL发布树洞的用户ID
category_idintNOT NULL树洞的分类ID
statustinyint(1)DEFAULT 1树洞的状态:1为正常,0为已删除
viewsintDEFAULT 0树洞的浏览量
likesintDEFAULT 0树洞的点赞数
receive_giftsintDEFAULT 0树洞帖子的收礼数量
Licensed under CC BY-NC-SA 4.0
最后更新于 Oct 16, 2023 22:44 +0800
Built with Hugo
主题 StackJimmy 设计