Subversion Repositories SmartDukaan

Rev

Rev 11518 | Rev 12446 | 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();
287
					jsonDataObj = new JSONArray("["+resP+"]");
288
					JSONObject j1 = (JSONObject)jsonDataObj.get(0);
289
					jsonDataShip = new JSONArray(j1.get("jsonDataString").toString());
290
				} catch (Exception e) {
291
					logger.error("Unable to extract Http Response for snapdeal oneship delivered orders", e);
292
					throw new Exception("Unable to extract Http Response for snapdeal oneship delivered orders");
293
				}
9651 manish.sha 294
 
12428 manish.sha 295
				if(jsonDataShip!=null && jsonDataShip.length()>0){
296
					for(i=0; i< jsonDataShip.length(); i++){
297
						JSONObject jsonObj = null;
298
						try {
299
							jsonObj = jsonDataShip.getJSONObject(i);
9731 manish.sha 300
 
12428 manish.sha 301
							if(jsonObj!=null){
302
								String subOrderCode =(String) jsonObj.get("suborderCode");
303
								String referenceNumber =(String) jsonObj.get("referenceCode");
304
								String deliveryDate =(String) jsonObj.get("deliveredOn");
305
								logger.info("Snapdeal Oneship Order Details...suborderCode... "+subOrderCode+" ...referenceNumber... "+ referenceNumber+ " ...deliveryDate... "+ deliveryDate);
306
								deliveryDate = ourDBDateFormat.format(gotSnapdealDateFormat.parse(deliveryDate).getTime());
307
								List<String> deliveredOrdelList = new ArrayList<String>();
308
								deliveredOrdelList.add(referenceNumber);
309
								deliveredOrdelList.add(subOrderCode);
310
								deliveredOrdelList.add(deliveryDate);
9883 manish.sha 311
 
12428 manish.sha 312
								deliveredOrderDataList.add(deliveredOrdelList);
313
							}
314
						} catch (Exception e) {
315
							logger.error("Unable to add delivered order details for updation regarding snapdeal oneship delivered orders", e);
316
							throw new Exception("Unable to add delivered order details for updation regarding snapdeal oneship delivered orders");
9931 manish.sha 317
						}
318
					}
9883 manish.sha 319
				}
9931 manish.sha 320
 
321
 
12428 manish.sha 322
				/*logger.info("Getting Information for Cancelled DropShip Snapdeal Orders");
323
				String dropshipCancelUrl = "http://shipping.snapdeal.com/vendor/DROPSHIP/product-shipment/shippedData/fetch/?statusCode=CLD&dispatchCategoryId=0&startDate="+startDate+"&endDate="+endDate+"&statusColumn=cancelledOn";
324
				logger.info("Drop Ship Cancel Url "+dropshipCancelUrl);
325
 
326
				get = new HttpGet(dropshipCancelUrl);
327
 
328
				try {
329
					response = client.execute(get);
330
				} catch (Exception e) {
331
					logger.error("Unable to get Http Response for snapdeal dropship cancelled orders", e);
332
				} 
333
 
334
				try {
335
					rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
336
				} catch (Exception e) {
337
					logger.error("Unable to read Http Response for snapdeal dropship cancelled orders", e);
338
				}
339
 
340
				try {
341
					String resP = rd.readLine();
342
					jsonDataObj = new JSONArray("["+resP+"]");
343
					JSONObject j1 = (JSONObject)jsonDataObj.get(0);
344
					jsonDataShip = new JSONArray(j1.get("jsonDataString").toString());
345
				} catch (Exception e) {
346
					logger.error("Unable to extract Http Response for snapdeal dropship cancelled orders", e);
347
				} 
348
 
349
				if(jsonDataShip!=null && jsonDataShip.length()>0){
350
					for(i=0; i< jsonDataShip.length(); i++){
351
						JSONObject jsonObj = null;
352
						try {
353
							jsonObj = jsonDataShip.getJSONObject(i);
354
 
355
							if(jsonObj!=null){
356
								String subOrderCode =(String) jsonObj.get("suborderCode");
357
								String referenceNumber =(String) jsonObj.get("referenceCode");
358
								logger.info("Snapdeal Dropship Order Details...suborderCode... "+subOrderCode+" ...referenceNumber... "+ referenceNumber);
359
								List<String> cancelledOrdelList = new ArrayList<String>();
360
								cancelledOrdelList.add(referenceNumber);
361
								cancelledOrdelList.add(subOrderCode);
362
								cancelledOrderDataList.add(cancelledOrdelList);
363
							}
364
						} catch (Exception e) {
365
							logger.error("Unable to add cancelled order details for updation regarding snapdeal dropship orders", e);
9931 manish.sha 366
						}
9883 manish.sha 367
					}
12428 manish.sha 368
				}*/
