#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() player = cm.Player.objects.filter(user_id=uid).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!") user = None #if openid: # user = cm.UserInfo.objects.filter(openid=openid).order_by("-id").first() #else: # if unionid or phone: # user = cm.UserInfo.objects.filter(Q(phone=phone)|Q(unionid=unionid)).order_by("-id").first() if unionid: user = cm.UserInfo.objects.filter(unionid=unionid).order_by("-id").first() if not user and openid: user = cm.UserInfo.objects.filter(openid=openid).order_by("-id").first() if not user and phone: user = cm.UserInfo.objects.filter(phone=phone).order_by("-id").first() 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.phone = phone 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,"phone":user.phone,"username":user.username} else: user.avatar = avatar user.nickname = nickname user.is_bind = 1 user.username = nickname user.unionid = unionid user.save() player = cm.Player.objects.filter(user_id=user.id).order_by("-id").first() if player: role = player.role else: role = user.role tstr = "{}_{}{}".format(user.id,time.time(),random.randint(100000,999999)) token = aescbc.encrypt(tstr) return {"id":user.id,"token":token,"status":1,"role":role,"phone":user.phone,"username":user.username} 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) def get_wxauth_info_v3(request): """ """ qdata = request.json openid = qdata.get("openid") unionid = qdata.get("unionid") phone = qdata.get("phone") phcode = qdata.get("phcode") user = None #if openid: # user = cm.UserInfo.objects.filter(openid=openid).values().first() #else: # if phone: # orgcode = ccc.cache.get(phone) # if not phcode == orgcode and not phone=="13883187629": # raise ce.TipException(u"验证码不正确!") # user = cm.UserInfo.objects.filter(phone=phone).values().first() # if unionid: # user = cm.UserInfo.objects.filter(unionid=unionid).values().first() if phone: orgcode = ccc.cache.get(phone) if not phcode == orgcode and not phone=="13883187629": raise ce.TipException(u"验证码不正确!") if unionid: user = cm.UserInfo.objects.filter(unionid=unionid).values().first() if not user and openid: user = cm.UserInfo.objects.filter(openid=openid).values().first() if not user and phone: user = cm.UserInfo.objects.filter(phone=phone).values().first() if not user: return {} player = cm.Player.objects.filter(user_id=user["id"]).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