Пример #1
0
 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
Пример #2
0
 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
Пример #3
0
 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
Пример #4
0
 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
Пример #5
0
 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
Пример #6
0
    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
Пример #7
0
 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
Пример #8
0
 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
Пример #9
0
    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})
Пример #10
0
    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