def get(self): if self.privilege is False: self.write('没有权限') return if not (self.current_user): self.write('请登录') return timenow = datetime.datetime.now() filter_params = dict(start_time=self.get_argument('start_time', ''), end_time=self.get_argument('end_time', ''), order_by=self.get_argument('orderby', '')) server_list = self.get_argument('server_list', '') if server_list: server_list = (server_list.split('|')) elif self.admin_flag is False or self.channel_string: server_list = self.channel_string.split(',') else: server_list = [] filter_params['server_list'] = server_list list_data = yield equipService.GetByFilter(0, 100000, filter_params) if list_data[0] < 1: self.write(dict(code=2, msg="没有数据")) return titles = ['日期', '渠道', '新增设备', '新登设备', '新登账号', '启动设备数', '登录账号'] rows = [','.join(titles)] total_ = yield equipService.total_select(filter_params) _data = dict(d_date='', channel='渠道') if total_: rows.append(','.join([ '', '渠道', str(total_[0].get('new_equipment', 0)), str(total_[0].get('new_login_account', 0)), str(total_[0].get('new_equip_login', 0)), str(total_[0].get('start_equip', 0)), str(total_[0].get('login_account', 0)) ])) for item_data in list_data[1]: rows.append(','.join([ item_data.get('create_time').strftime('%Y/%m/%d'), item_data.get('channel_name', ''), str(item_data.get('new_equipment', 0)), str(item_data.get('new_login_account', 0)), str(item_data.get('new_equip_login', 0)), str(item_data.get('start_equip', 0)), str(item_data.get('login_account', 0)) ])) responseData = '\n'.join(rows).encode() self.set_header( 'Content-Disposition', 'attachment; filename="%s.csv"' % (utils.EncodeURIComponent('新增设备账号') + timenow.strftime('%Y%m%d_%H%M%S'))) self.set_header('Content-Type', 'application/octet-stream') self.write(b'\xef\xbb\xbf') self.write(responseData) return
def get(self): if self.privilege is False: self.write('没有权限') return if not (self.current_user): self.write('请登录') return timenow = datetime.datetime.now() filter_params = dict( start_time = self.get_argument('start_time',''), end_time = self.get_argument('end_time',''), order_by = self.get_argument('orderby','') ) server_list = self.get_argument('server_list','') channel_list = self.get_argument('channel_list','') if not server_list: server_list = self.server_string if not channel_list: channel_list = self.channel_string filter_params['server_list'] = server_list filter_params['channel_list'] = channel_list list_data = yield whaleService.GetByFilter(0,100000,filter_params) if list_data[0]<1: self.write(dict(code=2,msg="没有数据")) return titles = ['最后充值日期','角色名称','角色ID','所在游戏服','充值渠道','设备','充值金额','首次充值等级', '当前等级','注册日期','首次充值日期','最后活跃日期','虚拟币拥有量','虚拟币总消耗量'] srv_datas = yield self.get_server_data() rows = [ ','.join(titles) ] for item_data in list_data[1]: s_uid = str(item_data.get('s_uid','')) rows.append(','.join([ item_data.get('last_pay_time').strftime('%Y/%m/%d'), item_data.get('player',''), str(item_data.get('pid','')), srv_datas.get(s_uid,s_uid), str(item_data.get('channel_name','')), str(item_data.get('uuid','')), str(item_data.get('rechargemoney',0)), str(item_data.get('fp_level',0)), str(item_data.get('ac_level',0)), item_data.get('reg_time').strftime('%Y/%m/%d'), item_data.get('fp_time').strftime('%Y/%m/%d'), item_data.get('llogin_time').strftime('%Y/%m/%d'), str(item_data.get('has_diamond',0)), str(item_data.get('cons_diamond',0)) ])) responseData = '\n'.join(rows).encode() self.set_header('Content-Disposition','attachment; filename="%s.csv"' % ( utils.EncodeURIComponent('鲸鱼用户') + timenow.strftime('%Y%m%d_%H%M%S'))) self.set_header('Content-Type','application/octet-stream') self.write(b'\xef\xbb\xbf') self.write(responseData) return
def get(self): if self.privilege is False: self.write('没有权限') return if not (self.current_user): self.write('请登录') return if self.admin_flag is False and not self.channel_string and not self.server_string: self.write('没有权限') return timenow = datetime.datetime.now() filter_params = dict(start_time=self.get_argument('start_time', ''), end_time=self.get_argument('end_time', ''), order_by=self.get_argument('orderby', ''), onece=self.get_argument('isonece', 0)) server_list = self.get_argument('server_list', '') if not server_list: server_list = self.server_string filter_params['server_list'] = server_list list_data = yield storyService.GetCheckPointLV(0, 1000000, filter_params) if list_data[0] < 1: self.finish(dict(code=2, msg="没有数据")) return titles = ['日期', '服务器', '关卡id', '关卡名称', '关卡人数'] for i in range(1, 61): titles.append(str(i)) rows = [','.join(titles)] srv_datas = yield self.get_server_data() for item_data in list_data[1]: s_uid = item_data.get('s_uid', '') player_lvs = json.loads(item_data.get('player_lvs', '{}')) total_num = 0 for i in player_lvs.values(): total_num += i ret_data = [ item_data.get('create_time').strftime('%Y/%m/%d'), srv_datas.get(s_uid, s_uid), str(item_data.get('event_id', '')), str(item_data.get('name', '')), str(total_num), ] for i in range(1, 61): ret_data.append(str(player_lvs.get(str(i), 0))) rows.append(','.join(ret_data)) responseData = '\n'.join(rows).encode() self.set_header( 'Content-Disposition', 'attachment; filename="%s.csv"' % (utils.EncodeURIComponent('关卡通关时长') + timenow.strftime('%Y%m%d_%H%M%S'))) self.set_header('Content-Type', 'application/octet-stream') self.write(b'\xef\xbb\xbf') self.write(responseData) return
def get(self): if self.privilege is False: self.write('没有权限') return if not (self.current_user): self.write('请登录') return timenow = datetime.datetime.now() filter_params = dict(start_time=self.get_argument('start_time', ''), end_time=self.get_argument('end_time', ''), order_by=self.get_argument('orderby', '')) server_list = self.get_argument('server_list', '') channel_list = self.get_argument('channel_list', '') if not server_list: server_list = self.server_string if not channel_list: channel_list = self.channel_string filter_params['server_list'] = server_list filter_params['channel_list'] = channel_list list_data = yield ActionService.GetByFilter(0, 100000, filter_params) if list_data[0] < 1: self.finish(dict(code=2, msg="没有数据")) return titles = [ '日期', '渠道', '服务器', '日活跃', '3日活跃', '周活跃', '月活跃', 'DAU/WAU', 'DAU/MAU' ] rows = [','.join(titles)] srv_datas = yield self.get_server_data() for item_data in list_data[1]: s_uid = str(item_data.get('s_uid', '')) rows.append(','.join([ item_data.get('create_time').strftime('%Y/%m/%d'), item_data.get('channel_name', ''), srv_datas.get(s_uid, s_uid), str(item_data.get('td_ac_num', 0)), str(item_data.get('th_ac_num', 0)), str(item_data.get('w_ac_num', 0)), str(item_data.get('mth_ac_num', 0)), str(item_data.get('dw_ac', 0.00)), str(item_data.get('dm_ac', 0.00)) ])) responseData = '\n'.join(rows).encode() self.set_header( 'Content-Disposition', 'attachment; filename="%s.csv"' % (utils.EncodeURIComponent('活跃用户') + timenow.strftime('%Y%m%d_%H%M%S'))) self.set_header('Content-Type', 'application/octet-stream') self.write(b'\xef\xbb\xbf') self.write(responseData) return
def get(self): device_level_ls = ['1','2','3','4','5','6'] device_fiedl = ['one_level','two_level','three_level','four_level','five_level','six_level'] timenow = datetime.datetime.now() filter_params = dict( start_time = self.get_argument('start_time',''), end_time = self.get_argument('end_time',''), order_by = self.get_argument('order','') ) server_list = self.get_argument('server_list','') channel_list = self.get_argument('channel_list','') if not server_list: server_list = self.server_string if not channel_list: channel_list = self.channel_string filter_params['server_list'] = server_list filter_params['channel_list'] = channel_list list_data = yield deviceService.GetByFilter(0,0,filter_params) if len(list_data[1])<1: self.finish(dict(code=2,msg="没有数据")) return titles = ['伙伴名称','开启人数','纹章1级','纹章2级','纹章3级','纹章4级','纹章5级','纹章6级'] rows = [ ','.join(titles) ] for item_data in list_data[1]: name = item_data.get('partner_name','') _dict = dict(name = name,t_own_num = int(item_data.get('t_own_num',''))) device_level_l = item_data.get('device_level_l','').split(',') t_own_num_l = item_data.get('t_own_num_l','').split(',') for i in range(len(device_level_l)): _dict[device_fiedl[int(device_level_l[i])-1]] = t_own_num_l[i] rows.append(','.join([ _dict.get('name',''), str(_dict.get('t_own_num',0)), str(_dict.get('one_level',0)), str(_dict.get('two_level',0)), str(_dict.get('three_level',0)), str(_dict.get('four_level',0)), str(_dict.get('five_level',0)), str(_dict.get('six_level',0)) ])) responseData = '\n'.join(rows).encode() self.set_header('Content-Disposition','attachment; filename="%s.csv"' % ( utils.EncodeURIComponent('伙伴纹章等级') + timenow.strftime('%Y%m%d_%H%M%S'))) self.set_header('Content-Type','application/octet-stream') self.write(b'\xef\xbb\xbf') self.write(responseData) return
def get(self): timenow = datetime.datetime.now() filter_params = dict(start_time=self.get_argument('start_time', ''), end_time=self.get_argument('end_time', ''), order_by=self.get_argument('orderby', ''), name=self.get_argument('name', '剑士守护精灵')) server_list = self.get_argument('server_list', '') channel_list = self.get_argument('channel_list', '') if not server_list: server_list = self.server_string if not channel_list: channel_list = self.channel_string if server_list: filter_params['server_list'] = server_list filter_params['channel_list'] = channel_list list_data = yield spiritService.GetByFilter(0, 10000000, filter_params) if len(list_data[0]) < 1: self.finish(dict(code=2, msg="没有数据")) return titles = ['服务器', '渠道', '精灵名称', '精灵等级', '拥有人数', '占比'] rows = [','.join(titles)] srv_datas = yield self.get_server_data() for item_data in list_data[0]: s_uid = item_data.get('s_uid', '') for __item in list_data[1]: if __item.get('s_uid') == s_uid: item_data['server_name'] = srv_datas.get( str(s_uid), str(s_uid)) num_owner = int(item_data.get('num_owner', 0)) t_num_owner = int(item_data.get('t_num_owner', 0)) rows.append(','.join([ item_data.get('server_name', ''), item_data.get('ch', ''), item_data.get('name', ''), str(item_data.get('level', 1)), str(num_owner), '%.2f%%' % (num_owner * 100 / t_num_owner if num_owner else 0) ])) responseData = '\n'.join(rows).encode() self.set_header( 'Content-Disposition', 'attachment; filename="%s.csv"' % (utils.EncodeURIComponent('精灵等级分布') + timenow.strftime('%Y%m%d_%H%M%S'))) self.set_header('Content-Type', 'application/octet-stream') self.write(b'\xef\xbb\xbf') self.write(responseData) return
def get(self): if self.privilege is False: self.write('没有权限') return if not (self.current_user): self.write('请登录') return timenow = datetime.datetime.now() filter_params = dict( start_time = self.get_argument('start_time',''), end_time = self.get_argument('end_time',''), order_by = self.get_argument('order',''), c_type = self.get_int('c_type',0), status_flag = self.get_int('status_flag',0) ) server_list = self.get_argument('server_list','') channel_list = self.get_argument('channel_list','') if not server_list: server_list = self.server_string if not channel_list: channel_list = self.channel_string filter_params['server_list'] = server_list filter_params['channel_list'] =channel_list list_data = yield ODDService.GetByFilter(0,100000,filter_params) if len(list_data)<1: self.finish(dict(code=2,msg="没有数据")) return titles = ['产出/消耗点','产出/消耗货币数','人数','次数'] type_datas = yield self.get_goods_menu() rows = [ ','.join(titles) ] for item_data in list_data: _type = str(item_data.get('type','')) rows.append(','.join([ type_datas.get(_type,_type), str(abs(int(item_data.get('diff',0)))), str(item_data.get('p_num',0)), str(item_data.get('num',0)) ])) responseData = '\n'.join(rows).encode() self.set_header('Content-Disposition','attachment; filename="%s.csv"' % ( utils.EncodeURIComponent('产出消耗分布') + timenow.strftime('%Y%m%d_%H%M%S'))) self.set_header('Content-Type','application/octet-stream') self.write(b'\xef\xbb\xbf') self.write(responseData) return
def get(self): if self.privilege is False: self.write('没有权限') return if not (self.current_user): self.write('请登录') return if self.admin_flag is False and not self.channel_string and not self.server_string: self.write('没有权限') return timenow = datetime.datetime.now() filter_params = dict(start_time=self.get_argument('start_time', ''), end_time=self.get_argument('end_time', ''), order_by=self.get_argument('orderby', ''), onece=self.get_argument('isonece', 0)) server_list = self.get_argument('server_list', '') if not server_list: server_list = self.server_string filter_params['server_list'] = server_list list_data = yield storyService.GetCheckPoint(0, 1000000, filter_params) if list_data[0] < 1: self.finish(dict(code=2, msg="没有数据")) return titles = ['日期', '服务器', '关卡id', '关卡名称', '玩家ID', '时长(秒)'] rows = [','.join(titles)] srv_datas = yield self.get_server_data() for item_data in list_data[1]: s_uid = item_data.get('s_uid', '') _time = yield self.dealtime(item_data.get('time'), "%Y/%m/%d") rows.append(','.join([ _time, srv_datas.get(s_uid, s_uid), str(item_data.get('event_id', '')), str(item_data.get('name', '')), str(item_data.get('pid', '')), str(item_data.get('finish_time', 0)) ])) responseData = '\n'.join(rows).encode() self.set_header( 'Content-Disposition', 'attachment; filename="%s.csv"' % (utils.EncodeURIComponent('关卡通关时长') + timenow.strftime('%Y%m%d_%H%M%S'))) self.set_header('Content-Type', 'application/octet-stream') self.write(b'\xef\xbb\xbf') self.write(responseData) return
def get(self): if self.privilege is False: self.write('没有权限') return if not (self.current_user): self.write('请登录') return timenow = datetime.datetime.now() filter_params = dict(start_time=self.get_argument('start_time', ''), end_time=self.get_argument('end_time', ''), order_by=self.get_argument('order', '')) server_list = self.get_argument('server_list', '') channel_list = self.get_argument('channel_list', '') if not server_list: server_list = self.server_string if not channel_list: channel_list = self.channel_string filter_params['server_list'] = server_list filter_params['channel_list'] = channel_list list_data = yield PayPointService.GetByFilter(0, 10000000, filter_params) if not list_data: self.finish(dict(code=2, msg="没有数据")) return titles = ['付费点', '购买数量', '充值金额'] rows = [','.join(titles)] for item_data in list_data: rows.append(','.join([ # item_data.get('pay_time').strftime('%Y/%m/%d'), item_data.get('pay_points', ''), str(item_data.get('pay_num', 0)), str(item_data.get('amount_of_recharge', 0)) ])) responseData = '\n'.join(rows).encode() self.set_header( 'Content-Disposition', 'attachment; filename="%s.csv"' % (utils.EncodeURIComponent('付费点') + timenow.strftime('%Y%m%d_%H%M%S'))) self.set_header('Content-Type', 'application/octet-stream') self.write(b'\xef\xbb\xbf') self.write(responseData) return
def get(self): timenow = datetime.datetime.now() filter_params = dict( start_time = self.get_argument('start_time',''), end_time = self.get_argument('end_time',''), order_by = self.get_argument('order','') ) server_list = self.get_argument('server_list','') channel_list = self.get_argument('channel_list','') if not server_list: server_list = self.server_string if not channel_list: channel_list = self.channel_string filter_params['server_list'] = server_list filter_params['channel_list'] = channel_list list_data = yield deviceService.GetDeviceStonesByFilter(0,0,filter_params) if len(list_data[1])<1: self.finish(dict(code=2,msg="没有数据")) return titles = ['日期','纹章力量','星石数','平均纹章力量','平均星石数'] rows = [ ','.join(titles) ] for item_data in list_data[1]: device_power = int(item_data.get('device_power',0)) ster_stone = int(item_data.get('ster_stone',0)) player_num = int(item_data.get('player_num',0)) rows.append(','.join([ str(item_data.get('time').strftime("%Y/%m/%d")), str(device_power), str(ster_stone), '%.f' %(device_power/player_num if player_num else 0), '%.f' % (ster_stone/player_num if player_num else 0) ])) responseData = '\n'.join(rows).encode() self.set_header('Content-Disposition','attachment; filename="%s.csv"' % ( utils.EncodeURIComponent('纹章力量星石') + timenow.strftime('%Y%m%d_%H%M%S'))) self.set_header('Content-Type','application/octet-stream') self.write(b'\xef\xbb\xbf') self.write(responseData) return
def get(self): if self.privilege is False: self.write('没有权限') return if not (self.current_user): self.write('请登录') return timenow = datetime.datetime.now() filter_params = dict(start_time=self.get_argument('start_time', ''), ) server_list = self.get_argument('server_list', '') if server_list: server_list = (server_list.split('|')) else: server_list = [] filter_params['server_list'] = server_list list_data = yield HourService.GetByFilter(filter_params) if len(list_data) < 1: self.finish(dict(code=2, msg="没有数据")) return titles = ['日期', '时间点', '新增设备', '新增账号数', '活跃人数', '付费人数', '付费金额'] rows = [','.join(titles)] for item_data in list_data: rows.append(','.join([ item_data.get('create_time').strftime('%Y/%m/%d'), str(item_data.get('hours', '')), str(item_data.get('new_equip', 0)), str(item_data.get('new_account', 0)), str(item_data.get('actoin', 0)), str(item_data.get('pay_account', 0)), str(item_data.get('pay_income', 0)) ])) responseData = '\n'.join(rows).encode() self.set_header( 'Content-Disposition', 'attachment; filename="%s.csv"' % (utils.EncodeURIComponent('每日实时数据') + timenow.strftime('%Y%m%d_%H%M%S'))) self.set_header('Content-Type', 'application/octet-stream') self.write(b'\xef\xbb\xbf') self.write(responseData) return
def get(self): if self.privilege is False: self.write('没有权限') return if not (self.current_user): self.write('请登录') return timenow = datetime.datetime.now() filter_params = dict(start_time=self.get_argument('start_time', ''), end_time=self.get_argument('end_time', ''), order_by=self.get_argument('order', '')) server_list = self.get_argument('server_list', '') if server_list: server_list = (server_list[1:]).split(',') else: server_list = [] filter_params['server_list'] = server_list list_data = yield PeakService.GetByFilter(0, 100000, filter_params) if len(list_data) < 1: self.finish(dict(code=2, msg="没有数据")) return titles = ['日期', '在线峰值人数', '平均在线人数'] rows = [','.join(titles)] for item_data in list_data: rows.append(','.join([ item_data.get('start_time').strftime('%Y/%m/%d'), str(item_data.get('num', 0)), str(item_data.get('avg', 0)) ])) responseData = '\n'.join(rows).encode() self.set_header( 'Content-Disposition', 'attachment; filename="%s.csv"' % (utils.EncodeURIComponent('每日在线峰值') + timenow.strftime('%Y%m%d_%H%M%S'))) self.set_header('Content-Type', 'application/octet-stream') self.write(b'\xef\xbb\xbf') self.write(responseData) return
def get(self): timenow = datetime.datetime.now() filter_params = dict( start_time = self.get_argument('start_time',''), end_time = self.get_argument('end_time',''), order_by = self.get_argument('order','') ) server_list = self.get_argument('server_list','') channel_list = self.get_argument('channel_list','') if not server_list: server_list = self.server_string if not channel_list: channel_list = self.channel_string filter_params['server_list'] = server_list filter_params['channel_list'] =channel_list list_data = yield deviceService.GetmgstByFilter(0,0,filter_params) if len(list_data[1])<1: self.write('没有相关数据') return titles = ['魔石名称','使用数量'] rows = [ ','.join(titles) ] for item_data in list_data[1]: rows.append(','.join([ item_data.get('magic_stone_name',''), str(item_data.get('magic_stone_num',0)) ])) responseData = '\n'.join(rows).encode() self.set_header('Content-Disposition','attachment; filename="%s.csv"' % ( utils.EncodeURIComponent('魔石使用量') + timenow.strftime('%Y%m%d_%H%M%S'))) self.set_header('Content-Type','application/octet-stream') self.write(b'\xef\xbb\xbf') self.write(responseData) return
def get(self): if self.privilege is False: self.write('没有权限') return if not (self.current_user): self.write('请登录') return timenow = datetime.datetime.now() type_flag = self.get_int('type_flag',1) filter_params = dict( start_time = self.get_argument('start_time',''), end_time = self.get_argument('end_time',''), order_by = self.get_argument('orderby',''), type_flag = type_flag ) server_list = self.get_argument('server_list','') channel_list = self.get_argument('channel_list','') if not server_list: server_list = self.server_string if not channel_list: channel_list = self.channel_string filter_params['server_list'] = server_list filter_params['channel_list'] = channel_list list_data = yield levelService.GetByFilter(0,1000000,filter_params) if len(list_data) <1: self.finish(dict(code=2,msg="没有数据")) return datas = [] _data = dict() srv_datas = yield self.get_server_data() for _level_data in list_data: _time = _level_data.get('time') # if type_flag==3: # _time = _time + datetime.timedelta(days =-7) channel_name = _level_data.get('channel_name','') s_uid = str(_level_data.get('s_uid','')) server_name = srv_datas.get(s_uid,s_uid) s_uid = _level_data.get('s_uid','') d_date = _time.strftime('%Y/%m/%d') key = channel_name + '_' + s_uid + '_' + d_date if _level_data.get('level'): _now_d = {'level' + str(_level_data.get('level')):str(_level_data.get('num'))} if _data.get(key): __data = _data[key] __data.update(_now_d) else: _now_d['channel'] = channel_name _now_d['s_uid'] = s_uid _now_d['d_date'] = d_date _now_d['server'] = server_name _data[key] = _now_d datas = list(_data.values()) datas.sort(key=lambda s:s['d_date'] ,reverse =True) title_data = yield levelService.Get_table_top(filter_params) titles = ['日期','渠道','服务器'] fields = [] for _title_data in title_data: if _title_data.get('level'): _level = str(_title_data.get('level')) titles.append(_level+'级') fields.append('level'+_level) _title = '等级分布' if type_flag==1: _title += '_所有玩家' elif type_flag==2: _title +='_新增玩家' elif type_flag ==3: _title +='流失玩家' rows = [ ','.join(titles) ] # total_d = dict() total_ = yield levelService.total_select(filter_params) total_list = ['','渠道','服务器'] for _total in total_: if _total.get('level') and _total.get('num',0): # key ='level' + str(_total.get('level')) # print(key) num = int(_total.get('num',0)) # print(num) # total_d[key] = num total_list.append(str(num)) rows.append(','.join(total_list)) # if total_d: # total_l = sorted(total_d.items(), key = lambda x:x[0]) # print(total_l) # for _total_l in total_l: # total_list.append(str(_total_l[1])) for item_data in datas: field_len = len(fields) d_list = [] d_list.append(str(item_data.get('d_date',''))) d_list.append(item_data.get('channel','')) d_list.append(item_data.get('server','')) for i in range(0, field_len): d_list.append(item_data.get(fields[i],'')) rows.append(','.join(d_list)) responseData = '\n'.join(rows).encode() self.set_header('Content-Disposition','attachment; filename="%s.csv"' % ( utils.EncodeURIComponent(_title) + timenow.strftime('%Y%m%d_%H%M%S'))) self.set_header('Content-Type','application/octet-stream') self.write(b'\xef\xbb\xbf') self.write(responseData) return
def get(self): if self.privilege is False: self.write('没有权限') return if not (self.current_user): self.write('请登录') return if self.admin_flag is False and not self.channel_string and not self.server_string: self.write('没有权限') return timenow = datetime.datetime.now() filter_params = dict(start_time=self.get_argument('start_time', ''), end_time=self.get_argument('end_time', ''), order_by=self.get_argument('orderby', ''), onece=self.get_argument('isonece', 0)) server_list = self.get_argument('server_list', '') if not server_list: server_list = self.server_string filter_params['server_list'] = server_list list_data = yield storyService.GetByFilter(0, 1000000, filter_params) if list_data[0] < 1: self.finish(dict(code=2, msg="没有数据")) return titles = [ '日期', '服务器', '关卡id', '关卡名称', '关卡通关人数', '0皇冠人数', '1皇冠人数', '2皇冠人数', '3皇冠人数', '0皇冠占比', '1皇冠占比', '2皇冠占比', '3皇冠占比', '扫荡总次数' ] rows = [','.join(titles)] srv_datas = yield self.get_server_data() for item_data in list_data[1]: s_uid = item_data.get('s_uid', '') zero_medal = item_data.get('zero_medal', 0) one_medal = item_data.get('one_medal', 0) two_medal = item_data.get('two_medal', 0) three_medal = item_data.get('three_medal', 0) total_num = zero_medal + one_medal + two_medal + three_medal rows.append(','.join([ item_data.get('create_time').strftime('%Y/%m/%d'), srv_datas.get(s_uid, s_uid), str(item_data.get('event_id', '')), str(item_data.get('name', '')), str(total_num), str(zero_medal), str(one_medal), str(two_medal), str(three_medal), '%.2f%%' % (zero_medal * 100 / total_num if total_num else 0), '%.2f%%' % (one_medal * 100 / total_num if total_num else 0), '%.2f%%' % (two_medal * 100 / total_num if total_num else 0), '%.2f%%' % (three_medal * 100 / total_num if total_num else 0), str(item_data.get('sweepnum', 0)) ])) responseData = '\n'.join(rows).encode() self.set_header( 'Content-Disposition', 'attachment; filename="%s.csv"' % (utils.EncodeURIComponent('关卡皇冠完成度') + timenow.strftime('%Y%m%d_%H%M%S'))) self.set_header('Content-Type', 'application/octet-stream') self.write(b'\xef\xbb\xbf') self.write(responseData) return
def get(self): if self.privilege is False: self.write('没有权限') return if not (self.current_user): self.write('请登录') return if self.admin_flag is False and not self.channel_string and not self.server_string: self.write('没有权限') return timenow = datetime.datetime.now() filter_params = dict(start_time=self.get_argument('start_time', ''), end_time=self.get_argument('end_time', ''), order_by=self.get_argument('orderby', '')) server_list = self.get_argument('server_list', '') if not server_list: server_list = self.server_string filter_params['server_list'] = server_list list_data = yield DailyNewspaperService.getdailyserverdata( 0, 1000000, filter_params) if list_data[0] < 1: self.finish(dict(code=2, msg="没有数据")) return titles = [ '日期', '服务器', '新登账号', '登录账号', '付费账号数', '总充值次数', '收入', '首次付费账号', '首次付费收入', '新登付费数', '新登账号收入', '付费ARPU', 'DAU ARPU', '账号付费率', '新增账号付费率', '新登用户ARPU', '新登用户ARPPU', '次日存留', '3日存留', '4日存留', '5日存留', '6日存留', '7日存留', '15日存留', '30日存留', '60日存留', '90日存留' ] rows = [','.join(titles)] srv_datas = yield self.get_server_data() total_ = yield DailyNewspaperService.total_select_to_server( filter_params) page = list_data[0] if total_[0]: new_login_accont = int(total_[0].get('new_login_accont', 0)) login_account = int(total_[0].get('login_account', 0)) income = total_[0].get('income', 0) pay_account_num = int(total_[0].get('pay_account_num', 0)) new_login_pay_income = (total_[0].get('new_login_pay_income', 0.00)) new_login_pay_num = (total_[0].get('new_login_pay_num', 0.00)) rows.append(','.join([ '', '服务器', str(new_login_accont), str(login_account), str(pay_account_num), str(int(total_[0].get('atm_num', 0))), str(income), str(total_[0].get('first_pay_account', 0)), str(total_[0].get('first_pay_account_income', 0)), str(total_[0].get('new_login_pay_num', 0)), str((total_[0].get('new_login_pay_income', 0.00))), '%.2f' % (float(income) / float(pay_account_num) if pay_account_num else 0.00), '%.2f' % (float(income) / float(login_account) if login_account else 0.00), '%.2f%%' % ((pay_account_num * 100) / login_account if login_account else 0), '%.2f%%' % (int(total_[0].get('new_login_pay_num', 0) * 100) / new_login_accont if new_login_accont else 0), '%.2f' % (float(new_login_pay_income) / float(new_login_pay_num) if new_login_pay_num else 0.00), '%.2f' % (float(new_login_pay_income) / float(new_login_accont) if new_login_accont else 0.00), '%.2f%%' % (total_[0].get('once_retain', 0) * 100 / page if page else 0), '%.2f%%' % (total_[0].get('three_retain', 0) * 100 / page if page else 0), '%.2f%%' % (total_[0].get('four_retain', 0) * 100 / page if page else 0), '%.2f%%' % (total_[0].get('five_retain', 0) * 100 / page if page else 0), '%.2f%%' % (total_[0].get('six_retain', 0) * 100 / page if page else 0), '%.2f%%' % (total_[0].get('seven_retain', 0) * 100 / page if page else 0), '%.2f%%' % (total_[0].get('fifteen_retain', 0) * 100 / page if page else 0), '%.2f%%' % (total_[0].get('thirty_retain', 0) * 100 / page if page else 0), '%.2f%%' % (total_[0].get('sixty_retain', 0) * 100 / page if page else 0), '%.2f%%' % (total_[0].get('ninety_retain', 0) * 100 / page if page else 0) ])) for item_data in list_data[1]: new_login_accont = int(item_data.get('new_login_accont', 0)) pay_account_num = int(item_data.get('pay_account_num', 0)) login_account = int(item_data.get('login_account', 0)) _income = item_data.get('income', 0) new_login_pay_income = item_data.get('new_login_pay_income', 0) new_login_pay_num = item_data.get('new_login_pay_num', 0) rows.append(','.join([ item_data.get('create_time').strftime('%Y/%m/%d'), srv_datas.get(item_data.get('s_uid', '')), str(new_login_accont), str(login_account), str(pay_account_num), str(item_data.get('atm_num', 0)), str(_income), str(item_data.get('first_pay_account', 0)), str(item_data.get('first_pay_account_income', 0)), str(new_login_pay_num), str(new_login_pay_income), '%.2f' % (float(_income) / float(pay_account_num) if pay_account_num else 0.00), '%.2f' % (float(_income) / float(login_account) if login_account else 0.00), '%.2f%%' % (pay_account_num * 100 / login_account if login_account else 0), '%.2f%%' % (new_login_pay_num * 100 / new_login_accont if new_login_accont else 0), '%.2f' % (float(new_login_pay_income) / float(new_login_pay_num) if new_login_pay_num else 0.00), '%.2f' % (float(new_login_pay_income) / float(new_login_accont) if new_login_accont else 0.00), '%.2f%%' % (item_data.get('once_retain', 0) * 100 / new_login_accont if new_login_accont else 0), '%.2f%%' % (item_data.get('three_retain', 0) * 100 / new_login_accont if new_login_accont else 0), '%.2f%%' % (item_data.get('four_retain', 0) * 100 / new_login_accont if new_login_accont else 0), '%.2f%%' % (item_data.get('five_retain', 0) * 100 / new_login_accont if new_login_accont else 0), '%.2f%%' % (item_data.get('six_retain', 0) * 100 / new_login_accont if new_login_accont else 0), '%.2f%%' % (item_data.get('seven_retain', 0) * 100 / new_login_accont if new_login_accont else 0), '%.2f%%' % (item_data.get('fifteen_retain', 0) * 100 / new_login_accont if new_login_accont else 0), '%.2f%%' % (item_data.get('thirty_retain', 0) * 100 / new_login_accont if new_login_accont else 0), '%.2f%%' % (item_data.get('sixty_retain', 0) * 100 / new_login_accont if new_login_accont else 0), '%.2f%%' % (item_data.get('ninety_retain', 0) * 100 / new_login_accont if new_login_accont else 0) ])) responseData = '\n'.join(rows).encode() self.set_header( 'Content-Disposition', 'attachment; filename="%s.csv"' % (utils.EncodeURIComponent('日报') + timenow.strftime('%Y%m%d_%H%M%S'))) self.set_header('Content-Type', 'application/octet-stream') self.write(b'\xef\xbb\xbf') self.write(responseData) return
def get(self): if self.privilege is False: self.write('没有权限') return if not (self.current_user): self.write('请登录') return timenow = datetime.datetime.now() filter_params = dict(start_time=self.get_argument('start_time', ''), end_time=self.get_argument('end_time', ''), order_by=self.get_argument('orderby', '')) server_list = self.get_argument('server_list', '') channel_list = self.get_argument('channel_list', '') if not server_list: server_list = self.server_string if not channel_list: channel_list = self.channel_string if server_list: filter_params['server_list'] = server_list filter_params['channel_list'] = channel_list list_data = yield RetainService.GetByFilter(0, 100000, filter_params) if list_data[0] < 1: self.finish(dict(code=2, msg="没有数据")) return titles = [ '日期', '渠道', '服务器', '注册账号数', '登录账号数', '新登账号数', '次日存留率', '3日存留率', '4日存留率', '5日存留率', '6日存留率', '7日存留率', '15日存留率', '30日存留率', '45日存留率', '60日存留率', '75日存留率', '90日存留率' ] rows = [','.join(titles)] total_ = yield RetainService.total_select(filter_params) if total_[0]: rows.append(','.join([ '', '渠道', '服务器', str(total_[0].get('regist_account', 0)), str(total_[0].get('login_account', 0)), str(total_[0].get('new_login_accont', 0)), '%.2f%%' % total_[0].get('once_retain', 0), '%.2f%%' % total_[0].get('three_retain', 0), '%.2f%%' % total_[0].get('four_retain', 0), '%.2f%%' % total_[0].get('five_retain', 0), '%.2f%%' % total_[0].get('six_retain', 0), '%.2f%%' % total_[0].get('seven_retain', 0), '%.2f%%' % total_[0].get('fifteen_retain', 0), '%.2f%%' % total_[0].get('thirty_retain', 0), '%.2f%%' % total_[0].get('forty_five_retain', 0), '%.2f%%' % total_[0].get('sixty_retain', 0), '%.2f%%' % total_[0].get('seventy_five_retain', 0), '%.2f%%' % total_[0].get('ninety_retain', 0) ])) srv_datas = yield self.get_server_data() for item_data in list_data[1]: s_uid = str(item_data.get('s_uid', '')) # new_login_accont = item_data.get('new_login_accont',0) rows.append(','.join([ item_data.get('create_time').strftime('%Y/%m/%d'), item_data.get('channel_name', ''), srv_datas.get(s_uid, s_uid), str(item_data.get('regist_account', 0)), str(item_data.get('login_account', 0)), str(item_data.get('new_login_accont', 0)), '%.2f%%' % item_data.get('once_retain', 0), '%.2f%%' % item_data.get('three_retain', 0), '%.2f%%' % item_data.get('four_retain', 0), '%.2f%%' % item_data.get('five_retain', 0), '%.2f%%' % item_data.get('six_retain', 0), '%.2f%%' % item_data.get('seven_retain', 0), '%.2f%%' % item_data.get('fifteen_retain', 0), '%.2f%%' % item_data.get('thirty_retain', 0), '%.2f%%' % item_data.get('forty_five_retain', 0), '%.2f%%' % item_data.get('sixty_retain', 0), '%.2f%%' % item_data.get('seventy_five_retain', 0), '%.2f%%' % item_data.get('ninety_retain', 0) ])) responseData = '\n'.join(rows).encode() self.set_header( 'Content-Disposition', 'attachment; filename="%s.csv"' % (utils.EncodeURIComponent('用户留存') + timenow.strftime('%Y%m%d_%H%M%S'))) self.set_header('Content-Type', 'application/octet-stream') self.write(b'\xef\xbb\xbf') self.write(responseData) return
def get(self): if self.privilege is False: self.write('没有权限') return if not (self.current_user): self.write('请登录') return timenow = datetime.datetime.now() filter_params = dict(start_time=self.get_argument('start_time', ''), end_time=self.get_argument('end_time', ''), order_by=self.get_argument('orderby', ''), c_type=self.get_int('c_type', 0)) server_list = self.get_argument('server_list', '') channel_list = self.get_argument('channel_list', '') if not server_list: server_list = self.server_string if not channel_list: channel_list = self.channel_string if server_list: filter_params['server_list'] = server_list filter_params['channel_list'] = channel_list list_data = yield currencyService.GetByFilter(0, 100000, filter_params) if list_data[0] < 1: self.finish(dict(code=2, msg="没有数据")) return titles = [ '日期', '服务器', '渠道', '期初库存', '充值所得', '系统产出', '获得总额', '消耗总额', '差额', '期末库存' ] rows = [','.join(titles)] total_ = yield currencyService.total_select(filter_params) if total_[0]: atm_get = int(total_[0].get('atm_get', 0)) system_output = int(total_[0].get('system_output', 0)) total_drain = abs(int(total_[0].get('total_drain', 0))) total_get = atm_get + system_output rows.append(','.join([ '', '服务器', '渠道', str(total_[0].get('start_inventory', 0)), str(atm_get), str(system_output), str(total_get), str(total_drain), str(total_get - total_drain), str(total_[0].get('end_inventory', 0)) ])) srv_datas = yield self.get_server_data() for item_data in list_data[1]: s_uid = str(item_data.get('s_uid', '')) atm_get = item_data.get('atm_get', 0) system_output = item_data.get('system_output', 0) total_get = atm_get + system_output total_drain = abs(item_data.get('total_drain', 0)) rows.append(','.join([ str(item_data.get('create_time').strftime('%Y/%m/%d')), srv_datas.get(s_uid, s_uid), str(item_data.get('channel_name', '')), str(item_data.get('start_inventory', 0)), str(atm_get), str(system_output), str(total_get), str(total_drain), str(total_get - total_drain), str(item_data.get('end_inventory', 0)) ])) responseData = '\n'.join(rows).encode() self.set_header( 'Content-Disposition', 'attachment; filename="%s.csv"' % (utils.EncodeURIComponent('货币进毁存') + timenow.strftime('%Y%m%d_%H%M%S'))) self.set_header('Content-Type', 'application/octet-stream') self.write(b'\xef\xbb\xbf') self.write(responseData) return
def get(self): if self.privilege is False: self.write('没有权限') return if not (self.current_user): self.write('请登录') return timenow = datetime.datetime.now() filter_params = dict(start_time=self.get_argument('start_time', ''), end_time=self.get_argument('end_time', ''), order_by=self.get_argument('order', ''), vip_level=self.get_argument('vip_level', '')) server_list = self.get_argument('server_list', '') channel_list = self.get_argument('channel_list', '') if not server_list: server_list = self.server_string if not channel_list: channel_list = self.channel_string if server_list: filter_params['server_list'] = server_list filter_params['channel_list'] = channel_list list_data = yield BuyService.GetByFilter(0, 10000000, filter_params) if list_data[0] < 1: self.finish(dict(code=2, msg="没有数据")) return titles = [ '日期', '渠道', '服务器', 'VIP等级', 'VIP总人数', '1次购买人数', '1次比例', '2次购买人数', '2次比例', '3次购买人数', '3次比例', '4次购买人数', '4次比例', '5次购买人数', '5次比例', '6次购买人数', '6次比例', '7次购买人数', '7次比例', '8次购买人数', '8次比例', '9次购买人数', '9次比例', '10购买人数', '10次比例', '11次购买人数', '11次比例', '12次购买人数', '12次比例', '13次购买人数', '13次比例', '14次购买人数', '14次比例', '15次购买人数', '15次比例', '16次购买人数', '16次比例' ] rows = [','.join(titles)] total_ = yield BuyService.total_select(filter_params) if total_: __total_vip_num = int(total_.pop('total_vip_num', 0)) rows.append(','.join([ '', '渠道', '服务器', 'VIP', str(__total_vip_num), str(total_.get('once_pay_num', 0)), '%.2f%%' % (int(total_.get('once_pay_num', 0)) * 100 / __total_vip_num if __total_vip_num else 0), str(total_.get('twice_pay_num', 0)), '%.2f%%' % (int(total_.get('twice_pay_num', 0)) * 100 / __total_vip_num if __total_vip_num else 0), str(total_.get('three_pay_num', 0)), '%.2f%%' % (int(total_.get('three_pay_num', 0)) * 100 / __total_vip_num if __total_vip_num else 0), str(total_.get('four_pay_num', 0)), '%.2f%%' % (int(total_.get('four_pay_num', 0)) * 100 / __total_vip_num if __total_vip_num else 0), str(total_.get('five_pay_num', 0)), '%.2f%%' % (int(total_.get('five_pay_num', 0)) * 100 / __total_vip_num if __total_vip_num else 0), str(total_.get('six_pay_num', 0)), '%.2f%%' % (int(total_.get('six_pay_num', 0)) * 100 / __total_vip_num if __total_vip_num else 0), str(total_.get('seven_pay_num', 0)), '%.2f%%' % (int(total_.get('seven_pay_num', 0)) * 100 / __total_vip_num if __total_vip_num else 0), str(total_.get('eight_pay_num', 0)), '%.2f%%' % (int(total_.get('eight_pay_num', 0)) * 100 / __total_vip_num if __total_vip_num else 0), str(total_.get('nine_pay_num', 0)), '%.2f%%' % (int(total_.get('nine_pay_num', 0)) * 100 / __total_vip_num if __total_vip_num else 0), str(total_.get('ten_pay_num', 0)), '%.2f%%' % (int(total_.get('ten_pay_num', 0)) * 100 / __total_vip_num if __total_vip_num else 0), str(total_.get('eleven_pay_num', 0)), '%.2f%%' % (int(total_.get('eleven_pay_num', 0)) * 100 / __total_vip_num if __total_vip_num else 0), str(total_.get('twelve_pay_num', 0)), '%.2f%%' % (int(total_.get('twelve_pay_num', 0)) * 100 / __total_vip_num if __total_vip_num else 0), str(total_.get('thirt_pay_num', 0)), '%.2f%%' % (int(total_.get('thirt_pay_num', 0)) * 100 / __total_vip_num if __total_vip_num else 0), str(total_.get('fourt_pay_num', 0)), '%.2f%%' % (int(total_.get('fourt_pay_num', 0)) * 100 / __total_vip_num if __total_vip_num else 0), str(total_.get('fift_pay_num', 0)), '%.2f%%' % (int(total_.get('fift_pay_num', 0)) * 100 / __total_vip_num if __total_vip_num else 0), str(total_.get('sixt_pay_num', 0)), '%.2f%%' % (int(total_.get('sixt_pay_num', 0)) * 100 / __total_vip_num if __total_vip_num else 0) ])) srv_datas = yield self.get_server_data() for item_data in list_data[1]: d_date = item_data.get('d_date') create_time_date = item_data.get('create_time', datetime.datetime.now()) if int((create_time_date + datetime.timedelta(days=-1)).strftime('%Y%m%d')) == d_date: create_time_date = create_time_date + datetime.timedelta( days=-1) s_uid = str(item_data.get('s_uid', '')) _total_vip_num = item_data.get('total_vip_num', 0) rows.append(','.join([ create_time_date.strftime('%Y/%m/%d'), item_data.get('channel_name', ''), srv_datas.get(s_uid, s_uid), item_data.get('vip_level', '')[3:], str(_total_vip_num), str(item_data.get('once_pay_num', 0)), '%.2f%%' % (item_data.get('once_pay_num', 0) * 100 / _total_vip_num if _total_vip_num else 0), str(item_data.get('twice_pay_num', 0)), '%.2f%%' % (item_data.get('twice_pay_num', 0) * 100 / _total_vip_num if _total_vip_num else 0), str(item_data.get('three_pay_num', 0)), '%.2f%%' % (item_data.get('three_pay_num', 0) * 100 / _total_vip_num if _total_vip_num else 0), str(item_data.get('four_pay_num', 0)), '%.2f%%' % (item_data.get('four_pay_num', 0) * 100 / _total_vip_num if _total_vip_num else 0), str(item_data.get('five_pay_num', 0)), '%.2f%%' % (item_data.get('five_pay_num', 0) * 100 / _total_vip_num if _total_vip_num else 0), str(item_data.get('six_pay_num', 0)), '%.2f%%' % (item_data.get('six_pay_num', 0) * 100 / _total_vip_num if _total_vip_num else 0), str(item_data.get('seven_pay_num', 0)), '%.2f%%' % (item_data.get('seven_pay_num', 0) * 100 / _total_vip_num if _total_vip_num else 0), str(item_data.get('eight_pay_num', 0)), '%.2f%%' % (item_data.get('eight_pay_num', 0) * 100 / _total_vip_num if _total_vip_num else 0), str(item_data.get('nine_pay_num', 0)), '%.2f%%' % (item_data.get('nine_pay_num', 0) * 100 / _total_vip_num if _total_vip_num else 0), str(item_data.get('ten_pay_num', 0)), '%.2f%%' % (item_data.get('ten_pay_num', 0) * 100 / _total_vip_num if _total_vip_num else 0), str(item_data.get('eleven_pay_num', 0)), '%.2f%%' % (item_data.get('eleven_pay_num', 0) * 100 / _total_vip_num if _total_vip_num else 0), str(item_data.get('twelve_pay_num', 0)), '%.2f%%' % (item_data.get('twelve_pay_num', 0) * 100 / _total_vip_num if _total_vip_num else 0), str(item_data.get('thirt_pay_num', 0)), '%.2f%%' % (item_data.get('thirt_pay_num', 0) * 100 / _total_vip_num if _total_vip_num else 0), str(item_data.get('fourt_pay_num', 0)), '%.2f%%' % (item_data.get('fourt_pay_num', 0) * 100 / _total_vip_num if _total_vip_num else 0), str(item_data.get('fift_pay_num', 0)), '%.2f%%' % (item_data.get('fift_pay_num', 0) * 100 / _total_vip_num if _total_vip_num else 0), str(item_data.get('sixt_pay_num', 0)), '%.2f%%' % (item_data.get('sixt_pay_num', 0) * 100 / _total_vip_num if _total_vip_num else 0) ])) responseData = '\n'.join(rows).encode() self.set_header( 'Content-Disposition', 'attachment; filename="%s.csv"' % (utils.EncodeURIComponent('体力购买次数') + timenow.strftime('%Y%m%d_%H%M%S'))) self.set_header('Content-Type', 'application/octet-stream') self.write(b'\xef\xbb\xbf') self.write(responseData) return
def get(self): if self.privilege is False: self.write('没有权限') return if not (self.current_user): self.write('请登录') return timenow = datetime.datetime.now() filter_params = dict(start_time=self.get_argument('start_time', ''), end_time=self.get_argument('end_time', ''), order_by=self.get_argument('order', '')) server_list = self.get_argument('server_list', '') channel_list = self.get_argument('channel_list', '') if not server_list: server_list = self.server_string if not channel_list: channel_list = self.channel_string filter_params['server_list'] = server_list filter_params['channel_list'] = channel_list list_data = yield adgroupService.export(filter_params) if len(list_data) < 1: self.finish(dict(code=2, msg="没有数据")) return titles = [ '日期', '服务器', '渠道', '冒险团数量', '冒险团解散数', '在团玩家数', '剩余贡献', '平均贡献', '钻石捐献次数', '钻石捐献比率', '伐木场次数', '伐木场比率', '矿场次数', '矿场比率', '讨伐boss开启次数', '讨伐boss开启比率', '讨伐boss成功次数', '讨伐boss失败次数', '剩余资金总量', '剩余木材总量', '剩余石头总量' ] rows = [','.join(titles)] srv_datas = yield self.get_server_data() for item_data in list_data: ad_num = item_data.get('ad_num', 0) ad_player_num = item_data.get('ad_player_num', 0) residual_con = item_data.get('residual_con', 0) diam_donation = item_data.get('diam_donation', 0) logging_camp = item_data.get('logging_camp', 0) mine_num = item_data.get('mine_num', 0) open_boss = item_data.get('open_boss', 0) kill_boss = item_data.get('kill_boss', 0) s_uid = str(item_data.get('s_uid', '')) rows.append(','.join([ item_data.get('create_time').strftime('%Y/%m/%d'), srv_datas.get(s_uid, s_uid), item_data.get('channel_name', ''), str(ad_num), str(item_data.get('ad_dis_num', 0)), str(ad_player_num), str(residual_con), str(int(residual_con / ad_player_num if ad_player_num else 0)), str(diam_donation), '%.2f' % (diam_donation / ad_num if ad_num else 0), str(logging_camp), '%.2f' % (logging_camp / ad_num if ad_num else 0), str(mine_num), '%.2f' % (mine_num / ad_num if ad_num else 0), str(open_boss), '%.2f' % (open_boss / ad_num if ad_num else 0), str(kill_boss), str(open_boss - kill_boss), str(item_data.get('surplus_funds', 0)), str(item_data.get('surplus_woods', 0)), str(item_data.get('surplus_stones', 0)) # str(item_data.get('sur_ori_stone',0)) ])) responseData = '\n'.join(rows).encode() self.set_header( 'Content-Disposition', 'attachment; filename="%s.csv"' % (utils.EncodeURIComponent('冒险团数据') + timenow.strftime('%Y%m%d_%H%M%S'))) self.set_header('Content-Type', 'application/octet-stream') self.write(b'\xef\xbb\xbf') self.write(responseData) return
def get(self): if self.privilege is False: self.write('没有权限') return if not (self.current_user): self.write('请登录') return timenow = datetime.datetime.now() filter_params = dict( start_time = self.get_argument('start_time',''), end_time = self.get_argument('end_time',''), order_by = self.get_argument('orderby','') ) server_list = self.get_argument('server_list','') channel_list = self.get_argument('channel_list','') if not server_list: server_list = self.server_string if not channel_list: channel_list = self.channel_string filter_params['server_list'] = server_list filter_params['channel_list'] = channel_list list_data = yield LTVService.GetByFilter(0,1000000,filter_params) if list_data[0]<1: self.finish(dict(code=2,msg="没有数据")) return titles = ['日期','渠道','服务器','新登账号数','D1','D2','D3','D4', 'D5','D6','D7','D8','D9','D10','D11','D12','D13','D14','D15','D30', 'D45','D60','D75','D90','D120','D150','D180'] rows = [ ','.join(titles) ] total_ = yield LTVService.total_select(filter_params) srv_datas = yield self.get_server_data() _data = dict(d_date='',server='服务器',channel='渠道') if total_[0]: rows.append(','.join(['','','', str(total_[0].get('new_account_num',0)), '%.2f' % (total_[0].get('one_day_ltv',0.00)), '%.2f' % (total_[0].get('two_day_ltv',0.00)), '%.2f' % (total_[0].get('three_days_ltv',0.00)), '%.2f' % (total_[0].get('four_day_ltv',0.00)), '%.2f' % (total_[0].get('five_day_ltv',0.00)), '%.2f' % (total_[0].get('six_day_ltv',0.00)) ,'%.2f' % (total_[0].get('seven_days_ltv',0.00)) ,'%.2f' % (total_[0].get('eight_day_ltv',0.00)) ,'%.2f' % (total_[0].get('nine_day_ltv',0.00)) ,'%.2f' % (total_[0].get('ten_day_ltv',0.00)) ,'%.2f' % (total_[0].get('eleven_day_ltv',0.00)) ,'%.2f' % (total_[0].get('twelve_day_ltv',0.00)) ,'%.2f' % (total_[0].get('thirteen_day_ltv',0.00)) ,'%.2f' % (total_[0].get('fourteen_day_ltv',0.00)) ,'%.2f' % (total_[0].get('half_moon_ltv',0.00)) ,'%.2f' % (total_[0].get('one_month_ltv',0.00)) ,'%.2f' % (total_[0].get('forty_five_ltv',0.00)) ,'%.2f' % (total_[0].get('sixty_ltv',0.00)) ,'%.2f' % (total_[0].get('seventy_five_ltv',0.00)) ,'%.2f' % (total_[0].get('ninety_ltv',0.00)) ,'%.2f' % (total_[0].get('four_month_ltv',0.00)) ,'%.2f' % (total_[0].get('five_month_ltv',0.00)) ,'%.2f' % (total_[0].get('six_month_ltv',0.00)) ])) for item_data in list_data[1]: s_uid = str(item_data.get('s_uid','')) rows.append(','.join([ item_data.get('create_time').strftime('%Y/%m/%d'), item_data.get('channel_name',''), srv_datas.get(s_uid,s_uid), str(item_data.get('new_account_num','')), str(item_data.get('one_day_ltv',0.00)), str(item_data.get('two_day_ltv',0.00)), str(item_data.get('three_days_ltv',0.00)), str(item_data.get('four_day_ltv',0.00)), str(item_data.get('five_day_ltv',0.00)), str(item_data.get('six_day_ltv',0.00)), str(item_data.get('seven_days_ltv',0.00)), str(item_data.get('eight_day_ltv',0.00)), str(item_data.get('nine_day_ltv',0.00)), str(item_data.get('ten_day_ltv',0.00)), str(item_data.get('eleven_day_ltv',0.00)), str(item_data.get('twelve_day_ltv',0.00)), str(item_data.get('thirteen_day_ltv',0.00)), str(item_data.get('fourteen_day_ltv',0.00)), str(item_data.get('half_moon_ltv',0.00)), str(item_data.get('one_month_ltv',0.00)), str(item_data.get('forty_five_ltv',0.00)), str(item_data.get('sixty_ltv',0.00)), str(item_data.get('seventy_five_ltv',0.00)), str(item_data.get('ninety_ltv',0.00)), str(item_data.get('four_month_ltv',0.00)), str(item_data.get('five_month_ltv',0.00)), str(item_data.get('six_month_ltv',0.00)), ])) responseData = '\n'.join(rows).encode() self.set_header('Content-Disposition','attachment; filename="%s.csv"' % ( utils.EncodeURIComponent('LTV价值') + timenow.strftime('%Y%m%d_%H%M%S'))) self.set_header('Content-Type','application/octet-stream') self.write(b'\xef\xbb\xbf') self.write(responseData) return
def get(self): timenow = datetime.datetime.now() filter_params = dict( start_time = self.get_argument('start_time',''), end_time = self.get_argument('end_time',''), order_by = self.get_argument('orderby',''), b_type = self.get_int('activation_type',1) ) server_list = self.get_argument('server_list','') channel_list = self.get_argument('channel_list','') if not server_list: server_list = self.server_string if not channel_list: channel_list = self.channel_string if server_list: filter_params['server_list'] = server_list filter_params['channel_list'] = channel_list list_data = yield taskcheckpointService.GetByFilter(0,10000000,filter_params) if len(list_data[1])<1: self.write('没有数据') return titles = ['名称','类型','创建次数','解散次数','进入人数','进入次数','平均完成时间','失败次数','失败率'] rows = [ ','.join(titles) ] name_type = [] init_dict = dict() for item_data in list_data[1]: challenge_num = int(item_data.get('challenge_num',0)) success = int(item_data.get('success',0)) fail_to_boss = challenge_num - success avg_time = int(item_data.get('avg_time',0)) avg_time = yield self.deal_time(avg_time) name = item_data.get('name','') _type = str(item_data.get('b_type','')) init_dict[name+'_'+_type] = dict( name = name, _type = item_data.get('type',''), player_num =str(item_data.get('player_num',0)), challenge_num =str(challenge_num), avg_time =str(avg_time), fail_to_boss =str(fail_to_boss), fail_rate ='%.2f%%' % (int(fail_to_boss)*100/int(challenge_num) if challenge_num else 0), create_room_num = str(item_data.get('create_room_num',0)), dis_room_num = str(item_data.get('dis_room_num',0)) ) name_type.append(name + ',' + _type) data = yield taskcheckpointService.GetPlayerNum(dict( start_time = filter_params.get('start_time',''), end_time = filter_params.get('end_time','') if filter_params.get('end_time','') else datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), server_list = server_list, name_type = name_type, channel_list = channel_list )) if data: for _data in data: key = _data.get('name','') + '_' + str(_data.get('b_type')) if init_dict.get(key): rows.append(','.join([ init_dict[key].get('name',''), init_dict[key].get('_type',''), init_dict[key].get('create_room_num'), init_dict[key].get('dis_room_num'), str(_data.get('player_num',0)), init_dict[key].get('challenge_num'), init_dict[key].get('avg_time'), init_dict[key].get('fail_to_boss'), init_dict[key].get('fail_rate') ])) else: for v in init_dict.values(): rows.append(','.join([ v.get('name',''), v.get('_type',''), v.get('create_room_num'), v.get('dis_room_num'), '0', v.get('challenge_num'), v.get('avg_time'), v.get('fail_to_boss'), v.get('fail_rate') ])) responseData = '\n'.join(rows).encode() self.set_header('Content-Disposition','attachment; filename="%s.csv"' % ( utils.EncodeURIComponent('任务关卡') + timenow.strftime('%Y%m%d_%H%M%S'))) self.set_header('Content-Type','application/octet-stream') self.write(b'\xef\xbb\xbf') self.write(responseData) return