:art: Update DJANGO_WE_COMPONENT_CALLBACK_FUNC

huangqimin001 4 anni fa
parent
commit
11e8e00dbd
1 ha cambiato i file con 61 aggiunte e 2 eliminazioni
  1. 61 2
      kodo/oauth_settings.py

+ 61 - 2
kodo/oauth_settings.py

@@ -45,6 +45,7 @@ def DJANGO_WE_MESSAGE_CALLBACK_FUNC(request, data, decrypted=None):
45 45
 def DJANGO_WE_COMPONENT_CALLBACK_FUNC(request, appid, data, decrypted=None):
46 46
     """ WeChat Component Message Callback Func """
47 47
     from account.models import UserInfo
48
+    from django_we.models import SubscribeUserInfo
48 49
     from utils.redis.connect import r
49 50
     from utils.redis.rkeys import SUBSCRIBE_USERINFO_LIST, MEMBERCARD_USERINFO_LIST
50 51
 
@@ -78,7 +79,7 @@ def DJANGO_WE_COMPONENT_CALLBACK_FUNC(request, appid, data, decrypted=None):
78 79
             })
79 80
 
80 81
     # WINE
81
-    if tousername == 'gh_2e5f21d2a57d':
82
+    elif tousername == 'gh_2e5f21d2a57d':
82 83
         brand_id = settings.COMPONENT_CALLBACK_CONFIG[tousername]
83 84
         if event == 'user_get_card':
84 85
             UserInfo.objects.using('wine').filter(unionid=unionid).update(openid=openid, has_membercard=True, membercardid=membercardid, memberusercardcode=memberusercardcode)
@@ -96,7 +97,7 @@ def DJANGO_WE_COMPONENT_CALLBACK_FUNC(request, appid, data, decrypted=None):
96 97
             })
97 98
 
98 99
     # 腾龙
99
-    if tousername == 'gh_c87efc299ce5':
100
+    elif tousername == 'gh_c87efc299ce5':
100 101
         brand_id = settings.COMPONENT_CALLBACK_CONFIG[tousername]
101 102
         if event == 'user_get_card':
102 103
             UserInfo.objects.filter(unionid=unionid).update(openid=openid, has_membercard=True, membercardid=membercardid, memberusercardcode=memberusercardcode)
@@ -113,6 +114,64 @@ def DJANGO_WE_COMPONENT_CALLBACK_FUNC(request, appid, data, decrypted=None):
113 114
                 'openid': openid,
114 115
             })
115 116
 
117
+    # 函院
118
+    elif tousername == 'gh_48cbe3523cf6':
119
+        # OrderedDict([(u'ToUserName', u'gh_48cbe3523cf6'), (u'FromUserName', u'oRgy0uH8qHxzwwSC9H7YrRIv5Mxw'), (u'CreateTime', u'1598886287'), (u'MsgType', u'event'), (u'Event', u'subscribe'), (u'EventKey', u'qrscene_book'), (u'Ticket', u'gQHL8DwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyYWgwVjRSNmNhUVUxMDAwMHcwNzkAAgT8OkxfAwQAAAAA')])
120
+        eventkey = decrypted.get('EventKey', '')
121
+
122
+        if event == 'subscribe' or event == 'unsubscribe':
123
+            CFG = settings.WECHAT.get('COMPONENT', {})
124
+
125
+            appid = 'wx75b14576708d330d'
126
+
127
+            # 获取第三方平台token
128
+            token = authorizer_access_token(
129
+                component_appid=CFG['appID'],
130
+                component_secret=CFG['appsecret'],
131
+                authorizer_appid=appid,
132
+                storage=RedisStorage(r)
133
+            )
134
+
135
+            # 获取用户信息
136
+            userinfo = get_user_info(openid, appid=appid, secret=None, token=token, storage=RedisStorage(r))
137
+            subscribe, unionid, openid = userinfo.get('subscribe', ''), userinfo.get('unionid', ''), userinfo.get('openid', '')
138
+
139
+            # 更新关注信息
140
+            if subscribe:
141
+                SubscribeUserInfo.objects.using('hanyuan').update_or_create(openid=openid, defaults={
142
+                    'unionid': unionid,
143
+                    'nickname': userinfo.get('nickname', ''),
144
+                    'sex': userinfo.get('sex', ''),
145
+                    'headimgurl': userinfo.get('headimgurl', ''),
146
+                    'country': userinfo.get('country', ''),
147
+                    'province': userinfo.get('province', ''),
148
+                    'city': userinfo.get('city', ''),
149
+                    'subscribe': userinfo.get('subscribe', ''),
150
+                    'subscribe_time': userinfo.get('subscribe_time', ''),
151
+                    'subscribe_scene': userinfo.get('subscribe_scene', ''),
152
+                    'groupid': userinfo.get('groupid', ''),
153
+                    'tagid_list': userinfo.get('tagid_list', ''),
154
+                    'qr_scene': userinfo.get('qr_scene', ''),
155
+                    'qr_scene_str': userinfo.get('qr_scene_str', ''),
156
+                    'language': userinfo.get('language', ''),
157
+                    'remark': userinfo.get('remark', ''),
158
+                })
159
+            else:
160
+                SubscribeUserInfo.objects.filter(openid=openid).update(subscribe=subscribe)
161
+
162
+            # 根据场景值判断是否发会员卡
163
+            if eventkey:
164
+                scene = parse_eventkey(eventkey, event='subscribe')
165
+                if scene:
166
+                    send_custom_card_message(
167
+                        openid=openid,
168
+                        card_id=settings.DJANGO_WE_MEMBER_CARD_ID,
169
+                        appid=appid,
170
+                        secret=None,
171
+                        token=token,
172
+                        storage=RedisStorage(r)
173
+                    )
174
+
116 175
 
117 176
 def DJANGO_WE_REDIS_OBJ_FUNC(request):
118 177
     """ WeChat Redis Object Callback Func """