Files
saas/test/update_member(1).py
T
2025-08-12 13:43:10 +08:00

97 lines
3.9 KiB
Python

from api import API
from config import Config
import pandas as pd
from log_config import configure_task_logger, configure_error_task_logger
from tqdm import tqdm
# 初始化API实例
api_instance = API()
# 获取已经配置好的常规日志记录器
logger = configure_task_logger()
# 获取已经配置好的错误任务日志记录器
error_task_logger = configure_error_task_logger()
class update_member:
def __init__(self):
# 初始化一些必要的变量
self.target_columns = ["_widget_1734062123102", "_widget_1734062123103", "_widget_1734062123105",
"_widget_1734062123204"]
def get_ngv_data(self):
"""获取NGV数据"""
try:
payload1 = {"api_key": "675b900991ad2491c69389ca", "entry_id": "675bb02bd2d53c2034c665e4"}
NGV_data_list = api_instance.entry_data_list(payload1).get("data")
NGV_data = pd.DataFrame(NGV_data_list)
logger.info("NGV数据已成功获取")
return NGV_data
except Exception as e:
error_task_logger.error(f"获取NGV数据失败:{e}")
return None
def get_staff_id(self):
"""获取简道云员工id"""
try:
payload2 = {"api_key": "6694d3c4fcb69ca9a111a6c4", "entry_id": "6769204a1902c9341340a1bc"}
staff_id_list = api_instance.entry_data_list(payload2).get("data")
name_to_id = {}
for item in staff_id_list:
name = item.get('_widget_1734942794144')
number = item.get('_widget_1734942794145')
if name and number: # 确保两个字段都存在
name_to_id[name] = number
logger.info("员工id映射已生成")
return name_to_id
except Exception as e:
error_task_logger.error(f"获取简道云员工id失败:{e}")
return None
def update_ngv_data(self, NGV_data, name_to_id):
"""更新NGV数据"""
try:
for col in self.target_columns:
NGV_data[f"{col}_ID"] = NGV_data[col].map(lambda name: name_to_id.get(name, ""))
logger.info("NGV数据已更新")
return NGV_data
except Exception as e:
error_task_logger.error(f"更新NGV数据失败:{e}")
return None
def write_back_data(self, NGV_data):
"""写回数据"""
try:
for index, row in tqdm(NGV_data.iterrows()):
data1 = {"api_key": Config.SaaS_Tasks_APP_ID,
"entry_id": Config.NGV_TASKS_ENTRY_ID,
"data_id": row['_id'],
"data": {"_widget_1748496855778": {"value": row["_widget_1734062123103_ID"]}, # 续约顾问
"_widget_1748496855779": {"value": row["_widget_1734062123102_ID"]}, # 区域经理
"_widget_1748496855780": {"value": row["_widget_1734062123105_ID"]}, # 运营负责人
"_widget_1751877712235": {"value": row["_widget_1734062123204_ID"]}, # 运营专家
}
}
api_instance.entry_data_update(data1)
logger.info("数据写回完成")
except Exception as e:
error_task_logger.error(f"数据写回失败:{e}")
def main(self):
"""主函数"""
logger.info("每日任务开始执行")
NGV_data = self.get_ngv_data()
if NGV_data is not None:
name_to_id = self.get_staff_id()
if name_to_id is not None:
updated_NGV_data = self.update_ngv_data(NGV_data, name_to_id)
if updated_NGV_data is not None:
self.write_back_data(updated_NGV_data)
logger.info("每日任务执行完成")
if __name__ == '__main__':
daily_task = update_member()
daily_task.main()