def sgz_betauser_reward(request): '''内测付费用户,公测金币回馈,分3次返还, 就是第一天充值额度100%+100%vip经验 第二次天50%充值额度金票 第三天百分之50%充值额度金票 ''' key = "sgztestkey" user_type = int(request.POST.get("user_type") or 0) link_key = request.POST.get("link_key") or "" server_id = int(request.POST.get("server_id") or 0) sdate = request.POST.get("sdate", "2999-01-19 00:00:00") edate = request.POST.get("edate", "2999-01-19 01:00:00") sign = request.POST.get("sign", "") sign_con = "%s&%s&%s&%s" % (user_type, link_key, server_id, key) if sign != md5(sign_con): return HttpResponse("signError") link_key32 = link_key[:32] if len(link_key) > 32 else link_key if server_id not in [7, 9, 12]: return HttpResponse("ok") #服务器错误 直接返回,不需要循环 if server_id: servdb_conn = getConn(server_id) serv_curs = servdb_conn.cursor() player_id = 0 try: serv_curs.execute( "SELECT player_id, player_name FROM player_%s WHERE user_type=%s AND link_key='%s'" % (server_id, user_type, link_key)) result = serv_curs.fetchone() if result: player_id, player_name = result except Exception, e: print "mysql error: ", e finally:
def player_manage(request): KEY = 'hrNJKCdoV$q6BZi!' TREAT_MAP = { 1: 'shutup', 2: 'unshutup', 3: 'kick', 4: 'disable_login', 5: 'enable_login' } res = {'state': 0, 'data': None, 'msg': u'失败'} try: atime = int(request.REQUEST.get('atime', '')) uid = request.REQUEST.get('uid', '') gid = int(request.REQUEST.get('gid', '')) dsid = int(request.REQUEST.get('dsid', '')) treat_type = int(request.REQUEST.get('treat_type', '')) actor_id = request.REQUEST.get('actor_id', '') actor_name = request.REQUEST.get('actor_name', '') sign = request.REQUEST.get('sign', '') except: print trace_msg() return HttpResponse(json.dumps(res, ensure_ascii=False)) if not atime and not uid or not gid or not dsid or not treat_type or not sign: res['msg'] = u'缺少参数' return HttpResponse(json.dumps(res, ensure_ascii=False)) sign_str = '%s' * 6 % (KEY, uid, gid, dsid, treat_type, atime) if sign != md5(sign_str): print '==> sign: ', sign print '==> sign_str: ', sign_str res['msg'] = u'签名错误' return HttpResponse(json.dumps(res, ensure_ascii=False)) server_list = [] if dsid == 0: server_list = Server.objects.all() else: server_list = Server.objects.filter(id=dsid) treat_name = TREAT_MAP.get(treat_type) if server_list and treat_name: msg = u'失败' remark = '' # GM处理 if treat_name != 'enable_login': for server in server_list: try: server_id = int(server.id) query_sql = 'select player_id, player_name from player_%s where link_key=%s' % ( server_id, uid) cursor = getConn(server_id).cursor() cursor.execute(query_sql) users = cursor.fetchall() if len(users) > 0: actor_id = users[0][0] actor_name = users[0][1] gmp = GMProtocol(server_id) if treat_name == 'shutup': # 默认禁言10年 0.0 seconds = 10 * 365 * 24 * 3600 remark = '禁言(%s)秒' % (seconds) result = gmp.player_shutup(actor_id, seconds) msg = u'成功' elif treat_name == 'unshutup': result = gmp.player_unshutup(actor_id) remark = '解除禁言' msg = u'成功' elif treat_name == 'kick' or treat_name == 'disable_login': result = gmp.player_kick(actor_id) remark = '踢玩家下线' msg = u'成功' gmp.save_log('', gmp.req_type, result, role_id=actor_id, remark=remark) except Exception, e: print '==> server: ', server_id print '==> exception', e # 修改账号状态 if treat_name in ['enable_login', 'disable_login']: try: user_status = 0 if treat_name == 'disable_login': user_status = -1 user = User.objects.get(link_key=uid) user.status = user_status user.save() msg = u'成功' except User.DoesNotExist: msg = u'失败' res['msg'] = msg res['state'] = 1 if res['msg'] == u'成功' else 0
def pay_count(request): access_ip = ['202.55.12.242', '202.55.12.246', '202.55.12.244'] ip = '' if request.META.has_key('HTTP_X_FORWARDED_FOR'): ip = request.META['HTTP_X_FORWARDED_FOR'] else: ip = request.META['REMOTE_ADDR'] player_id = request.GET.get('playerid', request.POST.get('playerid', '0')) open_id = request.GET.get('uid', request.POST.get('uid', '0')) server_id = request.GET.get('serverid', request.POST.get('serverid', '0')) sdate = request.GET.get('startTime', request.POST.get('startTime', '0')) edate = request.GET.get('EndTime', request.POST.get('EndTime', '0')) code = 0 if '0' == server_id or '0' == sdate or '0' == edate or not ip in access_ip or ( open_id == '0' and player_id == '0'): #or ip not in access_ip code = 1 gold = 0 count = 0 if 0 == code: try: player_id = int(player_id) server_id = int(server_id) open_id = filter_sql(str(open_id)) sdate = datetime.datetime.strptime( sdate, '%Y-%m-%d %H:%M:%S').strftime('%Y-%m-%d %H:%M:%S') edate = datetime.datetime.strptime( edate, '%Y-%m-%d %H:%M:%S').strftime('%Y-%m-%d %H:%M:%S') if player_id == 0: query_player_sql = 'SELECT player_id FROM player_%s WHERE link_key = \'%s\' ' % ( server_id, open_id) conn = getConn(server_id) cursor = conn.cursor() cursor.execute(query_player_sql) player_list = cursor.fetchall() if player_list.__len__() > 0: player_id = int(player_list[0][0]) if player_id != 0: query_sql = 'SELECT SUM(pay_gold), COUNT(0) FROM pay_action WHERE pay_user = %s AND pay_status = 4 AND pay_amount != 0 AND last_time BETWEEN \'%s\' AND \'%s\' ' % ( player_id, sdate, edate) from services.settings import DATABASES cfg = DATABASES.get('read') cen_conn = MySQLdb.connect(host=cfg.get('HOST'), user=cfg.get('USER'), passwd=cfg.get('PASSWORD'), port=int(cfg.get('PORT', 3306)), db=cfg.get('NAME'), charset='utf8') cen_cursor = cen_conn.cursor() cen_cursor.execute(query_sql) result_list = cen_cursor.fetchall() if result_list.__len__() > 0: tmp_value = result_list[0][0] count = result_list[0][1] if None != tmp_value: try: gold = int(tmp_value) except Exception, ex: print 'pay_count error' print ex gold = 0 except Exception, ex: print ex pass
def pay_top_list(request): access_ip = ['202.55.12.242', '202.55.12.246', '202.55.12.244'] ip = '' if request.META.has_key('HTTP_X_FORWARDED_FOR'): ip = request.META['HTTP_X_FORWARDED_FOR'] else: ip = request.META['REMOTE_ADDR'] gl = lambda x: request.GET.getlist(x, []) g = lambda x, y: request.GET.get(x, request.POST.get(x, y)) group_id_list = g('groups', '') group_id_list = filter_sql(group_id_list) group_id_list = group_id_list.split(',') sdate = g('sdate', '') edate = g('edate', '') code = 0 if ip not in access_ip: return HttpResponse('') if sdate == '' or edate == '': code = 1 if group_id_list.__len__() == 0: code = 1 if code != 0: return HttpResponse('') try: sdate = filter_sql(sdate) edate = filter_sql(edate) sql = '''SELECT pay_user, server_name, pay_amount, pay_gold, pay_time, server_id, open_id FROM ( SELECT pay_user, servers.name AS server_name, SUM(pay_amount) AS `pay_amount`, SUM(pay_gold) AS `pay_gold`,MAX(last_time) AS `pay_time`, pay_action.server_id AS server_id, open_id FROM pay_action , servers WHERE pay_action.server_id = servers.id AND pay_status=4 AND pay_amount != 0 AND last_time BETWEEN '%s' AND '%s' AND pay_action.server_id IN (SELECT server_id FROM groups_server WHERE group_id IN (%s)) GROUP BY pay_user ) AS result ORDER BY pay_gold DESC, pay_time ASC LIMIT 50''' % ( sdate, edate, ','.join(group_id_list)) center_conn = getConn() center_cursor = center_conn.cursor() center_cursor.execute(sql) data_list = center_cursor.fetchall() server_player_dict = {} #result_data_list = {} for item in data_list: pay_user = item[0] server_id = int(item[5]) player_id_list = server_player_dict.get(server_id, []) player_id_list.append(str(pay_user)) server_player_dict[server_id] = player_id_list #result_data_list['%s_%s' % (server_id, pay_user)] = {"pay_user":pay_user, "server_name":server_name, "pay_amount": pay_amount, "pay_gold":pay_gold, "pay_time":pay_time, "server_id":server_id, "open_id":open_id, "player_name":'None', "link_key":'None' } player_dict = {} sql = 'SELECT link_key, player_name, player_id FROM player_%d WHERE player_id IN (%s)' for server_id in server_player_dict: conn = getConn(server_id) cursor = conn.cursor() player_id_list = server_player_dict.get(server_id) query_sql = sql % (server_id, ','.join(player_id_list)) cursor.execute(query_sql) player_data_list = cursor.fetchall() for player in player_data_list: link_key = player[0] player_name = player[1] player_id = player[2] player_dict[player_id] = [link_key, player_name] result_data_list = [] for item in data_list: pay_user = item[0] player_info = player_dict.get(pay_user, []) player_name = 'None' link_key = 'None' if player_info.__len__() != 0: link_key = player_info[0] player_name = player_info[1] data_item = {} data_item['pay_user'] = pay_user data_item['server_name'] = item[1] data_item['pay_amount'] = item[2] data_item['pay_gold'] = item[3] data_item['pay_time'] = item[4].strftime('%Y-%m-%d %H:%M:%S') data_item['server_id'] = item[5] data_item['open_id'] = item[6] data_item['player_name'] = player_name data_item['link_key'] = link_key result_data_list.append(data_item) except Exception, ex: code = 1 print 'get pay_top_list error:', ex
serv_curs.execute( "SELECT player_id, player_name FROM player_%s WHERE user_type=%s AND link_key='%s'" % (server_id, user_type, link_key)) result = serv_curs.fetchone() if result: player_id, player_name = result except Exception, e: print "mysql error: ", e finally: serv_curs.close() servdb_conn.close() if not player_name: return HttpResponse("player_name_fail") center_conn = getConn(alias='write') center_curs = center_conn.cursor() pay_golds = 0 sent_number = 0 today = datetime.date.today() sent_date = datetime.date.today() + datetime.timedelta( days=-1) #初始昨天,统一比较类型,方便判断 try: ############ 判断次数 ########### sql = "SELECT remark FROM pay_action WHERE open_id='%s' AND pay_status=4 AND pay_amount>0 AND last_time>='%s'" \ " AND last_time<'%s' AND server_id in (2,3,4) " % (link_key32, sdate, edate) center_curs.execute(sql) result = center_curs.fetchone() if result: remark = result[0]
def get_player(request): ###获取个人 #请求参数 dict = request.POST ts = dict.get("ts", "") sign = dict.get("sign", "") server_id =dict.get("serverId","") game_account= dict.get("gameUniId","") result = {"flag": "false", "msg": "", "roleList": []} if not all([ts, sign, server_id, game_account]): result["msg"] = "params imcomplete" return HttpResponse(json.dumps(result)) # 时间校验 time_out = 60 if not ts: result["msg"] = "not time_stamp" return HttpResponse(json.dumps(result)) now = time.time() # if now - float(ts) > time_out: # result["msg"] = "stale date" # return HttpResponse(json.dumps(result)) # sign校验 game_key = "b27d9389deb25d48" if sign != to_md5(server_id+game_account+ts+game_key): result["msg"] = "sign error" return HttpResponse(json.dumps(result)) #获取角色列表 try: conn = getConn(int(server_id)) # sql ="select player_id,player_name from player_{0} where link_key='{1}'".format(server_id,game_account) sql = "select pp.player_id as player_id,pp.player_name as player_name,cc.log_level as log_level from player_{0} as pp left JOIN log_player_level as cc on pp.player_id=cc.log_user WHERE pp.link_key='{1}'".format(server_id, game_account) Log("info","%s-get_player-%s=======>sql"%(game_account,sql)) cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor) cur.execute(sql) users = cur.fetchall() role_list=[] print users if not users: result["msg"] = "content empty" return HttpResponse(json.dumps(result)) for user in users: role_dic={} role_dic["roleUniId"]=user.get("player_id","") role_dic["roleName"]=user.get("player_name","") role_dic["roleLevel"] = user.get("log_level","") ############ role_list.append(role_dic) result["flag"]="true" result["roleList"]=role_list cur.close() except Exception as e: print e Log("error","%s-get_player-%s-error"%(game_account,e)) result["msg"]="connection error" return HttpResponse(json.dumps(result)) return HttpResponse(json.dumps(result))
def goods_permission(request): # 请求参数 dict = request.POST ts = dict.get("ts","") sign = dict.get("sign","") server_id = dict.get("serverId","") game_account = dict.get("gameUniId","") roleUniId = dict.get("roleUniId","") productId = dict.get("productId","") result = {"flag": "false", "msg": ""} if not all([ts, sign, server_id, game_account,roleUniId,productId]): result["msg"] = "params imcomplete" return HttpResponse(json.dumps(result)) # 时间校验 time_out = 60 if not ts: result["msg"] = "not time_stamp" return HttpResponse(json.dumps(result)) now = time.time() if now - float(ts) > time_out: result["msg"] = "stale date" return HttpResponse(json.dumps(result)) # sign校验 game_key = "b27d9389deb25d48" if sign != to_md5(server_id + game_account + roleUniId + productId + ts + game_key): result["msg"] = "sign error" return HttpResponse(json.dumps(result)) #查询角色是否存在 conn = getConn(int(server_id)) sql = "select player_name from player_{0} where player_id='{1}'".format(server_id, roleUniId) cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor) cur.execute(sql) users = cur.fetchone() if not users: result["msg"] = "Without the role" return HttpResponse(json.dumps(result)) # 查询产品 product_dict = DictDefine.get_dict_for_key("tw_online_charge") product_name = product_dict.get(productId, "") print unicode(product_name) if not product_name: result["msg"] = "product is not exit" return HttpResponse(json.dumps(result)) if unicode(product_name) != u"周卡" and unicode(product_name) != u"月卡": result["flag"] = "true" return HttpResponse(json.dumps(result)) # 获取周卡,月卡状态 if unicode(product_name) == u"周卡": product_name = "weekCard" elif unicode(product_name) == u"月卡": product_name = "monthCard" try: conn = getConn(int(server_id),logic_db=True) sql = "select `data` from operationalplayer where playerId=%s AND actType=2 "%(roleUniId) print "===>",sql cur = conn.cursor() cur.execute(sql) data = cur.fetchone() print data if not data: result["flag"] = "true" return HttpResponse(json.dumps(result)) # data:{"weekCard":{"status":1,"time":1506283200},"monthCard":{"status":2,"time":1508443200}} data = json.loads(data[0]) card_dict = data.get(product_name,"") if not card_dict: result["flag"] = "true" return HttpResponse(json.dumps(result)) card_time = card_dict.get("time","") if now-card_time>0: result["flag"] = "true" return HttpResponse(json.dumps(result)) else: result["msg"] = "The card is not expired" return HttpResponse(json.dumps(result)) except Exception as e: print e Log("error", "%s-goods_permission-%s-error" % (roleUniId, e)) result["msg"] = "connection error" return HttpResponse(json.dumps(result))