增加公众号关注消息

FFIB 2 jaren geleden
bovenliggende
commit
5fdcceae5b
4 gewijzigde bestanden met toevoegingen van 72 en 2 verwijderingen
  1. 6 0
      api/mini_views.py
  2. 2 0
      requirements_pywe.txt
  3. 62 0
      thermometer/django_we_callback_settings.py
  4. 2 2
      thermometer/settings.py

+ 6 - 0
api/mini_views.py

@@ -9,6 +9,7 @@ from django_response import response
9 9
 from pywe_miniapp import get_session_info, get_session_key, get_userinfo, store_session_key
10 10
 from pywe_storage import RedisStorage
11 11
 
12
+from django_we.models import SubscribeUserInfo
12 13
 from account.models import UserInfo
13 14
 from utils.redis.connect import r
14 15
 
@@ -109,6 +110,11 @@ def mini_login_api(request):
109 110
     # Set User Key's Value
110 111
     if unionid:
111 112
         user.unionid = unionid
113
+        try:
114
+            sub = SubscribeUserInfo.objects.get(unionid=unionid)
115
+            user.openid = sub.openid
116
+        except:
117
+            pass
112 118
 
113 119
     user.user_status = UserInfo.ACTIVATED
114 120
     user.save()

+ 2 - 0
requirements_pywe.txt

@@ -3,3 +3,5 @@ pywe-oauth==1.1.1
3 3
 pywe-pay==1.0.14
4 4
 pywe-qrcode==1.0.3
5 5
 pywe-storage==1.0.1
6
+pywe-token==1.3.1
7
+pywe-user==1.0.4

+ 62 - 0
thermometer/django_we_callback_settings.py

@@ -1,5 +1,12 @@
1 1
 # -*- coding: utf-8 -*-
2 2
 
3
+import logging
4
+
5
+from django.conf import settings
6
+
7
+
8
+logger = logging.getLogger('logit')
9
+
3 10
 
4 11
 def DJANGO_WE_CFG_FUNC(request, state=None):
5 12
     """ WeChat CFG Callback Func """
@@ -68,6 +75,61 @@ def DJANGO_WE_SHARE_FUNC(request, state=None):
68 75
 
69 76
 def DJANGO_WE_MESSAGE_CALLBACK_FUNC(request, xmldict, decrypted):
70 77
     """ WeChat Message Callback Func """
78
+    from django_we.models import SubscribeUserInfo
79
+    from pywe_storage import RedisStorage
80
+    from pywe_token import access_token
81
+    from pywe_user import get_user_info
82
+
83
+    from account.models import UserInfo
84
+    from utils.redis.connect import r
85
+
86
+
87
+    logger.info(xmldict)
88
+
89
+    JSAPI = settings.WECHAT.get('JSAPI', {})
90
+
91
+    token = access_token(
92
+        appid=JSAPI['appID'],
93
+        secret=JSAPI['appsecret'],
94
+        storage=RedisStorage(r)
95
+    )
96
+
97
+    event = xmldict.get('Event', '')
98
+    tousername = xmldict.get('ToUserName', '')
99
+    openid = fromusername = xmldict.get('FromUserName', '')
100
+    unionid = xmldict.get('UnionId', '')
101
+
102
+    if tousername == 'gh_2e5f21d2a57d':
103
+        if event == 'subscribe' or event == 'unsubscribe':
104
+            userinfo = get_user_info(openid, appid=JSAPI['appID'], secret=JSAPI['appsecret'], token=token, storage=RedisStorage(r))
105
+            subscribe, unionid, openid = userinfo.get('subscribe', ''), userinfo.get('unionid', ''), userinfo.get('openid', '')
106
+
107
+            UserInfo.objects.filter(unionid=unionid).update(openid=openid)
108
+
109
+             # 更新关注信息
110
+            if subscribe:
111
+                SubscribeUserInfo.objects.update_or_create(openid=openid, defaults={
112
+                    'unionid': unionid,
113
+                    'nickname': userinfo.get('nickname', ''),
114
+                    'sex': userinfo.get('sex', ''),
115
+                    'headimgurl': userinfo.get('headimgurl', ''),
116
+                    'country': userinfo.get('country', ''),
117
+                    'province': userinfo.get('province', ''),
118
+                    'city': userinfo.get('city', ''),
119
+                    'subscribe': userinfo.get('subscribe', ''),
120
+                    'subscribe_time': userinfo.get('subscribe_time', ''),
121
+                    'subscribe_scene': userinfo.get('subscribe_scene', ''),
122
+                    'groupid': userinfo.get('groupid', ''),
123
+                    'tagid_list': userinfo.get('tagid_list', ''),
124
+                    'qr_scene': userinfo.get('qr_scene', ''),
125
+                    'qr_scene_str': userinfo.get('qr_scene_str', ''),
126
+                    'language': userinfo.get('language', ''),
127
+                    'remark': userinfo.get('remark', ''),
128
+                })
129
+
130
+            else:
131
+                SubscribeUserInfo.objects.filter(openid=openid).update(subscribe=subscribe)
132
+
71 133
 
72 134
 
73 135
 def DJANGO_WE_COMPONENT_AUTH_FUNC(request, xmldict, decrypted):

+ 2 - 2
thermometer/settings.py

@@ -293,8 +293,8 @@ DJANGO_FILE_UPLOAD_USE_DT = True
293 293
 
294 294
 # Django-Logit Settings
295 295
 DJANGO_LOGIT_ENABLED = True
296
-DJANGO_LOGIT_BODY_FLAG = False
297
-DJANGO_LOGIT_RES_FLAG = False
296
+DJANGO_LOGIT_BODY_FLAG = True
297
+DJANGO_LOGIT_RES_FLAG = True
298 298
 
299 299
 # Django-Onerror Settings
300 300
 DJANGO_ONERROR_ACCEPT_REPORT = True