mirror of
https://github.com/A6-9V/MQL5-Google-Onedrive.git
synced 2026-04-11 10:30:58 +00:00
345 lines
9.8 KiB
JavaScript
345 lines
9.8 KiB
JavaScript
var express = require('express'),
|
|
async = require('async'),
|
|
pg = require('pg'),
|
|
cookieParser = require('cookie-parser'),
|
|
requestify = require('requestify');
|
|
(bodyParser = require('body-parser')),
|
|
(methodOverride = require('method-override')),
|
|
(app = express()),
|
|
(server = require('http').Server(app)),
|
|
(io = require('socket.io')(server)),
|
|
(serveStatic = require('serve-static')),
|
|
(path = require('path'))
|
|
var multiparty = require('multiparty')
|
|
const axios = require('axios')
|
|
var fs = require('fs')
|
|
|
|
io.set('transports', ['polling'])
|
|
|
|
var port = process.env.PORT || 4000
|
|
|
|
io.sockets.on('connection', function (socket) {
|
|
socket.emit('message', { text: 'Welcome!' })
|
|
|
|
socket.on('subscribe', function (data) {
|
|
socket.join(data.channel)
|
|
})
|
|
})
|
|
|
|
async.retry(
|
|
{ times: 1000, interval: 10000 },
|
|
function (callback) {
|
|
pg.connect('postgres://postgres@statistics-service-db/postgres', function (
|
|
err,
|
|
client,
|
|
done
|
|
) {
|
|
if (err) {
|
|
console.error('Waiting for db')
|
|
}
|
|
callback(err, client)
|
|
})
|
|
},
|
|
function (err, client) {
|
|
if (err) {
|
|
return console.err('Giving up')
|
|
}
|
|
console.log('Connected to db')
|
|
getVotes(client)
|
|
}
|
|
)
|
|
|
|
function getVotes (client) {
|
|
client.query(
|
|
'SELECT vote, COUNT(id) AS count FROM votes GROUP BY vote',
|
|
[],
|
|
function (err, result) {
|
|
if (err) {
|
|
console.error('Error performing query: ' + err)
|
|
} else {
|
|
var votes = collectVotesFromResult(result)
|
|
io.sockets.emit('scores', JSON.stringify(votes))
|
|
}
|
|
|
|
setTimeout(function () {
|
|
getVotes(client)
|
|
}, 10000)
|
|
}
|
|
)
|
|
}
|
|
|
|
function collectVotesFromResult (result) {
|
|
var votes = { a: 0, b: 0 }
|
|
|
|
result.rows.forEach(function (row) {
|
|
votes[row.vote] = parseInt(row.count)
|
|
})
|
|
|
|
return votes
|
|
}
|
|
app.use(serveStatic(__dirname + '/dist'))
|
|
app.use(cookieParser())
|
|
app.use(bodyParser())
|
|
app.use(methodOverride('X-HTTP-Method-Override'))
|
|
app.use(function (req, res, next) {
|
|
res.header('Access-Control-Allow-Origin', '*')
|
|
res.header(
|
|
'Access-Control-Allow-Headers',
|
|
'Origin, X-Requested-With, Content-Type, Accept'
|
|
)
|
|
res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS')
|
|
next()
|
|
})
|
|
|
|
server.listen(port, function () {
|
|
var port = server.address().port
|
|
console.log('App running on port ' + port)
|
|
})
|
|
|
|
app.get('/api/foodcategories', function (req, res) {
|
|
requestify
|
|
.get('http://product-service-api:8080/api/v1.0/BoatHouse/FoodCategories')
|
|
.then(function (response) {
|
|
console.log(response.body)
|
|
return res.send(response.body)
|
|
})
|
|
})
|
|
|
|
app.post('/api/foodcategory', function (req, res) {
|
|
requestify
|
|
.post(
|
|
'http://product-service-api:8080/api/v1.0/BoatHouse/FoodCategory',
|
|
req.body
|
|
)
|
|
.then(function (response) {
|
|
console.log(response.body)
|
|
return res.send(response.body)
|
|
})
|
|
})
|
|
|
|
app.put('/api/foodcategory', function (req, res) {
|
|
requestify
|
|
.put(
|
|
'http://product-service-api:8080/api/v1.0/BoatHouse/FoodCategory',
|
|
req.body
|
|
)
|
|
.then(function (response) {
|
|
console.log(response.body)
|
|
return res.send(response.body)
|
|
})
|
|
})
|
|
|
|
app.delete('/api/foodcategory', function (req, res) {
|
|
requestify
|
|
.delete(
|
|
'http://product-service-api:8080/api/v1.0/BoatHouse/FoodCategory?id=' +
|
|
req.query.id
|
|
)
|
|
.then(function (response) {
|
|
console.log(response.body)
|
|
return res.send(response.body)
|
|
})
|
|
})
|
|
|
|
app.get('/api/foods', function (req, res) {
|
|
requestify
|
|
.get('http://product-service-api:8080/api/v1.0/BoatHouse/Foods')
|
|
.then(function (response) {
|
|
console.log(response.body)
|
|
return res.send(response.body)
|
|
})
|
|
})
|
|
|
|
app.get('/api/food', function (req, res) {
|
|
requestify
|
|
.get(
|
|
'http://product-service-api:8080/api/v1.0/BoatHouse/Food?id=' +
|
|
req.query.id
|
|
)
|
|
.then(function (response) {
|
|
console.log(response.body)
|
|
return res.send(response.body)
|
|
})
|
|
})
|
|
|
|
app.post('/api/food', function (req, res) {
|
|
var form = new multiparty.Form()
|
|
form.parse(req, function (err, fields, files) {
|
|
// var postForm = new FormData();
|
|
let url = `http://product-service-api:8080/api/v1.0/BoatHouse/Food?菜品分类ID=${fields['菜品分类ID'][0]}&菜品名称=${fields['菜品名称'][0]}&菜品价格=${fields['菜品价格'][0]}&菜品描述=${fields['菜品描述'][0]}`
|
|
if (files['菜品图片'] !== undefined) {
|
|
var tempPath = files['菜品图片'][0].path
|
|
var tempFileNameList = tempPath.split('/')
|
|
var tempFileName = tempFileNameList[tempFileNameList.length - 1]
|
|
let nodeFile = fs.createReadStream(tempPath)
|
|
let outFilePath = './dist/foods/' + tempFileName
|
|
let dbPath = './foods/' + tempFileName
|
|
let outFile = fs.createWriteStream(outFilePath)
|
|
nodeFile.pipe(outFile)
|
|
url = `http://product-service-api:8080/api/v1.0/BoatHouse/Food?菜品分类ID=${fields['菜品分类ID'][0]}&菜品名称=${fields['菜品名称'][0]}&菜品价格=${fields['菜品价格'][0]}&菜品描述=${fields['菜品描述'][0]}&菜品图片=${dbPath}`
|
|
}
|
|
axios
|
|
.post(encodeURI(url))
|
|
.then(function (response) {
|
|
console.log(response.body)
|
|
return res.send(response.body)
|
|
})
|
|
.catch(function (res) {
|
|
console.log(res)
|
|
})
|
|
})
|
|
})
|
|
|
|
app.put('/api/food', function (req, res) {
|
|
var form = new multiparty.Form()
|
|
form.parse(req, function (err, fields, files) {
|
|
let url = `http://product-service-api:8080/api/v1.0/BoatHouse/Food?菜品ID=${fields['菜品ID'][0]}&菜品分类ID=${fields['菜品分类ID'][0]}&菜品名称=${fields['菜品名称'][0]}&菜品价格=${fields['菜品价格'][0]}&菜品描述=${fields['菜品描述'][0]}`
|
|
if (files['菜品图片'] !== undefined) {
|
|
var tempPath = files['菜品图片'][0].path
|
|
var tempFileNameList = tempPath.split('/')
|
|
var tempFileName = tempFileNameList[tempFileNameList.length - 1]
|
|
let nodeFile = fs.createReadStream(tempPath)
|
|
let outFilePath = './dist/foods/' + tempFileName
|
|
let dbPath = './foods/' + tempFileName
|
|
let outFile = fs.createWriteStream(outFilePath)
|
|
nodeFile.pipe(outFile)
|
|
url = `http://product-service-api:8080/api/v1.0/BoatHouse/Food?菜品ID=${fields['菜品ID'][0]}&菜品分类ID=${fields['菜品分类ID'][0]}&菜品名称=${fields['菜品名称'][0]}&菜品价格=${fields['菜品价格'][0]}&菜品描述=${fields['菜品描述'][0]}&&菜品图片=${dbPath}`
|
|
}
|
|
|
|
axios
|
|
.put(encodeURI(url))
|
|
.then(function (response) {
|
|
console.log(response.body)
|
|
return res.send(response.body)
|
|
})
|
|
.catch(function (res) {
|
|
console.log(res)
|
|
})
|
|
})
|
|
})
|
|
|
|
app.delete('/api/food', function (req, res) {
|
|
requestify
|
|
.delete(
|
|
'http://product-service-api:8080/api/v1.0/BoatHouse/Food?id=' +
|
|
req.query.id
|
|
)
|
|
.then(function (response) {
|
|
console.log(response.body)
|
|
return res.send(response.body)
|
|
})
|
|
})
|
|
|
|
app.get('/join/list', function (req, res) {
|
|
requestify
|
|
.get('http://product-service-api:8080/api/v1.0/join/list')
|
|
.then(function (response) {
|
|
console.log(response.body)
|
|
return res.send(response.body)
|
|
})
|
|
})
|
|
|
|
app.get('/api/users', function (req, res) {
|
|
requestify
|
|
.get('http://account-service-api:8080/api/v1.0/user/')
|
|
.then(function (response) {
|
|
console.log(response.body)
|
|
return res.send(response.body)
|
|
})
|
|
})
|
|
|
|
app.get('/api/user', function (req, res) {
|
|
requestify
|
|
.get('http://account-service-api:8080/api/v1.0/user/' + req.query.id)
|
|
.then(function (response) {
|
|
console.log(response.body)
|
|
return res.send(response.body)
|
|
})
|
|
})
|
|
|
|
app.post('/api/user', function (req, res) {
|
|
requestify
|
|
.post(
|
|
'http://account-service-api:8080/api/v1.0/user/',
|
|
req.body
|
|
)
|
|
.then(function (response) {
|
|
console.log(response.body)
|
|
return res.send(response.body)
|
|
})
|
|
})
|
|
|
|
app.put('/api/user', function (req, res) {
|
|
requestify
|
|
.put(
|
|
'http://account-service-api:8080/api/v1.0/user/',
|
|
req.body
|
|
)
|
|
.then(function (response) {
|
|
console.log(response.body)
|
|
return res.send(response.body)
|
|
})
|
|
})
|
|
|
|
app.delete('/api/user', function (req, res) {
|
|
requestify
|
|
.delete('http://account-service-api:8080/api/v1.0/user/delete/' + req.query.id)
|
|
.then(function (response) {
|
|
console.log(response.body)
|
|
return res.send(response.body)
|
|
})
|
|
})
|
|
|
|
app.get("/orders/pending", function(req, res) {
|
|
requestify
|
|
.get("http://product-service-api:8080/api/v1.0/orders/pending")
|
|
.then(function(response) {
|
|
console.log(response.body);
|
|
return res.send(response.body);
|
|
});
|
|
});
|
|
|
|
app.put("/orders/confirm", function(req, res) {
|
|
requestify
|
|
.put("http://product-service-api:8080/api/v1.0/orders/confirm", req.body)
|
|
.then(function(response) {
|
|
console.log(response.body);
|
|
return res.send(response.body);
|
|
});
|
|
});
|
|
|
|
app.put("/orders/refuse", function(req, res) {
|
|
requestify
|
|
.put("http://product-service-api:8080/api/v1.0/orders/refuse", req.body)
|
|
.then(function(response) {
|
|
console.log(response.body);
|
|
return res.send(response.body);
|
|
});
|
|
});
|
|
|
|
app.get("/api/intro/intro_page", function(req, res) {
|
|
requestify
|
|
.get("http://product-service-api:8080/api/v1.0/intro/intro_page/" + req.query.page_id)
|
|
.then(function(response) {
|
|
console.log(response.body);
|
|
return res.send(response.body);
|
|
});
|
|
});
|
|
|
|
app.post("/api/intro/intro_page", function(req, res) {
|
|
requestify
|
|
.put("http://product-service-api:8080/api/v1.0/intro/intro_page", req.body)
|
|
.then(function(response) {
|
|
console.log(response.body);
|
|
return res.send(response.body);
|
|
});
|
|
});
|
|
|
|
app.put("/api/intro/intro_page", function(req, res) {
|
|
requestify
|
|
.put("http://product-service-api:8080/api/v1.0/intro/intro_page", req.body)
|
|
.then(function(response) {
|
|
console.log(response.body);
|
|
return res.send(response.body);
|
|
});
|
|
});
|