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])
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)
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")
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)
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'添加代理成功!')
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])
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])
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)
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'修改成功!')
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)
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)
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)
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")
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)
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)
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)
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
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))
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'保存成功!')
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")
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"})
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)
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)
def do_qry(channel): sql = ''' select id, nick, phone from player where id > 90000 and id < 100000 ''' return LogQry(channel).qry(sql)
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)
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")
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")
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)
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)
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)