| 
                
               | 
              
                
               | 
              
                @@ -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 """ 
               |