コード例 #1
0
def online_tj():
    # 获取参数
    start_time = request.args.get('start_time')
    end_time = request.args.get('end_time')
    channel_id = session['select_channel']

    # 处理参数
    start_time = time_util.formatDatestamp(start_time)
    end_time = time_util.formatDatestamp(end_time)
    channel_id = int(channel_id)

    sql = '''
        select time, sum(num)
        from log_online
        force index(time)
        where time >= %d
        and time < %d
        group by time
    ''' % (start_time, start_time + 86400)
    data1 = LogQry(channel_id).qry(sql)

    sql = '''
        select time, sum(num)
        from log_online
        force index(time)
        where time >= %d
        and time < %d
        group by time
    ''' % (end_time, end_time + 86400)
    data2 = LogQry(channel_id).qry(sql)

    return jsonify(data1=[(i, int(j)) for i, j in data1], data2=[(i, int(j)) for i, j in data2])
コード例 #2
0
def pay_channel_tj_show():
    # 获取参数
    channel = session['select_channel']
    begin_time = request.args.get('beginDate')
    end_time = request.args.get('endDate')

    start_date = time_util.formatDatestamp(begin_time)
    end_date = time_util.formatDatestamp(end_time) + 86400

    pc = {}
    sql = 'select id, name from admin_pay_channel'
    for idx, name in LogQry(channel).qry(sql):
        pc[idx] = name
    sql = 'select id, api_name from admin_online_payment'
    for idx, name in LogQry(channel).qry(sql):
        pc[idx] = name

    datas = []
    sql = '''
        select pay_channel, FROM_UNIXTIME(time,'%%Y-%%m-%%d'), ifnull(sum(cost), 0)
        from admin_recharge
        where time >= %d
        and time <= %d
        and state = %d
        group by pay_channel, FROM_UNIXTIME(time,'%%Y-%%m-%%d')
    ''' % (start_date, end_date, PAY_STATE_SUCC)
    for pid, date, money in LogQry(channel).qry(sql):
        datas.append({
            "pay_channel":pid,
            "date":date,
            "money":int(money)
            })

    return jsonify(result = "ok", datas = datas, pay_channel = pc)
コード例 #3
0
def wx_agent_add():
    channel = session['select_channel']
    wx = request.args.get('wx')
    seq = int(request.args.get('seq'))
    memo = request.args.get('memo')

    sql = '''
		select count(1)
		from admin_wx_agent
		where channel = %d 
		and wx = '%s'
	''' % (channel, wx)

    count = LogQry(channel).qry(sql)[0][0]
    if count > 0:
        return jsonify(result="fail", error_msg="wx dup")

    sql = '''
		insert into admin_wx_agent
			(wx, seq, memo, status, channel)
		values 
			('%s', %d, '%s', %d, %d)
	''' % (wx, seq, memo, STATUS_USE, channel)
    LogQry(channel).execute(sql)

    return jsonify(result="ok")
コード例 #4
0
def agent_level_retrieve():
    """代理层级查询"""

    # 获取参数
    channel_id = session['select_channel']

    ## 如果没有代理层级 则插入一条顶级代理
    sql = 'select count(1) from admin_agent_level'
    if LogQry(channel_id).qry(sql)[0][0] == 0:
        sql = 'insert into admin_agent_level (id, level_name) values (1, "顶级代理")'
        LogQry(channel_id).execute(sql)

    # 从数据库获取数据
    retrieve_sql = """SELECT id,level_name,grant_brokerage,first_ladder,second_ladder,
                              third_ladder,fourth_ladder,fifth_ladder
                      FROM admin_agent_level;"""
    data = LogQry(channel_id).qry(retrieve_sql)

    # 处理数据
    data_list = list()
    for level_id, level_name, grant_brokerage, first_ladder, second_ladder, \
        third_ladder, fourth_ladder, fifth_ladder in data:
        data_dict = dict()
        data_dict['level_id'] = level_id
        data_dict['level_name'] = level_name
        data_dict['grant_brokerage'] = grant_brokerage
        data_dict['first_ladder'] = first_ladder
        data_dict['second_ladder'] = second_ladder
        data_dict['third_ladder'] = third_ladder
        data_dict['fourth_ladder'] = fourth_ladder
        data_dict['fifth_ladder'] = fifth_ladder
        data_list.append(data_dict)

    # 返回数据
    return jsonify(data=data_list)
コード例 #5
0
def agent_list_create():
    """代理列表新建代理"""

    # 获取参数
    pid = request.form.get('pid')
    channel_id = request.form.get('channel_id')
    level_id = request.form.get('level_id')
    pre_pid = request.form.get('pre_pid')

    # 查询数据库取出此玩家信息并判断此玩家是否存在
    retrieve_sql = """SELECT id
                      FROM player
                      WHERE id=%s;""" % pid
    data = LogQry(int(channel_id)).qry(retrieve_sql)
    if not data:
        return jsonify(result=0, msg=u'没有此玩家!')

    # 查询数据库判断此玩家是否已成为该渠道的代理
    retrieve_sql = """SELECT count(*)
                      FROM admin_agent_list
                      WHERE pid=%s;""" % pid
    data = LogQry(int(channel_id)).qry(retrieve_sql)[0][0]
    if data == 1:
        return jsonify(result=0, msg=u'此玩家已是代理!')

    # 添加玩家信息进数据库
    create_sql = """
        INSERT INTO admin_agent_list (pid, agent_level, status, pre_pid)
        VALUES (%s,%s,%d,%s)
    """ % (pid, level_id, wait_audit, pre_pid)
    LogQry(int(channel_id)).execute(create_sql)

    # 返回应答
    return jsonify(result=1, msg=u'添加代理成功!')
