xjconline 2 gadi atpakaļ
vecāks
revīzija
6bd15212a3
3 mainītis faili ar 46 papildinājumiem un 2 dzēšanām
  1. 33 2
      src/weixin/control_auth.py
  2. 1 0
      src/weixin/urls_backstage.py
  3. 12 0
      src/weixin/views.py

+ 33 - 2
src/weixin/control_auth.py

@@ -117,8 +117,8 @@ def login_user_v3(request):
     #    raise ce.TipException(u"非法openid!")
 
     print(phone,openid)
-    if phone:
-        user = cm.UserInfo.objects.filter(Q(phone=phone)).order_by("-id").first()
+    if phone or unionid:
+        user = cm.UserInfo.objects.filter(Q(phone=phone)|Q(unionid=unionid)).order_by("-id").first()
     else:
         user = cm.UserInfo.objects.filter(Q(openid=openid)).order_by("-id").first()
     if not user:
@@ -133,6 +133,7 @@ def login_user_v3(request):
         user.usercode = usercode
         user.is_bind = 1
         user.username = nickname
+        user.phone = phone
         user.unionid = unionid
         user.save()
 
@@ -165,3 +166,33 @@ def bind_user_phone(request):
     cm.UserInfo.objects.filter(id=uid).update(phone=phone)
 
 
+def get_wxauth_info_v3(request):
+    """
+    """
+    qdata = request.json
+    openid = qdata.get("openid")
+    unionid = qdata.get("unionid")
+    phone = qdata.get("phone")
+    user = None
+    if openid:
+        user = cm.UserInfo.objects.filter(openid=openid).values().first()
+    if phone:
+        user = cm.UserInfo.objects.filter(phone=phone).values().first()
+    if unionid:
+        user = cm.UserInfo.objects.filter(unionid=unionid).values().first()
+    if not user:
+        return {}
+    cur_match_id = ccc.get_signup_match().id
+    gt_time = datetime.timedelta(days=-365)+datetime.datetime.now()
+    player = cm.Player.objects.filter(user_id=user["id"],match_status=1,ctime__gte=gt_time).order_by("-id").first()
+    if player:
+        user["role"] = player.role
+    else:
+        user["role"] = 0
+    if user["comment_status"]==0:
+        user["role"] = 0
+    tstr = "{}_{}{}".format(user["id"],time.time(),random.randint(100000,999999))
+    token = aescbc.encrypt(tstr)
+    user["token"] = token
+    return user
+

+ 1 - 0
src/weixin/urls_backstage.py

@@ -85,6 +85,7 @@ urlpatterns = [
     url(r'^v3/baike/category/list$', views.BaikeCategoryListView.as_view()),
     url(r'^v3/baike/list$', views.BaikeListView.as_view()),
     url(r'^v3/baike/detail$', views.BaikeDetailView.as_view()),
+    url(r'^v3/authinfo$', views.V3AuthinfoView.as_view()),
 
 ]
 

+ 12 - 0
src/weixin/views.py

@@ -1300,3 +1300,15 @@ class BaikeDetailView(cv.AuthView):
         except Exception as e:
             cv.tracefail()
             return cv.to_fail(e)
+
+
+class V3AuthinfoView(cv.AuthView):
+    def get(self,request):
+        """#获取用户信息(小程序)
+        """
+        try:
+            rst = ca.get_wxauth_info_v3(request)
+            return cv.to_suc(rst)
+        except Exception as e:
+            cv.tracefail()
+            return cv.to_fail(e)