# delicacies
**Repository Path**: kyleweb/delicacies
## Basic Information
- **Project Name**: delicacies
- **Description**: 大千食界
- **Primary Language**: JavaScript
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-12-06
- **Last Updated**: 2022-02-13
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 大千食界项目
## 功能划分
### 顶部搜索 + 地区搜索 : 选择地区特产
可以根据地区全局搜索, 也可以全国搜索
点击输入框后 切换到另一个页面, 点击返回可以返回之前的页面
### 首页: 食品展示功能
- banner
- 美食展示模块 > 卡片
> > 点赞 收藏 浏览 评论
- banner下 按照全国的美食热度进行展示
### 美食广场
- 发表美食
> 点赞 收藏 浏览 评论
美食列表的展示 , 可以选择地区, 查看对美食的展示
### 聊天界面
> 我的好友 按钮
>
> 我的聊天 界面
### 个人中心
#### 个人信息展示
- 我的收藏
- 我的点赞
- 我的评论
- 我的预览
- 个人信息修改
> 个人签名
>
> 头像修改
>
> 地区修改
>
> 昵称修改
- 密码修改 > 发送邮箱或手机号 验证码 用于验证用户身份信息
- 邮箱修改 > 验证当前邮箱是不是本人 发送邮箱验证
- 手机号修改> 验证当前手机号是不是本人 发送邮箱验证
#### 问题: 用户的地区与美食地区关联 耦合性高, 如果需要修改改动极大。
- 可以当用户发表美食时,让用户自行填写地区,美食的所属地区
### #### 登陆模块
- 登陆
- 找回密码
- 手机号登陆
- 邮箱 登陆
- 用户名登陆
### #### 注册模块
- 填写用户名
- 填写密码
- 填写所在地区 > 地区 如果用户发表的时候默认选择当前的地区
- 必须 填写手机号 > 发送短信验证码 > 填写验证码
## 数据库选型
mysql --->
开发时数据库管理工具: Xampp
## 后端技术选型
- nodeJS
- 压缩中间件: compression: "^1.7.4",
- 处理请求: express: "^4.17.1",
- 发送token:jsonwebtoken: "^8.5.1",
- 操作日期: moment: "^2.29.1",
- 操作mysql :mysql: "^2.18.1",
- 邮件发送: nodemailer: "^6.7.2"
- session : 设置 session:express-session
- express: 脚手架
## 前端技术选型
- vue: ---> vue-cli --> vue router --> vuex --> scss
- axios --->
- vant UI --->
- 浏览器内存存储空间 : `sessionStorage`
- 浏览器磁盘存储空间: `localStorage`
## 聊天实时技术需要用到webSocket技术
- 需要共同学习了解.........
- 逻辑实现
- 当用户1给用户2发信息的时候,
- 需要在后端 给用户2 把消息发送过去 实现实时的响应
## 设计数据表
#### 美食表
| id | int key auto | | 主键 |
| ----------- | ------------ | --------------------------- | ------------ |
| title | VARCHAR(128) | 存储分析的美食标题 | 美食标题 |
| img_path | VARCHAR(255) | 存储小图路径 | 缩略图路径 |
| detail | TEXT | 存储食物描述信息 | 食物描述 |
| jianjie | VARCHAR(255) | 食物简介 | 食物的简介 |
| like_me_len | INT | 存储给我点赞的数量 | 点赞数量 |
| look_me_len | INT | 存储浏览数量 | 浏览数量 |
| comment_len | INT | 评论数量 | 评论数量 |
| uid | INT | 美食分享的用户ID,关联用户表 | 用户ID |
| region_id | INT | 所在地区ID | 地区记录的id |
- 标注
- 给我点赞的数量,需要前端和后端进行 点赞交互的时候进行添加操作
- 浏览的数量,需要前端进行 请求查询接口的时候进行添加操作
- 评论数量,需要用户对美食进行评论的时候进行添加操作
#### 美食图集表
- 一个美食可以有多张图片:这些图片不能同时属于两个美食
| id | int key auto | | 主键 |
| ----- | ------------ | ------ | -------- |
| msId | INT | 美食id | 美食 |
| title | VARCHAR(155) | 标题 | 存储标题 |
| path | VARCHAR(255) | 路径 | 图片路径 |
#### 地区省份表
- 一个地区可以有多个美食,一个美食被多地区拥有
| id | INT KEY AUTO | | 主键 |
| ------------- | ------------ | -------------- | ------------ |
| name | VARCHAR(155) | 存储地区名 | 地区名 |
| regionBriefly | VARCHAR(255) | 地区特产简介 | 地区特产简介 |
| searchCount | INT | 存储搜索的数量 | 地区搜索数量 |
- 标注
- 地区搜索数量,需要前端进行 请求查询接口的时候进行添加
- 用户分享的时候 name字段默认插入 用户所在地区的 用户表中的u_area 字段的信息
- 地区可以设置为静态数据,到时候可以在用户所在地区 用id去指向地区表
#### 点赞表
- 一个用户可以对多个美食点赞, 一个美食也可以被多个用户点赞: 多对多
| id | INT KEY AUTO | | 主键 |
| ---- | ------------ | ------ | ------------ |
| uid | INT | 用户id | 点赞的用户 |
| msid | INT | 美食id | 被点赞的美食 |
#### 评论表:根评论表
- 一个用户可以对多个美食进行评论, 一个美食也可以被多个用户评论 多对多
| id | INT KEY AUTO | | 主键 |
| ---------- | ------------ | ---------------------------------------- | ------------ |
| cContent | VATCHAR(255) | 存储用户评论的内容 | 评论内容 |
| uid | INT | 评论美食的用户 | 评论的用户ID |
| msid | INT | 美食记录的id | 美食ID |
| createTime | BIGINT | 评论时间 | 评论时间 |
| parent_id | INT | 自关联,有就不是根评论
否则是根评论 | 根评论ID |
- 表设计思路