コード例 #6
0
def search_daily_presentation_today():
    present_type = int(request.args.get('present_type'))
    channel = session['select_channel']
    start = request.args.get('beginDate')
    today0 = time_util.today0()

    pre_line = dict()
    pre_line['date_text'] = time_util.formatDate(today0)

    # 注册人数
    sql = '''
        select count(1)
        from log_role_reg
        where time >= %d
    ''' % (today0)
    pre_line['reg_count'] = LogQry(channel).qry(sql)[0][0]

    # 活跃人数
    sql = '''
        select count(distinct pid)
        from log_account_login
        where time >= %d
    ''' % (today0)
    pre_line['active_count'] = LogQry(channel).qry(sql)[0][0]

    pre_line['bankrupt_player_count'] = 0
    pre_line['bankrupt_count'] = 0

    ## 查询赠送情况
    sql0 = '''
        select count(1), ifnull(sum(money), 0), ifnull(sum(pump), 0), count(distinct give_id), count(distinct recv_id)
        from log_bank_give
        where time >= %d
        %s
    '''
    if present_type == 0:
        sql = sql0 % (today0, "")
    elif present_type == 1:
        sql = sql0 % (today0, "and give_agent = 0 and recv_agent = 0")
    elif present_type == 2:
        sql = sql0 % (today0, "and give_agent = 0 and recv_agent = 1")
    elif present_type == 3:
        sql = sql0 % (today0, "and give_agent = 1 and recv_agent = 1")
    elif present_type == 4:
        sql = sql0 % (today0, "and give_agent = 1 and recv_agent = 0")

    [total_give_times, total_give_coin, total_give_pump, total_give_player_num, total_recv_player_num] = \
        LogQry(channel).qry(sql)[0]

    pre_line['money'] = float(total_give_coin)
    pre_line['pump'] = float(total_give_pump)
    pre_line['give_count'] = total_give_player_num
    pre_line['recv_count'] = total_recv_player_num
    pre_line['present_count'] = total_give_times
    pre_line['averge_presentation'] = 0
    if total_give_times > 0:
        pre_line['averge_presentation'] = total_give_coin / total_give_times

    return jsonify(result='ok', data=[pre_line])
コード例 #7
0
def get_today_topup():
    channel_id = session['select_channel']
    today0 = time_util.today0()

    pre_line = {}
    pre_line['date_text'] = time_util.formatDate(today0)

    # 注册人数
    sql = '''
        select count(1)
        from log_role_reg
        where time >= %d
    ''' % (today0)
    pre_line['reg_count'] = LogQry(channel_id).qry(sql)[0][0]

    # 活跃人数
    sql = '''
        select count(distinct pid)
        from log_account_login
        where time >= %d
    ''' % (today0)
    pre_line['active_count'] = LogQry(channel_id).qry(sql)[0][0]

    # 充值相关
    sql = '''
        select count(1), ifnull(sum(cost), 0), count(distinct pid)
        from admin_recharge
        where time >= %d
        and state = 1
    ''' % (today0)
    Result = LogQry(channel_id).qry(sql)[0]
    pre_line['recharge_count'] = Result[0]
    pre_line['total_recharge'] = float(Result[1])
    pre_line['recharge_player_num'] = Result[2]

    ## 当日新增充值情况
    pre_line['recharge_count_reg'] = 0
    pre_line['total_recharge_reg'] = 0
    pre_line['recharge_count2_reg'] = 0
    sql = '''
        select pid, sum(cost), count(1)
        from admin_recharge a, player p
        where time >= %d
        and state = 1
        and a.pid = p.id
        and p.reg_time >= %d
    ''' % (today0, today0)
    for pid, cost, num in LogQry(channel_id).qry(sql):
        if not pid:
            continue
        ## 当日注册充值人数
        pre_line['recharge_count_reg'] += 1
        ## 当日注册充值总额
        pre_line['total_recharge_reg'] += cost
        ## 当日注册多次充值人数
        if num > 1:
            pre_line['recharge_count2_reg'] += 1

    return jsonify(result='ok', data=[pre_line])
