Răsfoiți Sursa

Editing handlers for work(new choose provider )

david.berlinskiy 1 an în urmă
părinte
comite
93219f2554

+ 40 - 29
handlers/open_servicerequest_assigned.py

@@ -27,7 +27,7 @@ PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
 print(JID, PASSWORD)
 
 #таким образом хранится список jid, от которых можно получать сообщения этому боту
-listen_to=["test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org"]
+listen_to=["open_servicerequest_booked@ej.sharix-app.org","open_servicerequest_pending@ej.sharix-app.org"]
 
 #тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
 proceed_to=[botname, "open_servicerequest_accepted@ej.sharix-app.org", "open_servicerequest_declined@ej.sharix-app.org", "open_servicerequest_forcemajeure@ej.sharix-app.org"]
@@ -46,7 +46,7 @@ def message_handler(conn, mess):
         print(mess)
 
         if text is not None:
-            orderObj = jsreq.jsonToOrderTicket(text)
+            orderObj = jsreq.jsonToOrder(text)
             print (orderObj)
             tasklist.append(orderObj)
             bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
@@ -67,26 +67,31 @@ def open_servicerequest_assigned_process(localtask):
     
     order = jsreq.jsonToOrder(localtask)
 
+    if provider!=None:
+        send_message(order)
+        if check_order(order)
+
+
     # Заглушка проверка бронирования без подтверждения
-    if True:
-        bot.proceed_status(proceed_to[0],localtask)
-        bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ отправлен\n")
-    else:
-        if order.asap:
-            # Заглушка. Отображение ответственному в приложении показывается заказ
-            send_message()
-            check_order(order)
-        else:
-            # Заглушка. Отображение в предварительных заказах назначенному исполнителю
-            send_message()
-            # Заглушка
-            if order.time_start_predicted > 100:
-                bot.proceed_status(proceed_to[0],localtask)
-                bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ подождал и отправлен в очередь\n")
-                return
-            # Заглушка. Отображение ответственному в приложении показывается заказ
-            send_message()
-            check_order(order)
+    # if True:
+    #     bot.proceed_status(proceed_to[0],localtask)
+    #     bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ отправлен\n")
+    # else:
+    #     if order.asap:
+    #         # Заглушка. Отображение ответственному в приложении показывается заказ
+    #         send_message(order)
+    #         check_order(order)
+    #     else:
+    #         # Заглушка. Отображение в предварительных заказах назначенному исполнителю
+    #         send_message()
+    #         # Заглушка
+    #         if order.time_start_predicted > 100:
+    #             bot.proceed_status(proceed_to[0],localtask)
+    #             bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ подождал и отправлен в очередь\n")
+    #             return
+    #         # Заглушка. Отображение ответственному в приложении показывается заказ
+    #         send_message()
+    #         check_order(order)
 
 def check_order(localtask):
     # Заглушка. Заказ принят?
@@ -97,11 +102,13 @@ def check_order(localtask):
         bot.proceed_status(proceed_to[2],localtask)
         bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ отправлен\n")
 
-def send_message():
-    pass
+
+
+
 
 def open_servicerequest_assigned():
     while (len(tasklist)):
+        
         localtask=tasklist.pop(0)
         bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Заказ в очереди на обработке\n")
         print("EACH TASKLIST", tasklist)
@@ -110,7 +117,11 @@ def open_servicerequest_assigned():
             bot.proceed_status(proceed_to[-1],localtask)
             bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ не по адресу, перенаправляем на форсмажор\n")
             continue
-
+        else:
+            bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Заказ в очереди на обработке\n")
+            t1=threading.Thread(target=open_servicerequest_assigned_wait, args=([localtask]))
+            t1.start()
+            continue
         # if (localtask.title!="10"):
         #     t1=threading.Thread(target=open_servicerequest_booked_wait, args=(5,localtask))
         #     t1.start()
@@ -133,13 +144,13 @@ def open_servicerequest_assigned():
 tasklist = []
 
 #надо инициализировать tasklist при запуске из API
-token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"/auth/token/login/")
-
+token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"my/api/v1/auth/token/login/")
 #ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
