YZProjectCloud/docsql/delete_personnel.py

164 lines
4.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
VO平台批量删除人员信息工具
根据admitGuid批量删除人员信息
"""
import requests
import json
import hashlib
import time
from typing import List
BASEURL = "http://wo-api.uni-ubi.com/"
ADMIT_DELETE = BASEURL + "v2/admit/delete"
PROJECTGUID = "A2BE33DBF303460FA27ED953D424B7D0"
PROJECTID = 199
APPKEY = "B08CE344534C477991C78CFA7C399589"
APPSECRET = "35D8F5F71DD9408585ADC0D26294031B"
DELGUIDS = "D10D8B66345D4E969F18398A892D24F8" #可以放多个
def md5(data: str) -> str:
"""
MD5加密
Args:
data: 输入字符串
Returns:
MD5加密后的字符串小写
"""
return hashlib.md5(data.encode('utf-8')).hexdigest().lower()
def get_auth_token() -> dict:
"""
获取认证token
Returns:
包含token和projectGuid的字典
"""
timestamp = str(int(time.time() * 1000))
sign_str = APPKEY + timestamp + APPSECRET
sign = md5(sign_str)
headers = {
'appKey': APPKEY,
'timestamp': timestamp,
'sign': sign,
'projectGuid': PROJECTGUID
}
url = f"{BASEURL}v1/{PROJECTGUID}/auth"
try:
response = requests.get(url, headers=headers, timeout=30)
result = response.json()
if result.get('result') == 1:
return {
'token': result.get('data'),
'projectGuid': PROJECTGUID
}
return None
except Exception as e:
print(f"获取token失败: {e}")
return None
def delete_personnel(admit_guid: str, token_info: dict) -> dict:
"""
删除人员信息
Args:
admit_guid: 人员admitGuid
token_info: 认证token信息
Returns:
删除结果
"""
timestamp = str(int(time.time() * 1000))
sign_str = APPKEY + timestamp + APPSECRET
sign = md5(sign_str)
headers = {
'appKey': APPKEY,
'timestamp': timestamp,
'token': token_info['token'],
'sign': sign,
'projectGuid': PROJECTGUID
}
payload = {
'projectId': PROJECTID,
'admitGuids': admit_guid
}
try:
response = requests.post(ADMIT_DELETE, json=payload, headers=headers, timeout=30)
result = response.json()
return result
except requests.exceptions.RequestException as e:
return {'success': False, 'error': str(e)}
def main():
"""主函数"""
print('=' * 60)
print('VO平台批量删除人员信息工具')
print('=' * 60)
admit_guids = [guid.strip() for guid in DELGUIDS.split(',') if guid.strip()]
print(f'\n{len(admit_guids)} 个admitGuid待删除:')
for i, guid in enumerate(admit_guids, 1):
print(f' {i}. {guid}')
print('\n正在获取认证token...')
token_info = get_auth_token()
if not token_info:
print('获取token失败无法继续删除操作')
return
print('✓ token获取成功')
print('\n开始删除...')
success_count = 0
fail_count = 0
failed_guids = []
for i, guid in enumerate(admit_guids, 1):
print(f'\n正在删除第 {i} 个 ({guid})...')
result = delete_personnel(guid, token_info)
if result.get('result') == 1 or result.get('success'):
print(f' ✓ 第 {i} 个删除成功')
success_count += 1
else:
print(f' ✗ 第 {i} 个删除失败')
if 'msg' in result:
print(f' 错误信息: {result.get("msg")}')
fail_count += 1
failed_guids.append(guid)
print('\n' + '=' * 60)
print('删除结果统计:')
print('=' * 60)
print(f'成功: {success_count}')
print(f'失败: {fail_count}')
if fail_count == 0:
print('\n✓ 所有人员信息删除成功!')
else:
print(f'\n✗ 部分人员信息删除失败!')
print(f' 失败的admitGuid: {",".join(failed_guids)}')
if __name__ == '__main__':
main()