| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- #coding=utf-8
- '''
- '''
- import json,time,random,datetime
- from django.db import transaction
- from django.db.models import Q
- import common.models as cm
- import common.error_info as ce
- import common.common_functions as ccf
- import common.common_control as ccc
- from utils.aestool import aescbc
- def gen_code():
- """
- """
- code = ""
- while True:
- code = "".join([str(random.choice([0,1,2,3,5,6,7,8,9])) for x in range(0,6)])
- if cm.UserInfo.objects.filter(usercode=code).exists():
- time.sleep(0.1)
- continue
- break
- return code
- def add_wxauth_info(request):
- """
- """
- qdata = request.json
- need_params = ["nickname","avatar","openid"]
- mse = ccf.check_params(*need_params,**qdata)
- if mse:
- raise ce.TipException(mse)
- vals = ccf.get_need_params(*need_params,**qdata)
- obj,flag = cm.UserInfo.objects.get_or_create(openid=vals.get("openid"))
- obj.nickname = vals.get("username")
- obj.avatar = vals.get("avatar")
- obj.save()
- return obj
- def get_wxauth_info(request):
- """
- """
- user = request.user
- uid = user.get("id")
- user = cm.UserInfo.objects.filter(id=uid).values().first()
- cur_match_id = ccc.get_signup_match().id
- #player = cm.Player.objects.filter(user_id=uid,match_id=cur_match_id).order_by("-id").first()
- gt_time = datetime.timedelta(days=-365)+datetime.datetime.now()
- player = cm.Player.objects.filter(user_id=uid,match_status=1,ctime__gte=gt_time).order_by("-id").first()
- #print(uid,cur_match_id)
- if player:
- user["role"] = player.role
- else:
- user["role"] = 0
- if user["comment_status"]==0:
- user["role"] = 0
- return user
- def update_wxauth_info(request):
- """
- """
- uid = request.user.id
- qdata = request.json
- cm.UserInfo.objects.filter(id=uid).update(userinfo=json.dumps(qdata))
- return user
- def login_user(request):
- """
- """
- info = request.json
- usercode = info.get('usercode')
- openid = info.get('openid')
- avatar = info.get('avatarUrl')
- nickname = info.get('nickName')
- if not usercode:
- raise ce.TipException(u"缺少参数!")
- user = cm.UserInfo.objects.filter(usercode=usercode).first()
- if not user:
- raise ce.TipException(u"用户代号不存在!")
- if user.is_bind:
- if not openid == user.openid:
- raise ce.TipException(u"微信号与用户代码不配!")
- if not cm.Player.objects.filter(user_id=user.id).first():
- raise ce.TipException(u"该账号未参加任何比赛,不能登录!")
- user.openid = openid
- user.avatar = avatar
- user.nickname = nickname
- user.is_bind = 1
- user.save()
- tstr = "{}_{}{}".format(user.id,time.time(),random.randint(100000,999999))
- token = aescbc.encrypt(tstr)
- return {"id":user.id,"token":token}
- def login_user_v3(request):
- """
- """
- info = request.json
- openid = info.get('openid')
- avatar = info.get('avatarUrl')
- nickname = info.get('nickName')
- phone = info.get('phone','')
- phcode = info.get('phcode')
- unionid = info.get('unionid','')
- #if not openid and not unionid:
- # raise ce.TipException(u"缺少openid!")
- if not openid and not phone:
- raise ce.TipException(u"缺少openid!")
- #if not ccc.cache.get(openid):
- # raise ce.TipException(u"非法openid!")
- print(phone,openid)
- if phone:
- user = cm.UserInfo.objects.filter(Q(phone=phone)).order_by("-id").first()
- else:
- user = cm.UserInfo.objects.filter(Q(openid=openid)).order_by("-id").first()
- print(user.id)
- if not user:
- #新用户
- usercode = gen_code()
- user,flag = cm.UserInfo.objects.get_or_create(
- openid = openid,
- )
- user.avatar = avatar
- user.nickname = nickname
- user.usercode = usercode
- user.is_bind = 1
- user.username = nickname
- user.unionid = unionid
- user.save()
- tstr = "{}_{}{}".format(user.id,time.time(),random.randint(100000,999999))
- token = aescbc.encrypt(tstr)
- return {"id":user.id,"token":token,"status":1,"role":user.role}
- else:
- user.avatar = avatar
- user.nickname = nickname
- user.is_bind = 1
- user.username = nickname
- user.unionid = unionid
- user.save()
- tstr = "{}_{}{}".format(user.id,time.time(),random.randint(100000,999999))
- token = aescbc.encrypt(tstr)
- return {"id":user.id,"token":token,"status":1,"role":user.role}
- def bind_user_phone(request):
- """
- """
- uid = request.user.id
- qdata = request.json
- phone = qdata.get("phone")
- phcode = qdata.get("phcode")
- orgcode = ccc.cache.get(phone)
- if not phcode == orgcode:
- raise ce.TipException(u"验证码不正确!")
- cm.UserInfo.objects.filter(id=uid).update(phone=phone)
|