| 19365 |
kshitij.so |
1 |
from elixir import *
|
|
|
2 |
import datetime
|
|
|
3 |
from dtr.utils.utils import get_mongo_connection, to_java_date
|
|
|
4 |
from shop2020.model.v1.order.impl import DataService as OrderDataService
|
|
|
5 |
from shop2020.model.v1.catalog.impl import DataService as CatalogDataService
|
|
|
6 |
from shop2020.model.v1.order.impl.DataService import Order, LineItem
|
|
|
7 |
from shop2020.model.v1.catalog.impl.DataService import Item
|
|
|
8 |
from shop2020.thriftpy.model.v1.order.ttypes import OrderStatus, OrderSource
|
| 19370 |
kshitij.so |
9 |
import shutil
|
| 19365 |
kshitij.so |
10 |
|
|
|
11 |
dtrUserMap = {}
|
|
|
12 |
|
|
|
13 |
negative_items = []
|
| 19371 |
kshitij.so |
14 |
negative_categories = [10013,10017,10006]
|
| 19365 |
kshitij.so |
15 |
|
|
|
16 |
pending_order_status = [2,3,4,5,6,7,8,13,9,10,16,17,81,80, 40]
|
|
|
17 |
|
|
|
18 |
startDate = datetime.datetime.strptime('01-04-2016 00:00:00', '%d-%m-%Y %H:%M:%S')
|
|
|
19 |
endDate = datetime.datetime.strptime('01-05-2016 00:00:00', '%d-%m-%Y %H:%M:%S')
|
|
|
20 |
run_time = to_java_date(datetime.datetime.now())
|
|
|
21 |
|
| 19370 |
kshitij.so |
22 |
cache_path = "/var/www/dtrdashboard/app/tmp/cache/target/"
|
| 19365 |
kshitij.so |
23 |
|
| 19370 |
kshitij.so |
24 |
|
| 19365 |
kshitij.so |
25 |
class UserOrderData:
|
|
|
26 |
def __init__(self, dtr_user_id, delivered_order_value, pending_order_value):
|
|
|
27 |
self.dtr_user_id = dtr_user_id
|
|
|
28 |
self.delivered_order_value = delivered_order_value
|
|
|
29 |
self.pending_order_value = pending_order_value
|
|
|
30 |
|
|
|
31 |
def fetchNegativeItems():
|
|
|
32 |
global negative_items
|
|
|
33 |
try:
|
|
|
34 |
CatalogDataService.initialize('catalog', '192.168.190.114', False)
|
|
|
35 |
itemIds = session.query(Item.id).filter(Item.category.in_(negative_categories)).all()
|
|
|
36 |
negative_items = list(zip(*itemIds)[0])
|
|
|
37 |
finally:
|
|
|
38 |
session.close()
|
|
|
39 |
|
|
|
40 |
def main():
|
|
|
41 |
all_users = get_mongo_connection().Catalog.PromoOffer.find({},{'user_id':1,'saholic_user_id':1})
|
|
|
42 |
for user in all_users:
|
|
|
43 |
dtrUserMap[user.get('saholic_user_id')] = UserOrderData(user.get('user_id'), 0, 0)
|
|
|
44 |
|
|
|
45 |
def fetchOrders():
|
|
|
46 |
global dtrUserMap
|
|
|
47 |
OrderDataService.initialize('transaction', '192.168.190.114', setup=False)
|
|
|
48 |
try:
|
|
|
49 |
for user_id in dtrUserMap.keys():
|
|
|
50 |
delivered_orders = session.query(Order.customer_id, LineItem.item_id, LineItem.total_price) \
|
|
|
51 |
.join((LineItem,Order.id==LineItem.order_id)).filter(Order.customer_id==user_id).filter(Order.created_timestamp>startDate).filter(Order.created_timestamp<endDate).filter(Order.status==OrderStatus.DELIVERY_SUCCESS).filter(Order.source==OrderSource.WEBSITE).all()
|
|
|
52 |
delivered_order_value = 0
|
|
|
53 |
pending_order_value = 0
|
|
|
54 |
for delivered_order in delivered_orders:
|
|
|
55 |
if delivered_order[1] in negative_items:
|
|
|
56 |
continue
|
|
|
57 |
delivered_order_value = delivered_order_value + delivered_order[2]
|
|
|
58 |
|
|
|
59 |
pending_orders = session.query(Order.customer_id, LineItem.item_id, LineItem.total_price) \
|
|
|
60 |
.join((LineItem,Order.id==LineItem.order_id)).filter(Order.customer_id==user_id).filter(Order.created_timestamp>startDate).filter(Order.created_timestamp<endDate).filter(Order.status.in_(pending_order_status)).filter(Order.source==OrderSource.WEBSITE).all()
|
|
|
61 |
for pending_order in pending_orders:
|
|
|
62 |
if pending_order[1] in negative_items:
|
|
|
63 |
continue
|
|
|
64 |
pending_order_value = pending_order_value + pending_order[2]
|
|
|
65 |
user_order_obj = dtrUserMap.get(user_id)
|
|
|
66 |
user_order_obj.delivered_order_value = delivered_order_value
|
|
|
67 |
user_order_obj.pending_order_value = pending_order_value
|
|
|
68 |
finally:
|
|
|
69 |
session.close()
|
|
|
70 |
|
|
|
71 |
def commit():
|
|
|
72 |
for k, v in dtrUserMap.iteritems():
|
|
|
73 |
get_mongo_connection().Catalog.PromoOffer.update({'user_id':v.dtr_user_id},{"$set":{'pending_order_value':v.pending_order_value,'delivered_order_value':v.delivered_order_value,'last_run_timestamp': run_time}})
|
|
|
74 |
|
| 19370 |
kshitij.so |
75 |
def removeCache():
|
|
|
76 |
shutil.rmtree(cache_path)
|
|
|
77 |
|
| 19365 |
kshitij.so |
78 |
if __name__ == '__main__':
|
|
|
79 |
main()
|
|
|
80 |
fetchNegativeItems()
|
|
|
81 |
fetchOrders()
|
|
|
82 |
commit()
|
| 19370 |
kshitij.so |
83 |
removeCache()
|
| 19365 |
kshitij.so |
84 |
|