Create user in api get_userinfo_api for weapp

Brightcells 8 jaren geleden
bovenliggende
commit
c3e3681541
4 gewijzigde bestanden met toevoegingen van 60 en 5 verwijderingen
  1. 19 0
      account/migrations/0022_auto_20170212_2153.py
  2. 4 0
      account/models.py
  3. 3 3
      api/urls.py
  4. 34 2
      miniapp/views.py

+ 19 - 0
account/migrations/0022_auto_20170212_2153.py

@@ -0,0 +1,19 @@
1
+# -*- coding: utf-8 -*-
2
+from __future__ import unicode_literals
3
+
4
+from django.db import models, migrations
5
+
6
+
7
+class Migration(migrations.Migration):
8
+
9
+    dependencies = [
10
+        ('account', '0021_auto_20161213_1639'),
11
+    ]
12
+
13
+    operations = [
14
+        migrations.AlterField(
15
+            model_name='userinfo',
16
+            name='user_from',
17
+            field=models.IntegerField(default=0, help_text='\u7528\u6237\u6765\u6e90', verbose_name='user_from', choices=[(0, 'APP \u521b\u5efa\u7528\u6237'), (1, '\u5fae\u4fe1\u6388\u6743\u7528\u6237'), (9, '\u6e38\u5ba2\u7528\u6237'), (10, '\u6444\u5f71\u5e08\u7528\u6237'), (11, '\u5bfc\u6e38\u7528\u6237'), (12, '\u5c0f\u7a0b\u5e8f\u7528\u6237')]),
18
+        ),
19
+    ]

+ 4 - 0
account/models.py

@@ -232,6 +232,7 @@ class UserInfo(CreateUpdateMixin):
232 232
     GUEST_USER = 9
233 233
     LENSMAN_USER = 10
234 234
     TOURGUIDE_USER = 11
235
+    WEAPP_USER = 12
235 236
 
236 237
     USER_FROM = (
237 238
         (APP_USER, u'APP 创建用户'),
@@ -239,6 +240,7 @@ class UserInfo(CreateUpdateMixin):
239 240
         (GUEST_USER, u'游客用户'),
240 241
         (LENSMAN_USER, u'摄影师用户'),
241 242
         (TOURGUIDE_USER, u'导游用户'),
243
+        (WEAPP_USER, u'小程序用户'),
242 244
     )
243 245
 
244 246
     UNVERIFIED = 0
@@ -322,6 +324,8 @@ class UserInfo(CreateUpdateMixin):
322 324
             return self.name
323 325
         elif self.user_from == self.TOURGUIDE_USER:
324 326
             return self.name
327
+        elif self.user_from == self.WEAPP_USER:
328
+            return self.nickname
325 329
         return self.nickname
326 330
 
327 331
     @property

+ 3 - 3
api/urls.py

