1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- from curtail_uuid import CurtailUUID
- from django.conf import settings
- from django.db import transaction
- from ipaddr import client_ip
- from logit import logit
- from pywe_miniapp import get_userinfo
- from TimeConvert import TimeConvert as tc
- from account.models import UserInfo
- from utils.error.response_utils import response
- from utils.redis.rprofile import set_profile_info
- WECHAT = settings.WECHAT
- @logit
- @transaction.atomic
- def get_userinfo_api(request):
- wechat = WECHAT.get('MINIAPP', {})
- appid = wechat.get('appID')
- secret = wechat.get('appsecret')
- code = request.POST.get('code', '')
- encryptedData = request.POST.get('encryptedData', '')
- iv = request.POST.get('iv', '')
- userinfo = get_userinfo(appid=appid, secret=secret, code=code, encryptedData=encryptedData, iv=iv)
- try:
- user = UserInfo.objects.select_for_update().get(unionid=userinfo.get('unionId', ''))
- except UserInfo.DoesNotExist:
- user = None
- if not user:
-
-
-
-
-
-
-
-
-
-
- user = UserInfo.objects.create(
- user_id=CurtailUUID.uuid(UserInfo, 'user_id'),
- user_from=UserInfo.WX_USER,
- openid=userinfo.get('openId', ''),
- unionid=userinfo.get('unionId', ''),
- sex=userinfo.get('gender', 0),
- nickname=userinfo.get('nickName', ''),
- avatar=userinfo.get('avatarUrl', ''),
- country=userinfo.get('country', ''),
- province=userinfo.get('province', ''),
- city=userinfo.get('city', ''),
- user_status=UserInfo.ACTIVATED,
- signup_ip=client_ip(request),
- signup_at=tc.utc_datetime(),
- )
- set_profile_info(user)
- return response(200, 'Mini App Login Success', u'微信小程序登录成功', user.data)
|