コード例 #8
0
ファイル: game_rank.py プロジェクト: DJune12138/flask_demo
def search_profit_loss_rank():
    start = request.args.get('beginDate')
    end = request.args.get('endDate')
    game = request.args.get('game')
    sort = request.args.get('profit_loss')
    channel_id = session['select_channel']

    if game == '0':
        game_str = ''
    else:
        game_str = ' AND t_player_subgame.gameid=%s' % game

    start_date = time_util.formatDatestamp(start)
    end_date = time_util.formatDatestamp(end)

    today0 = time_util.today0()
    if start_date == today0:
        return search_profit_loss_rank_today()

    if start_date > end_date:
        return jsonify(result='failed', msg=u"终止日期不能小于起始日期!")

    start_date = int(time_util.formatTimeWithDesc(start_date, "%Y%m%d"))
    end_date = int(time_util.formatTimeWithDesc(end_date + 86400, "%Y%m%d"))

    sort_str = ''
    if sort == '0':
        sort_str = "DESC"
    elif sort == '1':
        sort_str = "ASC"
    search_sql = """SELECT * FROM (SELECT pid, (SELECT nick FROM player WHERE pid=id), (SELECT last_login_ip FROM player WHERE pid=id),
                     sum(game_count), sum(stake_coin), sum(output_coin), (sum(output_coin) - sum(stake_coin)) total_win
                    FROM t_player_subgame
                    WHERE time>=%d 
                    AND time<%d%s 
                    GROUP BY pid ORDER BY time DESC) t
                    ORDER BY total_win %s LIMIT 100""" \
                 % (start_date, end_date, game_str, sort_str)

    game_db_qrl = LogQry(int(channel_id))
    alltime_search_datas = game_db_qrl.qry(search_sql)

    player_rank_list = []
    i = 1  # 用于记录排名
    for pid, nick, last_login_ip, game_count, stake_coin, output_coin, total_win in alltime_search_datas:
        player_dict = dict()
        player_dict['pid'] = pid
        player_dict['nick'] = nick
        player_dict['last_login_ip'] = last_login_ip
        player_dict['game_count'] = float(game_count)
        player_dict['stake_coin'] = float(stake_coin)
        player_dict['output_coin'] = float(output_coin)
        player_dict['total_win'] = float(total_win)
        player_dict['rank'] = i
        player_rank_list.append(player_dict)
        i += 1

    return jsonify(result='ok', data=player_rank_list)
コード例 #9
0
def online_payment_create_update():
    """创建/修改在线支付通道"""

    # 获取参数
    channel_id = session['select_channel']
    pay_type = request.form.get('pay_type')
    api_name = request.form.get('api_name')
    api_id = request.form.get('api_id')
    api_code = request.form.get('api_code')
    api_url = request.form.get('api_url')
    merchant_code = request.form.get('merchant_code')
    md5_key = request.form.get('md5_key')
    public_key = request.form.get('public_key')
    private_key = request.form.get('private_key')
    single_minimum = request.form.get('single_minimum')
    single_highest = request.form.get('single_highest')
    status = request.form.get('status')
    apply_level = request.form.get('apply_level')
    primary_id = request.form.get('id')

    try:
        int(single_minimum)
        int(single_highest)
    except ValueError as e:
        return jsonify(result=0, msg=u'单笔最低、单笔最高和单日停用上限为整数纯数字!')

    # 创建在线支付通道
    if not primary_id:
        # 存进数据库
        create_sql = """INSERT INTO admin_online_payment (channel_id, pay_type, api_name, api_id, api_url,
                                      api_code, merchant_code, md5_key, public_key, private_key, 
                                      single_minimum, single_highest, status, apply_level)
                        VALUES (%s,%s,'%s','%s','%s',
                                '%s','%s','%s','%s','%s',
                                %s,%s,%s,'%s');""" \
                     % (channel_id, pay_type, api_name, api_id, api_url,
                        api_code, merchant_code, md5_key, public_key, private_key,
                        single_minimum, single_highest, status, apply_level)
        LogQry(channel_id).execute(create_sql)

        # 返回应答
        return jsonify(result=1, msg=u'新建成功!')

    # 修改在线支付通道
    else:
        # 存进数据库
        update_sql = """UPDATE admin_online_payment 
                        SET pay_type=%s,api_name='%s',api_url='%s',merchant_code='%s',md5_key='%s',
                            public_key='%s',private_key='%s',single_minimum=%s,single_highest=%s,status=%s,
                            apply_level='%s',api_id = '%s',api_code = '%s'
                        WHERE id=%s;""" \
                     % (pay_type, api_name, api_url, merchant_code, md5_key,
                        public_key, private_key, single_minimum, single_highest, status,
                        apply_level, api_id, api_code, primary_id)
        LogQry(channel_id).execute(update_sql)

        # 返回应答
        return jsonify(result=1, msg=u'修改成功!')
コード例 #10
0
def search_daily_topup():
    start = request.args.get('beginDate', '')
    end = request.args.get('endDate', '')

    start_date = time_util.formatDatestamp(start)
    end_date = time_util.formatDatestamp(end)

    today0 = time_util.today0()
    if start_date == today0:
        return get_today_topup()

    channel_id = session['select_channel']

    if start_date > end_date:
        return jsonify(result='fail', msg=u'结束日期不能小于开始日期!')

    start_date = int(time_util.formatTimeWithDesc(start_date, "%Y%m%d"))
    end_date = int(time_util.formatTimeWithDesc(end_date, "%Y%m%d"))
    search_sql = '''
        SELECT time, ifnull(sum(reg_count), 0), ifnull(sum(active_count), 0), 
                ifnull(sum(recharge_player_count), 0), ifnull(sum(recharge_count), 0),
            ifnull(sum(total_recharge), 0), ifnull(sum(withdraw), 0), ifnull(sum(withdraw_count), 0),
                ifnull(sum(recharge_count_reg), 0), ifnull(sum(total_recharge_reg), 0),
            ifnull(sum(recharge_count2_reg), 0)
        FROM t_system 
        WHERE time>=%d 
        AND time<=%d
        group by time
        ORDER BY time;
        ''' % (start_date, end_date)

    game_db_qrl = LogQry(int(channel_id))
    print search_sql
    alltime_search_datas = game_db_qrl.qry(search_sql)

    # 最终展示的数据列表
    allday_datas = []

    for line in alltime_search_datas:
        if not line[0]:
            continue
        pre_line = dict()
        pre_line['date_text'] = time_util.date_str(line[0])
        pre_line['reg_count'] = int(line[1])
        pre_line['active_count'] = int(line[2])
        pre_line['recharge_player_num'] = int(line[3])
        pre_line['recharge_count'] = int(line[4])
        pre_line['total_recharge'] = int(line[5])
        pre_line['withdraw'] = int(line[6])
        pre_line['withdraw_count'] = int(line[7])

        pre_line['recharge_count_reg'] = int(line[8])
        pre_line['total_recharge_reg'] = int(line[9])
        pre_line['recharge_count2_reg'] = int(line[10])
        allday_datas.append(pre_line)

    return jsonify(result='ok', data=allday_datas)
