Showing
2 changed files
with
241 additions
and
1 deletions
... | @@ -15,6 +15,7 @@ var folderRouter = require('./routes/folders'); | ... | @@ -15,6 +15,7 @@ var folderRouter = require('./routes/folders'); |
15 | var quickRouter = require('./routes/quick'); | 15 | var quickRouter = require('./routes/quick'); |
16 | var favoritesRouter = require('./routes/favorites'); | 16 | var favoritesRouter = require('./routes/favorites'); |
17 | var shareRouter = require('./routes/share'); | 17 | var shareRouter = require('./routes/share'); |
18 | +var contactRouter = require('./routes/contact'); | ||
18 | 19 | ||
19 | 20 | ||
20 | var passport = require('passport'); | 21 | var passport = require('passport'); |
... | @@ -67,6 +68,7 @@ app.use('/api/share', shareRouter); | ... | @@ -67,6 +68,7 @@ app.use('/api/share', shareRouter); |
67 | //app.use('/users', usersRouter); | 68 | //app.use('/users', usersRouter); |
68 | app.use('/api/file', fileRouter); | 69 | app.use('/api/file', fileRouter); |
69 | app.use('/api/quick', quickRouter); | 70 | app.use('/api/quick', quickRouter); |
71 | +app.use('/api/contact', contactRouter); | ||
70 | 72 | ||
71 | // catch 404 and forward to error handler | 73 | // catch 404 and forward to error handler |
72 | app.use(function(req, res, next) { | 74 | app.use(function(req, res, next) { |
... | @@ -84,4 +86,4 @@ app.use(function(err, req, res, next) { | ... | @@ -84,4 +86,4 @@ app.use(function(err, req, res, next) { |
84 | res.render('error'); | 86 | res.render('error'); |
85 | }); | 87 | }); |
86 | 88 | ||
87 | -module.exports = app; | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
89 | +module.exports = app; | ... | ... |
backend/routes/contact.js
0 → 100644
1 | +var express = require('express'); | ||
2 | +var router = express.Router(); | ||
3 | +const XLSX = require('xlsx'); | ||
4 | +var multer = require('multer'); | ||
5 | +var fs = require('fs'); | ||
6 | +var xl = require('excel4node'); | ||
7 | +// var pool = require('./../routes/modules/database'); | ||
8 | + | ||
9 | +//파일 저장위치와 파일이름 설정 | ||
10 | +var storage = multer.diskStorage({ | ||
11 | + destination: function (req, file, cb) { | ||
12 | + cb(null, 'public/upload'); | ||
13 | + }, | ||
14 | + //파일이름 설정 | ||
15 | + filename: function (req, file, cb) { | ||
16 | + cb(null, file.originalname); | ||
17 | + } | ||
18 | +}) | ||
19 | + | ||
20 | +//파일 업로드 모듈 | ||
21 | +var upload = multer({ storage: storage }) | ||
22 | + | ||
23 | +// 연락처 백업, 삭제, 검색 | ||
24 | +/* | ||
25 | +contact_upload : 연락처 파일 업로드 모듈 | ||
26 | +input : 사용자가 연락처를 저장해놓은 csv 혹은 xlsx 파일 | ||
27 | +output : 연락처 저장 성공 여부 | ||
28 | +*/ | ||
29 | +router.post('/contact_upload', upload.single('file'), function(req, res, next) { | ||
30 | + // console.log(req); | ||
31 | + var user_id = req.query.id; | ||
32 | + var file = req.file; | ||
33 | + var workbook = XLSX.readFile('public/upload/contact.xlsx'); | ||
34 | + var firstWSheetName = workbook.SheetNames[0]; | ||
35 | + var firstWSheet = workbook.Sheets[firstWSheetName]; | ||
36 | + var name = []; | ||
37 | + var phone = []; | ||
38 | + var email = []; | ||
39 | + var added_date = []; | ||
40 | + var length = firstWSheet['!ref'][4]; | ||
41 | + var temp =""; | ||
42 | + | ||
43 | + var sqlquery = "insert into contact(user_id,name,email,phone,added_date) values"; | ||
44 | + for(var i=1;i<length;i++) | ||
45 | + { | ||
46 | + for(var j=0;j<4;j++) | ||
47 | + { | ||
48 | + if(j==0){ | ||
49 | + temp = "A" + (i+1); | ||
50 | + name.push(firstWSheet[temp].v); | ||
51 | + sqlquery += ' ("' + user_id + '","'+name[i-1]; | ||
52 | + } | ||
53 | + else if(j==1){ | ||
54 | + temp = "B" + (i+1); | ||
55 | + phone.push(firstWSheet[temp].v); | ||
56 | + sqlquery += '","' + phone[i-1]; | ||
57 | + } | ||
58 | + else if(j==2){ | ||
59 | + temp = "C" + (i+1); | ||
60 | + email.push(firstWSheet[temp].v); | ||
61 | + sqlquery += '","' + email[i-1]; | ||
62 | + } | ||
63 | + else if(j==3){ | ||
64 | + temp = "D" + (i+1); | ||
65 | + added_date.push(firstWSheet[temp].v); | ||
66 | + sqlquery += '","' + added_date[i-1] + '"),'; | ||
67 | + } | ||
68 | + } | ||
69 | + } | ||
70 | + sqlquery = sqlquery.substring(0,sqlquery.length-1); | ||
71 | + connection.query(sqlquery, function (err, rows) { | ||
72 | + if (err) { | ||
73 | + console.log("upload contact failed"); | ||
74 | + throw err; | ||
75 | + } else { | ||
76 | + console.log(rows); | ||
77 | + var filename = 'public/upload/contact.xlsx'; | ||
78 | + fs.unlink(filename, function (err) { | ||
79 | + if (err) throw err; | ||
80 | + console.log('file deleted'); | ||
81 | + }) | ||
82 | + res.status(200).send('upload'); | ||
83 | + } | ||
84 | + }); | ||
85 | +}); | ||
86 | + | ||
87 | +/* | ||
88 | +contact_download : 연락처 파일 다운로드 모듈 | ||
89 | +input : 사용자의 연락처 다운로드 요청 | ||
90 | +output : 연락처 다운로드 성공 여부 및 csv, xlsx 파일 | ||
91 | +*/ | ||
92 | +router.post('/contact_download', function(req, res, next) { | ||
93 | + | ||
94 | + var filename = 'public/upload/contactdownload.xlsx'; | ||
95 | + fs.exists(filename, function (exists) { | ||
96 | + console.log(exists); | ||
97 | + if(exists == true) | ||
98 | + { | ||
99 | + fs.unlink(filename, function (err) { | ||
100 | + if (err) throw err; | ||
101 | + console.log('file deleted'); | ||
102 | + }); | ||
103 | + } | ||
104 | + }); | ||
105 | + | ||
106 | + // Create a new instance of a Workbook class | ||
107 | + var wb = new xl.Workbook(); | ||
108 | + | ||
109 | + // Add Worksheets to the workbook | ||
110 | + var ws = wb.addWorksheet('Sheet 1'); | ||
111 | + | ||
112 | + ws.cell(1, 1) | ||
113 | + .string('name'); | ||
114 | + ws.cell(1, 2) | ||
115 | + .string('phone'); | ||
116 | + ws.cell(1, 3) | ||
117 | + .string('email'); | ||
118 | + ws.cell(1, 4) | ||
119 | + .string('added_date'); | ||
120 | + | ||
121 | + var user_id = req.query.id; | ||
122 | + var sqlquery = "SELECT * FROM contact WHERE user_id = ?"; | ||
123 | + connection.query(sqlquery, [user_id], function (err, rows) { | ||
124 | + if (err) { | ||
125 | + console.log("download contact failed"); | ||
126 | + throw err; | ||
127 | + } else { | ||
128 | + if(rows.length != 0) | ||
129 | + { | ||
130 | + for(var i=0;i<rows.length;i++) | ||
131 | + { | ||
132 | + ws.cell(i+2, 1).string(rows[i].name); | ||
133 | + ws.cell(i+2, 2).string(rows[i].phone); | ||
134 | + ws.cell(i+2, 3).string(rows[i].email); | ||
135 | + ws.cell(i+2, 4).string(rows[i].added_date); | ||
136 | + } | ||
137 | + } | ||
138 | + wb.write('public/upload/contactdownload.xlsx'); | ||
139 | + var file = __dirname + '/public/upload/contactdownload.xlsx'; | ||
140 | + // console.log(file); | ||
141 | + res.download(file); | ||
142 | + } | ||
143 | + | ||
144 | + }); | ||
145 | +}); | ||
146 | + | ||
147 | +/* | ||
148 | +contact_create : 연락처 생성 모듈 | ||
149 | +input : 사용자의 연락처 생성 요청 | ||
150 | +output : 연락처 생성 성공 여부 | ||
151 | +사용자한테 연락처 정보 받아오기 | ||
152 | +*/ | ||
153 | +router.get('/contact_create', function(req, res, next) { | ||
154 | + //insert into contact(name) value ("daso") | ||
155 | +}); | ||
156 | + | ||
157 | +/* | ||
158 | +contact_delete : 연락처 삭제 모듈 | ||
159 | +input : 사용자의 연락처 삭제 요청 | ||
160 | +output : 연락처 삭제 성공 여부 | ||
161 | +*/ | ||
162 | +router.post('/contact_delete', function(req, res, next) { | ||
163 | + // console.log("req.query",req.query); | ||
164 | + var user_id = req.query.id; | ||
165 | + var sqlquery = "DELETE FROM contact WHERE user_id = ?"; | ||
166 | + connection.query(sqlquery, [user_id], function (err, rows) { | ||
167 | + if (err) { | ||
168 | + console.log("delete contact failed"); | ||
169 | + throw err; | ||
170 | + } else { | ||
171 | + // console.log(rows);s | ||
172 | + res.status(200).send("delete"); | ||
173 | + } | ||
174 | + | ||
175 | + }); | ||
176 | +}); | ||
177 | + | ||
178 | +/* | ||
179 | +contact_search : 연락처 검색 모듈 | ||
180 | +input : 사용자가 이름, 전화번호, 이메일 중 하나를 검색 | ||
181 | +output : 검색을 요청한 데이터에 부합하는 연락처를 찾았다면 출력 | ||
182 | +*/ | ||
183 | +router.post('/contact_search', function(req, res, next) { | ||
184 | + console.log("req.query",req.query); | ||
185 | + var user_id = req.query.id; | ||
186 | + var type = req.query.type; | ||
187 | + var info = ""; | ||
188 | + if(type == "name") | ||
189 | + { | ||
190 | + info = req.query.name; | ||
191 | + var sqlquery = "SELECT * FROM contact WHERE user_id = ? and name = ?"; | ||
192 | + } | ||
193 | + else if(type == "phone") | ||
194 | + { | ||
195 | + info = req.query.phone; | ||
196 | + var sqlquery = "SELECT * FROM contact WHERE user_id = ? and phone = ?"; | ||
197 | + } | ||
198 | + else if(type == "email") | ||
199 | + { | ||
200 | + info = req.query.email; | ||
201 | + var sqlquery = "SELECT * FROM contact WHERE user_id = ? and email = ?"; | ||
202 | + } | ||
203 | + console.log(sqlquery); | ||
204 | + connection.query(sqlquery, [user_id,info], function (err, rows) { | ||
205 | + if (err) { | ||
206 | + console.log("search contact failed"); | ||
207 | + throw err; | ||
208 | + } else { | ||
209 | + console.log(rows); | ||
210 | + res.status(200).send({contact_list : rows}); | ||
211 | + } | ||
212 | + | ||
213 | + }); | ||
214 | +}); | ||
215 | + | ||
216 | +/* | ||
217 | +contact_list : 연락처 출력 모듈 | ||
218 | +input : 사용자의 연락처 출력 요청 | ||
219 | +output : 저장된 연락처 목록 출력 | ||
220 | +*/ | ||
221 | +router.post('/contact_list', function(req, res, next) { | ||
222 | + console.log("req.query",req.query); | ||
223 | + var user_id = req.query.id; | ||
224 | + var sqlquery = "SELECT * FROM contact WHERE user_id = ?"; | ||
225 | + connection.query(sqlquery, [user_id], function (err, rows) { | ||
226 | + if (err) { | ||
227 | + console.log("select contact failed"); | ||
228 | + throw err; | ||
229 | + } else { | ||
230 | + console.log(rows); | ||
231 | + res.status(200).send({contact_list : rows}); | ||
232 | + } | ||
233 | + | ||
234 | + }); | ||
235 | +}); | ||
236 | + | ||
237 | + | ||
238 | +module.exports = router; |
-
Please register or login to post a comment