285 lines
31 KiB
Python
285 lines
31 KiB
Python
# !/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)
|