コード例 #11
0
def online_payment_retrieve():
    """查询在线支付通道"""

    # 获取参数
    channel_id = session['select_channel']
    pay_type = request.args.get('stype')

    # 处理参数
    pay_type_str = ''
    if pay_type:
        pay_type_str = ' AND pay_type in (%s)' % pay_type

    # 获取对应渠道的玩家层级名称,并组织成字典
    retrieve_sql = """
        SELECT id,member_level_name 
        FROM admin_member_level 
        WHERE channel_id=%s;""" % channel_id
    datas = LogQry(channel_id).qry(retrieve_sql)
    member_dict = dict()
    for num, name in datas:
        member_dict[num] = name

    # 从数据库获取数据
    retrieve_sql = """
        SELECT id,pay_type,api_name,api_url,merchant_code,
            md5_key,public_key,private_key,single_minimum,single_highest,
            stop_using_limit,status,apply_level,api_id,api_code
        FROM admin_online_payment 
        WHERE channel_id=%s
            %s;""" % (channel_id, pay_type_str)
    datas = LogQry(channel_id).qry(retrieve_sql)

    # 处理数据
    datas_list = list()
    for data in datas:
        data_dict = dict()
        data_dict['id'] = data[0]
        data_dict['pay_type'] = data[1]
        data_dict['api_name'] = data[2]
        data_dict['api_url'] = data[3]
        data_dict['merchant_code'] = data[4]
        data_dict['md5_key'] = data[5]
        data_dict['public_key'] = data[6]
        data_dict['private_key'] = data[7]
        data_dict['single_minimum'] = data[8]
        data_dict['single_highest'] = data[9]
        data_dict['stop_using_limit'] = data[10]
        data_dict['status'] = data[11]
        data_dict['api_id'] = data[13]
        data_dict['api_code'] = data[14]
        data_dict['apply_level'] = ','.join([member_dict[int(i)] for i in data[12].split(',')]) if data[12] else ''
        datas_list.append(data_dict)

    # 返回数据
    return jsonify(datas=datas_list)
コード例 #12
0
def game_platform_retrieve():
    """游戏平台管理查询"""

    # 获取参数
    channel_id = session['select_channel']

    # 从数据库获取游戏开关状态数据
    retrieve_sql = """SELECT game_function_id,status,sort
                      FROM admin_platform
                      WHERE game_function_id>0;"""
    datas = LogQry(channel_id).qry(retrieve_sql)

    # 处理游戏开关的数据
    game_status_dict = dict()
    for game_id, status, sort in datas:
        game_status_dict[game_id] = [status] + [sort]
    all_game_dict = game_parameter.get_subgame_list()
    datas_list_game = list()
    for game_id, game_name in all_game_dict.items():
        game_dict = dict()
        game_dict['game_id'] = game_id
        game_dict['name'] = game_name
        try:
            game_dict['status'] = game_status_dict.get(game_id)[0]
        except TypeError:
            game_dict['status'] = -1
        try:
            game_dict['sort'] = game_status_dict.get(game_id)[1]
        except TypeError:
            game_dict['sort'] = ''
        datas_list_game.append(game_dict)

    # 游戏开关根据sort排序
    datas_list_game.sort(key=lambda x: x['sort'])

    # 从数据库获取功能开关状态数据
    retrieve_sql = """SELECT game_function_id,status
                      FROM admin_platform
                      WHERE game_function_id<0;"""
    datas = LogQry(channel_id).qry(retrieve_sql)

    # 处理游戏功能开关的数据
    function_status_dict = dict()
    for function_id, status in datas:
        function_status_dict[function_id] = status
    datas_list_function = list()
    for function_id, function_name in function_map.items():
        function_dict = dict()
        function_dict['function_id'] = function_id
        function_dict['name'] = function_name
        function_dict['status'] = function_status_dict.get(function_id, -1)
        datas_list_function.append(function_dict)

    # 返回模板与数据
    return jsonify(data_function=datas_list_function, data_game=datas_list_game)
コード例 #13
0
ファイル: withdraw_api.py プロジェクト: DJune12138/flask_demo
def withdraw_pre():
    data = request.json

    pid = int(data.get("pid"))
    channel_name = data.get("channel")
    money = int(data.get("money"))
    withdraw_type = int(data.get("type"))

    channel = int(redis_conn.hget(CHANNEL_CONFIG_TABLE + channel_name, "id"))

    ## 查询玩家层级
    ## tod 绑定银行卡信息
    sql = '''
        select vip, counter
        from player
        where id = %d
    ''' % pid
    vip, counter = LogQry(channel).qry(sql)[0]
    if withdraw_type == WITHDRAW_TYPE_BANK:
        bank, bank_acc, bank_accname, bank_addr = game_util.get_bank_info(
            counter)
    elif withdraw_type == WITHDRAW_TYPE_ZFB:
        bank = ""
        bank_addr = ""
        bank_acc, bank_accname = game_util.get_zfb_info(counter)

    ## 生成本次订单号
    orderno = withdraw_util.gen_order_no(channel)

    ## 插入数据
    sql = '''
        insert into admin_withdraw 
            (
            pid, member_level, withdraw_deposit_id, withdraw_deposit_type, withdraw_deposit_money,
            application_time, service_charge, platform_withhold, status, dispose_time,
            dispose_user, remark, payee, due_bank, gathering_account,
            open_account_address, failed_reason, channel_id
            )
        values 
            (
            %d, %d, '%s', %d, %d,
            %d, %d, %d, %d, %d,
            %d, '%s', '%s', '%s', '%s',
            '%s', '%s', %d
            )
    ''' % (pid, vip, orderno, withdraw_type, money, time_util.now_sec(), 0, 0,
           STATUS_REVIEW, 0, 0, "", bank_accname, bank, bank_acc, bank_addr,
           "", channel)

    print sql
    LogQry(channel).execute(sql)

    return jsonify(result="ok")