-tasklist=jsreq.requestGetList(token, config.API_URL+"/tickets/api/tickets/?list_id=10")
-print (len(tasklist))
+tasklist_database=jsreq.requestGetList(token, config.API_URL+"/dbsynce/api/orders/")
+# print (len(tasklist))
 
 bot = JabberBot(JID, PASSWORD, PORT)
 
 bot.register_handler('message', message_handler)
-bot.start(open_servicerequest_assigned)
+print(tasklist)
+bot.start(open_servicerequest_assigned)

+ 97 - 61
handlers/open_servicerequest_booked.py

@@ -27,10 +27,10 @@ PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
 print(JID, PASSWORD)
 
 #таким образом хранится список jid, от которых можно получать сообщения этому боту
-listen_to=["9090@ej.sharix-app.org","test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org","799999999990@ej.sharix-app.org"]
+listen_to=["799999999990@ej.sharix-app.org"]
 
 #тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
-proceed_to=["open_servicerequest_assigned@ej.sharix-app.org","open_servicerequest_process@ej.sharix-app.org", "open_servicerequest_pending@ej.sharix-app.org", "open_servicerequest_forcemajeure@ej.sharix-app.org"]
+proceed_to=["open_servicerequest_assigned@ej.sharix-app.org","open_servicerequest_pending@ej.sharix-app.org",  "open_servicerequest_forcemajeure@ej.sharix-app.org"]
 
 #максимальное значение попыток обработать заказ
 idle_value=10
@@ -42,8 +42,7 @@ def message_handler(conn, mess):
     if (str(user).split("/")[0]) in listen_to:
         # print (str(user).split("/")[0])
         if text is not None:
-            orderObj = jsreq.jsonToOrderTicket(text)
-            print (orderObj)
+            orderObj = jsreq.jsonToOrder(text)
             tasklist.append(orderObj)
             bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
 
@@ -59,35 +58,63 @@ def open_servicerequest_booked_wait(period,localtask):
 
 def open_servicerequest_booked_process(localtask):
     bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ в обработчике\n")
-    
-    order = jsreq.jsonToOrder(localtask)
+    # order = jsreq.jsonToOrder(localtask)
     #Пока заглушка
-    balance = get_balance(order.client_id)
-
     
-    price = order.real_price
-
-    if balance > price:
+        # balance = get_balance(order.client_id)
+        # print(balance)
+        # price = order.real_price
+        # if balance > price:
+        #     #Заказ на основного водителя?
+        #     if order.provider:
+        #         bot.proceed_status(proceed_to[1], localtask)
+        #         bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ успешно обработан\n")
+        #     else:
+        #         # Проверка срочности заказа
+        #         if order.asap:
+        #             #Заглушка назначение исполнителя системой
+        #             if set_provider(order.ticket, order.provider) == "success":
+        #                 bot.proceed_status(proceed_to[0], localtask)
+        #             else:
+        #                 bot.bot_log(botname+" "+str(datetime.now())+" "+"Ошибка назначения исполнителя\n")
+        #         else:
+        #             bot.proceed_status(proceed_to[1], localtask)
+        #         bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ успешно обработан\n")
+        # else:
+        #     # Заглушка получения оплаты от клиента
+        #     pass
+        # price = localtask.real_price
         #Заказ на основного водителя?
-        if order.provider:
-            bot.proceed_status(proceed_to[1], localtask)
-            bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ успешно обработан\n")
-        else:
-            # Проверка срочности заказа
-            if order.asap:
-                #Заглушка назначение исполнителя системой
-                if set_provider(order.ticket, order.provider) == "success":
-                    bot.proceed_status(proceed_to[0], localtask)
-                else:
-                    bot.bot_log(botname+" "+str(datetime.now())+" "+"Ошибка назначения исполнителя\n")
-            else:
-                bot.proceed_status(proceed_to[1], localtask)
-            
-            bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ успешно обработан\n")
+    if not localtask.provider:
+        if set_provider(localtask.id):
+            print('Водитель успешно установлен')
+        
+        
+    if localtask.asap:
+        
+        localtask.status = 220
+        bot.proceed_status(proceed_to[0], localtask)
+        bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ успешно обработан и отправлен на assigned\n")
     else:
