Subversion Repositories SmartDukaan

Rev

Rev 12428 | Rev 14606 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
9651 manish.sha 1
package in.shop2020;
2
 
3
import in.shop2020.model.v1.order.OrderSource;
10178 manish.sha 4
import in.shop2020.model.v1.order.OrderStatus;
9651 manish.sha 5
import in.shop2020.thrift.clients.TransactionClient;
12428 manish.sha 6
import in.shop2020.utils.GmailUtils;
10178 manish.sha 7
 
9651 manish.sha 8
import java.io.BufferedReader;
10565 manish.sha 9
import java.io.IOException;
9651 manish.sha 10
import java.io.InputStreamReader;
10178 manish.sha 11
import java.io.UnsupportedEncodingException;
9651 manish.sha 12
import java.text.SimpleDateFormat;
13
import java.util.ArrayList;
11518 manish.sha 14
import java.util.Calendar;
9651 manish.sha 15
import java.util.Date;
9883 manish.sha 16
import java.util.HashMap;
9651 manish.sha 17
import java.util.List;
9883 manish.sha 18
import java.util.Map;
10178 manish.sha 19
 
12428 manish.sha 20
import javax.mail.MessagingException;
21
 
10178 manish.sha 22
import org.apache.http.HttpResponse;
23
import org.apache.http.NameValuePair;
10565 manish.sha 24
import org.apache.http.client.ClientProtocolException;
10178 manish.sha 25
import org.apache.http.client.HttpClient;
26
import org.apache.http.client.entity.UrlEncodedFormEntity;
27
import org.apache.http.client.methods.HttpGet;
28
import org.apache.http.client.methods.HttpPost;
29
import org.apache.http.impl.client.DefaultHttpClient;
30
import org.apache.http.message.BasicNameValuePair;
9651 manish.sha 31
import org.json.JSONArray;
32
import org.json.JSONObject;
10178 manish.sha 33
import org.slf4j.LoggerFactory;
9651 manish.sha 34
import org.slf4j.Logger;
35
 
10178 manish.sha 36
 
37
 
