Beispiel #1
0
def _getOnlineLocSeatId(userId, roomId, tableId):
    '''
    取得用户再桌子上的ID
    若不在桌子上返回0
    同_addOnlineLoc为配对方法
    '''
    value = daobase.executeUserCmd(userId, 'HGET',
                                   UserLocationSchema.mkey(userId),
                                   'R.' + str(roomId) + '.' + str(tableId))
    return UserLocationSchema.checkData(UserLocationSchema.SEATID, value)
Beispiel #2
0
def _getOnlineLocList(userId):
    '''
    取得当前用户的所有在线位置信息list
    返回loc的数组列表, 每一项为一个3项值, 分别为: roomId, tableId, seatId
    示例 :
        return [
                [roomId1, tableId1, seatId1],
                [roomId2, tableId2, seatId2],
                ]
    '''
    loclist = []
    val = daobase.executeUserCmd(userId, 'HGETALL',
                                 UserLocationSchema.mkey(userId))
    if val:
        vlen = len(val)
        i = 0
        while i < vlen:
            k = val[i]
            v = val[i + 1]
            i += 2
            datas = k.split('.', 2)
            rid = int(datas[1])
            tid = int(datas[2])
            loclist.append([rid, tid, int(v)])
    return loclist
Beispiel #3
0
def _removeOnlineLoc(userId, roomId, tableId):
    '''
    移除一个用户的在线位置
    通常此方法在用户真实离开某一个桌位后调用
    '''
    # 游戏时长计算, 1天后自动过期
    subkey = 'R.' + str(roomId) + '.' + str(tableId)
    if ftlog.is_debug():
        ftlog.debug('dbuser._removeOnlineLoc userId=', userId, 'roomId=',
                    roomId, 'tableId=', tableId)
    daobase.sendUserCmd(userId, 'HDEL', UserLocationSchema.mkey(userId),
                        subkey)
    dbplaytime._setPlayTimeStop(userId, roomId, tableId)
Beispiel #4
0
def _addOnlineLoc(userId, roomId, tableId, seatId, checkConfict):
    '''
    添加一个用户的在线位置, 
    注意: 子键值为roomId+'.'+tableId, 因此不允许用户再同一个桌子的不同桌位坐下
    通常此方法在用户真实坐在某一个桌位后调用
    '''
    if checkConfict:
        onlineSeatId = _getOnlineLocSeatId(userId, roomId, tableId)
        assert not onlineSeatId or onlineSeatId == seatId
    # 设置游戏时长记录, 1天后自动过期
    dbplaytime._setPlayTimeStart(userId, roomId, tableId)
    if ftlog.is_debug():
        ftlog.debug('dbuser._addOnlineLoc userId=', userId, 'roomId=', roomId,
                    'tableId=', tableId, 'seatId=', seatId, 'checkConfict=',
                    checkConfict)
    return daobase.sendUserCmd(userId, 'HSET', UserLocationSchema.mkey(userId),
                               'R.' + str(roomId) + '.' + str(tableId), seatId)
Beispiel #5
0
def _cleanOnlineLoc(userId):
    '''
    移除一个用户的所有在线位置
    '''
    dbplaytime._cleanalltime(userId)
    daobase.sendUserCmd(userId, 'DEL', UserLocationSchema.mkey(userId))