Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
48 ashish 1
namespace java in.shop2020.model.v1.user
95 ashish 2
namespace py shop2020.thriftpy.model.v1.user
48 ashish 3
 
3374 rajveer 4
include "GenericService.thrift"
5
 
48 ashish 6
/**
7
Exceptions
8
*/
9
exception AuthenticationException{
10
	1:string message,
11
	2:i32 errorCode
12
}
13
 
14
exception UserContextException{
15
	1:i32 errorCode,
16
	2:string message
17
}
18
 
552 chandransh 19
exception ShoppingCartException{
20
	1:i64 id,
21
	2:string message
22
}
23
 
1116 varun.gupt 24
exception UserCommunicationException{
25
	1:i64 id,
26
	2:string message
27
}
28
 
1995 vikas 29
exception UserAffiliateException{
1848 vikas 30
    1:i64 id,
31
    2:string message
32
}
33
 
1599 ankur.sing 34
enum UserType{
35
	USER = 0,
36
	ANONYMOUS = 1 
37
}
38
 
6367 amit.gupta 39
enum PromotionType{
40
	DISCOUNT_COUPON = 0,
41
	GIFT_VOUCHER = 1 
42
}
43
 
121 ashish 44
enum AddressType{
130 ashish 45
	WORK = 0,
46
	HOME = 1
48 ashish 47
}
48
 
130 ashish 49
 
48 ashish 50
/**
1116 varun.gupt 51
Form types for Contact Us form
52
*/
53
enum UserCommunicationType{
54
	RETURN_FORM = 1,
55
	ORDER_CANCELLATION = 2,
56
	DELIVERY_PROBLEM = 3,
57
	PAYMENT_STATUS = 4,
58
	ORDER_STATUS = 5,
59
	PRODUCT_REQUEST = 6,
6176 amit.gupta 60
	RECHARGE_RELATED = 7,
3339 mandeep.dh 61
	OTHER = 8
6176 amit.gupta 62
 
1116 varun.gupt 63
}
64
 
65
/**
3379 vikas 66
Affiliate track log types for affiliate tracking
67
*/
68
enum TrackLogType{
69
    NEW_REGISTRATION = 1,
70
    PAYMENT_SUCCESS = 2
71
}
72
 
73
/**
121 ashish 74
Address
75
*/
76
struct Address{
552 chandransh 77
	1:i64 id,
78
	2:string line1,
79
	3:string line2,
80
	4:string landmark,
81
	5:string city,
82
	6:string state,
83
	7:string pin,
84
	8:string country,
48 ashish 85
	9:bool enabled,
123 ashish 86
	10:AddressType type,
414 ashish 87
	11:i64 addedOn,
88
	12:string name,
89
	13:string phone
48 ashish 90
}
91
 
552 chandransh 92
enum Sex{
93
	MALE,
94
	FEMALE,
95
	WONT_SAY
96
}
97
 
121 ashish 98
/**
552 chandransh 99
The user structure holding the basic information that identifies the user.
121 ashish 100
**/
552 chandransh 101
struct User{
102
	1:i64 userId,
103
	2:string email,
104
	3:string password,
105
	4:string name,
566 rajveer 106
	5:string dateOfBirth,
1116 varun.gupt 107
	6:Sex sex,
3853 mandeep.dh 108
	7:optional string mobileNumber,
5326 rajveer 109
	8:i64 lastLogin,
110
	9:i64 lastLogout,
111
	10:i64 activeSince,
112
	11:list<Address> addresses,
113
	12:i64 defaultAddressId,
114
	13:string communicationEmail,
115
	14:i64 activeCartId,
116
	15:string jsessionId,
117
	16:bool isAnonymous,
118
	17:string source,
119
	18:i64 sourceStartTime,
120
	19:double trustLevel
48 ashish 121
}
122
 