コード例 #14
0
def pay_channel_list():
    """公司入款查询"""

    # 获取参数
    stype = int(request.args.get("stype"))
    channel = session['select_channel']

    # 处理参数
    where = ''
    if stype != -1:
        where += 'WHERE receipt_type={}'.format(stype)

    # 查询玩家层级
    retrieve_sql = """SELECT id,member_level_name
                      FROM admin_member_level
                      WHERE channel_id=%s;""" % channel
    ml = dict()
    for line in LogQry(channel).qry(retrieve_sql):
        ml[line[0]] = line[1]

    # 查询公司入款数据
    retrieve_sql = """SELECT id,name,player_lv,min_recharge,max_recharge,
                              config,status,decimal_open,memo,receipt_type
                      FROM admin_pay_channel
                        %s;""" % where
    data = LogQry(channel).qry(retrieve_sql)

    # 处理数据
    data_list = list()
    for primary_id, name, player_lv, min_recharge, max_recharge, \
        config, status, decimal_open, memo, \
        receipt_type in data:
        data_dict = dict()
        config = json.loads(config)
        data_dict['id'] = primary_id
        data_dict['name'] = name
        data_dict['player_lv'] = ",".join([ml[int(i)] for i in player_lv.split(",")])
        data_dict['single_income'] = str(min_recharge) + ' - ' + str(max_recharge)
        data_dict['receipt_bank'] = config.get('receipt_bank', '')
        data_dict['receipt_name'] = config.get('receipt_name', '')
        data_dict['receipt_account'] = config.get('receipt_account', '')
        data_dict['status'] = u'启用' if status == 0 else u'停用'
        data_dict['receipt_address'] = config.get('receipt_address', '')
        data_dict['decimal_open'] = decimal_open
        data_dict['min_recharge'] = min_recharge
        data_dict['max_recharge'] = max_recharge
        data_dict['memo'] = memo
        data_dict['receipt_type'] = receipt_type
        data_list.append(data_dict)

    # 返回数据
    return jsonify(result=1, data=data_list)
コード例 #15
0
def agent_list_lower_agent():
    """代理列表下级代理查询"""
    channel_id = session['select_channel']
    ## 查询所有层级
    sql = 'select id, level_name from admin_agent_level'
    agent_level = {}
    for k, v in LogQry(channel_id).qry(sql):
        agent_level[k] = v

    # 获取参数
    pid = request.args.get('pid')
    size = request.args.get('size')
    offset = request.args.get('offset')

    ## 查询总数
    sql = 'select count(1) from player_agent where invite_id = %s' % pid
    total_count = LogQry(channel_id).qry(sql)[0][0]

    ## 查询代理列表
    sql = """
        SELECT (select agent_level from admin_agent_list where pid = a.pid), pid
        FROM player_agent a
        WHERE invite_id = %s
        LIMIT %s, %s;
    """ % (pid, offset, size)
    data = LogQry(int(channel_id)).qry(sql)
    data_list = list()
    for lv, pid in data:
        data_dict = dict()
        if lv:
            data_dict['agent_level'] = agent_level[lv]
        else:
            data_dict['agent_level'] = ""
        data_dict['pid'] = pid

        sql = '''
            select nick, coin, counter, reg_time, last_login_time 
            from player 
            where id = %d
        ''' % pid
        name, coin, counter, register_time, last_login_time = LogQry(
            channel_id).qry(sql)[0]

        data_dict['name'] = name
        data_dict['register_time'] = register_time
        data_dict['login_time'] = last_login_time
        data_dict['coin'] = coin
        data_dict['bank'] = game_util.get_bank_coin(counter)
        data_list.append(data_dict)

    # 返回数据
    return jsonify(result=1, data=data_list, dataLength=total_count)