- 模拟效果 用于设计表
#### 收藏表---
- 一个用户可以收藏一个美食, 一个美食也可以同时被多个用户收藏: 多对多
| id | | | 主键 |
| ---- | ---- | -------------- | ------ |
| msid | INT | 美食id | 美食id |
| uid | INT | 收藏美食的用户 | 用户 |
#### 用户表
......存储个人数据
| ID int key auto 存储用户id 主键 |
| ------------------------------------------------------------ |
| u_id INT 用 户i d 唯一主键 |
| u_name varchar(20) 用 户 名 登录用户名 |
| u_pwd varchar() 用户密码 登 录 密码 |
| u_phone char(11) 用户电话 用户手机号(不可重复) |
| u_email varchar(25) 用户邮箱 用户邮箱(不可重复) |
| u_nikename varchar(10) 用户昵称 |
| u_area varvchar(20) 用户地区 用户所在地区 |
| u-time datetime YYYY-MM-DD HH:MM:SS 用户注册的时间 |
| isAdmin 默认 false 是否是管理员 |
| isEffective 默认有效 账号是否有效 |
| avatar varchar(255) 头像 头像路径 |
| signature varchar(255) 签名 用户个人简介 |
| |
| 用户所在地区 VHR(255) 地区 |
#### 好友绑定关系表
| ID | INT KEY AUTO 存储 | 描述 | | |
| ---- | ------------------------------------------------------------ | ------------------ | ---- | ---- |
| uid | INT 我的id | 我的页面下自己的id | | |
| uid2 | INT 我的好友的id | 好友的id | | |
- 好友验证状态表
| id | | | 主键 |
| ----- | ------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| uid | INT | 请求添加好友的用户 | 发送好友验证的用户id |
| uid2 | INT | 接收好友申请的用户 | 接收好友验证的用户id |
| state | VHRCHAR | 是否同意
默认0未作出响应, 如果同意,则向请求添加好友的用户发送响应,字段数据修改为1
字段设置为2 表示不同意 如果不同意则发送 `对方不同意`, 默认为null 接收申请的好用未作出响应 | 是否同意
0没有响应
1 同意好友验证
2不同意好友验证 |
- 实现思路

#### 聊天表
| char_id | INT KEY AUTO | | 主键 |
| ------- | ------------ | ---------- | ------ |
| content | VARCHAR(255) | 聊天的内容 | 内容 |
| time | bigint | 存储时间戳 | 时间戳 |
聊天关联表
- 用户聊天的关联表
char2user2user
| id | INT KEY AUTO | | 主键 |
| ----------- | ---------------- | ---- | ---------- |
| uid | 聊天用户id | | 用户id |
| target_uid2 | 聊天的目标用户id | | 目标用户id |
| chat_id | 聊天内容id | | |
## 后端开发模块划分
## 个人模块
- 注册
> 用户名
>
> 密码
>
> 填写地区
>
> 填写 手机号
>
> 手机号 发送验证码
>
> 填写 邮箱
- 登录
> 手机号登录
>
> 邮箱登录
>
> 用户名登录
>
> 找回密码 (手机号 邮箱验证码验证)
- 展示信息修改
> 头像
>
> 资料
>
> 地区
>
> 昵称
- 隐私信息修改
> 密码 ( 验证码)
>
> 邮箱(验证码)
>
> 手机号 (验证码)
- 点赞
- 收藏
- 好友
> 发送好友验证功能
>
> 好友状态返回功能
>
> 好友显示界面
>
> 聊天功能实现
## 美食广场
按照个人选择地区 美食点赞量降序排列
- 分享美食时
> 上传封面 (小图)
>
> 美食描述(文案的意思)
>
> 上传大图
>
> 描述
>
> 时间
- 广场主页面
> 文章跳转详情页
- 详情页
> 用户表
>
> 点赞
>
> 收藏
>
> 评论
## 文档设计说明