1116 varun.gupt 123
struct UserCommunication{
124
	1:i64 id,
125
	2:i64 userId,
126
	3:UserCommunicationType communicationType,
127
	4:i64 orderId,
128
	5:string airwaybillNo,
129
	6:string replyTo,
130
	7:string productName,
131
	8:string subject,
132
	9:string message,
1299 varun.gupt 133
	10:i64 communication_timestamp
1116 varun.gupt 134
}
135
 
1848 vikas 136
struct MasterAffiliate{
137
    1:i64 id,
138
    2:string name,
1861 vikas 139
    3:i64 addedOn
1848 vikas 140
}
141
 
142
struct Affiliate{
143
    1:i64 id,
144
    2:string name,
145
    3:string url,
1861 vikas 146
    4:i64 masterAffiliateId,
147
    5:i64 addedOn
1848 vikas 148
}
149
 
150
struct Tracker{
151
    1:i64 id,
1861 vikas 152
    2:i64 affiliateId,
1848 vikas 153
}
154
 
155
struct TrackLog{
156
    1:i64 id,
1861 vikas 157
    2:i64 addedOn,
1995 vikas 158
    3:i64 affiliateId,
1861 vikas 159
    4:i64 userId,
3379 vikas 160
    5:TrackLogType eventType,
1861 vikas 161
    6:string url,
162
    7:string data
1848 vikas 163
}
164
 
552 chandransh 165
//Various statuses for line items
166
enum LineStatus{
167
	LINE_ACTIVE,			//line is active
168
	LINE_DELETED,			//line is deleted
169
	LINE_EXPIRED,			//line is expired, on laspse of fixed amount of time
170
	LINE_COMMITED,			//line is committed, sent for processing.
171
	LINE_COMMIT_FAILED,		//line was committed, but commit failed due to some reason, possibly during cart validation.
172
	LINE_AUTO_DELETED,		//line was auto deleted internally due to some reason(item delisted, price changed etc).
173
}
174
 
175
//Various statuses for Cart
176
enum CartStatus{
177
	ACTIVE,					
178
	INACTIVE,
179
	EXPIRED,
180
	COMMITTED,
181
	COMMIT_FAILED
182
}
183
 
3554 varun.gupt 184
struct Discount{
185
	1:i64 cart_id,
186
    2:i64 item_id,
187
    3:double discount,
188
    4:double quantity
189
}
190
 
552 chandransh 191
struct Line{
646 chandransh 192
	1:i64 cartId,				//identifier
552 chandransh 193
	2:i64 itemId,			//item id added
194
	3:double quantity,		//quantity added 
195
	4:i64 createdOn,		//addition timestamp
196
	5:i64 updatedOn, 		//any updation in quantity or status
197
	6:LineStatus lineStatus,	//current status
1984 varun.gupt 198
	7:i32 estimate,			//delivery estimate in hours
199
	8:double actualPrice,
3554 varun.gupt 200
	9:double discountedPrice,
201
	10:list<Discount> discounts
552 chandransh 202
}
203
 
204
struct Cart{
205
	1:i64 id,				//identifier
206
	2:list<Line> lines,		//list of lines
207
	3:CartStatus status,	//current status
208
	4:i64 createdOn,		//creation timestamp
209
	5:i64 updatedOn,		//time of last update in cart (like addition/deletion/updation of cart items )
687 chandransh 210
	6:i64 checkedOutOn,		//commited timestamp
5326 rajveer 211
	7:i64 addressId,	    //address on which this will be shipped
212
	8:double totalPrice,
213
	9:double discountedPrice,
5553 rajveer 214
	10:string couponCode,
215
	11:i64 pickupStoreId
552 chandransh 216
}
217
 
218
enum WidgetType{
770 rajveer 219
	MY_RESEARCH,
220
	BROWSE_HISTORY
221
}
222
 
2981 rajveer 223
struct UserWidgetItem{
224
	1:i64 userId,
225
	2:i64 widgetId,
226
	3:i64 itemId,
227
	4:i64 addedOn
552 chandransh 228
}
229
 
230
exception WidgetException{
231
	1:i64 id,
232
	2:string message
233
}
234
 
48 ashish 235
/**
1984 varun.gupt 236
Exceptions for Promotion Service
237
*/
238
exception PromotionException{
239
	1:i64 id,
240
	2:string message
241
}
242
 
243
/**
244
Types for Promotion Service
245
*/
246
 
247
struct Promotion{
248
	1:i64 id,
249
	2:string name,
250
	3:string ruleExecutionSrc,
251
	4:i64 startOn,
252
	5:i64 endOn,
253
	6:i64 createdOn
254
}
255
 
256
struct Coupon{
3554 varun.gupt 257
	1:string couponCode,
258
	2:Promotion promotion,
1984 varun.gupt 259
	3:string arguments
260
}
261
 
262
struct PromotionTracking{
263
	1:string couponCode,
264
	2:i64 transactionId,
265
	3:i64 userId,
266
	4:bool appliedOn
267
}
268
 
4189 varun.gupt 269
struct ItemCouponDiscount{
270
	1:i64 itemId,
271
	2:string couponCode,
272
	3:double discount
273
}
274
 
5469 rajveer 275
enum VoucherType{
5492 rajveer 276
	SPICEDECK_MOBILE=1
5469 rajveer 277
}
278
 
279
struct Voucher{
280
	1:i64 id,
281
	2:string voucherCode,
282
	3:VoucherType voucherType,
283
	4:i64 issuedOn,
284
	5:double amount,
285
	6:i64 expiredOn,
286
	7:string userEmail
287
}
288
 
289
 
1984 varun.gupt 290
/**
291
Promotion Service
292
*/
3374 rajveer 293
service PromotionService extends GenericService.GenericService{
1984 varun.gupt 294
	void createPromotion(1:string name, 2:string ruleExecutionSrc, 3:i64 startOn, 4:i64 endOn) throws (1:PromotionException pex),
6301 amit.gupta 295
	Coupon getCoupon(1:string couponCode) throws (1:PromotionException pex),
296
	bool isGiftVoucher(1:string couponCode) throws (1:PromotionException pex),
6356 amit.gupta 297
	bool isCodApplicable(1:string couponCode) throws (1:PromotionException pex),
1984 varun.gupt 298
	list<Promotion> getAllPromotions() throws (1:PromotionException pex),
299
	Promotion getPromotionById(1:i64 promotionId) throws (1:PromotionException pex),
300
	void generateCouponsForPromotion(1:i64 promotionId, 2:string couponCode) throws (1:PromotionException pex),
301
	Cart applyCoupon(1:string couponCode, 2:i64 cartId) throws (1:PromotionException pex),
302
    void trackCouponUsage(1:string couponCode, 2:i64 transactionId, 3:i64 userId) throws (1:PromotionException pex),
3385 varun.gupt 303
    i64 getCouponUsageCountByUser(1:string couponCode, 2:i64 userId) throws (1:PromotionException pex),
304
 
305
    /**
306
     Returns a list of active coupons
307
     */
308
    list<Coupon> getActiveCoupons() throws (1:PromotionException pex),
309
 
310
    /**
6250 amit.gupta 311
     Creates a coupon and returns couponcode if successfully created
312
     */
6356 amit.gupta 313
    string createCoupon(1:i64 promotionId, 2:i64 endOn, 3:string email, 4:i64 amount, 5:bool isCod, 6:i64 usage) throws (1:PromotionException pex),
6250 amit.gupta 314
 
315
    /**
3385 varun.gupt 316
     Returns the count of successful payments done using a given coupon
317
     */
318
    i64 getSuccessfulPaymentCountForCoupon(1:string couponCode) throws (1:PromotionException pex),
319
 
320
    /**
321
     Returns the doc string of the rule module
322
     */
4189 varun.gupt 323
    string getRuleDocString(1:string ruleName),
324
 
4494 varun.gupt 325
    list<ItemCouponDiscount> getItemDiscountMap(1:list<i64> itemIds) throws (1:PromotionException pex),
326
 
5469 rajveer 327
    map<string, double> getDiscountsForEntity(1:i64 entityId),
328
 
329
    void addVoucher(1:Voucher voucher),
330
    Voucher assignVoucher(1:i64 userId, 2:string userEmail, 3:VoucherType voucherType, 4:i64 amount),
331
    bool markVoucherAsRedeemed(1:string voucherCode, 2:i64 redeemedOn)
1984 varun.gupt 332
}
333
 