コード例 #16
0
ファイル: game_rank.py プロジェクト: DJune12138/flask_demo
def search_profit_loss_rank_today():
    game = request.args.get('game')
    sort = request.args.get('profit_loss')
    channel_id = session['select_channel']

    today0 = time_util.today0()

    if game == '0':
        game_str = ''
    else:
        game_str = ' AND gameid=%s' % game

    sort_str = ''
    if sort == '0':
        sort_str = "DESC"
    elif sort == '1':
        sort_str = "ASC"
    search_sql = """
        SELECT * FROM 
            (SELECT pid, (SELECT nick FROM player WHERE pid=id), (SELECT last_login_ip FROM player WHERE pid=id),
                     count(1), sum(stake_coin), sum(output_coin), (sum(output_coin) - sum(stake_coin)) total_win
            FROM %s
            WHERE time>=%d 
            %s 
            GROUP BY pid 
            ORDER BY time DESC) t
        ORDER BY total_win %s 
        LIMIT 100
        """ % (get_table_log_player_subgame(today0), today0, game_str,
               sort_str)

    game_db_qrl = LogQry(int(channel_id))
    alltime_search_datas = game_db_qrl.qry(search_sql)

    player_rank_list = []
    i = 1  # 用于记录排名
    for pid, nick, last_login_ip, game_count, stake_coin, output_coin, total_win in alltime_search_datas:
        player_dict = dict()
        player_dict['pid'] = pid
        player_dict['nick'] = nick
        player_dict['last_login_ip'] = last_login_ip
        player_dict['game_count'] = float(game_count)
        player_dict['stake_coin'] = float(stake_coin)
        player_dict['output_coin'] = float(output_coin)
        player_dict['total_win'] = float(total_win)
        player_dict['rank'] = i
        player_rank_list.append(player_dict)
        i += 1

    return jsonify(result='ok', data=player_rank_list)
コード例 #17
0
def get_least_stake_coin(channel, pid):
    ## 查询充值默认流水倍数
    sql = 'select val from admin_system_parameter where name = "need_water"'
    r = LogQry(channel).qry(sql)
    if len(r) > 0:
        Defualt_rate = float(r[0][0])
    else:
        Defualt_rate = DEFAULT_STAKE_RATE

    ## 上次提现到本次提现过程中充值
    sql = '''
        select ifnull(sum(cost * if(rechargeid = 0, %d, (select journal_require from admin_recharge_discounts where id = rechargeid))), 0)
        from admin_recharge
        where pid = %d
        and state = %d
        and time >= (
            select ifnull(max(dispose_time), 0)
            from admin_withdraw
            where pid = %d
            and status = %d
        )
    ''' % (Defualt_rate, pid, PAY_STATE_SUCC, pid, STATUS_SUCC)
    need_stake_coin = int(LogQry(channel).qry(sql)[0][0])

    ## 查询从最后一次提现后的时间
    sql = '''
        select ifnull(max(dispose_time), 0), (select reg_time from player where id = %d), 
            (select vip from player where id = %d)
        from admin_withdraw
        where pid = %d
    ''' % (pid, pid, pid)
    print sql
    last_withdraw_time, reg_time, vip = LogQry(channel).qry(sql)[0]

    ## 查询从最后一次提现到当前的所有流水
    _pre_time = max(last_withdraw_time, reg_time)
    _use_time = _pre_time
    last_table = get_table_log_player_subgame(time_util.now_sec())
    total_stake_coin = 0
    while True:
        _use_table = get_table_log_player_subgame(_use_time)
        sql = 'select ifnull(sum(stake_coin), 0) from %s where pid = %d and time >= %d' \
              % (_use_table, pid, _pre_time)
        total_stake_coin += int(LogQry(channel).qry(sql)[0][0])
        _use_time += (7 * 24 * 3600)
        if _use_table == last_table:
            break

    return need_stake_coin / 100, total_stake_coin
コード例 #18
0
def api_distribution_config():
    channel = request.args.get("channel")

    sql = 'select pump_section, commission_section from admin_distribution_config limit 1'
    pump, commission = LogQry(name=channel).qry(sql)[0]

    return jsonify(pump=json.loads(pump), commission=json.loads(commission))
コード例 #19
0
def system_parameter_create_update():
    """系统参数新建/修改"""

    # 获取参数
    channel_id = session['select_channel']
    agent_pattern = request.form.get('agent_pattern')
    default_level = request.form.get('default_level')
    phone_service_url = request.form.get('phone_service_url')

    data = []
    for k, v in request.form.items():
        data.append("('%s','%s')" % (k, v))

    # 在数据库新建或修改数据
    sql = '''
        REPLACE INTO admin_system_parameter 
            (`name`, `val`)
        VALUES %s
    ''' % (",".join(data))
    LogQry(channel_id).execute(sql)

    payload = {"data": request.form.items()}
    GameWeb(channel_id).post("/api/set_system_parameter", payload)

    # 返回应答
    return jsonify(msg=u'保存成功!')
コード例 #20
0
def pay_channel_edit():
    channel = session['select_channel']
    idx = int(request.args.get('id'))
    name = request.args.get('name')
    pay_type = int(request.args.get('pay_type', -1))
    receipt_type = int(request.args.get('receipt_type'))
    config = request.args.get("config")
    min_recharge = int(request.args.get('min_recharge'))
    max_recharge = int(request.args.get('max_recharge'))
    decimal_open = int(request.args.get('decimal_open'))
    memo = request.args.get('memo')
    player_lv = request.args.get('player_lv')
    status = request.args.get('status')

    sql = '''
		replace into admin_pay_channel
			(channel, name, player_lv, min_recharge, max_recharge,
			pay_type, receipt_type, config, status, decimal_open, 
			memo, `id`)
		values 
			(%d, '%s', '%s', %d, %d,
			%d, %d, '%s', %s, %d, 
			'%s', %d)
	''' % (channel, name, player_lv, min_recharge, max_recharge,
           pay_type, receipt_type, config, status, decimal_open,
           memo, idx
           )
    LogQry(channel).execute(sql)

    return jsonify(result="ok")
