feat(sign): 支持多环境配置和签名生成优化
- 新增开发环境和生产环境的配置管理 - 移除参数中的空格替换逻辑 - 更新默认搜索键和用户类型 - 支持通过命令行参数切换运行环境 - 自动构建完整请求URL用于curl测试 - 添加环境选择提示和错误处理机制main
parent
bab29150ab
commit
c1fa662552
|
|
@ -3,11 +3,30 @@ import time
|
||||||
import uuid
|
import uuid
|
||||||
import urllib.parse
|
import urllib.parse
|
||||||
import hashlib
|
import hashlib
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
# =================== 运行环境配置 ===================
|
||||||
|
CONFIG = {
|
||||||
|
"dev": {
|
||||||
|
"platform_ifc_system_code": "ef5b17caff6e4da19d6af82d539e894d",
|
||||||
|
"systemCode": "57395d2bc668496c9c57d8f2b19bd516",
|
||||||
|
"appId": "57395d2bc668496c9c57d8f2b19bd516",
|
||||||
|
"secret_key": "KMFHKo1Uzrl&MWXorbQIT&C$Qea$uQOY",
|
||||||
|
"ifcUrl": "http://192.168.1.202:8083/dev-api/cenertech-interface-center/IFC2"
|
||||||
|
},
|
||||||
|
"prod": {
|
||||||
|
"platform_ifc_system_code": "57395d2bc668496c9c57d8f2b19bd516",
|
||||||
|
"systemCode": "57395d2bc668496c9c57d8f2b19bd516",
|
||||||
|
"appId": "57395d2bc668496c9c57d8f2b19bd516",
|
||||||
|
"secret_key": "opS=K9Parlf&p+JxBOQD2q+zNZa+uXEE",
|
||||||
|
"ifcUrl": "https://dpc.cet.cnooc/prod-api/cenertech-interface-center/IFC2"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
# =================== MD5签名计算 ===================
|
# =================== MD5签名计算 ===================
|
||||||
def calculate_md5(param, secret_key):
|
def calculate_md5(param, secret_key):
|
||||||
# Java 规则:MD5(secretKey + param)
|
|
||||||
return hashlib.md5((secret_key + param).encode('utf-8')).hexdigest()
|
return hashlib.md5((secret_key + param).encode('utf-8')).hexdigest()
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -36,8 +55,6 @@ def create_sign(param_map, secret_key):
|
||||||
parts.append(f"{key}={val_str}")
|
parts.append(f"{key}={val_str}")
|
||||||
|
|
||||||
param = "&".join(parts)
|
param = "&".join(parts)
|
||||||
|
|
||||||
# Java逻辑: .replaceAll("\\s", "")
|
|
||||||
param = "".join(param.split())
|
param = "".join(param.split())
|
||||||
|
|
||||||
print("参数明文 param:", param)
|
print("参数明文 param:", param)
|
||||||
|
|
@ -50,22 +67,31 @@ def create_sign(param_map, secret_key):
|
||||||
|
|
||||||
# =================== Python 主程序 ===================
|
# =================== Python 主程序 ===================
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
platform_ifc_system_code = "9f5bbb73710c4a6a8923c278ffa00d50"
|
|
||||||
|
|
||||||
systemCode = "114ee506d80a479c8d106c4748d2d029"
|
# 选择 dev / prod
|
||||||
|
env = "dev"
|
||||||
|
if len(sys.argv) > 1:
|
||||||
|
env = sys.argv[1]
|
||||||
|
print(f"\n=== 当前环境:{env} ===\n")
|
||||||
|
|
||||||
appId = "114ee506d80a479c8d106c4748d2d029"
|
if env not in CONFIG:
|
||||||
secret_key = "31z&h7IhG6gba@ptz=F8FSr+C5-*OHy6"
|
print("❗ 错误:请使用 python sign.py dev 或 python sign.py prod")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
cfg = CONFIG[env]
|
||||||
|
|
||||||
|
systemCode = cfg["systemCode"]
|
||||||
|
appId = cfg["appId"]
|
||||||
|
secret_key = cfg["secret_key"]
|
||||||
|
platform_ifc_system_code = cfg["platform_ifc_system_code"]
|
||||||
|
ifcUrl = cfg["ifcUrl"]
|
||||||
|
|
||||||
ts = str(int(time.time() * 1000))
|
ts = str(int(time.time() * 1000))
|
||||||
randomString = uuid.uuid4().hex
|
randomString = uuid.uuid4().hex
|
||||||
|
|
||||||
selector = {
|
selector = {
|
||||||
"searchKeys": ["4555f083accb42c699fa222f85508404", "9bc5618ba6fa485aa2b3f88e37d34238",
|
"searchKeys": ["9cb864213c6f48ceaf90e98e7ca375e9","3DC1B33E1B5B431E99FA163BF9E86E6A","13336","b353614a47e2425a8a8885d270267407"],
|
||||||
"cf0e557530884526bd693341928885c6", "ffc7d0c4018b4c8cad0e8c70aae3698c",
|
"userType": "1",
|
||||||
"71985162af674df0bd1ca75d3e6e1984", "a704938ab033447ead129f1e7821d685",
|
|
||||||
"b761bd9a156a485ebed9a21c714b9807", "3fd5dd6c401b46e7b1178badb6723491", "13347", ],
|
|
||||||
"userType": "0",
|
|
||||||
"hasCascade": True
|
"hasCascade": True
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -80,9 +106,7 @@ if __name__ == '__main__':
|
||||||
|
|
||||||
sign = create_sign(param_map, secret_key)
|
sign = create_sign(param_map, secret_key)
|
||||||
|
|
||||||
ifcUrl = "https://dpc.cet.cnooc/prod-api/cenertech-interface-center/IFC2"
|
|
||||||
apiPath = "/userListByDeptSearch"
|
apiPath = "/userListByDeptSearch"
|
||||||
|
|
||||||
fullUrl = f"{ifcUrl}/{platform_ifc_system_code}{apiPath}"
|
fullUrl = f"{ifcUrl}/{platform_ifc_system_code}{apiPath}"
|
||||||
|
|
||||||
curl = f"""
|
curl = f"""
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue