@@ -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 |
+ ] |
@@ -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 |
@@ -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 |
# 群组相关 |
@@ -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) |