コード例 #21
0
ファイル: pay_cb.py プロジェクト: DJune12138/flask_demo
def pay_cb_yi_zhi_fu():
	dd = request_data()
	data = {}
	for k, v in dd.items():
		data[k] = v

	if not data:
		return jsonify(err="nodata")
	if not data.has_key("sign"):
		return jsonify(err="nosign")

	if data["returnCode"] == "SUCCESS":
		orderno = data["outTradeNo"]
		ll = orderno.split("_")
		channel = int(ll[0])
		pay_channel = ll[1]

		## 获取商户秘钥
		sql = 'select md5_key from admin_online_payment where id = %s' % pay_channel
		mch_key = LogQry(channel).qry(sql)[0][0]

		## 先判断签名
		if data["resultCode"] == "SUCCESS" and httpc_util.check_sign(data, mch_key, data["sign"]):
			## 签名校验通过 支付成功
			money = int(float(data["totalFee"]) * 100)
			platform_orderno = data["transactionId"]
			orderno = data["outTradeNo"]
			
			if do_pay_after(channel, orderno, platform_orderno, int(money), data["timeEnd"]):
				return jsonify({"return_code":"SUCCESS", "return_msg":"OK"})
			else:
				return jsonify({"return_code":"FAIL", "return_msg":"send err"})
		else:
			return jsonify({"return_code":"FAIL", "return_msg":"check sign err"})
コード例 #22
0
ファイル: pay_cb.py プロジェクト: DJune12138/flask_demo
def pay_cb_wx():
	data = httpc_util.xml_to_dict(request.get_data())
	
	if data["return_code"] == "SUCCESS":
		orderno = data["out_trade_no"]
		ll = orderno.split("_")
		channel = int(ll[0])
		pay_channel = ll[1]

		## 获取商户秘钥
		sql = 'select md5_key from admin_online_payment where id = %s' % pay_channel
		mch_key = LogQry(channel).qry(sql)[0][0]

		## 先判断签名
		src = "&".join(["%s=%s" % (i, data[i]) for i in sorted(data.keys()) if i != "sign"])
		src += "&key=%s" % mch_key
		sign = md5(src).upper()
		if data["result_code"] == "SUCCESS" and data["sign"] == sign: 
			## 签名校验通过 支付成功
			money = data["total_fee"]
			platform_orderno = data["transaction_id"]
			orderno = data["out_trade_no"]
			
			if do_pay_after(channel, orderno, platform_orderno, int(money), data["time_end"]):
				payload = {"return_code":"SUCCESS", "return_msg":"OK"}
				return httpc_util.dict_to_xml(payload)
			else:
				payload = {"return_code":"FAIL", "return_msg":"send err"}
				return httpc_util.dict_to_xml(payload)
		else:
			payload = {"return_code":"FAIL", "return_msg":"check sign err"}
			return httpc_util.dict_to_xml(payload)
コード例 #23
0
def agent_list_json_nick():
    """获取玩家昵称"""

    # 获取参数
    pid = request.args.get('pid')
    channel_id = session['select_channel']

    # 校验参数
    try:
        int(pid)
    except ValueError:
        return jsonify(result=0, msg=u'玩家ID必须为整数纯数字!')

    # 查询数据库
    retrieve_sql = """SELECT nick
                      FROM player
                      WHERE id=%s;""" % pid
    data = LogQry(int(channel_id)).qry(retrieve_sql)

    # 根据数据返回数据或应答
    try:
        data = data[0][0]
    except IndexError:
        return jsonify(result=0, msg=u'没有此玩家!')
    else:
        return jsonify(result=1, data=data)
コード例 #24
0
def do_qry(channel):
    sql = '''
			select id, nick, phone
			from player
			where id > 90000 and id < 100000
		'''

    return LogQry(channel).qry(sql)
コード例 #25
0
def agent_level_default():
    """每个渠道的默认层级"""

    # 获取参数
    channel_id = session['select_channel']
    agent_pattern_id = request.form.get('agent_pattern_id')
    first_ladder = request.form.get('first_ladder')
    second_ladder = request.form.get('second_ladder')
    third_ladder = request.form.get('third_ladder')
    fourth_ladder = request.form.get('fourth_ladder')
    fifth_ladder = request.form.get('fifth_ladder')

    # 如果是传统代理模式,先从数据库查出是否没有代理层级,没有就新建一个默认层级
    if agent_pattern_id == '1':
        retrieve_sql = """SELECT count(*)
                          FROM admin_agent_level;"""
        data = LogQry(channel_id).qry(retrieve_sql)[0][0]
        if data == 0:
            create_sql = """INSERT INTO admin_agent_level
                            VALUES (0,'默认层级',1,'%s','%s','%s','%s','%s');""" \
                         % (first_ladder, second_ladder, third_ladder, fourth_ladder, fifth_ladder)
            LogQry(channel_id).execute(create_sql)
        return jsonify(result=1)

    # 如果是分销代理模式,先从数据库查出是否没有代理层级,没有就新建四个默认层级
    elif agent_pattern_id == '2':
        retrieve_sql = """SELECT count(*)
                          FROM admin_agent_level;"""
        data = LogQry(channel_id).qry(retrieve_sql)[0][0]
        if data == 0:
            create_sql = """INSERT INTO agent_level
                            VALUES (0,'本级代理',1,'%s','%s','%s','%s','%s'),
                                    (0,'一级代理',1,'%s','%s','%s','%s','%s'),
                                    (0,'二级代理',1,'%s','%s','%s','%s','%s'),
                                    (0,'三级代理',1,'%s','%s','%s','%s','%s');""" \
                         % (first_ladder, second_ladder, third_ladder, fourth_ladder, fifth_ladder,
                            first_ladder, second_ladder, third_ladder, fourth_ladder, fifth_ladder,
                            first_ladder, second_ladder, third_ladder, fourth_ladder, fifth_ladder,
                            first_ladder, second_ladder, third_ladder, fourth_ladder, fifth_ladder)
            LogQry(channel_id).execute(create_sql)
        return jsonify(result=1)

    # 都不是,直接返回应答
    else:
        return jsonify(result=1)