369
 
370
				logger.info("Getting Information for OneShip Snapdeal Cancelled Orders");
371
				String oneShipCancelUrl = "http://shipping.snapdeal.com/vendor/ONESHIP/product-shipment/shippedData/fetch/?statusCode=CLD&dispatchCategoryId=0&startDate="+startDate+"&endDate="+endDate+"&statusColumn=cancelledOn";
372
				logger.info("One Ship Cancel Url "+oneShipCancelUrl);
373
 
374
				get = new HttpGet(oneShipCancelUrl);
375
 
376
				try {
377
					response = client.execute(get);
378
				} catch (Exception e) {
379
					logger.error("Unable to get Http Response for snapdeal oneship cancelled orders", e);
380
					throw new Exception("Unable to get Http Response for snapdeal oneship cancelled orders");
381
				} 
382
 
383
				try {
384
					rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
385
				} catch (Exception e) {
386
					logger.error("Unable to read Http Response for snapdeal oneship cancelled orders", e);
387
					throw new Exception("Unable to read Http Response for snapdeal oneship cancelled orders");
9883 manish.sha 388
				}
12428 manish.sha 389
 
390
				try {
391
					String resP = rd.readLine();
392
					jsonDataObj = new JSONArray("["+resP+"]");
393
					JSONObject j1 = (JSONObject)jsonDataObj.get(0);
394
					jsonDataShip = new JSONArray(j1.get("jsonDataString").toString());
395
				} catch (Exception e) {
396
					logger.error("Unable to extract Http Response for snapdeal oneship cancelled orders", e);
397
					throw new Exception("Unable to extract Http Response for snapdeal oneship cancelled orders");
398
				} 
399
 
400
				if(jsonDataShip!=null && jsonDataShip.length()>0){
401
					for(i=0; i< jsonDataShip.length(); i++){
402
						JSONObject jsonObj = null;
403
						try {
404
							jsonObj = jsonDataShip.getJSONObject(i);
405
 
406
							if(jsonObj!=null){
407
								String subOrderCode =(String) jsonObj.get("suborderCode");
408
								String referenceNumber =(String) jsonObj.get("referenceCode");
409
								logger.info("Snapdeal OneShip Order Details...suborderCode... "+subOrderCode+" ...referenceNumber... "+ referenceNumber);
410
								List<String> cancelledOrdelList = new ArrayList<String>();
411
								cancelledOrdelList.add(referenceNumber);
412
								cancelledOrdelList.add(subOrderCode);
413
								cancelledOrderDataList.add(cancelledOrdelList);
414
							}
415
						} catch (Exception e) {
416
							logger.error("Unable to add cancelled order details for updation regarding snapdeal oneship orders", e);
417
							throw new Exception("Unable to add cancelled order details for updation regarding snapdeal oneship orders");
418
						}
419
					}
420
				}
421
 
422
 
423
				start = end + 86400000l;
9883 manish.sha 424
			}
12428 manish.sha 425
 
426
			if(deliveredOrderDataList!=null && deliveredOrderDataList.size()>0){
427
				logger.info("Delivered Orders Size .. "+deliveredOrderDataList.size());
428
				orderDataMap.put("Delivered", deliveredOrderDataList);
429
			}
430
 
431
			if(cancelledOrderDataList!=null && cancelledOrderDataList.size()>0){
432
				logger.info("Cancelled Orders Size .. "+cancelledOrderDataList.size());
433
				orderDataMap.put("Cancelled", cancelledOrderDataList);
434
			}
435
 
436
			if(orderDataMap!=null && orderDataMap.size()>0){
437
				try{
438
					new TransactionClient().getClient().updateSnapdealOrdersStatus(orderDataMap);
439
				} catch(Exception e){
440
					logger.error("Unable to update delivery information for snapdeal orders", e);
441
					throw new Exception("Unable to update delivery information for snapdeal orders");
442
				}
443
			}
444
 
9883 manish.sha 445
		}
12428 manish.sha 446
		catch(Exception e){
447
			e.printStackTrace();
448
			mailer.sendSSLMessage(sendTo, "Error in Snapdeal Order Status Recon", emailFromAddress, password, "<html><body><p>Please check log</p></body></html>");
9883 manish.sha 449
		}
9651 manish.sha 450
	}
451
}