def user_level_stat(request): server_id = request.REQUEST.get('server_id', None) date = request.REQUEST.get('date', None) if not date: date = datetime.now().strftime("%Y-%m-%d") logging.debug(u"用户等级统计.date[%s], server_id[%s]" % (date, server_id)) datas = {} if server_id: user_level_stat = stat_business.get_user_level_stat(server_id, date) if user_level_stat: stat_data = json.loads(user_level_stat.data) level_infos = [] for i in range(1, 121): new_line = False if i % 10 == 0: new_line = True level_infos.append({'level': i, 'total': stat_data.get(u'%s' % i, 0), 'new_line': new_line}) datas['level_infos'] = level_infos datas['date'] = date datas['server_id'] = server_id return render_to_response(request, "stat/user_level_stat.html", datas)
def set_game_web_status(ucenter='android', status=0): white_ip_list = WhiteIp.query(condition="ucenter='%s'" % ucenter) ip_list = [] for white_ip in white_ip_list: ip_list.append(white_ip.ip) info = {} timestamp = int(time.time() * 1000) info["timestamp"] = timestamp info["sign"] = md5mgr.mkmd5fromstr("%s%s" % (timestamp, "gCvKaE0tTcWtHsPkbRdE")) info["status"] = status info["id"] = 5 if ucenter == "android" else 6 info["whiteList"] = ",".join(ip_list) if ucenter == "android": host = "wapi.android.3qchibi.com" elif ucenter == "ios": host = "wapi.ios.3qchibi.com" url = "http://" + host + ":8088//webApi//setServerStatus.do" success, ret_val = http_util.request(url, info) if success: logging.info(ret_val) result = json.loads(ret_val) return result.get("rc") == 1000
def fill_payment_order(ucenter, order_id, partner_order_id): info = {} timestamp = int(time.time() * 1000) info["timestamp"] = timestamp info["sign"] = md5mgr.mkmd5fromstr( "%s%s%s%s" % (timestamp, order_id, partner_order_id, "$#@$%%eweqwlkfef")) info["orderNo"] = order_id info["partnerOrderId"] = partner_order_id if ucenter == "android": host = "wapi.android.3qchibi.com" elif ucenter == "wapi" or ucenter == "bapi": host = "wapi.ldsg.tkp.wartown.com.tw" elif ucenter == "ios": host = "wapi.ios.3qchibi.com" url = "http://" + host + ":8088//webApi/fillOrder.do" logging.debug(url) success, ret_val = http_util.request(url, info) logging.debug(ret_val) if success: logging.info(ret_val) result = json.loads(ret_val) return result.get("rc") == 1000
def update_user_level(server_id, user_id, level): level = int(level) db_config = server_business.get_server_db_connect(server_id=server_id) connect = get_connection(db_config) cursor = connect.cursor() try: info = cursor.fetchone( "select exp from system_user_level where user_level = %s" % (level + 1)) if info: exp = info["exp"] - 10 else: exp = 10000 * 10000 server = server_business.get_server(server_id) host = server.server_host path = "/gameApi/updateUserLevel.do" logging.debug("host:[%s], path[%s]" % (host, path)) data = {"userId": user_id, "level": level, "exp": exp} post = Post(data, host, path, port=8088) content = post.submit(result_keyword=None, get_content=True, debug=True) try: info = json.loads(content) return info.get("rc", 3000) == 1000 except: logging.debug("bad json format:[%s]" % content) finally: cursor.close()
def update_user_level(server_id, user_id, level): level = int(level) db_config = server_business.get_server_db_connect(server_id=server_id) connect = get_connection(db_config) cursor = connect.cursor() try: info = cursor.fetchone("select exp from system_user_level where user_level = %s" % (level + 1)) if info: exp = info["exp"] - 10 else: exp = 10000 * 10000 server = server_business.get_server(server_id) host = server.server_host path = "/gameApi/updateUserLevel.do" logging.debug("host:[%s], path[%s]" % (host, path)) data = {"userId": user_id, "level": level, "exp": exp} post = Post(data, host, path, port=8088) content = post.submit(result_keyword=None, get_content=True, debug=True) try: info = json.loads(content) return info.get("rc", 3000) == 1000 except: logging.debug("bad json format:[%s]" % content) finally: cursor.close()
def user_level_stat(request): server_id = request.REQUEST.get("server_id", None) date = request.REQUEST.get("date", None) if not date: date = datetime.now().strftime("%Y-%m-%d") logging.debug(u"用户等级统计.date[%s], server_id[%s]" % (date, server_id)) datas = {} if server_id: user_level_stat = stat_business.get_user_level_stat(server_id, date) if user_level_stat: stat_data = json.loads(user_level_stat.data) level_infos = [] for i in range(1, 121): new_line = False if i % 10 == 0: new_line = True level_infos.append({"level": i, "total": stat_data.get(u"%s" % i, 0), "new_line": new_line}) datas["level_infos"] = level_infos datas["date"] = date datas["server_id"] = server_id return render_to_response(request, "stat/user_level_stat.html", datas)
def get_command(client_id): client = Client.load(id=client_id) if client and client.command: command = client.command client.command = "" client.last_command = command client.persist() return json.loads(command)
def get_partner_user_id(self, username): url = "http://42.62.4.167:9015/web/api/sdk/third/1/queryuidbyloginname" success, ret_val = http_util.request(url, {"param": username}) if success: try: _ = json.loads(ret_val) return None except: return ret_val
def command_report_detail(detail): if not detail: return "" try: infos = json.loads(detail) info_list = [] for info in infos: info_list.append("[%s][%s][%s]" % (info[0], info[1].split("/")[-1], u"<font color='green'>成功</font>" if info[2] == 1 else u"<font color='green'>失败</font>")) return "<br/>".join(info_list) except: return detail
def sync_server_status(server_zone): server_zone = int(server_zone) host = server_zone_api_url_map[server_zone] url = "http://" + host + ":8088//webApi//updateConfigs.do" success, ret_val = http_util.request(url, {}) if success: result = json.loads(ret_val) success = result.get("rc") == 1000 logging.debug("success sync url[%s], result[%s]" % (url, success)) return success
def block_user(server_id, user_id, due_time): info = {} info["userId"] = user_id info["dueTime"] = due_time server = server_business.get_server(server_id=server_id) url = "http://" + server.server_host + ":8088//gameApiAdmin/banUser.do" success, ret_val = http_util.request(url, info) if success: result = json.loads(ret_val) return result.get("rt") == 1000 return False
def update_user_vip_level(server_id, user_id, vip_level): info = {} info["userId"] = user_id info["vipLevel"] = vip_level server = server_business.get_server(server_id=server_id) url = "http://" + server.server_host + ":8088//gameApiAdmin/assignVipLevel.do" success, ret_val = http_util.request(url, info) if success: result = json.loads(ret_val) return result.get("rt") == 1000 return False
def send_notice_to_server(self, server_id, content): info = {} timestamp = int(time.time() * 1000) info["timestamp"] = timestamp info["sign"] = md5mgr.mkmd5fromstr("%s%s%s" % (content, timestamp, "gCvKaE0tTcWtHsPkbRdE")) info["partnerIds"] = "all" info["content"] = content server = server_business.get_server(server_id=server_id) url = "http://" + server.server_host + ":8088//gameApi/sendSysMsg.do" success, ret_val = http_util.request(url, info) if success: result = json.loads(ret_val) return result.get("rt") == 1000
def get_server_online(redis_connect): try: redis_cfg = server_util.str_to_redisconfig(redis_connect) logging.debug("host[%s], port[%s]" % (redis_cfg['host'], redis_cfg['port'])) client = redis.Redis(host=redis_cfg['host'], port=redis_cfg['port'], socket_timeout=1) s = client.get("ldsg_local_system_status_key") if s: info = json.loads(s) online = info["connCount"] return online except: logging.debug(traceback.format_exc()) pass return 0
def user_level_rank_stat(request): server_id = request.REQUEST.get("server_id", None) date = request.REQUEST.get("date", None) if not date: date = datetime.now().strftime("%Y-%m-%d") logging.debug(u"用户等级排名统计.date[%s], server_id[%s]" % (date, server_id)) datas = {} if server_id: user_level_rank_stat = stat_business.get_user_level_rank_stat(server_id, date) if user_level_rank_stat: infos = json.loads(user_level_rank_stat.data) return render_to_response(request, "stat/user_level_rank_stat.html", locals())
def user_level_rank_stat(request): server_id = request.REQUEST.get('server_id', None) date = request.REQUEST.get('date', None) if not date: date = datetime.now().strftime("%Y-%m-%d") logging.debug(u"用户等级排名统计.date[%s], server_id[%s]" % (date, server_id)) datas = {} if server_id: user_level_rank_stat = stat_business.get_user_level_rank_stat(server_id, date) if user_level_rank_stat: infos = json.loads(user_level_rank_stat.data) return render_to_response(request, "stat/user_level_rank_stat.html", locals())
def get_online(server_id): servers = get_server_list(server_id) data = {} for server in servers: if not server: continue try: redis_cfg = str_to_redisconfig(server.redis_connect) client = redis.Redis(host=redis_cfg['host'], port=redis_cfg['port']) s = client.get("ldsg_local_system_status_key") if s: info = json.loads(s) online = info["connCount"] data[server.server_id] = online except: pass return data
def user_draw_power_rank(request): server_id = request.REQUEST.get('server_id', None) to_excel = int(request.REQUEST.get('to_excel', 0)) now = datetime.now() date = request.REQUEST.get('start_date', now.strftime("%Y-%m-%d")) if server_id: infos = stat_business.get_user_draw_power_rank(server_id,date) for info in infos: jsoninfo = json.loads(info["rank_data"]) if to_excel == 1: datas = [] datas.append(u"排名,玩家名称,战力") for i, info in enumerate(jsoninfo): datas.append(u"%s,%s,%s" % (i + 1, info["username"], info["power"])) response = HttpResponse("\n".join(datas), mimetype='application/vnd.ms-excel') response['Content-Disposition'] = 'attachment; filename=user_draw_rank_%s.csv' % server_id return response return render_to_response(request, "stat/user_draw_power_rank.html", locals())
def user_draw_power_rank(request): server_id = request.REQUEST.get("server_id", None) to_excel = int(request.REQUEST.get("to_excel", 0)) now = datetime.now() date = request.REQUEST.get("start_date", now.strftime("%Y-%m-%d")) if server_id: infos = stat_business.get_user_draw_power_rank(server_id, date) for info in infos: jsoninfo = json.loads(info["rank_data"]) if to_excel == 1: datas = [] datas.append(u"排名,玩家名称,战力") for i, info in enumerate(jsoninfo): datas.append(u"%s,%s,%s" % (i + 1, info["username"], info["power"])) response = HttpResponse("\n".join(datas), mimetype="application/vnd.ms-excel") response["Content-Disposition"] = "attachment; filename=user_draw_rank_%s.csv" % server_id return response return render_to_response(request, "stat/user_draw_power_rank.html", locals())
def data_sync(server_id, sync_type=1, table=None, sqls=[]): """数据同步" @param sync_type: 同步类型1:修改 ;2:新增 ;3:删除;4:全表同步 @param table:同步的表 @param sqls:同步的sql """ server = Server.load(server_id=server_id) host = server.server_host path = "/gameApi/dataSync.do" logging.debug("host:[%s], path[%s]" % (host, path)) data = {"syncType": sync_type, "table": table, "sqls": json.dumps(sqls)} post = Post(data, host, path, port=8088) content = post.submit(result_keyword=None, get_content=True, debug=True) try: info = json.loads(content) return info.get("rc", 3000) == 1000 except: logging.debug("bad json format:[%s]" % content) return False
def main(): """main""" servers = server_business.get_all_server_list() date = get_time() for server in servers: if not server: continue redis_cfg = str_to_redisconfig(server.redis_connect) logging.debug("host[%s], port[%s]" % (redis_cfg['host'], redis_cfg['port'])) client = redis.Redis(host=redis_cfg['host'], port=redis_cfg['port']) s = client.get("ldsg_local_system_status_key") if s: info = json.loads(s) online = info["connCount"] cursor = connection.cursor() try: cursor.execute( "INSERT INTO stat_online(online, stat_time,server_id) VALUES(%d, '%s','%s')" % (online, date, server.server_id)) finally: connection.close()
def fill_payment_order(ucenter, order_id, partner_order_id): info = {} timestamp = int(time.time() * 1000) info["timestamp"] = timestamp info["sign"] = md5mgr.mkmd5fromstr("%s%s%s%s" % (timestamp, order_id, partner_order_id, "$#@$%%eweqwlkfef")) info["orderNo"] = order_id info["partnerOrderId"] = partner_order_id if ucenter == "android": host = "wapi.android.3qchibi.com" elif ucenter == "wapi" or ucenter == "bapi": host = "wapi.ldsg.tkp.wartown.com.tw" elif ucenter == "ios": host = "wapi.ios.3qchibi.com" url = "http://" + host + ":8088//webApi/fillOrder.do" logging.debug(url) success, ret_val = http_util.request(url, info) logging.debug(ret_val) if success: logging.info(ret_val) result = json.loads(ret_val) return result.get("rc") == 1000
def system_mail_approve(system_mail_id, approve_user, approve=False): system_mail = get_system_mail(system_mail_id) if system_mail.status != 0: return else: system_mail.status = 3 system_mail.persist() system_mail.approve_user = approve_user system_mail.approve_time = datetime.now() result_map = {} if approve: server_ids = system_mail.server_ids.split(",") send_server_ids = [] for server_id in server_ids: mail_info = {} mail_info["title"] = system_mail.title mail_info["content"] = system_mail.content mail_info["toolIds"] = system_mail.tool_ids mail_info["lodoIds"] = system_mail.lodo_ids mail_info["target"] = system_mail.target mail_info["sourceId"] = system_mail.system_mail_id if system_mail.date: mail_info["date"] = int(time.mktime(system_mail.date.timetuple())) * 1000 else: mail_info["date"] = int(time.time()) mail_info["partner"] = system_mail.partner_id server = Server.load(server_id=server_id) url = "http://" + server.server_host + ":8088/gameApi/sendMail.do?" params = {} for k, v in mail_info.iteritems(): if isbasestring(v): params[k] = v.encode("utf8") else: params[k] = v url = url + urllib.urlencode(params) logging.info("server:%s,url:%s" % (server_id, url)) result_map[server_id] = 0 approve_info = {} try: ret_val = urllib.urlopen(url).read() approve_info[server_id] = ret_val result = json.loads(ret_val) if result.get("rt") == 1000: send_server_ids.append(server_id) result_map[server_id] = 1 else: logging.warn(u"邮件发送失败.server_id[%s], msg[%s]" % (server_id, result.get("msg"))) except: approve_info[server_id] = traceback.format_exc() logging.error(traceback.format_exc()) system_mail.status = 1 system_mail.send_server_ids = ",".join(send_server_ids) system_mail.approve_info = json.dumps(approve_info) else: system_mail.status = 2 system_mail.persist() return 1, result_map
def system_mail_approve(system_mail_id, approve_user, approve=False): system_mail = get_system_mail(system_mail_id) if system_mail.status != 0: return else: system_mail.status = 3 system_mail.persist() system_mail.approve_user = approve_user system_mail.approve_time = datetime.now() result_map = {} if approve: server_ids = system_mail.server_ids.split(",") send_server_ids = [] for server_id in server_ids: mail_info = {} mail_info["title"] = system_mail.title mail_info["content"] = system_mail.content mail_info["toolIds"] = system_mail.tool_ids mail_info["lodoIds"] = system_mail.lodo_ids mail_info["target"] = system_mail.target mail_info["sourceId"] = system_mail.system_mail_id if system_mail.date: mail_info["date"] = int( time.mktime(system_mail.date.timetuple())) * 1000 else: mail_info["date"] = int(time.time()) mail_info["partner"] = system_mail.partner_id server = Server.load(server_id=server_id) url = "http://" + server.server_host + ":8088/gameApi/sendMail.do?" params = {} for k, v in mail_info.iteritems(): if isbasestring(v): params[k] = v.encode("utf8") else: params[k] = v url = url + urllib.urlencode(params) logging.info("server:%s,url:%s" % (server_id, url)) result_map[server_id] = 0 approve_info = {} try: ret_val = urllib.urlopen(url).read() approve_info[server_id] = ret_val result = json.loads(ret_val) if result.get("rt") == 1000: send_server_ids.append(server_id) result_map[server_id] = 1 else: logging.warn(u"邮件发送失败.server_id[%s], msg[%s]" % (server_id, result.get("msg"))) except: approve_info[server_id] = traceback.format_exc() logging.error(traceback.format_exc()) system_mail.status = 1 system_mail.send_server_ids = ",".join(send_server_ids) system_mail.approve_info = json.dumps(approve_info) else: system_mail.status = 2 system_mail.persist() return 1, result_map