Files
mp-java/scripts/hjc_test_push.py
T

102 lines
3.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
汇吉采 <-- 一站式:推送标书项目测试脚本(入向 POST /api/hjc/push/project
用法:
python hjc_test_push.py # 默认 http://uk.frp.one:62335
python hjc_test_push.py http://uk.frp.one:62335
python hjc_test_push.py --base http://uk.frp.one:62335 --project-no TEST-xxx
无第三方依赖,仅标准库(hashlib + urllib)。时间用北京时间(UTC+8)。
签名 sign = MD5(appKey + password + timestamp)timestamp = yyyyMMddHHmm。
"""
import sys
import json
import hashlib
import urllib.request
import urllib.error
import datetime
APP_KEY = "HJC_Official_Website"
PASSWORD = "vQ8$kR3#mW6@xP2!nF"
DEFAULT_BASE = "http://uk.frp.one:62335"
DEFAULT_PAYLOAD = {
"projectNo": "TEST-HJC-20260801",
"projectName": "测试标书项目·服务器采购",
"category": "货物类",
"tenderPrice": 500.00,
"files": "[{\"name\":\"招标文件.pdf\",\"url\":\"https://file.example.com/t.pdf\"}]",
"tenderOnsaleTime": "2026-08-01 09:00:00",
"tenderOffsaleTime": "2026-08-10 17:00:00",
"bulletinName": "中标公告-测试",
"customerName": "某招标单位",
"supplierName": "某中标公司",
"bidAmount": 128000.00,
"content": "测试公告正文。中标供应商:某中标公司,中标金额 128000 元。",
"fileList": "[{\"name\":\"中标通知书.pdf\",\"url\":\"https://file.example.com/n.pdf\"}]",
"needSellTender": 1,
"sellingMethod": 2
}
def bj_now() -> str:
"""北京时间 yyyyMMddHHmm"""
return (datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(hours=8)).strftime("%Y%m%d%H%M")
def main():
base = DEFAULT_BASE
payload = dict(DEFAULT_PAYLOAD)
args = sys.argv[1:]
i = 0
while i < len(args):
a = args[i]
if a in ("--base", "-b"):
base = args[i + 1]
i += 2
elif a in ("--project-no", "-p"):
payload["projectNo"] = args[i + 1]
i += 2
elif a == "--json":
with open(args[i + 1], encoding="utf-8") as f:
payload = json.load(f)
i += 2
else:
base = a # 位置参数作为 baseUrl
i += 1
url = base.rstrip("/") + "/api/hjc/push/project"
ts = bj_now()
sign = hashlib.md5((APP_KEY + PASSWORD + ts).encode("utf-8")).hexdigest()
body = json.dumps(payload, ensure_ascii=False).encode("utf-8")
req = urllib.request.Request(url, data=body, method="POST", headers={
"Content-Type": "application/json; charset=utf-8",
"appKey": APP_KEY,
"timestamp": ts,
"sign": sign,
"tenantId": "10626"
})
print("== 请求 ==")
print("URL:", url)
print("timestamp:", ts, "| sign:", sign)
print("body:", body.decode("utf-8"))
print()
print("== 响应 ==")
try:
with urllib.request.urlopen(req, timeout=20) as resp:
print("HTTP", resp.status)
print(resp.read().decode("utf-8"))
except urllib.error.HTTPError as e:
print("HTTP", e.code)
print(e.read().decode("utf-8"))
except Exception as e:
print("ERROR:", type(e).__name__, e)
if __name__ == "__main__":
main()