This commit is contained in:
doudou201703
2026-08-02 14:07:04 +08:00
commit 046fac6dc1
339 changed files with 19435 additions and 0 deletions
@@ -0,0 +1,187 @@
"""客户联系我管理"""
import os
from datetime import datetime
import django
import requests
from pydantic import BaseModel, Field
from sixGuoDjango.settings import BASE_DIR
from wechat_token.token工具包 import sixToken
from wechat_数据库.用户数据库.小程序登陆用户 import weiuser
from wechat_项目工具包.数据库的工具包.更新用户积分 import miniUser用户角色
os.environ.setdefault(key="DJANGO_SETTINGS_MODULE", value=f"{BASE_DIR.name}.settings")
django.setup()
import pydash
from requests import post
six六果对象xiao, six是否新创建值 = weiuser.objects.update_or_create(unionid="六果",
defaults={
"user_IP地址": None, "user_昵称": "六果", "user_用户当前的等级": 0, "user_省份": "六果", "user_城市": "六果", "user_区县": "六果",
"user_街道信息": "六果", "user_头像": "https://hudie.xiao.band/%E6%9C%AA%E5%91%BD%E5%90%8D.png", "user_绑定企微usrID账号": "六果", "user_角色权限": "六果", "external_userid": "六果",
"parent_id": "六果", "mini_openid": "wxf612e825377328f0", "wechat_openid": "六果", "wecom_openid": "wwbe6369dc26a9d83a", "codeConfigId": "六果", "codeRemark": "六果",
"codeQrCode": "https://hudie.xiao.band/mini.jpg",
"user_企微角色权限": "六果", "user_绑定企微UNIONID": "六果"
})
class wecom客户联系_联系我_管理(BaseModel):
"""
https://developer.work.weixin.qq.com/document/path/92228#%E9%99%84%E5%BD%95
"""
addres_省: str = Field(..., description="addres_省")
address_市: str = Field(..., description="address_市")
address_区县: str = Field(..., description="address_区县")
def 配置客户联系_联系我_方式(self, state企微二维码绑定的唯一值: str, userid_list: list[str]):
"""
通过API添加的「联系我」不会在管理端进行展示,每个企业可通过API最多配置50万个「联系我」。
用户需要妥善存储返回的config_id,config_id丢失可能导致用户无法编辑或删除「联系我」。
临时会话模式不占用「联系我」数量,但每日最多添加10万个,并且仅支持单人。
临时会话模式的二维码,添加好友完成后该二维码即刻失效。
请求方式:POST(HTTPS)
请求地址:https://qyapi.weixin.qq.com/cgi-bin/externalcontact/add_contact_way?access_token=ACCESS_TOK
:return:
:rtype:
"""
# wecom_token = "500hJr2pfJIa5vCJoUOK_zJRcKG_4fKdC_pilCgsEds7lQ3VZGlg1FN6iGDKZsMpUqZO4Di9BJfEMxk7V01yz5NYNwaekvby9vw3gZBw40uXr-YqlAVkP6ZRA0Wf6IkHfiYUTDQAk1
# -hUANg42srD6f3AfooEi1ZbbmAvXRjsPa17HVgzxLP7NnGTZPbaTOZRU2Cr269GjxZhgx0dVHu1Q"
wecom_token = sixToken.get_wecom_token()
uri = f"https://qyapi.weixin.qq.com/cgi-bin/externalcontact/add_contact_way?access_token={wecom_token}"
state = "oy4Jw6Lyfyj1VvgZFodzq9oqJzHE"
请求数据 = {
"type": 1, # 联系方式类型,1-单人, 2-多人
"scene": 2, # 场景,1-在小程序中联系,2-通过二维码联系
"style": 1, # 否 在小程序中联系时使用的控件样式,详见附表
"remark": "渠道客户", # 否 联系方式的备注信息,用于助记,不超过30个字符
"skip_verify": True, # 否 外部客户添加时是否无需验证,默认为true
"state": state企微二维码绑定的唯一值, # 是 区分业务用的;
"user": userid_list,
}
data = requests.post(url=uri, json=请求数据).json()
print(data)
config_id = pydash.get(obj=data, path="config_id")
qr_code = pydash.get(obj=data, path="qr_code")
def 获取企业已配置的_联系我_列表(self, start时间戳):
"""
获取六果公司已经创建的全部的添加我联系我二维码 列表数据🆔
"""
wecom_token = sixToken.get_wecom_token() # list_contact_way
print(datetime(year=2026, month=1, day=1).timestamp())
start时间戳 = int(datetime(year=2026, month=1, day=1).timestamp())
uri = f"https://qyapi.weixin.qq.com/cgi-bin/externalcontact/list_contact_way?access_token={wecom_token}"
data = post(url=uri, json={"start_time": start时间戳}).json()
print(data, "=========")
return data
def 获取企业已配置的_联系我_方式(self, config_id: str):
"""
获取企业已配置的_联系我_方式
:param config_id:
:type config_id:
"""
wecom_token = sixToken.get_wecom_token()
uri = f"https://qyapi.weixin.qq.com/cgi-bin/externalcontact/get_contact_way?access_token={wecom_token}"
请求数据 = {"config_id": config_id}
data = post(url=uri, json=请求数据).json()
return data
def 更新企业已配置的_联系我_方式(self):
"""
更新企业配置的「联系我」二维码和「联系我」小程序按钮中的信息,如使用人员和备注等。
请求方式:POST(HTTPS)
请求地址:https://qyapi.weixin.qq.com/cgi-bin/externalcontact/update_contact_way?access_token=ACCESS_TOKEN
"""
wecom_token = sixToken.get_wecom_token()
uri = f"https://qyapi.weixin.qq.com/cgi-bin/externalcontact/update_contact_way?access_token={wecom_token}"
# oy4Jw6A1T3WkKOOhMxcbQTDSM8rs
请求示例数据 = {"config_id": "9b18a3ac534e236162a850f77bdd20d0", "remark": "渠道客户", "skip_verify": True, "style": 1, "state": "oy4Jw6A1T3WkKOOhMxcbQTDSM8rs", "type": 2,
"user": ["YuanBao1975"],
}
data = post(url=uri, json=请求示例数据).json()
print("更新企业已配置的_联系我_方式", data)
def 删除企业已配置的_联系我_方式(self, config_id: str):
"""
删除一个已配置的「联系我」二维码或者「联系我」小程序按钮。
请求方式:POST(HTTPS)
请求地址:https://qyapi.weixin.qq.com/cgi-bin/externalcontact/del_contact_way?access_token=ACCESS_TOKEN
"""
print(config_id, type(config_id))
wecom_token = sixToken.get_wecom_token()
uri = f"https://qyapi.weixin.qq.com/cgi-bin/externalcontact/del_contact_way?access_token={wecom_token}"
请求数据 = {"config_id": config_id}
data = post(url=uri, json=请求数据).json()
print(data, "==========")
return data
def 结束临时会话(self):
"""
结束临时会话
"""
pass
def 结束语定义(self):
"""
结束语定义
"""
pass
def 最终处理完整的企微二维码信息(self, start时间戳):
# 调用获取所有的 原先创建的 列表 得到 config_id
config_id_list_data = self.获取企业已配置的_联系我_列表(start时间戳=start时间戳)
contact_way = pydash.get(obj=config_id_list_data, path="contact_way")
for configID in contact_way:
config_id = pydash.get(obj=configID, path="config_id")
data_详情数据 = self.获取企业已配置的_联系我_方式(config_id=config_id)
qr_code = pydash.get(obj=data_详情数据, path="contact_way.qr_code")
state = pydash.get(obj=data_详情数据, path="contact_way.state")
userID = pydash.get(obj=data_详情数据, path="contact_way.user.0")
remark = pydash.get(obj=data_详情数据, path="contact_way.remark")
print(qr_code)
wei_obj对象, wei_obj首次创建 = weiuser.objects.get_or_create(unionid=state)
if wei_obj首次创建:
# 当对象是首次创建时:需要更新一下数据
wei_obj对象.user_绑定企微usrID账号 = userID
wei_obj对象.codeConfigId = config_id
wei_obj对象.codeQrCode = qr_code
wei_obj对象.codeRemark = remark
wei_obj对象.parent_id = "六果" # 如果是首次创建就需要将当前对象的父元素 默认为 六果公司
wei_obj对象.user_企微角色权限 = "企微员工"
wei_obj对象.user_省份 = self.addres_省
wei_obj对象.user_城市 = self.address_市
wei_obj对象.user_区县 = self.address_区县
wei_obj对象.user_绑定企微UNIONID = state
wei_obj对象.save()
print("首次创建,并且数据库更新成功了")
else:
wei_obj对象.user_绑定企微usrID账号 = userID
wei_obj对象.codeConfigId = config_id
wei_obj对象.codeQrCode = qr_code
wei_obj对象.codeRemark = remark
wei_obj对象.user_企微角色权限 = miniUser用户角色().企微员工
wei_obj对象.parent_id = wei_obj对象
wei_obj对象.user_用户当前的等级 = 1
wei_obj对象.user_省份 = self.addres_省
wei_obj对象.user_城市 = self.address_市
wei_obj对象.user_区县 = self.address_区县
wei_obj对象.user_绑定企微UNIONID = state
wei_obj对象.save()
print("企微员的用户已经存在,并且更新了相关的信息")
# 接着 查询所有的 父元素为当前对象的所有用户,再将绑定的二维码信息,更新为当前的对象
weiuser.objects.filter(parent=wei_obj对象).update(codeConfigId=wei_obj对象.codeConfigId, user_绑定企微usrID账号=userID,
codeQrCode=wei_obj对象.codeQrCode, codeRemark=wei_obj对象.codeRemark)
if __name__ == '__main__':
pass
#
# resData = wecom客户联系_联系我_管理().获取企业已配置的_联系我_方式( config_id="bbc5220b82e614ceeff98fd9f2b04827" )
# wecom客户联系_联系我_管理().获取企业已配置的_联系我_列表()
start时间戳 = datetime(year=2026, month=1, day=1).timestamp()
wecom客户联系_联系我_管理(addres_省="江苏省", address_市="泰州市", address_区县="海陵区").最终处理完整的企微二维码信息(start时间戳=start时间戳) # wecom客户联系_联系我_管理().删除企业已配置的_联系我_方式(config_id="13ee9dcd9a4f7a50ab0f293af90daf3c")