暂无描述

oauth_settings.py 12KB

    # -*- coding: utf-8 -*- import logging from django.conf import settings from utils.qiniucdn import qiniu_file_url, upload_file_path, upload_file_req logger = logging.getLogger('logit') def DJANGO_WE_CFG_FUNC(request, state=None): """ WeChat CFG Callback Func """ if state in ['component_auth', 'component_callback', 'component_preauth_callback']: return settings.WECHAT.get('COMPONENT') def DJANGO_WE_QUOTE_STATE_FUNC(request, state): """ WeChat Quote Callback Func """ from utils.redis.connect import r return r.quote(state, short_uuid=True) def DJANGO_WE_UNQUOTE_STATE_FUNC(request, state): """ WeChat UnQuote Callback Func """ from utils.redis.connect import r return r.unquote(state, buf=True) def DJANGO_WE_BASE_FUNC(code, state, access_info=None): """ WeChat Base Redirect Callback Func """ def DJANGO_WE_USERINFO_FUNC(code, state, access_info=None, userinfo=None): """ WeChat Userinfo Redirect Callback Func """ def DJANGO_WE_SHARE_FUNC(request, state=None): """ WeChat Share Callback Func """ def DJANGO_WE_MESSAGE_CALLBACK_FUNC(request, data, decrypted=None): """ WeChat Message Callback Func """ def DJANGO_WE_COMPONENT_CALLBACK_FUNC(request, appid, data, decrypted=None): """ WeChat Component Message Callback Func """ from django_we.models import SubscribeUserInfo from pywe_component_authorizer_token import authorizer_access_token from pywe_custom_message import send_custom_card_message, send_custom_wxa_message from pywe_event_message import parse_eventkey from pywe_storage import RedisStorage from pywe_user import get_user_info from account.models import UserInfo from utils.redis.connect import r from utils.redis.rkeys import MEMBERCARD_USERINFO_LIST, SUBSCRIBE_USERINFO_LIST logger.info(appid) logger.info(data) logger.info(decrypted) event = decrypted.get('Event', '') tousername = decrypted.get('ToUserName', '') openid = fromusername = decrypted.get('FromUserName', '') unionid = decrypted.get('UnionId', '') membercardid = decrypted.get('CardId', '') memberusercardcode = decrypted.get('UserCardCode', '') # 富士 if tousername == 'gh_0cbd39fdde28': brand_id = settings.COMPONENT_CALLBACK_CONFIG[tousername] if event == 'user_get_card': UserInfo.objects.using('fujifilm').filter(unionid=unionid).update(openid=openid, has_membercard=True, membercardid=membercardid, memberusercardcode=memberusercardcode) r.rpushjson(MEMBERCARD_USERINFO_LIST, { 'brand_id': brand_id, 'card_id': membercardid, 'code': memberusercardcode }) elif event == 'user_del_card': UserInfo.objects.using('fujifilm').filter(memberusercardcode=memberusercardcode).update(has_membercard=False) elif event == 'subscribe' or event == 'unsubscribe': r.rpushjson(SUBSCRIBE_USERINFO_LIST % brand_id, { 'brand_id': brand_id, 'openid': openid, }) # WINE elif tousername == 'gh_2e5f21d2a57d': brand_id = settings.COMPONENT_CALLBACK_CONFIG[tousername] if event == 'user_get_card': UserInfo.objects.using('wine').filter(unionid=unionid).update(openid=openid, has_membercard=True, membercardid=membercardid, memberusercardcode=memberusercardcode) r.rpushjson(MEMBERCARD_USERINFO_LIST, { 'brand_id': brand_id, 'card_id': membercardid, 'code': memberusercardcode }) elif event == 'user_del_card': UserInfo.objects.using('wine').filter(memberusercardcode=memberusercardcode).update(has_membercard=False) elif event == 'subscribe' or event == 'unsubscribe': r.rpushjson(SUBSCRIBE_USERINFO_LIST % brand_id, { 'brand_id': brand_id, 'openid': openid, }) # 腾龙 elif tousername == 'gh_c87efc299ce5': brand_id = settings.COMPONENT_CALLBACK_CONFIG[tousername] if event == 'user_get_card': UserInfo.objects.filter(unionid=unionid).update(openid=openid, has_membercard=True, membercardid=membercardid, memberusercardcode=memberusercardcode) r.rpushjson(MEMBERCARD_USERINFO_LIST, { 'brand_id': brand_id, 'card_id': membercardid, 'code': memberusercardcode }) elif event == 'user_del_card': UserInfo.objects.filter(memberusercardcode=memberusercardcode).update(has_membercard=False) elif event == 'subscribe' or event == 'unsubscribe': r.rpushjson(SUBSCRIBE_USERINFO_LIST % brand_id, { 'brand_id': brand_id, 'openid': openid, }) # 函院 elif tousername == 'gh_8792cc1541d8': # 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')]) eventkey = decrypted.get('EventKey', '') CFG = settings.WECHAT.get('COMPONENT', {}) appid = 'wx1c2864d7a4eedd89' # 获取第三方平台token token = authorizer_access_token( component_appid=CFG['appID'], component_secret=CFG['appsecret'], authorizer_appid=appid, storage=RedisStorage(r) ) if event == 'subscribe' or event == 'unsubscribe': # 获取用户信息 userinfo = get_user_info(openid, appid=appid, secret=None, token=token, storage=RedisStorage(r)) subscribe, unionid, openid = userinfo.get('subscribe', ''), userinfo.get('unionid', ''), userinfo.get('openid', '') # 更新关注信息 if subscribe: SubscribeUserInfo.objects.using('hanyuan').update_or_create(openid=openid, defaults={ 'unionid': unionid, 'nickname': userinfo.get('nickname', ''), 'sex': userinfo.get('sex', ''), 'headimgurl': userinfo.get('headimgurl', ''), 'country': userinfo.get('country', ''), 'province': userinfo.get('province', ''), 'city': userinfo.get('city', ''), 'subscribe': userinfo.get('subscribe', ''), 'subscribe_time': userinfo.get('subscribe_time', ''), 'subscribe_scene': userinfo.get('subscribe_scene', ''), 'groupid': userinfo.get('groupid', ''), 'tagid_list': userinfo.get('tagid_list', ''), 'qr_scene': userinfo.get('qr_scene', ''), 'qr_scene_str': userinfo.get('qr_scene_str', ''), 'language': userinfo.get('language', ''), 'remark': userinfo.get('remark', ''), }) else: SubscribeUserInfo.objects.using('hanyuan').filter(openid=openid).update(subscribe=subscribe) # 根据场景值判断是否发会员卡 if eventkey: scene = parse_eventkey(eventkey, event='subscribe') if scene: params = scene.split(':') send_custom_wxa_message( openid=openid, miniappid='wxc0dec29f0c358493', pagepath='/pages/registration/course/course?field_id={}&admin_id={}'.format(params[0], params[1]), thumb_media_id='JVNN-aQ7sXG5GVfOzqvmWdbtZqTqslOnYd9PfQ0gISw', title=u'报名课程', appid=appid, secret=None, token=token, storage=RedisStorage(r) ) # send_custom_card_message( # openid=openid, # card_id=settings.MEMBER_CARD_ID_HANYUAN, # appid=appid, # secret=None, # token=token, # storage=RedisStorage(r) # ) elif event == 'SCAN': if eventkey: scene = eventkey # scene = parse_eventkey(eventkey, event='SCAN') if scene: params = scene.split(':') send_custom_wxa_message( openid=openid, miniappid='wxc0dec29f0c358493', pagepath='/pages/registration/course/course?field_id={}&admin_id={}'.format(params[0], params[1]), thumb_media_id='JVNN-aQ7sXG5GVfOzqvmWdbtZqTqslOnYd9PfQ0gISw', title=u'报名课程', appid=appid, secret=None, token=token, storage=RedisStorage(r) ) def DJANGO_WE_REDIS_OBJ_FUNC(request): """ WeChat Redis Object Callback Func """ from utils.redis.connect import r return r def DJANGO_FILE_UPLOAD_BASE_PATH_CALLBACK_FUNC(request): """ DJANGO FILE UPLOAD BASE PATH Callback Func """ zbar = int(request.POST.get('zbar', 0)) if zbar: return 'zbar' zbar2 = int(request.POST.get('zbar2', 0)) if zbar2: return 'zbar2' return request.POST.get('file_type', '') def DJANGO_FILE_UPLOAD_STORAGE_FUNC(request, file_path=None): """ DJANGO FILE UPLOAD Storage Func """ return { # 'file_url': '', } def DJANGO_FILE_UPLOAD_CALLBACK_FUNC(request, file_path=None, file_url=None): """ DJANGO FILE UPLOAD Callback Func """ from logs.models import MchLogInfo file_type = request.POST.get('file_type', '') upload_qiniu = request.POST.get('upload_qiniu', '') if file_type == 'logfile': optor_id = request.POST.get('optor_id', '') version = request.POST.get('version', 0) MchLogInfo.objects.create( log_file=file_path, operator_id=optor_id, app_version=version, ) elif file_type == 'contribution': width = request.POST.get('width', '') height = request.POST.get('height', 0) file = request.FILES.get('file', '') # upload_file_path('media/' + file_path, file_path, bucket='tamron') upload_file_req(file, file_path, bucket='tamron') file_url = qiniu_file_url(file_path, bucket='tamron') return { 'width': width, 'height': height, 'file_url': file_url, } elif file_type == 'member_activity' or (file_type and upload_qiniu): file = request.FILES.get('file', '') # upload_file_path('media/' + file_path, file_path, bucket='tamron') upload_file_req(file, file_path, bucket='tamron') file_url = qiniu_file_url(file_path, bucket='tamron') return { 'file_url': file_url, } zbar = int(request.POST.get('zbar', 0)) if zbar: import os from utils.zbar.zbar import zbar file_path = os.path.join(settings.MEDIA_ROOT, file_path) zbars = zbar(file_path) return { 'zbars': zbars, } zbar2 = int(request.POST.get('zbar2', 0)) if zbar2: import os from utils.zbar.zbar2 import zbar2 file_path = os.path.join(settings.MEDIA_ROOT, file_path) zbars = zbar2(file_path) return { 'zbars': zbars, }