File size: 3,859 Bytes
325b400
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
import pymysql
import pandas as pd
from sqlalchemy import create_engine
import os
from dotenv import load_dotenv

from dotenv import load_dotenv, find_dotenv

# Tự động tìm file .env gần nhất trong cây thư mục cha
load_dotenv(find_dotenv(), override=True)


DB_HOST = os.getenv("DB_HOST")
DB_USER = os.getenv("DB_USER")
DB_PASSWORD = os.getenv("DB_PASSWORD")
DB_NAME =  os.getenv("DB_NAME")
DB_PORT =  os.getenv("DB_PORT")

# Tạo connection string
import os
from urllib.parse import quote

password = os.getenv("DB_PASSWORD")
DB_PASSWORD = quote(password)
# Tạo connection string
connection_uri = f"mysql+pymysql://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/{DB_NAME}"
# db_url = "mysql+pymysql://root@127.0.0.1:3306/demohmdrinks" 
db_url = connection_uri
engine = create_engine(db_url)


# # Kết nối đến MySQL
# conn = pymysql.connect(
#     host="localhost",
#     user="root",
#     password="Yahana0509@",
#     database="demohmdrinks",
#     port=4000,
#     charset="utf8mb4"
# )


async def get_data_recommend():
    #Lây danh sách yêu thích
    query_favourite_items = """

SELECT f.user_id, fi.pro_id

FROM favourite_item fi

JOIN favourite f ON fi.fav_id = f.fav_id

JOIN product p ON fi.pro_id = p.pro_id

WHERE  p.is_deleted = FALSE;

"""
    df_favourite_items = pd.read_sql(query_favourite_items, con=engine)
    favourite_items_data = {
    "user_id": df_favourite_items["user_id"].tolist(),
    "product_id": df_favourite_items["pro_id"].tolist()
}
    
    #Lấy danh sách Rating
    query_rating = """ SELECT re.user_id, re.pro_id, re.rating_star 

    FROM review re 

    JOIN product p ON re.pro_id = p.pro_id

    WHERE  p.is_deleted = FALSE AND re.is_deleted = FALSE ;"""
    df_rating = pd.read_sql(query_rating, con=engine)
    reviews_data = {
    "user_id": df_rating["user_id"].tolist(),
    "product_id": df_rating["pro_id"].tolist(),
    "rating": df_rating["rating_star"].tolist()
}
    
    #Lấy danh sách sản phẩm
    query_products = """

    SELECT p.pro_id, p.pro_name, c.cate_name AS category

    FROM product p

    JOIN category c ON p.category_id = c.cate_id

    WHERE p.is_deleted = FALSE;

"""
    df_products = pd.read_sql(query_products, con=engine)
    products_data = {
    "product_id": df_products["pro_id"].tolist(),
    "name": df_products["pro_name"].tolist(),
    "category": df_products["category"].tolist()
}
    
    #Lấy lịch sử mua hàng
    query_item_cart_new = """

SELECT c.user_id, ci.pro_id

FROM cart c

JOIN cart_item ci ON c.cart_id = ci.cart_id

JOIN product p ON ci.pro_id = p.pro_id

WHERE 

  c.status = 'NEW'

  AND ci.is_deleted = FALSE

  AND p.is_deleted = FALSE;

    """
    df_cart_new_items= pd.read_sql(query_item_cart_new, con=engine)
    cart_new_items_data = {
    "user_id": df_cart_new_items["user_id"].tolist(),
    "product_id": df_cart_new_items["pro_id"].tolist()
}
    
    query_history = """

SELECT o.user_id, ci.pro_id AS product_id

FROM `orders` o

JOIN order_item oi ON o.order_id = oi.order_id

JOIN cart c ON oi.cart_id = c.cart_id

JOIN cart_item ci ON c.cart_id = ci.cart_id

JOIN product pro ON pro.pro_id = ci.pro_id

JOIN payments p ON o.order_id = p.order_id

WHERE o.status = 'CONFIRMED'

  AND p.status = 'SUCCESS'

  AND pro.is_deleted = FALSE



UNION ALL



SELECT c.user_id, ci.pro_id AS product_id

FROM cart c

JOIN cart_item ci ON c.cart_id = ci.cart_id

ORDER BY user_id, product_id;

"""

# Đọc dữ liệu vào DataFrame
    df_history = pd.read_sql(query_history, con=engine)
    order_history_data = {
    "user_id": df_history["user_id"].tolist(),
    "product_id": df_history["product_id"].tolist()
}
    
    return favourite_items_data,reviews_data,products_data,order_history_data,cart_new_items_data