# vue2_仿蘑菇街pc端项目
**Repository Path**: qu-weizhi/vue2-mushroom_street
## Basic Information
- **Project Name**: vue2_仿蘑菇街pc端项目
- **Description**: 基于vue2以及node实现的仿蘑菇街项目
- **Primary Language**: JavaScript
- **License**: GPL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 5
- **Forks**: 0
- **Created**: 2022-05-04
- **Last Updated**: 2024-04-25
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Vue, Node
## README
# 蘑菇街说明文档
## 介绍
**基于vue2以及node实现的仿蘑菇街项目**
## 技术栈:
前端:Vue2全家桶、Element Ui、Less
后端:node、Express、socket.io( 基于 socket.io 实现了客服与用户的1对1聊天 )
数据库:mysql
## 文件说明:
**vue-mushroom_street:**
> 前端项目文件夹
**vue-mushroom_street/serve**
> 后端项目文件夹
**mgj.sql**
> 数据库文件
**API接口.xmind**
> API接口文件
## 项目启动
**前端项目**
进入 vue-mushroom_street 文件夹,下载依赖
```
npm i
```
启动项目
```
npm run serve
```
打开项目地址
```
前台地址:http://127.0.0.1:8080/#/
后台地址:http://127.0.0.1:8080/#/admin
后台默认账号密码:admin 123456
```
**后端项目**
进入 vue-mushroom_street/serve 文件夹,下载依赖
```
npm i
```
打开 vue-mushroom_street/serve/db/config.js 文件,修改 mysql 配置
```js
module.exports = {
// 数据库配置
config: {
host: 'localhost',// 地址
user: 'root',// 账号
port: '3306',// 端口
password: '12345678',// 密码
database: 'mgj'// 数据库名
},
```
启动项目
```
node app.js
```
后端接口地址:
```
http://127.0.0.1:3000/
```
## 静态页面
### 前台页面
1. 首页 index.html
2. 登陆页面 login.html
3. 注册页面 register.html
4. 购物车 cart/index.html
1. 确认订单 cart/cart_order.html
2. 支付 cart/cart_payment.html
3. 完成 cart/cart_success.html
4. 购物车为空 cart/cart_null.html
5. 收藏页面 collection.html
6. 我的订单(全部订单) order/index.html
1. 待付款
2. 待收货
3. 待评价
4. 没有订单 order/order_null.html
7. 单个商品页面 commodity.hltml
### 后台页面功能
1. 首页
- 上左边
- 当前账号的名字
- 当前账号的权限
- 管理员的头像
- 上右边
- 总订单数
- 已完成数
- 待付款数
- 待发货数
- 待评价数
- 售后数
- 下左边
- 根据下单日期的销量折线图
- 下右边
- 根据下单日期的当天收入的柱形图
2. 订单管理
- 发货
- 订单信息
3. 用户账号管理
- 用户的账号信息
- 拉黑用户:拉黑后不允许用户购买
- 查看用户信息
4. 管理员管理
- 最高权限:可以操作管理员
- 店长权限:发布、删除、修改商品、拉黑用户
- 员工权限:商品发货,查看商品信息
5. 商品管理
- 商品列表
- 商品的增、删、改、查
- 商品分类
- 一级分类
- 12个一级分类
- 二级分类
- 10个二级分类
6. 客服功能
- 和用户在线聊天
## 接口
## 数据库
### 管理员表 admin
id 管理员id
name 管理员名称
password 管理员密码
permissions 权限(0[无权限]、1[员工]、2[店长]、3[超级管理员])
state 状态(是否启用)1、0
newTime 创建时间
### 用户表 user
id 用户id
name 用户名称(默认名称为用户账号)
account 用户账号
img 用户头像
address 收货地址
password 用户密码
newTime 创建时间
editTime 修改时间
token 令牌
pullBlack 拉黑(0:没有被拉黑,1:被拉黑)[拉黑后将无法购买商品]
### 商品表 product
id 商品id
name 商品名称
parameter 商品参数: { name: "尺寸:", data: ["M", "S"] },
img 商品图片
classId 商品分类id
price 商品价格
promise 商品承诺 [7天无理由,包邮]
### 商品评价表 comment
id 评价id
product_id 商品id
user_id 用户id
rate 商品评分
evaluation 商品评价
time 评价时间
### 购物车表 cart
id 购物车id
user_id 用户id
product_id 商品id
parameter 加入购物车的参数:{颜色:[红、黄],尺码:[m,s]}
num 数量
newTime 添加时间
### 订单表 indent
id 订单id
user_id 用户id
number 订单编号
cart_info 购物车信息(用来存放img、名字、参数、单价、数量)
payment 实付款
state 交易状态(待付款、待收货、待评价)
afterSale 售后情况
address 收货地址
time 成交时间
### 收藏表 collection
id 收藏表id
user_id 用户id
product_id 商品id
time 收藏时间
### 商品分类表 productClass
id 分类表id
name 分类名称
grade 分类等级 (1[一级分类]、2[二级分类])
### 用户购物车信息 user_cart_info
> 用来临时存储订单的信息
id 表id
user_id 用户id
cart_info 确认订单信息
number 待付款的订单编号
jump_flag 标记(1:确认订单页;2:待付款页
### 聊天记录表 chat
> 一对一聊天
id 表id
u_id 用户id(格式:home + 用户自己的id)
img 用户头像
name 用户名称
content 聊天记录
## 实现注册
1. 点击注册
2. 判断 确定密码和密码是否一至
3. 判断 验证码是否正确
4. 发送请求
5. 查询账号是否存在
- 账号存在
- 提示用户,当前账号已存在
- 账号不存在
- 插入数据库
- 返回token,并保存到本地存储
- 把当前用户的数据保存到vuex
- 跳转到首页,渲染用户数据
## 信息存储
1. 前台登陆和注册的 token 存放在 localStorage(本地存储)
2. 验证码存放在 cookie
3. 后台登录的 token 存放在 sessionStorage(会话存储)
## 实现管理员修改
1. 判断权限( 只允许修改比自己权限小的)
- 自己权限 小于等于 被修改权限 --> 提示无权限
- 被修改账号名字 等于 自己名字时 --> 允许修改
- 且此时 自己权限 等于 被修改权限
```js
let i = 3 // 自己的权限
let t = 3 // 被修改的权限
let iNmae = 'admin' // 自己的名字
let tName = 'admin' // 被修改的名字
// 判断权限
if ( i <= t ){
alter('权限不足')
return
}else{
// 执行一堆代码
.....
}
// 判断名字
if( iName == tName ){
// 执行一堆代码
....
}
if( iName==tName ? true : ( i <= t ? false : true ) )
```
## 解决购物刷新bog
1. 在数据库再创建一张表,用来保存 确定订单信息 以及 订单编号 和 标记
2. 每次进入 确定订单页 或 支付页 ,发请请求,根据标记获取表中的 确定订单信息 或 订单编号
3. 如果是正常行为,就恢复初始值,反之则不修改
## 购物车路由跳转逻辑
1. 判断是否需要验证
2. 判断 to: /cart/order
3. 发送请求:获取临时数据 判断
```js
// 订单确定页跳转
if(cart_info !== '' && numbet==='' && jump_flag===1){
// 允许跳转
}
// 支付页跳转
if(cart_info === '' && number !== '' && jump_flag === 2){
// 允许跳转
}
```
## 实现首页商品分类
1. 拿到分类id
2. 保存到vuex
3. 获取vuex的分类id
4. 遍历订单列表
- 找到相同的分类id
- 展示相同分类id的商品
- 把剩下的商品叠加进去(商品不一样)
# 待完成功能:
1. - [x] 登录后,可以修改个人信息
2. - [x] 首页--搜索
3. - [x] 完善后台--分类管理
4. - [x] 实现首页--分类功能
5. - [x] 商品--评论区展示
6. - [x] 后台首页--信息的展示
7. - [x] 客服功能
8. - [x] 前台首页--无限滚动
9. - [x] 全局后置路由
# 待修复的bug
1. - [x] 注册文本框未清空
- [x] 滚动条未回到顶端
- [x] 订单页头像关闭
- [x] 登录密码错误未提示
- [x] 添加售后功能
- [x] 后台管理员权限管理--缺少权限验证
- [x] 后台首页--每天收入有bug
- [x] 后台首页--右上角卡片总收款逻辑
- [x] 搜索的bug
- [x] 优化后台表格的序号
- [x] 商品发货后分页没了
- [x] 未登录不允许打开客服功能
- [x] 客服不在线时,提示用户
- [x] 无权限的管理员不允许使用客服功能
- [ ]