vizCard.js
2.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
'use strict';
var express = require('express');
var router = express.Router();
const request = require('request');
var parseJson = require('xml-js');
var custom_log = require('../../config/logger');
var config = require('../../config/config');
var stat = require('../../utils/SutisStat');
var alarm = require('../../utils/SutisAlarm');
var detail = require('../../utils/SutisDetail');
var logger = require('../../utils/SutisLogSummary');
var _url = `http://localhost:8080`
router.get('/',async function(req, res, next) {
var cmd = 'vizCard'
var requestXml = `<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/">
<soap:Header/>
<soap:Body>
<tem:SearchCustomer>
<tem:username>axviz</tem:username>
<tem:password>1234</tem:password>
<tem:systemName>30</tem:systemName>
<tem:queryType>1</tem:queryType>
<tem:cardId>${req.query.id}</tem:cardId>
</tem:SearchCustomer>
</soap:Body>
</soap:Envelope>`
console.log(requestXml);
// console.log(req.query.fields)
const result = await asyncRequest({
url : _url,
body : requestXml,
method : 'POST'
});
// parseString(result.body, function (err, result1) {
// console.log(result1);
// });
var result1 = parseJson.xml2json(result.body, {compact: true, spaces: 4})
result1 = JSON.parse(result1)
result1 = result1['soap:Envelope']['soap:Body']['tem:SearchCustomerResponse']['tem:SearchCustomerResult']['tem:CustomerSearchResult'];
delete result1._comment;
var response = {};
if(req.query.fields){
var listFields = req.query.fields.split(",");
// console.log(listFields)
}
for(var key in result1){
var keyObj = capitalizeFirstLetter(key.replace('tem:',''))
// console.log(keyObj+' : '+result1[key]['_text']);
if(listFields){
if(listFields.includes(keyObj)){
response[keyObj] = result1[key]['_text'];
}
} else {
response[keyObj] = result1[key]['_text'];
}
}
stat.recv(cmd, '20000');
stat.retn(cmd, '20000');
res.status(200).json({
resultCode: '20000',
resultDescription: 'Success',
resultData: response
});
});
function capitalizeFirstLetter(string) {
return string.charAt(0).toLowerCase() + string.slice(1);
}
function asyncRequest (params = {}) {
return new Promise((resolve, reject) => {
request(params, function (error, response, body) {
if (error) {
reject(error);
} else {
resolve({
'body' : body,
'response': response
});
}
});
});
}
module.exports = router;