Code Monkey home page Code Monkey logo

node-elm's Introduction

About

因为前端项目是根据饿了么官网接口写的,所以后台系统也保持了和官网一致的API接口。

整个项目分为两部分:前台项目接口、后台管理接口,共60多个。涉及登陆、注册、添加商品、商品展示、筛选排序、购物车、下单、用户中心等,构成一个完整的流程。

注1:此项目纯属个人瞎搞,不用于任何商业用途。

注2:项目预览地址和接口需要使用https访问哦!

说明

node-elm 接口文档: 接口文档地址

如果对您对此项目有兴趣,可以点 "Star" 支持一下 谢谢! ^_^

或者您可以 "follow" 一下,我会不断开源更多的有趣的项目

开发环境 macOS 10.12.4 nodejs 6.10.0 Mongodb 3.4.2

部署环境 阿里云 CentOS 7.2 64位

如有问题请直接在 Issues 中提,或者您发现问题并有非常好的解决方案,欢迎 PR 👍

相关项目地址:前端项目地址后台管理系统地址

技术栈

nodejs + express + mongodb + mongoose + es6/7 + vue + element-ui

项目运行

项目运行之前,请确保系统已经安装以下应用
1、node (6.0 及以上版本)
2、mongodb (开启状态)
3、GraphicsMagick (裁切图片)
git clone https://github.com/bailicangdu/node-elm  

cd node-elm

npm install 或 yarn(推荐)

npm run dev

访问: http://localhost:8001(如果已启动前台程序,则不需打开此地址)

API接口文档

接口文档地址:https://github.com/bailicangdu/node-elm/blob/master/API.md

数据库文件

数据库备份文件:https://cangdu.org/file/elm.zip (mongodb)

按照mongodb的方式恢复备份即可

效果演示

(可在后台管理系统添加商铺,食品等数据,并在前端地址查看效果)

前端网址

前端网址戳这里(请用chrome手机模式预览)

移动端扫描下方二维码

后台管理系统网址

后台管理网址戳这里

目标功能

  • IP定位 -- 完成
  • 城市列表 -- 完成
  • 搜索地址 -- 完成
  • 上传图片 -- 完成
  • 添加商铺 -- 完成
  • 添加食品 -- 完成
  • 测量距离 -- 完成
  • 搜索美食,餐馆 -- 完成
  • 根据距离、销量、评分、特色菜、配送方式等进行排序和筛选 -- 完成
  • 评价列表 -- 完成
  • 食品详情 -- 完成
  • 商家详情 -- 完成
  • 购物车功能 -- 完成
  • 登录、注册 -- 完成
  • 修改密码 -- 完成
  • 用户信息 -- 完成
  • 添加、删除、修改收货地址 -- 完成
  • 下单 -- 完成 ✨✨
  • 订单信息 -- 完成
  • 红包 -- 完成
  • 商铺管理 -- 完成
  • 食品管理 -- 完成
  • 管理员权限验证 -- 完成
  • 超级管理员 -- 完成
  • 订单管理 -- 完成
  • 流量统计 -- 完成
  • 前后台路由同构 -- 完成
  • 部署上线 -- 完成

部分截图

部分前台页面

部分后台管理系统页面

项目布局

.
├── InitData                        初始化数据
│   ├── activity.js                 餐馆活动
│   ├── category.js                 餐馆分类
│   ├── cities.js                   城市列表
│   ├── delivery.js                 配送方式
│   ├── entry.js                    食品分类
│   ├── explain.js                  解释说明
│   ├── hongbao.js                  红包
│   ├── payments.js                 支付方式
│   ├── rate.js                     评论
│   └── remark.js                   备注列表
├── config                          运行配置
│   ├── default.js                  默认配置
│   └── development.js              开发环境
├── controller                      处理中心,负责路由及数据库的具体操作
│   ├── admin
│   │   └── admin.js                管理员
│   ├── bos
│   ├── eus
│   ├── member
│   │   └── vipcart.js              会员卡
│   ├── payapi
│   ├── promotion
│   │   └── hongbao.js              红包
│   ├── shopping
│   │   ├── category.js             餐馆分类
│   │   ├── food.js                 食品
│   │   └── shop.js                 餐馆
│   ├── statis
│   │   └── statis.js               数据统计
│   ├── ugc
│   │   └── rating.js               评论
│   ├── v1
│   │   ├── address.js              收获地址
│   │   ├── captchas.js             验证码
│   │   ├── carts.js                购物车
│   │   ├── cities.js               城市列表
│   │   ├── order.js                订单
│   │   ├── remark.js               备注
│   │   └── search.js               搜索
│   ├── v2
│   │   ├── entry.js                食品分类
│   │   └── user.js                 用户信息
│   ├── v3
│   │   └── explain.js              解析说明
│   └── v4
├── logs                            日志文件
├── middlewares                     中间件
│   ├── check.js                    权限验证    
│   └── statistic.js                API数据统计
├── models                          模型(数据库)
│   ├── admin
│   │   └── admin.js                管理员模型
│   ├── bos
│   │   └── order.js                订单模型
│   ├── eus
│   ├── ids.js
│   ├── member
│   ├── payapi
│   ├── promotion
│   │   └── hongbao.js              红包模型
│   ├── shopping
│   │   ├── activity.js             餐馆活动模型
│   │   ├── category.js             餐馆分类模型
│   │   ├── delivery.js             配送方式模型
│   │   ├── food.js                 食品模型
│   │   └── shop.js                 餐馆模型
│   ├── statis
│   │   └── statis.js               数据统计模型
│   ├── ugc
│   │   └── rating.js               评论模型
│   ├── v1
│   │   ├── address.js              收获地址模型
│   │   ├── cart.js                 购物车模型
│   │   ├── cities.js               城市列表模型
│   │   ├── payments.js             付款方式模型
│   │   └── remark.js               备注模型
│   ├── v2
│   │   ├── entry.js                食品分类模型
│   │   ├── user.js                 用户模型
│   │   └── userInfo.js             用户信息模型
│   ├── v3
│   │   └── explain.js              解释说明模型
│   └── v4
├── mongodb                         连接数据库
│   └── db.js
├── prototype                       基础功能Class
│   ├── addressComponent.js         与腾讯、百度地图API相关的Class
│   └── baseComponent.js            底层类
├── public                          静态资源目录
├── routes                          路由配置
│   ├── admin.js                    管理员
│   ├── bos.js                      订单
│   ├── eus.js                      用户
│   ├── index.js                    路由配置主文件
│   ├── member.js                   会员卡
│   ├── payapi.js                   付款
│   ├── promotion.js                红包
│   ├── shopping.js                 餐馆、食品、Menu
│   ├── statis.js                   数据统计
│   ├── ugc.js                      评论
│   ├── v1.js                       城市、用户、收获地址
│   ├── v2.js                       登陆、退出
│   ├── v3.js                       解释说明
│   └── v4.js                       餐馆
├── screenshots                     项目截图
├── views   
├── .babelrc 
├── .gitignore
├── API.md                          接口文档
├── app.js                          基础配置
├── COPYING                         GPL协议
├── index.js                        入口文件
├── package.json
├── README.md                  
.

47 directories, 197 files

License

GPL

node-elm's People

Contributors

airwzz999 avatar bailicangdu avatar dependabot[bot] avatar meteoors avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

node-elm's Issues

订单详情和数据管理

数据管理那个节点下面有点卡 而且分页也有点卡 建议做个加载动画吧 还有订单详情点击不同的订单信息变为一样了

config-lite load `local` failed

大神这个错误怎么处理啊!!!
Error: Cannot find module 'local' from 'E:\node-elm\mongodb'
at Function.module.exports [as sync] (E:\node-elm\node_modules\resolve\lib\sync.js:33:11)
at loadConfig (E:\node-elm\node_modules\config-lite\index.js:37:26)
at Object. (E:\node-elm\node_modules\config-lite\index.js:22:22)
at Module._compile (module.js:571:32)
at Module._extensions..js (module.js:580:10)
at Object.require.extensions.(anonymous function) [as .js] (E:\node-elm\node_modules\babel-register\lib\node.js:152:7)
at Module.load (module.js:488:32)
at tryModuleLoad (module.js:447:12)
at Function.Module._load (module.js:439:3)
at require (internal/module.js:20:19)
at Object. (E:/node-elm/mongodb/db.js:4:1)
at Module._compile (module.js:571:32)
at loader (E:\node-elm\node_modules\babel-register\lib\node.js:144:5)
at Object.require.extensions.(anonymous function) [as .js] (E:\node-elm\node_modules\babel-register\lib\node.js:154:7)
at Module.load (module.js:488:32)
at tryModuleLoad (module.js:447:12)

上传图片的接口(/v1/addimg/shop),有点问题;

 ...
 await fs.rename(files.file.path, repath);
 gm(repath)
 ...

这里在gm方法执行的时候,报错了,显示找不到repath这个路径;
然后我把fs.rename改成同步的方式就可以了;难道是await在这里没起作用吗;

获取不到定位城市

前端项目里的online地址改成我自己的域名:8001来访问的,公网ip映射到内网对应的ip和端口。

