# About
整个项目分为两部分:前台项目接口、后台管理接口,共60多个。涉及登陆、注册、添加商品、商品展示、筛选排序、购物车、下单、用户中心等。
## 技术栈
nodejs + express + mongodb + mongoose + log4j + redis + nodeMailer + ejs + es6/7 + pm2
## 项目运行
```
项目运行之前,请确保系统已经安装以下应用
1、node (6.0 及以上版本)
2、mongodb (开启状态)
3、redis (开启状态)
4、GraphicsMagick (裁切图片)
```
```
git clone https://github.com/Anita-Mul/ELM_Node
cd ELM_Node
npm install 或 yarn(推荐)
node mailServer/index.js // 运行邮件服务器,当运行中出 bug 时会发邮件报警
npm run dev // 运行 Node.js 项目
访问: http://localhost:3000
阿里云地址: http://elm_node.anitamul.club
```
## 使用阿里云 Nodejs 性能监控平台
- [阿里云 Nodejs 性能监控平台地址](https://node.console.aliyun.com/?spm=5176.179584.J_5253785160.3.578220085PQS8g&accounttraceid=fbd61a5d0a9549999fe283c007a545bdfauy#!/owned)
- 更改 elmConfig.json 中
```
{
"appid": "123456",
"secret": "50a3908378749237f7ce52aa23afa067ac9749108a6",
}
```
## 使用 pm2 管理 node 进程
```
# Start all applications
pm2 start ecosystem.config.js
# Stop all
pm2 stop ecosystem.config.js
# Restart all
pm2 restart ecosystem.config.js
# Reload all
pm2 reload ecosystem.config.js
# Delete all
pm2 delete ecosystem.config.js
```
## 目录结构
```
├── app.js
├── config
│ ├── default.js // 默认配置文件
│ ├── development.js // 开发配置文件
│ └── log4j.js // log4j 配置文件
├── controller // 级别 warn 的日志输出
│ ├── admin
│ │ └── admin.js // 管理员 controller
│ ├── member
│ │ └── vipcart.js // 普通用户会员管理 controller
│ ├── promotion
│ │ └── hongbao.js // 红包 controller
│ ├── shopping
│ │ ├── category.js // 食品所属类别 controller
│ │ ├── food.js // 食品 controller
│ │ └── shop.js // 商店 controller
│ ├── statis
│ │ └── statis.js // 统计数据 —— API、用户、管理员、订单数量 controller
│ ├── ugc
│ │ └── rating.js // 商店评价信息 —— 商店评分、商店评论分类、每个分类下的评论 controller
│ ├── v1
│ │ ├── address.js // 用户收货地址 controller
│ │ ├── captchas.js // 验证码 controller
│ │ ├── carts.js // 用户购物车 controller
│ │ ├── cities.js // 用户当前位置选择 —— 百度地图API定位、用户自选地址 controller
│ │ ├── order.js // 用户订单 controller
│ │ ├── remark.js // 用户订单备注信息 controller
│ │ └── search.js // 搜索当前城市某关键字地址 controller
│ ├── v2
│ │ ├── entry.js // 食品所有分类 controller
│ │ └── user.js // 普通用户 controller
│ └── v3
│ └── explain.js // 提示信息 controller
├── COPYING
├── ecosystem.config.js // pm2 配置文件
├── elmConfig.json // 阿里云 Node.js 性能监控平台
├── index.js
├── InitData // 初始化数据
│ ├── activity.js
│ ├── category.js
│ ├── cities.js
│ ├── delivery.js
│ ├── entry.js
│ ├── explain.js
│ ├── hongbao.js
│ ├── payments.js
│ ├── rate.js
│ └── remark.js
├── logs // 日志
│ ├── all // 级别 all - warn 的日志输出
│ │ └── elm_all.log
│ ├── error // 级别 error 的日志输出
│ │ ├── elm_error_2022-04-19.log.gz
│ │ ├── elm_error_2022-04-20.log.gz
│ │ └── elm_error.log
│ ├── http // http全链路日志输出
│ │ ├── elm_http_2022-04-19.log.gz
│ │ ├── elm_http_2022-04-20.log.gz
│ │ ├── elm_http_2022-04-21.log.gz
│ │ └── elm_http.log
│ ├── pm2 // pm2日志输出
│ │ ├── elm_node
│ │ │ ├── app-pm_id-34.pid
│ │ │ ├── ELMerr.log
│ │ │ └── ELMout.log
│ │ └── mail_node
│ │ ├── app-pm_id-35.pid
│ │ ├── ELMerr.log
│ │ └── ELMout.log
│ └── warn // 级别 warn 的日志输出
│ └── elm_warn.log
├── mailServer // 邮件服务器
│ ├── app.js
│ └── index.js
├── middlewares // 中间件
│ ├── check.js // 用户身份验证
│ ├── log4j.js // log4j 中间件
├── models // Model
│ ├── admin
│ │ └── admin.js // 管理员 Model
│ ├── bos
│ │ └── order.js // 用户订单 Model
│ ├── bug
│ │ └── bug.js // 用于 log4j 程序 bug 单流转
│ ├── ids.js // Model id
│ ├── promotion
│ │ └── hongbao.js // 红包 Model
│ ├── shopping
│ │ ├── activity.js // 商店活动 Model
│ │ ├── category.js // 食品分类 Model
│ │ ├── delivery.js // 配送方式 Model
│ │ ├── food.js // 食品 Model
│ │ └── shop.js // 商店 Model
│ ├── statis
│ │ └── statis.js // 数据统计 Model
│ ├── ugc
│ │ └── rating.js // 商店评论 Model
│ ├── v1
│ │ ├── address.js // 用户地址 Model
│ │ ├── cart.js // 用户购物车 Model
│ │ ├── cities.js // 城市 Model
│ │ ├── payments.js // 用户订单 Model
│ │ └── remark.js // 用户订单备注信息 Model
│ ├── v2
│ │ ├── entry.js // 食品所有分类 Model
│ │ ├── userInfo.js // 用户信息 Model
│ │ └── user.js // 用户 Model
│ └── v3
│ └── explain.js // 提示信息 Model
├── mongodb
│ └── db.js // 数据库
├── package.json
├── package-lock.json
├── prototype
│ ├── addressComponent.js // 地址基类
│ └── b