def getFriends(cls, rpath): isReturn, params = cls.checkAccount(rpath) if isReturn: return params mo = TyContext.Cls_MsgPack() mo.setCmd('getFriends') Friend.getMyFriends(params['appId'], params['userId'], mo) return mo
def getNeighborsForInvite(cls, rpath): isReturn, params = cls.checkAccount(rpath) if isReturn: return params mo = TyContext.Cls_MsgPack() mo.setCmd('getNeighborsForInvite') Friend.getNeighborsForInvite(params['appId'], params['userId'], mo) return mo
def delFriend(cls, rpath): isReturn, params = cls.checkAccount(rpath) if isReturn: return params mo = TyContext.Cls_MsgPack() mo.setCmd('delFriend') friend_uid = TyContext.RunHttp.getRequestParam('friend_uid') if friend_uid is None or friend_uid == '': mo.setResult('code', 2) mo.setResult('info', u"好友ID为空!") else: Friend.delFriend(params['appId'], params['userId'], friend_uid, mo) return mo
def addContactFriendInvite(cls, rpath): isReturn, params = cls.checkAccount(rpath) if isReturn: return params mo = TyContext.Cls_MsgPack() mo.setCmd('addContactFriendInvite') friend_phone = TyContext.RunHttp.getRequestParam('friend_phone') if friend_phone is None or len(friend_phone) != 11: mo.setResult('code', 2) mo.setResult('info', "phone number error") else: Friend.addContactFriendInvite(params['appId'], params['userId'], friend_phone, mo) return mo
def addFriendRequest(cls, rpath): isReturn, params = cls.checkAccount(rpath) if isReturn: return params mo = TyContext.Cls_MsgPack() mo.setCmd('addFriend') friend_uid = TyContext.RunHttp.getRequestParamInt('friend_uid') if friend_uid <= 0: mo.setResult('code', 2) mo.setResult('info', u"好友ID为空!") else: Friend.addFriendRequest(params['appId'], params['userId'], friend_uid, mo) return mo
def sendGift(cls, rpath): isReturn, params = cls.checkAccount(rpath) if isReturn: return params userId = str(params['userId']) mo = TyContext.Cls_MsgPack() giftId = TyContext.RunHttp.getRequestParam('gift_id', -1) friend_uid = TyContext.RunHttp.getRequestParam('friend_uid', 0) if giftId == -1 or friend_uid == 0: mo.setResult('code', 10) mo.setResult('info', u'缺少参数') return mo # 检查是否好友 pass Friend.sendGift(params['appId'], userId, friend_uid, giftId, params['clientId'], mo) return mo
def getContactsForInvite(cls, rpath): isReturn, params = cls.checkAccount(rpath) if isReturn: return params mo = TyContext.Cls_MsgPack() mo.setCmd('getContactsForInvite') contacts = TyContext.RunHttp.getRequestParam('contacts') if contacts is None or contacts == '': mo.setResult('code', 0) mo.setResult('data', []) return mo try: contactsList = json.loads(contacts) except: contacts = AccountVerify.decode_item(contacts) contactsList = json.loads(contacts) TyContext.ftlog.debug('getContactsForInvite.contacts', contacts) Friend.getContactsForInvite(params['appId'], params['userId'], params['clientId'], contactsList, mo) return mo
def mergeSnsFriends(cls, rpath): isReturn, params = AccountCheck.normal_check(rpath) if isReturn: return params mo = TyContext.Cls_MsgPack() sns_type = TyContext.RunHttp.getRequestParam('sns_type', '') sns_friends_param = TyContext.RunHttp.getRequestParam( 'sns_friends', '') if sns_type == '' and sns_friends_param == '': mo.setResult('code', 1) mo.setResult('info', 'sns_type,sns_friends required') return mo TyContext.ftlog.info('mergeSnsFriends sns_type=', sns_type, 'appId=', params['appId'], 'userId=', params['userId'], 'sns_friends=', sns_friends_param) # if sns_friends != '': # sns_friends = AccountVerify.decode_item(contacts) sns_friends = json.loads(sns_friends_param) Friend.mergeSnsFriends(params['appId'], params['userId'], sns_type, sns_friends, mo) mo.setResult('code', 0) mo.setResult('info', 'success') return mo
def doBindByMobile(cls, rparams, mo): TyContext.ftlog.info(cls.__name__, 'doBindByMobile->rparams=', rparams) clientId = rparams['clientId'] chkMobile = str(rparams['mobile']) appId = rparams['appId'] chkUserId = str(rparams['userId']) bindOrderId = rparams['bindOrderId'] if 'bindOrderId' in rparams else '' userIdByMap = cls.__find_userid_by_mobile__(chkMobile) if userIdByMap > 0: if userIdByMap == int(chkUserId): TyContext.RedisUserKeys.execute('HMSET', 'bindOrder:' + bindOrderId, 'state', AccountConst.MOBILE_BIND_BOUND, 'userId', userIdByMap) mo.setResult('code', AccountConst.CODE_USER_MOBILE_BINDED) mo.setResult('info', '无需重复绑定(手机号已绑定)') return TyContext.RedisUserKeys.execute('HMSET', 'bindOrder:' + bindOrderId, 'state', AccountConst.MOBILE_BIND_OCCUPIED, 'userId', chkMobile) mo.setResult('code', AccountConst.CODE_USER_MOBILE_BINDED) mo.setResult('info', '该手机号已被使用,请绑定其它手机号') return if chkUserId == '0': passwd = 'ty' + str(random.randint(100000, 999999)) rparams['passwd'] = passwd chkUserId = AccountInfo.createNewUser( rparams, AccountConst.USER_TYPE_MOBILE) if chkUserId <= 0: TyContext.RedisUserKeys.execute( 'HSET', 'bindOrder:' + bindOrderId, 'state', AccountConst.MOBILE_BIND_FAILED) mo.setResult('code', AccountConst.CODE_USER_MOBILE_REG_FAILE) mo.setResult('info', '手机用户注册失败') return smscontent = TyContext.Configure.get_global_item_json( 'smsdown_content', decodeutf8=True) content = smscontent['sendpwd'] % passwd if not TyContext.SmsDown.sendSms(chkMobile, content): TyContext.ftlog.error( 'AccountBind->doBindByMobile send mobile' ' passwd by sms failed! userid=', chkUserId, 'mobile=', chkMobile, 'appId=', appId, 'clientId=', clientId) chkUserId = str(chkUserId) TyContext.RedisUserKeys.execute('SET', 'mobilemap:' + chkMobile, chkUserId) TyContext.RedisUser.execute(chkUserId, 'HMSET', 'user:'******'bindMobile', chkMobile, 'clientId', clientId, 'isbind', AccountConst.USER_TYPE_MOBILE) if len(bindOrderId) > 0: TyContext.RedisUserKeys.execute('HMSET', 'bindOrder:' + bindOrderId, 'state', AccountConst.MOBILE_BIND_SUCCESS, 'userId', chkUserId) # ftlog.info('sdkUserRegisterMobile in userId=', chkUserId, 'mobile=', chkMobile, 'clientId=', clientId, 'appId=', appId) mo.setResult('code', AccountConst.CODE_USER_SUCCESS) mo.setResult('info', '手机号绑定成功') Friend.onUserRegisterMobile(appId, int(chkUserId), chkMobile) cls.__bind_success_callback_(appId, 'bindphone', {'userId': chkUserId})
def getRankList(cls, rpath): isReturn, params = cls.checkAccount(rpath) if isReturn: return params userId = str(params['userId']) mo = TyContext.Cls_MsgPack() mo.setCmd('getRank') rank_type = TyContext.RunHttp.getRequestParam('rank_type') if rank_type is None: mo.setResult('code', 1) mo.setResult('info', 'require rank_type') return mo else: rank_type = rank_type.lower() friends = [] rank_name = TyContext.RunHttp.getRequestParam('rank_name', 'week_score') top_count = TyContext.RunHttp.getRequestParamInt('top_count', 0) if top_count == 0: if rank_type != 'friend': top_count = 50 data = {} self_user = {} rank_users = [] rank_title = u'排行榜' rank_item_prefix = '' rank_item_suffix = '' if rank_type == 'friend': appId = str(params['appId']) rank_titles = TyContext.Configure.get_global_item_json( 'friend.rank.title') rank_item_prefix = '' rank_item_suffix = '' rank_title = u'好友排行榜' try: rank_title_json = rank_titles[appId][rank_name] rank_item_prefix = rank_title_json['item_prefix'] rank_item_suffix = rank_title_json['item_suffix'] rank_title = rank_title_json['title'] except Exception, e: pass # if rank_titles and rank_titles.has_key(appId): # rank_title_list = rank_titles[appId] friends = Friend.getMyFriends(appId, params['userId'], None, True) # TyContext.ftlog.debug('users:', friends) if friends and len(friends) > 0: for user in friends: fuid = str(user['uid']) key = 'rank_scores:' + str( appId) + ":" + rank_name + ':' + str(fuid) score = TyContext.RedisUser.execute( fuid, 'hmget', key, 'score', 'infos') TyContext.ftlog.debug('score', score) if fuid != userId and (score is None or score[0] is None): # 必须玩过游戏 continue if not score or not score[0]: score = [0, ''] user['score'] = int(score[0]) if not score[1]: score[1] = '' user['infos'] = score[1] rank_users.append(user) if fuid == userId: self_user = user # TyContext.ftlog.debug('rank_users:', rank_users) rank_users.sort(key=lambda obj: obj.get('score'), reverse=True) for i in xrange(len(rank_users)): user = rank_users[i] user['rank'] = i + 1 if top_count != 0 and len(rank_users) > top_count: rank_users = rank_users[:top_count] data['all'] = rank_users data['self'] = self_user data['title'] = rank_title data['item_prefix'] = rank_item_prefix data['item_suffix'] = rank_item_suffix