From 9a5512ee38b853e080b160f117fa7fdbe0c04e9e Mon Sep 17 00:00:00 2001 From: Hoang Anh Date: Tue, 9 Aug 2022 08:43:31 +0700 Subject: [PATCH] ADD: lich su tim kiem --- app/src/models/history.py | 1 + app/src/models/post.py | 4 ++- app/src/routers/history.py | 50 ++++++++++++++++++++++++++++++-------- app/src/routers/post.py | 23 ++++++++++++------ 4 files changed, 59 insertions(+), 19 deletions(-) diff --git a/app/src/models/history.py b/app/src/models/history.py index 554992a..31e9144 100644 --- a/app/src/models/history.py +++ b/app/src/models/history.py @@ -60,6 +60,7 @@ class HistoryByUserModel(BaseModel): status: str = None note: str = None data: str = None + count: int = 0 class Config: orm_mode = True diff --git a/app/src/models/post.py b/app/src/models/post.py index 6d26faf..0c65c1d 100644 --- a/app/src/models/post.py +++ b/app/src/models/post.py @@ -3,6 +3,8 @@ from bson import ObjectId from pydantic import BaseModel, Field from typing import List, Optional, Union from datetime import datetime, time, timedelta +import pytz +tz = pytz.timezone('Asia/Ho_Chi_Minh') class PyObjectId(ObjectId): @@ -116,7 +118,7 @@ class UpdatePostModel(BaseModel): translation_post: Union[str, None] = None link: Union[str, None] = None is_active: bool - created_at: Optional[datetime] = None + created_at: Optional[datetime] = datetime.now(tz=tz) updated_at: Optional[datetime] = None specialist: str summary: str = None diff --git a/app/src/routers/history.py b/app/src/routers/history.py index 334e1f6..1232b26 100644 --- a/app/src/routers/history.py +++ b/app/src/routers/history.py @@ -78,13 +78,43 @@ async def get_list_post_view_by_username(token: str): return output -@history.get("/user_history_key_find", response_description="Get list history key find") -async def get_key_find_view_by_username(token: str): - data_token = await get_current_user(token) - user_name = data_token.get("user_name", None) - if user_name == None: - return JSONResponse(status_code=status.HTTP_401_UNAUTHORIZED, content={"message": "UNAUTHORIZED"}) - print(0) - history_find = await db["history"].find({"user_name": user_name, "status": "Tìm kiếm bài viết theo từ khóa"}).to_list(10) - print(history) - return history_find +@history.get("/user_history_key_find", response_description="Get list history key find", response_model=List[HistoryByUserModel]) +async def get_key_find_view_by_username(token: str = None): + if token != None: + data_token = await get_current_user(token) + user_name = data_token.get("user_name", None) + if user_name == None: + return JSONResponse(status_code=status.HTTP_401_UNAUTHORIZED, content={"message": "UNAUTHORIZED"}) + history_find = await db["history"].find({"user_name": user_name, "status": "Tìm kiếm bài viết theo từ khóa"}).sort("created_at", -1).to_list(1000) + all_user = [] + out_data = [] + i = 0 + print(history_find[0]) + + all_user.append(history_find[0]) + out_data.append(history_find[0]["data"]) + for dt in history_find: + if not dt["data"] in out_data: + all_user.append(dt) + out_data.append(dt["data"]) + i = i+1 + if i == 9: + break + return all_user + else: + history_find = await db["history"].find({"status": "Tìm kiếm bài viết theo từ khóa"}).sort("count", -1).to_list(1000) + all_user = [] + out_data = [] + i = 0 + print(history_find[0]) + + all_user.append(history_find[0]) + out_data.append(history_find[0]["data"]) + for dt in history_find: + if not dt["data"] in out_data: + all_user.append(dt) + out_data.append(dt["data"]) + i = i+1 + if i == 9: + break + return all_user diff --git a/app/src/routers/post.py b/app/src/routers/post.py index bfa3c71..4745c58 100644 --- a/app/src/routers/post.py +++ b/app/src/routers/post.py @@ -159,7 +159,7 @@ async def list_post( @post.post( "/find_list_post", response_description="search list posts" ) -async def list_post(key_find: str, token: str = None, history: HistoryFindModel = None): +async def find_list_post(key_find: str, token: str = None, history: HistoryFindModel = None): # point_data = ["point.less10", # "point.form10to20", # "point.form20to30", @@ -189,28 +189,35 @@ async def list_post(key_find: str, token: str = None, history: HistoryFindModel ] }).sort(age_sort, -1).to_list(100) output = [] + print("hoangf anh") + print(token) if token != None: + print(9) data_token = await get_current_user(token) data = data_token.get("user_name", None) + print(data) user_type = data_token.get("user_type", None) history.created_at = datetime.datetime.now(tz=tz) + print(90) history = jsonable_encoder(history) history_user = history history_user["user_name"] = data history_user["status"] = "Tìm kiếm bài viết theo từ khóa" history_user["note"] = "" history_user["data"] = key_find - # check_data = await db["history"].find_one({"data": key_find, "status": "Tìm kiếm bài viết theo từ khóa"}) - # print(check_data) - # count = check_data.get("count", None) - # if count != None: - # history_user["count"] = count + 1 - # else: - # history_user["count"] = 1 + check_data = await db["history"].find({"data": key_find, "status": "Tìm kiếm bài viết theo từ khóa"}).sort("created_at", -1).to_list(1) + print(check_data) + if check_data != []: + # print(check_data["count"]) + # print(type(check_data["count"])) + history_user["count"] = int(check_data[0]["count"]) + 1 + else: + history_user["count"] = 1 del history_user["_id"] del history_user["token"] del history_user["sick"] del history_user["authorities"] + print(history_user) history_new = await db["history"].insert_one(history_user) for post in posts: if data == None: