Commit 2d10b0723ec0fd528c1fe21c04e85e2b1bab2dc6
1 parent
40a722140b
Exists in
master
major tweak, include dupecheck
Showing 1 changed file with 27 additions and 16 deletions Side-by-side Diff
partner-masterpulsa-voucher.js
... | ... | @@ -11,7 +11,7 @@ var logger; |
11 | 11 | var options; |
12 | 12 | var redisClient; |
13 | 13 | |
14 | -var adviceDelay = 10000; | |
14 | +var adviceDelay = 30000; | |
15 | 15 | |
16 | 16 | function createRedisClient() { |
17 | 17 | redisClient = redis.createClient(config.globals.redis_port, config.globals.redis_host); |
... | ... | @@ -42,26 +42,37 @@ function getRedisKey(task) { |
42 | 42 | return config.globals.gateway_name + '.tid:' + task.requestId; |
43 | 43 | } |
44 | 44 | |
45 | -function putTaskToRedis(task) { | |
46 | - var redisKey = getRedisKey(task); | |
47 | - var taskInJSON = JSON.stringify(task); | |
48 | - | |
49 | - redisClient.set(redisKey, taskInJSON); | |
50 | - redisClient.expire(redisKey, 3600*24*7); | |
51 | -} | |
52 | - | |
53 | 45 | function topupRequest(task, retry) { |
54 | - var redisKey = getRedisKey(task); | |
46 | + var key = 'DUPCHECK.gw:' + config.globals.gateway_name + '.prod:' + task.remoteProduct + '.dest:' + task.destination + '.date:' + strftime('%Y%m%d', new Date); | |
47 | + redisClient.get(key, function(err, data) { | |
48 | + if (err) { | |
49 | + callbackReport(task.requestId, '40', 'Gagal cek anti transaksi duplikat (redis error)'); | |
50 | + return; | |
51 | + } | |
55 | 52 | |
56 | - redisClient.get(redisKey, function(err, result) { | |
57 | - if (err || !result) { | |
53 | + if (!data) { | |
54 | + logger.verbose('Belum ada trx dengan tujuan dan denom yang sama pada hari ini. Lanjutkan.'); | |
58 | 55 | |
59 | - //logger.info('Redis error or not found', {redisKey: redisKey, error: err, result: result}); | |
60 | - putTaskToRedis(task); | |
61 | - voucherPay(task); | |
56 | + redisClient.set(key, JSON.stringify(task)); | |
57 | + redisClient.expire(key, 3600 * 24 * 2); | |
58 | + | |
59 | + voucherPay(task, retry); | |
62 | 60 | |
63 | 61 | } else { |
64 | - advice(task); | |
62 | + | |
63 | + try { | |
64 | + var taskOnRedis = JSON.parse(data); | |
65 | + if (task.requestId == taskOnRedis.requestId) { | |
66 | + logger.verbose('Sudah ada trx dengan tujuan dan denom yg sama, requestId jg sama. Lanjutkan dengan advice.') | |
67 | + advice(task, retry); | |
68 | + } else { | |
69 | + logger.verbose('Sudah ada trx dengan tujuan dan denom yg sama, requestId tidak sama. Batalkan.') | |
70 | + callbackReport(task.requestId, '55', 'Transaksi duplikat') | |
71 | + } | |
72 | + } | |
73 | + catch(errJSONParse) { | |
74 | + callbackReport(task.requestId, '68', "error parsing json"); | |
75 | + } | |
65 | 76 | } |
66 | 77 | }); |
67 | 78 | } |