Files
saas/back_ground_module/update_ID_form.py
T
2025-08-12 13:43:10 +08:00

113 lines
4.0 KiB
Python

import requests
import json
import pandas as pd
from api import API
from config import Config
from log_config import configure_task_logger, configure_error_task_logger
from back_ground_module import CommonModule
from datetime import datetime
# 初始化API实例
api_instance = API()
# 获取已经配置好的常规日志记录器
logger = configure_task_logger()
# 获取已经配置好的错误任务日志记录器
error_task_logger = configure_error_task_logger()
common_module = CommonModule()
class update_ID_form:
"""更新简道云员工ID表"""
def __init__(self):
self.headers = {
'Authorization': Config.JIANDAOYUN_API_TOKEN, # 曹伟应用api测试 app_key
'Content-Type': 'application/json'
}
self.url = "https://api.jiandaoyun.com/api/v5/corp/department/user/list"
self.payload1 = {
"api_key": "6694d3c4fcb69ca9a111a6c4",
"entry_id": "6769204a1902c9341340a1bc",
}
self.delete_payload = {
"api_key": "6694d3c4fcb69ca9a111a6c4",
"entry_id": "6769204a1902c9341340a1bc",
}
self.update_payload = {
"api_key": "6694d3c4fcb69ca9a111a6c4",
"entry_id": "6769204a1902c9341340a1bc",
}
def get_department_members(self):
"""获取部门成员及ID表"""
try:
payload = json.dumps({
"dept_no": 1,
"has_child": True
})
response = requests.request("POST", self.url, headers=self.headers, data=payload)
search_department_member = response.json()
departments_members = search_department_member.get('users')
df1 = pd.DataFrame(departments_members)
logger.info("部门成员及ID表已成功获取")
return df1
except Exception as e:
error_task_logger.error(f"获取部门成员及ID表失败:{e}")
return None
def get_existing_id_form(self):
"""读取现有的ID表"""
try:
now_ID_form = api_instance.entry_data_list(self.payload1).get('data')
df = pd.DataFrame(now_ID_form)
logger.info("现有的ID表已成功读取")
return df
except Exception as e:
error_task_logger.error(f"读取现有的ID表失败:{e}")
return None
def delete_existing_data(self, df):
"""批量删除现有数据"""
try:
all_data = []
for index, i in df.iterrows():
all_data.append(i["_id"])
self.delete_payload["data_ids"] = all_data
api_instance.entry_data_batch_delete(self.delete_payload)
logger.info("现有数据已成功删除")
except Exception as e:
error_task_logger.error(f"批量删除现有数据失败:{e}")
def update_data(self, df1):
"""批量写入新数据"""
try:
all_data1 = []
for index, i in df1.iterrows():
all_data1.append({
"_widget_1734942794144": {"value": i["name"]},
"_widget_1734942794145": {"value": i["username"]},
})
self.update_payload["data_list"] = all_data1
api_instance.entry_data_batch_create(self.update_payload)
logger.info("新数据已成功写入")
except Exception as e:
error_task_logger.error(f"批量写入新数据失败:{e}")
def main(self):
"""主函数"""
task_start_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
logger.info("每日任务开始执行")
df1 = self.get_department_members()
if df1 is not None:
df = self.get_existing_id_form()
if df is not None:
self.delete_existing_data(df)
self.update_data(df1)
logger.info("每日任务执行完成")
common_module.send_task_status(task_start_time, "简道云员工ID表更新")
if __name__ == '__main__':
daily_task = update_ID_form()
daily_task.main()