Files
Esmart/xp/test.py
lychang 37af6c33ee init
2025-09-16 01:54:46 +08:00

285 lines
31 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 python
# -*- coding:utf-8 -*-
import json
import time
import requests
class SmartTable:
def __init__(self, doc_id, sheet_id):
self.doc_id = doc_id
self.sheet_id = sheet_id
self._columns = None
self._data = None
@staticmethod
def _post(url, body):
resp = requests.post(url, json=body)
if resp.status_code == 200:
return resp.json()
return {}
def _get_columns(self):
url = "https://a.cmdp.cn/umss/v1/wxw/common/submit"
body = {
"url": "https://qyapi.weixin.qq.com/cgi-bin/wedoc/smartsheet/get_fields",
"method": "POST",
"body": {
"docid": self.doc_id,
"sheet_id": self.sheet_id
}
}
response = self._post(url, body)
if response:
fields = response["fields"]
return fields
return []
def _get_data(self, filters: dict, cursor: int = 0, limit: int = 1000):
url = "https://a.cmdp.cn/umss/v1/wxw/smartSheet/getRecords"
body = {
"docid": self.doc_id,
"sheet_id": self.sheet_id,
"filter_spec": filters,
"offset": cursor,
"limit": limit
}
response = self._post(url, body)
if response:
cursor = response["next"]
records = response["records"]
return cursor, records
return 0, []
def _add(self, records: list):
url = "https://a.cmdp.cn/umss/v1/wxw/smartSheet/addRecords"
body = {
"docid": self.doc_id,
"sheet_id": self.sheet_id,
"key_type": "CELL_VALUE_KEY_TYPE_FIELD_TITLE",
"records": records
}
response = self._post(url, body)
if response:
return True
return False
def _transform_data(self, data: dict):
result = {}
columns = self.columns
for i in data:
type_info = columns[i]
i_type = type_info.get("field_type")
if i_type == "FIELD_TYPE_TEXT":
result[i] = [
{
"format": {},
"text": data[i],
"type": "text"
}
]
elif i_type == "FIELD_TYPE_SINGLE_SELECT":
options = {i["text"]: i for i in type_info['property_single_select']["options"]}
result[i] = [
options[data[i]]
]
else:
result[i] = data[i]
return result
@property
def columns(self):
if self._columns is None:
self._columns = self._get_columns()
return {i["field_title"]: i for i in self._columns}
@property
def data(self):
if self._data is None:
self._data = self.search({})
return self._data
def search(self, filters: dict):
cursor = 0
result = []
while True:
cursor, records = self._get_data(filters, cursor=cursor)
result += records
if cursor == 0:
break
return result
def add(self, data: dict):
data = self._transform_data(data)
return self._add([{"values":data}])
class PushSmartMessage:
DOC_ID = "dc1zao6J8YnS9p86FKKvKQadukmFXlXv3dU1qVQrgcjB81zdSVI7qoi9a7K_OpN4BTyXc8EbYVXxpnQNUUTMWwIw"
USERS_SHEET_ID = "8vVxEx"
MESSAGE_SHEET_ID = "tFWMlM"
def __init__(self):
self.users_table = SmartTable(self.DOC_ID, self.USERS_SHEET_ID)
self.message_table = SmartTable(self.DOC_ID, self.MESSAGE_SHEET_ID)
@staticmethod
def _start_push_message() -> bool:
url = "https://cloud.cmdp.cn/wapi/recommend_message_push"
resp = requests.get(url)
if resp.status_code == 200:
return True
return False
def get_to_users(self, name: str, user_type: str = ""):
conditions = []
if user_type != "":
columns = self.users_table.columns
options = {i["text"]: i for i in columns["类型"]['property_single_select']["options"]}
conditions.append({
"field_id": "fabcde",
"field_type": "FIELD_TYPE_SINGLE_SELECT",
"operator": "OPERATOR_IS",
"string_value": {
"value": [
options[user_type]['id']
]
}
})
conditions.append({
"field_id": "fmTMGx",
"field_type": "FIELD_TYPE_SINGLE_SELECT",
"operator": "OPERATOR_CONTAINS",
"string_value": {
"value": [
name
]
}
})
return {i["record_id"]: i for i in self.users_table.search({
"conjunction": "CONJUNCTION_AND",
"conditions": conditions
})}
def _send(self, message: dict, to_users: list):
self.message_table.add({
"*栏目#gName": message["gName"],
"状态": "待发布",
"*摘要#subject": message["subject"],
"置顶#isTop": message["isTop"],
"*详情#content": message["content"],
"发布日期": time.strftime("%Y-%m-%d", time.localtime(time.time())),
"*标题#title": message["title"],
"*消息接收对象#sendList": to_users})
def send(self, message: dict, to: dict, processor=None):
name = to.get("name", "")
user_type = to.get("type", "")
ids = self.get_to_users(name, user_type)
if processor:
for i in ids:
_message = processor(message, i)
self._send(_message, [i])
else:
self._send(message, [i for i in ids])
self._start_push_message()
def send_batch(self, message, tos: list):
_tos = []
for to in tos:
_tos += self.get_to_users(to["name"], to["type"])
self._send(message, [i for i in _tos])
self._start_push_message()
st = PushSmartMessage()
def send_message(message:dict,to:dict):
url = "http://10.0.0.39/cloud/in/api/bulletin/release"
body = {
"typeCode": "recommend",
"releaseObjs": [
to
],
"bulletin": message
}
try:
resp = requests.post(url,json=body,timeout=30)
if resp.status_code == 200:
return resp.json()
else:
return resp.json()
except Exception as e:
print(e)
return {'data': '请求错误', 'code': 500, 'msg': 'error'}
def join_content(string:str):
return f"""
环境信披新规实施在即我司基于775家上市公司的母公司和子公司数据已完成环境信息跑批试点为贵司提供部分省份的样例数据。同时我司智填类信披填报产品已升级环境信披模块可协助客户快速整合跨地域子公司全量环境数据、规避信披风险、生成相关报告。贵司若对此感兴趣有意合作可联系我司预约详谈。
---
{string}
---
致远速联公众号genesysinfo_zysl
---
预约联系登记:
---
<img src="data:image/jpeg;base64,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" alt="登记表"/>
---"""
def complete_parameters(security_code,company_name,content):
return {
"gName": "情报速递",
"subject": "环境信披新规实施在即,我司已完成部分环境信息跑批试点,为贵司提供部分样例数据。",
"isTop": True,
"content": content,
"title": f"[{company_name}{security_code}]环境信息依法披露情况(样例数据)"
}
if __name__ == '__main__':
with open("ui.json","r",encoding="utf-8") as f:
user_info = json.load(f)
company_list = {}
for i in user_info:
i_info = user_info[i]["values"]
name = i_info['名称#name'][0]["text"].split("_")[1]
eid = i_info['来源对象ID#eid'][0]["text"]
company_list[name] = eid
import pandas as pd
from time import sleep
df = pd.read_excel("result.xlsx",dtype="object")
send_data = []
for i in df.values:
sc = i[0]
cn = i[1]
ctype = i[3]
if "VIP" in ctype:
response = {'data': '跳过vip用户', 'code': 300, 'msg': 'skip'}
else:
md = join_content(i[4].replace("\n\n\n",""))
# message = complete_parameters(sc, cn, md)
#
# entity_id = company_list.get(sc)
# if entity_id is None:
# response = {'data': f'无法找到sc的eid', 'code': 400, 'msg': 'error'}
# else:
# # response = {'data': '可发送', 'code': 200, 'msg': 'success'}
# response = send_message(message, {"value":entity_id,"type":"company"})
# print(sc, "已发送")
# sleep(1)
# send_data.append([sc,cn,ctype,json.dumps(response,ensure_ascii=False)])
send_data.append([sc, cn, ctype, md])
send_set = pd.DataFrame(send_data,columns=["security_code","company_name","costom_type","content"])
send_set.to_excel("s.xlsx",index=False)