我把addressComponent.js里写死的ip去掉了
然后运行后,前端得到ERR_DATA
后端看显示的是局域网ip无法获取位置

请问这里node-elm应该怎么配置运行才行呢?

大神 求助?

为什么用vue写的项目 打包后 访问这个http://cangdu.org:8001/admin/info 这个接口 返回的数据是{"status":0,"type":"ERROR_SESSION","message":"获取管理员信息失败"} 在本地访问没什么问题 本地用的是代理,获取数据使用的是axios 我给它配置了默认路径 axios.defaults.baseURL = process.env.NODE_ENV === 'production' ? 'http://cangdu.org:8001' : '/api';

数据库

请问数据表能提供下吗,谢谢

为什么会出现这个错误,求怎么解决

PS C:\Users\XieHaitao\Desktop\node-elm-master> npm run dev

[email protected] dev C:\Users\XieHaitao\Desktop\node-elm-master
NODE_ENV=development supervisor --harmony index.js

'NODE_ENV' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

npm ERR! Windows_NT 6.3.9600
npm ERR! argv "C:\Program Files\nodejs\node.exe" "C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js" "ru
" "dev"
npm ERR! node v6.10.0
npm ERR! npm v3.10.10
npm ERR! code ELIFECYCLE
npm ERR! [email protected] dev: NODE_ENV=development supervisor --harmony index.js
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] dev script 'NODE_ENV=development supervisor --harmony index.js'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the node-elm package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! NODE_ENV=development supervisor --harmony index.js
npm ERR! You can get information on how to open an issue for this project with:
npm ERR! npm bugs node-elm
npm ERR! Or if that isn't available, you can get their info via:
npm ERR! npm owner ls node-elm
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR! C:\Users\XieHaitao\Desktop\node-elm-master\npm-debug.log
PS C:\Users\XieHaitao\Desktop\node-elm-master>

关于登录注册

你好,req.session.admin_id = admin_id;这不意味着每次只能有一个用户登录么?那么我两个用户同时登录怎么办?求大神指点

菜鸟学习node过程的一些编程思路疑问,希望能解答

你好,我之前一直是用c++,c#开发得比较多,c和java也有用。现在正学习node和javascript做web开发,但有一些地方还没搞明白。我看了好几本node的书籍,都没有找到项目复杂度比较高的例程,基本是一个知识点一个模块,没有很健全的模块体系,还是搞不清这种异步编程**。你这开源项目做得挺大的,应该能给我答疑。

在C#,C++开发时,是可以主类中定义一些完成不同功能的成员,然后主类的方法中操作这些成员执行相应的功能和逻辑,而成员也可以通过事件或返回值的方式把执行结果反馈到主类。但在搞node+express的时候,就不懂怎样让app.js中的对象和子模块的对象进行交互、不同模块之间要动态传数据时是怎样的方式。比如说,我每个请求路由都独立成js文件了,浏览器有请求的时候,我要返回给浏览器的数据是需要从app.js的对象中获取的,那该怎样跨文件传到我的路由.js文件上?

async 的问题

大大你好 最近数据显示async会跟别的比较下运行时消耗时间相对较长 有想过未来会换别的异步的方法吗?假如有的话你会首选哪个 想听听你的看法~

node 是如何支持 es6 module 的

我在搭建项目时添加的 babel 插件和你的一样,但是用 supervisor --harmony 的方式启动的话它不是别 es6 的 module,如果添加 babel 插件,以 babel-node index 的方式启动是可以支持的,但是这样每次修改都需要手动启动一次,请问作者是如何实现这两个的兼容的?有什么更好的解决办法吗?

获取管理员信息失败

// 获取管理员信息
export const getAdminInfo = () => axios.get('/admin/info')
结果为
{"status":0,"type":"ERROR_SESSION","message":"获取管理员信息失败"}
如何才能得到正确的管理员信息

关于node-elm

cangdu大神,我特别好奇你的node是怎么学的。有点6啊,有何学习网站推荐没?还有你引入的qiniu这个云储存api到底是干嘛用的呢?

想请教一下后端的部署问题

大神,您的好几个仓库我都关注了,您简直是我们的福音,但是本人有点菜,我有几个疑惑想不通,想问一下。

我看到 您的域名是同一个 http://cangdu.org,服务器也是同一个(阿里云),在项目很多的情况下,您为每个项目分配不同的端口号或者不同的子文件夹。比如:

疑惑

  1. 我自己的理解是,我们用nodejs,每一个端口是一个服务, 每一个端口 服务, 都需要跑一个命令行,比如(node server.js),是这样的吗? 比如上面5个项目, 应该用了3个nodejs服务器。
  2. 在8003端口的服务,在后端是否要监听不同的路由,(举个例子)http://cangdu.org:8003/index http://cangdu.org:8003/center 这两个路由不同,但是后端都要返回同一个index.html 对吗..?
  3. 8001端口,既有api请求,也会有vue2-elm的很多的页面路由请求,在同一个服务中监听这多个请求,会不会混淆或者不好管理啊?
  4. /pxq/ 和 /manage/ 的两个项目都是80端口的请求,应该是用的同一个server吧? 想知道后端是如何处理的,也是像 上面的3 中 那样监听不同的路由来返回不同项目的 html吗。。?
    比如express的这样:
app.use('/manage', manage); // 渲染manage的html给后台管理系统项目
app.use('/pxq', pxq); // 渲染pxq的html给后台管理系统项目


English please

hi guys
thank you for your work.
but I think It will be so good if you translate this repo to English.

formidable读不到files?

form.parse(req, async (err, fields, files) => {

此处files读不到数据,我正在调,如果能调好我push。

API接口文档

域名: http://cangdu.org

端口:8001

1.获取城市列表

请求URL:

/v1/cities

示例:

http://cangdu.org:8001/v1/cities?type=guess

请求方式:

GET

请求参数

参数 是否必选 类型 说明
type     Y       string  类型 guess:定位城市, hot:热门城市, group:所有城市

返回示例

{
  id: 1,
  name: "上海",
  abbr: "SH",
  area_code: "021",
  sort: 1,
  latitude: 31.23037,
  longitude: 121.473701,
  is_map: true,
  pinyin: "shanghai"
}

2.获取所选城市信息

请求URL

/v1/cities/:id

示例:

http://cangdu.org:8001/v1/cities/1

请求方式

GET

请求参数

参数 是否必选 类型 说明
id     Y       int   城市id

返回示例

{
  id: 1,
  name: "上海",
  abbr: "SH",
  area_code: "021",
  sort: 1,
  latitude: 31.23037,
  longitude: 121.473701,
  is_map: true,
  pinyin: "shanghai"
}

3.搜索地址

请求URL

/v1/pois

示例:

http://cangdu.org:8001/v1/pois?city_id=1&keyword=迪士尼&type=search

请求方式

GET

请求参数

参数 是否必选 类型 说明
city_id     Y       int   城市id
keyword     Y       string   搜索关键词
type     N       string   搜索类型,默认为search

返回示例

[
    {
        name: "上海迪士尼乐园",
        address: "上海市浦东新区申迪西路753号",
        latitude: 31.14419,
        longitude: 121.66034,
        geohash: "31.14419,121.66034"
    },
    {
        name: "迪士尼",
        address: "上海市浦东新区妙境路1118号家乐福川沙店1层",
        latitude: 31.18183,
        longitude: 121.69279,
        geohash: "31.18183,121.69279"
    },
    ...  //共10个数据
]

配置出错

/Users/tomato/Sites/vue-test/node-elm/app.js:72
  name: _configLite2.default.session.name,
                                    ^

TypeError: Cannot read property 'name' of undefined
    at Object.<anonymous> (/Users/tomato/Sites/vue-test/node-elm/app.js:33:11)
    at Module._compile (module.js:573:30)
    at loader (/Users/tomato/Sites/vue-test/node-elm/node_modules/babel-register/lib/node.js:144:5)
    at Object.require.extensions.(anonymous function) [as .js] (/Users/tomato/Sites/vue-test/node-elm/node_modules/babel-register/lib/node.js:154:7)
    at Module.load (module.js:507:32)
    at tryModuleLoad (module.js:470:12)
    at Function.Module._load (module.js:462:3)
    at Module.require (module.js:517:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/Users/tomato/Sites/vue-test/node-elm/index.js:2:1)
    at Module._compile (module.js:573:30)
    at Object.Module._extensions..js (module.js:584:10)
    at Module.load (module.js:507:32)
    at tryModuleLoad (module.js:470:12)
    at Function.Module._load (module.js:462:3)
    at Function.Module.runMain (module.js:609:10)
    at startup (bootstrap_node.js:158:16)
    at bootstrap_node.js:598:3

建议尽量使用一种模块加载方式,配置文件使用module.exports的Commonjs模块加载方式,其他代码多半有使用ES7的模块加载方式

厉害了我的哥

我偶然找到这个项目, 我也刚学完node mongodb express, 只是对单元测试还是比较陌生。 感兴趣的话可以一起探讨技术! 我的微信 peterbugman

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.