@@ -22,7 +22,7 @@ urlpatterns = [
22 22
     url(r'^u/signup$', account_views.user_signup_api, name='user_signup_api'),  # 用户注册
23 23
     url(r'^u/login$', account_views.user_login_api, name='user_login_api'),  # 用户登录
24 24
 
25
-    url(r'^u/wx/authorize$', account_views.user_wx_authorize_api, name='user_wx_authorize_api'),  # 微信用户授权
25
+    url(r'^u/wx/authorize$', account_views.user_wx_authorize_api, name='user_wx_authorize_api'),  # 用户端 - 微信用户授权
26 26
 
27 27
     url(r'^u/guest/status$', account_views.guest_status_api, name='guest_status_api'),  # 游客状态(是否开启)
28 28
     url(r'^u/guest/login$', account_views.guest_login_api, name='guest_login_api'),  # 游客登录
@@ -33,7 +33,7 @@ urlpatterns += [
33 33
     url(r'^l/submit$', lensman_views.lensman_submit_api, name='lensman_submit_api'),  # 摄影师信息提交
34 34
     url(r'^l/login$', lensman_views.lensman_login_api, name='lensman_login_api'),  # 摄影师登录
35 35
 
36
-    url(r'^l/wx/authorize$', lensman_views.lensman_wx_authorize_api, name='lensman_wx_authorize_api'),  # 微信用户授权
36
+    url(r'^l/wx/authorize$', lensman_views.lensman_wx_authorize_api, name='lensman_wx_authorize_api'),  # 摄影师端 - 微信用户授权
37 37
 
38 38
     url(r'^l/price_fix$', lensman_views.lensman_price_fix_api, name='lensman_price_fix_api'),  # 摄影师定价
39 39
 
@@ -48,7 +48,7 @@ urlpatterns += [
48 48
 urlpatterns += [
49 49
     url(r'^t/submit$', tourguide_views.tourguide_submit_api, name='tourguide_submit_api'),  # 导游信息提交
50 50
 
51
-    url(r'^t/wx/authorize$', tourguide_views.tourguide_wx_authorize_api, name='tourguide_wx_authorize_api'),  # 微信用户授权
51
+    url(r'^t/wx/authorize$', tourguide_views.tourguide_wx_authorize_api, name='tourguide_wx_authorize_api'),  # 导游端 - 微信用户授权
52 52
 ]
53 53
 
54 54
 # 群组相关

+ 34 - 2
miniapp/views.py

@@ -1,13 +1,16 @@
1 1
 # -*- coding: utf-8 -*-
2 2
 
3
+from curtail_uuid import CurtailUUID
3 4
 from django.conf import settings
4 5
 from django.db import transaction
6
+from ipaddr import client_ip
5 7
 from logit import logit
6 8
 from pywe_miniapp import get_userinfo
9
+from TimeConvert import TimeConvert as tc
7 10
 
8 11
 from account.models import UserInfo
9
-from utils.error.errno_utils import UserStatusCode
10 12
 from utils.error.response_utils import response
13
+from utils.redis.rprofile import set_profile_info
11 14
 
12 15
 
13 16
 WECHAT = settings.WECHAT
@@ -30,6 +33,35 @@ def get_userinfo_api(request):
30 33
     try:
31 34
         user = UserInfo.objects.select_for_update().get(unionid=userinfo.get('unionId', ''))
32 35
     except UserInfo.DoesNotExist:
33
-        return response(UserStatusCode.USER_NOT_FOUND)
36
+        user = None
37
+
38
+    if not user:
39
+        # {u'avatarUrl': u'http://wx.qlogo.cn/mmopen/vi_32/aSKcBBPpibyKNicHNTMM0qJVh8Kjgiak2AHWr8MHM4WgMEm7GFhsf8OYrySdbvAMvTsw3mo8ibKicsnfN5pRjl1p8HQ/0',
40
+        #  u'city': u'Guangzhou',
41
+        #  u'country': u'CN',
42
+        #  u'gender': 1,
43
+        #  u'language': u'zh_CN',
44
+        #  u'nickName': u'Band',
45
+        #  u'openId': u'oGZUI0egBJY1zhBYw2KhdUfwVJJE',
46
+        #  u'province': u'Guangdong',
47
+        #  u'unionId': u'ocMvos6NjeKLIBqg5Mr9QjxrP1FA',
48
+        #  u'watermark': {u'appid': u'wx4f4bc4dec97d474b', u'timestamp': 1477314187}}
49
+        user = UserInfo.objects.create(
50
+            user_id=CurtailUUID.uuid(UserInfo, 'user_id'),
51
+            user_from=UserInfo.WX_USER,
52
+            openid=userinfo.get('openId', ''),
53
+            unionid=userinfo.get('unionId', ''),
54
+            sex=userinfo.get('gender', 0),
55
+            nickname=userinfo.get('nickName', ''),
56
+            avatar=userinfo.get('avatarUrl', ''),
57
+            country=userinfo.get('country', ''),
58
+            province=userinfo.get('province', ''),
59
+            city=userinfo.get('city', ''),
60
+            user_status=UserInfo.ACTIVATED,
61
+            signup_ip=client_ip(request),
62
+            signup_at=tc.utc_datetime(),
63
+        )
64
+
65
+        set_profile_info(user)
34 66
 
35 67
     return response(200, 'Mini App Login Success', u'微信小程序登录成功', user.data)