YZProjectCloud/docsql/delete_personnel.py

164 lines
4.0 KiB
Python
Raw Normal View History

#!/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()