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