コード例 #26
0
ファイル: recharge.py プロジェクト: DJune12138/flask_demo
def review_order():
    # 接收渠道id
    channel = session['select_channel']
    ## 备注
    memo = request.args.get('memo', '')
    ## 订单号
    orderno = request.args.get('orderno', '')
    ## 状态
    state = int(request.args.get('result', ''))

    ## 查询订单状态
    sql = '''
        select pid, cost
        from admin_recharge
        where orderno = '%s' and (state = %d or (state = %d and review_pid = %d))
    ''' % (orderno, PAY_STATE_REVIEW, PAY_STATE_LOCK, session["user_id"])
    data = LogQry(channel).qry(sql)
    if not data:
        return jsonify(result="fail")
    pid, money = data[0]

    ## 根据充值优惠重新计算实际到账的钱
    recharge_info = get_coin_recharge_discounts(channel, money, pid)
    recharge_id, add_recharge, coin = recharge_info

    sql = '''
        update admin_recharge
        set memo = '%s', state = %d, review_time = %d, review_pid = %d, rechargeid = %d, 
            add_recharge = %d, coin = %d
        where orderno = '%s'
    ''' % (memo, state, time_util.now_sec(), session["user_id"], recharge_id, \
           add_recharge, coin, orderno)
    LogQry(channel).execute(sql)

    ## todo 给游戏后台发送消息
    if state == PAY_STATE_SUCC:
        pay_load = {
            "pid": pid,
            "money": money,
            "coin": coin,
            "type": COIN_CHANGE_RECHARGE,
        }
        GameWeb(channel).post("/api/set_player_coin", pay_load)

    return jsonify(result="ok")
コード例 #27
0
def wx_agent_del():
    channel = session['select_channel']
    idx = int(request.args.get('id'))

    delete_sql = """DELETE FROM admin_wx_agent
                    WHERE id=%s;""" % idx
    LogQry(channel).execute(delete_sql)

    return jsonify(result="ok")
コード例 #28
0
def api_distribution_settlement_no():
    channel = request.args.get("channel")
    pid = int(request.args.get("pid"))

    ## 根据查询日期 偏移量
    sql = '''
		select pid, pump, win, pump_detail, win_detail
		from t_distribution_day a
		where pid = %d
		and time > 
			(select ifnull(max(date2) , 0)
			from admin_distribution_settlement 
			where pid = a.pid)
	''' % pid
    datas = {"pump": {}, "win": {}, "pump_detail": {}, "win_detail": {}}
    for pid, pump, win, pump_detail, win_detail in LogQry(
            name=channel).qry(sql):
        print pump_detail, win_detail
        datas = merge_dict(datas, json.loads(pump), json.loads(win),
                           json.loads(pump_detail), json.loads(win_detail))

    ## 查询分销配置
    sql = 'select pump_section, commission_section from admin_distribution_config limit 1'
    pump_config, commission_config = LogQry(name=channel).qry(sql)[0]
    pump_config = json.loads(pump_config)
    commission_config = json.loads(commission_config)

    ## 计算返佣
    datas = distribution_util.calc_commission(datas, pump_config,
                                              commission_config)

    res = {
        "pump_commission":
        datas["pump_commission"],
        "win_commission":
        datas["win_commission"],
        "count": [
            len(datas["win_detail"][str(i)])
            for i in range(0, len(datas["win_detail"]))
        ],
    }

    return jsonify(datas=res)
コード例 #29
0
def get_pay_channel_list():
    channel = session['select_channel']
    sql = '''
		select id, name, pay_type, receipt_type, config
		from admin_pay_channel
		where channel = %d
		and status = %d
	''' % (channel, STATUS_USE)
    data = LogQry(channel).qry(sql)
    return jsonify(datas=data)
コード例 #30
0
def distribution_commission_his():
    pid = request.args.get("pid")
    channel = session['select_channel']

    size = request.args.get('size')
    offset = request.args.get('offset')

    where = ""
    limit = ""
    if pid:
        where += "and pid = %s" % pid
    if size and offset:
        limit += "limit %s, %s" % (offset, size)

    sql = 'select count(1) from admin_distribution_settlement where 1 = 1 %s' % where
    total_count = LogQry(channel).qry(sql)[0][0]

    sql = '''
        select pid, date1, date2, pump_commission, win_commission, 
            fee, other_fee, memo, (select account_name from player where id = pid), type
        from admin_distribution_settlement
        where 1 = 1
        %s
        %s
    ''' % (where, limit)
    datas = []
    for pid, date1, date2, pump_commission, win_commission, \
        fee, other_fee, memo, name, stype in LogQry(channel).qry(sql):
        datas.append({
            "date1": date1,
            "date2": date2,
            "pid": pid,
            "name": name,
            "pump_commission": pump_commission,
            "win_commission": win_commission,
            "fee": fee,
            "stype": stype,
            "other_fee": other_fee,
            "memo": memo
        })

    return jsonify(datas=datas, total_count=total_count)