Commit 2d10b0723ec0fd528c1fe21c04e85e2b1bab2dc6

Authored by Adhidarma Hadiwinoto
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 }