cat UserGoldConsumitemDaily.py
#!/usr/bin/env python
#-*-coding:utf-8-*-
#用户消费物品日报
#****************************************使用说明****************************************************
# 内网测试通过命令行参数
# -d 指定统计时间
# -p 指定日志所在目录
# -t 指定临时文件存放目录
# 示例如下:
# [meinv@localhost tongji]$ ./userconsumitemDaily.py -d 20141112 -p /home/meinv/log/ -t /home/meinv/tongji/
# 外网无需加参数,使用默认值
#****************************************使用说明****************************************************
import MySQLdb
import os, sys, re,string
import time, tarfile,getopt
optmap = {
'dbuser' : 'haoren',
'dbpass' : '123456789',
'dbhost' : '172.10.1.103',
'dbport' : 3306,
'dbname' : 'MGDB'
}
def get_files(dir, pattern):
res_file_list =[]
if os.path.exists(dir):
cur_file_list = os.listdir(dir)
for file_name in cur_file_list:
if re.search(pattern, file_name):
res_file_list.append(file_name)
return res_file_list
else:
return 'no'
def main():
#外网环境默认参数
cur_day = time.strftime("%Y%m%d", time.localtime(time.time()-86400))
log_day = time.strftime('%y%m%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
logdirname = "/home/haoren/logdir/%s_67"%log_day
tmpdirname = "/tmp/"
logname = "billserver"
#内网测试指定参数
opts, args = getopt.getopt(sys.argv[1:], 'd:p:t:')
for op, value in opts:
if op == '-d':
m = re.search('[0-9]{8}', value)
if m:
cur_day = value
log_suffix = time.strftime('%y%m%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
logname = "billserver.log"
log_day = time.strftime('%y%m%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
logdirname = "/home/haoren/logdir/%s_67"%log_day
else:
print "请输入8位日期(比如:20130215)"
return 'no'
elif op == '-p':
logdirname = str(value)
elif op == '-t':
tmpdirname = str(value)
fmt_day = time.strftime('%Y-%m-%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
d_time = time.mktime(time.strptime(fmt_day,'%Y-%m-%d'))
print '统计日期:',fmt_day
print '日志名称:',logname
print '日志路径:',logdirname
print '临时文本:',tmpdirname
#用户物品消费
if os.path.exists("%suserconsumeitem.txt"%tmpdirname):
os.system("rm -f %suserconsumeitem.txt"%tmpdirname)
file_list2=get_files(logdirname,logname)
for file2 in file_list2:
command = "cat %s/%s | awk '/物品统计/'>> %suserconsumeitem.txt"%(logdirname,file2,tmpdirname)
os.system(command)
#用户物品消费
filename='%suserconsumeitem.txt'%tmpdirname
a_file = open(filename, 'r')
#用户购买物品消耗总人民币
allcoin={}
#用户消费物品
userprops = {}
#130815-15:01:06 Bill[990] INFO: [物品统计]渠道(210043)等级(9)用户(21000162)赠送(1)个物品(3)给用户(21000264),用户等级(1),认证(0), 消耗人民币(10), 用户获得人民币(470), 渠道获得人民币(30)
for a_line in a_file.readlines():
m = re.search("^(\S+) Bill\[\d+\] INFO: \[人民币消费物品统计\]渠道\((\d+)\)等级\((\d+)\)用户\((\d+)\)赠送\((\d+)\)个物品\((\d+)\)给用户\((\d+)\),用户等级\((\d+)\),认证\((\d+)\), 消耗人民币\((\d+)\), 用户获得人民币\((\d+)\), 渠道获得人民币\((\d+)\)", a_line)
if m:
userid = int(m.group(4))
propnum = int(m.group(5))
propid = int(m.group(6))
coin = int(m.group(10))
if (userid in userprops):
if (propid in userprops[userid]):
userprops[userid][propid]['num'] += propnum
userprops[userid][propid]['coin'] += coin
else:
userprops[userid][propid] = {}
userprops[userid][propid]['num'] = propnum
userprops[userid][propid]['coin'] = coin
else:
userprops[userid]={}
userprops[userid][propid] = {}
userprops[userid][propid]['num'] = propnum
userprops[userid][propid]['coin'] = coin
for key in userprops:
print '用户:',key
for prop in userprops[key]:
print '物品id:', prop
print '物品num:', userprops[key][prop]['num']
print '物品消费人民币:', userprops[key][prop]['coin']
a_file.close()
db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost'], port=optmap['dbport'], db=optmap['dbname'])
db_cursor=db_conn.cursor()
db_conn.query("use %s"%optmap['dbname'])
tabletime = time.strftime("%Y%m%d", time.localtime(time.mktime(time.strptime(cur_day, "%Y%m%d"))))
sql="CREATE TABLE IF NOT EXISTS `USERGOLDCONSUMEITEMDAILY_%s` like USERGOLDCONSUMEITEMDAILY_SAMPLE"%tabletime
db_conn.query(sql)
db_conn.query("delete from USERGOLDCONSUMEITEMDAILY_%s"%tabletime)
for key in userprops:
for kitem in userprops[key]:
db_conn.query("insert into USERGOLDCONSUMEITEMDAILY_%s(USERID,CONSUMEITEMTOTALGOLD,ITEMID,ITEMNUM) values(%d,%d,%d,%d)"%(tabletime,int(key),int(userprops[key][kitem]['coin']),int(kitem),int(userprops[key][kitem]['num'])))
db_conn.commit()
db_cursor.close()
db_conn.close()
main()
#if __name__ == "__main__":
# main()
cat DaoJuTongJi20161226.py
#!/usr/bin/env python
#-*-coding:utf-8-*-
#特殊物品明细
import MySQLdb
import os, sys, re,string
import time, tarfile,getopt
optmap = {
'dbuser' : 'haoren',
'dbpass' : '123456789',
'dbhost' : '172.10.1.12',
'dbport' : 3306,
'dbname' : 'JIESUANDB'
}
def get_files(dir, pattern):
res_file_list =[]
if os.path.exists(dir):
cur_file_list = os.listdir(dir)
for file_name in cur_file_list:
if re.search(pattern, file_name):
res_file_list.append(file_name)
return res_file_list
else:
return 'no'
def main():
cur_day = time.strftime("%Y%m%d", time.localtime(time.time()-86400))
opts, args = getopt.getopt(sys.argv[1:], 'd:')
for op, value in opts:
if op == '-d':
m = re.search('[0-9]{8}', value)
if m:
cur_day = value
else:
print "请输入8位日期(比如:20130215)"
return 'no'
log_day = time.strftime('%y%m%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
fmt_day = time.strftime('%Y-%m-%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
print '结算统计日期:',fmt_day
#log_day = time.strftime("%y%m%d", time.localtime(time.time()-86400))
dirname="/home/haoren/logdir/%s_67"%log_day
print dirname
db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost'], port=optmap['dbport'], db=optmap['dbname'])
db_cursor=db_conn.cursor()
db_conn.query("use %s"%optmap['dbname'])
tabletime = time.strftime("%y%m%d", time.localtime(time.mktime(time.strptime(cur_day, "%Y%m%d"))))
sql="CREATE TABLE IF NOT EXISTS `DAOJUTONGJI_%s` like DAOJUTONGJISAMPLE"%tabletime
db_conn.query(sql)
db_conn.query("delete from DAOJUTONGJI_%s"%tabletime)
if os.path.exists("/tmp/DaoJuTongJi20161226.txt"):
os.system("rm -f /tmp/DaoJuTongJi20161226.txt")
file_list2=get_files(dirname,'billserver')
for file2 in file_list2:
command = "cat %s/%s | grep -h -w 消耗人民币 |grep -v 人民币消费物品统计 |grep 渠道类型 >> /tmp/DaoJuTongJi20161226.txt"%(dirname,file2)
os.system(command)
#结算统计记录放在txt文档里面
filename='/tmp/DaoJuTongJi20161226.txt'
record = {}
a_file = open(filename, 'r')
#161226-16:23:06 Bill[40268] INFO: [物品统计]渠道(3839247)等级(2)用户(60303642)赠送(10)个物品(95)给用户(82147138),用户等级(38)认证(1)消耗人民币(100)用户获得人民币(8000)渠道获得人民币(2000)当前礼物最大值(52000)当前渠道(4023568)渠道类型(150)
#170410-23:01:30 Bill[40268] INFO: [BillTask.cpp:1771] [物品统计]渠道(3977962)等级(3)用户(90537796)赠送(1)个物品(14)给用户(60062097),用户等级(53)认证(1)消耗人民币(100)用户获得人民币(8000)渠道获得人民币(2000)当前渠道(4001362)渠道类型(150)
for a_line in a_file.readlines():
#m = re.search("^(\S+) Bill\[\d+\] INFO: \[物品统计蚛]时间\((\d+)\)类别\((\d+)\)名称\((\S+)\)渠道\((\d+)\)等级\((\d+)\)用户\((\d+)\)赠送\((\d+)\)个物品\((\d+)\)给用户\((\d+)\),用户等级\((\d+)\),认证\((\d+)\), 消耗人民币\((\d+)\), 用户获得人民币\((\d+)\), 渠道获得人民币\((\d+)\),用户当前人民币\((\d+)\)渠道当前人民币\((\d+)\)", a_line)
#m = re.search("^(\S+) Bill\[\d+\] INFO: \[BillTask.cpp:1771\] \[物品统计\]渠道\((\d+)\)等级\((\d+)\)用户\((\S+)\)赠送\((\d+)\)个物品\((\d+)\)给用户\((\d+)\),用户等级\((\d+)\)认证\((\d+)\)消耗人民币\((\d+)\)用户获得人民币\((\d+)\)渠道获得人民币\((\d+)\)当前礼物最大值\((\d+)\)当前渠道\((\d+)\)渠道类型\((\d+)\)", a_line)
m = re.search("^(\S+) Bill\[\d+\] INFO: \[BillTask.cpp:1771\] \[物品统计\]渠道\((\d+)\)等级\((\d+)\)用户\((\S+)\)赠送\((\d+)\)个物品\((\d+)\)给用户\((\d+)\),用户等级\((\d+)\)认证\((\d+)\)消耗人民币\((\d+)\)用户获得人民币\((\d+)\)渠道获得人民币\((\d+)\)当前渠道\((\d+)\)渠道类型\((\d+)\)", a_line)
if m:
#print "第一项:"+m.group(1)
#print "第二项:"+m.group(2)
#print "第三项:"+m.group(3)
#print "第四项:"+m.group(4)
#print "第五项:"+m.group(5)
#print "第六项:"+m.group(6)
#print "第七项:"+m.group(7)
#print "第八项:"+m.group(8)
#print "第九项:"+m.group(9)
#print "第十项:"+m.group(10)
#print "第十一项:"+m.group(11)
#print "第十二项:"+m.group(12)
#print "第十三项:"+m.group(13)
#print "第十四项:"+m.group(14)
#print "第十五项:"+m.group(15)
#if int(m.group(14)) >0 or int(m.group(15)) >0 :
db_conn.query("insert into DAOJUTONGJI_%s(CHANNELID,CHANELLEVEL,PRESENTERID,PRESENTERNUM,ITEMID,SINGERID,SINGERLEVEL,SIGNTYPE,CONSUMECOIN,SINGERRECVGOLD,CHANNELRECVGOLD,CURRENTCHANNEL,CHANNELTYPE) values(%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d)"%(tabletime,int(m.group(2)),int(m.group(3)),int(m.group(4)),int(m.group(5)),int(m.group(6)),int(m.group(7)),int(m.group(8)),int(m.group(9)),int(m.group(10)),int(m.group(11)),int(m.group(12)),int(m.group(13)),int(m.group(14))))
a_file.close()
db_conn.commit()
db_cursor.close()
db_conn.close()
main()
#if __name__ == "__main__":
# main()
cat vipactiveusernumtemp.py
#!/usr/bin/env python
#-*-coding:utf-8-*-
#会员登录趋势
import MySQLdb
import os, sys, re, string
import time, tarfile, getopt
optmap = {
'dbuser' : 'haoren',
'dbpass' : '123456789',
'dbhost' : '172.29.1.106',
'dbport' : 3306,
'dbname' : 'GMServerDB',
'logdir' : '/home/haoren/logdir/',
'logpattern' : 'sessionserver.log.'
}
def get_files(dir, pattern):
print dir, pattern
match_file_list = []
if os.path.exists(dir):
cur_file_list = os.listdir(dir)
for file_name in cur_file_list:
if re.search(pattern, file_name):
match_file_list.append(file_name)
return match_file_list
else:
return 'no'
def main():
one_day = time.strftime("%Y%m%d", time.localtime(time.time() - 24*60*60)) #默认日期为脚本运行的上一天
opts, args = getopt.getopt(sys.argv[1:], 'd:')
for op, value in opts:
if op == '-d':
m = re.search('[0-9]{8}', value)
if m:
one_day = value
else:
print "请输入8位日期(比如:20130215)"
return 'no'
print "正在获取VIP用户活跃信息(%s)..." %one_day
temp_simple_active_file_name = '/tmp/vipactiveusernum_%s.txt' %one_day
db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost'], port=optmap['dbport'], db=optmap['dbname'])
db_cursor = db_conn.cursor()
command = "cat /dev/null > %s" %(temp_simple_active_file_name)
os.system(command)
dir_list = get_files(optmap['logdir'], one_day[2:])
for dir_item in dir_list:
dir_path = optmap['logdir']+dir_item+'/'+one_day[2:]+'/'
file_list = get_files(dir_path, optmap['logpattern']+one_day[2:])
for file_item in file_list:
print file_item
command = "cat %s%s |awk '/用户登录/' |awk '/vip状态/' >> %s" %(dir_path, file_item, temp_simple_active_file_name)
os.system(command)
db_conn.query("use %s" %optmap['dbname'])
sql = "drop table if exists VIPACTIVEUSERNUM_%s" %one_day
print sql
db_conn.query(sql)
sql = "create table VIPACTIVEUSERNUM_%s like VIPACTIVEUSERNUM_TEMP_SAMPLE" %one_day
print sql
db_conn.query(sql)
temp_vip_user_login_count = 0
temp_simple_active_file = open(temp_simple_active_file_name)
for one_line in temp_simple_active_file.readlines():
record = {}
match = re.search("^(\S+) SS\[\d+\] TRACE: 用户登录:imid:(\d+),mac地址:(\d+),ip地址:(\d+),vip状态:(\d+),登录时间:(\d+)(\S+)", one_line)
if match:
record['imid'] = string.atoi(match.group(2))
record['mac'] = string.atoi(match.group(3))
record['ip'] = string.atoi(match.group(4))
record['vip_state'] = string.atoi(match.group(5))
record['login_time'] = string.atoi(match.group(6))
sql = "insert into VIPACTIVEUSERNUM_%s(ACCOUNT, MAC, IP, VIP_STATE, LOGIN_TIME) values('%d', '%d', '%d', '%d', '%d')" %(one_day, record['imid'], record['mac'], record['ip'], record['vip_state'], record['login_time'])
db_conn.query(sql)
temp_vip_user_login_count += 1
print temp_vip_user_login_count
temp_simple_active_file.close()
#提交事务
db_conn.commit()
db_cursor.close()
db_conn.close()
main()
#if __name__ == "__main__":
# main()
cat vipuserflowermonthlyold.py
#!/usr/bin/env python
#-*-coding:utf-8-*-
#会员物品库存统计
import MySQLdb
import os, sys, re, string
import time, getopt
optmap = {
'dbuser' : 'haoren',
'dbpass' : '123456789',
'dbhost' : '172.29.1.92',
'dbhost_gm': '172.29.1.106',
'dbport' : 3306,
'dbname' : 'MIDB',
'dbname_gm' : 'GMServerDB'
}
def main():
today = time.strftime("%Y%m%d", time.localtime(time.time()))
print "正在统计会员物品库存(%s)..." %today
db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost'], port=optmap['dbport'], db=optmap['dbname'])
db_conn.query("use %s" %optmap['dbname'])
db_cursor = db_conn.cursor()
vip_user_list = {}
for i in range(10):
sql = "select USERID, VIPSTATE from VIPUSER%s" %i
print sql
db_cursor.execute(sql)
db_rows = db_cursor.fetchall()
for USERID, VIPSTATE in db_rows:
vip_user_list[USERID] = VIPSTATE
vip_user_flower_list = {}
for i in range(10):
sql = "select USERID, FLOWER from VIPUSERFLOWER%s" %i
print sql
db_cursor.execute(sql)
db_rows = db_cursor.fetchall()
for USERID, FLOWER in db_rows:
vip_user_flower_list[USERID] = FLOWER
db_cursor.close()
db_conn.close()
vip_state_flower_list = {}
vip_state_flower_list[1] = 0;
vip_state_flower_list[2] = 0;
vip_state_flower_list[3] = 0;
for key in vip_user_list:
if key in vip_user_flower_list:
if vip_user_list[key] in vip_state_flower_list:
vip_state_flower_list[vip_user_list[key]] += vip_user_flower_list[key]
for key in vip_state_flower_list:
print key, vip_state_flower_list[key]
db_conn_gm = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost_gm'], port=optmap['dbport'], db=optmap['dbname_gm'])
db_conn_gm.query("use %s" %optmap['dbname_gm'])
dword_time = time.mktime(time.strptime(today, '%Y%m%d'))
sql = "delete from VIPUSERFLOWERMONTHLY where count_time='%d'" %dword_time
print sql
db_conn_gm.query(sql)
sql = "insert into VIPUSERFLOWERMONTHLY (count_time) values('%d')" %(dword_time)
print sql
db_conn_gm.query(sql)
sql = "update VIPUSERFLOWERMONTHLY set year_flower_left_num=%d, month_flower_left_num=%d, week_flower_left_num=%d where count_time='%d'" %(vip_state_flower_list[3], vip_state_flower_list[2], vip_state_flower_list[1], dword_time)
print sql
db_conn_gm.query(sql)
db_conn_gm.commit()
db_conn_gm.close()
main()
#if __name__ == "__main__":
# main()
cat vipactiveusernumold.py
#!/usr/bin/env python
#-*-coding:utf-8-*-
import MySQLdb
import os, sys, re
import time, getopt
optmap = {
'dbuser' : 'haoren',
'dbpass' : '123456789',
'dbhost' : '172.29.1.106',
'dbport' : 3306,
'dbname' : 'GMServerDB'
}
def main():
one_day = time.strftime("%Y%m%d", time.localtime(time.time() - 24*60*60)) #默认日期为脚本运行的上一天
opts, args = getopt.getopt(sys.argv[1:], 'd:')
for op, value in opts:
if op == '-d':
m = re.search('[0-9]{8}', value)
if m:
one_day = value
else:
print "请输入8位日期(比如:20130215)"
return 'no'
print "正在统计活跃VIP用户数据(%s)..." %one_day
dword_time = time.mktime(time.strptime(one_day, '%Y%m%d'))
db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost'], port=optmap['dbport'], db=optmap['dbname'])
db_cursor = db_conn.cursor()
db_conn.query("use %s" %optmap['dbname'])
sql = "delete from VIPACTIVEUSERNUM where active_time='%s'" %dword_time
db_conn.query(sql)
sql = "insert into VIPACTIVEUSERNUM (active_time) values('%s')" %dword_time
db_conn.query(sql)
#年会员(活跃帐号 活跃机器 活跃IP)
sql = "select count(distinct account) as account_num, count(distinct mac) as mac_num, count(distinct ip) as ip_num from VIPACTIVEUSERNUM_%s where vip_state=3" %one_day
print sql
db_cursor.execute(sql)
temp = db_cursor.fetchone()
print temp
temp_account_num = int(temp[0])
temp_mac_num = int(temp[1])
temp_ip_num = int(temp[2])
sql = "update VIPACTIVEUSERNUM set year_account_num=%d, year_mac_num=%d, year_ip_num=%d where active_time='%s'" %(temp_account_num, temp_mac_num, temp_ip_num, dword_time)
db_conn.query(sql)
#月会员(活跃帐号 活跃机器 活跃IP)
sql = "select count(distinct account) as account_num, count(distinct mac) as mac_num, count(distinct ip) as ip_num from VIPACTIVEUSERNUM_%s where vip_state=2" %one_day
print sql
db_cursor.execute(sql)
temp = db_cursor.fetchone()
print temp
temp_account_num = int(temp[0])
temp_mac_num = int(temp[1])
temp_ip_num = int(temp[2])
sql = "update VIPACTIVEUSERNUM set month_account_num=%d, month_mac_num=%d, month_ip_num=%d where active_time='%s'" %(temp_account_num, temp_mac_num, temp_ip_num, dword_time)
db_conn.query(sql)
#周会员(活跃帐号 活跃机器 活跃IP)
sql = "select count(distinct account) as account_num, count(distinct mac) as mac_num, count(distinct ip) as ip_num from VIPACTIVEUSERNUM_%s where vip_state=1" %one_day
print sql
db_cursor.execute(sql)
temp = db_cursor.fetchone()
print temp
temp_account_num = int(temp[0])
temp_mac_num = int(temp[1])
temp_ip_num = int(temp[2])
sql = "update VIPACTIVEUSERNUM set week_account_num=%d, week_mac_num=%d, week_ip_num=%d where active_time='%s'" %(temp_account_num, temp_mac_num, temp_ip_num, dword_time)
db_conn.query(sql)
#总共未过期会员(活跃机器 活跃IP)
sql = "select count(distinct account) as total_account_num, count(distinct mac) as total_mac_num, count(distinct ip) as total_ip_num from VIPACTIVEUSERNUM_%s" %one_day
print sql
db_cursor.execute(sql)
temp = db_cursor.fetchone()
print temp
temp_mac_num = int(temp[1])
temp_ip_num = int(temp[2])
sql = "update VIPACTIVEUSERNUM set total_mac_num=%d, total_ip_num=%d where active_time='%s'" %(temp_mac_num, temp_ip_num, dword_time)
db_conn.query(sql)
#过期会员(活跃帐号 活跃机器 活跃IP)
sql = "select count(distinct account) as account_num, count(distinct mac) as mac_num, count(distinct ip) as ip_num from VIPACTIVEUSERNUM_%s where vip_state in(11,12,13)" %one_day
print sql
db_cursor.execute(sql)
temp = db_cursor.fetchone()
print temp
temp_account_num = int(temp[0])
temp_mac_num = int(temp[1])
temp_ip_num = int(temp[2])
sql = "update VIPACTIVEUSERNUM set before_account_num=%d, before_mac_num=%d, before_ip_num=%d where active_time='%s'" %(temp_account_num, temp_mac_num, temp_ip_num, dword_time)
db_conn.query(sql)
#提交事务
db_conn.commit()
main()
#if __name__ == "__main":
# main()
cat DelVipUserData.py
#!/usr/bin/env python
#-*-coding:utf-8-*-
#会员数据统计
import MySQLdb
import os, sys, re, string
import time, getopt
optmap = {
'dbuser' : 'haoren',
'dbpass' : '123456789',
'dbhost' : '172.29.1.106',
'dbport' : 3306,
'dbname' : 'GMServerDB',
#'logdir' : '/home/haoren/log/', #内网环境日志目录
'logdir' : '/home/haoren/logdir/', #外网环境日志目录
#'logpattern' : '^chat_vipuserserver.log.', #内网环境日志名称前缀
'logpattern' : '^vipuserserver.log.' #外网环境日志名称前缀
}
def main():
one_day = time.strftime("%Y%m%d", time.localtime(time.time() - 24*60*60)) #默认日期为脚本运行的上一天
opts, args = getopt.getopt(sys.argv[1:], 'd:')
for op, value in opts:
if op == '-d':
m = re.search('[0-9]{8}', value)
if m:
one_day = value
else:
print "请输入8位日期(比如:20130215)"
return 'no'
print "正在读取VIP用户数据(%s)..." %one_day
db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost'], port=optmap['dbport'], db=optmap['dbname'])
db_cursor = db_conn.cursor()
dword_time = time.mktime(time.strptime(one_day, '%Y%m%d'))
db_conn.query("use %s" %optmap['dbname'])
sql = "delete from VIPUSERDATAMONTHLY where count_time='%d'" %dword_time
print sql
db_conn.query(sql)
db_conn.commit()
db_cursor.close()
db_conn.close()
main()
#if __name__ == "__main__"
# main()
cat zhaomuinviteinfo.py
#!/usr/bin/env python
#-*-coding:utf-8-*-
#招募邀请信息统计
import MySQLdb
import os, sys, re,string
import time, tarfile,getopt
optmap = {
'dbuser' : 'haoren',
'dbpass' : '123456789',
'dbhost' : '172.10.1.103',
'dbport' : 3306,
'dbname' : 'MGDB'
}
def get_files(dir, pattern):
res_file_list =[]
if os.path.exists(dir):
cur_file_list = os.listdir(dir)
for file_name in cur_file_list:
if re.search(pattern, file_name):
res_file_list.append(file_name)
return res_file_list
else:
return 'no'
#dirname="/home/haoren/log/"
def main():
db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost'], port=optmap['dbport'], db=optmap['dbname'])
db_cursor=db_conn.cursor()
db_conn.query("use %s"%optmap['dbname'])
cur_day = time.strftime("%Y%m%d", time.localtime(time.time()-86400))
fmt_day = time.strftime('%Y-%m-%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
print '统计日期:',fmt_day
log_day = time.strftime("%y%m%d", time.localtime(time.time()-86400))
#dirname="/home/haoren/log/%s/"%log_day
dirname="/home/haoren/logdir/%s_83"%log_day
print dirname
db_conn.query("DELETE from ZHAOMUINVITEINFO where tongji_time='%s'"%fmt_day)
if os.path.exists("/tmp/zhaomuhasinvitenum.txt"):
os.system("rm -f /tmp/zhaomuhasinvitenum.txt")
if os.path.exists("/tmp/zhaomucancelnum.txt"):
os.system("rm -f /tmp/zhaomucancelnum.txt")
if os.path.exists("/tmp/zhaomusuccessnum.txt"):
os.system("rm -f /tmp/zhaomusuccessnum.txt")
if os.path.exists("/tmp/zhaomucaninvitenum.txt"):
os.system("rm -f /tmp/zhaomucaninvitenum.txt")
file_list2=get_files(dirname,'vipuserserver')
for file2 in file_list2:
command = "cat %s/%s | awk '/招募邀请统计/'>> /tmp/zhaomuhasinvitenum.txt"%(dirname,file2)
os.system(command)
command = "cat %s/%s | awk '/招募取消统计/'>> /tmp/zhaomucancelnum.txt"%(dirname,file2)
os.system(command)
command = "cat %s/%s | awk '/招募成功统计/'>> /tmp/zhaomusuccessnum.txt"%(dirname,file2)
os.system(command)
command = "cat %s/%s | awk '/邀请名额统计/'>> /tmp/zhaomucaninvitenum.txt"%(dirname,file2)
os.system(command)
record = {}
hasinvite = -1
for hasinvite,line in enumerate(open('/tmp/zhaomuhasinvitenum.txt')):
pass
hasinvite+=1
record['has_invite_num'] = hasinvite
print '发出邀请次数:',record['has_invite_num']
cancelinvite = -1
for cancelinvite,line in enumerate(open('/tmp/zhaomucancelnum.txt')):
pass
cancelinvite+=1
record['cancel_invite_num'] = cancelinvite
print '取消邀请次数:',record['cancel_invite_num']
successinvite = -1
for successinvite,line in enumerate(open('/tmp/zhaomusuccessnum.txt')):
pass
successinvite+=1
record['success_invite_num'] = successinvite
print '成功邀请次数:',record['success_invite_num']
filename='/tmp/zhaomucaninvitenum.txt'
a_file = open(filename, 'r')
record['all_can_invite_num'] = 0
#130329-23:57:43 VipUserServer[12900] TRACE: [招募统计]当前邀请名额总数:140
for a_line in a_file.readlines():
m = re.search("^(\S+) VipUserServer\[\d+\] TRACE: \[邀请名额统计\]当前邀请名额总数:(\d+)", a_line)
if m:
record['all_can_invite_num'] = int(m.group(2))
a_file.close()
print '邀请名额总数:',record['all_can_invite_num']
db_conn.query("insert into ZHAOMUINVITEINFO (tongji_time,has_invite_num,cancel_invite_num,all_can_invite_num,success_invite_num) values('%s',%d,%d,%d,%d)"%(fmt_day,record['has_invite_num'],record['cancel_invite_num'],record['all_can_invite_num'],record['success_invite_num']))
db_conn.commit()
db_cursor.close()
db_conn.close()
main()
#if __name__ == "__main__":
# main()
cat zhaomuvipinfo.py
#!/usr/bin/env python
#-*-coding:utf-8-*-
#招募会员统计
import MySQLdb
import os, sys, re,string
import time, tarfile,getopt
optmap = {
'dbuser' : 'haoren',
'dbpass' : '123456789',
'dbhost' : '172.10.1.103',
'dbport' : 3306,
'dbname' : 'MGDB'
}
def get_files(dir, pattern):
res_file_list =[]
if os.path.exists(dir):
cur_file_list = os.listdir(dir)
for file_name in cur_file_list:
if re.search(pattern, file_name):
res_file_list.append(file_name)
return res_file_list
else:
return 'no'
#dirname="/home/haoren/log/"
def main():
db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost'], port=optmap['dbport'], db=optmap['dbname'])
db_cursor=db_conn.cursor()
db_conn.query("use %s"%optmap['dbname'])
cur_day = time.strftime("%Y%m%d", time.localtime(time.time()-86400))
fmt_day = time.strftime('%Y-%m-%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
print '统计日期:',fmt_day
log_day = time.strftime("%y%m%d", time.localtime(time.time()-86400))
#dirname="/home/haoren/log/%s/"%log_day
dirname="/home/haoren/logdir/%s_83"%log_day
print dirname
db_conn.query("DELETE from ZHAOMUVIPINFO where tongji_time='%s'"%fmt_day)
if os.path.exists("/tmp/zhaomuvipinfo.txt"):
os.system("rm -f /tmp/zhaomuvipinfo.txt")
file_list2=get_files(dirname,'vipuserserver')
for file2 in file_list2:
command = "cat %s/%s | awk '/招募统计/'>> /tmp/zhaomuvipinfo.txt"%(dirname,file2)
os.system(command)
filename='/tmp/zhaomuvipinfo.txt'
record = {}
a_file = open(filename, 'r')
record['all_vip_dredge'] = 0
record['all_vip_renewals'] = 0
record['all_dredge_month'] = 0
record['all_dredge_year'] = 0
#130330-13:44:56 VipUserServer[12900] TRACE: [招募统计]用户:21002928充值会员,充值模式:2,开通类型:0
for a_line in a_file.readlines():
m = re.search("^(\S+) VipUserServer\[\d+\] TRACE: \[招募统计\]用户:(\d+)充值会员,充值模式:(\d+),开通类型:(\d+)", a_line)
if m:
if(int(m.group(4)) == 1):
if(int(m.group(3)) == 1):
record['all_dredge_month'] += 1;
elif(int(m.group(3)) == 2):
record['all_dredge_year'] += 1;
else:
record['all_vip_renewals'] += 1;
record['all_vip_dredge'] = record['all_dredge_year'] + record['all_dredge_month']
print '邀请开通会员总人数:',record['all_vip_dredge']
print '邀请续费会员总人数:',record['all_vip_renewals']
print '邀请开通月会员总人数:',record['all_dredge_month']
print '邀请开通年会员总人数:',record['all_dredge_year']
db_conn.query("insert into ZHAOMUVIPINFO (tongji_time,all_vip_dredge,all_vip_renewals,all_dredge_month,all_dredge_year) values('%s',%d,%d,%d,%d)"%(fmt_day,record['all_vip_dredge'],record['all_vip_renewals'],record['all_dredge_month'],record['all_dredge_year']))
db_conn.commit()
db_cursor.close()
db_conn.close()
main()
#if __name__ == "__main__":
# main()
cat vipactiveusernum.py
#!/usr/bin/env python
#-*-coding:utf-8-*-
#会员信息统计
import MySQLdb
import os, sys, re, string
import time, getopt
optmap = {
'dbuser' : 'haoren',
'dbpass' : '123456789',
'dbhost' : '172.10.1.103',
'dbport' : 3306,
'dbname' : 'MGDB',
#'logdir' : '/home/haoren/log/', #内网环境日志目录
'logdir' : '/home/haoren/logdir/', #外网环境日志目录
#'logpattern' : '^chat_sessionserver.log.', #内网环境日志名称前缀
'logpattern' : '^sessionserver.log.' #外网环境日志名称前缀
}
def get_files(dir, pattern):
print dir, pattern
match_file_list = []
if os.path.exists(dir):
cur_file_list = os.listdir(dir)
for file_name in cur_file_list:
if re.search(pattern, file_name):
match_file_list.append(file_name)
return match_file_list
else:
return 'no'
def main():
one_day = time.strftime("%Y%m%d", time.localtime(time.time() - 24*60*60)) #默认日期为脚本运行的上一天
opts, args = getopt.getopt(sys.argv[1:], 'd:')
for op, value in opts:
if op == '-d':
m = re.search('[0-9]{8}', value)
if m:
one_day = value
else:
print "请输入8位日期(比如:20130215)"
return 'no'
print "正在读取VIP用户数据(%s)..." %one_day
db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost'], port=optmap['dbport'], db=optmap['dbname'])
db_cursor = db_conn.cursor()
temp_vip_active_user_num_file_name = '/tmp/vipactiveusernumtemp.txt'
command = "cat /dev/null > %s" %(temp_vip_active_user_num_file_name)
os.system(command)
if re.search('haoren', optmap['logdir']):
print '外网环境'
log_dir_name_list = get_files(optmap['logdir'], one_day[2:])
for log_dir_name_item in log_dir_name_list:
log_dir_full_path = optmap['logdir']+log_dir_name_item+'/'
log_file_name_list = get_files(log_dir_full_path, optmap['logpattern'] + one_day[2:])
for log_file_name_item in log_file_name_list:
print log_file_name_item
command = "cat %s%s |awk '/用户登录/' |awk '/vip状态/' >> %s" % (log_dir_full_path, log_file_name_item, temp_vip_active_user_num_file_name)
os.system(command)
else:
print '内网环境'
log_file_name_list = get_files(optmap['logdir'], optmap['logpattern'] + one_day[2:])
for log_file_name_item in log_file_name_list:
command = "cat %s%s |awk '/用户登录/' |awk '/vip状态/' >> %s" % (optmap['logdir'], log_file_name_item, temp_vip_active_user_num_file_name)
os.system(command)
command = "cat %s |wc -l" %temp_vip_active_user_num_file_name
os.system(command)
#一天当中用户可能从月会员降级到周会员,造成不同会员状态的同一帐号统计两次,所以总会员!=年会员+月会员+周会员)
#不同状态的会员用同一计算机登录,所以总mac/ip!=年mac/ip+月mac/ip+周mac/ip
total_account_map = {}
total_mac_map = {}
total_ip_map = {}
before_account_map = {}
before_mac_map = {}
before_ip_map = {}
account_map = {1:{}, 2:{}, 3:{}, 11:{}, 12:{}, 13:{}}
mac_map = {1:{}, 2:{}, 3:{}, 11:{}, 12:{}, 13:{}}
ip_map = {1:{}, 2:{}, 3:{}, 11:{}, 12:{}, 13:{}}
temp_vip_active_user_num_file = open(temp_vip_active_user_num_file_name)
for one_line in temp_vip_active_user_num_file.readlines():
match = re.search("^(\S+) SS\[\d+\] TRACE: 用户登录:imid:(\d+),mac地址:(\d+),ip地址:(\d+),vip状态:(\d+),登录时间:(\d+)(\S+)", one_line)
if match:
if string.atoi(match.group(5)) in (1, 2, 3):
total_account_map[string.atoi(match.group(2))] = string.atoi(match.group(5))
total_mac_map[string.atoi(match.group(3))] = string.atoi(match.group(5))
total_ip_map[string.atoi(match.group(4))] = string.atoi(match.group(5))
elif string.atoi(match.group(5)) in (11, 12, 13):
before_account_map[string.atoi(match.group(2))] = string.atoi(match.group(5))
before_mac_map[string.atoi(match.group(3))] = string.atoi(match.group(5))
before_ip_map[string.atoi(match.group(4))] = string.atoi(match.group(5))
account_map[string.atoi(match.group(5))][string.atoi(match.group(2))] = string.atoi(match.group(3))
mac_map[string.atoi(match.group(5))][string.atoi(match.group(3))] = string.atoi(match.group(2))
ip_map[string.atoi(match.group(5))][string.atoi(match.group(4))] = string.atoi(match.group(2))
temp_vip_active_user_num_file.close()
dword_time = time.mktime(time.strptime(one_day, '%Y%m%d'))
db_conn.query("use %s" %optmap['dbname'])
sql = "delete from VIPACTIVEUSERNUM where active_time='%d'" %dword_time
print sql
db_conn.query(sql)
sql = "insert into VIPACTIVEUSERNUM (active_time) values('%d')" %(dword_time)
print sql
db_conn.query(sql)
sql = "update VIPACTIVEUSERNUM set year_account_num=%d, year_mac_num=%d, year_ip_num=%d, month_account_num=%d, month_mac_num=%d, month_ip_num=%d, week_account_num=%d, week_mac_num=%d, week_ip_num=%d, total_mac_num=%d, total_ip_num=%d, before_account_num=%d, before_mac_num=%d, before_ip_num=%d where active_time='%d'" %(len(account_map[3]), len(mac_map[3]), len(ip_map[3]), len(account_map[2]), len(mac_map[2]), len(ip_map[2]), len(account_map[1]), len(mac_map[1]), len(ip_map[1]), len(total_mac_map), len(total_ip_map), len(before_account_map), len(before_mac_map), len(before_ip_map), dword_time)
print sql
db_conn.query(sql)
db_conn.commit()
db_cursor.close()
db_conn.close()
main()
#if __name__ == "__main__"
# main()
cat vipuserdatamonthly.py
#!/usr/bin/env python
#-*-coding:utf-8-*-
#会员数据统计
import MySQLdb
import os, sys, re, string
import time, getopt
optmap = {
'dbuser' : 'haoren',
'dbpass' : '123456789',
'dbhost' : '172.10.1.103',
'dbport' : 3306,
'dbname' : 'MGDB',
#'logdir' : '/home/haoren/log/', #内网环境日志目录
'logdir' : '/home/haoren/logdir/', #外网环境日志目录
#'logpattern' : '^chat_vipuserserver.log.', #内网环境日志名称前缀
'logpattern' : '^vipuserserver.log.' #外网环境日志名称前缀
}
def get_files(dir, pattern):
print dir, pattern
match_file_list = []
if os.path.exists(dir):
cur_file_list = os.listdir(dir)
for file_name in cur_file_list:
if re.search(pattern, file_name):
match_file_list.append(file_name)
return match_file_list
else:
return 'no'
def main():
one_day = time.strftime("%Y%m%d", time.localtime(time.time() - 24*60*60)) #默认日期为脚本运行的上一天
opts, args = getopt.getopt(sys.argv[1:], 'd:')
for op, value in opts:
if op == '-d':
m = re.search('[0-9]{8}', value)
if m:
one_day = value
else:
print "请输入8位日期(比如:20130215)"
return 'no'
print "正在读取VIP用户数据(%s)..." %one_day
db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost'], port=optmap['dbport'], db=optmap['dbname'])
db_cursor = db_conn.cursor()
temp_vip_user_data_file_name = '/tmp/vipuserdatatemp.txt'
command = "cat /dev/null > %s" %(temp_vip_user_data_file_name)
os.system(command)
if re.search('haoren', optmap['logdir']):
print '外网环境'
log_dir_name_list = get_files(optmap['logdir'], one_day[2:])
for log_dir_name_item in log_dir_name_list:
log_dir_full_path = optmap['logdir']+log_dir_name_item+'/'
log_file_name_list = get_files(log_dir_full_path, optmap['logpattern'] + one_day[2:])
for log_file_name_item in log_file_name_list:
print log_file_name_item
command = "cat %s%s |awk '/\[VIP统计\]/' >> %s" % (log_dir_full_path, log_file_name_item, temp_vip_user_data_file_name)
os.system(command)
else:
print '内网环境'
log_file_name_list = get_files(optmap['logdir'], optmap['logpattern'] + one_day[2:])
for log_file_name_item in log_file_name_list:
command = "cat %s%s |awk '/\[VIP统计\]/' >> %s" % (optmap['logdir'], log_file_name_item, temp_vip_user_data_file_name)
os.system(command)
command = "cat %s |wc -l" %temp_vip_user_data_file_name
os.system(command)
new_vip_user_num_map = {}
new_vip_user_num_map[1] = 0
new_vip_user_num_map[2] = 0
new_vip_user_num_map[3] = 0
before_vip_user_num_map = {}
before_vip_user_num_map[1] = 0
before_vip_user_num_map[2] = 0
before_vip_user_num_map[3] = 0
before_vip_user_id_map = {}
renew_before_vip_user_num_map = {}
renew_before_vip_user_num_map[1] = 0
renew_before_vip_user_num_map[2] = 0
renew_before_vip_user_num_map[3] = 0
today_renew_vip_user_num = 0
year_vip_user_num = 0
month_vip_user_num = 0
week_vip_user_num = 0
before_year_vip_user_num = 0
before_month_vip_user_num = 0
before_week_vip_user_num = 0
temp_vip_user_data_file = open(temp_vip_user_data_file_name)
for one_line in temp_vip_user_data_file.readlines():
match = re.search("^(\S+) VipUserServer\[\d+\] INFO: \[VIP统计\]新增会员:(\d+),会员状态:(\d+)", one_line)
if match:
new_vip_user_num_map[string.atoi(match.group(3))] += 1
continue
match = re.search("^(\S+) VipUserServer\[\d+\] INFO: \[VIP统计\]年会员到期未续费:(\d+)", one_line)
if match:
before_vip_user_num_map[3] += 1
before_vip_user_id_map[string.atoi(match.group(2))] = 3
continue
match = re.search("^(\S+) VipUserServer\[\d+\] INFO: \[VIP统计\]月会员到期未续费:(\d+)", one_line)
if match:
before_vip_user_num_map[2] += 1
before_vip_user_id_map[string.atoi(match.group(2))] = 2
continue
match = re.search("^(\S+) VipUserServer\[\d+\] INFO: \[VIP统计\]周会员到期未续费:(\d+)", one_line)
if match:
before_vip_user_num_map[1] += 1
before_vip_user_id_map[string.atoi(match.group(2))] = 1
continue
match = re.search("^(\S+) VipUserServer\[\d+\] INFO: \[VIP统计\]会员续费:(\d+),会员状态\((\d+)-(\d+)\)", one_line)
if match:
if string.atoi(match.group(3)) in (1, 2 , 3):
today_renew_vip_user_num += 1
else:
if string.atoi(match.group(2)) in before_vip_user_id_map:
before_vip_user_num_map[before_vip_user_id_map[string.atoi(match.group(2))]] -= 1
today_renew_vip_user_num += 1
else:
renew_before_vip_user_num_map[string.atoi(match.group(4))] += 1
continue
match = re.search("^(\S+) VipUserServer\[\d+\] INFO: \[VIP统计\]当前VIP人数,会员总数:(\d+),年会员:(\d+),月会员:(\d+),周会员:(\d+),过期会员总数:(\d+),过期年会员:(\d+),过期月会员:(\d+),过期周会员:(\d+)", one_line)
if match:
year_vip_user_num = string.atoi(match.group(3))
month_vip_user_num = string.atoi(match.group(4))
week_vip_user_num = string.atoi(match.group(5))
before_year_vip_user_num = string.atoi(match.group(7))
before_month_vip_user_num = string.atoi(match.group(8))
before_week_vip_user_num = string.atoi(match.group(9))
continue
temp_vip_user_data_file.close()
dword_time = time.mktime(time.strptime(one_day, '%Y%m%d'))
db_conn.query("use %s" %optmap['dbname'])
sql = "delete from VIPUSERDATAMONTHLY where count_time='%d'" %dword_time
print sql
db_conn.query(sql)
sql = "insert into VIPUSERDATAMONTHLY (count_time) values('%d')" %(dword_time)
print sql
db_conn.query(sql)
sql = "update VIPUSERDATAMONTHLY set year_vip_user_num=%d, month_vip_user_num=%d, week_vip_user_num=%d, today_new_year_vip_user_num=%d, today_new_month_vip_user_num=%d, today_new_week_vip_user_num=%d, today_renew_vip_user_num=%d, today_renew_before_year_vip_user_num=%d, today_renew_before_month_vip_user_num=%d, today_renew_before_week_vip_user_num=%d, today_before_year_vip_user_num=%d, today_before_month_vip_user_num=%d, today_before_week_vip_user_num=%d, before_year_vip_user_num=%d, before_month_vip_user_num=%d, before_week_vip_user_num=%d where count_time='%d'" %(year_vip_user_num, month_vip_user_num, week_vip_user_num, new_vip_user_num_map[3], new_vip_user_num_map[2], new_vip_user_num_map[1], today_renew_vip_user_num, renew_before_vip_user_num_map[3], renew_before_vip_user_num_map[2], renew_before_vip_user_num_map[1], before_vip_user_num_map[3], before_vip_user_num_map[2], before_vip_user_num_map[1], before_year_vip_user_num, before_month_vip_user_num, before_week_vip_user_num, dword_time)
print sql
db_conn.query(sql)
db_conn.commit()
db_cursor.close()
db_conn.close()
main()
#if __name__ == "__main__"
# main()
cat vipuserflowermonthly.py
#!/usr/bin/env python
#-*-coding:utf-8-*-
#会员数据统计
import MySQLdb
import os, sys, re, string
import time, getopt
optmap = {
'dbuser' : 'haoren',
'dbpass' : '123456789',
'dbhost' : '172.10.1.103',
'dbport' : 3306,
'dbname' : 'MGDB',
#'logdir' : '/home/haoren/log/', #内网环境日志目录
'logdir' : '/home/haoren/logdir/', #外网环境日志目录
#'logpattern' : '^chat_flowerserver.log.', #内网环境日志名称前缀
'logpattern' : '^flowerserver.log.' #外网环境日志名称前缀
}
def get_files(dir, pattern):
print dir, pattern
match_file_list = []
if os.path.exists(dir):
cur_file_list = os.listdir(dir)
for file_name in cur_file_list:
if re.search(pattern, file_name):
match_file_list.append(file_name)
return match_file_list
else:
return 'no'
def main():
one_day = time.strftime("%Y%m%d", time.localtime(time.time() - 24*60*60)) #默认日期为脚本运行的上一天
opts, args = getopt.getopt(sys.argv[1:], 'd:')
for op, value in opts:
if op == '-d':
m = re.search('[0-9]{8}', value)
if m:
one_day = value
else:
print "请输入8位日期(比如:20130215)"
return 'no'
print "正在读取VIP用户物品数据(%s)..." %one_day
db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost'], port=optmap['dbport'], db=optmap['dbname'])
db_cursor = db_conn.cursor()
temp_vip_user_flower_file_name = '/tmp/vipuserflowermonthlytemp.txt'
command = "cat /dev/null > %s" %(temp_vip_user_flower_file_name)
os.system(command)
if re.search('haoren', optmap['logdir']):
print '外网环境'
log_dir_name_list = get_files(optmap['logdir'], one_day[2:])
for log_dir_name_item in log_dir_name_list:
log_dir_full_path = optmap['logdir']+log_dir_name_item+'/'
log_file_name_list = get_files(log_dir_full_path, optmap['logpattern'] + one_day[2:])
for log_file_name_item in log_file_name_list:
print log_file_name_item
command = "cat %s%s |awk '/\[flower统计\]/' >> %s" % (log_dir_full_path, log_file_name_item, temp_vip_user_flower_file_name)
os.system(command)
else:
print '内网环境'
log_file_name_list = get_files(optmap['logdir'], optmap['logpattern'] + one_day[2:])
for log_file_name_item in log_file_name_list:
command = "cat %s%s |awk '/\[flower统计\]/' >> %s" % (optmap['logdir'], log_file_name_item, temp_vip_user_flower_file_name)
os.system(command)
command = "cat %s |wc -l" %temp_vip_user_flower_file_name
os.system(command)
today_flower_new_num_map = {}
today_flower_new_num_map[0] = 0
today_flower_new_num_map[1] = 0
today_flower_new_num_map[2] = 0
today_flower_new_num_map[3] = 0
today_flower_new_num_map[11] = 0
today_flower_new_num_map[12] = 0
today_flower_new_num_map[13] = 0
today_flower_spent_num_map = {}
today_flower_spent_num_map[0] = 0
today_flower_spent_num_map[1] = 0
today_flower_spent_num_map[2] = 0
today_flower_spent_num_map[3] = 0
today_flower_spent_num_map[11] = 0
today_flower_spent_num_map[12] = 0
today_flower_spent_num_map[13] = 0
temp_vip_user_flower_file = open(temp_vip_user_flower_file_name)
for one_line in temp_vip_user_flower_file.readlines():
#新增物品
match = re.search("^(\S+) FlowerServer\[\d+\] INFO: \[flower统计\]\[basketflower\]用户\((\d+),(\d+)\)累积物品: basketflower=(\d+)", one_line)
if match:
today_flower_new_num_map[string.atoi(match.group(2))] += 1
continue
match = re.search("^(\S+) FlowerServer\[\d+\] INFO: \[flower统计\]\[basketflower\]\[vip\]用户\((\d+),(\d+)\)花篮信息更新导致填满花篮: (\d+)->(\d+)", one_line)
if match:
today_flower_new_num_map[string.atoi(match.group(2))] += string.atoi(match.group(5)) - string.atoi(match.group(4))
continue
match = re.search("^(\S+) FlowerServer\[\d+\] INFO: \[flower统计\]\[flowerload\]增加用户\((\d+),(\d+)\)的花篮物品:实际增加(\d+)朵", one_line)
if match:
today_flower_new_num_map[string.atoi(match.group(2))] += string.atoi(match.group(4))
continue
match = re.search("^(\S+) FlowerServer\[\d+\] INFO: \[flower统计\]\[present\]用户\((\d+),(\d+)\)赠送(\d+)朵物品(\S+)给(\d+)失败...\(实际补偿(\d+)朵,补偿后共(\d+)朵\)", one_line)
if match:
today_flower_new_num_map[string.atoi(match.group(2))] += string.atoi(match.group(7))
continue
match = re.search("^(\S+) FlowerServer\[\d+\] INFO: \[flower统计\]\[gm\]增加用户\((\d+),(\d+)\)花篮(\d+)朵物品: basketflower=(\d+)", one_line)
if match:
today_flower_new_num_map[string.atoi(match.group(2))] += string.atoi(match.group(4))
continue
#消耗物品
match = re.search("^(\S+) FlowerServer\[\d+\] INFO: \[flower统计\]\[present\]用户\((\d+),(\d+)\)赠送(\d+)朵花给(\d+)(\S+).\(剩余basketflower=(\d+)\)", one_line)
if match:
today_flower_spent_num_map[string.atoi(match.group(2))] += string.atoi(match.group(4))
continue
match = re.search("^(\S+) FlowerServer\[\d+\] INFO: \[flower统计\]\[basketflower\]\[vip\]用户\((\d+),(\d+)\)花篮信息更新导致花篮物品下调为花篮上限: (\d+)->(\d+)", one_line)
if match:
today_flower_spent_num_map[string.atoi(match.group(2))] += string.atoi(match.group(4)) - string.atoi(match.group(5))
continue
match = re.search("^(\S+) FlowerServer\[\d+\] INFO: \[flower统计\]\[gm\]减少用户\((\d+),(\d+)\)花篮(\d+)朵物品: basketflower=(\d+)", one_line)
if match:
today_flower_spent_num_map[string.atoi(match.group(2))] += string.atoi(match.group(4))
continue
temp_vip_user_flower_file.close()
dword_time = time.mktime(time.strptime(one_day, '%Y%m%d'))
db_conn.query("use %s" %optmap['dbname'])
sql = "delete from VIPUSERFLOWERMONTHLY where count_time='%d'" %dword_time
print sql
db_conn.query(sql)
sql = "insert into VIPUSERFLOWERMONTHLY (count_time) values('%d')" %(dword_time)
print sql
db_conn.query(sql)
sql = "update VIPUSERFLOWERMONTHLY set today_year_flower_new_num=%d, today_month_flower_new_num=%d, today_week_flower_new_num=%d, today_other_flower_new_num=%d, today_year_flower_spent_num=%d, today_month_flower_spent_num=%d, today_week_flower_spent_num=%d, today_other_flower_spent_num=%d where count_time='%d'" %(today_flower_new_num_map[3], today_flower_new_num_map[2], today_flower_new_num_map[1], today_flower_new_num_map[0] + today_flower_new_num_map[11] + today_flower_new_num_map[12] + today_flower_new_num_map[13], today_flower_spent_num_map[3], today_flower_spent_num_map[2], today_flower_spent_num_map[1], today_flower_spent_num_map[0] + today_flower_spent_num_map[11] + today_flower_spent_num_map[12] + today_flower_spent_num_map[13], dword_time)
print sql
db_conn.query(sql)
db_conn.commit()
db_cursor.close()
db_conn.close()
main()
#if __name__ == "__main__"
# main()
cat zhaomuconsume.py
#!/usr/bin/env python
#-*-coding:utf-8-*-
#招募会员消耗
import MySQLdb
import os, sys, re,string
import time, tarfile,getopt
optmap = {
'dbuser' : 'haoren',
'dbpass' : '123456789',
'dbhost' : '172.10.1.103',
'dbport' : 3306,
'dbname' : 'MGDB'
}
def get_files(dir, pattern):
res_file_list =[]
if os.path.exists(dir):
cur_file_list = os.listdir(dir)
for file_name in cur_file_list:
if re.search(pattern, file_name):
res_file_list.append(file_name)
return res_file_list
else:
return 'no'
#dirname="/home/haoren/log/"
def main():
db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost'], port=optmap['dbport'], db=optmap['dbname'])
db_cursor=db_conn.cursor()
db_conn.query("use %s"%optmap['dbname'])
cur_day = time.strftime("%Y%m%d", time.localtime(time.time()-86400))
fmt_day = time.strftime('%Y-%m-%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
print '统计日期:',fmt_day
log_day = time.strftime("%y%m%d", time.localtime(time.time()-86400))
#dirname="/home/haoren/log/%s/"%log_day
dirname="/home/haoren/logdir/%s_84"%log_day
print dirname
db_conn.query("DELETE from ZHAOMUCONSUME where tongji_time='%s'"%fmt_day)
if os.path.exists("/tmp/zhaomuconsumepoint.txt"):
os.system("rm -f /tmp/zhaomuconsumepoint.txt")
if os.path.exists("/tmp/zhaomuconsumecoin.txt"):
os.system("rm -f /tmp/zhaomuconsumecoin.txt")
file_list2=get_files(dirname,'billserver')
for file2 in file_list2:
command = "cat %s/%s | awk '/点数招募统计/'>> /tmp/zhaomuconsumepoint.txt"%(dirname,file2)
os.system(command)
command = "cat %s/%s | awk '/人民币招募统计/'>> /tmp/zhaomuconsumecoin.txt"%(dirname,file2)
os.system(command)
filename='/tmp/zhaomuconsumepoint.txt'
record = {}
a_file = open(filename, 'r')
record['all_consume_point'] = 0
for a_line in a_file.readlines():
m = re.search("^(\S+) Bill\[\d+\] TRACE: \[点数招募统计\]会员消耗点数,用户:(\d+),点数:(\d+)", a_line)
if m:
record['all_consume_point'] += int(m.group(3))
a_file.close()
filename='/tmp/zhaomuconsumecoin.txt'
a_file = open(filename, 'r')
record['all_consume_coin'] = 0
for a_line in a_file.readlines():
m = re.search("^(\S+) Bill\[\d+\] TRACE: \[人民币招募统计\]会员消耗人民币,用户:(\d+),人民币:(\d+)", a_line)
if m:
record['all_consume_coin'] += int(m.group(3))
a_file.close()
print '招募会员消费点数:',record['all_consume_point']
print '招募会员消费人民币:',record['all_consume_coin']
db_conn.query("insert into ZHAOMUCONSUME (tongji_time,all_consume_point,all_consume_coin) values('%s',%d,%d)"%(fmt_day,record['all_consume_point'],record['all_consume_coin']))
db_conn.commit()
db_cursor.close()
db_conn.close()
main()
#if __name__ == "__main__":
# main()
cat vip_monthly_bulletin.py
#!/usr/bin/env python
#-*-coding:utf-8-*-
#会员月报
import MySQLdb
import os, sys, re,string
import time, tarfile,getopt
optmap = {
'dbuser' : 'haoren',
'dbpass' : '123456789',
'dbhost' : '172.10.1.103',
'dbport' : 3306,
'dbname' : 'MGDB'
}
def get_files(dir, pattern):
res_file_list =[]
if os.path.exists(dir):
cur_file_list = os.listdir(dir)
for file_name in cur_file_list:
if re.search(pattern, file_name):
res_file_list.append(file_name)
return res_file_list
else:
return 'no'
def main():
log_day = time.strftime("%y%m%d", time.localtime(time.time()-86400-86400-86400))
dirname="/home/haoren/logdir/%s_111/%s"%(log_day,log_day)
print dirname
db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost'], port=optmap['dbport'], db=optmap['dbname'])
db_cursor=db_conn.cursor()
db_conn.query("use %s"%optmap['dbname'])
sql ="create table if not exists VIPTABLE (`ID` int(10) unsigned NOT NULL auto_increment,`tongji_time` varchar(24) not null default '',`all_vip` int(10) not null default '0',`new_vip` int(10) not null default '0',`renewals_vip` int(10) not null default '0',`today_old_vip` int(10) not null default '0',`all_old_vip` int(10) not null default '0',`year_vip` int(10) not null default '0',`month_vip` int(10) not null default '0',`week_vip` int(10) not null default '0',primary key (ID))"
db_conn.query(sql)
cur_day = time.strftime("%Y%m%d", time.localtime(time.time()-86400-86400-86400))
fmt_day = time.strftime('%Y-%m-%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
print 'VIP统计日期:',fmt_day
log_day = time.strftime("%y%m%d", time.localtime(time.time()-86400-86400-86400))
dirname="/home/haoren/logdir/%s_111/%s"%(log_day,log_day)
print dirname
db_conn.query("DELETE from VIPTABLE where tongji_time='%s'"%fmt_day)
db_conn.query("insert into VIPTABLE (tongji_time) values('%s')"%fmt_day)
if os.path.exists("/tmp/vip.txt"):
os.system("rm -f /tmp/vip.txt")
if os.path.exists("/tmp/newvip.txt"):
os.system("rm -f /tmp/newvip.txt")
if os.path.exists("/tmp/renewvip.txt"):
os.system("rm -f /tmp/renewvip.txt")
if os.path.exists("/tmp/oldvip.txt"):
os.system("rm -f /tmp/oldvip.txt")
#dirname="/home/haoren/log/"
#dirname="/tmp/"
file_list2=get_files(dirname,'vipuserserver')
for file2 in file_list2:
command = "cat %s/%s | awk '/VIP统计/'|awk '/新增会员/'>> /tmp/newvip.txt"%(dirname,file2)
os.system(command)
command = "cat %s/%s | awk '/VIP统计/'|awk '/会员续费/'>> /tmp/renewvip.txt"%(dirname,file2)
os.system(command)
command = "cat %s/%s | awk '/VIP统计/'|awk '/到期未续费/'>> /tmp/oldvip.txt"%(dirname,file2)
os.system(command)
command = "cat %s/%s | awk '/VIP统计/'|awk '/当前VIP人数/'>> /tmp/vip.txt" %(dirname,file2)
os.system(command)
filename='/tmp/vip.txt'
record = {}
a_file = open(filename, 'r')
record['all_vip']=0
record['year_vip']=0
record['month_vip']=0
record['week_vip']=0
record['old_vip']=0
for a_line in a_file.readlines():
m = re.search("^(\S+) VipUserServer\[\d+\] INFO: \[VIP统计\]当前VIP人数,会员总数:(\d+),年会员:(\d+),月会员:(\d+),周会员:(\d+),过期会员总数:(\d+)", a_line)
if m:
record['all_vip'] = int(m.group(2))
record['year_vip'] = int(m.group(3))
record['month_vip'] = int(m.group(4))
record['week_vip'] = int(m.group(5))
record['old_vip'] = int(m.group(6))
db_conn.query("update VIPTABLE set all_vip=%d,all_old_vip=%d,year_vip=%d,month_vip=%d,week_vip=%d where tongji_time='%s'"%(record['all_vip'],record['old_vip'],record['year_vip'],record['month_vip'],record['week_vip'],fmt_day))
a_file.close()
newcount = -1
for newcount,line in enumerate(open('/tmp/newvip.txt')):
pass
newcount+=1
renewcount = -1
for renewcount,line in enumerate(open('/tmp/renewvip.txt')):
pass
renewcount+=1
oldcount = -1
for oldcount,line in enumerate(open('/tmp/oldvip.txt')):
pass
oldcount+=1
print '总会员人数:',record['all_vip']
print '今日新增会员:',newcount
print '今日续费会员:',renewcount
print '今日到期未续费会员人数:',oldcount
print '历史到期未续费总人数:',record['old_vip']
print '年费会员总人数:',record['year_vip']
print '月费会员总人数:',record['month_vip']
print '周费会员总人数:',record['week_vip']
db_conn.query("update VIPTABLE set new_vip=%d,renewals_vip=%d,today_old_vip=%d where tongji_time='%s'"%(newcount,renewcount,oldcount,fmt_day))
db_conn.commit()
db_cursor.close()
db_conn.close()
main()
#if __name__ == "__main__":
# main()
cat singerlevelmonthly.py
#!/usr/bin/env python
#-*-coding:utf-8-*-
#用户等级月报
import MySQLdb
import os, sys, re,string
import time, tarfile,getopt
optmap = {
'dbuser' : 'haoren',
'dbpass' : '123456789',
'dbhost' : '172.10.1.104',
'dbhost_gm' : '172.10.1.103',
'dbport' : 3306,
'dbname' : 'MIDB',
'dbname_gm' : 'MGDB'
}
def main():
db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost'], port=optmap['dbport'], db=optmap['dbname'])
db_conn.query("use %s" %optmap['dbname'])
db_cursor = db_conn.cursor()
#取数据
singer_dict = {}
for i in range(10):
sql ="SELECT ID, SINGERLEVEL from SINGERSHOW%s"%i
print sql
db_cursor.execute(sql)
db_rows = db_cursor.fetchall()
for ID, SINGERLEVEL in db_rows:
singer_dict[ID] = SINGERLEVEL
db_conn.commit()
db_cursor.close()
db_conn.close()
level_dict = {}
for key in singer_dict:
if (singer_dict[key] in level_dict):
level_dict[singer_dict[key]] += 1
else:
level_dict[singer_dict[key]] = 1
for key in level_dict:
print 'key=%s, value=%s' % (key, level_dict[key])
#写入MGDB
db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost_gm'], port=optmap['dbport'], db=optmap['dbname_gm'])
db_conn.query("use %s" %optmap['dbname_gm'])
db_cursor = db_conn.cursor()
one_day = time.strftime("%Y%m%d", time.localtime(time.time() - 24*60*60)) #默认日期为脚本运行的上一天
print "统计(%s)用户等级数据..." %one_day
dword_time = time.mktime(time.strptime(one_day, '%Y%m%d'))
db_conn.query("DELETE from SINGERLEVELMONTHLY where time='%d'"%dword_time)
for key in level_dict:
sql = "insert into SINGERLEVELMONTHLY (time, level, count) values(%d,%d,%d)" %(dword_time, key, level_dict[key])
print sql
db_cursor.execute(sql)
db_conn.commit()
db_cursor.close()
db_conn.close()
main()
#if __name__ == "__main__":
# main()
cat clientinstall.py
#!/usr/bin/env python
#-*-coding:utf-8-*-
#客户端下载卸载数据统计
import MySQLdb
import os, sys, re,string
import time, tarfile,getopt
optmap = {
'dbuser' : 'root',
'dbpass' : '123456',
'dbhost' : '172.17.90.15',
'dbport' : 3306,
'dbname' : 'zebra_gmtool_haoren'
}
def get_files(dir, pattern):
res_file_list =[]
if os.path.exists(dir):
cur_file_list = os.listdir(dir)
for file_name in cur_file_list:
if re.search(pattern, file_name):
res_file_list.append(file_name)
return res_file_list
else:
return 'no'
def main():
cur_day = time.strftime("%Y%m%d", time.localtime(time.time()-86400))
opts, args = getopt.getopt(sys.argv[1:], 'd:')
for op, value in opts:
if op == '-d':
m = re.search('[0-9]{8}', value)
if m:
cur_day = value
else:
print "请输入8位日期(比如:20130215)"
return 'no'
fmt_day = time.strftime('%Y-%m-%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
d_time = time.mktime(time.strptime(fmt_day,'%Y-%m-%d'))
print '消费统计日期:',fmt_day
#log_day = time.strftime("%y%m%d", time.localtime(time.time()-86400))
#log_day = time.strftime('%y%m%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
dirnameinstall="/home/haoren/log/DuDuInstall_%s.log"%fmt_day
dirnameuninstall="/home/haoren/log/DuDuUnInstall_%s.log"%fmt_day
#dirname="/home/haoren/log/"
#print dirname
#ACU、PCU
if os.path.exists("/tmp/clientinstall1.txt"):
os.system("rm -f /tmp/clientinstall1.txt")
if os.path.exists("/tmp/clientuninstall1.txt"):
os.system("rm -f /tmp/clientuninstall1.txt")
#此处只统计了渠道1,后续增加再在后面增加
command = "cat %s|gawk -F ' ' '{print $4}'|grep 1 >> /tmp/clientinstall1.txt"%dirnameinstall
os.system(command)
command = "cat %s|gawk -F ' ' '{print $4}'|grep 1 >> /tmp/clientuninstall1.txt"%dirnameuninstall
os.system(command)
install1 = -1
for install1,line in enumerate(open('/tmp/clientinstall1.txt')):
pass
install1 += 1
uninstall1 = -1
for uninstall1,line in enumerate(open('/tmp/clientuninstall1.txt')):
pass
uninstall1 += 1
db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost'], port=optmap['dbport'], db=optmap['dbname'])
db_cursor=db_conn.cursor()
db_conn.query("update CLIENTSOURCERESULT set INSTALL=%d,UNINSTALL=%d where `CLIENT`=1 and `TIME`=%d"%(install1,uninstall1,d_time))
db_conn.commit()
db_cursor.close()
db_conn.close()
main()
#if __name__ == "__main__":
# main()
cat clientsource.py
#!/usr/bin/env python
#-*-coding:utf-8-*-
#客户端来源相关数据统计
import MySQLdb
import os, sys, re,string
import time, tarfile,getopt
optmap = {
'dbuser' : 'haoren',
'dbpass' : '123456789',
'dbhost' : '172.10.1.103',
'dbport' : 3306,
'dbname' : 'MGDB'
}
def get_files(dir, pattern):
res_file_list =[]
if os.path.exists(dir):
cur_file_list = os.listdir(dir)
for file_name in cur_file_list:
if re.search(pattern, file_name):
res_file_list.append(file_name)
return res_file_list
else:
return 'no'
def main():
cur_day = time.strftime("%Y%m%d", time.localtime(time.time()-86400))
opts, args = getopt.getopt(sys.argv[1:], 'd:')
for op, value in opts:
if op == '-d':
m = re.search('[0-9]{8}', value)
if m:
cur_day = value
else:
print "请输入8位日期(比如:20130215)"
return 'no'
fmt_day = time.strftime('%Y-%m-%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
d_time = time.mktime(time.strptime(fmt_day,'%Y-%m-%d'))
print '消费统计日期:',fmt_day
#log_day = time.strftime("%y%m%d", time.localtime(time.time()-86400))
log_day = time.strftime('%y%m%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
dirname="/home/haoren/logdir/%s_44"%log_day
#dirname="/home/haoren/log/"
print dirname
#ACU、PCU
if os.path.exists("/tmp/clientsourceacu.txt"):
os.system("rm -f /tmp/clientsourceacu.txt")
if os.path.exists("/tmp/clientsourceip.txt"):
os.system("rm -f /tmp/clientsourceip.txt")
file_list2=get_files(dirname,'toolgmserver')
for file2 in file_list2:
command = "cat %s/%s | awk '/人数统计/'>> /tmp/clientsourceacu.txt"%(dirname,file2)
os.system(command)
for file2 in file_list2:
command = "cat %s/%s | awk '/客户端统计/'>> /tmp/clientsourceip.txt"%(dirname,file2)
os.system(command)
db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost'], port=optmap['dbport'], db=optmap['dbname'])
db_cursor=db_conn.cursor()
sql="delete from CLIENTSOURCETEMP"
db_conn.query(sql)
#ACU、PCU
filename='/tmp/clientsourceacu.txt'
pcu = {}
acu = {}
acunum = {}
a_file = open(filename, 'r')
for a_line in a_file.readlines():
m = re.search("^(\S+) ToolGM\[\d+\] TRACE: \[人数统计\]CLIENT:(\d+),总人数:(\d+)", a_line)
if m:
vfind = 0
for mykey in pcu:
if mykey == int(m.group(2)):
vfind = 1
acu[mykey] += int(m.group(3))
acunum[mykey] += 1
if(pcu[mykey] < int(m.group(3))):
pcu[mykey] = int(m.group(3))
if(0==vfind):
pcu[int(m.group(2))] = int(m.group(3))
acu[int(m.group(2))] = int(m.group(3))
acunum[int(m.group(2))] = 1
for mykey in acu:
acu[mykey] = acu[mykey]/acunum[mykey]
for mykey in acunum:
print 'NUM',mykey,acunum[mykey]
db_conn.query("delete from CLIENTSOURCERESULT where TIME=%d"%d_time)
for mykey in pcu:
print 'PCU:',mykey,pcu[mykey]
db_conn.query("insert into CLIENTSOURCERESULT(ACU,PCU,TIME,CLIENT) values(%d,%d,%d,%d)"%(acu[mykey],pcu[mykey],d_time,mykey))
for mykey in acu:
print 'ACU:',mykey,acu[mykey]
a_file.close()
#活跃用户数、活跃IP、活跃机器数、新登录用户数
filename='/tmp/clientsourceip.txt'
record = {}
a_file = open(filename, 'r')
for a_line in a_file.readlines():
m = re.search("^(\S+) ToolGM\[\d+\] TRACE: \[客户端统计\]用户:(\d+),IP:(\d+),MAC:(\d+),CLIENT:(\d+),NEW:(\d+)", a_line)
if m:
record['user']=int(m.group(2))
record['ip']=int(m.group(3))
record['mac']=int(m.group(4))
record['client']=int(m.group(5))
record['new']=int(m.group(6))
db_conn.query("insert into CLIENTSOURCETEMP values(%d,%d,%d,%d,%d)"%(record['user'],record['ip'],record['mac'],record['client'],record['new']))
a_file.close()
db_conn.commit()
sql ="SELECT count(distinct USERID) as ACTIVEUSER,count(distinct IP) as ACTIVEIP,count(distinct MAC) as ACTIVEMAC FROM CLIENTSOURCETEMP where CLIENT=1"
db_cursor.execute(sql)
temp=db_cursor.fetchone()
print temp
ACTIVEUSER=int(temp[0])
ACTIVEIP=int(temp[1])
ACTIVEMAC=int(temp[2])
db_conn.query("update CLIENTSOURCERESULT set ACTIVEUSER=%d,ACTIVEIP=%d,ACTIVEMAC=%d where `CLIENT`=1 and `TIME`=%d"%(ACTIVEUSER,ACTIVEIP,ACTIVEMAC,d_time))
sql ="SELECT count(NEWUSER) as ACTIVENEW FROM CLIENTSOURCETEMP where CLIENT=1 and NEWUSER=1"
db_cursor.execute(sql)
temp=db_cursor.fetchone()
print temp
ACTIVENEW=int(temp[0])
db_conn.query("update CLIENTSOURCERESULT set ACTIVENEW=%d where `CLIENT`=1 and `TIME`=%d"%(ACTIVENEW,d_time))
db_conn.commit()
db_cursor.close()
db_conn.close()
main()
#if __name__ == "__main__":
# main()
cat individualtransactions.py
#!/usr/bin/env python
#-*-coding:utf-8-*-
#账号交易日报
import MySQLdb
import os, sys, re,string
import time, tarfile,getopt
optmap = {
'dbuser' : 'haoren',
'dbpass' : '123456789',
'dbhost' : '172.10.1.103',
'dbport' : 3306,
'dbname' : 'MGDB'
}
def main():
cur_day = time.strftime("%Y%m%d", time.localtime(time.time()-86400))
opts, args = getopt.getopt(sys.argv[1:], 'd:')
for op, value in opts:
if op == '-d':
m = re.search('[0-9]{8}', value)
if m:
cur_day = value
else:
print "请输入8位日期(比如:20130215)"
return 'no'
fmt_day = time.strftime('%Y-%m-%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
print '账号交易统计日期:',fmt_day
db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost'], port=optmap['dbport'], db=optmap['dbname'])
db_cursor=db_conn.cursor()
db_conn.query("use %s"%optmap['dbname'])
sql="CREATE TABLE IF NOT EXISTS `USERCONSUMEHISTORY` (`userid` int(10) NOT NULL DEFAULT '0',`all_consume_point` int(10) NOT NULL DEFAULT '0',`all_coin` int(10) NOT NULL DEFAULT '0')"
db_conn.query(sql)
tabletime = time.strftime("%Y%m%d", time.localtime(time.mktime(time.strptime(cur_day, "%Y%m%d"))))
#sql="CREATE TABLE IF NOT EXISTS `INDIVIDUALTRANSACTIONS_%s` (`ID` int(10) unsigned NOT NULL auto_increment,`userid` int(10) NOT NULL DEFAULT '0',`today_point_add` int(10) NOT NULL DEFAULT '0',`today_point_consume` int(10) NOT NULL DEFAULT '0',`history_consume_point` int(10) NOT NULL DEFAULT '0',`today_exchange_coin` int(10) NOT NULL DEFAULT '0',`today_consume_coin` int(10) NOT NULL DEFAULT '0',`today_coin_balance` int(10) NOT NULL DEFAULT '0',`history_coin_balance` int(10) NOT NULL DEFAULT '0',primary key(ID))"%tabletime
sql="CREATE TABLE IF NOT EXISTS `INDIVIDUALTRANSACTIONS_%s` like INDIVIDUALTRANSACTIONS_SAMPLE"%tabletime
db_conn.query(sql)
#多次执行历史值判断
sql ="SELECT userid,today_point_consume,today_coin_balance from INDIVIDUALTRANSACTIONS_%s"%tabletime
db_cursor.execute(sql)
while(True):
data=db_cursor.fetchone()
if(data == None):
break
db_conn.query("update USERCONSUMEHISTORY set all_consume_point=all_consume_point-%d where userid=%d"%(int(data[1]),int(data[0])))
db_conn.query("update USERCONSUMEHISTORY set all_coin=all_coin-%d where userid=%d"%(int(data[2]),int(data[0])))
#清空当天
db_conn.query("delete from INDIVIDUALTRANSACTIONS_%s"%tabletime)
#个人充值点数
sql ="SELECT DISTINCT userid from TRANSACTIONDETAILS_%s"%tabletime
db_cursor.execute(sql)
userlist=[]
while(True):
temp=db_cursor.fetchone()
if(temp == None):
break
userlist.append(int(temp[0]))
for user in userlist:
sql ="SELECT point_add,point_reduce,coin_add,coin_reduce from TRANSACTIONDETAILS_%s where userid=%d"%(tabletime,user)
userchargeinfo={}
userchargeinfo['point_add']=0
userchargeinfo['point_reduce']=0
userchargeinfo['coin_add']=0
userchargeinfo['coin_reduce']=0
db_cursor.execute(sql)
while(True):
temp=db_cursor.fetchone()
if(temp == None):
break
userchargeinfo['point_add'] += int(temp[0])
userchargeinfo['point_reduce']+= int(temp[1])
userchargeinfo['coin_add'] +=int(temp[2])
userchargeinfo['coin_reduce']+=int(temp[3])
userchargeinfo['today_coin_balance']= userchargeinfo['coin_add']-userchargeinfo['coin_reduce']
sql ="SELECT all_consume_point,all_coin from USERCONSUMEHISTORY where userid=%d"%user
db_cursor.execute(sql)
temp01=db_cursor.fetchone()
if(temp01 != None):
userchargeinfo['history_consume_point']= userchargeinfo['point_reduce']+int(temp01[0])
userchargeinfo['history_coin_balance'] = userchargeinfo['today_coin_balance']+int(temp01[1])
db_conn.query("update USERCONSUMEHISTORY set all_consume_point=%d,all_coin=%d where userid=%d"%(userchargeinfo['history_consume_point'],userchargeinfo['history_coin_balance'],user))
else:
userchargeinfo['history_consume_point']=userchargeinfo['point_reduce']
userchargeinfo['history_coin_balance']= userchargeinfo['today_coin_balance']
db_conn.query("insert into USERCONSUMEHISTORY(userid,all_consume_point,all_coin) values(%d,%d,%d)"%(user,userchargeinfo['history_consume_point'],userchargeinfo['history_coin_balance']))
db_conn.query("insert into INDIVIDUALTRANSACTIONS_%s(userid,today_point_add,today_point_consume,history_consume_point,today_exchange_coin,today_consume_coin,today_coin_balance,history_coin_balance) values(%d,%d,%d,%d,%d,%d,%d,%d)"%(tabletime,user,userchargeinfo['point_add'],userchargeinfo['point_reduce'],userchargeinfo['history_consume_point'],userchargeinfo['coin_add'],userchargeinfo['coin_reduce'],userchargeinfo['today_coin_balance'],userchargeinfo['history_coin_balance']))
db_conn.commit()
db_cursor.close()
db_conn.close()
main()
#if __name__ == "__main__":
# main()
cat specialflowerdetails.py
#!/usr/bin/env python
#-*-coding:utf-8-*-
#特殊物品明细
import MySQLdb
import os, sys, re,string
import time, tarfile,getopt
optmap = {
'dbuser' : 'haoren',
'dbpass' : '123456789',
'dbhost' : '172.10.1.103',
'dbport' : 3306,
'dbname' : 'MGDB'
}
def get_files(dir, pattern):
res_file_list =[]
if os.path.exists(dir):
cur_file_list = os.listdir(dir)
for file_name in cur_file_list:
if re.search(pattern, file_name):
res_file_list.append(file_name)
return res_file_list
else:
return 'no'
def main():
cur_day = time.strftime("%Y%m%d", time.localtime(time.time()-86400))
opts, args = getopt.getopt(sys.argv[1:], 'd:')
for op, value in opts:
if op == '-d':
m = re.search('[0-9]{8}', value)
if m:
cur_day = value
else:
print "请输入8位日期(比如:20130215)"
return 'no'
log_day = time.strftime('%y%m%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
fmt_day = time.strftime('%Y-%m-%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
print '物品明细统计日期:',fmt_day
#log_day = time.strftime("%y%m%d", time.localtime(time.time()-86400))
dirname="/home/haoren/logdir/%s_138"%log_day
print dirname
#log_day = time.strftime("%y%m%d", time.localtime(time.time()-86400))
dirname1="/home/haoren/logdir/%s_139"%log_day
print dirname1
db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost'], port=optmap['dbport'], db=optmap['dbname'])
db_cursor=db_conn.cursor()
db_conn.query("use %s"%optmap['dbname'])
tabletime = time.strftime("%Y%m%d", time.localtime(time.mktime(time.strptime(cur_day, "%Y%m%d"))))
#sql="CREATE TABLE IF NOT EXISTS `SPECIALFLOWERHANDSELDETAILS_%s` (`ID` int(10) unsigned NOT NULL auto_increment,`occur_time` varchar(24) NOT NULL DEFAULT '', `userid` int(10) NOT NULL DEFAULT '0',`singer` int(10) NOT NULL DEFAULT '0',`flowernum` int(10) NOT NULL DEFAULT '0',primary key(ID))"%tabletime
sql="CREATE TABLE IF NOT EXISTS `SPECIALFLOWERHANDSELDETAILS_%s` like SPECIALFLOWERHANDSELDETAILS_SAMPLE"%tabletime
db_conn.query(sql)
db_conn.query("delete from SPECIALFLOWERHANDSELDETAILS_%s"%tabletime)
if os.path.exists("/tmp/specialflower.txt"):
os.system("rm -f /tmp/specialflower.txt")
#dirname="/home/haoren/log/"
#dirname="/tmp/"
file_list2=get_files(dirname,'flowerserver')
for file2 in file_list2:
command = "cat %s/%s | awk '/特殊物品/'>> /tmp/specialflower.txt"%(dirname,file2)
os.system(command)
file_list3=get_files(dirname1,'flowerserver')
for file3 in file_list3:
command = "cat %s/%s | awk '/特殊物品/'>> /tmp/specialflower.txt"%(dirname1,file3)
os.system(command)
#特殊物品
filename='/tmp/specialflower.txt'
record = {}
a_file = open(filename, 'r')
#130307-16:13:43 Show[980] TRACE: [特殊物品]送花者:21001435,接受者:21000127,物品:999
for a_line in a_file.readlines():
m = re.search("^(\S+) FlowerServer\[\d+\] TRACE: \[特殊物品\]送花者:(\d+),接受者:(\d+),物品:(\d+)", a_line)
if m:
db_conn.query("insert into SPECIALFLOWERHANDSELDETAILS_%s(occur_time,userid,singer,flowernum) values('%s',%d,%d,%d)"%(tabletime,str(m.group(1)),int(m.group(2)),int(m.group(3)),int(m.group(4))))
a_file.close()
db_conn.commit()
db_cursor.close()
db_conn.close()
main()
#if __name__ == "__main__":
# main()
cat specialflowerforsender.py
#!/usr/bin/env python
#-*-coding:utf-8-*-
#特殊物品送花者
import MySQLdb
import os, sys, re,string
import time, tarfile,getopt
optmap = {
'dbuser' : 'haoren',
'dbpass' : '123456789',
'dbhost' : '172.10.1.103',
'dbport' : 3306,
'dbname' : 'MGDB'
}
def main():
cur_day = time.strftime("%Y%m%d", time.localtime(time.time()-86400))
opts, args = getopt.getopt(sys.argv[1:], 'd:')
for op, value in opts:
if op == '-d':
m = re.search('[0-9]{8}', value)
if m:
cur_day = value
else:
print "请输入8位日期(比如:20130215)"
return 'no'
fmt_day = time.strftime('%Y-%m-%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
print '送花者统计日期:',fmt_day
db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost'], port=optmap['dbport'], db=optmap['dbname'])
db_cursor=db_conn.cursor()
db_conn.query("use %s"%optmap['dbname'])
sql="CREATE TABLE IF NOT EXISTS `SPECIALFLOWERSENDERHISTORY` (`userid` int(10) NOT NULL DEFAULT '0',`all_history_bunch` int(10) NOT NULL DEFAULT '0',`all_history_flower` int(10) NOT NULL DEFAULT '0')"
db_conn.query(sql)
tabletime = time.strftime("%Y%m%d", time.localtime(time.mktime(time.strptime(cur_day, "%Y%m%d"))))
#sql="CREATE TABLE IF NOT EXISTS `SPECIALFLOWERHANDSELFORSENDER_%s` (`ID` int(10) unsigned NOT NULL auto_increment,`userid` int(10) NOT NULL DEFAULT '0',`num_99` int(10) NOT NULL DEFAULT '0',`num_365` int(10) NOT NULL DEFAULT '0',`num_520` int(10) NOT NULL DEFAULT '0',`num_999` int(10) NOT NULL DEFAULT '0',`num_all` int(10) NOT NULL DEFAULT '0',`all_flower_num` int(10) NOT NULL DEFAULT '0',`all_history_bunch` int(10) NOT NULL DEFAULT '0',`all_history_flower` int(10) NOT NULL DEFAULT '0',primary key(ID))"%tabletime
sql="CREATE TABLE IF NOT EXISTS `SPECIALFLOWERHANDSELFORSENDER_%s` like SPECIALFLOWERHANDSELFORSENDER_SAMPLE"%tabletime
db_conn.query(sql)
#多次执行需回退之前执行的历史记录
sql ="SELECT userid,num_all,all_flower_num from SPECIALFLOWERHANDSELFORSENDER_%s"%tabletime
db_cursor.execute(sql)
while(True):
data=db_cursor.fetchone()
if(data == None):
break
db_conn.query("update SPECIALFLOWERSENDERHISTORY set all_history_bunch=all_history_bunch-%d where userid=%d"%(int(data[1]),int(data[0])))
db_conn.query("update SPECIALFLOWERSENDERHISTORY set all_history_flower=all_history_flower-%d where userid=%d"%(int(data[2]),int(data[0])))
#清空当天
db_conn.query("delete from SPECIALFLOWERHANDSELFORSENDER_%s"%tabletime)
sql ="SELECT DISTINCT userid from SPECIALFLOWERHANDSELDETAILS_%s "%tabletime
db_cursor.execute(sql)
userlist=[]
while(True):
temp=db_cursor.fetchone()
if(temp == None):
break
userlist.append(int(temp[0]))
for user in userlist:
flower={}
sql ="SELECT * from SPECIALFLOWERHANDSELDETAILS_%s where userid=%s and flowernum=999"%(tabletime,user)
db_cursor.execute(sql)
flower['999'] = db_cursor.rowcount
sql ="SELECT * from SPECIALFLOWERHANDSELDETAILS_%s where userid=%s and flowernum=99"%(tabletime,user)
db_cursor.execute(sql)
flower['99'] = db_cursor.rowcount
sql ="SELECT * from SPECIALFLOWERHANDSELDETAILS_%s where userid=%s and flowernum=365"%(tabletime,user)
db_cursor.execute(sql)
flower['365'] = db_cursor.rowcount
sql ="SELECT * from SPECIALFLOWERHANDSELDETAILS_%s where userid=%s and flowernum=520"%(tabletime,user)
db_cursor.execute(sql)
flower['520'] = db_cursor.rowcount
flower['num_all']= flower['999']+flower['99']+flower['365']+flower['520']
flower['all_flower']= flower['999']*999 + flower['99']*99 +flower['365']*365 + flower['520']*520
db_conn.query("insert into SPECIALFLOWERHANDSELFORSENDER_%s (userid,num_99,num_365,num_520,num_999,num_all,all_flower_num)values (%d,%d,%d,%d,%d,%d,%d)"%(tabletime,user,flower['99'],flower['365'],flower['520'],flower['999'],flower['num_all'],flower['all_flower']))
sql ="SELECT all_history_bunch,all_history_flower from SPECIALFLOWERSENDERHISTORY where userid=%d"%user
db_cursor.execute(sql)
temp=db_cursor.fetchone()
if(temp == None):
flower['all_history_bunch']= flower['num_all']
flower['all_history_flower']=flower['all_flower']
db_conn.query(" insert into SPECIALFLOWERSENDERHISTORY(userid,all_history_bunch,all_history_flower)values(%d,%d,%d)"%(user,flower['all_history_bunch'],flower['all_history_flower']))
else:
flower['all_history_bunch']= flower['num_all']+int(temp[0])
flower['all_history_flower']=flower['all_flower']+int(temp[1])
db_conn.query("update SPECIALFLOWERSENDERHISTORY set all_history_bunch= %d,all_history_flower= %d where `userid`= %d"%(flower['all_history_bunch'],flower['all_history_flower'],user))
db_conn.query("update SPECIALFLOWERHANDSELFORSENDER_%s set all_history_bunch= %d,all_history_flower= %d where `userid`= %d"%(tabletime,flower['all_history_bunch'],flower['all_history_flower'],user))
db_conn.commit()
db_cursor.close()
db_conn.close()
main()
#if __name__ == "__main__":
# main()
cat specialflowerforsinger.py
#!/usr/bin/env python
#-*-coding:utf-8-*-
#特殊物品用户
import MySQLdb
import os, sys, re,string
import time, tarfile,getopt
optmap = {
'dbuser' : 'haoren',
'dbpass' : '123456789',
'dbhost' : '172.10.1.103',
'dbport' : 3306,
'dbname' : 'MGDB'
}
def main():
cur_day = time.strftime("%Y%m%d", time.localtime(time.time()-86400))
opts, args = getopt.getopt(sys.argv[1:], 'd:')
for op, value in opts:
if op == '-d':
m = re.search('[0-9]{8}', value)
if m:
cur_day = value
else:
print "请输入8位日期(比如:20130215)"
return 'no'
fmt_day = time.strftime('%Y-%m-%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
print '用户物品统计日期:',fmt_day
db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost'], port=optmap['dbport'], db=optmap['dbname'])
db_cursor=db_conn.cursor()
db_conn.query("use %s"%optmap['dbname'])
sql="CREATE TABLE IF NOT EXISTS `SPECIALFLOWERSINGERHISTORY` (`singer` int(10) NOT NULL DEFAULT '0',`all_history_bunch` int(10) NOT NULL DEFAULT '0',`all_history_flower` int(10) NOT NULL DEFAULT '0')"
db_conn.query(sql)
tabletime = time.strftime("%Y%m%d", time.localtime(time.mktime(time.strptime(cur_day, "%Y%m%d"))))
#sql="CREATE TABLE IF NOT EXISTS `SPECIALFLOWERHANDSELFORSINGER_%s` (`ID` int(10) unsigned NOT NULL auto_increment,`singer` int(10) NOT NULL DEFAULT '0',`num_99` int(10) NOT NULL DEFAULT '0',`num_365` int(10) NOT NULL DEFAULT '0',`num_520` int(10) NOT NULL DEFAULT '0',`num_999` int(10) NOT NULL DEFAULT '0',`num_all` int(10) NOT NULL DEFAULT '0',`all_flower_num` int(10) NOT NULL DEFAULT '0',`all_history_bunch` int(10) NOT NULL DEFAULT '0',`all_history_flower` int(10) NOT NULL DEFAULT '0',primary key(ID))"%tabletime
sql="CREATE TABLE IF NOT EXISTS `SPECIALFLOWERHANDSELFORSINGER_%s` like SPECIALFLOWERHANDSELFORSINGER_SAMPLE"%tabletime
db_conn.query(sql)
#多次执行回退历史
sql ="SELECT singer,num_all,all_flower_num from SPECIALFLOWERHANDSELFORSINGER_%s"%tabletime
db_cursor.execute(sql)
while(True):
data=db_cursor.fetchone()
if(data == None):
break
db_conn.query("update SPECIALFLOWERSINGERHISTORY set all_history_bunch=all_history_bunch-%d where singer=%d"%(int(data[1]),int(data[0])))
db_conn.query("update SPECIALFLOWERSINGERHISTORY set all_history_flower=all_history_flower-%d where singer=%d"%(int(data[2]),int(data[0])))
#清空当天
db_conn.query("delete from SPECIALFLOWERHANDSELFORSINGER_%s"%tabletime)
sql ="SELECT DISTINCT singer from SPECIALFLOWERHANDSELDETAILS_%s "%tabletime
db_cursor.execute(sql)
singerlist=[]
while(True):
temp=db_cursor.fetchone()
if(temp == None):
break
singerlist.append(int(temp[0]))
for singer in singerlist:
flower={}
sql ="SELECT * from SPECIALFLOWERHANDSELDETAILS_%s where singer=%s and flowernum=999"%(tabletime,singer)
db_cursor.execute(sql)
flower['999'] = db_cursor.rowcount
sql ="SELECT * from SPECIALFLOWERHANDSELDETAILS_%s where singer=%s and flowernum=99"%(tabletime,singer)
db_cursor.execute(sql)
flower['99'] = db_cursor.rowcount
sql ="SELECT * from SPECIALFLOWERHANDSELDETAILS_%s where singer=%s and flowernum=365"%(tabletime,singer)
db_cursor.execute(sql)
flower['365'] = db_cursor.rowcount
sql ="SELECT * from SPECIALFLOWERHANDSELDETAILS_%s where singer=%s and flowernum=520"%(tabletime,singer)
db_cursor.execute(sql)
flower['520'] = db_cursor.rowcount
flower['num_all']= flower['999']+flower['99']+flower['365']+flower['520']
flower['all_flower']= flower['999']*999 + flower['99']*99 +flower['365']*365 + flower['520']*520
db_conn.query("insert into SPECIALFLOWERHANDSELFORSINGER_%s (singer,num_99,num_365,num_520,num_999,num_all,all_flower_num)values (%d,%d,%d,%d,%d,%d,%d)"%(tabletime,singer,flower['99'],flower['365'],flower['520'],flower['999'],flower['num_all'],flower['all_flower']))
sql ="SELECT all_history_bunch,all_history_flower from SPECIALFLOWERSINGERHISTORY where singer=%d"%singer
db_cursor.execute(sql)
temp=db_cursor.fetchone()
if(temp == None):
flower['all_history_bunch']= flower['num_all']
flower['all_history_flower']=flower['all_flower']
db_conn.query(" insert into SPECIALFLOWERSINGERHISTORY(singer,all_history_bunch,all_history_flower)values(%d,%d,%d)"%(singer,flower['all_history_bunch'],flower['all_history_flower']))
else:
flower['all_history_bunch']= flower['num_all']+int(temp[0])
flower['all_history_flower']=flower['all_flower']+int(temp[1])
db_conn.query("update SPECIALFLOWERSINGERHISTORY set all_history_bunch= %d,all_history_flower= %d where `singer`= %d"%(flower['all_history_bunch'],flower['all_history_flower'],singer))
db_conn.query("update SPECIALFLOWERHANDSELFORSINGER_%s set all_history_bunch= %d,all_history_flower= %d where `singer`= %d"%(tabletime,flower['all_history_bunch'],flower['all_history_flower'],singer))
db_conn.commit()
db_cursor.close()
db_conn.close()
main()
#if __name__ == "__main__":
# main()
cat vipuserflowermonthlyex.py
#!/usr/bin/env python
#-*-coding:utf-8-*-
#会员物品库存统计
import MySQLdb
import os, sys, re, string
import time, getopt
optmap = {
'dbuser' : 'haoren',
'dbpass' : '123456789',
'dbhost' : '172.10.1.104',
'dbhost_gm' : '172.10.1.103',
'dbport' : 3306,
'dbname' : 'MIDB',
'dbname_gm' : 'MGDB'
}
def main():
one_day = time.strftime("%Y%m%d", time.localtime(time.time() - 24*60*60))
opts, args = getopt.getopt(sys.argv[1:], 'd:')
for op, value in opts:
if op == '-d':
m = re.search('[0-9]{8}', value)
if m:
one_day = value
else:
print "请输入8位日期(比如:20130215)"
return 'no'
print "正在统计会员物品库存(%s)..." %one_day
db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost'], port=optmap['dbport'], db=optmap['dbname'])
db_conn.query("use %s" %optmap['dbname'])
db_cursor = db_conn.cursor()
vip_user_list = {}
for i in range(10):
sql = "select USERID, VIPSTATE from VIPUSER%s" %i
print sql
db_cursor.execute(sql)
db_rows = db_cursor.fetchall()
for USERID, VIPSTATE in db_rows:
vip_user_list[USERID] = VIPSTATE
vip_user_flower_list = {}
for i in range(10):
sql = "select USERID, FLOWER from VIPUSERFLOWER%s" %i
print sql
db_cursor.execute(sql)
db_rows = db_cursor.fetchall()
for USERID, FLOWER in db_rows:
vip_user_flower_list[USERID] = FLOWER
vip_state_flower_list = {}
vip_state_flower_list[1] = 0;
vip_state_flower_list[2] = 0;
vip_state_flower_list[3] = 0;
for key in vip_user_list:
if key in vip_user_flower_list:
if vip_user_list[key] in vip_state_flower_list:
vip_state_flower_list[vip_user_list[key]] += vip_user_flower_list[key]
for key in vip_state_flower_list:
print key, vip_state_flower_list[key]
db_cursor.close()
db_conn.close()
db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost_gm'], port=optmap['dbport'], db=optmap['dbname_gm'])
db_conn.query("use %s" %optmap['dbname_gm'])
db_cursor = db_conn.cursor()
dword_time = time.mktime(time.strptime(one_day, '%Y%m%d'))
sql = "update VIPUSERFLOWERMONTHLY set year_flower_left_num=%d, month_flower_left_num=%d, week_flower_left_num=%d where count_time='%d'" %(vip_state_flower_list[3], vip_state_flower_list[2], vip_state_flower_list[1], dword_time)
print sql
db_conn.query(sql)
db_conn.commit()
db_cursor.close()
db_conn.close()
main()
#if __name__ == "__main__":
# main()
cat singergrowthdaily.py
#!/usr/bin/env python
#-*-coding:utf-8-*-
#用户经验值月报
import MySQLdb
import os, sys, re,string
import time, tarfile,getopt
optmap = {
'dbuser' : 'haoren',
'dbpass' : '123456789',
'dbhost' : '172.10.1.104',
'dbhost_gm' : '172.10.1.103',
'dbport' : 3306,
'dbname' : 'MIDB',
'dbname_gm' : 'MGDB'
}
def get_files(dir, pattern):
res_file_list =[]
if os.path.exists(dir):
cur_file_list = os.listdir(dir)
for file_name in cur_file_list:
if re.search(pattern, file_name):
res_file_list.append(file_name)
return res_file_list
else:
return 'no'
def main():
# 先取MIDB中用户等级 成长值数据
db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost'], port=optmap['dbport'], db=optmap['dbname'])
db_conn.query("use %s" %optmap['dbname'])
db_cursor = db_conn.cursor()
singerlevel_dict = {}
singergrowth_dict = {}
for i in range(10):
sql ="SELECT ID, SINGERLEVEL, SINGERGROWTH from SINGERSHOW%s"%i
print sql
db_cursor.execute(sql)
db_rows = db_cursor.fetchall()
for ID, SINGERLEVEL, SINGERGROWTH in db_rows:
singerlevel_dict[ID] = SINGERLEVEL
singergrowth_dict[ID] = SINGERGROWTH
db_conn.commit()
db_cursor.close()
db_conn.close()
cur_day = time.strftime("%Y%m%d", time.localtime(time.time()-86400))
opts, args = getopt.getopt(sys.argv[1:], 'd:')
for op, value in opts:
if op == '-d':
m = re.search('[0-9]{8}', value)
if m:
cur_day = value
else:
print "请输入8位日期(比如:20130215)"
return 'no'
dword_time = time.mktime(time.strptime(cur_day, '%Y%m%d'))
fmt_day = time.strftime('%Y-%m-%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
print '用户经验日报统计日期:',fmt_day
#统计日志中数据
log_day = time.strftime("%y%m%d", time.localtime(time.time()-86400))
dirname="/home/haoren/logdir/%s_138/"%log_day
print '日志路径',dirname
log_day = time.strftime("%y%m%d", time.localtime(time.time()-86400))
dirname1="/home/haoren/logdir/%s_139/"%log_day
print '日志路径',dirname1
if os.path.exists("/tmp/singergrowth.txt"):
os.system("rm -f /tmp/singergrowth.txt")
file_list = get_files(dirname,'flowerserver')
for file in file_list:
command = "cat %s/%s | awk '/singer统计/'>> /tmp/singergrowth.txt"%(dirname,file)
os.system(command)
file_list = get_files(dirname1,'flowerserver')
for file in file_list:
command = "cat %s/%s | awk '/singer统计/'>> /tmp/singergrowth.txt"%(dirname1,file)
os.system(command)
#成长值记录
filename='/tmp/singergrowth.txt'
a_file = open(filename, 'r')
flowergrowth_dict = {}
candrawgrowth_dict = {}
drawedgrowth_dict = {}
for a_line in a_file.readlines():
m = re.search("^\S+ FlowerServer\[\d+\] INFO: \[singer统计\]用户\((\d+)\)收到物品\(\d+\)朵,获得成长值\((\d+)\),当前总成长值为\(\d+\)", a_line)
if m:
if (int(m.group(1)) in flowergrowth_dict):
flowergrowth_dict[int(m.group(1))] += int(m.group(2))
else:
flowergrowth_dict[int(m.group(1))] = int(m.group(2))
if (int(m.group(1)) not in candrawgrowth_dict):
candrawgrowth_dict[int(m.group(1))] = 0
if (int(m.group(1)) not in drawedgrowth_dict):
drawedgrowth_dict[int(m.group(1))] = 0
#130625-17:47:21 FlowerServer[13500] INFO: [singer统计]用户(21002047)物品达到(198)朵可以领取每日成长值(100)
m = re.search("^\S+ FlowerServer\[\d+\] INFO: \[singer统计\]用户\((\d+)\)物品达到\(\d+\)朵可以领取每日成长值\((\d+)\)", a_line)
if m:
#print int(m.group(1)),int(m.group(2))
if (int(m.group(1)) in candrawgrowth_dict):
candrawgrowth_dict[int(m.group(1))] += int(m.group(2))
else:
candrawgrowth_dict[int(m.group(1))] = int(m.group(2))
if (int(m.group(1)) not in flowergrowth_dict):
flowergrowth_dict[int(m.group(1))] = 0
if (int(m.group(1)) not in drawedgrowth_dict):
drawedgrowth_dict[int(m.group(1))] = 0
#130625-17:47:24 FlowerServer[13500] INFO: [singer统计]用户(21002047)用户等级(7)成长值(315), 成功领取每日成长值(100)
m = re.search("^\S+ FlowerServer\[\d+\] INFO: \[singer统计\]用户\((\d+)\)用户等级\(\d+\)成长值\(\d+\), 成功领取每日成长值\((\d+)\)", a_line)
if m:
#print int(m.group(1)),int(m.group(2))
if (int(m.group(1)) in drawedgrowth_dict):
drawedgrowth_dict[int(m.group(1))] += int(m.group(2))
else:
drawedgrowth_dict[int(m.group(1))] = int(m.group(2))
a_file.close()
#创建数据库表
db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost_gm'], port=optmap['dbport'], db=optmap['dbname_gm'])
db_conn.query("use %s" %optmap['dbname_gm'])
db_cursor = db_conn.cursor()
tabletime = time.strftime("%Y%m%d", time.localtime(time.mktime(time.strptime(cur_day, "%Y%m%d"))))
print "数据库表时间后缀%s"%tabletime
sql="CREATE TABLE IF NOT EXISTS `SINGERGROWTHDAILY_%s` like SINGERGROWTHDAILY_SAMPLE"%tabletime
print sql
db_conn.query(sql)
db_conn.query("delete from SINGERGROWTHDAILY_%s"%tabletime)
for key in flowergrowth_dict:
num = key
sql = "insert into SINGERGROWTHDAILY_%s(userid,drawedgrowth,candrawgrowth,growthfromflower,singerlevel,curgrowth) values(%d,%d,%d,%d,%d,%d)"%(tabletime, num, drawedgrowth_dict[num], candrawgrowth_dict[num],flowergrowth_dict[num],singerlevel_dict[num],singergrowth_dict[num])
print sql
db_conn.query(sql)
db_conn.commit()
db_cursor.close()
db_conn.close()
main()
#if __name__ == "__main__":
# main()
cat platformincomemonthly.py
#!/usr/bin/env python
#-*-coding:utf-8-*-
#平台收入月报
#****************************************使用说明****************************************************
# 内网测试通过命令行参数
# -d 指定统计时间
# -p 指定日志所在目录
# -t 指定临时文件存放目录
# 示例如下:
# [meinv@localhost tongji]$ ./newplatformincomemonthly.py -d 20141112 -p /home/meinv/log/ -t /home/meinv/tongji/
# 外网无需加参数,使用默认值
#****************************************使用说明****************************************************
import MySQLdb
import os, sys, re,string
import time, tarfile,getopt
optmap = {
'dbuser' : 'haoren',
'dbpass' : '123456789',
'dbhost' : '172.10.1.103',
'dbport' : 3306,
'dbname' : 'MGDB'
}
def get_files(dir, pattern):
res_file_list =[]
if os.path.exists(dir):
cur_file_list = os.listdir(dir)
for file_name in cur_file_list:
if re.search(pattern, file_name):
res_file_list.append(file_name)
return res_file_list
else:
return 'no'
def main():
#外网环境默认参数
cur_day = time.strftime("%Y%m%d", time.localtime(time.time()-86400))
log_day = time.strftime('%y%m%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
logdirname = "/home/haoren/logdir/%s_67"%log_day
tmpdirname = "/tmp/"
logname = "billserver"
#内网测试指定参数
opts, args = getopt.getopt(sys.argv[1:], 'd:p:t:')
for op, value in opts:
if op == '-d':
m = re.search('[0-9]{8}', value)
if m:
cur_day = value
log_suffix = time.strftime('%y%m%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
logname = "billserver.log.%s"%log_suffix
log_day = time.strftime('%y%m%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
logdirname = "/home/haoren/logdir/%s_67"%log_day
else:
print "请输入8位日期(比如:20130215)"
return 'no'
elif op == '-p':
logdirname = str(value)
elif op == '-t':
tmpdirname = str(value)
fmt_day = time.strftime('%Y-%m-%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
d_time = time.mktime(time.strptime(fmt_day,'%Y-%m-%d'))
print '统计日期:',fmt_day
print '日志名称:',logname
print '日志路径:',logdirname
print '临时文本:',tmpdirname
#用户收入
if os.path.exists("%splatformincome.txt"%tmpdirname):
os.system("rm -f %splatformincome.txt"%tmpdirname)
#提现统计
if os.path.exists("%swithdraw.txt"%tmpdirname):
os.system("rm -f %swithdraw.txt"%tmpdirname)
file_list2=get_files(logdirname, logname)
for file2 in file_list2:
command = "cat %s/%s | awk '/物品统计/'>> %splatformincome.txt"%(logdirname,file2,tmpdirname)
os.system(command)
command = "cat %s/%s | awk '/提现统计/'>> %swithdraw.txt"%(logdirname,file2,tmpdirname)
os.system(command)
#用户收入
filename='%splatformincome.txt'%tmpdirname
a_file = open(filename, 'r')
#用户消耗用户总人民币
record={}
#物品
props = {}
#送物品人
people = {}
#130815-15:01:06 Bill[990] INFO: [物品统计]渠道(210043)等级(9)用户(21000162)赠送(1)个物品(3)给用户(21000264),用户等级(1),认证(0), 消耗人民币(10), 用户获得人民币(470), 渠道获得人民币(30)
for a_line in a_file.readlines():
m = re.search("^(\S+) Bill\[\d+\] INFO: \[物品统计\]渠道\((\d+)\)等级\((\d+)\)用户\((\d+)\)赠送\((\d+)\)个物品\((\d+)\)给用户\((\d+)\),用户等级\((\d+)\),认证\((\d+)\), 消耗人民币\((\d+)\), 用户获得人民币\((\d+)\), 渠道获得人民币\((\d+)\)", a_line)
if m:
userid = int(m.group(4))
propnum = int(m.group(5))
propid = int(m.group(6))
coin = int(m.group(10))
singergold = int(m.group(11))
channelgold = int(m.group(12))
if (propid in props):
props[propid]['allcoin'] += coin #总人民币
props[propid]['allgold'] = props[propid]['allgold'] + singergold + channelgold #总人民币
props[propid]['num'] += propnum
else:
props[propid] = {}
props[propid]['allcoin'] = coin
props[propid]['allgold'] = singergold + channelgold
props[propid]['num'] = propnum
if(userid not in people): #送物品人数
people[userid] = 1
#当日消耗人民币
totalgold = 0
for key in props:
totalgold += props[key]['allgold']
print '物品Id:', key
print '物品收入:',props[key]['allcoin']
print '人民币产出:',props[key]['allgold']
print '物品数量:',props[key]['num']
print '赠送物品用户:',len(people)
a_file.close()
#提现统计
filename='%swithdraw.txt'%tmpdirname
a_file = open(filename, 'r')
#用户总人民币
record['withdraw'] = 0
record['cash'] = 0
#130816-17:22:14 Bill[990] INFO: [提现统计]用户(21001359)用户等级(4)认证渠道(0)渠道等级(0)提现(121)元消耗人民币(50), 剩余人民币(100)
for a_line in a_file.readlines():
m = re.search("^(\S+) Bill\[\d+\] INFO: \[提现统计\]用户\((\d+)\)用户等级\((\d+)\)认证渠道\((\d+)\)渠道等级\((\d+)\)提现\((\d+)\)元消耗人民币\((\d+)\), 剩余人民币\((\d+)\)", a_line)
if m:
record['withdraw'] += int(m.group(7))
record['cash'] += int(m.group(6))
print'用户提现人民币:%u'%record['withdraw']
print'用户提现人民币:%u'%record['cash']
a_file.close()
print '今日结余:%d'%(totalgold-record['withdraw'])
db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost'], port=optmap['dbport'], db=optmap['dbname'])
db_cursor=db_conn.cursor()
db_conn.query("use %s"%optmap['dbname'])
d_time = time.mktime(time.strptime(cur_day,'%Y%m%d'))
last_day = d_time-86400
db_conn.query("delete from PLATFORMINCOMEMONTHLY where TIME=%u"%d_time)
sql ="SELECT CURGOLD from PLATFORMINCOMEMONTHLY where TIME=%u limit 1"%last_day
last_day_curgold = 0
db_cursor.execute(sql)
temp=db_cursor.fetchone()
if(temp != None):
last_day_curgold = int(temp[0])
else:
sql ="SELECT CURGOLD from ITEMEARNINGMONTHLY where TIME=%u"%last_day
db_cursor.execute(sql)
temp=db_cursor.fetchone()
if(temp != None):
last_day_curgold = int(temp[0])
print '昨天:%d 人民币结余:%d'%(last_day,last_day_curgold)
record['curgold']= last_day_curgold + totalgold -record['withdraw']
print '平台累加人民币结余:',record['curgold']
for kitem in props:
db_conn.query("insert into PLATFORMINCOMEMONTHLY(TIME,CONSUMEITEMTOTALCOIN,ADDGOLD,CURGOLD,SINGERCASH,SINGERCONSUMEGOLD,PRESENTUSERNUM,ITEMID,ITEMNUM) values(%d,%d,%d,%d,%d,%d,%d,%d,%d)"%(d_time, props[kitem]['allcoin'],props[kitem]['allgold'],record['curgold'],record['cash'],record['withdraw'],len(people),int(kitem), int(props[kitem]['num'])))
db_conn.commit()
db_cursor.close()
db_conn.close()
main()
#if __name__ == "__main__":
# main()
cat racingincomemonthly.py
#!/usr/bin/env python
#-*-coding:utf-8-*-
#购物平台赛车日报
#****************************************使用说明****************************************************
# 内网测试通过命令行参数
# -d 指定统计时间
# 示例如下:
# [meinv@localhost tongji]$ ./racingincomemonthly.py -d 20141112
# 外网无需加参数,使用默认值
#****************************************使用说明****************************************************
import MySQLdb
import os, sys, re,string
import time, tarfile,getopt
#import argparse
optmap = {
'dbuser' : 'haoren',
'dbpass' : '123456789',
'dbhost' : '172.10.1.103',
'dbport' : 3306,
'dbname' : 'MGDB'
}
def get_files(dir, pattern):
res_file_list =[]
if os.path.exists(dir):
cur_file_list = os.listdir(dir)
cur_file_list.sort()
for file_name in cur_file_list:
if re.search(pattern, file_name):
res_file_list.append(file_name)
return res_file_list
else:
return 'no'
def main():
#外网环境默认参数
cur_day = time.strftime("%Y%m%d", time.localtime(time.time()-86400))
tmpdirname = "/tmp/"
logname = "billserver"
#内网测试指定参数
opts, args = getopt.getopt(sys.argv[1:], 'd:p:t:')
for op, value in opts:
if op == '-d':
m = re.search('[0-9]{8}', value)
if m:
cur_day = value
log_suffix = time.strftime('%y%m%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
logname = "billserver.log"
else:
print "请输入8位日期(比如:20130215)"
return 'no'
log_day = time.strftime('%y%m%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
logdirname = "/home/haoren/logdir/%s_67"%log_day
fmt_day = time.strftime('%Y-%m-%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
d_time = time.mktime(time.strptime(fmt_day,'%Y-%m-%d'))
print '统计日期:',fmt_day
print '日志名称:',logname
print '日志路径:',logdirname
print '临时文本:',tmpdirname
#赛车收入
if os.path.exists("%sracingincome.txt"%tmpdirname):
os.system("rm -f %sracingincome.txt"%tmpdirname)
file_list1=get_files(logdirname, logname)
for file1 in file_list1:
command = "cat %s/%s | awk '/购物平台赛车/' >> %sracingincome.txt"%(logdirname,file1,tmpdirname)
os.system(command)
#赛车收入
filename='%sracingincome.txt'%tmpdirname
a_file = open(filename, 'r')
#赛车消耗用户总人民币
allcoin = 0
#赛车购物者赢取人民币
playerwin = 0
#参与人数
playernum = 0
#机器人数
robotnum = 0
#下注次数
betnum = 0
#中奖次数
winnum = 0
#参与用户
userlist = []
for a_line in a_file.readlines():
#150226-05:11:23 Bill[990] INFO: [购物平台赛车]用户(21235)押注,扣除人民币(1000)成功
m = re.search("^(\S+) Bill\[\d+\] INFO: \[购物平台赛车]用户\((\d+)\)押注,扣除人民币\((\d+)\)成功", a_line)
if m:
allcoin += int(m.group(3))
betnum += 1
userid = int(m.group(2))
#参与用户列表
if (userid not in userlist):
userlist.append(userid)
playernum += 1
#150226-05:17:22 Bill[990] INFO: [购物平台赛车]用户(21235)增加人民币(10)成功
m1 = re.search("^(\S+) Bill\[\d+\] INFO: \[购物平台赛车]用户\((\d+)\)增加人民币\((\d+)\)成功", a_line)
if m1:
playerwin += int(m1.group(3))
winnum += 1
print '总金额(人民币):',allcoin/100
print '购物者赢的人民币:',playerwin/100
print '官方赢的人民币:',(allcoin-playerwin)/100
print '参与人数:',playernum
print '用户列表:',len(userlist)
print '下注次数:',betnum
print '中奖次数:',winnum
a_file.close()
db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost'], port=optmap['dbport'], db=optmap['dbname'])
db_cursor=db_conn.cursor()
db_conn.query("use %s"%optmap['dbname'])
d_time = time.mktime(time.strptime(cur_day,'%Y%m%d'))
db_conn.query("delete from RACINGINCOMEMONTHLY where TIME=%u"%d_time)
db_conn.query("insert into RACINGINCOMEMONTHLY(TIME,TOTALCOIN,PLAYERWINCOIN,PLAYERNUM,BETNUM,LUCKYNUM) values(%d,%d,%d,%d,%d,%d)"%(d_time, allcoin, playerwin, playernum, betnum, winnum))
db_conn.commit()
db_cursor.close()
db_conn.close()
main()
#if __name__ == "__main__":
# main()
cat charge.py
#!/usr/bin/env python
#-*-coding:utf-8-*-
#消费相关
import MySQLdb
import os, sys, re,string
import time, tarfile,getopt
optmap = {
'dbuser' : 'haoren',
'dbpass' : '123456789',
'dbhost' : '172.10.1.103',
'dbport' : 3306,
'dbname' : 'MGDB'
}
def get_files(dir, pattern):
res_file_list =[]
if os.path.exists(dir):
cur_file_list = os.listdir(dir)
for file_name in cur_file_list:
if re.search(pattern, file_name):
res_file_list.append(file_name)
return res_file_list
else:
return 'no'
def main():
cur_day = time.strftime("%Y%m%d", time.localtime(time.time()-86400))
opts, args = getopt.getopt(sys.argv[1:], 'd:')
for op, value in opts:
if op == '-d':
m = re.search('[0-9]{8}', value)
if m:
cur_day = value
else:
print "请输入8位日期(比如:20130215)"
return 'no'
fmt_day = time.strftime('%Y-%m-%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
print '消费统计日期:',fmt_day
#log_day = time.strftime("%y%m%d", time.localtime(time.time()-86400))
log_day = time.strftime('%y%m%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
#dirname="/home/haoren/log/%s/"%log_day
#dirname="/home/haoren/log/1/"
dirname="/home/haoren/logdir/%s_67"%log_day
print dirname
#会员消耗点数
if os.path.exists("/tmp/vippoint.txt"):
os.system("rm -f /tmp/vippoint.txt")
#人民币消耗点数
if os.path.exists("/tmp/coinpoint.txt"):
os.system("rm -f /tmp/coinpoint.txt")
#充值
if os.path.exists("/tmp/recharge.txt"):
os.system("rm -f /tmp/recharge.txt")
#人民币消耗
if os.path.exists("/tmp/coinreduce.txt"):
os.system("rm -f /tmp/coinreduce.txt")
#人民币补偿
if os.path.exists("/tmp/coingmadd.txt"):
os.system("rm -f /tmp/coingmadd.txt")
#dirname="/tmp/"
#物品消耗
if os.path.exists("/tmp/props.txt"):
os.system("rm -f /tmp/props.txt")
file_list2=get_files(dirname,'billserver')
for file2 in file_list2:
command = "cat %s/%s | awk '/点数统计/'|awk '/会员消耗点数/'>> /tmp/vippoint.txt"%(dirname,file2)
os.system(command)
command = "cat %s/%s | awk '/点数统计/'|awk '/人民币消耗点数/'>> /tmp/coinpoint.txt"%(dirname,file2)
os.system(command)
command = "cat %s/%s | awk '/点数统计/'|awk '/充值点数/'>> /tmp/recharge.txt"%(dirname,file2)
os.system(command)
command = "cat %s/%s | awk '/人民币统计/'|awk '/会员消耗人民币/'>> /tmp/coinreduce.txt"%(dirname,file2)
os.system(command)
command = "cat %s/%s | awk '/人民币统计/'|awk '/GM增加人民币/'>> /tmp/coingmadd.txt"%(dirname,file2)
os.system(command)
command = "cat %s/%s | awk '/物品统计/'>> /tmp/props.txt"%(dirname,file2)
os.system(command)
#会员消耗点数
filename='/tmp/vippoint.txt'
record = {}
record['vippoint']=0
a_file = open(filename, 'r')
for a_line in a_file.readlines():
m = re.search("^(\S+) Bill\[\d+\] TRACE: \[点数统计\]会员消耗点数,用户:(\d+),点数:(\d+)", a_line)
if m:
vfind = 0
for mykey in record:
if mykey == 'vippoint':
vfind = 1
record[mykey] += int(m.group(3))
if(0==vfind):
record['vippoint'] = int(m.group(3))
print '会员总消耗点数:',record['vippoint']
a_file.close()
#人民币消耗点数 人民币产出
filename='/tmp/coinpoint.txt'
a_file = open(filename, 'r')
record['coinpoint']=0
record['coinexchange']=0
for a_line in a_file.readlines():
m = re.search("^(\S+) Bill\[\d+\] TRACE: \[点数统计\]人民币消耗点数,用户:(\d+),点数:(\d+),产生人民币:(\d+)", a_line)
if m:
cfind = 0
for mykey in record:
if mykey == 'coinpoint':
cfind = 1
record[mykey] += int(m.group(3))
if(0==cfind):
record['coinpoint'] = int(m.group(3))
#兑换的人民币
find1 = 0
for mykey in record:
if mykey == 'coinexchange':
find1 = 1
record[mykey] += int(m.group(4))
if(0==find1):
record['coinexchange'] = int(m.group(4))
print '人民币总消耗点数:',record['coinpoint']
record['allconsumepoint']= record['coinpoint']+record['vippoint']
print '总消耗点数',record['allconsumepoint']
print '兑换产生人民币',record['coinexchange']
a_file.close()
#总充值点数
filename='/tmp/recharge.txt'
a_file = open(filename, 'r')
record['recharge']=0
for a_line in a_file.readlines():
m = re.search("^(\S+) Bill\[\d+\] TRACE: \[点数统计\]充值点数,用户:(\d+),点数:(\d+)", a_line)
if m:
rfind = 0
for mykey in record:
if mykey == 'recharge':
rfind = 1
record[mykey] += int(m.group(3))
if(0==rfind):
record['recharge'] = int(m.group(3))
print '总充值点数:',record['recharge']
a_file.close()
#人民币消耗(会员)
filename='/tmp/coinreduce.txt'
a_file = open(filename, 'r')
record['coinreduce']=0
for a_line in a_file.readlines():
m = re.search("^(\S+) Bill\[\d+\] TRACE: \[人民币统计\]会员消耗人民币,用户:(\d+),人民币:(\d+)", a_line)
if m:
crfind = 0
for mykey in record:
if mykey == 'coinreduce':
crfind = 1
record[mykey] += int(m.group(3))
if(0==crfind):
record['coinreduce'] = int(m.group(3))
print '会员消耗人民币总量:',record['coinreduce']
a_file.close()
#人民币消耗(物品)
filename='/tmp/props.txt'
a_file = open(filename, 'r')
record['coinprops']=0
#130815-15:01:06 Bill[990] INFO: [物品统计]渠道(210043)等级(9)用户(21000162)赠送(1)个物品(3)给用户(21000264),用户等级(1),认证(0), 消耗人民币(10), 用户获得人民币(470), 渠道获得人民币(30)
for a_line in a_file.readlines():
m = re.search("^(\S+) Bill\[\d+\] INFO: \[物品统计\]渠道\((\d+)\)等级\((\d+)\)用户\((\d+)\)赠送\((\d+)\)个物品\((\d+)\)给用户\((\d+)\),用户等级\((\d+)\),认证\((\d+)\), 消耗人民币\((\d+)\), 用户获得人民币\((\d+)\), 渠道获得人民币\((\d+)\)", a_line)
if m:
crfind = 0
for mykey in record:
if mykey == 'coinprops':
crfind = 1
record[mykey] += int(m.group(10))
if(0==crfind):
record['coinprops'] = int(m.group(10))
print '物品消耗人民币总量:',record['coinprops']
a_file.close()
record['allconsumecoin'] = record['coinprops'] + record['coinreduce']
print '人民币消耗总量:',record['allconsumecoin']
#GM增加人民币
filename='/tmp/coingmadd.txt'
a_file = open(filename, 'r')
record['coingmadd']=0
for a_line in a_file.readlines():
m = re.search("^(\S+) Bill\[\d+\] TRACE: \[人民币统计\]GM增加人民币,用户:(\d+),人民币:(\d+)", a_line)
if m:
cafind = 0
for mykey in record:
if mykey == 'coingmadd':
cafind = 1
record[mykey] += int(m.group(3))
if(0==cafind):
record['coingmadd'] = int(m.group(3))
a_file.close()
print '补偿产出人民币总量:',record['coingmadd']
record['cointodaylast'] = record['coinexchange'] - record['coinreduce'] - record['coinprops'] + record['coingmadd']
print '人民币今天结存:',record['cointodaylast']
db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost'], port=optmap['dbport'], db=optmap['dbname'])
db_cursor=db_conn.cursor()
db_conn.query("use %s"%optmap['dbname'])
#先对表初始化
#cur_day = time.strftime("%Y%m%d", time.localtime(time.time()-86400))
#fmt_day = time.strftime('%Y-%m-%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
db_conn.query("delete from TRANSACTIONSUMMARY where tongji_time='%s'"%fmt_day)
db_conn.query("insert into TRANSACTIONSUMMARY (tongji_time) values('%s')"%fmt_day)
db_conn.query("update TRANSACTIONSUMMARY set all_recharge_point=%d,all_consume_point=%d,coin_consume_point=%d,vip_consume_point=%d,gm_add_coin=%d,exchange_add_coin=%d,all_consume_coin=%d,today_balance_coin=%d,VIP_CONSUME_COIN=%d,PROPS_CONSUME_COIN=%d where tongji_time='%s'"%(record['recharge'],record['allconsumepoint'],record['coinpoint'],record['vippoint'],record['coingmadd'],record['coinexchange'],record['allconsumecoin'],record['cointodaylast'],record['coinreduce'],record['coinprops'],fmt_day))
yesterday = time.strftime('%Y%m%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))-86400))
last_day = time.strftime('%Y-%m-%d', time.localtime(time.mktime(time.strptime(yesterday, '%Y%m%d'))))
last_day_coin_last = 0
sql ="SELECT all_balance_coin from TRANSACTIONSUMMARY where tongji_time='%s'"%last_day
db_cursor.execute(sql)
temp=db_cursor.fetchone()
if(temp != None):
last_day_coin_last=int(temp[0])
print '昨天:%s 人民币历史结余:'%last_day,last_day_coin_last
record['coinhistorylast']= last_day_coin_last+record['cointodaylast']
print '人民币历史结余:',record['coinhistorylast']
db_conn.query("update TRANSACTIONSUMMARY set all_balance_coin=%d where tongji_time='%s'"%(record['coinhistorylast'],fmt_day))
db_conn.commit()
#创建交易明细表
tabletime = time.strftime("%Y%m%d", time.localtime(time.mktime(time.strptime(cur_day, "%Y%m%d"))))
sql="CREATE TABLE IF NOT EXISTS `TRANSACTIONDETAILS_%s` like TRANSACTIONDETAILS_SAMPLE"%tabletime
db_conn.query(sql)
db_conn.query("delete from TRANSACTIONDETAILS_%s"%tabletime)
#充值明细
filename='/tmp/recharge.txt'
a_file = open(filename, 'r')
for a_line in a_file.readlines():
m = re.search("^(\S+) Bill\[\d+\] TRACE: \[点数统计\]充值点数,用户:(\d+),点数:(\d+)", a_line)
if m:
db_conn.query("insert into TRANSACTIONDETAILS_%s(userid,occur_time,type,point_add) values(%d,'%s',0,%d)"%(tabletime,int(m.group(2)),str(m.group(1)),int(m.group(3))))
a_file.close()
#点数兑换人民币明细
filename='/tmp/coinpoint.txt'
a_file = open(filename, 'r')
for a_line in a_file.readlines():
m = re.search("^(\S+) Bill\[\d+\] TRACE: \[点数统计\]人民币消耗点数,用户:(\d+),点数:(\d+),产生人民币:(\d+)", a_line)
if m:
db_conn.query("insert into TRANSACTIONDETAILS_%s (userid,occur_time,type,point_reduce,coin_add) values(%d,'%s',1,%d,%d)"%(tabletime,int(m.group(2)),str(m.group(1)),int(m.group(3)),int(m.group(4))))
a_file.close()
#点数兑换会员明细
filename='/tmp/vippoint.txt'
a_file = open(filename, 'r')
for a_line in a_file.readlines():
m = re.search("^(\S+) Bill\[\d+\] TRACE: \[点数统计\]会员消耗点数,用户:(\d+),点数:(\d+)", a_line)
if m:
db_conn.query("insert into TRANSACTIONDETAILS_%s (userid,occur_time,type,point_reduce) values(%d,'%s',2,%d)"%(tabletime,int(m.group(2)),str(m.group(1)),int(m.group(3))))
a_file.close()
#人民币兑换会员明细
filename='/tmp/coinreduce.txt'
a_file = open(filename, 'r')
for a_line in a_file.readlines():
m = re.search("^(\S+) Bill\[\d+\] TRACE: \[人民币统计\]会员消耗人民币,用户:(\d+),人民币:(\d+)", a_line)
if m:
db_conn.query("insert into TRANSACTIONDETAILS_%s (userid,occur_time,type,coin_reduce) values(%d,'%s',3,%d)"%(tabletime,int(m.group(2)),str(m.group(1)),int(m.group(3))))
a_file.close()
#GM增加人民币明细
filename='/tmp/coingmadd.txt'
a_file = open(filename, 'r')
for a_line in a_file.readlines():
m = re.search("^(\S+) Bill\[\d+\] TRACE: \[人民币统计\]GM增加人民币,用户:(\d+),人民币:(\d+)", a_line)
if m:
db_conn.query("insert into TRANSACTIONDETAILS_%s (userid,occur_time,type,coin_add) values(%d,'%s',4,%d)"%(tabletime,int(m.group(2)),str(m.group(1)),int(m.group(3))))
a_file.close()
db_conn.commit()
db_cursor.close()
db_conn.close()
main()
#if __name__ == "__main__":
# main()
cat channelincomeDaily.py
#!/usr/bin/env python
#-*-coding:utf-8-*-
#渠道收入日报
#****************************************使用说明****************************************************
# 内网测试通过命令行参数
# -d 指定统计时间
# -p 指定日志所在目录
# -t 指定临时文件存放目录
# 示例如下:
# [meinv@localhost tongji]$ ./channelincomeDaily.py -d 20141112 -p /home/meinv/log/ -t /home/meinv/tongji/
# 外网无需加参数,使用默认值
#****************************************使用说明****************************************************
import MySQLdb
import os, sys, re,string
import time, tarfile,getopt
optmap = {
'dbuser' : 'haoren',
'dbpass' : '123456789',
'dbhost' : '172.10.1.103',
'dbport' : 3306,
'dbname' : 'MGDB'
}
def get_files(dir, pattern):
res_file_list =[]
if os.path.exists(dir):
cur_file_list = os.listdir(dir)
cur_file_list.sort()
for file_name in cur_file_list:
if re.search(pattern, file_name):
res_file_list.append(file_name)
return res_file_list
else:
return 'no'
def main():
#外网环境默认参数
cur_day = time.strftime("%Y%m%d", time.localtime(time.time()-86400))
log_day = time.strftime('%y%m%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
logdirname = "/home/haoren/logdir/%s_67"%log_day
tmpdirname = "/tmp/"
logname = "billserver"
#内网测试指定参数
opts, args = getopt.getopt(sys.argv[1:], 'd:p:t:')
for op, value in opts:
if op == '-d':
m = re.search('[0-9]{8}', value)
if m:
cur_day = value
print cur_day
log_suffix = time.strftime('%y%m%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
logname = "billserver.log"
log_day = time.strftime('%y%m%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
logdirname = "/home/haoren/logdir/%s_67"%log_day
else:
print "请输入8位日期(比如:20130215)"
return 'no'
elif op == '-p':
logdirname = str(value)
elif op == '-t':
tmpdirname = str(value)
fmt_day = time.strftime('%Y-%m-%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
d_time = time.mktime(time.strptime(fmt_day,'%Y-%m-%d'))
print '统计日期:',fmt_day
print '日志名称:',logname
print '日志路径:',logdirname
print '临时文本:',tmpdirname
#渠道收入
if os.path.exists("%schannelincome.txt"%tmpdirname):
os.system("rm -f %schannelincome.txt"%tmpdirname)
#渠道人民币总量
if os.path.exists("%schannelallgold.txt"%tmpdirname):
os.system("rm -f %schannelallgold.txt"%tmpdirname)
file_list=get_files(logdirname, logname)
for file in file_list:
command = "cat %s/%s | awk '/物品统计/'>> %schannelincome.txt"%(logdirname,file,tmpdirname)
os.system(command)
command = "cat %s/%s | awk '/渠道人民币统计/'>> %schannelallgold.txt"%(logdirname,file,tmpdirname)
os.system(command)
#渠道收入
filename='%schannelincome.txt'%tmpdirname
a_file = open(filename, 'r')
#渠道消耗用户总人民币
allcoin={}
#渠道人民币收入
goldincome={}
#渠道总人民币
channelallgold = {}
#渠道物品
channelprops = {}
#130815-15:01:06 Bill[990] INFO: [物品统计]渠道(210043)等级(9)用户(21000162)赠送(1)个物品(3)给用户(21000264),用户等级(1),认证(0), 消耗人民币(10), 用户获得人民币(470), 渠道获得人民币(30)
for a_line in a_file.readlines():
m = re.search("^(\S+) Bill\[\d+\] INFO: \[物品统计\]渠道\((\d+)\)等级\((\d+)\)用户\((\d+)\)赠送\((\d+)\)个物品\((\d+)\)给用户\((\d+)\),用户等级\((\d+)\),认证\((\d+)\), 消耗人民币\((\d+)\), 用户获得人民币\((\d+)\), 渠道获得人民币\((\d+)\)", a_line)
if m:
channelid = int(m.group(2))
propnum = int(m.group(5))
propid = int(m.group(6))
signflag = int(m.group(9))
coin = int(m.group(10))
gold = int(m.group(12))
#离线用户signflag传入的是渠道号
if (signflag != 0 and signflag != 1):
if (signflag == int(m.group(2))):
signflag = 1
else:
signflag = 0
if (channelid in channelprops):
if (propid in channelprops[channelid]):
channelprops[channelid][propid] += propnum
allcoin[channelid][propid] += coin
goldincome[channelid][propid][signflag] += gold
else:
channelprops[channelid][propid] = propnum
allcoin[channelid][propid] = coin
goldincome[channelid][propid] = {}
goldincome[channelid][propid][0] = 0
goldincome[channelid][propid][1] = 0
goldincome[channelid][propid][signflag] = gold
else:
channelprops[channelid]={}
channelprops[channelid][propid] = propnum
allcoin[channelid] = {}
allcoin[channelid][propid] = coin
goldincome[channelid]={}
goldincome[channelid][propid]={}
goldincome[channelid][propid][0]=0
goldincome[channelid][propid][1]=0
goldincome[channelid][propid][signflag]=int(m.group(12))
for key in channelprops:
print '渠道:',key
a_file.close()
#渠道总人民币统计
#渠道总人民币
filename='%schannelallgold.txt'%tmpdirname
a_file = open(filename, 'r')
#渠道总人民币
allgold={}
#130816-15:28:45 Bill[990] INFO: [渠道人民币统计]渠道(210043)当前人民币(308864653)
for a_line in a_file.readlines():
m = re.search("^(\S+) Bill\[\d+\] INFO: \[渠道人民币统计\]渠道\((\d+)\)当前人民币\((\d+)\)", a_line)
if m:
allgold[int(m.group(2))] = int(m.group(3))
for key in allgold:
print'渠道:%lu,人民币总量:%u'%(key,allgold[key])
a_file.close()
db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost'], port=optmap['dbport'], db=optmap['dbname'])
db_cursor=db_conn.cursor()
db_conn.query("use %s"%optmap['dbname'])
tabletime = time.strftime("%Y%m%d", time.localtime(time.mktime(time.strptime(cur_day, "%Y%m%d"))))
sql="CREATE TABLE IF NOT EXISTS `CHANNELEARNINGDAILY_%s` like CHANNELEARNINGDAILY_SAMPLE"%tabletime
db_conn.query(sql)
db_conn.query("delete from CHANNELEARNINGDAILY_%s"%tabletime)
for key in channelprops:
if(key not in allgold):
allgold[key]=0
for kitem in channelprops[key]:
db_conn.query("insert into CHANNELEARNINGDAILY_%s(CHANNELID,RECVITEMTOTALCOIN,SIGNGOLD,NONSIGNGOLD,CURGOLD,ITEMID,ITEMNUM ) values(%d,%d,%d,%d,%d,%d,%d)"%(tabletime,int(key),int(allcoin[key][kitem]),int(goldincome[key][kitem][1]),int(goldincome[key][kitem][0]),int(allgold[key]),int(kitem),int(channelprops[key][kitem])))
db_conn.commit()
db_cursor.close()
db_conn.close()
main()
#if __name__ == "__main__":
# main()
cat userconsumitemDaily.py
#!/usr/bin/env python
#-*-coding:utf-8-*-
#用户消费物品日报
#****************************************使用说明****************************************************
# 内网测试通过命令行参数
# -d 指定统计时间
# -p 指定日志所在目录
# -t 指定临时文件存放目录
# 示例如下:
# [meinv@localhost tongji]$ ./userconsumitemDaily.py -d 20141112 -p /home/meinv/log/ -t /home/meinv/tongji/
# 外网无需加参数,使用默认值
#****************************************使用说明****************************************************
import MySQLdb
import os, sys, re,string
import time, tarfile,getopt
optmap = {
'dbuser' : 'haoren',
'dbpass' : '123456789',
'dbhost' : '172.10.1.103',
'dbport' : 3306,
'dbname' : 'MGDB'
}
def get_files(dir, pattern):
res_file_list =[]
if os.path.exists(dir):
cur_file_list = os.listdir(dir)
for file_name in cur_file_list:
if re.search(pattern, file_name):
res_file_list.append(file_name)
return res_file_list
else:
return 'no'
def main():
#外网环境默认参数
cur_day = time.strftime("%Y%m%d", time.localtime(time.time()-86400))
log_day = time.strftime('%y%m%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
logdirname = "/home/haoren/logdir/%s_67"%log_day
tmpdirname = "/tmp/"
logname = "billserver"
#内网测试指定参数
opts, args = getopt.getopt(sys.argv[1:], 'd:p:t:')
for op, value in opts:
if op == '-d':
m = re.search('[0-9]{8}', value)
if m:
cur_day = value
log_suffix = time.strftime('%y%m%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
logname = "billserver.log"
log_day = time.strftime('%y%m%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
logdirname = "/home/haoren/logdir/%s_67"%log_day
else:
print "请输入8位日期(比如:20130215)"
return 'no'
elif op == '-p':
logdirname = str(value)
elif op == '-t':
tmpdirname = str(value)
fmt_day = time.strftime('%Y-%m-%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
d_time = time.mktime(time.strptime(fmt_day,'%Y-%m-%d'))
print '统计日期:',fmt_day
print '日志名称:',logname
print '日志路径:',logdirname
print '临时文本:',tmpdirname
#用户物品消费
if os.path.exists("%suserconsumeitem.txt"%tmpdirname):
os.system("rm -f %suserconsumeitem.txt"%tmpdirname)
file_list2=get_files(logdirname,logname)
for file2 in file_list2:
command = "cat %s/%s | awk '/物品统计/'>> %suserconsumeitem.txt"%(logdirname,file2,tmpdirname)
os.system(command)
#用户物品消费
filename='%suserconsumeitem.txt'%tmpdirname
a_file = open(filename, 'r')
#用户购买物品消耗总人民币
allcoin={}
#用户消费物品
userprops = {}
#130815-15:01:06 Bill[990] INFO: [物品统计]渠道(210043)等级(9)用户(21000162)赠送(1)个物品(3)给用户(21000264),用户等级(1),认证(0), 消耗人民币(10), 用户获得人民币(470), 渠道获得人民币(30)
for a_line in a_file.readlines():
m = re.search("^(\S+) Bill\[\d+\] INFO: \[物品统计\]渠道\((\d+)\)等级\((\d+)\)用户\((\d+)\)赠送\((\d+)\)个物品\((\d+)\)给用户\((\d+)\),用户等级\((\d+)\),认证\((\d+)\), 消耗人民币\((\d+)\), 用户获得人民币\((\d+)\), 渠道获得人民币\((\d+)\)", a_line)
if m:
userid = int(m.group(4))
propnum = int(m.group(5))
propid = int(m.group(6))
coin = int(m.group(10))
if (userid in userprops):
if (propid in userprops[userid]):
userprops[userid][propid]['num'] += propnum
userprops[userid][propid]['coin'] += coin
else:
userprops[userid][propid] = {}
userprops[userid][propid]['num'] = propnum
userprops[userid][propid]['coin'] = coin
else:
userprops[userid]={}
userprops[userid][propid] = {}
userprops[userid][propid]['num'] = propnum
userprops[userid][propid]['coin'] = coin
for key in userprops:
print '用户:',key
for prop in userprops[key]:
print '物品id:', prop
print '物品num:', userprops[key][prop]['num']
print '物品消费人民币:', userprops[key][prop]['coin']
a_file.close()
db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost'], port=optmap['dbport'], db=optmap['dbname'])
db_cursor=db_conn.cursor()
db_conn.query("use %s"%optmap['dbname'])
tabletime = time.strftime("%Y%m%d", time.localtime(time.mktime(time.strptime(cur_day, "%Y%m%d"))))
sql="CREATE TABLE IF NOT EXISTS `USERCONSUMEITEMDAILY_%s` like USERCONSUMEITEMDAILY_SAMPLE"%tabletime
db_conn.query(sql)
db_conn.query("delete from USERCONSUMEITEMDAILY_%s"%tabletime)
for key in userprops:
for kitem in userprops[key]:
db_conn.query("insert into USERCONSUMEITEMDAILY_%s(USERID,CONSUMEITEMTOTALCOIN,ITEMID,ITEMNUM) values(%d,%d,%d,%d)"%(tabletime,int(key),int(userprops[key][kitem]['coin']),int(kitem),int(userprops[key][kitem]['num'])))
db_conn.commit()
db_cursor.close()
db_conn.close()
main()
#if __name__ == "__main__":
# main()
cat rewardInfo.py
#!/usr/bin/env python
#-*-coding:utf-8-*-
#分析日志,获得每天用户中奖信息
#每天一张表
import MySQLdb
import os, sys, re,string
import time, tarfile,getopt
import datetime
import operator
import copy
optmap = {
'dbuser' : 'haoren',
'dbpass' : '123456789',
'dbhost' : '172.10.1.104',
'dbhost_gm' : '172.10.1.103',
'dbport' : 3306,
'dbname' : 'MIDB',
'dbname_gm' : 'MGDB'
}
reward = {
'userID':0,
'type':0,
'level':0,
'num':0,
'date':0
}
def get_files(dir, pattern):
res_file_list =[]
if os.path.exists(dir):
cur_file_list = os.listdir(dir)
for file_name in cur_file_list:
if re.search(pattern, file_name):
res_file_list.append(file_name)
return res_file_list
else:
return 'no'
def main():
cur_day = time.strftime("%Y%m%d", time.localtime(time.time()-86400))
log_day = time.strftime('%y%m%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
if len(sys.argv)>1:
cur_day = sys.argv[1]
log_day = sys.argv[1][2:]
dirname = "/home/haoren/logdir/%s_19"%log_day
reward_list = []
for fileName in os.listdir(dirname):
if (fileName.find("loginrewardserver.log") == -1):
continue
a_file = open(dirname+"/"+fileName,'r')
#140522-00:31:16 LoginRewardServer[16600] DEBUG: 用户[54011503]在第[1]关中奖,中奖类型[1],中奖数量[100],是否广播给客户端[0]
for a_line in a_file.readlines():
reward_info = re.search("^(\S+) LoginRewardServer\[\d+\] DEBUG: 用户\[(\d+)\]在第\[(\d+)\]关中奖,中奖类型\[(\d+)\],中奖数量\[(\d+)\],是否广播给客户端\[0\]",a_line)
if reward_info:
reward_ = {}
reward_['userID'] = reward_info.group(2)
reward_['type'] = reward_info.group(4)
reward_['level'] = reward_info.group(3)
reward_['num'] = reward_info.group(5)
reward_['date'] = str("20") + str(reward_info.group(1)[0:2]) + "-" + str(reward_info.group(1)[2:4]) + "-" + str(reward_info.group(1)[4:6]) + " " + str(reward_info.group(1)[7:])
reward_list.append(reward_)
a_file.close()
# for reward in reward_list:
# print "uid:" + reward['userID'] + " type:" + reward['type'] + " level:" + reward['level'] + " num:" + reward['num'] + " date:" + reward['date']
db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost_gm'], port=optmap['dbport'], db=optmap['dbname_gm'])
db_conn.query("use %s" %optmap['dbname_gm'])
db_cursor = db_conn.cursor()
tabletime = time.strftime("%Y%m%d", time.localtime(time.mktime(time.strptime(cur_day, "%Y%m%d"))))
#print "数据库表时间后缀%s"%tabletime
tabletime = cur_day
print '用户中奖信息,统计日期:',tabletime
sql="CREATE TABLE IF NOT EXISTS `REWARDINFO_%s` like REWARDINFO_SAMPLE"%tabletime
#delete
try:
db_conn.query("drop table REWARDINFO_%s"%tabletime)
except:
pass #print "The first statistics."
#create
db_conn.query(sql)
#update yesterday data
total = range(10)
for reward in reward_list:
timeArray = time.strptime(reward['date'],"%Y-%m-%d %H:%M:%S")
timeStamp = int(time.mktime(timeArray))
sql = "insert into REWARDINFO_%s(userID,type,level,num,timestamp)value(%d,%d,%d,%d,%d)"%(tabletime,int(reward['userID']),int(reward['type']),int(reward['level']),int(reward['num']),timeStamp)
db_conn.query(sql)
#update rewardTotal
for i in range(1,10):
if( int(reward['level']) == int(i) ):
total[i] = int(total[i]) + int(reward['num'])
for i in range(1,10):
sql = "insert into SIGNEDCARD(level%d,timestamp)value(%d,%d)"%(int(i),total[i],timeStamp)
db_conn.query(sql)
db_conn.commit()
db_cursor.close()
db_conn.close()
print "SUCCESS."
main()
#if __name__ == "__main__":
# main()
cat channelgrowthdaily.py
#!/usr/bin/env python
#-*-coding:utf-8-*-
#渠道成长值月报
#请勿模仿 小心被误导
import MySQLdb
import os, sys, re,string
import time, tarfile,getopt
optmap = {
'dbuser' : 'haoren',
'dbpass' : '123456789',
'dbhost' : '172.10.1.104',
'dbhost_gm' : '172.10.1.103',
'dbport' : 3306,
'dbname' : 'MIDB',
'dbname_gm' : 'MGDB'
}
def get_files(dir, pattern):
res_file_list =[]
if os.path.exists(dir):
cur_file_list = os.listdir(dir)
for file_name in cur_file_list:
if re.search(pattern, file_name):
res_file_list.append(file_name)
return res_file_list
else:
return 'no'
def main():
# 先取MIDB中渠道等级 成长值数据
db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost'], port=optmap['dbport'], db=optmap['dbname'])
db_conn.query("use %s" %optmap['dbname'])
db_cursor = db_conn.cursor()
channellevel_dict = {}
channelgrowth_dict = {}
for i in range(10):
sql ="SELECT ID, LEVEL, GROWTH from CHANNELGROW%s"%i
print sql
db_cursor.execute(sql)
db_rows = db_cursor.fetchall()
for ID, LEVEL, GROWTH in db_rows:
channellevel_dict[ID] = LEVEL
channelgrowth_dict[ID] = GROWTH
db_conn.commit()
db_cursor.close()
db_conn.close()
cur_day = time.strftime("%Y%m%d", time.localtime(time.time()-86400))
opts, args = getopt.getopt(sys.argv[1:], 'd:')
for op, value in opts:
if op == '-d':
m = re.search('[0-9]{8}', value)
if m:
cur_day = value
else:
print "请输入8位日期(比如:20130215)"
return 'no'
dword_time = time.mktime(time.strptime(cur_day, '%Y%m%d'))
fmt_day = time.strftime('%Y-%m-%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
print '渠道成长值日报统计日期:',fmt_day
#统计日志中数据
log_day = time.strftime('%y%m%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
#log_day = time.strftime("%y%m%d", time.localtime(time.time()-86400))
dirname="/home/haoren/logdir/%s_67/"%log_day
print '日志路径',dirname
#log_day = time.strftime("%y%m%d", time.localtime(time.time()-86400))
dirname1="/home/haoren/logdir/%s_138/"%log_day
print '日志路径',dirname1
#log_day = time.strftime("%y%m%d", time.localtime(time.time()-86400))
dirname2="/home/haoren/logdir/%s_139/"%log_day
print '日志路径',dirname2
if os.path.exists("/tmp/channelgrowth.txt"):
os.system("rm -f /tmp/channelgrowth.txt")
file_list = get_files(dirname1,'flowerserver')
for file in file_list:
command = "cat %s/%s | awk '/channelgrow统计/'>> /tmp/channelgrowth.txt"%(dirname1,file)
os.system(command)
file_list = get_files(dirname2,'flowerserver')
for file in file_list:
command = "cat %s/%s | awk '/channelgrow统计/'>> /tmp/channelgrowth.txt"%(dirname2,file)
os.system(command)
file_list = get_files(dirname,'channelgrowserver')
for file in file_list:
command = "cat %s/%s | awk '/channelgrow统计/'>> /tmp/channelgrowth.txt"%(dirname,file)
os.system(command)
#成长值记录
filename='/tmp/channelgrowth.txt'
a_file = open(filename, 'r')
floweramount_dict = {}
flower999_dict = {}
flower520_dict = {}
flower365_dict = {}
flower99_dict = {}
growthfloweramount_dict = {}
growthonline_dict = {}
growthspecialflower_dict = {}
for a_line in a_file.readlines():
#130719-12:09:44 ChannelGrowServer[14400] INFO: [channelgrow统计]服务器(13500)通知渠道(210018)增加物品(99)
m = re.search("^\S+ ChannelGrowServer\[\d+\] INFO: \[channelgrow统计\]服务器\(\d+\)通知渠道\((\d+)\)增加物品\((\d+)\)", a_line)
if m:
if (int(m.group(1)) in floweramount_dict):
floweramount_dict[int(m.group(1))] += int(m.group(2))
else:
floweramount_dict[int(m.group(1))] = int(m.group(2))
#130719-12:11:01 FlowerServer[13500] INFO: [channelgrow统计]渠道(210018)收到物品(99)朵,获得成长值(1)
m = re.search("^\S+ FlowerServer\[\d+\] INFO: \[channelgrow统计\]渠道\((\d+)\)收到物品\((\d+)\)朵,获得成长值\(\d+\)", a_line)
if m:
if (int(m.group(2)) == 99):
if (int(m.group(1)) in flower99_dict):
flower99_dict[int(m.group(1))] += 1
else:
flower99_dict[int(m.group(1))] = 1
if (int(m.group(2)) == 365):
if (int(m.group(1)) in flower365_dict):
flower365_dict[int(m.group(1))] += 1
else:
flower365_dict[int(m.group(1))] = 1
if (int(m.group(2)) == 520):
if (int(m.group(1)) in flower520_dict):
flower520_dict[int(m.group(1))] += 1
else:
flower520_dict[int(m.group(1))] = 1
if (int(m.group(2)) == 999):
if (int(m.group(1)) in flower999_dict):
flower999_dict[int(m.group(1))] += 1
else:
flower999_dict[int(m.group(1))] = 1
#130718-16:04:05 ChannelGrowServer[14400] INFO: [channelgrow统计]渠道(210018)由于在线人数增加成长值(10)
m = re.search("^\S+ ChannelGrowServer\[\d+\] INFO: \[channelgrow统计\]渠道\((\d+)\)由于在线人数增加成长值\((\d+)\)", a_line)
if m:
#print int(m.group(1)),int(m.group(2))
if (int(m.group(1)) in growthonline_dict):
growthonline_dict[int(m.group(1))] += int(m.group(2))
else:
growthonline_dict[int(m.group(1))] = int(m.group(2))
if (int(m.group(1)) not in floweramount_dict):
floweramount_dict[int(m.group(1))] = 0
#130718-16:04:27 ChannelGrowServer[14400] INFO: [channelgrow统计]渠道(210018)由于特殊物品增加成长值(1)
m = re.search("^\S+ ChannelGrowServer\[\d+\] INFO: \[channelgrow统计\]渠道\((\d+)\)由于特殊物品增加成长值\((\d+)\)", a_line)
if m:
#print int(m.group(1)),int(m.group(2))
if (int(m.group(1)) in growthspecialflower_dict):
growthspecialflower_dict[int(m.group(1))] += int(m.group(2))
else:
growthspecialflower_dict[int(m.group(1))] = int(m.group(2))
#130718-16:05:22 ChannelGrowServer[14400] INFO: [channelgrow统计]渠道(210018)物品总量达到(1890),当前总物品成长值(0), 要增加成长值(10)
m = re.search("^\S+ ChannelGrowServer\[\d+\] INFO: \[channelgrow统计\]渠道\((\d+)\)物品总量达到\(\d+\),当前总物品成长值\(\d+\), 要增加成长值\((\d+)\)", a_line)
if m:
#print int(m.group(1)),int(m.group(2))
if (int(m.group(1)) in growthfloweramount_dict):
growthfloweramount_dict[int(m.group(1))] += int(m.group(2))
else:
growthfloweramount_dict[int(m.group(1))] = int(m.group(2))
a_file.close()
#创建数据库表
db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost_gm'], port=optmap['dbport'], db=optmap['dbname_gm'])
db_conn.query("use %s" %optmap['dbname_gm'])
db_cursor = db_conn.cursor()
tabletime = time.strftime("%Y%m%d", time.localtime(time.mktime(time.strptime(cur_day, "%Y%m%d"))))
print "数据库表时间后缀%s"%tabletime
sql="CREATE TABLE IF NOT EXISTS `CHANNELGROWTHDAILY_%s` like CHANNELGROWTHDAILY_SAMPLE"%tabletime
print sql
db_conn.query(sql)
db_conn.query("delete from CHANNELGROWTHDAILY_%s"%tabletime)
for key in floweramount_dict:
num = key
if (num in channellevel_dict):
channellevel_ = channellevel_dict[num]
else:
channellevel_ = 0;
if (num in channelgrowth_dict):
channelgrowth_ = channelgrowth_dict[num]
else:
channelgrowth_ = 0;
if (num in growthspecialflower_dict):
growthfromspecialflower_ = growthspecialflower_dict[num]
else:
growthfromspecialflower_ = 0;
if (num in growthfloweramount_dict):
growthfromfloweramount_ = growthfloweramount_dict[num]
else:
growthfromfloweramount_ = 0;
if (num in growthonline_dict):
growthfromonlinenum_ = growthonline_dict[num]
else:
growthfromonlinenum_ = 0;
if (num in flower999_dict):
flower999_ = flower999_dict[num]
else:
flower999_ = 0;
if (num in flower520_dict):
flower520_ = flower520_dict[num]
else:
flower520_ = 0;
if (num in flower365_dict):
flower365_ = flower365_dict[num]
else:
flower365_ = 0;
if (num in flower99_dict):
flower99_ = flower99_dict[num]
else:
flower99_ = 0;
sql = "insert into CHANNELGROWTHDAILY_%s(id,growthfromspecialflower,growthfromfloweramount,growthfromonlinenum,flower999,flower520,flower365,flower99,floweramount,level,curgrowth) values(%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d)"%(tabletime, num, growthfromspecialflower_, growthfromfloweramount_,growthfromonlinenum_,flower999_,flower520_,flower365_, flower99_, floweramount_dict[num],channellevel_,channelgrowth_)
print sql
db_conn.query(sql)
db_conn.commit()
db_cursor.close()
db_conn.close()
main()
#if __name__ == "__main__":
# main()
cat familyConsumeDaily.py
#!/usr/bin/env python
#-*-coding:utf-8-*-
#团购消费,集结统计脚本(修改为外网配置后,每天定时执行,统计数据)
import MySQLdb
import os, sys, re,string
import time, tarfile,getopt
optmap = {
'dbuser' : 'haoren',
'dbpass' : '123456789',
'dbhost' : '172.10.1.103',
'dbport' : 3306,
'dbname' : 'MGDB'
}
def get_files(dir, pattern):
res_file_list =[]
if os.path.exists(dir):
cur_file_list = os.listdir(dir)
cur_file_list.sort()
for file_name in cur_file_list:
if re.search(pattern, file_name):
res_file_list.append(file_name)
return res_file_list
else:
return 'no'
def main():
cur_day = time.strftime("%Y%m%d", time.localtime(time.time()-86400))
# cur_day = time.strftime("%Y%m%d", time.localtime(time.time()))
opts, args = getopt.getopt(sys.argv[1:], 'd:')
for op, value in opts:
if op == '-d':
m = re.search('[0-9]{8}', value)
if m:
cur_day = value
else:
print "请输入8位日期(比如:20130215)"
return 'no'
fmt_day = time.strftime('%Y-%m-%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
print '统计日期:',fmt_day
log_day = time.strftime('%y%m%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))
dirname="/home/haoren/logdir/%s_124/"%log_day
print dirname
dirname1="/home/haoren/logdir/%s_26/"%log_day
print dirname1
# 删除存在的临时文件
if os.path.exists("/tmp/familyConsumeDaily.txt"):
os.system("rm -f /tmp/familyConsumeDaily.txt")
if os.path.exists("/tmp/familyGatherDaily.txt"):
os.system("rm -f /tmp/familyGatherDaily.txt")
file_list=get_files(dirname,'groupserver')
for file in file_list:
command = "cat %s/%s | grep 团购集结|grep 发起团购|grep 集结成功>> /tmp/familyGatherDaily.txt"%(dirname,file)
os.system(command)
command = "cat %s/%s | grep 团购消费|grep 同步团购|grep 成员|grep 消费>> /tmp/familyConsumeDaily.txt"%(dirname,file)
os.system(command)
file_list1=get_files(dirname1,'groupserver')
for file1 in file_list1:
command = "cat %s/%s | grep 团购集结|grep 发起团购|grep 集结成功>> /tmp/familyGatherDaily.txt"%(dirname1,file1)
os.system(command)
command = "cat %s/%s | grep 团购消费|grep 同步团购|grep 成员|grep 消费>> /tmp/familyConsumeDaily.txt"%(dirname1,file1)
os.system(command)
#团购消费
filename='/tmp/familyConsumeDaily.txt'
a_file = open(filename, 'r')
#团购消费统计
familyConsume={}
#150215-22:47:18 GROUPSERVER[4401] INFO: [团购消费]同步团购(200105)成员(21001367)消费(2000)
for a_line in a_file.readlines():
m = re.search("^(\S+) GROUPSERVER\[\d+\] INFO: \[团购消费\]同步团购\((\d+)\)成员\((\d+)\)消费\((\d+)\)", a_line)
if(m and int(m.group(2))!=0):
# print m.group(2), m.group(4)
if(familyConsume.has_key(int(m.group(2)))):
familyConsume[int(m.group(2))] += int(m.group(4))
else:
familyConsume[int(m.group(2))] = int(m.group(4))
a_file.close()
#团购集结
filename='/tmp/familyGatherDaily.txt'
a_file = open(filename, 'r')
#团购集结统计
familyGather={}
for a_line in a_file.readlines():
#150117-23:29:23 GROUPSERVER[4400] INFO: [团购集结]用户(%u)发起团购(%u)集结成功,免费
#150117-23:29:23 GROUPSERVER[4400] INFO: [团购集结]用户(%u)发起团购(%u)集结成功,扣费成功
m = re.search("^(\S+) GROUPSERVER\[\d+\] INFO: \[团购集结\]用户\((\d+)\)发起团购\((\d+)\)集结成功", a_line)
if(m):
# print m.group(2), m.group(3)
if(familyGather.has_key(int(m.group(3)))):
familyGather[int(m.group(3))] += 1
else:
familyGather[int(m.group(3))] = 1
a_file.close()
db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost'], port=optmap['dbport'], db=optmap['dbname'])
db_cursor=db_conn.cursor()
db_conn.query("use %s"%optmap['dbname'])
timeday = int(time.mktime(time.strptime(cur_day, "%Y%m%d")))
for key in familyConsume:
# print key, familyConsume[key]
db_conn.query("insert into FAMILY_DAILYCONSUMESTAT(FAMILYID, CONSUME, TIME) values(%d, %d, %d)"%(int(key), int(familyConsume[key]), int(string.atoi(cur_day, 10))))
for key in familyGather:
# print key, familyGather[key]
db_conn.query("insert into FAMILY_DAILYGATHERTIMES(FAMILYID, GATHERTIMES, TIME) values(%d, %d, %d)"%(int(key), int(familyGather[key]), int(string.atoi(cur_day, 10))))
db_conn.commit()
db_cursor.close()
db_conn.close()
main()
阅读(1233) | 评论(0) | 转发(0) |