334
/**
48 ashish 335
service
336
*/
3374 rajveer 337
service UserContextService extends GenericService.GenericService{
763 rajveer 338
 
552 chandransh 339
	User createAnonymousUser(1:string jsessionId) throws (1:UserContextException ucex),
340
	User getUserById(1:i64 userId) throws (1:UserContextException ucex),
5326 rajveer 341
	User getUserByCartId(1:i64 cartId) throws (1:UserContextException ucex),
1491 vikas 342
	User getUserByEmail(1:string email) throws (1:UserContextException ucex),
3026 mandeep.dh 343
    User getUserByMobileNumber(1:i64 mobileNumber) throws (1:UserContextException ucex),
552 chandransh 344
	User createUser(1:User user) throws (1:UserContextException ucex),
345
	User updateUser(1:User user) throws (1:UserContextException ucex),
346
	User authenticateUser(1:string email, 2:string password) throws (1:AuthenticationException auex),
347
	bool userExists(1:string email) throws (1:UserContextException ucx),
566 rajveer 348
	i64 addAddressForUser(1:i64 userId, 2:Address address, 3:bool setDefault)throws (1:UserContextException ucx),
48 ashish 349
	bool removeAddressForUser(1:i64 userid, 2:i64 addressId)throws (1:UserContextException ucx),
350
	bool setUserAsLoggedIn(1:i64 userId, 2:i64 timestamp)throws (1:UserContextException ucx),
351
	bool setUserAsLoggedOut(1:i64 userid, 2:i64 timestamp)throws (1:UserContextException ucx),
506 rajveer 352
	bool setDefaultAddress(1:i64 userid, 2:i64 addressId)throws (1:UserContextException ucx),
592 rajveer 353
	bool updatePassword(1:i64 userid, 2:string oldPassword, 3:string newPassword)throws (1:UserContextException ucx),
895 rajveer 354
	bool forgotPassword(1:string email, 2:string newPassword)throws (1:UserContextException ucx),
592 rajveer 355
	list<Address> getAllAddressesForUser(1:i64 userId)throws (1:UserContextException ucx),
1892 vikas 356
	Address getAddressById(1:i64 addressId)throws (1:UserContextException ucx),
592 rajveer 357
	i64 getDefaultAddressId(1:i64 userId)throws (1:UserContextException ucx),
783 rajveer 358
	string getDefaultPincode(1:i64 userId)throws (1:UserContextException ucx),
552 chandransh 359
 
1167 varun.gupt 360
	bool saveUserCommunication(1:i64 userId, 2:string replyTo, 3:i64 communicationType, 4:i64 orderId, 5:string airwaybillNo, 6:string productName, 7:string subject, 8:string message)throws (1:UserCommunicationException ucx)
1590 varun.gupt 361
	UserCommunication getUserCommunicationById(1:i64 id) throws (1:UserCommunicationException ucx)
362
	list<UserCommunication> getUserCommunicationByUser(1:i64 userId) throws (1:UserCommunicationException ucx)
363
	list<UserCommunication> getAllUserCommunications() throws (1:UserCommunicationException ucx)
5407 amar.kumar 364
	void removeUserCommunication(1:i64 id) throws (1:UserCommunicationException ucx)
1116 varun.gupt 365
 
1995 vikas 366
	MasterAffiliate createMasterAffiliate(1:string name, 2:i64 addedOn) throws (1:UserAffiliateException utx)
367
	list<MasterAffiliate> getAllMasterAffiliates() throws (1:UserAffiliateException utx)
368
	MasterAffiliate getMasterAffiliateById(1:i64 id) throws (1:UserAffiliateException utx)
369
    MasterAffiliate getMasterAffiliateByName(1:string name) throws (1:UserAffiliateException utx)
370
	Affiliate createAffiliate(1:string name, 2:string url, 3:i64 masterAffiliateId, 4:i64 addedOn) throws (1:UserAffiliateException utx)
371
	Affiliate getAffiliateById(1:i64 id) throws (1:UserAffiliateException utx)
372
	Affiliate getAffiliateByName(1:string name) throws (1:UserAffiliateException utx)
373
	Tracker getTrackerById(1:i64 id) throws (1:UserAffiliateException utx)
374
	list<Affiliate> getAffiliatesByMasterAffiliate(1:i64 id) throws (1:UserAffiliateException utx)
3379 vikas 375
	i64 addTrackLog(1:i64 affiliateId, 2:i64 userId, 3:TrackLogType event, 4:string url, 5:string data, 6:i64 addedOn) throws (1:UserAffiliateException utx)
1995 vikas 376
	TrackLog getTrackLogById(1:i64 id) throws (1:UserAffiliateException utx)
3293 vikas 377
	list<TrackLog> getTrackLogsByAffiliate(1:i64 affiliateId, 2:i64 startDate, 3:i64 endDate) throws (1:UserAffiliateException utx)
1995 vikas 378
	list<TrackLog> getTrackLogsByUser(1:i64 userId) throws (1:UserAffiliateException utx)
379
	list<TrackLog> getTrackLogs(1:i64 userId, 2:string event, 3:string url) throws (1:UserAffiliateException utx)
1848 vikas 380
 
552 chandransh 381
	Cart getCurrentCart(1:i64 userId) throws (1:ShoppingCartException scx),	
382
	Cart getCart(1:i64 cartId) throws (1:ShoppingCartException scx),
383
	list<Cart> getCartsByTime(1:i64 from_time, 2:i64 to_time, 3:CartStatus status) throws (1:ShoppingCartException scx),
3556 rajveer 384
	string addItemToCart(1:i64 cartId, 2:i64 itemId, 3:i64 quantity, 4:i64 sourceId) throws (1:ShoppingCartException scx),
552 chandransh 385
	void deleteItemFromCart(1:i64 cartId, 2:i64 itemId) throws (1:ShoppingCartException scx),
577 chandransh 386
	void addAddressToCart(1:i64 cartId, 2:i64 addressId) throws (1:ShoppingCartException scx),
5553 rajveer 387
	void addStoreToCart(1:i64 cartId, 2:i64 storeId) throws (1:ShoppingCartException scx),
1984 varun.gupt 388
	void applyCouponToCart(1:i64 cartId, 2:string couponCode, 3:double totalPrice, 4:double discountedPrice) throws (1:ShoppingCartException scx),
389
	void removeCoupon(1:i64 cartId) throws (1:ShoppingCartException scx),
687 chandransh 390
 
391
	/**
3554 varun.gupt 392
	Deletes all the discounts associated with the cart
393
	*/
394
	void deleteDiscountsFromCart(1:i64 cartId) throws (1:ShoppingCartException scx),
395
 
396
	/**
397
	Accepts a list of thrift objects of Discount type and saves them
398
	*/
399
	void saveDiscounts(1:list<Discount> discounts) throws (1:ShoppingCartException scx),
400
 
401
	/**
687 chandransh 402
	 Creates a transaction and multiple orders for the given cart. Returns the transaction ID created.
403
	*/
6389 rajveer 404
	i64 createOrders(1:i64 cartId, 2:string sessionSource, 3:i64 sessionStartTime, 4:string firstSource, 5:i64 firstSourceTime, 6:i64 userId, 7:i64 schemeId) throws (1:ShoppingCartException scx),
687 chandransh 405
 
406
	/**
407
	 Validates that:
408
	 1. The checkout timestamp is greater than the updatedOn timestamp.
1466 ankur.sing 409
	 2. All of the lines in the cart are active items.
687 chandransh 410
	 3. The estimate for any of the lines in cart doesn't change.
1466 ankur.sing 411
	 If all three are true, returns empty string; else returns appropriate message.
687 chandransh 412
	*/
3556 rajveer 413
	string validateCart(1:i64 cartId, 2:i64 sourceId) throws (1:ShoppingCartException scex),
552 chandransh 414
 
687 chandransh 415
	/**
416
	 Merges the lines from the first cart into the second cart. Lines with duplicate items are removed.
417
	*/
418
	void mergeCart(1:i64 fromCartId, 2:i64 toCartId),
419
 
420
	/**
421
	 Sets the checkedOutOn timestamp of the cart. Raises an exception if the specified cart can't be found.
422
	*/
423
	bool checkOut(1:i64 cartId) throws (1:ShoppingCartException scex),
424
 
425
	/**
426
	 The second parameter is a map of item ids and their quantities which have been successfully processed.
427
	 This methods removes the specified quantiry of the specified item from the cart.
770 rajveer 428
	 */
429
	bool resetCart(1:i64 cartId, 2:map<i64, double> items) throws (1:ShoppingCartException scex),
430
 
687 chandransh 431
 
1599 ankur.sing 432
	/**
433
	Returns number of registered users.
434
	If userType = null, then it returns count of all users, including anonymous
435
	If userType = UserType.ANONYMOUS, then it returns count of anonymous users only
436
	If userType = UserType.USER, then it returns count of non-anonymous users only
437
	*/
1672 ankur.sing 438
	i64 getUserCount(1:UserType userType),
1599 ankur.sing 439
 
1672 ankur.sing 440
	/**
1891 ankur.sing 441
	Returns list of users of type userType who registered between startDate and endDate (both inclusive).
442
	If any of startDate or endDate is -1, then that filter is ignored. 
443
	If userType is null, then returns all the users, irrespective of anonymous flag
444
 
1672 ankur.sing 445
	*/
2642 varun.gupt 446
	list<User> getAllUsers(1:UserType userType, 2:i64 startDate, 3:i64 endDate),
2717 varun.gupt 447
 
1599 ankur.sing 448
 
2981 rajveer 449
 
450
	/**
451
	Returns list of item ids in myresearch for the user
452
	*/
453
	list<i64> getMyResearchItems(1:i64 userId) throws (1:WidgetException scx),
454
	/**
455
	add item to my research for a user
456
	*/
457
	bool updateMyResearch(1:i64 userId, 2:i64 itemId) throws (1:WidgetException scx),
458
	/**
459
	delete item from my research for a user
460
	*/
461
	void deleteItemFromMyResearch(1:i64 userId, 2:i64 itemId) throws (1:WidgetException scx),
462
	/**
463
	Returns list of item ids in browse history for the user. It will return maximum 10 items.
464
	*/
465
	list<i64> getBrowseHistoryItems(1:i64 userId) throws (1:WidgetException scx),
466
	/**
467
	add item to browse history for a user
468
	*/
3385 varun.gupt 469
	void updateBrowseHistory(1:i64 userId, 2:i64 itemId),
470
 
471
	/**
472
	Returns count of Carts with given coupon applied
473
	*/
3499 mandeep.dh 474
	i64 getCartsWithCouponCount(1:string couponCode),
475
 
476
	/**
477
	 * Updates COD trust level of a user
478
	 */
4668 varun.gupt 479
	oneway void increaseTrustLevel(1:i64 userId, 2:double trustLevelDelta),
5407 amar.kumar 480
 
481
	/**
482
	 * Get trust level of a user
483
	 */	
484
	double getTrustLevel(1:i64 userId),
4668 varun.gupt 485
 
486
	/**
487
	 * Returns true/false depending on wether COD is allowed for a cart or not
488
	 */
489
	bool showCODOption(1:i64 cartId, 2:i64 sourceId, 3:string pincode)
5623 anupam.sin 490
 
491
	/**
492
	 * Get email addresses for users activated within a given date range
493
	 */
494
	list<string> getUserEmails(1:i64 startDate, 2:i64 endDate)
2642 varun.gupt 495
}