You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

912 lines
33 KiB
PHP

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
// +----------------------------------------------------------------------
// | OneThink [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.onethink.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: yangweijie <yangweijiester@gmail.com> <code-tech.diandian.com>
// +----------------------------------------------------------------------
namespace Addons\SiteStat;
use Common\Controller\Addon;
/**
* 系统环境信息插件
* @author thinkphp
*/
class SiteStatAddon extends Addon
{
public $info = array(
'name' => 'SiteStat',
'title' => '站点统计信息',
'description' => '统计站点的基础信息',
'status' => 1,
'author' => 'thinkphp',
'version' => '0.1'
);
public function install()
{
return true;
}
public function uninstall()
{
return true;
}
//实现的AdminIndex钩子方法
public function AdminIndex($param)
{
$shuju = M('Data', 'tab_')->order('create_time desc')->find();
$this->assign('shuju', $shuju);
$config = $this->getConfig();
$this->assign('addons_config', $config);
if ($config['display']) {
$user = M("User", "tab_");
$userlogin = M("UserLoginRecord", "tab_");
$game = M("Game", "tab_");
$spend = M('Spend', "tab_");
$deposit = M('Deposit', "tab_");
$promote = M("Promote", "tab_");
$yesterday = $this->total(5);
$today = $this->total(1);
$week = $this->total(9);
$month = $this->total(3);
$doc = D("Document");
$b = $this->cate("blog");
$m = $this->cate("media");
$blog = $doc->table("__DOCUMENT__ as d")
->where("d.status=1 and d.display=1 and d.category_id in (" . $b . ")")->count();
$media = $doc->table("__DOCUMENT__ as d")
->where("d.status=1 and d.display=1 and d.category_id in (" . $m . ")")->count();
$info['document'] = $this->huanwei($blog + $media);
$info['blog'] = $this->huanwei($blog);
$info['media'] = $this->huanwei($media);
//待办事项
$this->daiban();
//提示事项indexcontroller
$this->tishi();
// 图表
$day_7 = strtotime(date('Y-m-d',strtotime('-6 day')));
$day = $this->every_day(7);
$spend_map['pay_status'] = 1;
$data_spend = $spend
->field('date_format(FROM_UNIXTIME( pay_time),"%Y-%m-%d") AS time,sum(pay_amount) as cg')
->where(array('game_id' => array('gt', 0)))
->where($spend_map)
->where(['pay_time'=>['egt',$day_7]])
->group('time')
->order('cg desc')
->select();
$data_user = $user
->field('date_format(FROM_UNIXTIME( register_time),"%Y-%m-%d") AS time,count(id) as cg')
->group('time')
->where(['register_time'=>['egt',$day_7]])
->select();
$spendd = $this->foreach_data($day, $data_spend);
$userdd = $this->foreach_data($day, $data_user);
asort($spendd);
asort($userdd);
foreach ($spendd as $key => $value) {
$dday[] = $value['time'];
$cgg[] = $value['count'];
}
foreach ($userdd as $key => $value) {
$user_dday[] = $value['time'];
$user_cgg[] = $value['count'];
}
$mix_pay = max($cgg);
$min_pay = min($cgg);
$ii['min'] = $min_pay;
$ii['mix'] = $mix_pay;
$ii['data'] = rtrim($this->foreach_stat($cgg, 2), ",");
$ii['day'] = rtrim($this->foreach_stat($dday), ",");
$mix_user = max($user_cgg);
$min_user = min($user_cgg);
$user_ii['min'] = $min_user;
$user_ii['mix'] = $mix_user;
$user_ii['data'] = rtrim($this->foreach_stat($user_cgg, 2), ",");
$user_ii['day'] = rtrim($this->foreach_stat($user_dday), ",");
$mix_tu = $user_ii['mix'] > $ii['mix'] ? $user_ii['mix'] : $ii['mix'];
$this->assign('mix_tu', $mix_tu);
$this->assign('ii', $ii);
//var_dump($ii);exit;
$this->assign('user_ii', $user_ii);
$this->assign('info', $info);
//昨日新增用户分析
//$this->newsPlayerInYestoday();
//昨日新增用户分析
$this->zrxz();
$this->display('info');
}
}
/**
* 昨日新增用户情况
* @author <zsl>
*/
public function zrxz(){
//昨天日期
$start = mktime(0,0,0,date('m'),date('d')-1,date('Y'));
$end = mktime(0,0,0,date('m'),date('d'),date('Y'))-1;
//前天日期
$start2 = mktime(0,0,0,date('m'),date('d')-2,date('Y'));
$end2 = mktime(0,0,0,date('m'),date('d')-1,date('Y'))-1;
//昨天新增用户数量
$zr_user_num = $this->xz_user_count($start,$end);
//前天新增用户数量
$qt_user_num = $this->xz_user_count($start2,$end2);
//计算用户新增百分比
$news['rate'] = $this->rate_count($zr_user_num,$qt_user_num);
$news['count'] = $zr_user_num;
$this->assign('news',$news);
//昨日新增用户领取礼包数量
$zr_gift_user = $this->xz_user_gift_count($start,$end);
//前天新增用户领取礼包数量
$qt_gift_user = $this->xz_user_gift_count($start2,$end2);
//昨日新增用户签到数量
$zr_point_user = $this->xz_user_point_count($start,$end);
//前天新增用户签到数量
$qt_point_user = $this->xz_user_point_count($start2,$end2);
//昨日新增用户兑换商品数量
$zr_pointshop_user = $this->xz_user_pointshop_count($start,$end);
//前天新增用户兑换商品数量
$qt_pointshop_user = $this->xz_user_pointshop_count($start2,$end2);
//昨日新增用户邀请好友数量
$zr_share_user = $this->xz_user_share_count($start,$end);
//前天新增用户邀请好友数量
$qt_share_user = $this->xz_user_share_count($start2,$end2);
//昨日新增用户充值人数
$zr_spend_user = $this->xz_user_spend_count($start,$end);
//前天新增用户充值人数
$qt_spend_user = $this->xz_user_spend_count($start2,$end2);
//昨日留存
$zr_ratention = $this->ratention_count($start,$end);
//前天留存
$qt_ratention = $this->ratention_count($start2,$end2);
//昨日行为总数
$total_num = $zr_gift_user+$zr_point_user+$zr_pointshop_user+$zr_share_user+$zr_spend_user+$zr_ratention;
//前天行为总数
$tq_total_num = $qt_gift_user+$qt_point_user+$qt_pointshop_user+$qt_share_user+$qt_spend_user+$qt_ratention;
//用户礼包领取数量
$gift = $this->formart_data($zr_gift_user,$total_num,$qt_gift_user,$tq_total_num);
$this->assign('gift',$gift);
//用户签到数量
$point = $this->formart_data($zr_point_user,$total_num,$qt_point_user,$tq_total_num);
$this->assign('point',$point);
//用户兑换商品数量
$pointshop = $this->formart_data($zr_pointshop_user,$total_num,$qt_pointshop_user,$tq_total_num);
$this->assign('pointshop',$pointshop);
//用户邀请好友数量
$share = $this->formart_data($zr_share_user,$total_num,$qt_share_user,$tq_total_num);
$this->assign('share',$share);
//用户充值数量
$money = $this->formart_data($zr_spend_user,$total_num,$qt_spend_user,$tq_total_num);
$this->assign('money',$money);
//用户留存数量
$rate = $this->formart_data($zr_ratention,$total_num,$qt_ratention,$tq_total_num);
$this->assign('rate',$rate);
}
/*
* 计算数据分析所需格式
*
*/
private function formart_data($zr_num,$zr_total_num,$qt_num,$qt_total_num){
$user_per = $this->per_count($zr_num,$zr_total_num);
$user_per2 = $this->per_count($qt_num,$qt_total_num);
$data['per'] = $user_per;
// $data['rate'] = $this->rate_count($user_per,$user_per2);
$data['rate'] = $user_per-$user_per2;
$data['count'] = $zr_num;
return $data;
}
/**
* 计算百分比
* num1 占 num2 的百分比
*/
private function per_count($num1,$num2){
if($num1>$num2){
$rate = round($num2/$num1*100,2);
}else{
$rate = round($num1/$num2*100,2);
}
return $rate;
}
/**
* 计算百分比
* num1 比 num2 增长的百分比数
*/
private function rate_count($num1,$num2){
$float = $num1-$num2;
$rate = round($float/$num2*100,2);
return $rate;
}
/*
* 获取新增用户数量
* @author <zsl>
*/
private function xz_user_count($start,$end){
$user = M('User','tab_');
$qt_num = $user->where(array('register_time'=>['between',[$start,$end]]))->count();
return $qt_num?$qt_num:0;
}
/*
* 获取新增用户领取礼包数量
* @author <zsl>
*/
private function xz_user_gift_count($start,$end){
$gift = M('GiftRecord','tab_');
$count = $gift
->field('tab_user.id as id')
->join('tab_user on(tab_user.id = tab_gift_record.user_id)')
->where(array('register_time'=>['between',[$start,$end]],'tab_gift_record.create_time'=>['between',[$start,$end]]))
->group('tab_user.id')
->select();
return count($count);
}
/*
* 获取新增用户签到数量
* @author <zsl>
*/
private function xz_user_point_count($start,$end){
$pointRecord = M('PointRecord','tab_');
$count = $pointRecord
->field('tab_user.id as id')
->join('tab_user on(tab_user.id = tab_point_record.user_id)')
->where(array('register_time'=>['between',[$start,$end]],'create_time'=>['between',[$start,$end]]))
->group('tab_user.id')
->select();
return count($count);
}
/*
* 获取新增用户兑换商品数量
* @author <zsl>
*/
private function xz_user_pointshop_count($start,$end){
$pointShopRecord = M('PointShopRecord','tab_');
$count = $pointShopRecord
->field('tab_user.id as id')
->join('tab_user on(tab_user.id = tab_point_shop_record.user_id)')
->where(array('register_time'=>['between',[$start,$end]],'create_time'=>['between',[$start,$end]]))
->group('tab_user.id')
->select();
return count($count);
}
/*
* 获取新增用户邀请好友数量
* @author <zsl>
*/
private function xz_user_share_count($start,$end){
$shareRecord = M('ShareRecord','tab_');
$count = $shareRecord
->field('tab_user.id as id')
->join('tab_user on(tab_user.id = tab_share_record.invite_id)')
->where(array('register_time'=>['between',[$start,$end]],'create_time'=>['between',[$start,$end]]))
->group('tab_user.id')
->select();
return count($count);
}
/*
* 获取新增用户充值人数
* @author <zsl>
*/
private function xz_user_spend_count($start,$end){
$depositlist = M('Deposit','tab_')->field('tab_user.id as id')
->join('tab_user on(tab_user.id = tab_deposit.user_id)')
->where(array('register_time'=>['between',[$start,$end]],'tab_deposit.create_time'=>['between',[$start,$end]]))
->group('tab_user.id')->select();
$bindlist = M('BindRecharge','tab_')->field('tab_user.id as id')
->join('tab_user on(tab_user.id = tab_bind_recharge.user_id)')
->where(array('register_time'=>['between',[$start,$end]],'tab_bind_recharge.create_time'=>['between',[$start,$end]]))
->group('tab_user.id')->select();
$spend = M('Spend','tab_');
$spendlist = $spend
->field('tab_user.id as id')
->join('tab_user on(tab_user.id = tab_spend.user_id)')
->where(array('tab_spend.pay_way'=>['gt',0],'register_time'=>['between',[$start,$end]],'tab_spend.pay_time'=>['between',[$start,$end]]))
->group('tab_user.id')
->select();
return count($spendlist)+count($depositlist)+count($bindlist);
}
/*
* 获取留存人数
* @author <zsl>
*/
private function ratention_count($start,$end){
// 新增用户
$user = M('User','tab_');
$newslist = $user->field('FROM_UNIXTIME(register_time, "%Y-%m-%d") as time,COUNT(id) AS count,group_concat(id) as id')
->where(array('register_time'=>['between',[$start,$end]]))
->group('time')->order('time desc')
->select();
// 留存
$ratention = $this->ratentionRate($newslist);
$yes = date('Y-m-d',$end);
$rate['count'] = $ratention[$yes]['count']?$ratention[$yes]['count']:0;
return $rate['count'];
}
/*
* 昨日新增用户分析
* @author 鹿文学
*/
public function newsPlayerInYestoday() {
$start = mktime(0,0,0,date('m'),date('d')-3,date('Y'));
$end = mktime(0,0,0,date('m'),date('d'),date('Y'))-1;
// 新增用户
$user = M('User','tab_');
$newslist = $user->field('FROM_UNIXTIME(register_time, "%Y-%m-%d") as time,COUNT(id) AS count,group_concat(id) as id')
->where(array('register_time'=>['between',[$start,$end]]))
->group('time')->order('time desc')
->select();
if ($newslist[0] && $newslist[0]['time']==date('Y-m-d',$end)) {
$news['count'] = $newslist[0]['count']?$newslist[0]['count']:0;
$news['rate'] = $newslist[0] && $newslist[1]? round(($newslist[0]['count']/$newslist[1]['count']-1)*100,2):($newslist[0]&&!$newslist[1]?(100):(!$newslist[0]&&$newslist[1]?(-100):0));
$start = mktime(0,0,0,date('m'),date('d')-2,date('Y'));
$this->assign('news',$news);
// 礼包
$gift = M('GiftRecord','tab_');
$giftlist = $gift->field('FROM_UNIXTIME(tab_gift_record.create_time, "%Y-%m-%d") as time,COUNT(distinct tab_gift_record.user_id) AS count')
->join('tab_user on(tab_user.id = tab_gift_record.user_id)')
->where(array('register_time'=>['between',[$start,$end]],'tab_gift_record.create_time'=>['between',[$start,$end]]))
->group('time')->order('time desc')
->select();
if ($giftlist[0] && $giftlist[0]['time']==date('Y-m-d',$end)) {
$getgift['count'] = $giftlist[0]['count']?$giftlist[0]['count']:0;
$getgift['rate'] = $giftlist[0] && $giftlist[1]? round(($giftlist[0]['count']/$giftlist[1]['count']-1)*100,2):($giftlist[0]&&!$giftlist[1]?(100):(!$giftlist[0]&&$giftlist[1]?(-100):0));
} else {
$getgift['count'] = 0;
$getgift['rate'] = $giftlist[1]?-100:0;
}
$getgift['per'] = $news['count']?round($getgift['count']/$news['count']*100,0):0;
$this->assign('gift',$getgift);
// 签到
$pointRecord = M('PointRecord','tab_');
$pointrecordlist = $pointRecord->field('FROM_UNIXTIME(create_time, "%Y-%m-%d") as time,COUNT(distinct user_id) AS count')
->join('tab_user on(tab_user.id = tab_point_record.user_id)')
->where(array('register_time'=>['between',[$start,$end]],'create_time'=>['between',[$start,$end]]))
->group('time')->order('time desc')->select();
if ($pointrecordlist[0] && $pointrecordlist[0]['time']==date('Y-m-d',$end)) {
$point['count'] = $pointrecordlist[0]['count']?$pointrecordlist[0]['count']:0;
$point['rate'] = $pointrecordlist[0] && $pointrecordlist[1]? round(($pointrecordlist[0]['count']/$pointrecordlist[1]['count']-1)*100,2):($pointrecordlist[0]&&!$pointrecordlist[1]?(100):(!$pointrecordlist[0]&&$pointrecordlist[1]?(-100):0));
}else {
$point['count'] = 0;
$point['rate'] = $pointrecordlist[1]?-100:0;
}
$point['per'] = $news['count']?round($point['count']/$news['count']*100,0):0;
$this->assign('point',$point);
// 兑换商品
$pointShopRecord = M('PointShopRecord','tab_');
$pointshoprecordlist = $pointShopRecord->field('FROM_UNIXTIME(create_time, "%Y-%m-%d") as time,COUNT(distinct user_id) AS count')
->join('tab_user on(tab_user.id = tab_point_shop_record.user_id)')
->where(array('register_time'=>['between',[$start,$end]],'create_time'=>['between',[$start,$end]]))
->group('time')->order('time desc')->select();
if ($pointshoprecordlist[0] && $pointshoprecordlist[0]['time']==date('Y-m-d',$end)) {
$pointshop['count'] = $pointshoprecordlist[0]['count']?$pointshoprecordlist[0]['count']:0;
$pointshop['rate'] = $pointshoprecordlist[0] && $pointshoprecordlist[1]? round(($pointshoprecordlist[0]['count']/$pointshoprecordlist[1]['count']-1)*100,2):($pointshoprecordlist[0]&&!$pointshoprecordlist[1]?(100):(!$pointshoprecordlist[0]&&$pointshoprecordlist[1]?(-100):0));
}else {
$pointshop['count'] = 0;
$pointshop['rate'] = $pointshoprecordlist[1]?-100:0;
}
$pointshop['per'] = $news['count']?round($pointshop['count']/$news['count']*100,0):0;
$this->assign('pointshop',$pointshop);
// 邀请好友
$shareRecord = M('ShareRecord','tab_');
$sharerecordlist = $shareRecord->field('FROM_UNIXTIME(create_time, "%Y-%m-%d") as time,COUNT(distinct invite_id) AS count')
->join('tab_user on(tab_user.id = tab_share_record.invite_id)')
->where(array('register_time'=>['between',[$start,$end]],'create_time'=>['between',[$start,$end]]))
->group('time')->order('time desc')->select();
if ($sharerecordlist[0] && $sharerecordlist[0]['time']==date('Y-m-d',$end)) {
$share['count'] = $sharerecordlist[0]['count']?$sharerecordlist[0]['count']:0;
$share['rate'] = $sharerecordlist[0] && $sharerecordlist[1]? round(($sharerecordlist[0]['count']/$sharerecordlist[1]['count']-1)*100,2):($sharerecordlist[0]&&!$sharerecordlist[1]?(100):(!$sharerecordlist[0]&&$sharerecordlist[1]?(-100):0));
}else {
$share['count'] = 0;
$share['rate'] = $sharerecordlist[1]?-100:0;
}
$share['per'] = $news['count']?round($share['count']/$news['count']*100,0):0;
$this->assign('share',$share);
// 充值
$spend = M('Spend','tab_');
$spendlist = $spend->field('FROM_UNIXTIME(pay_time, "%Y-%m-%d") as time,COUNT(distinct user_id) AS count')
->join('tab_user on(tab_user.id = tab_spend.user_id)')
->where(array('register_time'=>['between',[$start,$end]],'pay_time'=>['between',[$start,$end]]))
->group('time')->order('time desc')->select();
if ($spendlist[0] && $spendlist[0]['time']==date('Y-m-d',$end)) {
$money['count'] = $spendlist[0]['count']?$spendlist[0]['count']:0;
$money['rate'] = $spendlist[0] && $spendlist[1]? round(($spendlist[0]['count']/$spendlist[1]['count']-1)*100,2):($spendlist[0]&&!$spendlist[1]?(100):(!$spendlist[0]&&$spendlist[1]?(-100):0));
} else {
$money['count'] = 0;
$money['rate'] = $spendlist[1]?-100:0;
}
$money['per'] = $news['count']?round($money['count']/$news['count']*100,0):0;
$this->assign('money',$money);
// 留存
$ratention = $this->ratentionRate($newslist);
$yes = date('Y-m-d',$end);
$one = date('Y-m-d',$end-86400);
$rate['count'] = $ratention[$yes]['count']?$ratention[$yes]['count']:0;
$rate['rate'] = $ratention[$yes] && $ratention[$one]? ($ratention[$yes]['retentionrate']-$ratention[$one]['retentionrate']):($ratention[$yes]&&!$ratention[$one]?(100):(!$ratention[$yes]&&$ratention[$one]?(-100):0));
$rate['per'] = $news['count']?round($rate['count']/$news['count']*100,0):0;
$this->assign('rate',$rate);
}
}
/**
* 玩家留存率
* @param array $news 新增用户数据(按天分组)
* @param array $map 条件数组
* @param integer $flag 留存类型11天33天77天
* @param string $fieldname 字段别名
* @param string $group 分组字段名
* @return array 详细数据
* @author 鹿文学
*/
private function ratentionRate($news=[],$map=[],$flag=1,$fieldname='retentionrate',$group='login_time') {
$map['lock_status']=1;
$data = array();
$user = M('User','tab_');
foreach ($news as $value) {
$ct1 = strtotime("+$flag day",strtotime($value['time']));
$ct2 = strtotime("+1 day",$ct1)-1;
$map['tab_user_login_record.login_time'] = array(array('egt',$ct1),array('elt',$ct2));
$map['user_id']=array('in',$value['id']);
$count = count(explode(',',$value['id']));
$d=$user
->field('count(distinct user_id) as '.$fieldname.' ,FROM_UNIXTIME(tab_user_login_record.login_time,"%Y-%m-%d") as '.$group)
->join('tab_user_login_record on tab_user.id=tab_user_login_record.user_id','right')
->where($map)
->group($group)
->select();
if ($d)
$data[$value['time']]=array(
$group=>$value['time'],'key'=>$fieldname,'count'=>($d[0][$fieldname]==0)?0:$d[0][$fieldname],
$fieldname=>($d[0][$fieldname]==0)?0:sprintf("%.2f",($d[0][$fieldname]/$count)*100)
);
}
return $data;
}
public function foreach_stat($dday, $type = 1)
{
$ss="";
foreach ($dday as $key => $value) {
if ($type == 1) {
$ss .= '"' . $value . '",';
} else {
$ss .= $value . ',';
}
}
return $ss;
}
public function foreach_data($day, $data, $type = 1)
{
foreach ($day as $s => $d) {
$spendd[$s]['time'] = $d;
$spendd[$s]['count'] = 0;
}
if ($type == 1) {
$data = array_combine(array_column($data,'time'),array_column($data,'cg'));
foreach ($spendd as $s => $d) {
$spendd[$s]['count'] = (int)$data[$d['time']];
}
/* foreach ($spendd as $s => $d) {
foreach ($data as $key => $value) {
if ($value['time'] == $d['time']) {
$spendd[$s]['count'] = $value['cg'];//(int)$value['cg'];
}
}
} */
} else {
foreach ($spendd as $s => $d) {
$a = 0;
foreach ($data as $key => $value) {
if ($value['time'] == $d['time']) {
$a++;
$spendd[$s]['count'] = $a;
}
}
}
}
return $spendd;
}
private function daiban()
{
$user = M("User", "tab_");
$game = M("Game", "tab_");
$spend = M('Spend s use index(game_stayus)', "tab_");
$deposit = M('Deposit', "tab_");
$apply = M('Apply', "tab_");
$applyapp = M('app_apply', "tab_");
$promote = M("Promote", "tab_");
$developer = M("Developers", "tab_");
$pregist = $promote->where(array('status' => 0))->count();//渠道申请待审核数
$daiban['pcount'] = $pregist;
$developerlist = $developer->where(array('status' => -1))->count();//渠道申请待审核数
$daiban['dcount'] = $developerlist;
$applyandgame = $apply->where(['sdk_version'=>1,'enable_status'=>0])->count();//渠道分包待打包数
$daiban['applyandgame'] = $applyandgame;
$applyiosgame = $apply->where(['sdk_version'=>2,'enable_status'=>0])->count();//渠道分包待打包数
$daiban['applyiosgame'] = $applyiosgame;
$withc = M('Withdraw', 'tab_')->where(array('status' => 0, 'promote_id' => array('gt', 0)))->count();//渠道提现待审核数
$daiban['withc'] = $withc;
$spenc = $spend->where(array('pay_game_status' => 0, 'pay_status' => 1))->count();//游戏充值待补单数
$daiban['spenc'] = $spenc;
$applyandapp = $applyapp->where(array('app_version'=>1,'dow_url' => ''))->count();//APP分包待打包数
$daiban['applyandapp'] = $applyandapp;
$applyiosapp = $applyapp->where(array('app_version'=>2,'dow_url' => ''))->count();//APP分包待打包数
$daiban['applyiosapp'] = $applyiosapp;
$gamecount = $game->where(array('apply_status'=>0,'developers' => array('GT',0)))->count();//APP分包待打包数
$daiban['gamecount'] = $gamecount;
$msgc = M('Msg', 'tab_')->where(array('user_id' => UID, 'status' => 2))->count();//站内通知
$daiban['msgc'] = $msgc;
$ver = M('promote','tab_')->where(['ver_status'=>3])->count();
$editver = M('promote','tab_')->where(['ver_status'=>4])->count();
$daiban['ver'] = $ver;
$daiban['editver'] = $editver;
$this->assign('daiban', $daiban);
}
/*
* 提示事项
* @author <jszsl001@163.com>
*/
private function tishi(){
//【返利设置】
$fmap['endtime'] = [['neq',''],['lt',time()]];
$fl_set = M('rebate','tab_')->field('id,game_id,game_name')->where($fmap)->order('endtime desc')->select();
$this->assign('fl_set',$fl_set);
//【礼包列表】
/* $lt_num = 10; //礼包提示数量
#统一码数量不足礼包
//$gty['is_unicode'] = 1;
//$gty['unicode_num'] = ['lt',$lt_num];
//$ty_gift = M('giftbag','tab_')->where($gty)->field('id,game_name,server_id,server_name,giftbag_name,novice')->select();
#非统一码数量不足
//$gmap['is_unicode'] = 0;
$fty_gift_list = M('giftbag','tab_')->where($gmap)->field('id,game_name,server_id,server_name,giftbag_name,novice')->select();
foreach($fty_gift_list as $v){
$num = count(explode(',',$v['novice']));
if($num<$lt_num){
$new_gift_list[] = $v;
}
}
//$gift_list = array_merge($ty_gift,$new_gift_list); */
/* 2018-08-24 lwx add start */
$gift_list = M('giftbag','tab_')->field('tab_giftbag.id,tab_giftbag.giftbag_name,tab_giftbag.server_id,tab_giftbag.server_name,tab_game.game_name')
->join('tab_game on (tab_game.id = tab_giftbag.game_id)','inner')
->where('LENGTH(tab_giftbag.novice)-LENGTH(REPLACE(tab_giftbag.novice, ",", ""))+1<10')->select();
/* 2018-08-24 lwx add end */
$this->assign('gift_list',$gift_list);
}
private function cate($name)
{
$cate = M("Category");
$c = $cate->field('id')->where("status=1 and display=1 and name='$name'")->buildSql();
$ca = $cate->field('id')->where("status=1 and display=1 and pid=$c")->select();
foreach ($ca as $c) {
$d[] = $c['id'];
}
return "'" . implode("','", $d) . "'";
}
private function idata($data, $flag = false, $field)
{
$day = array_flip($this->every_day(7));//七天日期
$data = array_merge($day, $data);
$d = $c = '';
$max = 0;
$min = 0;
if (!empty($data)) {
ksort($data);
// $data = array_reverse($data);
if ($flag) {
foreach ($data as $k => $v) {
if (!empty($v)) {
foreach ($v as $j => $u) {
$total += $u[$field];
}
$toto[] = $total;
} else {
$toto[] = $total = 0;
}
if ($min > $total) {
$min = $total;
}
if ($max < $total) {
$max = $total;
}
$c .= '"' . $k . '",';
$total = 0;
}
$d = implode(',', $toto) . ',';
} else {
foreach ($data as $k => $v) {
$count = empty($v) ? 0 : count($v);
if ($min > $count) {
$min = $count;
}
if ($max < $count) {
$max = $count;
}
$d .= $count . ',';
$c .= '"' . $k . '",';
}
}
$d = substr($d, 0, -1);
$c = substr($c, 0, -1);
}
$max++;
$pay = array(
'min' => $min,
'max' => $max,
'data' => $d,
'cate' => $c
);
return $pay;
}
private function linepay()
{
$spend = M('Spend', "tab_");
$deposit = M('Deposit', "tab_");
$week = $this->total(9);
$samount = $spend->field("pay_amount,pay_time as time")->where("pay_status=1 and pay_time $week")->select();
$damount = $deposit->field("pay_amount,create_time as time")->where("pay_status=1 and create_time $week")->select();
if (!empty($samount) && !empty($damount))
$data = array_merge($samount, $damount);
else {
if (!empty($samount))
$data = $samount;
else if (!empty($damount))
$data = $damount;
else
$data = '';
}
$result = array();
$this->jump($data, $result, 8);
return $result;
}
private function lineregister()
{
$week = $this->total(9);
$user = M("User", "tab_")->field("account,register_time as time")->where("lock_status=1 and register_time $week")->select();
if (!empty($user))
$data = $user;
else
$data = array(0, 0, 0, 0, 0, 0, 0);
$result = array();
$this->jump($data, $result, 8);
return $result;
}
protected function jump(&$a, &$b, $m, $n = 0)
{
$num = count($a);
if ($m == 1) {
return;
} else {
$time = time();
if ($m < 8) {
$c = 8 - $m;
$time = $time - ($c * 86400);
}
$m -= 1;
$t = date("Y-m-d", $time);
if (empty($a) && count($b) < 8) {
$b[$t] = "";
} else {
foreach ($a as $k => $g) {
$st = date("Y-m-d", $g['time']);
if ($t === $st) {
$b[$t][] = $g;
unset($a[$k]);
}
if ($b[$t] == '') {
$b[$t] = 0;
}
}
$a = array_values($a);
}
return $this->jump($a, $b, $m, $num);
}
}
private function total($type)
{
switch ($type) {
case 1: { // 今天
$start = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
$end = mktime(0, 0, 0, date('m'), date('d') + 1, date('Y')) - 1;
};
break;
case 3: { // 本月
$start = mktime(0, 0, 0, date('m'), 1, date('Y'));
$end = mktime(0, 0, 0, date('m') + 1, 1, date('Y')) - 1;
};
break;
case 4: { // 本年
$start = mktime(0, 0, 0, 1, 1, date('Y'));
$end = mktime(0, 0, 0, 1, 1, date('Y') + 1) - 1;
};
break;
case 5: { // 昨天
$start = mktime(0, 0, 0, date('m'), date('d') - 1, date('Y'));
$end = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
};
break;
case 9: { // 前七天
$start = mktime(0, 0, 0, date('m'), date('d') - 6, date('Y'));
$end = mktime(date('H'), date('m'), date('s'), date('m'), date('d'), date('Y'));
};
break;
default:
$start = '';
$end = '';
}
return " between $start and $end ";
}
//以当前日期 默认前七天
private function every_day($m = 7)
{
$time = array();
for ($i = 0; $i < $m; $i++) {
$time[] = date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') - $i, date('Y')));
}
return $time;
}
private function huanwei($total)
{
if (!strstr($total, '.')) {
$total = $total . '.00';
}
$total = empty($total) ? '0' : trim($total . ' ');
$len = strlen($total);
if ($len > 8) { // 亿
$len = $len - 12;
$total = $len > 0 ? (round(($total / 1e12), 2) . '万亿') : round(($total / 1e8), 2) . '亿';
} else if ($len > 4) { // 万
$total = (round(($total / 10000), 2)) . 'w';
}
return $total;
}
}