Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 4f8efb9

Browse files
committed
feat: init
0 parents commit 4f8efb9

File tree

157 files changed

+3387
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

157 files changed

+3387
-0
lines changed

‎backend/.gitignore‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
node_modules

‎backend/_db.json‎

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
{
2+
"user": [
3+
{
4+
"username": "admin",
5+
"password": "dc483e80a7a0bd9ef71d8cf973673924",
6+
"createDate": "2016年12月08日"
7+
},
8+
{
9+
"username": "test",
10+
"password": "e10adc3949ba59abbe56e057f20f883e",
11+
"createDate": "5/2/2017"
12+
}
13+
],
14+
"questionnaires": [
15+
{
16+
"title": "关于 Angular 2 在 2016 的发展现状调查",
17+
"starter": "关于在 2016 年 9 月中旬,Google 官方正式发布了 Angular 2 版本后的一些问卷调查",
18+
"ending": "",
19+
"state": 1,
20+
"questionList": [
21+
{
22+
"title": "如何评价 Angular 2.0 Final Release 的发布?",
23+
"type": 0,
24+
"answer": ""
25+
},
26+
{
27+
"title": "你会在下一个项目中考虑使用 Angular 2 吗?",
28+
"type": 1,
29+
"options": [
30+
{
31+
"key": 0,
32+
"value": ""
33+
},
34+
{
35+
"key": 1,
36+
"value": "不会"
37+
}
38+
],
39+
"answer": ""
40+
},
41+
{
42+
"title": "Angular 2 中数据状态管理方案有哪些?",
43+
"type": 0,
44+
"answer": ""
45+
},
46+
{
47+
"title": "Angular 2.0与 Angular1.x 版本相比,有哪些方面的改进呢?",
48+
"type": 3,
49+
"answer": ""
50+
},
51+
{
52+
"title": "Angular 2 能兼容到 IE 的什么版本?",
53+
"type": 2,
54+
"options": [
55+
{
56+
"key": 0,
57+
"value": "IE8 及以下版本"
58+
},
59+
{
60+
"key": 1,
61+
"value": "IE9"
62+
},
63+
{
64+
"key": 2,
65+
"value": "IE10"
66+
},
67+
{
68+
"key": 3,
69+
"value": "IE11"
70+
}
71+
],
72+
"answer": {
73+
"selected": []
74+
}
75+
},
76+
{
77+
"title": "TypeScript 会不会借着 Angular,成为主流编程语言?",
78+
"type": 1,
79+
"options": [
80+
{
81+
"key": 0,
82+
"value": ""
83+
},
84+
{
85+
"key": 1,
86+
"value": "不会"
87+
}
88+
],
89+
"answer": ""
90+
},
91+
{
92+
"title": "关于如何正确的学习 Angular 2 的思考,您有哪些建议 ?",
93+
"type": 0,
94+
"answer": ""
95+
}
96+
],
97+
"id": "eb988080-bdb1-11e6-9040-db60cb4931b1",
98+
"createDate": "2016年12月01日"
99+
},
100+
{
101+
"title": "关于 2016 谷歌开发者大会在北京和上海召开的相关问卷调查",
102+
"starter": "",
103+
"ending": "",
104+
"state": 1,
105+
"questionList": [],
106+
"id": "b0b4d4b0-bdb5-11e6-8153-af1293d9eace",
107+
"createDate": "2016年12月08日"
108+
},
109+
{
110+
"title": "Angular 2 对于 TypeScript 的生态建设影响的相关调查",
111+
"starter": "",
112+
"ending": "",
113+
"state": 0,
114+
"questionList": [],
115+
"id": "19655e30-bdb6-11e6-8153-af1293d9eace",
116+
"createDate": "2016年12月09日"
117+
},
118+
{
119+
"title": "fdsg",
120+
"starter": "efwdsg",
121+
"ending": "",
122+
"state": 0,
123+
"questionList": [
124+
{
125+
"title": "问题标题fewgewfefewgew",
126+
"type": 0,
127+
"answer": ""
128+
}
129+
],
130+
"id": "691dd290-3e99-11e7-95ac-21877dadc395",
131+
"createDate": "5/22/2017"
132+
}
133+
]
134+
}

