拍爱

views.py 2.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. # -*- coding: utf-8 -*-
  2. from curtail_uuid import CurtailUUID
  3. from django.conf import settings
  4. from django.db import transaction
  5. from ipaddr import client_ip
  6. from logit import logit
  7. from pywe_miniapp import get_userinfo
  8. from TimeConvert import TimeConvert as tc
  9. from account.models import UserInfo
  10. from utils.error.response_utils import response
  11. from utils.redis.rprofile import set_profile_info
  12. WECHAT = settings.WECHAT
  13. @logit
  14. @transaction.atomic
  15. def get_userinfo_api(request):
  16. wechat = WECHAT.get('MINIAPP', {})
  17. appid = wechat.get('appID')
  18. secret = wechat.get('appsecret')
  19. code = request.POST.get('code', '')
  20. encryptedData = request.POST.get('encryptedData', '')
  21. iv = request.POST.get('iv', '')
  22. # {u'avatarUrl': u'http://wx.qlogo.cn/mmopen/vi_32/aSKcBBPpibyKNicHNTMM0qJVh8Kjgiak2AHWr8MHM4WgMEm7GFhsf8OYrySdbvAMvTsw3mo8ibKicsnfN5pRjl1p8HQ/0',
  23. # u'city': u'Guangzhou',
  24. # u'country': u'CN',
  25. # u'gender': 1,
  26. # u'language': u'zh_CN',
  27. # u'nickName': u'Band',
  28. # u'openId': u'oGZUI0egBJY1zhBYw2KhdUfwVJJE',
  29. # u'province': u'Guangdong',
  30. # u'unionId': u'ocMvos6NjeKLIBqg5Mr9QjxrP1FA',
  31. # u'watermark': {u'appid': u'wx4f4bc4dec97d474b', u'timestamp': 1477314187}}
  32. userinfo = get_userinfo(appid=appid, secret=secret, code=code, encryptedData=encryptedData, iv=iv)
  33. # Get or Create User
  34. user, created = UserInfo.objects.select_for_update().get_or_create(unionid=userinfo.get('unionId', ''))
  35. # Set User_id
  36. if created:
  37. user.user_id = CurtailUUID.uuid(UserInfo, 'user_id')
  38. # Set User Key's Value
  39. user.user_from = UserInfo.MINIAPP_USER
  40. user.openid_miniapp = userinfo.get('openId', '')
  41. user.sex = userinfo.get('gender', '')
  42. user.nickname = userinfo.get('nickName', '')
  43. user.avatar = userinfo.get('avatarUrl', '')
  44. user.country = userinfo.get('country', '')
  45. user.province = userinfo.get('province', '')
  46. user.city = userinfo.get('city', '')
  47. user.user_status = UserInfo.ACTIVATED
  48. user.signup_ip = client_ip(request)
  49. user.signup_at = tc.utc_datetime()
  50. user.save()
  51. set_profile_info(user)
  52. return response(200, 'Mini App Login Success', u'微信小程序登录成功', user.data)