Example #1
0
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:
Example #2
0
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
Example #3
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
Example #4
0
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
Example #5
0
            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]
Example #6
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))
Example #7
0
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))