def update_activity_json(): """返回修改活动页面时用的json数据""" # 获取参数 activity_id = request.args.get('activity_id') channel_id = session['select_channel'] # 从数据库获取并处理数据 retrieve_activity_sql = """SELECT activity_title,activity_content,picture_url,tab1_url,tab2_url, begin_time,end_time,entry_fee,priority,activity_type, id FROM admin_activity WHERE id=%s;""" % activity_id activity_data = (LogQry(channel_id).qry(retrieve_activity_sql))[0] activity_data_dict = dict() activity_data_dict['activity_title'] = activity_data[0] activity_data_dict['activity_content'] = activity_data[1] activity_data_dict['picture_url'] = activity_data[2] activity_data_dict['tab1_url'] = activity_data[3] activity_data_dict['tab2_url'] = activity_data[4] activity_data_dict['begin_time'] = time_util.formatDateTime( activity_data[5]) activity_data_dict['end_time'] = time_util.formatDateTime(activity_data[6]) activity_data_dict['entry_fee'] = activity_data[7] activity_data_dict['priority'] = activity_data[8] activity_data_dict['activity_type'] = activity_data[9] activity_data_dict['activity_id'] = activity_data[10] # 返回数据 return jsonify(data=activity_data_dict)
def retrieve_activity(): """查询活动""" # 获取参数 channel_id = session['select_channel'] activity_content = request.args.get('activity_content') user_id = request.args.get('user_id') begin_time = request.args.get('beginDate') end_time = request.args.get('endDate') # 处理时间 begin_time = time_util.start(begin_time) end_time = time_util.end(end_time) # 校验参数 if begin_time >= end_time: return jsonify(result='fail', msg=u'结束时间不能小于开始时间!') # 从数据库获取并处理数据 activity_content_str = '' user_id_str = '' if activity_content: activity_content_str = ' AND activity_content LIKE "%%%s%%"' % activity_content if user_id: user_id_str = ' AND user_id="%s"' % user_id retrieve_activity_sql = """SELECT priority,id,user_id,activity_content,activity_type, entry_fee,begin_time,end_time,status FROM admin_activity WHERE ((begin_time>=%s AND begin_time<=%s) OR (end_time>=%s AND end_time<=%s)) %s%s ORDER BY status DESC;""" \ % (begin_time, end_time, begin_time, end_time, activity_content_str, user_id_str) activity_datas = LogQry(channel_id).qry(retrieve_activity_sql) datas = [] for priority, activity_id, user_id, activity_content, activity_type, \ entry_fee, begin_time, end_time, status in activity_datas: activity_dict = dict() activity_dict['priority'] = priority activity_dict['activity_id'] = activity_id activity_dict['user_id'] = user_id activity_dict['activity_content'] = activity_content.replace( '\n', '<br>') activity_dict['activity_type'] = activity_type_map[activity_type] activity_dict['entry_fee'] = '' if entry_fee is None else entry_fee activity_dict['begin_time'] = time_util.formatDateTime(begin_time) activity_dict['end_time'] = time_util.formatDateTime(end_time) if status == TAKE_EFFECT: # 如果状态为生效,再判断一下当前时间与活动实际时间是否生效,若失效则修改状态 if not begin_time < time_util.now_sec() < end_time: status = LOSE_EFFICACY update_sql = """UPDATE admin_activity SET status=%s WHERE id=%s;""" \ % (status, activity_id) LogQry(channel_id).execute(update_sql) activity_dict['status'] = activity_status_map[status] datas.append(activity_dict) # 返回模版和数据 return jsonify(result='ok', data=datas)
def query_marquee(): """查询跑马灯""" # 获取参数 marquee_content = request.args.get('marquee_content') user_id = request.args.get('user_id') channel_id = session['select_channel'] begin_time = request.args.get('beginDate') end_time = request.args.get('endDate') # 处理日期 begin_time = time_util.start(begin_time) end_time = time_util.end(end_time) # 校验参数 if begin_time >= end_time: return jsonify(result='fail', msg=u'结束时间不能小于开始时间!') # 从数据库获取数据,并组织参数 marquee_content_str = "" user_id_str = "" if marquee_content: marquee_content_str = " AND marquee_content LIKE '%%%s%%'" % marquee_content if user_id: user_id_str = " AND user_id='%s'" % user_id query_sql = """SELECT id,user_id,marquee_content,push_times,begin_time, end_time,status FROM admin_marquee WHERE ((begin_time>=%s AND begin_time<=%s) OR (end_time>=%s AND end_time<=%s)) %s%s ORDER BY status DESC;""" \ % (begin_time, end_time, begin_time, end_time, marquee_content_str, user_id_str) marquee_datas = LogQry(channel_id).qry(query_sql) datas = [] for marquee_id, user_id, marquee_content, push_times, begin_time, \ end_time, status in marquee_datas: marquee_dict = dict() marquee_dict['marquee_id'] = marquee_id marquee_dict['user_id'] = user_id marquee_dict['marquee_content'] = marquee_content.replace('\n', '<br>') marquee_dict['push_times'] = u'不限' if push_times == -1 else push_times marquee_dict['begin_time'] = time_util.formatDateTime(begin_time) marquee_dict['end_time'] = time_util.formatDateTime(end_time) marquee_dict['status'] = status_map[status] datas.append(marquee_dict) # 返回数据 return jsonify(result='ok', data=datas)
def pre_pay_after_for_you_ma_fu(money, channel, pay_channel, data, callback_url): AppID = data["appid"] MchID = data["mch_id"] OrderNo = data["orderno"] MchKey = data["mch_key"] URL = data["url"] ## 支付方式选择 PayType = "" if data["pay_type"] == PAY_TYPE_WX_QRCODE: PayType = "902" if data["pay_type"] == PAY_TYPE_WX_WAP: PayType = "901" if data["pay_type"] == PAY_TYPE_ZFB_QRCODE: PayType = "903" if data["pay_type"] == PAY_TYPE_ZFB_WAP: PayType = "904" ## 预创建订单成功 payload = { "pay_memberid":MchID, "pay_orderid":OrderNo, "pay_applydate":time_util.formatDateTime(time_util.now_sec()), "pay_bankcode":PayType, "pay_notifyurl":callback_url, "pay_callbackurl":callback_url, "pay_amount":"%.2f" % (float(money) / 100), } payload["pay_md5sign"] = httpc_util.gen_sign(payload, MchKey, lower = False, connect_key = True) payload["pay_productname"] = u"会员充值" params = "\n".join(['<input type="hidden" name="%s" value="%s">' % (k, v) for k, v in payload.items()]) return html % (URL, params)
def search_annouce_game(): title = request.args.get('announce_title') start_date = request.args.get('beginDate') end_date = request.args.get('endDate') channel = int(session['select_channel']) start_date = time_util.start(start_date) end_date = time_util.end(end_date) if start_date >= end_date: return jsonify(result='fail', msg=u'结束时间不能小于开始时间!') if title: title_str = " AND title='%s'" % title else: title_str = "" select_sql = """ SELECT id, channel, title, priority, content_image_url, push_times, start_date, end_date, status FROM admin_announcement WHERE channel=%s%s AND status=1 AND ((start_date>=%s and start_date<=%s) OR (end_date>=%s and end_date<=%s)); """ % (channel, title_str, start_date, end_date, start_date, end_date) game_announce_datas = LogQry(channel).qry(select_sql) datas = list() Now = time_util.now_sec() for ann_id, channel, title, priority, content_image_url, push_times, start_date, end_date, status in game_announce_datas: announce_dict = dict() announce_dict['id'] = ann_id announce_dict['title'] = title announce_dict['priority'] = priority announce_dict['content_image_url'] = content_image_url announce_dict['push_times'] = push_times announce_dict['start_date'] = time_util.formatDateTime(start_date) announce_dict['end_date'] = time_util.formatDateTime(end_date) announce_dict['status'] = status if status == 1: ## 如果状态是1 得判断是否生效状态 if Now >= start_date and Now <= end_date: announce_dict['status'] = 2 if Now >= end_date: announce_dict['status'] = 3 datas.append(announce_dict) return jsonify(result='ok', data=datas)
def retrieve_mail(): """查询邮件""" # 获取参数 mail_title = request.args.get('mail_title') user_id = request.args.get('user_id') channel_id = int(session['select_channel']) begin_time = request.args.get('beginDate') end_time = request.args.get('endDate') # 处理时间 begin_time = time_util.start(begin_time) end_time = time_util.end(end_time) # 校验参数 if begin_time >= end_time: return jsonify(result='fail', msg=u'结束时间不能小于开始时间!') # 从数据库获取并处理数据 mail_title_str = '' user_id_str = '' if mail_title: mail_title_str = ' AND mail_title LIKE "%%%s%%"' % mail_title if user_id: user_id_str = " AND user_id='%s'" % user_id retrieve_mail_sql = """SELECT id,user_id,push_player_id,mail_title,mail_content, mail_accessories,status,push_time,expire FROM admin_mail WHERE (push_time>=%s AND push_time<=%s) OR push_time=0 %s%s ORDER BY status;""" \ % (begin_time, end_time, mail_title_str, user_id_str) mail_datas = LogQry(channel_id).qry(retrieve_mail_sql) datas = [] status_num = {0: u'待发送', 1: u'已发送'} for mail_id, user_id, push_player_id, mail_title, mail_content, \ mail_accessories, status, push_time, expire in mail_datas: mails_dict = dict() mails_dict['mail_id'] = mail_id mails_dict['user_id'] = user_id mails_dict['push_player_id'] = push_player_id mails_dict['mail_title'] = mail_title mails_dict['mail_content'] = mail_content.replace('\n', '<br>') mails_dict['push_time'] = time_util.formatDateTime( push_time) if push_time > 0 else '' mails_dict['mail_accessories'] = id_map_property(mail_accessories) mails_dict['expire'] = expire if expire else '' mails_dict['status'] = status_num[status] datas.append(mails_dict) # 高级用户可以操作邮件的发送按钮 is_high_level_user = False if session.get('access_level') == 1: is_high_level_user = True # 返回数据 return jsonify(result='ok', data=datas, is_high=is_high_level_user)
def recharge_discounts_json(): """返回修改充值优惠设置的json数据""" # 获取参数 activity_id = request.args.get('activity_id') # 从数据库获取数据 retrieve_sql = """SELECT activity_type,activity_title,show_picture_url,tab1_url,tab2_url, activity_content,participation_member,participation_level,journal_require,request_times, max_add_recharge,recharge_detail,begin_time,end_time,priority FROM admin_recharge_discounts WHERE id=%s;""" % activity_id data = LogQry(session['select_channel']).qry(retrieve_sql) # 处理数据 data = data[0] data_dict = dict() data_dict['activity_type'] = data[0] data_dict['activity_title'] = data[1] data_dict['show_picture_url'] = data[2] data_dict['tab1_url'] = data[3] data_dict['tab2_url'] = data[4] data_dict['activity_content'] = data[5] data_dict['participation_member'] = data[6] data_dict['participation_level'] = data[7] data_dict['journal_require'] = data[8] data_dict['request_times'] = data[9] data_dict['max_add_recharge'] = data[10] / 100 new_detail = eval(data[11]) for one in new_detail: i = 0 for one_in_one in one: one[i] = one_in_one / 100 i += 1 data_dict['recharge_detail'] = new_detail data_dict['begin_time'] = time_util.formatDateTime(data[12]) data_dict['end_time'] = time_util.formatDateTime(data[13]) data_dict['priority'] = data[14] data_dict['activity_id'] = activity_id # 返回数据 return jsonify(data=data_dict)
def get_player_state(Data): val = erl.binary_to_term(Data) s = [] reason = "" time = "" try: for k, v in val: if k == "reason": reason = v elif k == "time": time = time_util.formatDateTime(int(v)) elif v == 1: s.append(player_state_d[k]) if not s: return "" ss = "/".join(s) if reason: return "%s(%s %s)" % (ss, reason, time) return ss except: return ""
def pre_pay_after_for_zfb(money, channel, pay_channel, data, callback_url): AppID = data["appid"] OrderNo = data["orderno"] PrivateKey = data["private_key"] URL = data["url"] ## 预创建订单成功 payload = { "app_id":AppID, "method":"alipay.trade.precreate", "charset":"utf-8", "sign_type":"RSA2", "timestamp":time_util.formatDateTime(time_util.now_sec()), "version":"1.0", "notify_url":callback_url, "biz_content":json.dumps({ "out_trade_no":OrderNo, "total_amount":"%.2f" % (float(money) / 100), "subject":u"会员充值" }) } ## 重新拼私钥(可能因为提交表单时 把换行符给干掉了) 加上前后一段 private_key = '''-----BEGIN RSA PRIVATE KEY----- %s -----END RSA PRIVATE KEY----- ''' % "\n".join(PrivateKey.split()) payload["sign"] = httpc_util.gen_sign(payload, private_key, lower = None, sign_type = "RSA2") ## 发消息给支付宝产生一条订单 data = httpc_util.get(URL, payload, charset = None) jdata = data.json() res = jdata['alipay_trade_precreate_response'] if res["code"] == "10000": path = qrcode_util.qc(res["qr_code"]) return '<html><body><img src="%s" /></body></html>' % path else: return jsonify(result = "fail", msg = "zfb err")
def sdk_download_tj(): if request.method == 'POST': data = request.form else: data = request.args channel = data.get("channel") os = data.get("os") ip = request.remote_addr if len( request.access_route) == 0 else request.access_route[0] invite = data.get("code") if invite: redis_conn.set("%s_%s_%s" % (INVITE_CODE_TABLE, channel, ip), invite, ex=3600 * 60) redis_conn.hincrby("download_count", "%s_%s" % (channel, os)) print "download...", channel, os, request.remote_addr, time_util.formatDateTime( time_util.now_sec()) return jsonify({})
def pre_pay_after_for_mo_mo_fu(money, channel, pay_channel, data, callback_url): AppID = data["appid"] MchID = data["mch_id"] OrderNo = data["orderno"] MchKey = data["mch_key"] URL = data["url"] ## 支付方式选择 PayType = "" if data["pay_type"] == PAY_TYPE_WX_QRCODE: PayType = "902" if data["pay_type"] == PAY_TYPE_WX_WAP: PayType = "902" if data["pay_type"] == PAY_TYPE_ZFB_QRCODE: PayType = "903" if data["pay_type"] == PAY_TYPE_ZFB_WAP: PayType = "903" ## 预创建订单成功 payload = { "pay_memberid":int(MchID), "pay_orderid":OrderNo, "pay_applydate":time_util.formatDateTime(time_util.now_sec()), "pay_bankcode":PayType, "pay_notifyurl":callback_url, "pay_amount":"%.2f" % (float(money) / 100), } payload["pay_md5sign"] = httpc_util.gen_sign(payload, MchKey, lower = False) payload["pay_callbackurl"] = "" payload["pay_productname"] = u"会员充值" data = httpc_util.post(URL, payload) if data.headers['Content-Type'] == 'image/png': response = make_response(data.content) response.headers['Content-Type'] = 'image/png' return response else: print data.headers['Content-Type'], data.text return data.text
def search_player_money_detail(): """玩家搜索""" access_level = session['access_level'] PID = request.args.get('PlayerID', '') NickName = request.args.get('NickName', '') # 接收渠道id channel = session['select_channel'] print access_level, "access_level" status_msg = dict() status_msg['beginDate'] = False status_msg['endDate'] = False status_msg['access_level'] = access_level status_msg['PlayerID'] = PID status_msg['NickName'] = NickName status_msg['channel'] = channel status_msg['date1'] = time_util.formatDate(time_util.now_sec() - 7 * 86400) status_msg['date2'] = time_util.formatDate(time_util.now_sec()) WHERE = "" if PID: WHERE += " and id = %s" % PID if NickName: WHERE += " and nick = '%s'" % NickName if not WHERE: return render_template('player_monies.html', status_msg=status_msg, base_player={}) sql = ''' select id, nick, reg_time, client_id, reg_ip, coin, counter, device, did, last_login_ip, phone, last_login_time, did, subgame, total_recharge_rmb, total_withdraw, time_long, (select count(1) from t_player_general where pid = a.id), ifnull((select p_code from player_agent where pid = a.id), ""), ifnull((select invite_code from player_agent where pid = a.id), ""), ban, account_id from player a where 1=1 %s ''' % WHERE base_player = {} for line in LogQry(channel).qry(sql): status_msg['PlayerID'] = line[0] base_player["id"] = line[0] base_player["nick"] = line[1] base_player["reg_time"] = time_util.formatDateTime(line[2]) base_player["channel_id"] = line[3] base_player["reg_ip"] = line[4] base_player["account_id"] = line[21] coin = GameWeb(channel).post("/api/get_player_info", {'pid': int(line[0])})['result']['coin'] bank = GameWeb(channel).post("/api/get_player_info", {'pid': int(line[0])})['result']['dep'] base_player["coin"] = game_util.coin_translate(channel, coin) base_player["banker"] = game_util.coin_translate(channel, bank) base_player["platform"] = line[7] base_player["did"] = line[8] base_player["last_login_ip"] = line[9] base_player["phone"] = line[10] base_player["last_login_time"] = time_util.formatDateTime(line[11]) base_player["did"] = line[12] base_player["subgame"] = game_parameter.get_subgame_name(line[13]) base_player["total_recharge_rmb"] = line[14] base_player["total_withdraw"] = line[15] base_player["time_long"] = line[16] base_player["game_count"] = line[17] base_player["p_code"] = line[18] base_player["invite_code"] = line[19] base_player["status"] = get_player_state(line[20]) ## 查询新手卡数 sql = ''' select count(1) from log_activity where activity_type = 4 and detail like '%%%d,%%' ''' % line[0] base_player["newbie_card"] = LogQry(channel).qry(sql)[0][0] return render_template('player_monies.html', status_msg=status_msg, base_player=base_player)
def search_coin_change_data(): player_id = request.args.get('PlayerID', '') Account = request.args.get('Account', '') gameid = request.args.get('game') start = request.args.get('beginDate', '') end = request.args.get('endDate', '') channel = session['select_channel'] size = int(request.args.get('size', '')) offset = int(request.args.get('offset', '')) start_date = time_util.formatTimestamp(start) end_date = time_util.formatTimestamp(end) use_index = "force index(time)" if player_id: use_index = "force index(pid)" play_id_str = " AND pid=%s" % player_id else: play_id_str = '' if Account: use_index = "force index(pid)" play_id_str = " AND pid = (select id from player where account_id = '%s') " % Account if gameid == '0': subgame_str = "" else: subgame_ename = game_parameter.get_subgame_enname(int(gameid)) subgame_str = " AND subgame LIKE '%s%%'" % subgame_ename search_sql = """ SELECT time, pid, (SELECT nick FROM player WHERE id=pid), log_type, subgame, val, rest FROM %s %s WHERE time>=%d AND time<%d%s%s ORDER BY time DESC LIMIT %s,%s; """ % (get_table_log_coin(start_date), use_index, start_date, end_date, play_id_str, subgame_str, offset, size) count_sql = """ SELECT count(1), ifnull(sum(val) , 0) FROM %s %s WHERE time >= %d AND time < %d%s%s """ % (get_table_log_coin(start_date), use_index, start_date, end_date, play_id_str, subgame_str) log_db = LogQry(channel) item_change_data = log_db.qry(search_sql) total_count = log_db.qry(count_sql)[0][0] total_val = int(log_db.qry(count_sql)[0][1]) page_datas = list() log_coin_dict = game_parameter.get_coin_log_define() subgame_dict = game_parameter.get_subgame_name_enname_d() for timeStamp, pid, nick, log_type, subgame, \ val, rest in item_change_data: item_change_dict = dict() item_change_dict['timeStamp'] = time_util.formatDateTime(timeStamp) item_change_dict['pid'] = pid item_change_dict['nick'] = nick item_change_dict['log_type'] = game_parameter.get_coin_log_name(log_coin_dict, log_type) if subgame: subgame_k = subgame.split('-')[0] room = subgame.split('-')[1] subgame_name = game_parameter.get_subgame_name_by_ename(subgame_dict, subgame_k) item_change_dict['subgame'] = "%s(%s)" % (subgame_name, room) else: subgame_k = "" room = "" item_change_dict['subgame'] = "" item_change_dict['val'] = val item_change_dict['rest'] = rest page_datas.append(item_change_dict) ## 做下特殊处理 排序下 page_datas.sort(key=lambda x: [x['timeStamp'], x['val']], reverse=True) return jsonify({"errcode": 0, "dataLength": total_count, "rowDatas": page_datas, "total_val": total_val})
def search_game_user_detail(): PID = request.args.get('PlayerID', '') NickName = request.args.get('NickName', '') Account = request.args.get('Account', '') # 接收渠道id channel = session['select_channel'] if (PID and NickName) or (PID and Account) or (NickName and Account): return jsonify(result=0, msg=u'玩家ID、玩家昵称、玩家账号只能输入其一!') WHERE = "" if PID: WHERE += " and id = %s" % PID if NickName: WHERE += " and nick = '%s'" % NickName if Account: WHERE += " and account_id = '%s'" % Account if not WHERE: return jsonify(result='failed', msg=u'请输入玩家ID或玩家昵称或玩家账号!') sql = ''' select id, nick, reg_time, client_id, reg_ip, coin, account_id, device, did, last_login_ip, phone, last_login_time, did, subgame, total_recharge_rmb, total_withdraw, time_long, (select ifnull(sum(game_count), 0) from t_player_subgame where pid = a.id) from player a where 1=1 %s ''' % WHERE base_player = {} for line in LogQry(channel).qry(sql): base_player["id"] = line[0] base_player["nick"] = line[1] base_player["reg_time"] = time_util.formatDateTime(line[2]) base_player["channel_id"] = line[3] base_player["reg_ip"] = line[4] base_player["account_id"] = line[6] base_player["phone"] = line[10] try: r = GameWeb(channel).post("/api/get_player_info", {'pid': int(line[0])}) coin = r['result']['coin'] bank = r['result']['dep'] base_player["coin"] = game_util.coin_translate(channel, coin) base_player["banker"] = game_util.coin_translate(channel, bank) vip = r["result"]['vip'] counter = r['result']["counter"] counter = "".join([struct.pack("B", int(x)) for x in counter]) bank, acc, name, addr = game_util.get_bank_info(counter) base_player["bank_no"] = "%s/%s/%s" % (bank, acc, addr) base_player["bank_acc"] = name acc, name = game_util.get_zfb_info(counter) base_player["zfb"] = "%s/%s" % (acc, name) status = r['result']["ban"] status = "".join([struct.pack("B", int(x)) for x in status]) base_player["status"] = get_player_state(status) sql = 'select member_level_name from admin_member_level where id = %d' % int( vip) base_player["vip"] = LogQry(channel).qry(sql)[0][0] except BaseException as e: print "qry user detail..", e pass base_player["platform"] = line[7] base_player["did"] = line[8] base_player["last_login_ip"] = line[9] base_player["last_login_time"] = time_util.formatDateTime(line[11]) base_player["did"] = line[12] base_player["subgame"] = game_parameter.get_subgame_name(line[13]) base_player["total_recharge_rmb"] = line[14] base_player["total_withdraw"] = line[15] base_player["time_long"] = line[16] / 60 base_player["game_count"] = int(line[17]) ## 查询新手卡数 sql = ''' select count(1) from log_activity where activity_type = 4 and detail like '[%s,[%%' ''' % line[0] base_player["newbie_card"] = LogQry(channel).qry(sql)[0][0] ## 查询代理相关信息 sql = ''' select (select level_name from admin_agent_level where id = agent_level), status from admin_agent_list a where pid = %d ''' % line[0] try: agent_lv, agent_status = LogQry(channel).qry(sql)[0] base_player["agent_status"] = map_agent_status[int(agent_status)] base_player["agent_lv"] = agent_lv except: base_player["agent_status"] = "" base_player["agent_lv"] = "" ## 查询推广玩家数 sql = ''' select p_code, invite_id, invite_code, (select count(1) from player_agent where invite_id = %d) from player_agent where pid = %d ''' % (line[0], line[0]) try: (p_code, invite_id, invite_code, invite_count) = LogQry(channel).qry(sql)[0] base_player["p_code"] = p_code base_player["invite_id"] = invite_id base_player["invite_code"] = invite_code base_player["invite_count"] = invite_count except BaseException as e: # print "qry agent info...", e base_player["p_code"] = "" base_player["invite_id"] = 0 base_player["invite_code"] = "" base_player["invite_count"] = 0 return jsonify(result="ok", data=base_player)
def search_presentation_detail(): """赠送订单详情查询""" date = request.args.get('date') start = request.args.get('beginDate', '') end = request.args.get('endDate', '') player_id = request.args.get('PlayerID', '') nick = request.args.get('NickName', '') money = request.args.get('present_amount', '') present_type = request.args.get('present_type', '') channel = session['select_channel'] size = request.args.get('size') offset = request.args.get('offset') start_date = time_util.start(start) end_date = time_util.end(end) if date: start_date = time_util.formatDatestamp(date) end_date = time_util.formatDatestamp(date) if start_date > end_date: return jsonify(result=0, msg=u'开始时间不能大于结束时间!') if nick and player_id: return jsonify(result=0, msg=u'玩家昵称与玩家ID只能输入其一!') game_log_db = LogQry(channel) if nick: nick_sql = "SELECT id FROM player WHERE nick='%s'" % nick if len(game_log_db.qry(nick_sql)) != 0: player_id = game_log_db.qry(nick_sql)[0][0] else: player_id = -1 if player_id: play_id_str = " AND (give_id=%s or recv_id=%s)" % (player_id, player_id) else: play_id_str = '' if money: try: money = int(money) money_str = " AND money>=%s" % money except Exception as e: money_str = '' else: money_str = '' present_type_str = '' if present_type == '0': present_type_str = '' elif present_type == '1': present_type_str = ' AND (give_agent=0 AND recv_agent=0)' elif present_type == '2': present_type_str = ' AND (give_agent=0 AND recv_agent=1)' elif present_type == '3': present_type_str = ' AND (give_agent=1 AND recv_agent=1)' elif present_type == '4': present_type_str = ' AND (give_agent=1 AND recv_agent=0)' # 总数据条数、总赠送金币、总缴纳税收 retrieve_sql = """SELECT count(*),sum(money),sum(pump) FROM log_bank_give WHERE time>=%s AND time<%s AND 1=1 %s%s%s;""" \ % (start_date, end_date + 86399, play_id_str, money_str, present_type_str) total_data = LogQry(channel).qry(retrieve_sql)[0] total_dict = dict() total_dict['total_data'] = total_data[0] try: total_dict['total_money'] = float(total_data[1]) except TypeError: total_dict['total_money'] = 0 try: total_dict['total_pump'] = float(total_data[2]) except TypeError: total_dict['total_pump'] = 0 give_sql = ''' SELECT time, give_id, give_agent, (select nick from player where id = give_id), (select last_login_ip from player where id=give_id), recv_id, recv_agent, (select nick from player where id = recv_id), (select last_login_ip from player where id=recv_id), money, pump FROM log_bank_give WHERE time>=%d AND time<%d AND 1=1 %s%s%s ORDER BY time DESC LIMIT %s,%s; ''' % (start_date, end_date + 86399, play_id_str, money_str, present_type_str, offset, size) alltime_datas = LogQry(channel).qry(give_sql) time_search_data = [] recvid_list = [] for time_stamp, give_id, give_agent, give_nick, give_last_login_ip, \ recv_id, recv_agent, recv_nick, recv_last_login_ip, money, \ pump in alltime_datas: recvid_list.append(recv_id) present_dict = dict() present_dict['time'] = time_util.formatDateTime(time_stamp) present_dict['give_id'] = give_id present_dict['give_nick'] = give_nick present_dict['give_last_login_ip'] = give_last_login_ip present_dict['recv_id'] = recv_id present_dict['recv_nick'] = recv_nick present_dict['recv_last_login_ip'] = recv_last_login_ip present_dict['money'] = money present_dict['pump'] = pump if give_agent == 0: if recv_agent == 0: present_dict['present_type'] = u"玩家与玩家" elif recv_agent == 1: present_dict['present_type'] = u"玩家与代理" elif give_agent == 1: if recv_agent == 0: present_dict['present_type'] = u"代理与玩家" elif recv_agent == 1: present_dict['present_type'] = u"代理与代理" time_search_data.append(present_dict) return jsonify(result=1, data=time_search_data, total=total_dict)
def recharge_discounts_retrieve(): """充值优惠设置查询""" # 获取参数 channel_id = session['select_channel'] activity_content = request.args.get('activity_title') user_id = request.args.get('user_id') begin_time = request.args.get('beginDate') end_time = request.args.get('endDate') # 处理时间 begin_time = time_util.start(begin_time) end_time = time_util.end(end_time) # 校验并处理参数 if begin_time >= end_time: return jsonify(result='fail', msg=u'结束时间不能小于开始时间!') where = '' if user_id: where += " AND user_id='%s'" % user_id if activity_content: where += " AND activity_content like '%%%s%%'" % activity_content # 从数据库获取数据 retrieve_sql = """SELECT priority,id,user_id,activity_content,activity_type, participation_member,request_times,max_add_recharge,journal_require,begin_time, end_time,status FROM admin_recharge_discounts WHERE ((begin_time>=%s AND begin_time<=%s) OR (end_time>=%s AND end_time<=%s)) %s ORDER BY status DESC;""" \ % (begin_time, end_time, begin_time, end_time, where) data = LogQry(channel_id).qry(retrieve_sql) # 处理数据 data_list = list() for priority, activity_id, user_id, activity_content, activity_type, \ participation_member, request_times, max_add_recharge, journal_require, begin_time, \ end_time, status in data: data_dict = dict() data_dict['priority'] = priority data_dict['activity_id'] = activity_id data_dict['user_id'] = user_id data_dict['activity_content'] = activity_content.replace('\n', '<br>') data_dict['activity_type'] = activity_type_map[activity_type] data_dict['participation_member'] = participation_member_map[ participation_member] data_dict['request_times'] = request_times data_dict[ 'max_add_recharge'] = max_add_recharge if max_add_recharge else '' data_dict['journal_require'] = journal_require data_dict['begin_time'] = time_util.formatDateTime(begin_time) data_dict['end_time'] = time_util.formatDateTime(end_time) if status == TAKE_EFFECT: # 如果状态为生效,再判断一下当前时间与活动实际时间是否生效,若失效则修改状态 if not begin_time < time_util.now_sec() < end_time: status = LOSE_EFFICACY update_sql = """UPDATE admin_recharge_discounts SET status=%s WHERE id=%s;""" \ % (status, activity_id) LogQry(channel_id).execute(update_sql) data_dict['status'] = status_map[status] data_dict['status_num'] = status # 用于调字体颜色 data_list.append(data_dict) # 返回模版与数据 return jsonify(result='ok', data=data_list)
def users_retrieve(): cuser_id = session['user_id'] crole_str = session['role_str'] admin = request.args.get('admin', '') sql_oper = SqlOperate() where = "" if admin: where += "and name like '%%%s%%'" % admin users_sql = """ SELECT id, name, nick, password, regi_time, access_level, last_login_time, last_logout_time, role_str, is_delete, status, secret_key, game_player_id FROM user WHERE is_delete = 0 %s """ % where users_tup = sql_oper.select(users_sql) crole_list = crole_str.split('/') admin_list = [] for user in users_tup: role_tup_str = '(' + user[8].replace('/', ',') + ')' # 获取当前员工中存在的父权限组或者子权限所在父权限组 parent_roles_sql = """SELECT id, parent_id FROM role WHERE id!=1 AND id IN %s;""" % role_tup_str parent_tup = sql_oper.select(parent_roles_sql) parent_id_list = list() for rid, parent_id in parent_tup: if parent_id == 1: parent_id_list.append(rid) else: parent_id_list.append(parent_id) for crole in crole_list: if (int(crole) in parent_id_list) or crole == '1': admin_dict = dict() admin_dict['id'] = user[0] admin_dict['name'] = user[1] admin_dict['nick'] = user[2] admin_dict['password'] = user[3] admin_dict['regi_time'] = time_util.formatDateTime( float(user[4])) if user[5] == 1: admin_dict['access_level'] = u"高级" else: admin_dict['access_level'] = u"普通" if user[6] == 0: admin_dict['last_login_time'] = u'未登录' else: admin_dict['last_login_time'] = time_util.formatDateTime( float(user[6])) if user[7] == 0: admin_dict['last_logout_time'] = u'未登出' else: admin_dict['last_logout_time'] = time_util.formatDateTime( float(user[7])) admin_dict['role_str'] = user[8] admin_dict['role_text'] = sql_oper.get_role_text(user[8]) admin_dict['status'] = user[10] admin_dict['secret_key'] = user[11] admin_dict['pid'] = user[12] admin_list.append(admin_dict) break return jsonify(result='ok', data=admin_list, cuser_id=cuser_id)
def card_data_retrieve(): """卡号数据查询""" # 获取参数 channel_id = session['select_channel'] code = request.args.get('code') pid = request.args.get('PlayerID') begin_date = request.args.get('beginDate') end_date = request.args.get('endDate') size = request.args.get('size') offset = request.args.get('offset') # 校验并处理参数 where_str = '' if code: code_list = list() for i in code: code_list.append(ord(i)) code_str = str(code_list).replace(' ', '') where_str += " AND detail LIKE '%%,%s,%%'" % code_str elif pid: try: int(pid) except ValueError: return jsonify(result=0, msg=u'玩家ID为整数纯数字!') where_str += " AND detail like '[%s,[%%'" % pid elif begin_date and end_date: begin_date = time_util.formatTimestamp(begin_date) end_date = time_util.formatTimestamp(end_date) where_str += " AND time>=%s AND time<=%s" % (begin_date, end_date) # 从数据库获取数据 retrieve_sql = """SELECT count(*) FROM log_activity WHERE activity_type=4 %s;""" % where_str total_count = LogQry(int(channel_id)).qry(retrieve_sql)[0][0] retrieve_sql = """SELECT detail,time FROM log_activity WHERE activity_type=4 %s ORDER BY time DESC LIMIT %s,%s;""" \ % (where_str, offset, size) datas = LogQry(int(channel_id)).qry(retrieve_sql) # 如果有数据就处理数据并返回 if datas: datas_list = list() for detail, time in datas: data_dict = dict() detail_list = eval(detail) activation_code = '' for i in detail_list[1]: activation_code += chr(int(i)) data_dict['activation_code'] = activation_code data_dict['type'] = detail_list[2] data_dict['award'] = id_map_property(str(detail_list[3])) data_dict['overdue_time'] = overdue_map_id[detail_list[2]] data_dict['player'] = detail_list[0] data_dict['use_time'] = time_util.formatDateTime(time) datas_list.append(data_dict) return jsonify(result=1, data=datas_list, dataLength=total_count) # 如果没有数据并且输入了激活码就调用游戏服接口判断该激活码的状态 elif not datas and code: status = GameWeb(int(channel_id)).post('/api/code_stat', {'code': code}) if status['result'] == 0: return jsonify(result=0, msg=u'该激活码未使用!', data=[], dataLength=total_count) else: return jsonify(result=0, msg=u'该激活码不存在!', data=[], dataLength=total_count) # 其余情况均返回提示无数据 else: return jsonify(result=0, msg=u'无数据!', data=[], dataLength=total_count)