Beispiel #1
0
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)
Beispiel #2
0
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)
Beispiel #3
0
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)
Beispiel #4
0
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)
Beispiel #5
0
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)
Beispiel #6
0
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)
Beispiel #8
0
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 ""
Beispiel #9
0
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")
Beispiel #10
0
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({})
Beispiel #11
0
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
Beispiel #12
0
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)
Beispiel #13
0
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})
Beispiel #14
0
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)
Beispiel #15
0
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)
Beispiel #17
0
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)
Beispiel #18
0
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)