Quellcode durchsuchen

过滤订单表中已经歇业的商户数据

Sherlock vor 10 Monaten
Ursprung
Commit
7de36e222d
4 geänderte Dateien mit 50 neuen und 20 gelöschten Zeilen
  1. 14 14
      api_test.py
  2. 0 0
      data/Readme.md
  3. 33 3
      database/dao/mysql_dao.py
  4. 3 3
      models/recommend.py

+ 14 - 14
api_test.py

@@ -1,24 +1,24 @@
 import requests
 import json
 
-# url = "http://127.0.0.1:7960/brandcultivation/api/v1/recommend"
-# payload = {
-#     "city_uuid": "00000000000000000000000011445301",
-#     "product_code": "440298",
-#     "recall_cust_count": 500,
-#     "delivery_count": 5000
-# }
-# headers = {'Content-Type': 'application/json'}
-
-# response = requests.post(url, data=json.dumps(payload), headers=headers)
-# print(response.json())
-
-url = "http://127.0.0.1:7960/brandcultivation/api/v1/report"
+url = "http://127.0.0.1:7960/brandcultivation/api/v1/recommend"
 payload = {
     "city_uuid": "00000000000000000000000011445301",
     "product_code": "440298",
+    "recall_cust_count": 500,
+    "delivery_count": 5000
 }
 headers = {'Content-Type': 'application/json'}
 
 response = requests.post(url, data=json.dumps(payload), headers=headers)
-print(response.json())
+print(response.json())
+
+# url = "http://127.0.0.1:7960/brandcultivation/api/v1/report"
+# payload = {
+#     "city_uuid": "00000000000000000000000011445301",
+#     "product_code": "440298",
+# }
+# headers = {'Content-Type': 'application/json'}
+
+# response = requests.post(url, data=json.dumps(payload), headers=headers)
+# print(response.json())

+ 0 - 0
data/Readme.md


+ 33 - 3
database/dao/mysql_dao.py

@@ -43,12 +43,31 @@ class MySqlDao:
         data = self.db_helper.load_data_with_page(query, params)
         return data
     
+    # def load_order_data(self, city_uuid):
+    #     """从数据库中读取订单信息"""
+    #     query = f"SELECT * FROM {self._order_tablename} WHERE city_uuid = :city_uuid"
+    #     params = {"city_uuid": city_uuid}
+        
+    #     data = self.db_helper.load_data_with_page(query, params)
+    #     data.drop('stat_month', axis=1, inplace=True)
+    #     data.drop('city_uuid', axis=1, inplace=True)
+        
+    #     return data
+    
     def load_order_data(self, city_uuid):
         """从数据库中读取订单信息"""
-        query = f"SELECT * FROM {self._order_tablename} WHERE city_uuid = :city_uuid"
+        cust_list = self.get_cust_list(city_uuid)
+         
+        cust_id_str = ",".join([f"'{cust_id}'" for cust_id in cust_list])
+        query = f"""
+            SELECT *
+            FROM {self._order_tablename}
+            WHERE city_uuid = :city_uuid
+            AND cust_code IN ({cust_id_str})
+        """
         params = {"city_uuid": city_uuid}
-        
         data = self.db_helper.load_data_with_page(query, params)
+        
         data.drop('stat_month', axis=1, inplace=True)
         data.drop('city_uuid', axis=1, inplace=True)
         
@@ -150,12 +169,16 @@ class MySqlDao:
         """获取指定香烟列表的所有售卖记录"""
         if not product_ids:
             return None
+        cust_list = self.get_cust_list(city_uuid)
+         
+        cust_id_str = ",".join([f"'{cust_id}'" for cust_id in cust_list])
         
         product_ids_str = ",".join([f"'{product_code}'" for product_code in product_ids])
         query = f"""
             SELECT *
             FROM {self._order_tablename}
             WHERE city_uuid = :city_uuid
+            AND cust_code IN ({cust_id_str})
             AND product_code IN ({product_ids_str})
         """
         params = {"city_uuid": city_uuid}
@@ -164,10 +187,15 @@ class MySqlDao:
         return data
     
     def get_order_by_product(self, city_uuid, product_id):
+        cust_list = self.get_cust_list(city_uuid)
+         
+        cust_id_str = ",".join([f"'{cust_id}'" for cust_id in cust_list])
+        
         query = f"""
             SELECT *
             FROM {self._order_tablename}
             WHERE city_uuid = :city_uuid
+            AND cust_code IN ({cust_id_str})
             AND product_code = :product_id
         """
         params = {"city_uuid": city_uuid, "product_id": product_id}
@@ -213,7 +241,9 @@ class MySqlDao:
         return data
     
     def get_product_from_order(self, city_uuid):
-        query = f"SELECT DISTINCT product_code FROM {self._order_tablename} WHERE city_uuid = :city_uuid"
+        cust_list = self.get_cust_list(city_uuid)
+        cust_id_str = ",".join([f"'{cust_id}'" for cust_id in cust_list])
+        query = f"SELECT DISTINCT product_code FROM {self._order_tablename} WHERE city_uuid = :city_uuid AND cust_code IN ({cust_id_str})"
         params = {"city_uuid": city_uuid}
         
         data = pd.DataFrame(self.db_helper.fetch_all(text(query), params))

+ 3 - 3
models/recommend.py

@@ -69,7 +69,7 @@ class Recommend:
         # 获取推理用的feats_map
         feats_map = generate_feats_map(product_data, cust_data)
         recommend_list = self._gbdtlr_model.get_recommend_list(feats_map, recall_cust_list)
-        recommend_list = self.filter_recommend_list(recommend_list)
+        # recommend_list = self.filter_recommend_list(recommend_list)
         return recommend_list
     
     def get_recommend_list_by_item2vec(self, product_id, recall_count=500):
@@ -77,9 +77,9 @@ class Recommend:
         recommend_list = self._item2vec_model.get_recommend_cust_list(product_id, top=recall_count)
         recommend_list = recommend_list.drop(columns=["sale_qty"])
         recommend_list = recommend_list.to_dict(orient='records')
-        recommend_list = self.filter_recommend_list(recommend_list[:recall_count])
+        recommend_list = recommend_list[:recall_count]
+        # recommend_list = self.filter_recommend_list(recommend_list)
         return recommend_list
-        # return recommend_list
         
     def filter_recommend_list(self, recommend_list):
         """过滤掉已经歇业的商铺"""