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']
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)]
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