9651 manish.sha 38
public class SnapdealOrderStatusReconciliation{
39
	private static Logger logger;
12428 manish.sha 40
 
41
	static String emailFromAddress;
42
	static String password;
43
	static GmailUtils mailer;
44
	static String sendTo[];
45
 
46
	static {
47
		emailFromAddress = "build-staging@shop2020.in";
48
		password = "shop2020";
49
		mailer = new GmailUtils();
50
		sendTo = new String[] { "kshitij.sood@shop2020.in", "manish.sharma@shop2020.in", "amit.gupta@shop2020.in" };
51
	}
9651 manish.sha 52
 
12428 manish.sha 53
	public static void main(String[] args) throws UnsupportedEncodingException, MessagingException{
54
		try{
55
			logger = LoggerFactory.getLogger(SnapdealOrderStatusReconciliation.class);
56
			/*List<OrderStatus> statuses = new ArrayList<OrderStatus>();
57
			statuses.add(OrderStatus.SHIPPED_FROM_WH);
58
			statuses.add(OrderStatus.SHIPPED_TO_LOGST);*/
10178 manish.sha 59
 
12428 manish.sha 60
			Map<String,List<List<String>>> orderDataMap = new HashMap<String,List<List<String>>>();
61
			List<List<String>> deliveredOrderDataList = new ArrayList<List<String>>();
62
			List<List<String>> cancelledOrderDataList = new ArrayList<List<String>>();
63
			long minCreationDate = 0l;
64
			long currentTime = System.currentTimeMillis();
9651 manish.sha 65
 
12428 manish.sha 66
			Calendar cal = Calendar.getInstance();
67
			cal.add(Calendar.DAY_OF_MONTH, -60);
68
			minCreationDate = cal.getTimeInMillis();
69
			/*TransactionClient tsc = null;
70
			try {
71
				tsc = new TransactionClient();
72
				minCreationDate = tsc.getClient().getMinCreatedTimeStampUndeliveredOrdersForSource(OrderSource.SNAPDEAL.getValue());
73
				minCreationDate = 1393612200000l;
74
			} catch (Exception e) {
75
				logger.error("Unable to establish connection to the transaction service while getting Minimum Order Created Timstamp for Undelivered Orders ", e);
76
			}//Dec 14, 2013 12:00:00 AM  1383291412000l
77
			 */
78
			SimpleDateFormat snapdealDateFormat = new SimpleDateFormat("yyyy-MM-dd");
79
			SimpleDateFormat gotSnapdealDateFormat = new SimpleDateFormat("MMM dd, yyyy HH:mm:ss aaa");
80
			SimpleDateFormat ourDBDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
81
			String startDate= "";
82
			Date start_date = new Date(minCreationDate);
83
			Date end_date = new Date(currentTime);
84
			if(minCreationDate > 0l){
85
				startDate = snapdealDateFormat.format(new Date(minCreationDate));
10565 manish.sha 86
			}
12428 manish.sha 87
			else{
88
				startDate = snapdealDateFormat.format(new Date(currentTime));
10565 manish.sha 89
			}
12428 manish.sha 90
			logger.info("Snapdeal Order Recon Start Date .. "+startDate);
91
			//startDate = startDate.replace("-", "%2F");
9731 manish.sha 92
 
12428 manish.sha 93
			String endDate = snapdealDateFormat.format(new Date(System.currentTimeMillis()));
94
			logger.info("Snapdeal Order Recon End Date .. "+endDate);
95
			//endDate = endDate.replace("-", "%2F");
10178 manish.sha 96
 
97
 
12428 manish.sha 98
			HttpClient client = new DefaultHttpClient();
10178 manish.sha 99
 
12428 manish.sha 100
			HttpGet get = new HttpGet("http://selleraccounts.snapdeal.com/keymaker/login");
101
			HttpResponse response = null;
9931 manish.sha 102
			try {
10178 manish.sha 103
				response = client.execute(get);
9931 manish.sha 104
			} catch (Exception e) {
12428 manish.sha 105
				e.printStackTrace();
106
				throw new Exception("Excption while login to snapdeal panel");
9931 manish.sha 107
			} 
12428 manish.sha 108
			BufferedReader rd = null;
9931 manish.sha 109
			try {
10178 manish.sha 110
				rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
12428 manish.sha 111
			} catch (Exception e1) {
112
				e1.printStackTrace();
113
				throw new Exception("Excption while reading login response");
9931 manish.sha 114
			} 
12428 manish.sha 115
			String line = "";
116
			StringBuffer sb = new StringBuffer();
9931 manish.sha 117
			try {
12428 manish.sha 118
				while ((line = rd.readLine()) != null) {
119
					sb.append(line);
120
					//System.out.println(line);
121
				}
122
			} catch (IOException e) {
123
				e.printStackTrace();
124
				throw new Exception("Excption while reading login response");
125
			}
126
			int i= sb.toString().indexOf("name=\"lt\" value=");
127
			char[] charArray = sb.toString().toCharArray();
128
			String lt = "";
129
			int j=0;
130
			for(j=i+16;j<=charArray.length;j++){
9651 manish.sha 131
 
12428 manish.sha 132
				if(charArray[j]==' '){
133
					break;
134
				}
135
			}
136
			lt = sb.substring(i+17,j-1);
137
			System.out.println("LT VALUE " + lt);
138
			i= sb.toString().indexOf("name=\"execution\" value=");
139
			charArray = sb.toString().toCharArray();
9651 manish.sha 140
 
12428 manish.sha 141
			String ex = "";
142
			j=0;
143
			for(j=i+24;j<=charArray.length;j++){
144
				if(charArray[j]==' '){
145
					break;
9651 manish.sha 146
				}
147
			}
12428 manish.sha 148
			ex = sb.substring(i+24,j-1);
149
			System.out.println("EXECUTION VALUE " + ex);	
10178 manish.sha 150
 
151
 
12428 manish.sha 152
 
153
			HttpPost post = new HttpPost("http://selleraccounts.snapdeal.com/login?service=http%3A%2F%2Fshipping.snapdeal.com%2Fj_spring_cas_security_check");
154
			List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
155
			//nameValuePairs.add(new BasicNameValuePair("username",
156
			//"khushal.bhatia@saholic.com"));
157
			nameValuePairs.add(new BasicNameValuePair("username",
158
			"saholic-snapdeal@saholic.com"));
159
			//nameValuePairs.add(new BasicNameValuePair("password",
160
			//"sonline"));
161
			nameValuePairs.add(new BasicNameValuePair("password",
162
			"snapsaholic"));
163
			nameValuePairs.add(new BasicNameValuePair("_eventId","submit"));
164
			nameValuePairs.add(new BasicNameValuePair("execution",ex));
165
			nameValuePairs.add(new BasicNameValuePair("lt",lt));
166
			nameValuePairs.add(new BasicNameValuePair("submit","LOGIN"));
167
			post.setEntity(new UrlEncodedFormEntity(nameValuePairs,"utf-8"));
168
			//response = null;
9931 manish.sha 169
			try {
12428 manish.sha 170
				response = client.execute(post);
9931 manish.sha 171
			} catch (Exception e) {
12428 manish.sha 172
				logger.error("Unable to get Http Response for snapdeal seller portal login", e);
173
			}
174
			try {
175
				rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
176
			} catch (Exception e1) {
177
				logger.error("Unable to read Http Response for snapdeal seller portal login", e1);
178
				throw new Exception("Unable to read Http Response for snapdeal seller portal login");
9931 manish.sha 179
			} 
9651 manish.sha 180
 
12428 manish.sha 181
			//Striline = "";
9931 manish.sha 182
			try {
12428 manish.sha 183
				while ((line = rd.readLine()) != null) {
184
					System.out.println(line);
185
				}
9931 manish.sha 186
			} catch (Exception e) {
12428 manish.sha 187
				logger.error("Unable to extract Http Response for snapdeal seller portal login", e);
188
				throw new Exception("Unable to extract Http Response for snapdeal seller portal login");
10178 manish.sha 189
			}
9651 manish.sha 190
 
12428 manish.sha 191
			JSONArray jsonDataObj = null;
192
			JSONArray jsonDataShip = null;
193
			String line1 = "";
9651 manish.sha 194
 
12428 manish.sha 195
			for(long start = start_date.getTime(); start < end_date.getTime();){
196
				long end = start + 604800000l;
197
				if(end > end_date.getTime()){
198
					end = end_date.getTime();
199
				}
200
				startDate = snapdealDateFormat.format(new Date(start));
201
				startDate = startDate.replace("-", "%2F");
202
				endDate = snapdealDateFormat.format(new Date(end));
203
				endDate = endDate.replace("-", "%2F");
204
 
205
				logger.info("==== Start Date.."+startDate+"\n");
206
				logger.info("==== End Date.."+endDate+"\n");
207
 
208
 
209
				/*logger.info("Getting Delivery Information for DropShip Snapdeal Orders");
210
				//http://shipping.snapdeal.com/vendor/ONESHIP/product-shipment/shippedData/fetch?statusCode=COURIER_DELIVERED&dispatchCategoryId=0&startDate=2014%2F04%2F01&endDate=2014%2F04%2F07&statusColumn=deliveredOn
211
				String dropshipUrl = "http://shipping.snapdeal.com/vendor/DROPSHIP/product-shipment/shippedData/fetch/?startDate="+startDate+"&endDate="+endDate+"&statusCode=COURIER_DELIVERED&statusColumn=deliveredOn&dispatchCategoryId=0";
212
				logger.info("Drop Ship Url "+dropshipUrl);
213
 
214
				get = new HttpGet(dropshipUrl);
215
 
216
				try {
217
					response = client.execute(get);
218
				} catch (Exception e) {
219
					logger.error("Unable to get Http Response for snapdeal dropship delivered orders", e);
220
				} 
221
 
222
				try {
223
					rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
224
				} catch (Exception e) {
225
					logger.error("Unable to read Http Response for snapdeal dropship delivered orders", e);
226
				} 
227
 
228
 
229
				try {
230
 
231
					String resP = rd.readLine();
232
					jsonDataObj = new JSONArray("["+resP+"]");
233
					JSONObject j1 = (JSONObject)jsonDataObj.get(0);
234
					jsonDataShip = new JSONArray(j1.get("jsonDataString").toString());
235
				} catch (Exception e) {
236
					logger.error("Unable to extract Http Response for snapdeal dropship delivered orders", e);
237
				} 
238
 
239
 
240
				if(jsonDataShip!=null && jsonDataShip.length()>0){
241
					for(i=0; i< jsonDataShip.length(); i++){
242
						JSONObject jsonObj = null;
243
						try {
244
							jsonObj = jsonDataShip.getJSONObject(i);
245
 
246
							if(jsonObj!=null){
247
								String subOrderCode =(String) jsonObj.get("suborderCode");
248
								String referenceNumber =(String) jsonObj.get("referenceCode");
249
								String deliveryDate =(String) jsonObj.get("deliveredOn");
250
								logger.info("Snapdeal Dropship Order Details...suborderCode... "+subOrderCode+" ...referenceNumber... "+ referenceNumber+ " ...deliveryDate... "+ deliveryDate);
251
								deliveryDate = ourDBDateFormat.format(gotSnapdealDateFormat.parse(deliveryDate).getTime());
252
								List<String> deliveredOrdelList = new ArrayList<String>();
253
								deliveredOrdelList.add(referenceNumber);
254
								deliveredOrdelList.add(subOrderCode);
255
								deliveredOrdelList.add(deliveryDate);
256
								deliveredOrderDataList.add(deliveredOrdelList);
257
							}
258
						} catch (Exception e) {
259
							logger.error("Unable to add delivered order details for updation regarding snapdeal dropship delivered orders", e);
9931 manish.sha 260
						}
261
					}
12428 manish.sha 262
				}*/
263
 
264
				logger.info("Getting Delivery Information for OneShip Snapdeal Orders");
265
				//statusCode=CLD&dispatchCategoryId=0&startDate=2013%2F11%2F01&endDate=2013%2F11%2F07&statusColumn=cancelledOn
266
				String oneShipUrl = "http://shipping.snapdeal.com/vendor/ONESHIP/product-shipment/shippedData/fetch/?startDate="+startDate+"&endDate="+endDate+"&statusCode=COURIER_DELIVERED&statusColumn=deliveredOn&dispatchCategoryId=0";
267
				logger.info("One Ship Url "+oneShipUrl);
268
 
269
				get = new HttpGet(oneShipUrl);	
270
 
271
				try {
272
					response = client.execute(get);
273
				} catch (Exception e) {
274
					logger.error("Unable to get Http Response for snapdeal oneship delivered orders", e);
275
					throw new Exception("Unable to get Http Response for snapdeal oneship delivered orders");
276
				} 
277
 
278
				try {
279
					rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
280
				} catch (Exception e) {
281
					logger.error("Unable to read Http Response for snapdeal oneship delivered orders", e);
282
					throw new Exception("Unable to read Http Response for snapdeal oneship delivered orders");
9651 manish.sha 283
				}
9731 manish.sha 284
 
12428 manish.sha 285
				try {
286
					String resP = rd.readLine();
12446 manish.sha 287
					if(resP!=null && !resP.isEmpty()){
288
						jsonDataObj = new JSONArray("["+resP+"]");
289
						JSONObject j1 = (JSONObject)jsonDataObj.get(0);
290
						jsonDataShip = new JSONArray(j1.get("jsonDataString").toString());
291
					}
12428 manish.sha 292
				} catch (Exception e) {
293
					logger.error("Unable to extract Http Response for snapdeal oneship delivered orders", e);
294
					throw new Exception("Unable to extract Http Response for snapdeal oneship delivered orders");
295
				}
9651 manish.sha 296
 
12428 manish.sha 297
				if(jsonDataShip!=null && jsonDataShip.length()>0){
298
					for(i=0; i< jsonDataShip.length(); i++){
299
						JSONObject jsonObj = null;
300
						try {
301
							jsonObj = jsonDataShip.getJSONObject(i);
9731 manish.sha 302
 
12428 manish.sha 303
							if(jsonObj!=null){
304
								String subOrderCode =(String) jsonObj.get("suborderCode");
305
								String referenceNumber =(String) jsonObj.get("referenceCode");
306
								String deliveryDate =(String) jsonObj.get("deliveredOn");
307
								logger.info("Snapdeal Oneship Order Details...suborderCode... "+subOrderCode+" ...referenceNumber... "+ referenceNumber+ " ...deliveryDate... "+ deliveryDate);
308
								deliveryDate = ourDBDateFormat.format(gotSnapdealDateFormat.parse(deliveryDate).getTime());
309
								List<String> deliveredOrdelList = new ArrayList<String>();
310
								deliveredOrdelList.add(referenceNumber);
311
								deliveredOrdelList.add(subOrderCode);
312
								deliveredOrdelList.add(deliveryDate);
9883 manish.sha 313
 
12428 manish.sha 314
								deliveredOrderDataList.add(deliveredOrdelList);
315
							}
316
						} catch (Exception e) {
317
							logger.error("Unable to add delivered order details for updation regarding snapdeal oneship delivered orders", e);
318
							throw new Exception("Unable to add delivered order details for updation regarding snapdeal oneship delivered orders");
9931 manish.sha 319
						}
320
					}
9883 manish.sha 321
				}
9931 manish.sha 322
 
323
 
12428 manish.sha 324
				/*logger.info("Getting Information for Cancelled DropShip Snapdeal Orders");
325
				String dropshipCancelUrl = "http://shipping.snapdeal.com/vendor/DROPSHIP/product-shipment/shippedData/fetch/?statusCode=CLD&dispatchCategoryId=0&startDate="+startDate+"&endDate="+endDate+"&statusColumn=cancelledOn";
326
				logger.info("Drop Ship Cancel Url "+dropshipCancelUrl);
327
 
328
				get = new HttpGet(dropshipCancelUrl);
329
 
330
				try {
331
					response = client.execute(get);
332
				} catch (Exception e) {
333
					logger.error("Unable to get Http Response for snapdeal dropship cancelled orders", e);
334
				} 
335
 
336
				try {
337
					rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
338
				} catch (Exception e) {
339
					logger.error("Unable to read Http Response for snapdeal dropship cancelled orders", e);
340
				}
341
 
342
				try {
343
					String resP = rd.readLine();
344
					jsonDataObj = new JSONArray("["+resP+"]");
345
					JSONObject j1 = (JSONObject)jsonDataObj.get(0);
346
					jsonDataShip = new JSONArray(j1.get("jsonDataString").toString());
347
				} catch (Exception e) {
348
					logger.error("Unable to extract Http Response for snapdeal dropship cancelled orders", e);
349
				} 
350
 
351
				if(jsonDataShip!=null && jsonDataShip.length()>0){
352
					for(i=0; i< jsonDataShip.length(); i++){
353
						JSONObject jsonObj = null;
354
						try {
355
							jsonObj = jsonDataShip.getJSONObject(i);
356
 
357
							if(jsonObj!=null){
358
								String subOrderCode =(String) jsonObj.get("suborderCode");
359
								String referenceNumber =(String) jsonObj.get("referenceCode");
360
								logger.info("Snapdeal Dropship Order Details...suborderCode... "+subOrderCode+" ...referenceNumber... "+ referenceNumber);
361
								List<String> cancelledOrdelList = new ArrayList<String>();
362
								cancelledOrdelList.add(referenceNumber);
363
								cancelledOrdelList.add(subOrderCode);
364
								cancelledOrderDataList.add(cancelledOrdelList);
365
							}
366
						} catch (Exception e) {
367
							logger.error("Unable to add cancelled order details for updation regarding snapdeal dropship orders", e);
9931 manish.sha 368
						}
9883 manish.sha 369
					}
12428 manish.sha 370
				}*/
371
 
372
				logger.info("Getting Information for OneShip Snapdeal Cancelled Orders");
373
				String oneShipCancelUrl = "http://shipping.snapdeal.com/vendor/ONESHIP/product-shipment/shippedData/fetch/?statusCode=CLD&dispatchCategoryId=0&startDate="+startDate+"&endDate="+endDate+"&statusColumn=cancelledOn";
374
				logger.info("One Ship Cancel Url "+oneShipCancelUrl);
375
 
376
				get = new HttpGet(oneShipCancelUrl);
377
 
378
				try {
379
					response = client.execute(get);
380
				} catch (Exception e) {
381
					logger.error("Unable to get Http Response for snapdeal oneship cancelled orders", e);
382
					throw new Exception("Unable to get Http Response for snapdeal oneship cancelled orders");
383
				} 
384
 
385
				try {
386
					rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
387
				} catch (Exception e) {
388
					logger.error("Unable to read Http Response for snapdeal oneship cancelled orders", e);
389
					throw new Exception("Unable to read Http Response for snapdeal oneship cancelled orders");
9883 manish.sha 390
				}
12428 manish.sha 391
 
392
				try {
393
					String resP = rd.readLine();
12446 manish.sha 394
					if(resP!=null && !resP.isEmpty()){
395
						jsonDataObj = new JSONArray("["+resP+"]");
396
						JSONObject j1 = (JSONObject)jsonDataObj.get(0);
397
						jsonDataShip = new JSONArray(j1.get("jsonDataString").toString());
398
					}
12428 manish.sha 399
				} catch (Exception e) {
400
					logger.error("Unable to extract Http Response for snapdeal oneship cancelled orders", e);
401
					throw new Exception("Unable to extract Http Response for snapdeal oneship cancelled orders");
402
				} 
403
 
404
				if(jsonDataShip!=null && jsonDataShip.length()>0){
405
					for(i=0; i< jsonDataShip.length(); i++){
406
						JSONObject jsonObj = null;
407
						try {
408
							jsonObj = jsonDataShip.getJSONObject(i);
409
 
410
							if(jsonObj!=null){
411
								String subOrderCode =(String) jsonObj.get("suborderCode");
412
								String referenceNumber =(String) jsonObj.get("referenceCode");
413
								logger.info("Snapdeal OneShip Order Details...suborderCode... "+subOrderCode+" ...referenceNumber... "+ referenceNumber);
414
								List<String> cancelledOrdelList = new ArrayList<String>();
415
								cancelledOrdelList.add(referenceNumber);
416
								cancelledOrdelList.add(subOrderCode);
417
								cancelledOrderDataList.add(cancelledOrdelList);
418
							}
419
						} catch (Exception e) {
420
							logger.error("Unable to add cancelled order details for updation regarding snapdeal oneship orders", e);
421
							throw new Exception("Unable to add cancelled order details for updation regarding snapdeal oneship orders");
422
						}
423
					}
424
				}
425
 
426
 
427
				start = end + 86400000l;
9883 manish.sha 428
			}
12428 manish.sha 429
 
430
			if(deliveredOrderDataList!=null && deliveredOrderDataList.size()>0){
431
				logger.info("Delivered Orders Size .. "+deliveredOrderDataList.size());
432
				orderDataMap.put("Delivered", deliveredOrderDataList);
433
			}
434
 
435
			if(cancelledOrderDataList!=null && cancelledOrderDataList.size()>0){
436
				logger.info("Cancelled Orders Size .. "+cancelledOrderDataList.size());
437
				orderDataMap.put("Cancelled", cancelledOrderDataList);
438
			}
439
 
440
			if(orderDataMap!=null && orderDataMap.size()>0){
441
				try{
442
					new TransactionClient().getClient().updateSnapdealOrdersStatus(orderDataMap);
443
				} catch(Exception e){
444
					logger.error("Unable to update delivery information for snapdeal orders", e);
445
					throw new Exception("Unable to update delivery information for snapdeal orders");
446
				}
447
			}
448
 
9883 manish.sha 449
		}
12428 manish.sha 450
		catch(Exception e){
451
			e.printStackTrace();
452
			mailer.sendSSLMessage(sendTo, "Error in Snapdeal Order Status Recon", emailFromAddress, password, "<html><body><p>Please check log</p></body></html>");
9883 manish.sha 453
		}
9651 manish.sha 454
	}
455
}