├── static ├── .gitkeep ├── reset.css └── data.json ├── src ├── components │ ├── shop │ │ ├── index │ │ │ ├── component.less │ │ │ ├── component.html │ │ │ ├── component.js │ │ │ └── ui.vue │ │ ├── order │ │ │ ├── ui.vue │ │ │ ├── component.js │ │ │ ├── component.html │ │ │ └── component.less │ │ ├── rating │ │ │ ├── ui.vue │ │ │ ├── component.js │ │ │ ├── component.less │ │ │ └── component.html │ │ └── shop │ │ │ ├── ui.vue │ │ │ ├── component.js │ │ │ ├── component.html │ │ │ └── component.less │ ├── common │ │ ├── cart │ │ │ ├── ui.vue │ │ │ ├── component.js │ │ │ ├── component.html │ │ │ └── component.less │ │ └── topBar │ │ │ ├── ui.vue │ │ │ ├── component.js │ │ │ ├── component.html │ │ │ └── component.less │ └── pages │ │ ├── account │ │ ├── ui.vue │ │ ├── component.html │ │ ├── component.js │ │ └── component.less │ │ ├── admin │ │ ├── ui.vue │ │ ├── component.js │ │ ├── component.html │ │ └── component.less │ │ ├── detail │ │ ├── ui.vue │ │ ├── component.html │ │ ├── component.js │ │ └── component.less │ │ ├── login │ │ ├── ui.vue │ │ ├── component.less │ │ ├── component.html │ │ └── component.js │ │ └── rate │ │ ├── ui.vue │ │ ├── component.less │ │ ├── component.html │ │ └── component.js ├── store │ ├── mutations.js │ ├── state.js │ ├── types.js │ ├── getters.js │ ├── index.js │ └── actions.js ├── axios │ ├── good │ │ ├── config.js │ │ └── cache.js │ ├── base │ │ ├── setting.js │ │ └── index.js │ ├── seller │ │ ├── config.js │ │ └── cache.js │ ├── index.js │ └── user │ │ ├── config.js │ │ └── cache.js ├── App.vue ├── router │ ├── index.js │ └── router.js ├── main.js └── base │ └── base.vue ├── config ├── prod.env.js ├── dev.env.js └── index.js ├── .editorconfig ├── .gitignore ├── server ├── package.json ├── middleware │ └── formatDate.js ├── routes │ ├── index.js │ ├── good.js │ ├── seller.js │ └── user.js ├── db │ └── index.js ├── index.js └── api │ └── index.js ├── .babelrc ├── .postcssrc.js ├── index.html ├── README.md ├── package.json └── elm.sql /static/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/shop/index/component.less: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /config/prod.env.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | module.exports = { 3 | NODE_ENV: '"production"' 4 | } 5 | -------------------------------------------------------------------------------- /src/components/shop/index/component.html: -------------------------------------------------------------------------------- 1 |
月售{{food.sellCount}} 好评率{{food.rating}}%
8 | ¥{{food.price}} 9 |{{food.info}}
16 |月售{{food.sellCount}}份 好评率{{food.rating}}%
25 | ¥{{food.price}} 26 |{{seller.bulletin}}
28 |
36 |
37 | ```
38 | ├── README.md
39 | ├── build // 构建服务和webpack配置
40 | ├── config // 项目不同环境的配置
41 | ├── index.html // 项目入口文件
42 | ├── package.json // 项目配置文件
43 | │
44 | ├── server // 项目后台
45 | │ ├── api // api操作
46 | │ ├── db // 与数据库交互
47 | │ ├── routes // 后台路由
48 | │ ├── index.js // 后台入口文件
49 | │ └── package.json // 项目配置文件
50 | |
51 | │
52 | ├── src // 生产目录
53 | │ └── axios // axios操作
54 | | ├──index.js // axios配置表
55 | | ├──base // axios公共部分
56 | | | ├──index.js //公共方法
57 | | | └──setting.js //状态码
58 | | └── user
59 | | ├──cache.js //请求函数
60 | | └──config.js //配置信息
61 | |
62 | | ├── base //vue模板
63 | │ ├── components // 组件
64 | | | ├──common //公共组件
65 | | | └──admin
66 | | | ├── ui.vue // 输出组件
67 | | | ├── component.html // template
68 | | | ├── component.js // script
69 | | | └── component.less // style
70 | | |
71 | │ ├── router // 路由
72 | │ ├── store // vuex状态管理器
73 | │ ├── App.vue // 首页
74 | │ └── main.js // Webpack 预编译入口
75 | │
76 | ```
77 |
--------------------------------------------------------------------------------
/src/components/pages/account/component.js:
--------------------------------------------------------------------------------
1 | import Base from '@/base/base.vue'
2 | import UserCache from '@/axios/user/cache'
3 | import SellerCache from '@/axios/seller/cache'
4 |
5 | export default Base.extend({
6 | data() {
7 | return {
8 | user: {},
9 | seller: {}
10 | }
11 | },
12 | computed: {
13 | orderFood: function() {
14 | return this.$store.getters.getCart;
15 | },
16 | payMoney: function() {
17 | if (this.$store.getters.getTotal > 28)
18 | return this.$store.getters.getTotal - 5 + this.seller.deliveryPrice;
19 | else
20 | return this.$store.getters.getTotal + this.seller.deliveryPrice;
21 | }
22 | },
23 | methods: {
24 | goBack: function() {
25 | this.$router.push({
26 | path: '/shop/order'
27 | });
28 | },
29 | submitOrder: function() {
30 | let order = {
31 | 'orderTime': new Date().getTime(),
32 | 'orderType': 1,
33 | 'price': this.payMoney,
34 | };
35 | UserCache.submitOrder(JSON.stringify(order))
36 | .then((res)=>{
37 | this.$message({
38 | message: res,
39 | type: 'success'
40 | });
41 | this.$router.push('/admin');
42 | }).catch((err)=>{
43 | this.$message({
44 | message: err,
45 | type: 'warning'
46 | });
47 | });
48 | },
49 | getUSer: function() {
50 | UserCache.getUser()
51 | .then((res)=>{
52 | this.user = res;
53 | })
54 | },
55 | getSeller: function() {
56 | SellerCache.getSeller()
57 | .then((res)=>{
58 | this.seller = res;
59 | })
60 | }
61 | },
62 | created: function() {
63 | this.getUSer();
64 | this.getSeller();
65 | }
66 | })
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "pos",
3 | "version": "1.0.0",
4 | "description": "A Vue.js project",
5 | "author": "",
6 | "private": true,
7 | "scripts": {
8 | "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
9 | "start": "npm run dev",
10 | "build": "node build/build.js"
11 | },
12 | "dependencies": {
13 | "axios": "^0.18.0",
14 | "element-ui": "^2.3.3",
15 | "html-loader": "^0.5.5",
16 | "moment": "^2.22.2",
17 | "vue": "^2.5.2",
18 | "vue-router": "^3.0.1",
19 | "vuex": "^3.0.1"
20 | },
21 | "devDependencies": {
22 | "autoprefixer": "^7.1.2",
23 | "babel-core": "^6.22.1",
24 | "babel-helper-vue-jsx-merge-props": "^2.0.3",
25 | "babel-loader": "^7.1.1",
26 | "babel-plugin-syntax-jsx": "^6.18.0",
27 | "babel-plugin-transform-runtime": "^6.22.0",
28 | "babel-plugin-transform-vue-jsx": "^3.5.0",
29 | "babel-preset-env": "^1.3.2",
30 | "babel-preset-stage-2": "^6.22.0",
31 | "chalk": "^2.0.1",
32 | "copy-webpack-plugin": "^4.0.1",
33 | "css-loader": "^0.28.0",
34 | "extract-text-webpack-plugin": "^3.0.0",
35 | "file-loader": "^1.1.4",
36 | "friendly-errors-webpack-plugin": "^1.6.1",
37 | "html-webpack-plugin": "^2.30.1",
38 | "less": "^3.0.1",
39 | "less-loader": "^4.1.0",
40 | "node-notifier": "^5.1.2",
41 | "optimize-css-assets-webpack-plugin": "^3.2.0",
42 | "ora": "^1.2.0",
43 | "portfinder": "^1.0.13",
44 | "postcss-import": "^11.0.0",
45 | "postcss-loader": "^2.0.8",
46 | "postcss-url": "^7.2.1",
47 | "rimraf": "^2.6.0",
48 | "semver": "^5.3.0",
49 | "shelljs": "^0.7.6",
50 | "uglifyjs-webpack-plugin": "^1.1.1",
51 | "url-loader": "^0.5.8",
52 | "vue-loader": "^13.3.0",
53 | "vue-style-loader": "^3.0.1",
54 | "vue-template-compiler": "^2.5.2",
55 | "webpack": "^3.6.0",
56 | "webpack-bundle-analyzer": "^2.9.0",
57 | "webpack-dev-server": "^2.9.1",
58 | "webpack-merge": "^4.1.0"
59 | },
60 | "engines": {
61 | "node": ">= 6.0.0",
62 | "npm": ">= 3.0.0"
63 | },
64 | "browserslist": [
65 | "> 1%",
66 | "last 2 versions",
67 | "not ie <= 8"
68 | ]
69 | }
70 |
--------------------------------------------------------------------------------
/src/components/shop/order/component.less:
--------------------------------------------------------------------------------
1 | #order {
2 | .order-type {
3 | background-color: #f3f5f7;
4 | font-size: 12px;
5 | font-weight: 200;
6 | li {
7 | padding: 20px 15px;
8 | border-bottom: 1px solid #ccc;
9 | }
10 | li:hover {
11 | background-color: #fff;
12 | }
13 | li:last-child {
14 | border-bottom: none;
15 | }
16 | }
17 | .order-good {
18 | height: 500px;
19 | overflow-y: scroll;
20 | ul {
21 | li {
22 | h2 {
23 | height: 12px;
24 | padding: 8px;
25 | background-color: #f3f5f7;
26 | font-size: 12px;
27 | font-weight: normal;
28 | border-left: 2px solid #ccc;
29 | }
30 | ul {
31 | li {
32 | position: relative;
33 | padding: 18px 0;
34 | margin: 0px 18px;
35 | height: 60px;
36 | border-bottom: 1px solid #ccc;
37 | div {
38 | float: left;
39 | }
40 | div:first-of-type {
41 | margin-right: 10px;
42 | img {
43 | width: 57px;
44 | height: 57px;
45 | }
46 | }
47 | div:nth-child(2) {
48 | h3 {
49 | font-size: 14px;
50 | }
51 | p {
52 | margin: 8px 0px 2px;
53 | font-size: 10px;
54 | color: #93999f;
55 | }
56 | span {
57 | font-size: 14px;
58 | color: #f01414;
59 | }
60 | }
61 | i {
62 | position: absolute;
63 | top: 64px;
64 | }
65 | .icon-jia {
66 | left: 200px;
67 | }
68 | .icon-jian {
69 | left: 160px;
70 | display: none;
71 | }
72 | }
73 | li:last-child {
74 | border-bottom: none;
75 | }
76 | }
77 | }
78 | }
79 | }
80 | }
--------------------------------------------------------------------------------
/config/index.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | // Template version: 1.3.1
3 | // see http://vuejs-templates.github.io/webpack for documentation.
4 |
5 | const path = require('path')
6 |
7 | module.exports = {
8 | dev: {
9 |
10 | // Paths
11 | assetsSubDirectory: 'static',
12 | assetsPublicPath: '/',
13 | proxyTable: {},
14 |
15 | // Various Dev Server settings
16 | host: 'localhost', // can be overwritten by process.env.HOST
17 | port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
18 | autoOpenBrowser: false,
19 | errorOverlay: true,
20 | notifyOnErrors: true,
21 | poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
22 |
23 |
24 | /**
25 | * Source Maps
26 | */
27 |
28 | // https://webpack.js.org/configuration/devtool/#development
29 | devtool: 'cheap-module-eval-source-map',
30 |
31 | // If you have problems debugging vue-files in devtools,
32 | // set this to false - it *may* help
33 | // https://vue-loader.vuejs.org/en/options.html#cachebusting
34 | cacheBusting: true,
35 |
36 | cssSourceMap: true
37 | },
38 |
39 | build: {
40 | // Template for index.html
41 | index: path.resolve(__dirname, '../dist/index.html'),
42 |
43 | // Paths
44 | assetsRoot: path.resolve(__dirname, '../dist'),
45 | assetsSubDirectory: 'static',
46 | assetsPublicPath: './',
47 |
48 | /**
49 | * Source Maps
50 | */
51 |
52 | productionSourceMap: true,
53 | // https://webpack.js.org/configuration/devtool/#production
54 | devtool: '#source-map',
55 |
56 | // Gzip off by default as many popular static hosts such as
57 | // Surge or Netlify already gzip all static assets for you.
58 | // Before setting to `true`, make sure to:
59 | // npm install --save-dev compression-webpack-plugin
60 | productionGzip: false,
61 | productionGzipExtensions: ['js', 'css'],
62 |
63 | // Run the build command with an extra argument to
64 | // View the bundle analyzer report after build finishes:
65 | // `npm run build --report`
66 | // Set to `true` or `false` to always turn it on or off
67 | bundleAnalyzerReport: process.env.npm_config_report
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/src/components/common/topBar/component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | {{seller.name}}
10 |
11 | {{seller.description}}/{{seller.deliveryTime}}分钟送达
12 |
13 |
14 | {{seller.supports[0].description}}
15 |
16 |
17 |
18 | {{seller.supports.length}}个
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 | {{seller.bulletin}}
29 |
30 |
31 |
32 |
33 | 商品
34 | 评价
35 | 商家
36 |
37 |
38 | {{seller.name}}
39 |
40 |
41 |
42 | 优惠信息
43 |
44 | -
45 |
46 | {{support.description}}
47 |
48 |
49 |
50 |
51 | 商家公告
52 | {{seller.bulletin}}
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/src/components/shop/shop/component.less:
--------------------------------------------------------------------------------
1 | #shop {
2 | .shop-title {
3 | padding: 18px 0px;
4 | margin: 0px 18px;
5 | border-bottom: 1px solid #ccc;
6 | h1 {
7 | display: inline-block;
8 | font-size: 14px;
9 | margin-top: 10px;
10 | }
11 | span {
12 | font-size: 12px;
13 | color: #4d555d;
14 | }
15 | }
16 | .shop-intro {
17 | text-align: center;
18 | padding: 18px 0px;
19 | font-size: 12px;
20 | color: #93999f;
21 | div {
22 | margin-bottom: 4px;
23 | }
24 | span {
25 | font-size: 24px;
26 | color: #000;
27 | }
28 | }
29 | .shop-public {
30 | padding-top: 18px;
31 | h2 {
32 | font-size: 14px;
33 | font-weight: normal;
34 | margin-left: 12px;
35 | }
36 | p {
37 | padding: 8px 12px 16px;
38 | font-size: 12px;
39 | font-weight: 200;
40 | color: #f01414;
41 | line-height: 24px;
42 | }
43 | ul {
44 | margin: 0px 18px;
45 | }
46 | li {
47 | padding: 16px;
48 | border-top: 1px solid #eee;
49 | font-size: 12px;
50 | font-weight: 200;
51 | color: #07111b;
52 | line-height: 16px;
53 | i {
54 | margin-right: 2px;
55 | }
56 | }
57 | }
58 | .shop-img {
59 | padding: 18px;
60 | h2 {
61 | font-size: 14px;
62 | margin-bottom: 10px;
63 | }
64 | ul {
65 | overflow: hidden;
66 | }
67 | li {
68 | margin-right: 6px;
69 | float: left;
70 | img {
71 | width: 78px;
72 | height: 75px;
73 | }
74 | }
75 | }
76 | .shop-infor {
77 | padding: 18px;
78 | h2 {
79 | font-size: 14px;
80 | margin-bottom: 10px;
81 | }
82 | ul {
83 | margin: 0px 18px;
84 | }
85 | li {
86 | padding: 16px;
87 | border-top: 1px solid #eee;
88 | font-size: 12px;
89 | font-weight: 200;
90 | color: #07111b;
91 | line-height: 16px;
92 | }
93 | }
94 | }
--------------------------------------------------------------------------------
/src/components/shop/rating/component.less:
--------------------------------------------------------------------------------
1 | #rating {
2 | .el-row {
3 | padding: 18px 0px;
4 | .rating-total {
5 | font-size: 12px;
6 | text-align: center;
7 | border-right: 1px solid #ccc;
8 | h1 {
9 | font-size: 24px;
10 | color: #f90;
11 | line-height: 28px;
12 | font-weight: normal;
13 | }
14 | div {
15 | margin: 8px 0px;
16 | }
17 | }
18 | .rating-all {
19 | padding: 0px 16px;
20 | font-size: 12px;
21 | div {
22 | overflow: hidden;
23 | span {
24 | float: left;
25 | line-height: 20px;
26 | margin-right: 10px;
27 | }
28 | .el-rate {
29 | float: left;
30 | }
31 | div {
32 | font-size: 12px;
33 | color: #93999f;
34 | line-height: 18px;
35 | float: left;
36 | }
37 | }
38 | }
39 | }
40 | .rating-content {
41 | .rating-content-head {
42 | padding: 18px;
43 | font-size: 12px;
44 | overflow: hidden;
45 | border-bottom: 1px solid #ccc;
46 | span {
47 | float: left;
48 | width: 64px;
49 | line-height: 32px;
50 | text-align: center;
51 | margin-right: 8px;
52 | }
53 | }
54 | .rating-content-text {
55 | font-size: 12px;
56 | li {
57 | padding: 18px 0px;
58 | margin: 0px 18px;
59 | border-bottom: 1px solid #ccc;
60 | overflow: hidden;
61 | .rating-content-img {
62 | float: left;
63 | margin-right: 12px;
64 | img {
65 | width: 28px;
66 | height: 28px;
67 | border-radius: 50%;
68 | }
69 | }
70 | .rating-content-info {
71 | float: left;
72 | width: 85%;
73 | .rating-content-info-1 {
74 | overflow: hidden;
75 | span:first-child {
76 | float: left;
77 | }
78 | span:last-child {
79 | float: right;
80 | }
81 | }
82 | .rating-content-info-2 {
83 | margin: 6px 0px;
84 | span:first-child {
85 | color: #f90;
86 | margin-right: 5px;
87 | }
88 | }
89 | }
90 | }
91 | }
92 | }
93 | }
--------------------------------------------------------------------------------
/src/components/shop/rating/component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
11 |
27 |
28 |
29 |
30 |
59 |
--------------------------------------------------------------------------------
/server/routes/user.js:
--------------------------------------------------------------------------------
1 | const Router = require('koa-router');
2 | const api = require('../api/');
3 | const formatDate = require('../middleware/formatDate');
4 | const router = new Router();
5 |
6 | router
7 | .post('/login',async(ctx)=>{
8 | let user = ctx.request.body;
9 | let userId;
10 | //进行登录验证
11 | await api.userLogin(user.username)
12 | .then(res=>{
13 | let info = res[0];
14 | if(info == undefined){
15 | ctx.body = {'status':false,'data':'用户名不存在'};
16 | }else{
17 | if(info.password != user.password){
18 | ctx.body = {'status':false,'data':'密码错误'};
19 | }else{
20 | userId = info.userId;
21 | ctx.body = {'status':true,'data':'登录成功'};
22 | }
23 | }
24 | }).catch(err=>{
25 | console.log(err);
26 | });
27 | //用户ID初始化
28 | api.initUserId( userId );
29 | })
30 | .get('/infor',async(ctx)=>{
31 | //获取用户基本信息
32 | await api.getUserInfo( )
33 | .then(res=>{
34 | ctx.body = {'status':true,'data':res[0]};
35 | }).catch(err=>{
36 | ctx.body = {'status':false,'data':'未知错误'};
37 | });
38 | })
39 | .get('/order',async(ctx)=>{
40 | await api.getUserOrders(ctx.query.type)
41 | .then(res=>{
42 | ctx.body = {'status':true,'data':res};
43 | }).catch(err=>{
44 | ctx.body = {'status':false};
45 | });
46 | })
47 | .get('/confirm',async(ctx)=>{
48 | await api.userConfirmOrder(ctx.query.orderId)
49 | .then(res=>{
50 | ctx.body = {'status':true,'data':'已收货'};
51 | }).catch(err=>{
52 | ctx.body = {'status':false,'data':'收货失败'};
53 | });
54 | })
55 | .get('/submit',async(ctx)=>{
56 | let order = JSON.parse(ctx.query.order);
57 | let account = 0;
58 | //获取用户余额信息
59 | await api.getUserInfo()
60 | .then(res=>{
61 | account = res[0].account;
62 | }).catch(err=>{
63 | ctx.body = {'status':false,'data':'未知错误'};
64 | });
65 | if(account < order.price){
66 | ctx.body = {'status':false,'data':'余额不足'};
67 | return;
68 | }else{
69 | account = account - order.price;
70 | }
71 | //修改用户余额信息
72 | await api.userAccountSub(account)
73 | .then(res=>{
74 | ;
75 | }).catch(err=>{
76 | ctx.body = {'status':false,'data':'支付失败'};
77 | });
78 | //用户下单
79 | await api.userSubmitOrder(order)
80 | .then(res=>{
81 | ctx.body = {'status':true,'data':'下单成功'};
82 | }).catch(err=>{
83 | ctx.body = {'status':false,'data':'下单失败'};
84 | });
85 | })
86 | .get('/rating',async(ctx)=>{
87 | let rating = JSON.parse(ctx.query.rating);
88 | await api.userSubmitRating(rating)
89 | .then(res=>{
90 | ;
91 | }).catch(err=>{
92 | ctx.body = {'status':false,'data':'评价失败'};
93 | });
94 | await api.userRatedOrder(rating.orderId)
95 | .then(res=>{
96 | ctx.body = {'status':true,'data':'评价成功'};
97 | }).catch(err=>{
98 | ctx.body = {'status':false,'data':'评价失败'};
99 | });
100 | })
101 |
102 |
103 | module.exports = router;
--------------------------------------------------------------------------------
/src/components/pages/admin/component.less:
--------------------------------------------------------------------------------
1 | #admin {
2 | .admin-back {
3 | position: absolute;
4 | top: 20px;
5 | left: 20px;
6 | font-size: 20px;
7 | }
8 | .admin-quit {
9 | position: absolute;
10 | top: 20px;
11 | right: 20px;
12 | font-size: 14px;
13 | color: #00a0dc;
14 | }
15 | .admin-title {
16 | padding: 50px 0px;
17 | text-align: center;
18 | background-color: #f3f5f7;
19 | border-bottom: 1px solid #ccc;
20 | h1 {
21 | margin-bottom: 10px;
22 | }
23 | img {
24 | width: 50px;
25 | height: 50px;
26 | border-radius: 50%;
27 | }
28 | }
29 | .admin-infor {
30 | border-bottom: 1px solid #ccc;
31 | div {
32 | line-height: 40px;
33 | overflow: hidden;
34 | margin: 0px 18px;
35 | border-bottom: 1px solid #eee;
36 | span:first-of-type {
37 | font-size: 14px;
38 | float: left;
39 | }
40 | span:last-child {
41 | font-size: 12px;
42 | float: right;
43 | color: #93999f;
44 | }
45 | }
46 | div:last-child {
47 | border-bottom: none;
48 | }
49 | }
50 | .admin-order {
51 | padding: 50px 20px;
52 | span {
53 | text-align: center;
54 | border-radius: 10px;
55 | margin-right: 20px;
56 | padding: 10px 0px;
57 | display: inline-block;
58 | font-size: 14px;
59 | width: 95px;
60 | height: 48px;
61 | i {
62 | font-size: 24px;
63 | display: block;
64 | color: #f3f5f7;
65 | margin-bottom: 5px;
66 | }
67 | }
68 | span:last-child {
69 | margin-right: 0px;
70 | }
71 | span:hover {
72 | background: #00a9dc;
73 | }
74 | }
75 | .admin-order-content {
76 | ul {
77 | li {
78 | padding: 18px 0px;
79 | margin: 0px 18px;
80 | border-bottom: 1px solid #ccc;
81 | font-size: 14px;
82 | span {
83 | display: inline-block;
84 | }
85 | span:first-child {
86 | width: 180px;
87 | color: #93999f;
88 | font-size: 12px;
89 | }
90 | span:nth-of-type(2) {
91 | width: 50px;
92 | color: #f01414;
93 | }
94 | span:last-child {
95 | width: 100px;
96 | color: #00a0dc;
97 | text-align: center;
98 | }
99 | a {
100 | color: #00a0dc;
101 | }
102 | }
103 | }
104 | }
105 | }
--------------------------------------------------------------------------------
/src/components/common/cart/component.less:
--------------------------------------------------------------------------------
1 | #cart {
2 | position: fixed;
3 | left: 0;
4 | bottom: 0;
5 | width: 100%;
6 | height: 48px;
7 | z-index: 50;
8 | .cart-bottom {
9 | position: relative;
10 | z-index: 2;
11 | height: 50px;
12 | line-height: 50px;
13 | background-color: #141d27;
14 | color: hsla(0, 0%, 100%, .4);
15 | .cart-left {
16 | float: left;
17 | width: 70%;
18 | i {
19 | font-size: 24px;
20 | margin: 0px 12px;
21 | }
22 | span {
23 | margin-right: 10px;
24 | }
25 | }
26 | .cart-right {
27 | float: right;
28 | width: 30%;
29 | background: #2b343c;
30 | text-align: center;
31 | font-size: 12px;
32 | font-weight: 700;
33 | a {
34 | color: #fff;
35 | }
36 | }
37 | }
38 | .cart-top {
39 | position: absolute;
40 | top: 0;
41 | left: 0;
42 | width: 100%;
43 | background: #fff;
44 | transform: translate3d(0, -100%, 0);
45 | z-index: 2;
46 | div {
47 | height: 40px;
48 | line-height: 40px;
49 | background: #f3f5f7;
50 | border-bottom: 1px solid rgba(7, 17, 27, .1);
51 | padding: 0px 18px;
52 | span:first-of-type {
53 | font-size: 14px;
54 | font-weight: 200;
55 | color: #07111b;
56 | }
57 | span:last-child {
58 | position: absolute;
59 | right: 8px;
60 | font-size: 12px;
61 | color: #00a0dc;
62 | padding: 0 10px;
63 | }
64 | }
65 | ul {
66 | background-color: #fff;
67 | li {
68 | height: 48px;
69 | line-height: 48px;
70 | margin: 0 18px;
71 | border-bottom: 1px solid rgba(7, 17, 27, .1);
72 | h3 {
73 | display: inline-block;
74 | font-size: 14px;
75 | width: 50%;
76 | }
77 | span:first-of-type {
78 | color: #f01414;
79 | display: inline-block;
80 | width: 30%;
81 | }
82 | span:last-child {
83 | font-size: 12px;
84 | color: #93999f;
85 | i {
86 | font-size: 12px;
87 | }
88 | }
89 | }
90 | li:last-child {
91 | border-bottom: none;
92 | }
93 | }
94 | }
95 | .cart-mask {
96 | position: fixed;
97 | top: 0;
98 | bottom: 0;
99 | left: 0;
100 | right: 0;
101 | background: rgba(7, 17, 27, .6);
102 | z-index: 1;
103 | }
104 | }
--------------------------------------------------------------------------------
/src/components/common/topBar/component.less:
--------------------------------------------------------------------------------
1 | #topBar {
2 | .top-infor {
3 | height: 60px;
4 | position: relative;
5 | background: rgba(7, 17, 27, 0.7);
6 | padding: 30px 0px 20px 25px;
7 | color: #fff;
8 | .top-infor-img {
9 | float: left;
10 | margin-right: 15px;
11 | img {
12 | width: 64px;
13 | height: 64px;
14 | border-radius: 5px;
15 | }
16 | }
17 | .top-infor-text {
18 | float: left;
19 | h1 {
20 | font-size: 16px;
21 | }
22 | div {
23 | font-size: 10px;
24 | }
25 | span {
26 | font-size: 12px;
27 | display: block;
28 | margin: 10px 0px;
29 | }
30 | }
31 | .top-infor-more {
32 | height: 25px;
33 | width: 50px;
34 | position: absolute;
35 | top: 70px;
36 | left: 320px;
37 | background-color: rgba(0, 0, 0, 0.2);
38 | font-size: 12px;
39 | line-height: 25px;
40 | text-align: center;
41 | border-radius: 10px;
42 | }
43 | .top-infor-bg {
44 | position: absolute;
45 | top: 0;
46 | left: 0;
47 | width: 100%;
48 | height: 100%;
49 | z-index: -1;
50 | img {
51 | height: 100%;
52 | width: 100%;
53 | }
54 | }
55 | }
56 | .top-public {
57 | background-color: #333;
58 | padding: 8px;
59 | p {
60 | font-size: 12px;
61 | color: #fff;
62 | span {
63 | width: 320px;
64 | height: 14px;
65 | line-height: 14px;
66 | display: inline-block;
67 | overflow: hidden;
68 | text-overflow: ellipsis;
69 | white-space: nowrap;
70 | }
71 | }
72 | }
73 | .top-swiper {
74 | font-size: 14px;
75 | padding: 15px 50px;
76 | border-bottom: 1px solid #ccc;
77 | span {
78 | margin-right: 80px;
79 | }
80 | span:last-child {
81 | margin-right: 0px;
82 | }
83 | }
84 | .top-mask {
85 | color: #fff;
86 | background-color: #000;
87 | opacity: 0.8;
88 | position: fixed;
89 | min-height: 700px;
90 | z-index: 3;
91 | top: 0px;
92 | padding-top: 65px;
93 | text-align: center;
94 | .el-rate {
95 | margin: 20px 0px;
96 | }
97 | ul {
98 | text-align: left;
99 | padding: 28px 48px;
100 | font-size: 12px;
101 | li {
102 | margin-top: 16px;
103 | i {
104 | margin-right: 2px;
105 | }
106 | }
107 | }
108 | p {
109 | padding: 28px 48px;
110 | letter-spacing: 2px;
111 | text-align: left;
112 | font-size: 12px;
113 | line-height: 24px;
114 | }
115 | }
116 | .top-admin {
117 | position: absolute;
118 | top: 10px;
119 | right: 10px;
120 | font-size: 12px;
121 | font-weight: 700;
122 | a {
123 | color: #00a0dc;
124 | }
125 | }
126 | }
--------------------------------------------------------------------------------
/static/reset.css:
--------------------------------------------------------------------------------
1 | /* 清除默认样式 */
2 | html, body, div, span, object, iframe,
3 | h1, h2, h3, h4, h5, h6, p, blockquote, pre,
4 | abbr, address, cite, code,
5 | del, dfn, em, img, ins, kbd, q, samp,
6 | small, strong, sub, sup, var,
7 | b, i,
8 | dl, dt, dd, ol, ul, li,
9 | fieldset, form, label, legend,
10 | table, caption, tbody, tfoot, thead, tr, th, td,
11 | article, aside, canvas, details, figcaption, figure,
12 | footer, header, hgroup, menu, nav, section, summary,
13 | time, mark, audio, video {
14 | margin:0;
15 | padding:0;
16 | border:0;
17 | outline:0;
18 | font-size:100%;
19 | vertical-align:baseline;
20 | background:transparent;
21 | }
22 |
23 | body {
24 | line-height:1;
25 | }
26 |
27 | :focus {
28 | outline: 1;
29 | }
30 |
31 | article,aside,canvas,details,figcaption,figure,
32 | footer,header,hgroup,menu,nav,section,summary {
33 | display:block;
34 | }
35 |
36 | ul {
37 | list-style:none;
38 | }
39 |
40 | blockquote, q {
41 | quotes:none;
42 | }
43 |
44 | blockquote:before, blockquote:after,
45 | q:before, q:after {
46 | content:'';
47 | content:none;
48 | }
49 |
50 | a {
51 | margin:0;
52 | padding:0;
53 | border:0;
54 | font-size:100%;
55 | vertical-align:baseline;
56 | background:transparent;
57 | text-decoration: none;
58 | color: #333;
59 | }
60 | a:focus {
61 | color: #ff0000;
62 | }
63 |
64 | ins {
65 | background-color:#ff9;
66 | color:#000;
67 | text-decoration:none;
68 | }
69 |
70 | mark {
71 | background-color:#ff9;
72 | color:#000;
73 | font-style:italic;
74 | font-weight:bold;
75 | }
76 |
77 | del {
78 | text-decoration: line-through;
79 | }
80 |
81 | abbr[title], dfn[title] {
82 | border-bottom:1px dotted #000;
83 | cursor:help;
84 | }
85 |
86 | table {
87 | border-collapse:collapse;
88 | border-spacing:0;
89 | }
90 |
91 | hr {
92 | display:block;
93 | height:1px;
94 | border:0;
95 | border-top:1px solid #cccccc;
96 | margin:1em 0;
97 | padding:0;
98 | }
99 |
100 | input, select {
101 | vertical-align:middle;
102 | }
103 |
104 | /* 自定义样式 */
105 |
106 | .block {
107 | height: 18px;
108 | background-color: #f3f5f7;
109 | border-top: 1px solid #ccc;
110 | border-bottom: 1px solid #ccc;
111 | }
112 |
113 | .good {
114 | background-color: rgba(0, 160, 220, .2);
115 | color: #4d555f;
116 | }
117 | .bad {
118 | background-color: rgba(77, 85, 93, .2);
119 | color: #4d555f;
120 | }
121 |
122 | .order {
123 | background-color: #aaa;
124 | color: #f3f5f7;
125 | }
126 |
127 | .goodActive {
128 | color: #fff;
129 | background-color: #00a9dc;
130 | }
131 |
132 | .badActive {
133 | color: #fff;
134 | background-color: #4d555d;
135 | }
136 |
137 | /* icon样式 */
138 | .el-icon-arrow-left,.icon-jia,.icon-jian {
139 | color: #00a0dc;
140 | }
141 | .icon-jia:active, .icon-jian:active {
142 | color: #ff0000;
143 | }
144 |
145 | /* 动画效果 */
146 | .drop-enter-active {
147 | transition: all .5s ease;
148 | }
149 | .drop-leave-active {
150 | transition: all .3s ease;
151 | }
152 | .drop-enter {
153 | transform: translateY(500px);
154 | }
155 | .drop-leave-active {
156 | transform: translateY(500px);
157 | }
158 |
--------------------------------------------------------------------------------
/src/components/pages/account/component.less:
--------------------------------------------------------------------------------
1 | #account {
2 | .account-back {
3 | position: absolute;
4 | top: 20px;
5 | left: 20px;
6 | font-size: 20px;
7 | }
8 | .account-address {
9 | padding: 20px 0px;
10 | text-align: center;
11 | div {
12 | margin-bottom: 5px;
13 | font-size: 14px;
14 | font-weight: 200;
15 | }
16 | span {
17 | font-size: 12px;
18 | color: #00a0dc;
19 | }
20 | }
21 | .account-food {
22 | .account-food-shop {
23 | padding: 10px;
24 | overflow: hidden;
25 | div {
26 | float: left;
27 | margin-right: 5px;
28 | img {
29 | width: 24px;
30 | height: 24px;
31 | border-radius: 50%;
32 | }
33 | }
34 | span {
35 | float: left;
36 | font-size: 14px;
37 | line-height: 24px;
38 | }
39 | }
40 | ul {
41 | border-top: 1px solid #ccc;
42 | padding: 10px;
43 | li {
44 | overflow: hidden;
45 | line-height: 50px;
46 | border-bottom: 1px solid #ccc;
47 | font-size: 14px;
48 | img {
49 | float: left;
50 | width: 50px;
51 | height: 50px;
52 | margin-right: 10px;
53 | }
54 | span:nth-of-type(1) {
55 | float: left;
56 | width: 40%;
57 | font-weight: 300;
58 | font-size: 12px;
59 | }
60 | span:nth-of-type(2) {
61 | float: left;
62 | color: #00a0dc;
63 | }
64 | span:nth-of-type(3) {
65 | float: right;
66 | color: #f01414;
67 | }
68 | }
69 | li:last-child {
70 | border-bottom: none;
71 | }
72 | }
73 | }
74 | .account-content {
75 | div {
76 | line-height: 40px;
77 | overflow: hidden;
78 | margin: 0px 18px;
79 | border-bottom: 1px solid #ccc;
80 | span:first-of-type {
81 | font-size: 14px;
82 | float: left;
83 | }
84 | span:last-child {
85 | font-size: 12px;
86 | float: right;
87 | color: #93999f;
88 | }
89 | }
90 | }
91 | .account-pay {
92 | position: fixed;
93 | width: 100%;
94 | bottom: 0px;
95 | left: 0px;
96 | font-size: 14px;
97 | line-height: 48px;
98 | span:first-of-type {
99 | float: left;
100 | padding-left: 5%;
101 | width: 65%;
102 | background-color: #000;
103 | color: #fff;
104 | }
105 | span:last-child {
106 | text-align: center;
107 | font-weight: 600;
108 | float: right;
109 | width: 30%;
110 | background-color: #e6a23c;
111 | }
112 | }
113 | }
--------------------------------------------------------------------------------
/server/api/index.js:
--------------------------------------------------------------------------------
1 | const query = require('../db');
2 |
3 |
4 | let status = {
5 | userId: 0, //当前登录用户ID
6 | sellerId: 0, //当前访问的商家ID
7 | }
8 |
9 |
10 | module.exports = {
11 | /***********用户API*****************/
12 | //用户登录校验
13 | userLogin: function (username) {
14 | return query(`SELECT * FROM user WHERE username = '${username}'`);
15 | },
16 | //用户ID全局化
17 | initUserId: function (userId) {
18 | status.userId = userId;
19 | },
20 | //获取用户基本信息
21 | getUserInfo: function () {
22 | return query(`SELECT * FROM userinfos WHERE userId = ${status.userId}`);
23 | },
24 | //获取用户订单信息
25 | getUserOrders: function (type) {
26 | let sql;
27 | if (type === '0') {
28 | sql = `SELECT * FROM orders WHERE userId = ${status.userId} ORDER BY orderTime DESC`;
29 | }
30 | else {
31 | sql = `SELECT * FROM orders WHERE orderType = ${type} AND userId = ${status.userId} ORDER BY orderTime DESC`;
32 | }
33 | return query(sql);
34 | },
35 | //扣除用户余额
36 | userAccountSub: function (account) {
37 | return query(`UPDATE userinfos SET account = ${account} WHERE userId = ${status.userId}`);
38 | },
39 | //用户确认收货
40 | userConfirmOrder: function (orderId) {
41 | return query(`UPDATE orders SET orderType = 2 WHERE orderId = ${orderId}`);
42 | },
43 | //用户完成评价
44 | userRatedOrder: function (orderId) {
45 | return query(`UPDATE orders SET orderType = 3 WHERE orderId = ${orderId}`);
46 | },
47 | //用户下单
48 | userSubmitOrder: function (order) {
49 | return query(`INSERT INTO orders(userId,sellerId,orderTime,price,orderType) VALUES(${status.userId},${status.sellerId},${order.orderTime},${order.price},1);`);
50 | },
51 | //用户评价
52 | userSubmitRating: function (rating) {
53 |
54 | return query(`INSERT INTO sellerratings (userId,sellerId,orderId,rateTime,deliveryTime,score,rateType,TEXT) VALUES(${status.userId},${status.sellerId},${rating.orderId},${rating.rateTime},${rating.deliveryTime},${rating.score},${rating.rateType},'${rating.text}');`);
55 | },
56 | /***********商品API*****************/
57 | //获取全部商品类型
58 | getGoodTypes: function () {
59 | return query(`SELECT * FROM foodtype`);
60 | },
61 | //获取某一类型的全部商品
62 | getGoodsByType: function (goodType) {
63 | return query(`SELECT * FROM food WHERE fTypeId = ${goodType}`);
64 | },
65 | //获取指定Id的某一商品
66 | getGoodByGoodId: function (goodId) {
67 | return query(`SELECT * FROM food WHERE foodId = ${goodId}`);
68 | },
69 | /***********商家API*****************/
70 | //商家ID全局化
71 | initSellerId: function (sellerId) {
72 | status.sellerId = sellerId;
73 | },
74 | //获取商家基本信息
75 | getSellerInfo: function () {
76 | return query(`SELECT * FROM seller`);
77 | },
78 | //获取商家优惠信息
79 | getSellerSupports: function () {
80 | return query(`SELECT * FROM sellersupports WHERE sellerId = ${status.sellerId}`);
81 | },
82 | //获取商家实景信息
83 | getSellerPics: function () {
84 | return query(`SELECT * FROM sellerpics WHERE sellerId = ${status.sellerId}`);
85 | },
86 | //获取商家介绍信息
87 | getSellerInfos: function () {
88 | return query(`SELECT * FROM sellerinfos WHERE sellerId = ${status.sellerId}`);
89 | },
90 | //获取商家评价信息
91 | getSellerRatings: function (type) {
92 | let sql;
93 | if (type === '0') {
94 | sql = `SELECT * FROM sellerratings WHERE sellerId = ${status.sellerId} ORDER BY rateTime DESC`;
95 | }
96 | else {
97 | sql = `SELECT * FROM sellerratings WHERE rateType = ${type} AND sellerId = ${status.sellerId} ORDER BY rateTime DESC`;
98 | }
99 | return query(sql);
100 | },
101 | };
102 |
103 |
104 |
--------------------------------------------------------------------------------
/elm.sql:
--------------------------------------------------------------------------------
1 | /*
2 | SQLyog Ultimate v11.24 (32 bit)
3 | MySQL - 5.7.12-log : Database - elm
4 | *********************************************************************
5 | */
6 |
7 | /*!40101 SET NAMES utf8 */;
8 |
9 | /*!40101 SET SQL_MODE=''*/;
10 |
11 | /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
12 | /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
13 | /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
14 | /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
15 | CREATE DATABASE /*!32312 IF NOT EXISTS*/`elm` /*!40100 DEFAULT CHARACTER SET utf8 */;
16 |
17 | USE `elm`;
18 |
19 | /*Table structure for table `food` */
20 |
21 | DROP TABLE IF EXISTS `food`;
22 |
23 | CREATE TABLE `food` (
24 | `foodId` int(11) NOT NULL AUTO_INCREMENT,
25 | `name` varchar(32) NOT NULL,
26 | `price` int(11) NOT NULL,
27 | `description` varchar(32) NOT NULL,
28 | `sellCount` int(11) NOT NULL DEFAULT '100',
29 | `rating` int(11) NOT NULL DEFAULT '90',
30 | `info` varchar(128) NOT NULL,
31 | `icon` varchar(256) NOT NULL,
32 | `image` varchar(256) NOT NULL,
33 | `fTypeId` int(11) NOT NULL,
34 | PRIMARY KEY (`foodId`),
35 | KEY `fTypeId` (`fTypeId`),
36 | CONSTRAINT `fTypeId` FOREIGN KEY (`fTypeId`) REFERENCES `foodtype` (`fTypeId`)
37 | ) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=utf8;
38 |
39 | /*Data for the table `food` */
40 |
41 | insert into `food`(`foodId`,`name`,`price`,`description`,`sellCount`,`rating`,`info`,`icon`,`image`,`fTypeId`) values (1,'皮蛋瘦肉粥',10,'咸粥',229,100,'一碗皮蛋瘦肉粥,总是我到粥店时的不二之选。香浓软滑,饱腹暖心,皮蛋的Q弹与瘦肉的滑嫩伴着粥香溢于满口,让人喝这样的一碗粥也觉得心满意足','http://fuss10.elemecdn.com/c/cd/c12745ed8a5171e13b427dbc39401jpeg.jpeg?imageView2/1/w/114/h/114','http://fuss10.elemecdn.com/c/cd/c12745ed8a5171e13b427dbc39401jpeg.jpeg?imageView2/1/w/750/h/750',1),(2,'扁豆焖面',14,'',188,96,'','http://fuss10.elemecdn.com/c/6b/29e3d29b0db63d36f7c500bca31d8jpeg.jpeg?imageView2/1/w/114/h/114','http://fuss10.elemecdn.com/c/6b/29e3d29b0db63d36f7c500bca31d8jpeg.jpeg?imageView2/1/w/750/h/750',1),(3,'葱花饼',10,'',124,85,'','http://fuss10.elemecdn.com/f/28/a51e7b18751bcdf871648a23fd3b4jpeg.jpeg?imageView2/1/w/114/h/114','http://fuss10.elemecdn.com/f/28/a51e7b18751bcdf871648a23fd3b4jpeg.jpeg?imageView2/1/w/750/h/750',1),(4,'牛肉馅饼',14,'',114,91,'','http://fuss10.elemecdn.com/d/b9/bcab0e8ad97758e65ae5a62b2664ejpeg.jpeg?imageView2/1/w/114/h/114','http://fuss10.elemecdn.com/d/b9/bcab0e8ad97758e65ae5a62b2664ejpeg.jpeg?imageView2/1/w/750/h/750',1),(5,'招牌猪肉白菜锅贴/10个',17,'',101,78,'','http://fuss10.elemecdn.com/7/72/9a580c1462ca1e4d3c07e112bc035jpeg.jpeg?imageView2/1/w/114/h/114','http://fuss10.elemecdn.com/7/72/9a580c1462ca1e4d3c07e112bc035jpeg.jpeg?imageView2/1/w/750/h/750',1),(6,'南瓜粥',9,'甜粥',91,100,'','http://fuss10.elemecdn.com/8/a6/453f65f16b1391942af11511b7a90jpeg.jpeg?imageView2/1/w/114/h/114','http://fuss10.elemecdn.com/8/a6/453f65f16b1391942af11511b7a90jpeg.jpeg?imageView2/1/w/750/h/750',1),(7,'红豆薏米美肤粥',12,'甜粥',86,100,'','http://fuss10.elemecdn.com/d/22/260bd78ee6ac6051136c5447fe307jpeg.jpeg?imageView2/1/w/114/h/114','http://fuss10.elemecdn.com/d/22/260bd78ee6ac6051136c5447fe307jpeg.jpeg?imageView2/1/w/750/h/750',1),(8,'八宝酱菜',4,'',84,100,'','http://fuss10.elemecdn.com/9/b5/469d8854f9a3a03797933fd01398bjpeg.jpeg?imageView2/1/w/114/h/114','http://fuss10.elemecdn.com/9/b5/469d8854f9a3a03797933fd01398bjpeg.jpeg?imageView2/1/w/750/h/750',1),(9,'红枣山药糙米粥',10,'',81,91,'','http://fuss10.elemecdn.com/9/b5/469d8854f9a3a03797933fd01398bjpeg.jpeg?imageView2/1/w/114/h/114','http://fuss10.elemecdn.com/9/b5/469d8854f9a3a03797933fd01398bjpeg.jpeg?imageView2/1/w/750/h/750',1),(10,'糊塌子',10,'',80,93,' ','http://fuss10.elemecdn.com/0/05/097a2a59fd2a2292d08067e16380cjpeg.jpeg?imageView2/1/w/114/h/114','http://fuss10.elemecdn.com/0/05/097a2a59fd2a2292d08067e16380cjpeg.jpeg?imageView2/1/w/750/h/750',1),(11,'红枣山药粥套餐',29,'',17,93,' ','http://fuss10.elemecdn.com/6/72/cb844f0bb60c502c6d5c05e0bddf5jpeg.jpeg?imageView2/1/w/114/h/114','http://fuss10.elemecdn.com/6/72/cb844f0bb60c502c6d5c05e0bddf5jpeg.jpeg?imageView2/1/w/750/h/750',2),(12,'VC无限橙果汁',8,'',15,100,' ','http://fuss10.elemecdn.com/e/c6/f348e811772016ae24e968238bcbfjpeg.jpeg?imageView2/1/w/114/h/114','http://fuss10.elemecdn.com/e/c6/f348e811772016ae24e968238bcbfjpeg.jpeg?imageView2/1/w/750/h/750',3),(13,'娃娃菜炖豆腐',17,'',43,92,' ','http://fuss10.elemecdn.com/d/2d/b1eb45b305635d9dd04ddf157165fjpeg.jpeg?imageView2/1/w/114/h/114','http://fuss10.elemecdn.com/d/2d/b1eb45b305635d9dd04ddf157165fjpeg.jpeg?imageView2/1/w/750/h/750',4),(14,'手撕包菜',16,'',29,100,' ','http://fuss10.elemecdn.com/9/c6/f3bc84468820121112e79583c24efjpeg.jpeg?imageView2/1/w/114/h/114','http://fuss10.elemecdn.com/9/c6/f3bc84468820121112e79583c24efjpeg.jpeg?imageView2/1/w/750/h/750',4),(15,'香酥黄金鱼/3条',11,'',15,100,' ','http://fuss10.elemecdn.com/4/e7/8277a6a2ea0a2e97710290499fc41jpeg.jpeg?imageView2/1/w/114/h/114','http://fuss10.elemecdn.com/4/e7/8277a6a2ea0a2e97710290499fc41jpeg.jpeg?imageView2/1/w/750/h/750',4),(16,'八宝酱菜',4,'',84,100,' ','http://fuss10.elemecdn.com/9/b5/469d8854f9a3a03797933fd01398bjpeg.jpeg?imageView2/1/w/114/h/114','http://fuss10.elemecdn.com/9/b5/469d8854f9a3a03797933fd01398bjpeg.jpeg?imageView2/1/w/750/h/750',5),(17,'拍黄瓜',9,'',28,100,' ','http://fuss10.elemecdn.com/6/54/f654985b4e185f06eb07f8fa2b2e8jpeg.jpeg?imageView2/1/w/114/h/114','http://fuss10.elemecdn.com/6/54/f654985b4e185f06eb07f8fa2b2e8jpeg.jpeg?imageView2/1/w/750/h/750',5),(18,'红豆薏米粥套餐',37,'',3,100,' ','http://fuss10.elemecdn.com/f/49/27f26ed00c025b2200a9ccbb7e67ejpeg.jpeg?imageView2/1/w/114/h/114','http://fuss10.elemecdn.com/f/49/27f26ed00c025b2200a9ccbb7e67ejpeg.jpeg?imageView2/1/w/750/h/750',6),(19,'皮蛋瘦肉粥套餐',31,'',12,100,' ','http://fuss10.elemecdn.com/8/96/f444a8087f0e940ef264617f9d98ajpeg.jpeg?imageView2/1/w/114/h/114','http://fuss10.elemecdn.com/8/96/f444a8087f0e940ef264617f9d98ajpeg.jpeg?imageView2/1/w/750/h/750',6),(20,'蜜瓜圣女萝莉杯',6,'',1,100,' ','http://fuss10.elemecdn.com/b/5f/b3b04c259d5ec9fa52e1856ee50dajpeg.jpeg?imageView2/1/w/114/h/114','http://fuss10.elemecdn.com/b/5f/b3b04c259d5ec9fa52e1856ee50dajpeg.jpeg?imageView2/1/w/750/h/750',7),(21,'加多宝',6,'',7,100,' ','http://fuss10.elemecdn.com/b/9f/5e6c99c593cf65229225c5661bcdejpeg.jpeg?imageView2/1/w/114/h/114','http://fuss10.elemecdn.com/b/9f/5e6c99c593cf65229225c5661bcdejpeg.jpeg?imageView2/1/w/750/h/750',7),(22,'VC无限橙果汁',8,'',15,100,' ','http://fuss10.elemecdn.com/e/c6/f348e811772016ae24e968238bcbfjpeg.jpeg?imageView2/1/w/114/h/114','http://fuss10.elemecdn.com/e/c6/f348e811772016ae24e968238bcbfjpeg.jpeg?imageView2/1/w/750/h/750',7),(23,'扁豆焖面',14,'',188,96,' ','http://fuss10.elemecdn.com/c/6b/29e3d29b0db63d36f7c500bca31d8jpeg.jpeg?imageView2/1/w/114/h/114','http://fuss10.elemecdn.com/c/6b/29e3d29b0db63d36f7c500bca31d8jpeg.jpeg?imageView2/1/w/750/h/750',8),(24,'葱花饼',8,'',15,100,' ','http://fuss10.elemecdn.com/f/28/a51e7b18751bcdf871648a23fd3b4jpeg.jpeg?imageView2/1/w/114/h/114','http://fuss10.elemecdn.com/f/28/a51e7b18751bcdf871648a23fd3b4jpeg.jpeg?imageView2/1/w/750/h/750',8),(25,'牛肉馅饼',14,'',114,91,' ','http://fuss10.elemecdn.com/d/b9/bcab0e8ad97758e65ae5a62b2664ejpeg.jpeg?imageView2/1/w/114/h/114','http://fuss10.elemecdn.com/d/b9/bcab0e8ad97758e65ae5a62b2664ejpeg.jpeg?imageView2/1/w/750/h/750',8),(26,'招牌猪肉白菜锅贴/10个',17,'',101,78,' ','http://fuss10.elemecdn.com/7/72/9a580c1462ca1e4d3c07e112bc035jpeg.jpeg?imageView2/1/w/114/h/114','http://fuss10.elemecdn.com/7/72/9a580c1462ca1e4d3c07e112bc035jpeg.jpeg?imageView2/1/w/750/h/750',8),(27,'糊塌子',10,'',80,93,' ','http://fuss10.elemecdn.com/0/05/097a2a59fd2a2292d08067e16380cjpeg.jpeg?imageView2/1/w/114/h/114','http://fuss10.elemecdn.com/0/05/097a2a59fd2a2292d08067e16380cjpeg.jpeg?imageView2/1/w/750/h/750',8),(28,'皮蛋瘦肉粥',10,'',229,100,' ','http://fuss10.elemecdn.com/c/cd/c12745ed8a5171e13b427dbc39401jpeg.jpeg?imageView2/1/w/114/h/114','http://fuss10.elemecdn.com/c/cd/c12745ed8a5171e13b427dbc39401jpeg.jpeg?imageView2/1/w/750/h/750',9),(29,'南瓜粥',9,'',91,100,' ','http://fuss10.elemecdn.com/8/a6/453f65f16b1391942af11511b7a90jpeg.jpeg?imageView2/1/w/114/h/114','http://fuss10.elemecdn.com/8/a6/453f65f16b1391942af11511b7a90jpeg.jpeg?imageView2/1/w/750/h/750',9),(30,'红豆薏米美肤粥',12,'',86,100,' ','http://fuss10.elemecdn.com/d/22/260bd78ee6ac6051136c5447fe307jpeg.jpeg?imageView2/1/w/114/h/114','http://fuss10.elemecdn.com/d/22/260bd78ee6ac6051136c5447fe307jpeg.jpeg?imageView2/1/w/750/h/750',9),(31,'红枣山药糙米粥',10,'',81,100,' ','http://fuss10.elemecdn.com/9/b5/469d8854f9a3a03797933fd01398bjpeg.jpeg?imageView2/1/w/114/h/114','http://fuss10.elemecdn.com/9/b5/469d8854f9a3a03797933fd01398bjpeg.jpeg?imageView2/1/w/750/h/750',9),(32,'鲜蔬菌菇粥',11,'',65,100,' ','http://fuss10.elemecdn.com/e/a3/5317c68dd618929b6ac05804e429ajpeg.jpeg?imageView2/1/w/114/h/114','http://fuss10.elemecdn.com/e/a3/5317c68dd618929b6ac05804e429ajpeg.jpeg?imageView2/1/w/750/h/750',9),(33,'田园蔬菜粥',10,'',78,100,' ','http://fuss10.elemecdn.com/a/94/7371083792c19df00e546b29e344cjpeg.jpeg?imageView2/1/w/114/h/114','http://fuss10.elemecdn.com/a/94/7371083792c19df00e546b29e344cjpeg.jpeg?imageView2/1/w/750/h/750',9);
42 |
43 | /*Table structure for table `foodrating` */
44 |
45 | DROP TABLE IF EXISTS `foodrating`;
46 |
47 | CREATE TABLE `foodrating` (
48 | `fRateId` int(11) NOT NULL AUTO_INCREMENT,
49 | `foodId` int(11) NOT NULL,
50 | `username` varchar(32) NOT NULL,
51 | `rateTime` varchar(128) NOT NULL,
52 | `rateType` int(11) NOT NULL,
53 | `text` varchar(128) DEFAULT NULL,
54 | `avatar` varchar(128) NOT NULL,
55 | PRIMARY KEY (`fRateId`),
56 | KEY `foodId` (`foodId`),
57 | CONSTRAINT `foodId` FOREIGN KEY (`foodId`) REFERENCES `food` (`foodId`)
58 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
59 |
60 | /*Data for the table `foodrating` */
61 |
62 | /*Table structure for table `foodtype` */
63 |
64 | DROP TABLE IF EXISTS `foodtype`;
65 |
66 | CREATE TABLE `foodtype` (
67 | `fTypeId` int(11) NOT NULL AUTO_INCREMENT,
68 | `name` varchar(32) NOT NULL,
69 | PRIMARY KEY (`fTypeId`)
70 | ) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
71 |
72 | /*Data for the table `foodtype` */
73 |
74 | insert into `foodtype`(`fTypeId`,`name`) values (1,'热销榜'),(2,'单人精彩套餐'),(3,'冰爽饮品限时特惠'),(4,'精选热菜'),(5,'爽口凉菜'),(6,'精选套餐'),(7,'果拼果汁'),(8,'小吃主食'),(9,'特色粥品');
75 |
76 | /*Table structure for table `orders` */
77 |
78 | DROP TABLE IF EXISTS `orders`;
79 |
80 | CREATE TABLE `orders` (
81 | `orderId` int(11) NOT NULL AUTO_INCREMENT,
82 | `userId` int(11) NOT NULL,
83 | `sellerId` int(11) NOT NULL,
84 | `orderTime` varchar(128) NOT NULL,
85 | `price` int(11) NOT NULL,
86 | `orderType` int(11) NOT NULL,
87 | PRIMARY KEY (`orderId`)
88 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
89 |
90 | /*Data for the table `orders` */
91 |
92 | /*Table structure for table `seller` */
93 |
94 | DROP TABLE IF EXISTS `seller`;
95 |
96 | CREATE TABLE `seller` (
97 | `sellerId` int(11) NOT NULL,
98 | `name` varchar(128) NOT NULL,
99 | `description` varchar(128) NOT NULL,
100 | `deliveryTime` int(11) NOT NULL,
101 | `score` float NOT NULL,
102 | `serviceScore` float NOT NULL,
103 | `foodScore` float NOT NULL,
104 | `rankRate` float NOT NULL,
105 | `minPrice` int(11) NOT NULL,
106 | `deliveryPrice` int(11) NOT NULL,
107 | `ratingCount` int(11) NOT NULL,
108 | `sellCount` int(11) NOT NULL,
109 | `bulletin` varchar(256) NOT NULL,
110 | `avatar` varchar(256) NOT NULL,
111 | PRIMARY KEY (`sellerId`)
112 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
113 |
114 | /*Data for the table `seller` */
115 |
116 | insert into `seller`(`sellerId`,`name`,`description`,`deliveryTime`,`score`,`serviceScore`,`foodScore`,`rankRate`,`minPrice`,`deliveryPrice`,`ratingCount`,`sellCount`,`bulletin`,`avatar`) values (1,'粥品香坊(回龙观)','蜂鸟专送',38,4.2,4.1,4.3,69.2,20,4,24,90,'粥品香坊其烹饪粥料的秘方源于中国千年古法,在融和现代制作工艺,由世界烹饪大师屈浩先生领衔研发。坚守纯天然、0添加的良心品质深得消费者青睐,发展至今成为粥类的引领品牌。是2008年奥运会和2013年园博会指定餐饮服务商。','http://static.galileo.xiaojukeji.com/static/tms/seller_avatar_256px.jpg');
117 |
118 | /*Table structure for table `sellerinfos` */
119 |
120 | DROP TABLE IF EXISTS `sellerinfos`;
121 |
122 | CREATE TABLE `sellerinfos` (
123 | `sInfoId` int(11) NOT NULL AUTO_INCREMENT,
124 | `sellerId` int(11) NOT NULL,
125 | `info` varchar(128) NOT NULL,
126 | PRIMARY KEY (`sInfoId`)
127 | ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
128 |
129 | /*Data for the table `sellerinfos` */
130 |
131 | insert into `sellerinfos`(`sInfoId`,`sellerId`,`info`) values (1,1,'该商家支持发票,请下单写好发票抬头'),(2,1,'品类:其他菜系,包子粥店'),(3,1,'北京市昌平区回龙观西大街龙观置业大厦底商B座102单元1340'),(4,1,'营业时间:10:00-20:30');
132 |
133 | /*Table structure for table `sellerpics` */
134 |
135 | DROP TABLE IF EXISTS `sellerpics`;
136 |
137 | CREATE TABLE `sellerpics` (
138 | `sPicsId` int(11) NOT NULL AUTO_INCREMENT,
139 | `sellerId` int(11) NOT NULL,
140 | `picSrc` varchar(256) NOT NULL,
141 | PRIMARY KEY (`sPicsId`),
142 | KEY `sellerId` (`sellerId`),
143 | CONSTRAINT `sellerId` FOREIGN KEY (`sellerId`) REFERENCES `seller` (`sellerId`)
144 | ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
145 |
146 | /*Data for the table `sellerpics` */
147 |
148 | insert into `sellerpics`(`sPicsId`,`sellerId`,`picSrc`) values (1,1,'http://fuss10.elemecdn.com/8/71/c5cf5715740998d5040dda6e66abfjpeg.jpeg?imageView2/1/w/180/h/180'),(2,1,'http://fuss10.elemecdn.com/b/6c/75bd250e5ba69868f3b1178afbda3jpeg.jpeg?imageView2/1/w/180/h/180'),(3,1,'http://fuss10.elemecdn.com/f/96/3d608c5811bc2d902fc9ab9a5baa7jpeg.jpeg?imageView2/1/w/180/h/180'),(4,1,'http://fuss10.elemecdn.com/6/ad/779f8620ff49f701cd4c58f6448b6jpeg.jpeg?imageView2/1/w/180/h/180');
149 |
150 | /*Table structure for table `sellerratings` */
151 |
152 | DROP TABLE IF EXISTS `sellerratings`;
153 |
154 | CREATE TABLE `sellerratings` (
155 | `sRateId` int(11) NOT NULL AUTO_INCREMENT,
156 | `userId` int(11) NOT NULL,
157 | `sellerId` int(11) NOT NULL,
158 | `orderId` int(11) NOT NULL,
159 | `rateTime` varchar(128) NOT NULL,
160 | `deliveryTime` int(11) NOT NULL,
161 | `score` float NOT NULL,
162 | `rateType` int(11) NOT NULL,
163 | `text` varchar(256) NOT NULL,
164 | PRIMARY KEY (`sRateId`)
165 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
166 |
167 | /*Data for the table `sellerratings` */
168 |
169 | /*Table structure for table `sellersupports` */
170 |
171 | DROP TABLE IF EXISTS `sellersupports`;
172 |
173 | CREATE TABLE `sellersupports` (
174 | `sSupportId` int(11) NOT NULL AUTO_INCREMENT,
175 | `description` varchar(128) NOT NULL,
176 | `sellerId` int(11) NOT NULL,
177 | PRIMARY KEY (`sSupportId`)
178 | ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
179 |
180 | /*Data for the table `sellersupports` */
181 |
182 | insert into `sellersupports`(`sSupportId`,`description`,`sellerId`) values (1,'在线支付满28减5',1),(2,'VC无限橙果汁全场8折',1),(3,'单人精彩套餐',1),(4,'该商家支持发票,请下单写好发票抬头',1),(5,'已加入“外卖保”计划,食品安全保障',1);
183 |
184 | /*Table structure for table `user` */
185 |
186 | DROP TABLE IF EXISTS `user`;
187 |
188 | CREATE TABLE `user` (
189 | `userId` int(11) NOT NULL AUTO_INCREMENT,
190 | `username` varchar(32) NOT NULL,
191 | `password` varchar(32) NOT NULL,
192 | PRIMARY KEY (`userId`)
193 | ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
194 |
195 | /*Data for the table `user` */
196 |
197 | insert into `user`(`userId`,`username`,`password`) values (1,'admin','1111');
198 |
199 | /*Table structure for table `userinfos` */
200 |
201 | DROP TABLE IF EXISTS `userinfos`;
202 |
203 | CREATE TABLE `userinfos` (
204 | `uInfoId` int(11) NOT NULL AUTO_INCREMENT,
205 | `address` varchar(128) NOT NULL,
206 | `account` int(11) NOT NULL,
207 | `headSrc` varchar(128) DEFAULT NULL,
208 | `nick` varchar(32) DEFAULT NULL,
209 | `userId` int(11) NOT NULL,
210 | `phone` varchar(32) DEFAULT NULL,
211 | PRIMARY KEY (`uInfoId`),
212 | KEY `userId` (`userId`),
213 | CONSTRAINT `userId` FOREIGN KEY (`userId`) REFERENCES `user` (`userId`)
214 | ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
215 |
216 | /*Data for the table `userinfos` */
217 |
218 | insert into `userinfos`(`uInfoId`,`address`,`account`,`headSrc`,`nick`,`userId`,`phone`) values (1,'南昌大学学生公寓6#666',1000,'https://pic1.zhimg.com/v2-ba9690274a886065a1d481d8f090da61_xl.jpg','帕尼尼',1,'13578889999');
219 |
220 | /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
221 | /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
222 | /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
223 | /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
224 |
--------------------------------------------------------------------------------
/static/data.json:
--------------------------------------------------------------------------------
1 | {
2 | "seller": {
3 | "name": "粥品香坊(回龙观)",
4 | "description": "蜂鸟专送",
5 | "deliveryTime": 38,
6 | "score": 4.2,
7 | "serviceScore": 4.1,
8 | "foodScore": 4.3,
9 | "rankRate": 69.2,
10 | "minPrice": 20,
11 | "deliveryPrice": 4,
12 | "ratingCount": 24,
13 | "sellCount": 90,
14 | "supportFirst":"在线支付满28减5",
15 | "supportsCount":5,
16 | "bulletin": "粥品香坊其烹饪粥料的秘方源于中国千年古法,在融和现代制作工艺,由世界烹饪大师屈浩先生领衔研发。坚守纯天然、0添加的良心品质深得消费者青睐,发展至今成为粥类的引领品牌。是2008年奥运会和2013年园博会指定餐饮服务商。",
17 | "supports": [
18 | {
19 | "type": 0,
20 | "description": "在线支付满28减5"
21 | },
22 | {
23 | "type": 1,
24 | "description": "VC无限橙果汁全场8折"
25 | },
26 | {
27 | "type": 2,
28 | "description": "单人精彩套餐"
29 | },
30 | {
31 | "type": 3,
32 | "description": "该商家支持发票,请下单写好发票抬头"
33 | },
34 | {
35 | "type": 4,
36 | "description": "已加入“外卖保”计划,食品安全保障"
37 | }
38 | ],
39 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/seller_avatar_256px.jpg",
40 | "pics": [
41 | "http://fuss10.elemecdn.com/8/71/c5cf5715740998d5040dda6e66abfjpeg.jpeg?imageView2/1/w/180/h/180",
42 | "http://fuss10.elemecdn.com/b/6c/75bd250e5ba69868f3b1178afbda3jpeg.jpeg?imageView2/1/w/180/h/180",
43 | "http://fuss10.elemecdn.com/f/96/3d608c5811bc2d902fc9ab9a5baa7jpeg.jpeg?imageView2/1/w/180/h/180",
44 | "http://fuss10.elemecdn.com/6/ad/779f8620ff49f701cd4c58f6448b6jpeg.jpeg?imageView2/1/w/180/h/180"
45 | ],
46 | "infos": [
47 | "该商家支持发票,请下单写好发票抬头",
48 | "品类:其他菜系,包子粥店",
49 | "北京市昌平区回龙观西大街龙观置业大厦底商B座102单元1340",
50 | "营业时间:10:00-20:30"
51 | ]
52 | },
53 | "goods": [
54 | {
55 | "name": "热销榜",
56 | "type": -1,
57 | "foods": [
58 | {
59 | "foodId": 10,
60 | "name": "皮蛋瘦肉粥",
61 | "price": 10,
62 | "oldPrice": "",
63 | "description": "咸粥",
64 | "sellCount": 229,
65 | "rating": 100,
66 | "info": "一碗皮蛋瘦肉粥,总是我到粥店时的不二之选。香浓软滑,饱腹暖心,皮蛋的Q弹与瘦肉的滑嫩伴着粥香溢于满口,让人喝这样的一碗粥也觉得心满意足",
67 | "ratings": [
68 | {
69 | "username": "3******c",
70 | "rateTime": 1469281964000,
71 | "rateType": 0,
72 | "text": "很喜欢的粥",
73 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
74 | },
75 | {
76 | "username": "2******3",
77 | "rateTime": 1469271264000,
78 | "rateType": 0,
79 | "text": "",
80 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
81 | },
82 | {
83 | "username": "3******b",
84 | "rateTime": 1469261964000,
85 | "rateType": 1,
86 | "text": "",
87 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
88 | }
89 | ],
90 | "icon": "http://fuss10.elemecdn.com/c/cd/c12745ed8a5171e13b427dbc39401jpeg.jpeg?imageView2/1/w/114/h/114",
91 | "image": "http://fuss10.elemecdn.com/c/cd/c12745ed8a5171e13b427dbc39401jpeg.jpeg?imageView2/1/w/750/h/750"
92 | },
93 | {
94 | "foodId": 11,
95 | "name": "扁豆焖面",
96 | "price": 14,
97 | "oldPrice": "",
98 | "description": "",
99 | "sellCount": 188,
100 | "rating": 96,
101 | "ratings": [
102 | {
103 | "username": "3******c",
104 | "rateTime": 1469281964000,
105 | "rateType": 0,
106 | "text": "",
107 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
108 | },
109 | {
110 | "username": "2******3",
111 | "rateTime": 1469271264000,
112 | "rateType": 0,
113 | "text": "",
114 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
115 | },
116 | {
117 | "username": "3******b",
118 | "rateTime": 1469261964000,
119 | "rateType": 1,
120 | "text": "",
121 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
122 | }
123 | ],
124 | "info": "",
125 | "icon": "http://fuss10.elemecdn.com/c/6b/29e3d29b0db63d36f7c500bca31d8jpeg.jpeg?imageView2/1/w/114/h/114",
126 | "image": "http://fuss10.elemecdn.com/c/6b/29e3d29b0db63d36f7c500bca31d8jpeg.jpeg?imageView2/1/w/750/h/750"
127 | },
128 | {
129 | "foodId": 12,
130 | "name": "葱花饼",
131 | "price": 10,
132 | "oldPrice": "",
133 | "description": "",
134 | "sellCount": 124,
135 | "rating": 85,
136 | "info": "",
137 | "ratings": [
138 | {
139 | "username": "3******c",
140 | "rateTime": 1469281964000,
141 | "rateType": 1,
142 | "text": "没啥味道",
143 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
144 | },
145 | {
146 | "username": "2******3",
147 | "rateTime": 1469271264000,
148 | "rateType": 1,
149 | "text": "很一般啊",
150 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
151 | },
152 | {
153 | "username": "3******b",
154 | "rateTime": 1469261964000,
155 | "rateType": 0,
156 | "text": "",
157 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
158 | }
159 | ],
160 | "icon": "http://fuss10.elemecdn.com/f/28/a51e7b18751bcdf871648a23fd3b4jpeg.jpeg?imageView2/1/w/114/h/114",
161 | "image": "http://fuss10.elemecdn.com/f/28/a51e7b18751bcdf871648a23fd3b4jpeg.jpeg?imageView2/1/w/750/h/750"
162 | },
163 | {
164 | "foodId": 13,
165 | "name": "牛肉馅饼",
166 | "price": 14,
167 | "oldPrice": "",
168 | "description": "",
169 | "sellCount": 114,
170 | "rating": 91,
171 | "info": "",
172 | "ratings": [
173 | {
174 | "username": "3******c",
175 | "rateTime": 1469281964000,
176 | "rateType": 1,
177 | "text": "难吃不推荐",
178 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
179 | },
180 | {
181 | "username": "2******3",
182 | "rateTime": 1469271264000,
183 | "rateType": 0,
184 | "text": "",
185 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
186 | },
187 | {
188 | "username": "3******b",
189 | "rateTime": 1469261964000,
190 | "rateType": 0,
191 | "text": "",
192 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
193 | }
194 | ],
195 | "icon": "http://fuss10.elemecdn.com/d/b9/bcab0e8ad97758e65ae5a62b2664ejpeg.jpeg?imageView2/1/w/114/h/114",
196 | "image": "http://fuss10.elemecdn.com/d/b9/bcab0e8ad97758e65ae5a62b2664ejpeg.jpeg?imageView2/1/w/750/h/750"
197 | },
198 | {
199 | "foodId": 14,
200 | "name": "招牌猪肉白菜锅贴/10个",
201 | "price": 17,
202 | "oldPrice": "",
203 | "description": "",
204 | "sellCount": 101,
205 | "rating": 78,
206 | "info": "",
207 | "ratings": [
208 | {
209 | "username": "3******c",
210 | "rateTime": 1469281964000,
211 | "rateType": 1,
212 | "text": "不脆,不好吃",
213 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
214 | },
215 | {
216 | "username": "2******3",
217 | "rateTime": 1469271264000,
218 | "rateType": 0,
219 | "text": "",
220 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
221 | },
222 | {
223 | "username": "3******b",
224 | "rateTime": 1469261964000,
225 | "rateType": 0,
226 | "text": "",
227 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
228 | }
229 | ],
230 | "icon": "http://fuss10.elemecdn.com/7/72/9a580c1462ca1e4d3c07e112bc035jpeg.jpeg?imageView2/1/w/114/h/114",
231 | "image": "http://fuss10.elemecdn.com/7/72/9a580c1462ca1e4d3c07e112bc035jpeg.jpeg?imageView2/1/w/750/h/750"
232 | },
233 | {
234 | "foodId": 15,
235 | "name": "南瓜粥",
236 | "price": 9,
237 | "oldPrice": "",
238 | "description": "甜粥",
239 | "sellCount": 91,
240 | "rating": 100,
241 | "ratings": [
242 | {
243 | "username": "3******c",
244 | "rateTime": 1469281964000,
245 | "rateType": 0,
246 | "text": "",
247 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
248 | },
249 | {
250 | "username": "2******3",
251 | "rateTime": 1469271264000,
252 | "rateType": 0,
253 | "text": "",
254 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
255 | },
256 | {
257 | "username": "3******b",
258 | "rateTime": 1469261964000,
259 | "rateType": 0,
260 | "text": "",
261 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
262 | }
263 | ],
264 | "icon": "http://fuss10.elemecdn.com/8/a6/453f65f16b1391942af11511b7a90jpeg.jpeg?imageView2/1/w/114/h/114",
265 | "image": "http://fuss10.elemecdn.com/8/a6/453f65f16b1391942af11511b7a90jpeg.jpeg?imageView2/1/w/750/h/750"
266 | },
267 | {
268 | "foodId": 16,
269 | "name": "红豆薏米美肤粥",
270 | "price": 12,
271 | "oldPrice": "",
272 | "description": "甜粥",
273 | "sellCount": 86,
274 | "rating": 100,
275 | "info": "",
276 | "ratings": [
277 | {
278 | "username": "3******c",
279 | "rateTime": 1469281964000,
280 | "rateType": 0,
281 | "text": "",
282 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
283 | },
284 | {
285 | "username": "2******3",
286 | "rateTime": 1469271264000,
287 | "rateType": 0,
288 | "text": "",
289 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
290 | },
291 | {
292 | "username": "3******b",
293 | "rateTime": 1469261964000,
294 | "rateType": 0,
295 | "text": "",
296 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
297 | }
298 | ],
299 | "icon": "http://fuss10.elemecdn.com/d/22/260bd78ee6ac6051136c5447fe307jpeg.jpeg?imageView2/1/w/114/h/114",
300 | "image": "http://fuss10.elemecdn.com/d/22/260bd78ee6ac6051136c5447fe307jpeg.jpeg?imageView2/1/w/750/h/750"
301 | },
302 | {
303 | "foodId": 17,
304 | "name": "八宝酱菜",
305 | "price": 4,
306 | "oldPrice": "",
307 | "description": "",
308 | "sellCount": 84,
309 | "rating": 100,
310 | "info": "",
311 | "ratings": [
312 | {
313 | "username": "3******c",
314 | "rateTime": 1469281964000,
315 | "rateType": 0,
316 | "text": "",
317 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
318 | },
319 | {
320 | "username": "2******3",
321 | "rateTime": 1469271264000,
322 | "rateType": 0,
323 | "text": "",
324 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
325 | },
326 | {
327 | "username": "3******b",
328 | "rateTime": 1469261964000,
329 | "rateType": 0,
330 | "text": "",
331 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
332 | }
333 | ],
334 | "icon": "http://fuss10.elemecdn.com/9/b5/469d8854f9a3a03797933fd01398bjpeg.jpeg?imageView2/1/w/114/h/114",
335 | "image": "http://fuss10.elemecdn.com/9/b5/469d8854f9a3a03797933fd01398bjpeg.jpeg?imageView2/1/w/750/h/750"
336 | },
337 | {
338 | "foodId": 18,
339 | "name": "红枣山药糙米粥",
340 | "price": 10,
341 | "oldPrice": "",
342 | "description": "",
343 | "sellCount": 81,
344 | "rating": 91,
345 | "info": "",
346 | "ratings": [
347 | {
348 | "username": "3******c",
349 | "rateTime": 1469281964000,
350 | "rateType": 0,
351 | "text": "",
352 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
353 | },
354 | {
355 | "username": "2******3",
356 | "rateTime": 1469271264000,
357 | "rateType": 0,
358 | "text": "",
359 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
360 | },
361 | {
362 | "username": "3******b",
363 | "rateTime": 1469261964000,
364 | "rateType": 0,
365 | "text": "",
366 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
367 | }
368 | ],
369 | "icon": "http://fuss10.elemecdn.com/9/b5/469d8854f9a3a03797933fd01398bjpeg.jpeg?imageView2/1/w/114/h/114",
370 | "image": "http://fuss10.elemecdn.com/9/b5/469d8854f9a3a03797933fd01398bjpeg.jpeg?imageView2/1/w/750/h/750"
371 | },
372 | {
373 | "foodId": 19,
374 | "name": "糊塌子",
375 | "price": 10,
376 | "oldPrice": "",
377 | "description": "",
378 | "sellCount": 80,
379 | "rating": 93,
380 | "info": "",
381 | "ratings": [
382 | {
383 | "username": "3******c",
384 | "rateTime": 1469281964000,
385 | "rateType": 0,
386 | "text": "",
387 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
388 | },
389 | {
390 | "username": "2******3",
391 | "rateTime": 1469271264000,
392 | "rateType": 0,
393 | "text": "",
394 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
395 | },
396 | {
397 | "username": "3******b",
398 | "rateTime": 1469261964000,
399 | "rateType": 0,
400 | "text": "",
401 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
402 | }
403 | ],
404 | "icon": "http://fuss10.elemecdn.com/0/05/097a2a59fd2a2292d08067e16380cjpeg.jpeg?imageView2/1/w/114/h/114",
405 | "image": "http://fuss10.elemecdn.com/0/05/097a2a59fd2a2292d08067e16380cjpeg.jpeg?imageView2/1/w/750/h/750"
406 | }
407 | ]
408 | },
409 | {
410 | "name": "单人精彩套餐",
411 | "type": 2,
412 | "foods": [
413 | {
414 | "foodId": 20,
415 | "name": "红枣山药粥套餐",
416 | "price": 29,
417 | "oldPrice": 36,
418 | "description": "红枣山药糙米粥,素材包,爽口莴笋丝,四川泡菜或八宝酱菜,配菜可备注",
419 | "sellCount": 17,
420 | "rating": 100,
421 | "info": "",
422 | "ratings": [
423 | {
424 | "username": "2******3",
425 | "rateTime": 1469271264000,
426 | "rateType": 0,
427 | "text": "",
428 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
429 | }
430 | ],
431 | "icon": "http://fuss10.elemecdn.com/6/72/cb844f0bb60c502c6d5c05e0bddf5jpeg.jpeg?imageView2/1/w/114/h/114",
432 | "image": "http://fuss10.elemecdn.com/6/72/cb844f0bb60c502c6d5c05e0bddf5jpeg.jpeg?imageView2/1/w/750/h/750"
433 | }
434 | ]
435 | },
436 | {
437 | "name": "冰爽饮品限时特惠",
438 | "type": 1,
439 | "foods": [
440 | {
441 | "foodId": 30,
442 | "name": "VC无限橙果汁",
443 | "price": 8,
444 | "oldPrice": 10,
445 | "description": "",
446 | "sellCount": 15,
447 | "rating": 100,
448 | "info": "",
449 | "ratings": [
450 | {
451 | "username": "3******c",
452 | "rateTime": 1469281964000,
453 | "rateType": 0,
454 | "text": "还可以",
455 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
456 | },
457 | {
458 | "username": "2******3",
459 | "rateTime": 1469271264000,
460 | "rateType": 0,
461 | "text": "",
462 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
463 | }
464 | ],
465 | "icon": "http://fuss10.elemecdn.com/e/c6/f348e811772016ae24e968238bcbfjpeg.jpeg?imageView2/1/w/114/h/114",
466 | "image": "http://fuss10.elemecdn.com/e/c6/f348e811772016ae24e968238bcbfjpeg.jpeg?imageView2/1/w/750/h/750"
467 | }
468 | ]
469 | },
470 | {
471 | "name": "精选热菜",
472 | "type": -1,
473 | "foods": [
474 | {
475 | "foodId": 40,
476 | "name": "娃娃菜炖豆腐",
477 | "price": 17,
478 | "oldPrice": "",
479 | "description": "",
480 | "sellCount": 43,
481 | "rating": 92,
482 | "info": "",
483 | "ratings": [
484 | {
485 | "username": "3******c",
486 | "rateTime": 1469281964000,
487 | "rateType": 0,
488 | "text": "菜量还可以,味道还可以",
489 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
490 | },
491 | {
492 | "username": "2******3",
493 | "rateTime": 1469271264000,
494 | "rateType": 0,
495 | "text": "",
496 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
497 | }
498 | ],
499 | "icon": "http://fuss10.elemecdn.com/d/2d/b1eb45b305635d9dd04ddf157165fjpeg.jpeg?imageView2/1/w/114/h/114",
500 | "image": "http://fuss10.elemecdn.com/d/2d/b1eb45b305635d9dd04ddf157165fjpeg.jpeg?imageView2/1/w/750/h/750"
501 | },
502 | {
503 | "foodId": 41,
504 | "name": "手撕包菜",
505 | "price": 16,
506 | "oldPrice": "",
507 | "description": "",
508 | "sellCount": 29,
509 | "rating": 100,
510 | "info": "",
511 | "ratings": [
512 | {
513 | "username": "3******c",
514 | "rateTime": 1469281964000,
515 | "rateType": 0,
516 | "text": "",
517 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
518 | },
519 | {
520 | "username": "2******3",
521 | "rateTime": 1469271264000,
522 | "rateType": 0,
523 | "text": "",
524 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
525 | }
526 | ],
527 | "icon": "http://fuss10.elemecdn.com/9/c6/f3bc84468820121112e79583c24efjpeg.jpeg?imageView2/1/w/114/h/114",
528 | "image": "http://fuss10.elemecdn.com/9/c6/f3bc84468820121112e79583c24efjpeg.jpeg?imageView2/1/w/750/h/750"
529 | },
530 | {
531 | "foodId": 42,
532 | "name": "香酥黄金鱼/3条",
533 | "price": 11,
534 | "oldPrice": "",
535 | "description": "",
536 | "sellCount": 15,
537 | "rating": 100,
538 | "info": "",
539 | "ratings": [
540 | {
541 | "username": "3******c",
542 | "rateTime": 1469281964000,
543 | "rateType": 0,
544 | "text": "",
545 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
546 | },
547 | {
548 | "username": "2******3",
549 | "rateTime": 1469271264000,
550 | "rateType": 0,
551 | "text": "",
552 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
553 | }
554 | ],
555 | "icon": "http://fuss10.elemecdn.com/4/e7/8277a6a2ea0a2e97710290499fc41jpeg.jpeg?imageView2/1/w/114/h/114",
556 | "image": "http://fuss10.elemecdn.com/4/e7/8277a6a2ea0a2e97710290499fc41jpeg.jpeg?imageView2/1/w/750/h/750"
557 | }
558 | ]
559 | },
560 | {
561 | "name": "爽口凉菜",
562 | "type": -1,
563 | "foods": [
564 | {
565 | "foodId": 50,
566 | "name": "八宝酱菜",
567 | "price": 4,
568 | "oldPrice": "",
569 | "description": "",
570 | "sellCount": 84,
571 | "rating": 100,
572 | "info": "",
573 | "ratings": [
574 | {
575 | "username": "3******c",
576 | "rateTime": 1469281964000,
577 | "rateType": 0,
578 | "text": "",
579 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
580 | },
581 | {
582 | "username": "2******3",
583 | "rateTime": 1469271264000,
584 | "rateType": 0,
585 | "text": "",
586 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
587 | },
588 | {
589 | "username": "3******b",
590 | "rateTime": 1469261964000,
591 | "rateType": 0,
592 | "text": "",
593 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
594 | }
595 | ],
596 | "icon": "http://fuss10.elemecdn.com/9/b5/469d8854f9a3a03797933fd01398bjpeg.jpeg?imageView2/1/w/114/h/114",
597 | "image": "http://fuss10.elemecdn.com/9/b5/469d8854f9a3a03797933fd01398bjpeg.jpeg?imageView2/1/w/750/h/750"
598 | },
599 | {
600 | "foodId": 51,
601 | "name": "拍黄瓜",
602 | "price": 9,
603 | "oldPrice": "",
604 | "description": "",
605 | "sellCount": 28,
606 | "rating": 100,
607 | "info": "",
608 | "ratings": [
609 | {
610 | "username": "3******c",
611 | "rateTime": 1469281964000,
612 | "rateType": 0,
613 | "text": "",
614 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
615 | },
616 | {
617 | "username": "2******3",
618 | "rateTime": 1469271264000,
619 | "rateType": 0,
620 | "text": "",
621 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
622 | },
623 | {
624 | "username": "3******b",
625 | "rateTime": 1469261964000,
626 | "rateType": 0,
627 | "text": "",
628 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
629 | }
630 | ],
631 | "icon": "http://fuss10.elemecdn.com/6/54/f654985b4e185f06eb07f8fa2b2e8jpeg.jpeg?imageView2/1/w/114/h/114",
632 | "image": "http://fuss10.elemecdn.com/6/54/f654985b4e185f06eb07f8fa2b2e8jpeg.jpeg?imageView2/1/w/750/h/750"
633 | }
634 | ]
635 | },
636 | {
637 | "name": "精选套餐",
638 | "type": -1,
639 | "foods": [
640 | {
641 | "foodId": 60,
642 | "name": "红豆薏米粥套餐",
643 | "price": 37,
644 | "oldPrice": "",
645 | "description": "红豆薏米粥,三鲜干蒸烧卖,拍黄瓜",
646 | "sellCount": 3,
647 | "rating": 100,
648 | "info": "",
649 | "ratings": [
650 | {
651 | "username": "2******3",
652 | "rateTime": 1469271264000,
653 | "rateType": 0,
654 | "text": "",
655 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
656 | }
657 | ],
658 | "icon": "http://fuss10.elemecdn.com/f/49/27f26ed00c025b2200a9ccbb7e67ejpeg.jpeg?imageView2/1/w/114/h/114",
659 | "image": "http://fuss10.elemecdn.com/f/49/27f26ed00c025b2200a9ccbb7e67ejpeg.jpeg?imageView2/1/w/750/h/750"
660 | },
661 | {
662 | "foodId": 61,
663 | "name": "皮蛋瘦肉粥套餐",
664 | "price": 31,
665 | "oldPrice": "",
666 | "description": "",
667 | "sellCount": 12,
668 | "rating": 100,
669 | "info": "",
670 | "ratings": [
671 | {
672 | "username": "2******3",
673 | "rateTime": 1469271264000,
674 | "rateType": 0,
675 | "text": "",
676 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
677 | }
678 | ],
679 | "icon": "http://fuss10.elemecdn.com/8/96/f444a8087f0e940ef264617f9d98ajpeg.jpeg?imageView2/1/w/114/h/114",
680 | "image": "http://fuss10.elemecdn.com/8/96/f444a8087f0e940ef264617f9d98ajpeg.jpeg?imageView2/1/w/750/h/750"
681 | }
682 | ]
683 | },
684 | {
685 | "name": "果拼果汁",
686 | "type": -1,
687 | "foods": [
688 | {
689 | "foodId": 70,
690 | "name": "蜜瓜圣女萝莉杯",
691 | "price": 6,
692 | "oldPrice": "",
693 | "description": "",
694 | "sellCount": 1,
695 | "rating": "",
696 | "info": "",
697 | "ratings": [],
698 | "icon": "http://fuss10.elemecdn.com/b/5f/b3b04c259d5ec9fa52e1856ee50dajpeg.jpeg?imageView2/1/w/114/h/114",
699 | "image": "http://fuss10.elemecdn.com/b/5f/b3b04c259d5ec9fa52e1856ee50dajpeg.jpeg?imageView2/1/w/750/h/750"
700 | },
701 | {
702 | "foodId": 71,
703 | "name": "加多宝",
704 | "price": 6,
705 | "oldPrice": "",
706 | "description": "",
707 | "sellCount": 7,
708 | "rating": 100,
709 | "info": "",
710 | "ratings": [
711 | {
712 | "username": "3******c",
713 | "rateTime": 1469281964000,
714 | "rateType": 0,
715 | "text": "",
716 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
717 | },
718 | {
719 | "username": "2******3",
720 | "rateTime": 1469271264000,
721 | "rateType": 0,
722 | "text": "",
723 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
724 | },
725 | {
726 | "username": "3******b",
727 | "rateTime": 1469261964000,
728 | "rateType": 0,
729 | "text": "",
730 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
731 | }
732 | ],
733 | "icon": "http://fuss10.elemecdn.com/b/9f/5e6c99c593cf65229225c5661bcdejpeg.jpeg?imageView2/1/w/114/h/114",
734 | "image": "http://fuss10.elemecdn.com/b/9f/5e6c99c593cf65229225c5661bcdejpeg.jpeg?imageView2/1/w/750/h/750"
735 | },
736 | {
737 | "foodId": 72,
738 | "name": "VC无限橙果汁",
739 | "price": 8,
740 | "oldPrice": 10,
741 | "description": "",
742 | "sellCount": 15,
743 | "rating": 100,
744 | "info": "",
745 | "ratings": [
746 | {
747 | "username": "3******c",
748 | "rateTime": 1469281964000,
749 | "rateType": 0,
750 | "text": "还可以",
751 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
752 | },
753 | {
754 | "username": "2******3",
755 | "rateTime": 1469271264000,
756 | "rateType": 0,
757 | "text": "",
758 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
759 | }
760 | ],
761 | "icon": "http://fuss10.elemecdn.com/e/c6/f348e811772016ae24e968238bcbfjpeg.jpeg?imageView2/1/w/114/h/114",
762 | "image": "http://fuss10.elemecdn.com/e/c6/f348e811772016ae24e968238bcbfjpeg.jpeg?imageView2/1/w/750/h/750"
763 | }
764 | ]
765 | },
766 | {
767 | "name": "小吃主食",
768 | "type": -1,
769 | "foods": [
770 | {
771 | "foodId": 80,
772 | "name": "扁豆焖面",
773 | "price": 14,
774 | "oldPrice": "",
775 | "description": "",
776 | "sellCount": 188,
777 | "rating": 96,
778 | "info": "",
779 | "ratings": [
780 | {
781 | "username": "3******c",
782 | "rateTime": 1469281964000,
783 | "rateType": 0,
784 | "text": "",
785 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
786 | },
787 | {
788 | "username": "2******3",
789 | "rateTime": 1469271264000,
790 | "rateType": 0,
791 | "text": "",
792 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
793 | },
794 | {
795 | "username": "3******b",
796 | "rateTime": 1469261964000,
797 | "rateType": 1,
798 | "text": "",
799 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
800 | }
801 | ],
802 | "icon": "http://fuss10.elemecdn.com/c/6b/29e3d29b0db63d36f7c500bca31d8jpeg.jpeg?imageView2/1/w/114/h/114",
803 | "image": "http://fuss10.elemecdn.com/c/6b/29e3d29b0db63d36f7c500bca31d8jpeg.jpeg?imageView2/1/w/750/h/750"
804 | },
805 | {
806 | "foodId": 81,
807 | "name": "葱花饼",
808 | "price": 10,
809 | "oldPrice": "",
810 | "description": "",
811 | "sellCount": 124,
812 | "rating": 85,
813 | "info": "",
814 | "ratings": [
815 | {
816 | "username": "3******c",
817 | "rateTime": 1469281964000,
818 | "rateType": 1,
819 | "text": "没啥味道",
820 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
821 | },
822 | {
823 | "username": "2******3",
824 | "rateTime": 1469271264000,
825 | "rateType": 1,
826 | "text": "很一般啊",
827 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
828 | },
829 | {
830 | "username": "3******b",
831 | "rateTime": 1469261964000,
832 | "rateType": 0,
833 | "text": "",
834 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
835 | }
836 | ],
837 | "icon": "http://fuss10.elemecdn.com/f/28/a51e7b18751bcdf871648a23fd3b4jpeg.jpeg?imageView2/1/w/114/h/114",
838 | "image": "http://fuss10.elemecdn.com/f/28/a51e7b18751bcdf871648a23fd3b4jpeg.jpeg?imageView2/1/w/750/h/750"
839 | },
840 | {
841 | "foodId": 82,
842 | "name": "牛肉馅饼",
843 | "price": 14,
844 | "oldPrice": "",
845 | "description": "",
846 | "sellCount": 114,
847 | "rating": 91,
848 | "info": "",
849 | "ratings": [
850 | {
851 | "username": "3******c",
852 | "rateTime": 1469281964000,
853 | "rateType": 1,
854 | "text": "难吃不推荐",
855 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
856 | },
857 | {
858 | "username": "2******3",
859 | "rateTime": 1469271264000,
860 | "rateType": 0,
861 | "text": "",
862 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
863 | },
864 | {
865 | "username": "3******b",
866 | "rateTime": 1469261964000,
867 | "rateType": 0,
868 | "text": "",
869 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
870 | }
871 | ],
872 | "icon": "http://fuss10.elemecdn.com/d/b9/bcab0e8ad97758e65ae5a62b2664ejpeg.jpeg?imageView2/1/w/114/h/114",
873 | "image": "http://fuss10.elemecdn.com/d/b9/bcab0e8ad97758e65ae5a62b2664ejpeg.jpeg?imageView2/1/w/750/h/750"
874 | },
875 | {
876 | "foodId": 83,
877 | "name": "招牌猪肉白菜锅贴/10个",
878 | "price": 17,
879 | "oldPrice": "",
880 | "description": "",
881 | "sellCount": 101,
882 | "rating": 78,
883 | "info": "",
884 | "ratings": [
885 | {
886 | "username": "3******c",
887 | "rateTime": 1469281964000,
888 | "rateType": 1,
889 | "text": "不脆,不好吃",
890 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
891 | },
892 | {
893 | "username": "2******3",
894 | "rateTime": 1469271264000,
895 | "rateType": 0,
896 | "text": "",
897 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
898 | },
899 | {
900 | "username": "3******b",
901 | "rateTime": 1469261964000,
902 | "rateType": 0,
903 | "text": "",
904 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
905 | }
906 | ],
907 | "icon": "http://fuss10.elemecdn.com/7/72/9a580c1462ca1e4d3c07e112bc035jpeg.jpeg?imageView2/1/w/114/h/114",
908 | "image": "http://fuss10.elemecdn.com/7/72/9a580c1462ca1e4d3c07e112bc035jpeg.jpeg?imageView2/1/w/750/h/750"
909 | },
910 | {
911 | "foodId": 84,
912 | "name": "糊塌子",
913 | "price": 10,
914 | "oldPrice": "",
915 | "description": "",
916 | "sellCount": 80,
917 | "rating": 93,
918 | "info": "",
919 | "ratings": [
920 | {
921 | "username": "3******c",
922 | "rateTime": 1469281964000,
923 | "rateType": 0,
924 | "text": "",
925 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
926 | },
927 | {
928 | "username": "2******3",
929 | "rateTime": 1469271264000,
930 | "rateType": 0,
931 | "text": "",
932 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
933 | },
934 | {
935 | "username": "3******b",
936 | "rateTime": 1469261964000,
937 | "rateType": 0,
938 | "text": "",
939 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
940 | }
941 | ],
942 | "icon": "http://fuss10.elemecdn.com/0/05/097a2a59fd2a2292d08067e16380cjpeg.jpeg?imageView2/1/w/114/h/114",
943 | "image": "http://fuss10.elemecdn.com/0/05/097a2a59fd2a2292d08067e16380cjpeg.jpeg?imageView2/1/w/750/h/750"
944 | }
945 | ]
946 | },
947 | {
948 | "name": "特色粥品",
949 | "type": -1,
950 | "foods": [
951 | {
952 | "foodId": 90,
953 | "name": "皮蛋瘦肉粥",
954 | "price": 10,
955 | "oldPrice": "",
956 | "description": "咸粥",
957 | "sellCount": 229,
958 | "rating": 100,
959 | "ratings": [
960 | {
961 | "username": "3******c",
962 | "rateTime": 1469281964000,
963 | "rateType": 0,
964 | "text": "很喜欢的粥",
965 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
966 | },
967 | {
968 | "username": "2******3",
969 | "rateTime": 1469271264000,
970 | "rateType": 0,
971 | "text": "",
972 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
973 | },
974 | {
975 | "username": "3******b",
976 | "rateTime": 1469261964000,
977 | "rateType": 1,
978 | "text": "",
979 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
980 | }
981 | ],
982 | "icon": "http://fuss10.elemecdn.com/c/cd/c12745ed8a5171e13b427dbc39401jpeg.jpeg?imageView2/1/w/114/h/114",
983 | "image": "http://fuss10.elemecdn.com/c/cd/c12745ed8a5171e13b427dbc39401jpeg.jpeg?imageView2/1/w/750/h/750"
984 | },
985 | {
986 | "foodId": 91,
987 | "name": "南瓜粥",
988 | "price": 9,
989 | "oldPrice": "",
990 | "description": "甜粥",
991 | "sellCount": 91,
992 | "rating": 100,
993 | "info": "",
994 | "ratings": [
995 | {
996 | "username": "3******c",
997 | "rateTime": 1469281964000,
998 | "rateType": 0,
999 | "text": "",
1000 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
1001 | },
1002 | {
1003 | "username": "2******3",
1004 | "rateTime": 1469271264000,
1005 | "rateType": 0,
1006 | "text": "",
1007 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
1008 | },
1009 | {
1010 | "username": "3******b",
1011 | "rateTime": 1469261964000,
1012 | "rateType": 0,
1013 | "text": "",
1014 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
1015 | }
1016 | ],
1017 | "icon": "http://fuss10.elemecdn.com/8/a6/453f65f16b1391942af11511b7a90jpeg.jpeg?imageView2/1/w/114/h/114",
1018 | "image": "http://fuss10.elemecdn.com/8/a6/453f65f16b1391942af11511b7a90jpeg.jpeg?imageView2/1/w/750/h/750"
1019 | },
1020 | {
1021 | "foodId": 92,
1022 | "name": "红豆薏米美肤粥",
1023 | "price": 12,
1024 | "oldPrice": "",
1025 | "description": "甜粥",
1026 | "sellCount": 86,
1027 | "rating": 100,
1028 | "info": "",
1029 | "ratings": [
1030 | {
1031 | "username": "3******c",
1032 | "rateTime": 1469281964000,
1033 | "rateType": 0,
1034 | "text": "",
1035 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
1036 | },
1037 | {
1038 | "username": "2******3",
1039 | "rateTime": 1469271264000,
1040 | "rateType": 0,
1041 | "text": "",
1042 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
1043 | },
1044 | {
1045 | "username": "3******b",
1046 | "rateTime": 1469261964000,
1047 | "rateType": 0,
1048 | "text": "",
1049 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
1050 | }
1051 | ],
1052 | "icon": "http://fuss10.elemecdn.com/d/22/260bd78ee6ac6051136c5447fe307jpeg.jpeg?imageView2/1/w/114/h/114",
1053 | "image": "http://fuss10.elemecdn.com/d/22/260bd78ee6ac6051136c5447fe307jpeg.jpeg?imageView2/1/w/750/h/750"
1054 | },
1055 | {
1056 | "foodId": 93,
1057 | "name": "红枣山药糙米粥",
1058 | "price": 10,
1059 | "oldPrice": "",
1060 | "description": "",
1061 | "sellCount": 81,
1062 | "rating": 91,
1063 | "info": "",
1064 | "ratings": [
1065 | {
1066 | "username": "3******c",
1067 | "rateTime": 1469281964000,
1068 | "rateType": 0,
1069 | "text": "",
1070 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
1071 | },
1072 | {
1073 | "username": "2******3",
1074 | "rateTime": 1469271264000,
1075 | "rateType": 0,
1076 | "text": "",
1077 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
1078 | },
1079 | {
1080 | "username": "3******b",
1081 | "rateTime": 1469261964000,
1082 | "rateType": 0,
1083 | "text": "",
1084 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
1085 | }
1086 | ],
1087 | "icon": "http://fuss10.elemecdn.com/9/b5/469d8854f9a3a03797933fd01398bjpeg.jpeg?imageView2/1/w/114/h/114",
1088 | "image": "http://fuss10.elemecdn.com/9/b5/469d8854f9a3a03797933fd01398bjpeg.jpeg?imageView2/1/w/750/h/750"
1089 | },
1090 | {
1091 | "foodId": 94,
1092 | "name": "鲜蔬菌菇粥",
1093 | "price": 11,
1094 | "oldPrice": "",
1095 | "description": "咸粥",
1096 | "sellCount": 56,
1097 | "rating": 100,
1098 | "info": "",
1099 | "ratings": [
1100 | {
1101 | "username": "3******c",
1102 | "rateTime": 1469281964000,
1103 | "rateType": 0,
1104 | "text": "",
1105 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
1106 | },
1107 | {
1108 | "username": "2******3",
1109 | "rateTime": 1469271264000,
1110 | "rateType": 0,
1111 | "text": ""
1112 | },
1113 | {
1114 | "username": "3******b",
1115 | "rateTime": 1469261964000,
1116 | "rateType": 0,
1117 | "text": "",
1118 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
1119 | }
1120 | ],
1121 | "icon": "http://fuss10.elemecdn.com/e/a3/5317c68dd618929b6ac05804e429ajpeg.jpeg?imageView2/1/w/114/h/114",
1122 | "image": "http://fuss10.elemecdn.com/e/a3/5317c68dd618929b6ac05804e429ajpeg.jpeg?imageView2/1/w/750/h/750"
1123 | },
1124 | {
1125 | "foodId": 95,
1126 | "name": "田园蔬菜粥",
1127 | "price": 10,
1128 | "oldPrice": "",
1129 | "description": "咸粥",
1130 | "sellCount": 33,
1131 | "rating": 100,
1132 | "info": "",
1133 | "ratings": [
1134 | {
1135 | "username": "3******c",
1136 | "rateTime": 1469281964000,
1137 | "rateType": 0,
1138 | "text": "",
1139 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
1140 | },
1141 | {
1142 | "username": "2******3",
1143 | "rateTime": 1469271264000,
1144 | "rateType": 0,
1145 | "text": "",
1146 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
1147 | },
1148 | {
1149 | "username": "3******b",
1150 | "rateTime": 1469261964000,
1151 | "rateType": 0,
1152 | "text": "",
1153 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png"
1154 | }
1155 | ],
1156 | "icon": "http://fuss10.elemecdn.com/a/94/7371083792c19df00e546b29e344cjpeg.jpeg?imageView2/1/w/114/h/114",
1157 | "image": "http://fuss10.elemecdn.com/a/94/7371083792c19df00e546b29e344cjpeg.jpeg?imageView2/1/w/750/h/750"
1158 | }
1159 | ]
1160 | }
1161 | ],
1162 | "ratings": [
1163 | {
1164 | "username": "3******c",
1165 | "rateTime": 1469281964000,
1166 | "deliveryTime": 30,
1167 | "score": 5,
1168 | "rateType": 0,
1169 | "text": "不错,粥很好喝,我经常吃这一家,非常赞,以后也会常来吃,强烈推荐.",
1170 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1171 | "recommend": [
1172 | "南瓜粥",
1173 | "皮蛋瘦肉粥",
1174 | "扁豆焖面",
1175 | "娃娃菜炖豆腐",
1176 | "牛肉馅饼"
1177 | ]
1178 | },
1179 | {
1180 | "username": "2******3",
1181 | "rateTime": 1469271264000,
1182 | "deliveryTime": "",
1183 | "score": 4,
1184 | "rateType": 0,
1185 | "deliveryTime": "",
1186 | "text": "服务态度不错",
1187 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1188 | "recommend": [
1189 | "扁豆焖面"
1190 | ]
1191 | },
1192 | {
1193 | "username": "3******b",
1194 | "rateTime": 1469261964000,
1195 | "score": 3,
1196 | "rateType": 1,
1197 | "text": "",
1198 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1199 | "recommend": []
1200 | },
1201 | {
1202 | "username": "1******c",
1203 | "rateTime": 1469261864000,
1204 | "deliveryTime": 20,
1205 | "score": 5,
1206 | "rateType": 0,
1207 | "text": "良心店铺",
1208 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1209 | "recommend": []
1210 | },
1211 | {
1212 | "username": "2******d",
1213 | "rateTime": 1469251264000,
1214 | "deliveryTime": 10,
1215 | "score": 4,
1216 | "rateType": 0,
1217 | "text": "",
1218 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1219 | "recommend": []
1220 | },
1221 | {
1222 | "username": "9******0",
1223 | "rateTime": 1469241964000,
1224 | "deliveryTime": 70,
1225 | "score": 1,
1226 | "rateType": 1,
1227 | "text": "送货速度蜗牛一样",
1228 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1229 | "recommend": []
1230 | },
1231 | {
1232 | "username": "d******c",
1233 | "rateTime": 1469231964000,
1234 | "deliveryTime": 30,
1235 | "score": 5,
1236 | "rateType": 0,
1237 | "text": "很喜欢的粥店",
1238 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1239 | "recommend": []
1240 | },
1241 | {
1242 | "username": "2******3",
1243 | "rateTime": 1469221264000,
1244 | "deliveryTime": "",
1245 | "score": 4,
1246 | "rateType": 0,
1247 | "text": "量给的还可以",
1248 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1249 | "recommend": []
1250 | },
1251 | {
1252 | "username": "3******8",
1253 | "rateTime": 1469211964000,
1254 | "deliveryTime": "",
1255 | "score": 3,
1256 | "rateType": 1,
1257 | "text": "",
1258 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1259 | "recommend": []
1260 | },
1261 | {
1262 | "username": "a******a",
1263 | "rateTime": 1469201964000,
1264 | "deliveryTime": "",
1265 | "score": 4,
1266 | "rateType": 0,
1267 | "text": "孩子喜欢吃这家",
1268 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1269 | "recommend": [
1270 | "南瓜粥"
1271 | ]
1272 | },
1273 | {
1274 | "username": "3******3",
1275 | "rateTime": 1469191264000,
1276 | "deliveryTime": "",
1277 | "score": 4,
1278 | "rateType": 0,
1279 | "text": "粥挺好吃的",
1280 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1281 | "recommend": []
1282 | },
1283 | {
1284 | "username": "t******b",
1285 | "rateTime": 1469181964000,
1286 | "deliveryTime": "",
1287 | "score": 3,
1288 | "rateType": 1,
1289 | "text": "",
1290 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1291 | "recommend": []
1292 | },
1293 | {
1294 | "username": "f******c",
1295 | "rateTime": 1469171964000,
1296 | "deliveryTime": 15,
1297 | "score": 5,
1298 | "rateType": 0,
1299 | "text": "送货速度很快",
1300 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1301 | "recommend": []
1302 | },
1303 | {
1304 | "username": "k******3",
1305 | "rateTime": 1469161264000,
1306 | "deliveryTime": "",
1307 | "score": 4,
1308 | "rateType": 0,
1309 | "text": "",
1310 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1311 | "recommend": []
1312 | },
1313 | {
1314 | "username": "u******b",
1315 | "rateTime": 1469151964000,
1316 | "deliveryTime": "",
1317 | "score": 4,
1318 | "rateType": 0,
1319 | "text": "下雨天给快递小哥点个赞",
1320 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1321 | "recommend": []
1322 | },
1323 | {
1324 | "username": "s******c",
1325 | "rateTime": 1469141964000,
1326 | "deliveryTime": "",
1327 | "score": 4,
1328 | "rateType": 0,
1329 | "text": "好",
1330 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1331 | "recommend": []
1332 | },
1333 | {
1334 | "username": "z******3",
1335 | "rateTime": 1469131264000,
1336 | "deliveryTime": "",
1337 | "score": 5,
1338 | "rateType": 0,
1339 | "text": "吃了还想再吃",
1340 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1341 | "recommend": []
1342 | },
1343 | {
1344 | "username": "n******b",
1345 | "rateTime": 1469121964000,
1346 | "deliveryTime": "",
1347 | "score": 3,
1348 | "rateType": 1,
1349 | "text": "发票开的不对",
1350 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1351 | "recommend": []
1352 | },
1353 | {
1354 | "username": "m******c",
1355 | "rateTime": 1469111964000,
1356 | "deliveryTime": 30,
1357 | "score": 5,
1358 | "rateType": 0,
1359 | "text": "好吃",
1360 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1361 | "recommend": []
1362 | },
1363 | {
1364 | "username": "l******3",
1365 | "rateTime": 1469101264000,
1366 | "deliveryTime": 40,
1367 | "score": 5,
1368 | "rateType": 0,
1369 | "text": "还不错吧",
1370 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1371 | "recommend": []
1372 | },
1373 | {
1374 | "username": "3******o",
1375 | "rateTime": 1469091964000,
1376 | "deliveryTime": "",
1377 | "score": 2,
1378 | "rateType": 1,
1379 | "text": "",
1380 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1381 | "recommend": []
1382 | },
1383 | {
1384 | "username": "3******p",
1385 | "rateTime": 1469081964000,
1386 | "deliveryTime": "",
1387 | "score": 4,
1388 | "rateType": 0,
1389 | "text": "很喜欢的粥",
1390 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1391 | "recommend": []
1392 | },
1393 | {
1394 | "username": "o******k",
1395 | "rateTime": 1469071264000,
1396 | "deliveryTime": "",
1397 | "score": 5,
1398 | "rateType": 0,
1399 | "text": "",
1400 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1401 | "recommend": []
1402 | },
1403 | {
1404 | "username": "k******b",
1405 | "rateTime": 1469061964000,
1406 | "deliveryTime": "",
1407 | "score": 4,
1408 | "rateType": 0,
1409 | "text": "",
1410 | "avatar": "http://static.galileo.xiaojukeji.com/static/tms/default_header.png",
1411 | "recommend": []
1412 | }
1413 | ]
1414 | }
--------------------------------------------------------------------------------