‎backend/app.js‎

Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
const jsonServer = require('json-server');
2+
const uuid = require('node-uuid');
3+
const crypto = require('crypto');
4+
const bodyParser = require('body-parser');
5+
const low = require('lowdb');
6+
const storage = require('lowdb/file-async');
7+
8+
// import jsonServer from 'json-server';
9+
// import uuid from 'node-uuid';
10+
// import bodyParser from 'body-parser';
11+
12+
// import low from 'lowdb';
13+
// import storage from 'lowdb/file-async';
14+
15+
16+
//创建一个Express服务器
17+
const server = jsonServer.create();
18+
19+
//使用json-server默认选择的中间件(logger,static, cors和no-cache)
20+
server.use(jsonServer.defaults());
21+
22+
//使用body-parser中间件
23+
server.use(bodyParser.json());
24+
25+
26+
//数据文件
27+
const dbfile = process.env.prod === '1' ? 'db.json' : '_db.json';
28+
29+
//创建一个lowdb实例
30+
const db = low(dbfile, {storage});
31+
32+
33+
const md5 = str => crypto
34+
.createHash('md5')
35+
.update(str.toString())
36+
.digest('hex');
37+
38+
//添加新问卷
39+
server.post('/questionnaire/add', (req, res) => {
40+
const item = req.body;
41+
item.id = uuid.v1();
42+
item.createDate = new Date().toLocaleDateString();
43+
db('questionnaires').push(item).then(() => {
44+
res.json({'success':true, data:item});
45+
});
46+
});
47+
48+
//删除已有问卷
49+
server.get('/questionnaire/delete/:id', (req, res)=>{
50+
db('questionnaires').remove({id: req.params.id}).then(()=>{
51+
res.json({'success': true});
52+
});
53+
});
54+
55+
//获取所有问卷
56+
server.get('/questionnaires', (req, res) => {
57+
const questionnaires = db('questionnaires');
58+
res.json({'success':true, data:questionnaires});
59+
});
60+
61+
//根据id获取问卷数据
62+
server.get('/questionnaire/:id', (req, res) => {
63+
const questionnaire = db('questionnaires').find({id: req.params.id});
64+
res.json({'success':true, data:questionnaire});
65+
});
66+
67+
//更新已有问卷
68+
server.post('/questionnaire/update', (req, res) => {
69+
const item = req.body;
70+
db('questionnaires').chain().find({id:item.id}).assign(item).value();
71+
res.json({'success':true, data:item});
72+
});
73+
74+
//发布问卷
75+
server.post('/questionnaire/updateState', (req, res)=>{
76+
const params = req.body;
77+
const item = db('questionnaires').chain().find({id:params.id});
78+
item.assign({state:params.state}).value();
79+
res.json({'success':true, data:item});
80+
});
81+
82+
// get userinfo
83+
server.get('/user/:username', (req, res) => {
84+
const user = db('user')
85+
.find({
86+
username: req.params.username
87+
});
88+
89+
res.json({
90+
success: true,
91+
data: {
92+
username: user.username,
93+
createDate: user.createDate
94+
}
95+
});
96+
});
97+
98+
// register
99+
server.post('/user/add', (req, res) => {
100+
const item = req.body;
101+
const user = db('user')
102+
.find({
103+
username: item.username
104+
});
105+
if (user) {
106+
res.json({
107+
success: false,
108+
message: `"${item.username}" is exists`
109+
})
110+
} else {
111+
item.password = md5(item.password);
112+
item.createDate = new Date().toLocaleDateString();
113+
db('user')
114+
.push(item)
115+
.then(() => {
116+
res.json({
117+
success: true
118+
});
119+
});
120+
}
121+
});
122+
123+
// login
124+
server.post('/login', (req, res) => {
125+
const data = req.body || {};
126+
const username = data.username;
127+
const user = db('user')
128+
.find({
129+
username
130+
});
131+
132+
if (user && user.password === md5(data.password)) {
133+
// todo reset session
134+
res.json({
135+
success: true
136+
});
137+
} else {
138+
res.json({
139+
success: false,
140+
message: 'username or password error'
141+
});
142+
}
143+
});
144+
145+
//路由配置
146+
const router = jsonServer.router(dbfile);
147+
server.use('/api', router);
148+
149+
//启动服务,并监听5000端口
150+
server.listen(5000, () => {
151+
console.log('server is running at ', 5000, dbfile);
152+
});

‎backend/package.json‎

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"name": "server",
3+
"version": "1.0.0",
4+
"description": "",
5+
"main": "app.js",
6+
"scripts": {
7+
"test": "echo \"Error: no test specified\" && exit 1"
8+
},
9+
"author": "",
10+
"license": "ISC",
11+
"dependencies": {
12+
"body-parser": "^1.14.2",
13+
"json-server": "^0.8.7",
14+
"lowdb": "^0.12.2",
15+
"node-uuid": "^1.4.7"
16+
}
17+
}

‎frontend/.angular-cli.json‎

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
{
2+
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
3+
"project": {
4+
"name": "ng2demo-cli"
5+
},
6+
"apps": [
7+
{
8+
"root": "src",
9+
"outDir": "dist",
10+
"assets": [
11+
"assets",
12+
"favicon.ico"
13+
],
14+
"index": "index.html",
15+
"main": "main.ts",
16+
"polyfills": "polyfills.ts",
17+
"test": "test.ts",
18+
"tsconfig": "tsconfig.app.json",
19+
"testTsconfig": "tsconfig.spec.json",
20+
"prefix": "app",
21+
"styles": [
22+
"../node_modules/bootstrap/dist/css/bootstrap.min.css",
23+
"styles.css"
24+
],
25+
"scripts": [],
26+
"environmentSource": "environments/environment.ts",
27+
"environments": {
28+
"dev": "environments/environment.ts",
29+
"prod": "environments/environment.prod.ts"
30+
}
31+
}
32+
],
33+
"e2e": {
34+
"protractor": {
35+
"config": "./protractor.conf.js"
36+
}
37+
},
38+
"lint": [
39+
{
40+
"project": "src/tsconfig.app.json"
41+
},
42+
{
43+
"project": "src/tsconfig.spec.json"
44+
},
45+
{
46+
"project": "e2e/tsconfig.e2e.json"
47+
}
48+
],
49+
"test": {
50+
"karma": {
51+
"config": "./karma.conf.js"
52+
}
53+
},
54+
"defaults": {
55+
"styleExt": "css",
56+
"component": {}
57+
}
58+
}

‎frontend/.editorconfig‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Editor configuration, see http://editorconfig.org
2+
root = true
3+
4+
[*]
5+
charset = utf-8
6+
indent_style = space
7+
indent_size = 2
8+
insert_final_newline = true
9+
trim_trailing_whitespace = true
10+
11+
[*.md]
12+
max_line_length = off
13+
trim_trailing_whitespace = false

‎frontend/.gitignore‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
node_modules
2+
.vscode
3+
.DS_Store

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /