Commit b099a18e35cac9476b37c15416f591cadc1af47d
1 parent
7d42bee187
Exists in
master
coba save to mongodb
Showing 1 changed file with 154 additions and 3 deletions Side-by-side Diff
partner-sc.js
... | ... | @@ -9,13 +9,16 @@ var math = require('mathjs'); |
9 | 9 | var winston = require('winston'); |
10 | 10 | var cekstatus = require('./cekstatus.js'); |
11 | 11 | var mongoClient = require('mongodb').MongoClient; |
12 | -var mongodb; | |
12 | +var LRU = require('lru-cache'); | |
13 | 13 | |
14 | 14 | var config; |
15 | 15 | var httpServer; |
16 | 16 | var aaa; |
17 | 17 | var logger; |
18 | 18 | var callbackReport; |
19 | +var mongodb; | |
20 | + | |
21 | +var tasks = LRU(10000); | |
19 | 22 | |
20 | 23 | process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; |
21 | 24 | |
... | ... | @@ -23,7 +26,7 @@ var sleep_before_retry = 30000; |
23 | 26 | |
24 | 27 | var logTag = __filename.split('/').reverse()[0]; |
25 | 28 | |
26 | -unction initMongoClient() { | |
29 | +function initMongoClient() { | |
27 | 30 | if (!config.mongodb || !config.mongodb.url) { |
28 | 31 | return; |
29 | 32 | } |
... | ... | @@ -46,8 +49,153 @@ unction initMongoClient() { |
46 | 49 | |
47 | 50 | } |
48 | 51 | |
49 | -function topupRequest(task) { | |
52 | +function prepareResultData(result) { | |
53 | + var task; | |
54 | + | |
55 | + var data = {}; | |
56 | + data.gateway = config.globals.gateway_name; | |
57 | + | |
58 | + try { | |
59 | + data.requestId = result.reffid[0].trim(); | |
60 | + | |
61 | + var key = config.globals.gateway_name + '.rid:' + data.requestId; | |
62 | + task = tasks.get(key); | |
63 | + } | |
64 | + catch(err) { data.requestId = null; } | |
65 | + | |
66 | + try { | |
67 | + data.status = result.ResultCode[0].trim(); | |
68 | + } | |
69 | + catch(err) { data.status = '68' } | |
70 | + | |
71 | + try { | |
72 | + data.rcmessage = result.ErrorMsg[0].trim(); | |
73 | + } | |
74 | + catch(err) { data.rcmessage = ''; } | |
75 | + | |
76 | + try { | |
77 | + data.resptext = ''; | |
78 | + } | |
79 | + catch(err) { data.resptext = ''; } | |
80 | + | |
81 | + try { | |
82 | + data.dt = task.timestamp; | |
83 | + } | |
84 | + catch(err) { | |
85 | + logger.warn('Exception when getting timestamp data, using current timestamp', {err: err, result: result, task: task}); | |
86 | + data.dt = strftime('%Y-%m-%d %H:%M:%S', new Date()); | |
87 | + } | |
88 | + | |
89 | + try { | |
90 | + data.namapel = result.nama_pel[0].trim(); | |
91 | + } | |
92 | + catch(err) { data.namapel = 'UNKNOWN'; } | |
93 | + | |
94 | + try { | |
95 | + data.msn = result.nsm[0].trim(); | |
96 | + } | |
97 | + catch(err) { data.msn = 'UNKNOWN'; } | |
98 | + | |
99 | + try { | |
100 | + data.idpel = result.idpel[0].trim(); | |
101 | + } | |
102 | + catch(err) { data.idpel = 'UNKNOWN'; } | |
103 | + | |
104 | + try { | |
105 | + data.tarifdaya = result.tarif[0].trim(); | |
106 | + } | |
107 | + catch(err) { data.tarifdaya = 'UNKNOWN'; } | |
108 | + | |
109 | + try { | |
110 | + data.admin = parseInt(result.adminfee[0].trim()); | |
111 | + } | |
112 | + catch(err) { data.admin = 0; } | |
113 | + | |
114 | + try { | |
115 | + data.adm = parseInt(result.adminfee[0].trim()); | |
116 | + } | |
117 | + catch(err) { data.adm = 0; } | |
118 | + | |
119 | + try { | |
120 | + data.hargatotal = parseInt(result.amount_trx[0].trim()); | |
121 | + } | |
122 | + catch(err) { data.hargatotal = 0; } | |
123 | + | |
124 | + try { | |
125 | + data.hargapelanggan = data.hargatotal - data.adm; | |
126 | + } | |
127 | + catch(err) { data.hargapelanggan = 0; } | |
128 | + | |
129 | + try { | |
130 | + data.jumlahkwh = result.jml_daya[0].trim(); | |
131 | + } | |
132 | + catch(err) { data.jumlahkwh = 0; } | |
133 | + | |
134 | + try { | |
135 | + data.token = result.token[0].trim(); | |
136 | + } | |
137 | + catch(err) { data.token = 0; } | |
138 | + | |
139 | + try { | |
140 | + data.ppn = result.ppn_fee[0].trim(); | |
141 | + } | |
142 | + catch(err) { data.ppn_fee = 0; } | |
143 | + | |
144 | + try { | |
145 | + data.ppj = result.ppj_fee[0].trim(); | |
146 | + } | |
147 | + catch(err) { data.ppj = 0; } | |
148 | + | |
149 | + try { | |
150 | + data.angsuran = result.angsuran_fee[0].trim(); | |
151 | + } | |
152 | + catch(err) { data.angsuran = 0; } | |
153 | + | |
154 | + try { | |
155 | + data.meterai = result.materai_fee[0].trim(); | |
156 | + } | |
157 | + catch(err) { data.materai_fee = 0; } | |
158 | + | |
159 | + return data; | |
160 | +} | |
161 | + | |
162 | +function saveTokenToMongoDb(result) { | |
163 | + if (!mongodb) { | |
164 | + return; | |
165 | + } | |
166 | + | |
167 | + if (!config.mongodb) { | |
168 | + return; | |
169 | + } | |
170 | + | |
171 | + if (!config.mongodb.collection) { | |
172 | + return; | |
173 | + } | |
174 | + | |
175 | + data = prepareResultData(result); | |
50 | 176 | |
177 | + try { | |
178 | + mongodb.collection(config.mongodb.collection).insertOne(data); | |
179 | + } | |
180 | + catch(err) { | |
181 | + logger.warn('Error when inserting data to mongodb', {err: err, data: data}); | |
182 | + } | |
183 | +} | |
184 | + | |
185 | +function putTaskToCache(task) { | |
186 | + var key = config.globals.gateway_name + '.rid:' + task.requestId; | |
187 | + | |
188 | + try { | |
189 | + tasks.set(key, task); | |
190 | + } | |
191 | + catch(err) { | |
192 | + logger.warn('Error writing to task to cache', {err: err, key: key, task: task}); | |
193 | + } | |
194 | +} | |
195 | + | |
196 | +function topupRequest(task) { | |
197 | + putTaskToCache(task); | |
198 | + | |
51 | 199 | var ts = strftime('%Y%m%d%H%M%S', new Date()); |
52 | 200 | |
53 | 201 | var data = |
... | ... | @@ -92,6 +240,8 @@ function topupRequest(task) { |
92 | 240 | var directResponse = result; |
93 | 241 | logger.info(directResponse); |
94 | 242 | |
243 | + saveTokenToMongoDb(directResponse.Result); | |
244 | + | |
95 | 245 | try { |
96 | 246 | var result_price; |
97 | 247 | try { |
... | ... | @@ -406,6 +556,7 @@ function start(_config, _callbackReport, options) { |
406 | 556 | } |
407 | 557 | |
408 | 558 | createHttpReportServer(); |
559 | + initMongoClient(); | |
409 | 560 | } |
410 | 561 | |
411 | 562 | exports.start = start; |