转化外部用户Id

This commit is contained in:
AKW 2023-12-26 10:05:06 +08:00
parent fb30210370
commit af56a72fc1
4 changed files with 32 additions and 9 deletions

View File

@ -35,6 +35,28 @@ class JQREventCallbackPubSub:
handler(callback_data, corpinfo)
class JQREventNewUserCallbackPubSub:
rc = get_redis_connection()
@classmethod
def publish(cls, data):
cls.rc.lpush(Constant.JQR_EVENT_NEW_USER_CALLBACK_PUBSUB_CHANNEL, json.dumps(data))
@classmethod
def event_callback_listener(cls):
while True:
data = cls.rc.brpop(Constant.JQR_EVENT_NEW_USER_CALLBACK_PUBSUB_CHANNEL, 5)
if data is None:
time.sleep(5)
continue
data = json.loads(data[1])
callback_data = json.loads(data['data'])
corpinfo = data['corpinfo']
handler = data['handler']
handler = import_string(handler)
handler(callback_data, corpinfo)
class JQRQrcodeCallbackPubSub:
rc = get_redis_connection()
@ -60,7 +82,7 @@ class JQRQrcodeCallbackPubSub:
if not settings.DEBUG:
t = Thread(target=JQREventCallbackPubSub.event_callback_listener)
t = Thread(target=JQREventNewUserCallbackPubSub.event_callback_listener)
t.start()
t2 = Thread(target=JQRQrcodeCallbackPubSub.qrcode_callback_listener)
t2.start()

View File

@ -2,11 +2,10 @@ import base64
import json
from datetime import datetime
from django.utils.module_loading import import_string
from rest_framework import serializers
from apps.jqr.models import JqrHookUser
from apps.jqr.pubsub import JQREventCallbackPubSub
from apps.jqr.pubsub import JQREventNewUserCallbackPubSub, JQREventCallbackPubSub
from apps.jqr.tasks import save_add_contact, delete_add_contact, edit_add_contact, save_add_contact_by_channel, \
edit_add_contact_by_channel, delete_add_contact_by_channel
from apps.msg.models import TbMessage
@ -109,7 +108,7 @@ class WechatEncryptSerializer(serializers.Serializer):
data['agentid'] = corp.agentid
data['uid'] = corp.uid
# save_add_contact.delay(data, corp.to_dict(['corpid', 'appsecret']))
JQREventCallbackPubSub.publish({
JQREventNewUserCallbackPubSub.publish({
'handler': f'{save_add_contact_by_channel.__module__}.{save_add_contact_by_channel.__name__}',
'data': json.dumps(data),
'corpinfo': corp.to_dict(['corpid', 'appsecret']),
@ -153,7 +152,7 @@ class WechatEncryptSerializer(serializers.Serializer):
data['agentid'] = corp.agentid
data['uid'] = corp.uid
# save_add_contact.delay(data, corp.to_dict(['corpid', 'appsecret']))
JQREventCallbackPubSub.publish({
JQREventNewUserCallbackPubSub.publish({
'handler': f'{save_add_contact_by_channel.__module__}.{save_add_contact_by_channel.__name__}',
'data': json.dumps(data),
'corpinfo': corp.to_dict(['corpid', 'appsecret']),
@ -185,6 +184,8 @@ class WechatEncryptSerializer(serializers.Serializer):
"""
print('客户群创建事件')
print(data)
corp = self.context.get('corp')
data['chat_id'] = data.pop('chatid')
def handle_change_external_chat_update(self, data):
"""

View File

@ -43,6 +43,6 @@ class JQRMSGPubSub:
cls.msg_list.clear()
if not settings.DEBUG:
t = Thread(target=JQRMSGPubSub.listen)
t.start()
# if not settings.DEBUG:
# t = Thread(target=JQRMSGPubSub.listen)
# t.start()

View File

@ -4,8 +4,8 @@ class Constant:
WECHAT_WORKER_TOKEN = 'wechat:worker:token:'
WECHAT_WORKER_TOKEN_EXPIRES = 6000
JQR_MSG_PUBSUB_CHANNEL = 'jqr:msg'
JQR_EVENT_NEW_USER_CALLBACK_PUBSUB_CHANNEL = 'jqr:event:new:user:cb'
JQR_EVENT_CALLBACK_PUBSUB_CHANNEL = 'jqr:event:cb'
JQR_EVENT_CALLBACK_TYPE = ''
JQR_QRCODE_PUBSUB_CHANNEL = 'jqr:qrcode'
ONE = 1
TWO = 2