Exemplo n.º 1
0
    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
Exemplo n.º 2
0
	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
Exemplo n.º 3
0
    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
Exemplo n.º 4
0
    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
Exemplo n.º 6
0
    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
Exemplo n.º 7
0
	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
Exemplo n.º 8
0
    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
Exemplo n.º 9
0
    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
Exemplo n.º 11
0
    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
Exemplo n.º 14
0
	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
Exemplo n.º 15
0
    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
Exemplo n.º 16
0
    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
Exemplo n.º 17
0
    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
Exemplo n.º 18
0
    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
Exemplo n.º 19
0
    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
Exemplo n.º 20
0
    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
Exemplo n.º 21
0
	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
Exemplo n.º 22
0
	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