def format(cls, live, exclude_fields=[]): user_ex_fields = [] game_ex_fields = [] for field in exclude_fields: if field.startswith('user__'): _, _field = field.split('__') user_ex_fields.append(_field) elif field.startswith('game__'): _, _field = field.split('__') game_ex_fields.append(_field) ut = request.values.get("ut", None) uid = User.uid_from_token(ut) user_id = live.get('user_id', None) from wanx.models.home import Share share_title = None if str(user_id) == uid: share_title = Share.get_by_self_live().title else: share_title = Share.get_by_others_live().title game = Game.get_one(str(live['game_id']), check_online=False) user = User.get_one(str(live['user_id']), check_online=False) live['user'] = user and user.format(exclude_fields=user_ex_fields) live['game'] = game and game.format(exclude_fields=game_ex_fields) live['from_following'] = live.get('from_following', False) live['share_title'] = share_title # 强行移除ut live.pop('ut', None) return live
def certify(): """实名认证 (GET|POST) :uri: /users/certify :param name: 用户名 :param user_id: 用户ID :param ID_number: 身份证号码 :returns: {'uid': uid} """ ut = request.values.get("ut", None) user_id = User.uid_from_token(ut) params = request.values.to_dict() name = params.get("name", None) ID_number = params.get("ID_number", None) kwargs = dict() if 'ut' in params.keys(): kwargs['user_id'] = ObjectId(user_id) kwargs['content'] = '' kwargs['ID_number'] = ID_number kwargs['status'] = '2' kwargs['name'] = name if not name or not ID_number: return error.InvalidArguments if not User.get_one(ObjectId(user_id)): return error.UserNotExist user_certify = UserCertify.get_untreated_user_certify(user_id) if user_certify: user = user_certify user.update(kwargs) uid = user.edit_model() else: user = UserCertify.init() user.update(kwargs) uid = user.create_model() return {'uid': uid}
def certify_status(): """获取实名认证状态 (GET|POST) :uri: /users/certify_status :returns: {'uid': uid} """ ut = request.values.get("ut", None) user_id = User.uid_from_token(ut) if not User.get_one(ObjectId(user_id)): return error.UserNotExist user = UserCertify.get_user_certify(user_id) if not user: return error.UserNotExist user_certify = user.format() return user_certify
def play_video(vid): """播放视频 (GET) :uri: /videos/<string:vid>/play :returns: redirect(real_url) """ ut = request.values.get("ut", None) uid = User.uid_from_token(ut) start = int(time.time() * 1000) video = Video.get_one(vid) if not video: result = { 'status': error.VideoNotExist.errno, 'errmsg': error.VideoNotExist.errmsg, 'data': {}, 'time': int(time.time() * 1000) - start, } return jsonify(result) video.update_model({'$inc': {'vv': 1}}) # 如果是栏目视频,给对应频道增加播放量 channel = ShowChannel.get_one(video.channel) channel and channel.update_model({'$inc': {'play_count': 1}}) # 观看视频任务检查 if uid: UserTask.check_user_tasks(uid, PLAY_VIDEO, 1) # 更新活动播放量 avideos = ActivityVideo.get_activity_video(vid=vid) for avideo in avideos: ts = time.time() aconfig = ActivityConfig.get_one(str(avideo['activity_id']), check_online=False) if aconfig and aconfig.status == const.ACTIVITY_BEGIN \ and (aconfig.begin_at < ts and aconfig.end_at > ts): avideo = ActivityVideo.get_one(avideo['_id'], check_online=False) avideo.update_model({'$inc': {'vv': 1}}) return redirect(video.real_url())
def certify_sms_code(): """获取实名认证验证码 (GET|POST) :uri: /users/certify_sms_code :param phone: 手机号 :param ut: ut :returns: {} """ phone = request.values.get("phone", None) ut = request.values.get("ut", None) if not phone: return error.InvalidArguments user_id = User.uid_from_token(ut) code = str(random.randint(0, 9)) + str(random.randint(0, 9)) + str( random.randint(0, 9)) + str(random.randint(0, 9)) + str( random.randint(0, 9)) + str(random.randint(0, 9)) if UserCertify.is_mobile(phone): con = '您在咪咕游戏申请实名认证解绑的验证码为:{0},5分钟有效。'.format(code) # UserCertify.send_code(phone, con) phones = list() phones.append(phone) try: job = 'send_sms' data = dict(phones=phones, content=con) gm_client = gearman.GearmanClient(app.config['GEARMAN_SERVERS']) gm_client.submit_job(job, json.dumps(data), background=True, wait_until_complete=False, max_retries=5) except gearman.errors.GearmanError: pass except Exception, e: print_log('send_sms_err', str(e))
def certify_relieve(): """解除实名认证 (GET|POST) :uri: /users/certify_relieve :param sms_code: 短信验证码 :param ID_number: 身份证号码 :param phone: 手机号码 :returns: {} """ ut = request.values.get("ut", None) user_id = User.uid_from_token(ut) user = UserCertify.get_user_certify(user_id) if not user: return error.UserNotExist user_certify = user.format() params = request.values.to_dict() sms_code = params.get("sms_code", None) ID_number = params.get("ID_number", None) phone = params.get("phone", None) if not phone: return error.InvalidArguments if not ID_number: return error.NO_IDFailed if not sms_code: return error.NO_SMSFailed redis_sms = Redis.get('sms:{user_id}'.format(user_id=user_id)) if sms_code != redis_sms: return error.SMSFailed if ID_number != user.ID_number: return error.ID_numberError Redis.delete(UserCertify.USER_CERTIFY % ({'uid': str(user_id)})) Redis.delete(UserCertify.OBJECT_KEY % ({ 'name': 'users', 'oid': str(user_id) })) kwargs = dict() kwargs['user_id'] = ObjectId(user_id) kwargs['content'] = '' kwargs['status'] = '4' kwargs['ID_number'] = ID_number kwargs['name'] = user_certify.get('name', '') kwargs['ID_photo'] = user_certify.get('ID_photo', '') kwargs['ID_photo_2'] = user_certify.get('ID_photo_2', '') user = UserCertify.init() user.update(kwargs) user.create_model() if UserCertify.is_mobile(phone): con = '【咪咕游戏】您好,您的账号{0}已与身份证号{1}成功解绑,请确保是您本人操作。'.format( phone, ID_number) UserCertify.send_code(phone, con) else: UserCertify.send_certify_release(phone, ID_number) sysmsg = SysMessage.init() sysmsg.title = u"实名认证结果反馈" sysmsg.owner = ObjectId(user_id) sysmsg.content = u"您已解除咪咕游玩实名认证" sysmsg.create_model() return {}