214 lines
6.4 KiB
PHP
214 lines
6.4 KiB
PHP
<?php
|
|
namespace app\admin\controller;
|
|
use app\common\controller\Admin;
|
|
use think\Request;
|
|
use think\Loader;
|
|
use think\Db;
|
|
//用户分计划 统计分析
|
|
class Admonitor extends Admin{
|
|
|
|
public function index(){
|
|
$data = input('');
|
|
|
|
|
|
$this->setMeta('计划监控');
|
|
return $this->fetch();
|
|
}
|
|
|
|
public function refreshs(){
|
|
|
|
$list = $this->getallad('yyls');
|
|
$timarr = $this->timetype(3);
|
|
$startdata = strtotime($timarr['startdata']);
|
|
$enddata = strtotime($timarr['enddata']);
|
|
$rate = input('rate');
|
|
if(empty($rate)){
|
|
$rate = 50;
|
|
}
|
|
foreach($list as $k=>$v){
|
|
$list[$k]['regNum'] = db('member')->where('adid',$v['adId'])->where('reg_time', 'between', [$startdata,$enddata])->count('uid');
|
|
$list[$k]['pay'] = db('order')->where('iscontrol',0)->where(['adid'=>$v['adId'],'status'=>1,'is_complex'=>1])->where('create_time', 'between', [$startdata,$enddata])->sum('money');
|
|
$list[$k]['pay'] = empty($list[$k]['pay'])?0:$list[$k]['pay'];
|
|
$list[$k]['rates'] = (empty($v['statCost']) || empty($list[$k]['pay']))?0:round($list[$k]['pay'] / $v['statCost'],2)*100;
|
|
if($list[$k]['rates']>$rate){
|
|
unset($list[$k]);
|
|
}
|
|
}
|
|
|
|
$list = $this->array_sort($list,'rates','rates');
|
|
|
|
exit(json_encode(array(
|
|
'status'=>1,
|
|
'list'=>$list
|
|
)));
|
|
}
|
|
|
|
public function getinfo(){
|
|
|
|
$adid = input('adid');
|
|
$tim = input('tim');
|
|
if($tim=="今日"){
|
|
$timarr = $this->timetype(3);
|
|
$t = 3;
|
|
}elseif($tim=="昨日"){
|
|
$timarr = $this->timetype(4);
|
|
$t = 4;
|
|
}
|
|
$list = $this->getads($adid,$t);
|
|
$startdata = strtotime($timarr['startdata']);
|
|
$count = 0;
|
|
foreach($list as $k=>$v){
|
|
$count++;
|
|
if($count==1){
|
|
$list[$k]['createdAt'] = '开始消耗:'.$v['createdAt'];
|
|
}
|
|
$enddata = strtotime($v['createdAt']);
|
|
$list[$k]['regNum'] = db('member')->where('adid',$adid)->where('reg_time', 'between', [$startdata,$enddata])->count('uid');
|
|
$pay = db('order')->where('iscontrol',0)->where(['adid'=>$adid,'status'=>1,'is_complex'=>1])->where('create_time', 'between', [$startdata,$enddata])->sum('money');
|
|
$list[$k]['pay'] = empty($pay)?0:$pay;
|
|
}
|
|
|
|
exit(json_encode(array(
|
|
'status'=>1,
|
|
'activities'=>$list
|
|
)));
|
|
}
|
|
|
|
public function getallad($site,$time=3){
|
|
$timarr = $this->timetype($time);
|
|
$arr['startTime'] = $timarr['startdata'];
|
|
$arr['endTime'] = $timarr['enddata'];
|
|
$arr['site'] = $site;
|
|
$arr = json_encode($arr);
|
|
$url = 'http://ocean.zxklll.cn/api/v1/ocean/cost/realTimeBySite';
|
|
$res = $this->pushMessageToClient($url,$arr);
|
|
$res = json_decode($res,true);
|
|
if($res['code']=='200'){
|
|
return $res['result'];
|
|
}else{
|
|
return $res['message'];
|
|
}
|
|
}
|
|
|
|
public function getads($adid,$type=3){
|
|
$t = $this->timetype($type);
|
|
$startTime = $t['startdata'];
|
|
$endTime = $t['enddata'];
|
|
$url = 'http://ocean.zxklll.cn/api/v1/ocean/cost/adCostLog';
|
|
$arr = array(
|
|
'adId'=>intval($adid),
|
|
'startTime'=>strval($startTime),
|
|
'endTime'=>strval($endTime)
|
|
);
|
|
$arr = json_encode($arr);
|
|
$res = $this->pushMessageToClient($url,$arr);
|
|
$res = json_decode($res,true);
|
|
if($res['code']=='200'){
|
|
return $res['result'];
|
|
}else{
|
|
return $res['message'];
|
|
}
|
|
}
|
|
|
|
//时间格式返回
|
|
public function timetype($t){
|
|
if($t==1){ //一年内
|
|
$startdata = '2021-03-16 0:0:0';
|
|
$enddata = strtotime(date('Y-m-d H:i:s')); //现在
|
|
$f = date('i');
|
|
$enddata = $enddata+((60-$f)*60);
|
|
$enddata = date('Y-m-d H:i:s',$enddata);
|
|
}elseif($t==2){ //一个小时内
|
|
$startdata = date('Y-m-d H:0:0');
|
|
$enddata = strtotime(date('Y-m-d H:i:s')); //现在
|
|
$f = date('i');
|
|
$enddata = $enddata+((60-$f)*60);
|
|
$enddata = date('Y-m-d H:i:s',$enddata);
|
|
}elseif($t==3){ //一天内
|
|
$startdata = date('Y-m-d 0:0:0');
|
|
$enddata = strtotime(date('Y-m-d H:i:s')); //现在
|
|
$f = date('i');
|
|
$enddata = $enddata+((60-$f)*60);
|
|
$enddata = date('Y-m-d H:i:s',$enddata);
|
|
}elseif($t==4){ //昨天
|
|
$startdata = date('Y-m-d H:i:s',mktime(0,0,0,date('m'),date('d')-1,date('Y')));
|
|
$enddata = date('Y-m-d H:i:s',mktime(0,0,0,date('m'),date('d'),date('Y')));
|
|
}elseif($t==5){ //一个小时前
|
|
$startdata = date("Y-m-d H:0:0", strtotime("-1 hour"));
|
|
$enddata = date("Y-m-d H:0:0");
|
|
}
|
|
$arr = array(
|
|
'startdata'=>$startdata,
|
|
'enddata'=>$enddata
|
|
);
|
|
return $arr;
|
|
}
|
|
|
|
/**
|
|
* 排序
|
|
*/
|
|
public function array_sort($arr, $keys, $type='asc'){
|
|
$keysvalue = $new_array = array();
|
|
foreach ($arr as $k=>$v){
|
|
$keysvalue[$k] = $v[$keys];
|
|
}
|
|
if($type == 'asc'){
|
|
asort($keysvalue);
|
|
}else{
|
|
arsort($keysvalue);
|
|
}
|
|
reset($keysvalue);
|
|
foreach ($keysvalue as $k=>$v){
|
|
$new_array[] = $arr[$k];
|
|
}
|
|
return $new_array;
|
|
}
|
|
|
|
public function getTypeName($int){
|
|
if($int=='0'){
|
|
return '新用户';
|
|
}elseif($int==14){
|
|
return '高净值';
|
|
}elseif($int==13){
|
|
return '中净值';
|
|
}elseif($int==12){
|
|
return '初净值';
|
|
}elseif($int==11){
|
|
return '低净值';
|
|
}elseif($int==4 || $int==5 || $int==6){
|
|
return '潜在用户';
|
|
}elseif($int==8){
|
|
return '无效老用户';
|
|
}elseif($int==7){
|
|
return '无效新用户';
|
|
}else{
|
|
return '无';
|
|
}
|
|
}
|
|
|
|
public function pushMessageToClient($url,$data){
|
|
//初使化init方法
|
|
$ch = curl_init();
|
|
//指定URL
|
|
curl_setopt($ch, CURLOPT_URL, $url);
|
|
//设定请求后返回结果
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
|
//声明使用POST方式来进行发送
|
|
curl_setopt($ch, CURLOPT_POST, 1);
|
|
//发送什么数据呢
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
|
|
//忽略证书
|
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
|
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
|
|
//忽略header头信息
|
|
curl_setopt($ch, CURLOPT_HEADER, 0);
|
|
//设置超时时间
|
|
curl_setopt($ch, CURLOPT_TIMEOUT,600);
|
|
//发送请求
|
|
$output = curl_exec($ch);
|
|
curl_close($ch);
|
|
//返回数据
|
|
return $output;
|
|
}
|
|
|
|
} |