-        # Заглушка получения оплаты от клиента
-        pass
-
+        
+        localtask.status = 212
+        bot.proceed_status(proceed_to[1], localtask)
+        bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ успешно обработан и отправлен на pending\n")
+        
+        # Проверка срочности заказа
+        # if order.asap:
+        #     #Заглушка назначение исполнителя системой
+        #     if set_provider(order.ticket, order.provider) == "success":
+        #         bot.proceed_status(proceed_to[0], localtask)
+        #     else:
+        #         bot.bot_log(botname+" "+str(datetime.now())+" "+"Ошибка назначения исполнителя\n")
+        # else:
+        #         localtask.status = 220
+        #         bot.proceed_status(proceed_to[0], localtask)
+        #         print(localtask)
+        # bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ успешно обработан и отправлен на assigned\n")
+        # Проверка срочности заказа
+        
 def get_balance(client):
     headers = {'Authorization': f'Token {token}'}
     # Передаем id пользователя и получаем его баланс
@@ -104,37 +131,47 @@ def get_balance(client):
             return balance
         except Exception as ex:
             print(ex)
+            
 #set provider?
-def set_provider(ticket, provider):
+def choose_provider(headers,geo):
+    providers=requests.get(config.API_URL+"/dbsynce/api/provider/",headers=headers)
+    provider=providers.json()[0]['id']
+    return provider
+    
+def set_provider(localtask_id):
+    
     headers = {'Authorization': f'Token {token}'}
-    data = {'ticket': ticket,
-            'provider': provider}
-    response = requests.post(config.API_URL+f"/api/example/set-provider", headers=headers, data=data)
-    print(response.json())
-    ordertext=response.json()
+    provider = choose_provider(headers,'geoposition')
+    print(provider)
+    data = {'provider':f'{provider}',}
+    print(str(config.API_URL+f"/dbsynce/api/orders/{localtask_id}/"))
+    response = requests.post(config.API_URL+f"/dbsynce/api/orders/{localtask_id}/", headers=headers, json=data)
+    return response
+
     
-    if not ordertext:
-        print("Empty array")
-    else:
-        print(ordertext[0], "PROCESSING")
-        try:
-            message = ordertext[0].get('message')
-            return message
-        except Exception as ex:
-            print(ex)
+    # if not ordertext:
+    #     print("Empty array")
+    # else:
+    #     print(ordertext[0], "PROCESSING")
+    #     try:
+    #         message = ordertext[0].get('message')
+    #         return message
+    #     except Exception as ex:
+    #         print(ex)
 
 def open_servicerequest_booked():
     while (len(tasklist)):
         localtask=tasklist.pop(0)
-        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Заказ в очереди на обработке\n")
-        print("EACH TASKLIST", tasklist)
-
-        if (localtask.status!=operating_status):
+        if (str(localtask.status)!=str(operating_status)):
             # bot.proceed_status(proceed_to[-1],localtask) #временная проверка отправки
-            bot.proceed_status(listen_to[-1],localtask)
+            bot.proceed_status(proceed_to[-1],localtask)
             bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ не по адресу, перенаправляем на форсмажор\n")
+            
+        else:
+            bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Заказ в очереди на обработке\n")
+            t1=threading.Thread(target=open_servicerequest_booked_process, args=([localtask]))
+            t1.start()
             continue
-
         # elif (localtask.provider==T):
         #     t1=threading.Thread(target=open_servicerequest_booked_wait, args=(5,localtask))
         #     t1.start()
@@ -142,31 +179,30 @@ def open_servicerequest_booked():
         # if (localtask.title=="101"):
         #     t1=threading.Thread(target=open_servicerequest_booked_process, args=(10,localtask))
         #     t1.start()
-        else:
-            t1=threading.Thread(target=open_servicerequest_booked_process, args=(localtask))
-            t1.start()
+        
         
         #если никакие обработчики не подошли - отправляем обратно в очередь
-        bot.proceed_status(proceed_to[0],localtask)
-        print("Заказ возвращен в очередь\n")
-        print(tasklist)
+        # bot.proceed_status(proceed_to[0],localtask)
+        # print("Заказ возвращен в очередь\n")
+        # print(tasklist)
 
 #Авторизация и запуск бота
 
 #пустой список заказов
 tasklist = []
 
-#надо инициализировать tasklist при запуске из API
+# #надо инициализировать tasklist при запуске из API
 token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"my/api/v1/auth/token/login/")
