Django学习笔记(三十五):接入玩家信息发送接口

本文详细介绍了游戏平台中玩家数据的接口设计,包括玩家信息查询、用户合法性验证、订单列表查询及玩家ID检索等功能。通过GET方式获取参数,利用数据库进行数据查询,并将结果返回给请求方。

接入玩家信息发送接口,渠道方通过访问我们提供的接口,将玩家部分数据传递给我们,我们通过get方式将参数进行获取,

再将获取的参数通过服务器的数据库进行查询然后返回给渠道方。


@Route(r'^log/serverlist$')
@notauth
def query_server(request):
    '''
    查询服务器列表
    '''
    try:
        server = Server.objects.all()
        server_list = []
        for item in server:
            server_list.append({"name":item.name,"id":item.id})
        return HttpResponse(json.dumps({"code":200,"msg":server_list}))
    except BaseException as e:
        return HttpResponse(json.dumps({"code":404,"msg":e}))


@Route(r'^log/user$')
@notauth
def query_user(request):
    '''
    查询用户是否合法
    '''
    userid = int(request.GET.get("userid"))
    serverid = int(request.GET.get("serverid"))
    user_dict = {}
    try:
        conn = getConn(serverid)
        cur = conn.cursor()
        sql = ' select link_key,player_name,player_id,channel_id,lpc.f3 from player_%d as p LEFT JOIN (select f3,log_user FROM log_player_coin where f1 =1 and log_user = %d and log_time = (select max(log_time) FROM log_player_coin where f1 =1 and log_user = %d)) as lpc on lpc.log_user = p.player_id where player_id = %d ;' % (serverid,userid,userid,userid)
        cur.execute(sql)
        query_list = cur.fetchone()
        print query_list
        if query_list:
            user_dict["link_key"] = query_list[0]
            user_dict["player_name"] = query_list[1]
            user_dict["player_id"] = query_list[2]
            user_dict["channel_id"] = query_list[3]
            user_dict["gold"] = query_list[4]
            user_dict["server_id"] = serverid
            return HttpResponse(json.dumps({"code":200,"msg":user_dict}))
        else:
            return HttpResponse(json.dumps({"code":404,"msg":"userid or serverid error"}))
    except BaseException as e:
        return HttpResponse(json.dumps({"code":404,"msg":e}))


@Route(r'^log/orderlist$')
@notauth
def query_orderlist(request):
    '''
    订单
    '''
    userid = int(request.GET.get("userid"))
    time = int(request.GET.get("time"))
    try:
        conn = getConn()
        cur = conn.cursor()
        sql = 'select open_id,player_name,pay_user,server_id,channel_id,pay_gold,post_time,channel_key,pay_amount from pay_action where  post_time > FROM_UNIXTIME(%d) and pay_user = %d;'%(time,userid)
        cur.execute(sql)
        quert_list = cur.fetchall()
        user_list = []
        if quert_list:
            for item in quert_list:
                user_list.append({"open_id":item[0],"player_name":item[1],"pay_user":item[2],"server_id":item[3],"channel_id":item[4],"pay_gold":item[5],"post_time":str(item[6]),"channel_key":item[7],"pay_amount":item[8]})
            return HttpResponse(json.dumps({"code":200,"msg":user_list}))
        else:
            return HttpResponse(json.dumps({"code":200,"msg":"该时间戳节点后无该玩家充值数据"}))
    except BaseException as e:
        return HttpResponse(json.dumps({"code":404,"msg":e}))


@Route(r'^log/playermsg$')
@notauth
def query_playermsg(request):
    '''
    查询玩家id
    '''
    serverid = int(request.GET.get("serverid"))
    playername = request.GET.get("playername")
    playername = playername.decode("utf-8")
    print(serverid,playername,type(playername))
    try:
        conn = getConn(serverid)
        print(1111111)
        cur = conn.cursor()
        print(1122221)
        sql = ''' select player_id from player_%d where player_name = "%s" ''' % (serverid, playername)
        print(sql)
        cur.execute(sql)
        print(33333333333)
        query_list = cur.fetchone()
        print query_list
        if query_list:
            return HttpResponse(json.dumps({"code": 200, "playerid": query_list[0]}))
        else:
            return HttpResponse(json.dumps({"code": 404, "errormsg": "username or serverid error"}))
    except BaseException as e:
        return HttpResponse(json.dumps({"code": 404, "errormsg": e}))



 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值