def set_win(sequence, win_types):
    """
    设置赢家
    :param sequence:
    :param win_types:
    :return:
    """
    BetRecord.set_win(sequence, win_types)
def set_lose(sequence, win_types):
    """
    设置输家
    :param sequence:
    :param win_types:
    :return:
    """
    BetRecord.set_lose(sequence, win_types)
def find_by_seq(req):
    """
    根据期号查询下注记录
    :param req: 期号
    :return: 下注集合
    """
    return BetRecord.find_by_seq(req)
def get_win_players(seq, win_types):
    """
    获取赢家
    :param seq: 期号
    :param win_types: 赢骰型
    :return: 赢家集合
    """
    return BetRecord.search_win(seq, win_types)
def sum_bet(sequence):
    """
    统计下注金额
    :return:
    """
    result = BetRecord.sum_bet(sequence)
    if len(result) == 0:
        return 0
    return result[0]['sum_bet_amount']
def sum_win_bonus(sequence, win_types):
    """
    统计赢家奖金
    :return:
    """
    result = BetRecord.sum_win(sequence, win_types)
    if len(result) == 0:
        return 0
    return result[0]['bonus']
Exemple #7
0
    def send_msg(self):
        # data = self.get_arguments()
        # if data['type'] == '1':
        #     notice_group('大厅标识', '事件', '返回数据')
        # else:
        #     notice_player(data['obj'], '大厅标识', '事件', '返回数据')
        from player.models.player import BetRecord
        ls = BetRecord.sum_bet('Fast-1909175025')

        # BetRecord.set_lose('Fast-1909101583', ['BIG2'])
        # BetRecord.set_win('Fast-1909101583', ['BIG'])
        return self.json(ResultCode.CODE_20000.value, ls,
                         ResultMsg.MSG_20000.value)
def leader_board(current_page, page_size, player):
    """
    玩家排行榜
    :param current_page:
    :param page_size:
    :param player:
    :return:
    """
    time_range = get_now()
    data = BetRecord.leader_board(current_page, page_size, time_range)
    ls = []
    data['own'] = {}
    for index, d in enumerate(data['ls']):
        ls.append({
            'ranking': index + 1,
            'id': d['player_id'],
            'name': d['player__name'],
            'profit': d['total'],
        })
        data['own'] = ls[index]
    data['ls'] = ls
    if not data['own'] == {}:
        return data
    own = BetRecord.sum_player_bet(player.id, time_range)
    if len(own) == 0:
        data['own'] = {
            'ranking': -1,
            'name': player.name,
            'profit': "0"
        }
    else:
        data['own'] = {
            'ranking': -1,
            'name': own[0]['player__name'],
            'profit': own[0]['total']
        }
    return data
def bet_record(**params):
    """
    查询下注记录
    :param params:
    :return:
    """
    return [{
        "hall_tag": d['sequence'].split('-')[0],
        "sequence": d['sequence'].split('-')[1],
        "create_at": d['sequence__create_at'].strftime("%H:%M:%S"),
        "result": [] if d['sequence__result'] == '' or d['sequence__result'] is None else literal_eval(d['sequence__result']),
        "state": d['state'],
        "bonus": d['bonus'],
        "bet_type": d['bet_type'],
        "bet_amount": d['bet_amount'],
    } for d in BetRecord.search_bet_record(**params)]
Exemple #10
0
def bet(channel_name, **params):
    """
    @api {post} /ReqBet 游戏下注接口
    @apiVersion 1.0.0
    @apiName ReqBet
    @apiGroup WebSocket-Receive
    @apiSuccessExample {json} 通知样例:
    {
        "event": "ReqBet",
        "data": {
            "bet_amount": 200,
            "dice_type": "SUM_THREE"
        }
    }
    """
    log.info('*****************************************')
    log.info(params)
    player_token = get_player_token(channel_name)
    hall_id = get_player_hall(player_token)
    log.info(player_token)
    log.info(hall_id)
    event = NoticeEvent.GameBetErrorNotice.value
    ok, hall = find_by_id(hall_id)
    if not ok:
        log.info('未查询到大厅')
        # bet_error(channel_name, hall.tag)
        return create_result(
            hall.tag, event, {
                'code': ServerCode.CODE41001.value,
                'msg': ServerMsg.CODE41001.value,
                'gold': params['bet_amount']
            })
    if hall.stage != HallStage.BetStage.value:
        log.info("大厅当前阶段【%s】当前阶段不允许下注" % hall.stage)
        bet_error(channel_name, hall.tag)
        return create_result(
            hall.tag, event, {
                'code': ServerCode.CODE41002.value,
                'msg': ServerMsg.CODE41002.value,
                'gold': params['bet_amount']
            })
    form = BetForm(params)
    if not form.is_valid():
        log.info(form.errors)
        return create_result(
            hall.tag, event, {
                'code': ServerCode.CODE41006.value,
                'msg': ServerMsg.CODE41006.value,
                'gold': params['bet_amount']
            })
        # bet_error(channel_name, hall_tag)
    ok, player = Player.find_by_token(player_token)
    if not ok:
        log.info('未查询到玩家')
        return create_result(
            hall.tag, event, {
                'code': ServerCode.CODE41003.value,
                'msg': ServerMsg.CODE41003.value,
                'gold': params['bet_amount']
            })
        # bet_error(channel_name, hall_tag)
    # 获取大厅ID
    hall_id = get_player_hall(player_token)
    sequence = get_hall_new_sequence(hall_id, hall.tag)
    # 检查下注金额
    if not check_value(hall_id, params['bet_amount']):
        log.info('下注金额不正确')
        return create_result(
            hall.tag, event, {
                'code': ServerCode.CODE41004.value,
                'msg': ServerMsg.CODE41004.value,
                'gold': params['bet_amount']
            })
        # bet_error(channel_name, hall_tag)
    # 检查下注类型
    ok, odds = check_bet(hall_id, params['dice_type'])
    if not ok:
        log.info('下注类型不正确')
        return create_result(
            hall.tag, event, {
                'code': ServerCode.CODE41005.value,
                'msg': ServerMsg.CODE41005.value,
                'gold': params['bet_amount']
            })
        # bet_error(channel_name, hall_tag)
    if Decimal(params['bet_amount']) > player.gold:
        log.info('玩家金额不足')
        return create_result(
            hall.tag, event, {
                'code': ServerCode.CODE41007.value,
                'msg': ServerMsg.CODE41007.value,
                'gold': 0
            })
    # 计算下注奖金
    bonus = Decimal(params['bet_amount']) * Decimal(odds)
    # 扣除玩家金币
    update_player_gold(player.token, -params['bet_amount'])
    # 创建下注记录
    BetRecord.create(player.id, sequence, params['bet_amount'],
                     params['dice_type'], bonus)
    return None