-#ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
+# #ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
 tasklist=jsreq.requestGetList(token, config.API_URL+"/dbsynce/api/orders/")
 
-# print (len(tasklist))
+# # print (len(tasklist))
 
 bot = JabberBot(JID, PASSWORD, PORT)
 
-bot.register_handler('message', message_handler)
-bot.start(open_servicerequest_booked)
 
 
+bot.register_handler('message', message_handler)
+bot.start(open_servicerequest_booked)
 
+# print(set_provider('localtask'))

+ 10 - 12
handlers/open_servicerequest_pending.py

@@ -27,10 +27,10 @@ PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
 print(JID, PASSWORD)
 
 #таким образом хранится список jid, от которых можно получать сообщения этому боту
-listen_to=["test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org","open_servicerequest_booked@ej.sharix-app.org"]
+listen_to=["open_servicerequest_booked@ej.sharix-app.org"]
 
 #тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
-proceed_to=[botname, "open_servicerequest_prestart@ej.sharix-app.org", "open_servicerequest_prestart@ej.sharix-app.org", "open_servicerequest_forcemajeure@ej.sharix-app.org"]
+proceed_to=[botname, "open_servicerequest_assigned@ej.sharix-app.org",  "open_servicerequest_forcemajeure@ej.sharix-app.org","799999999998@ej.sharix-app.org"]
 
 #максимальное значение попыток обработать заказ
 idle_value=10
@@ -40,13 +40,13 @@ def message_handler(conn, mess):
     text = mess.getBody()#текст сообщения боту
     user = mess.getFrom()#отправитель сообщения
    
-    print (str(user).split("/")[0])
+    # print (str(user).split("/")[0])
     if (str(user).split("/")[0]) in listen_to:
-        print(text)
-        print(mess)
+        # print(text)
+        # print(mess)
 
         if text is not None:
-            orderObj = jsreq.jsonToOrderTicket(text)
+            orderObj = jsreq.jsonToOrder(text)
             print (orderObj)
             tasklist.append(orderObj)
             bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
@@ -94,7 +94,7 @@ def open_servicerequest_pending():
     while (len(tasklist)):
         localtask=tasklist.pop(0)
         bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Заказ в очереди на обработке\n")
-        print("EACH TASKLIST", tasklist)
+        # print("EACH TASKLIST", tasklist)
 
         if (localtask.status!=operating_status):
             bot.proceed_status(proceed_to[-1],localtask)
@@ -115,19 +115,17 @@ def open_servicerequest_pending():
         #если никакие обработчики не подошли - отправляем обратно в очередь
         bot.proceed_status(proceed_to[0],localtask)
         print("Заказ возвращен в очередь\n")
-        print(tasklist)
+        # print(tasklist)
 
 #Авторизация и запуск бота
 
 #пустой список заказов
 tasklist = []
 
-#надо инициализировать tasklist при запуске из API
 token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"my/api/v1/auth/token/login/")
-
 #ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
-tasklist=jsreq.requestGetList(token, config.API_URL+"/webservice/api/webservice/")
-print (len(tasklist))
+tasklist_database=jsreq.requestGetList(token, config.API_URL+"/dbsynce/api/orders/")
+# print (len(tasklist))
 
 bot = JabberBot(JID, PASSWORD, PORT)
 

+ 33 - 0
handlers/order_functions.py

@@ -0,0 +1,33 @@
+import requests
+import xmpp
+from xmpp import cli
+import config
+from BotClass import JabberBot
+import json
+#раскомментировать, когда перейдем на разные пароли
+import hashlib
+from datetime import datetime
+
+import time
+import threading
+
+#test
+import jsonAndRequest as jsreq
+
+global tasklist
+
+
+def send_message(order):
+    task_apply = {
+        'driver_id':None,
+        'apply':False,
+        'task_id':order.id
+    }
+    print(order.id)
+    
+    bot.proceed_status('driver_jabber',task_apply)
+    
+def find_jabber_acc():
+    pass
+#поиск пользователя в джаббер для далнейшей отправки
+    

+ 7 - 0
handlers/starter.sh

@@ -0,0 +1,7 @@
+#!/bin/bash
+
+python3 open_servicerequest_booked.py
+python3 open_servicerequest_assigned.py
+python3 open_servicerequest_pending.py
+
+