97 lines
3.9 KiB
Python
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()
|