2023-01-29 10:26:52 +08:00

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;
}
}