Bläddra i källkod

add current_state, msg_type
and fix a bug which occurs Type Error because of int + str

luojunhui 3 veckor sedan
förälder
incheckning
535564d9bb
2 ändrade filer med 28 tillägg och 4 borttagningar
  1. 16 0
      pqai_agent_server/api_server.py
  2. 12 4
      pqai_agent_server/models/mysql_session_manager.py

+ 16 - 0
pqai_agent_server/api_server.py

@@ -238,6 +238,14 @@ def get_staff_session_list():
 
     page_size = request.args.get("page_size", const.DEFAULT_PAGE_SIZE)
     page_id = request.args.get("page_id", const.DEFAULT_PAGE_ID)
+
+    # check params
+    try:
+        page_id = int(page_id)
+        page_size = int(page_size)
+    except Exception as e:
+        return wrap_response(404, msg="Invalid parameter: {}".format(e))
+
     staff_session_list = app.session_manager.get_staff_session_list(staff_id, page_id, page_size)
     if not staff_session_list:
         return wrap_response(404, msg="staff not found")
@@ -249,6 +257,14 @@ def get_staff_session_list():
 def get_staff_list():
     page_size = request.args.get("page_size", const.DEFAULT_PAGE_SIZE)
     page_id = request.args.get("page_id", const.DEFAULT_PAGE_ID)
+
+    # check params
+    try:
+        page_id = int(page_id)
+        page_size = int(page_size)
+    except Exception as e:
+        return wrap_response(404, msg="Invalid parameter: {}".format(e))
+
     staff_list = app.user_manager.get_staff_list(page_id, page_size)
     if not staff_list:
         return wrap_response(404, msg="staff not found")

+ 12 - 4
pqai_agent_server/models/mysql_session_manager.py

@@ -182,21 +182,28 @@ class MySQLSessionManager(SessionManager):
             temp_obj = {}
             user_id = session["user_id"]
             room_id = ":".join(["private", staff_id, user_id])
-            select_query = f"""select content, max(sendtime) as max_timestamp from {self.chat_history_table} where roomid = %s;"""
+            select_query = f"""
+                select content, max(sendtime) as max_timestamp, msg_type
+                from {self.chat_history_table} 
+                where roomid = %s;
+            """
             last_message = self.db.select(
                 sql=select_query,
                 cursor_type=pymysql.cursors.DictCursor,
                 args=(room_id,),
             )
             if not last_message:
-                temp_obj["message"] = ""
+                temp_obj["message"] = None
                 temp_obj["timestamp"] = 0
+                temp_obj["msg_type"] = None
             else:
                 temp_obj["message"] = last_message[0]["content"]
                 temp_obj["timestamp"] = last_message[0]["max_timestamp"]
+                temp_obj["msg_type"] = last_message[0]["msg_type"]
             temp_obj["user_id"] = user_id
             temp_obj["user_name"] = session["name"]
             temp_obj["avatar"] = session["iconurl"]
+            temp_obj["current_state"] = session["current_state"]
             response_data.append(temp_obj)
         return {
             "staff_id": staff_id,
@@ -218,7 +225,7 @@ class MySQLSessionManager(SessionManager):
         room_id = ":".join(["private", staff_id, user_id])
         if not page:
             fetch_query = f"""
-                select t1.sender, t2.name, t1.sendtime, t1.content, t2.iconurl
+                select t1.sender, t2.name, t1.sendtime, t1.content, t2.iconurl, t1.msg_type
                 from {self.chat_history_table} t1
                 join {self.user_table} t2 on t1.sender = t2.third_party_user_id
                 where roomid = %s
@@ -232,7 +239,7 @@ class MySQLSessionManager(SessionManager):
             )
         else:
             fetch_query = f"""
-                select t1.sender, t2.name, t1.sendtime, t1.content, t2.iconurl
+                select t1.sender, t2.name, t1.sendtime, t1.content, t2.iconurl, t1.msg_type
                 from {self.chat_history_table} t1
                 join {self.user_table} t2 on t1.sender = t2.third_party_user_id
                 where t1.roomid = %s and t1.sendtime <= %s
@@ -258,6 +265,7 @@ class MySQLSessionManager(SessionManager):
                     "avatar": message["iconurl"],
                     "content": message["content"],
                     "timestamp": message["sendtime"],
+                    "msg_type": message["msg_type"],
                     "role": "user" if message["sender"] == user_id else "staff",
                 }
                 for message in messages