1431 lines
46 KiB
PHP
1431 lines
46 KiB
PHP
<?php
|
||
namespace app\admin\controller;
|
||
use app\common\controller\Admin;
|
||
use think\Request;
|
||
use think\Loader;
|
||
use think\Cache;
|
||
|
||
/**
|
||
* 回传信息配置
|
||
*/
|
||
class Transfer extends Admin{
|
||
|
||
public function _initialize(){
|
||
parent::_initialize();
|
||
}
|
||
|
||
//列表首页
|
||
public function index(){
|
||
$remark = input('remark');
|
||
$linkid = input('linkid');
|
||
$openrun = input('openrun');
|
||
$adminid = session('user_auth.uid');
|
||
$groupId = session('user_auth.group');
|
||
$where = array();
|
||
$or = 'id desc';
|
||
if($groupId!==999 && $groupId!==9){
|
||
$where['gid'] = $adminid;
|
||
}
|
||
if($groupId=='9'){
|
||
$where['allot_uid'] = ['in',[0,$adminid]];
|
||
}
|
||
// 查看是否是投手人员
|
||
$ishide = 2;
|
||
if($groupId=='999' || $groupId=='9'){
|
||
$ishide = 1;
|
||
}
|
||
if($linkid){
|
||
$where['linkid'] = $linkid;
|
||
}
|
||
if($remark){
|
||
$where['remark'] = array('like',"%".$remark."%");
|
||
}
|
||
if($openrun){
|
||
$where['run'] = $openrun;
|
||
$or = 'runtime desc';
|
||
}
|
||
$res=db('transfer')->where($where)->order($or)->paginate(6);
|
||
$page = $res->render();
|
||
$data=$res->all();
|
||
foreach($data as $k=>$v){
|
||
$data[$k]['ads'] = db('payclickid')->field('adid,aidname,count(aidname) as count')->where('ldurl',$v['id'])->group('adid')->select();
|
||
}
|
||
$res = $data;
|
||
|
||
//公众号列表
|
||
$wechat_list = db('promotewechats')->field('name,nickname')->select();
|
||
//投手uid列表
|
||
$allots = db('member')->field('uid,username')->where(['group'=>9])->select();
|
||
//巨量域名
|
||
$domains = db('promote_domain')->select();
|
||
//充值项列表
|
||
$money_list = db('pay_setting')->field('price')->where('status',1)->select();
|
||
|
||
$this->assign('allots', $allots);
|
||
$this->assign('money_list', $money_list);
|
||
$this->assign('domains', $domains);
|
||
$this->assign('wechat_list', $wechat_list);
|
||
$this->assign('ishide', $ishide);
|
||
$this->assign('res', $res);
|
||
$this->assign('page', $page);
|
||
$this->setMeta('回传配置');
|
||
return $this->fetch();
|
||
}
|
||
|
||
//搜索页
|
||
public function searchfor(){
|
||
$data = input('');
|
||
$where = array();
|
||
if($data['domainName']!==''){
|
||
$where['domainName'] = $data['domainName'];
|
||
}
|
||
if($data['templateId']!==''){
|
||
$where['templateId'] = $data['templateId'];
|
||
}
|
||
if($data['novelId']!==''){
|
||
$where['novelId'] = $data['novelId'];
|
||
}
|
||
if($data['regratio']!==''){
|
||
$where['regratio'] = $data['regratio'];
|
||
}
|
||
if($data['payratio']!==''){
|
||
$where['payratio'] = $data['payratio'];
|
||
}
|
||
if($data['chapter']!==''){
|
||
$where['chapter'] = $data['chapter'];
|
||
}
|
||
if($data['remark']!==''){
|
||
$where['remark'] = $data['remark'];
|
||
}
|
||
if($data['content']!==''){
|
||
$where['content'] = $data['content'];
|
||
}
|
||
if($data['channel']!==''){
|
||
$where['channel'] = $data['channel'];
|
||
}
|
||
|
||
//公众号列表
|
||
$wechat_list = db('promotewechats')->field('name')->select();
|
||
$res=M('transfer')->where($where)->order('id desc')->paginate(5,false,['query' => request()->param(),]);
|
||
$page = $res->render();
|
||
$this->assign('wechat_list', $wechat_list);
|
||
$this->assign('res', $res);
|
||
$this->assign('page', $page);
|
||
$this->setMeta('回传配置');
|
||
return $this->fetch('index');
|
||
}
|
||
|
||
//添加数据
|
||
public function add(){
|
||
$data = input('post.');
|
||
$isnovelId = db('novel')->where('id',$data['novelId'])->value('id');
|
||
if(empty($isnovelId)){
|
||
exit(json_encode(array('status'=>2,'reg'=>'小说不存在哦')));
|
||
}
|
||
if(!$data['linkid']==0){
|
||
$islinkid = db('transfer')->where('linkid',$data['linkid'])->count();
|
||
if($islinkid>0){
|
||
exit(json_encode(array('status'=>2,'reg'=>'重复推广链接ID')));
|
||
}
|
||
}
|
||
|
||
$adminid = session('user_auth.uid');
|
||
$bigpicture = request()->file('bigpicture');
|
||
//top大图
|
||
if($bigpicture){
|
||
$info_top = $bigpicture->validate(['size'=>2048000,'ext'=>'jpg,png,gif'])->move(ROOT_PATH . 'public' . DS . 'uploads');
|
||
if($info_top){
|
||
$bigpictureurl = '/public'.'/'.'uploads'.'/'.$info_top->getSaveName();
|
||
compressedImage(ROOT_PATH.$bigpictureurl, ROOT_PATH.$bigpictureurl, 40);
|
||
}else{
|
||
exit(json_encode(array('status'=>2,'reg'=>'图片不能超过2mb')));
|
||
}
|
||
}
|
||
$wechats_info = db('promotewechats')->field('nickname,avatar,bottomimg')->where('name',$data['wechatId'])->find();
|
||
$arr = array(
|
||
'domainName'=>$data['domainName'],
|
||
'novelId'=>$data['novelId'],
|
||
'wechatId'=>$data['wechatId'],
|
||
'chapter'=>$data['chapter'],
|
||
'remark'=>$data['remark'],
|
||
'wxcopy'=>$data['wxcopy'],
|
||
'bigpicture'=>$bigpictureurl,
|
||
'buttonimg'=>$wechats_info['bottomimg'],
|
||
'nickname'=>$wechats_info['nickname'],
|
||
'avatar'=>$wechats_info['avatar'],
|
||
'addtime'=>time(),
|
||
'gsname'=>$data['gsname'],
|
||
'gid'=>$adminid,
|
||
'bookname'=>$data['bookname'],
|
||
'linkid'=>$data['linkid'],
|
||
'ybook'=>$data['ybook'],
|
||
'allot_uid'=>$data['allot_uid'],
|
||
'ad_name'=>$data['ad_name'],
|
||
'controlaccout_open'=>1,
|
||
);
|
||
$res = M('transfer')->insert($arr);
|
||
$linkid = db('transfer')->getLastInsID();
|
||
$pageurl = config('web_site_url').'/promotelink/index/'.$data['novelId'].'/'.$linkid;
|
||
//把生成的落地页生成静态网页
|
||
$stream_opts = [
|
||
"ssl" => [
|
||
"verify_peer"=>false,
|
||
"verify_peer_name"=>false,
|
||
]
|
||
];
|
||
$html = file_get_contents($pageurl,false,stream_context_create($stream_opts));
|
||
$pathdir = date('Y-m-d',time()); //目录
|
||
//$path = rand_string(6);//文件名
|
||
$testdir = "html/".$pathdir;
|
||
if(!file_exists($testdir)){
|
||
mkdir($testdir,0755,true); //创建目录
|
||
}
|
||
$filename = $testdir.'/'.rand_string(6).'.html'; //文件名 随机*/
|
||
$handle = fopen($filename,'a');
|
||
fwrite($handle,$html);
|
||
$urls = $data['domainName'].'/'.$filename;
|
||
db('transfer')->where('id',$linkid)->setField('pageurl',$urls);
|
||
if($res){
|
||
exit(json_encode(array('status'=>1,'reg'=>'成功')));
|
||
}else{
|
||
exit(json_encode(array('status'=>2,'reg'=>'失败')));
|
||
}
|
||
}
|
||
|
||
//开启自动控户
|
||
public function controlaccoutopen(){
|
||
$d = input('');
|
||
if($d['t']==1){
|
||
// $controlaccout_time = db('transfer')->where('id',$d['id'])->value('controlaccout_time');
|
||
// if((time()-$controlaccout_time)<119){
|
||
// exit(json_encode(array('status'=>2,'msg'=>'操作频繁 请2分钟后在试')));
|
||
// }
|
||
// $ip = "http://127.0.0.1:9517";
|
||
// $pushdata = array(
|
||
// 'id'=>$d['id']
|
||
// );
|
||
// pushMessageToClient($ip,json_encode($pushdata));
|
||
db('transfer')->where('id',$d['id'])->update(['controlaccout_open'=>$d['t']]);
|
||
exit(json_encode(array('status'=>1,'msg'=>'开启成功')));
|
||
}else{
|
||
db('transfer')->where('id',$d['id'])->update(['controlaccout_open'=>$d['t']]);
|
||
exit(json_encode(array('status'=>1,'msg'=>'关闭成功')));
|
||
}
|
||
}
|
||
|
||
//删除
|
||
public function del(){
|
||
$id = input('id');
|
||
$pageurl = db('transfer')->field('pageurl,bigpicture')->where('id',$id)->find();
|
||
$htmlUrl = parseurl($pageurl['pageurl']);
|
||
//删除该链接生成的html文件
|
||
if(file_exists($htmlUrl)){
|
||
@unlink($htmlUrl);
|
||
}
|
||
//删除大图
|
||
$pageurl['bigpicture'] = substr($pageurl['bigpicture'],1);
|
||
if(file_exists($pageurl['bigpicture'])){
|
||
@unlink($pageurl['bigpicture']);
|
||
}
|
||
$res= M('transfer')->where('id',$id)->delete();
|
||
if($res){
|
||
return 1;
|
||
}else{
|
||
return 0;
|
||
}
|
||
}
|
||
|
||
//修改
|
||
public function up(){
|
||
$data = input('post.');
|
||
$cf = db('transfer')->where('linkid',$data['linkid'])->value('linkid');
|
||
if(!$cf==$data['linkid']){
|
||
if($cf){
|
||
exit(json_encode(array('status'=>2,'reg'=>'推广链接ID已在使用')));
|
||
}
|
||
}
|
||
// 每次切换比例 重置充值次数
|
||
$payratio = M('transfer')->where('id',$data['id'])->value('payratio');
|
||
if($payratio!=$data['payratio']){
|
||
M('transfer')->where('id',$data['id'])->update(['numberofpayments'=>0]);
|
||
}
|
||
$wechats_info = db('promotewechats')->field('nickname,avatar,bottomimg')->where('name',$data['wechatId'])->find();
|
||
$arr = array(
|
||
'novelId'=>$data['novelId'],
|
||
'regratio'=>$data['regratio'],
|
||
'payratio'=>$data['payratio'],
|
||
'wechatId'=>$data['wechatId'],
|
||
'nickname'=>$wechats_info['nickname'],
|
||
'avatar'=>$wechats_info['avatar'],
|
||
'buttonimg'=>$wechats_info['bottomimg'],
|
||
'chapter'=>$data['chapter'],
|
||
'remark'=>$data['remark'],
|
||
'wxcopy'=>$data['wxcopy'],
|
||
'bookname'=>$data['bookname'],
|
||
'linkid'=>$data['linkid'],
|
||
'ybook'=>$data['ybook'],
|
||
'allot_uid'=>$data['allot'],
|
||
'ad_name'=>$data['ad_name']
|
||
);
|
||
$res = M('transfer')->where('id',$data['id'])->update($arr);
|
||
if($res){
|
||
exit(json_encode(array('status'=>1,'reg'=>'成功')));
|
||
}else{
|
||
exit(json_encode(array('status'=>2,'reg'=>'没有值修改')));
|
||
}
|
||
}
|
||
|
||
// 重新生成H5落地页
|
||
public function rebirthhtml(){
|
||
$id = input('id');
|
||
if(empty($id)){
|
||
exit;
|
||
}
|
||
$html_config = db('transfer')->field('novelId,chapter,pageurl')->where('id',$id)->find();
|
||
$filename=parseurl($html_config['pageurl']);
|
||
//清空原html代码
|
||
@file_put_contents($filename,'');
|
||
$pageurl = config('web_site_url').'/promotelink/index/'.$html_config['novelId'].'/'.$id;
|
||
//重写生成静态网页
|
||
$stream_opts = [
|
||
"ssl" => [
|
||
"verify_peer"=>false,
|
||
"verify_peer_name"=>false,
|
||
]
|
||
];
|
||
$html = file_get_contents($pageurl,false,stream_context_create($stream_opts));
|
||
if(file_exists($filename)){
|
||
$handle = fopen($filename,'w+');
|
||
fwrite($handle,$html);
|
||
return '重新生成成功';
|
||
}else{
|
||
return '重写生成文件不存在';
|
||
}
|
||
|
||
|
||
|
||
}
|
||
|
||
|
||
//重写生成全部落地页
|
||
public function rebirthhtmls(){
|
||
|
||
$s = db('transfer')->select();
|
||
foreach($s as $k=>$v){
|
||
|
||
$arr=explode("/", $v['pageurl']);
|
||
$filename=$arr[count($arr)-3].'/';
|
||
$filename.=$arr[count($arr)-2].'/';
|
||
$filename.=$arr[count($arr)-1];
|
||
//清空原html代码
|
||
file_put_contents($filename,'');
|
||
$pageurl = config('web_site_url').'/promotelink/index/'.$v['novelId'].'/'.$v['id'];
|
||
//重写生成静态网页
|
||
$html = file_get_contents($pageurl);
|
||
if(file_exists($filename)){
|
||
$handle = fopen($filename,'a');
|
||
fwrite($handle,$html);
|
||
return '更新成功';
|
||
}else{
|
||
return '重写生成文件不存在';
|
||
}
|
||
|
||
}
|
||
|
||
}
|
||
|
||
// 修改落地页TOP图片
|
||
public function uptopimg(){
|
||
$data = input('post.');
|
||
$img = request()->file('img');
|
||
//top大图
|
||
if($img){
|
||
$yimg = db('transfer')->where('id',$data['id'])->value('bigpicture');
|
||
$info_top = $img->move(ROOT_PATH . 'public' . DS . 'uploads');
|
||
if($info_top){
|
||
$yimg = substr($yimg,1);
|
||
//删除原来图片
|
||
if(file_exists($yimg)){
|
||
@unlink($yimg);
|
||
}
|
||
$bigpictureurl = '/public'.'/'.'uploads'.'/'.$info_top->getSaveName();
|
||
compressedImage(ROOT_PATH.$bigpictureurl, ROOT_PATH.$bigpictureurl, 40);
|
||
$res = db('transfer')->where('id',$data['id'])->update(array('bigpicture'=>$bigpictureurl));
|
||
if($res){
|
||
return 1;
|
||
}else{
|
||
return 2;
|
||
}
|
||
}else{
|
||
echo $file->getError();
|
||
}
|
||
|
||
}else{
|
||
return '修改失败';
|
||
}
|
||
|
||
}
|
||
|
||
// 回传日志
|
||
public function returnlog(){
|
||
$startdata = input('startdata');
|
||
$enddata = input('enddata');
|
||
$id = input('id');
|
||
$aidname = input('aidname');
|
||
$orderStatus = input('orderStatus');
|
||
$payStatus = input('payStatus');
|
||
$payStatus = $payStatus?1:2;
|
||
$orderStatus = empty($orderStatus)?1:$orderStatus;
|
||
if($startdata && $enddata){
|
||
// TP5有个bug url表单数据有空值自动转化了+号 因此需要去掉+
|
||
$startdata = str_replace('+',' ',$startdata);
|
||
$enddata = str_replace('+',' ',$enddata);
|
||
$text = "从 ".$startdata." 开始 到 ".$enddata." 的数据统计";
|
||
$startdata = strtotime($startdata);
|
||
$enddata = strtotime($enddata);
|
||
}else{
|
||
$startdata = strtotime(date('Y-m-d')); //一天内
|
||
$enddata = time(); //现在
|
||
$text = "从 ".date('Y-m-d')."凌晨开始 到 ".date('Y-m-d h:i:s');
|
||
}
|
||
|
||
$hc = db('returnpay_log')->where(array('ldurl'=>$id,'status'=>1))->whereTime('addtime', 'between', [$startdata,$enddata])->count();
|
||
$nhc = db('returnpay_log')->where(array('ldurl'=>$id,'status'=>2))->whereTime('addtime', 'between', [$startdata,$enddata])->count();
|
||
$bhc = db('returnpay_log')->where(array('ldurl'=>$id,'status'=>3))->whereTime('addtime', 'between', [$startdata,$enddata])->where('type','like',"手动%")->count();
|
||
$bhcz = db('returnpay_log')->where(array('ldurl'=>$id,'status'=>3))->whereTime('addtime', 'between', [$startdata,$enddata])->where('type','like',"自动%")->count();
|
||
$where = array();
|
||
if($aidname){
|
||
$where['u.aidname'] = $aidname;
|
||
}
|
||
|
||
// 未充值 已充值 用户
|
||
if($orderStatus==1){
|
||
$where['o.status'] = 1;
|
||
$data = db('returnpay_log')
|
||
->field('a.*,u.uid,u.username,u.avatar,u.channel,u.clickid,o.money,o.out_trade_no,a.aidname as ad_name')
|
||
->alias('a')
|
||
->join('member u','a.uid = u.uid')
|
||
->join('order o','a.uid = o.uid')
|
||
//->join('member_clickid c','a.uid = c.uid and a.channel = c.linkid and a.clickid = c.clickid')
|
||
->where('a.ldurl',$id)
|
||
->where($where)
|
||
->group('a.uid')
|
||
->order('a.addtime desc')
|
||
->paginate(10,false,['query'=>request()->param()]);
|
||
}else{
|
||
$where['o.status'] = 0;
|
||
$where['u.is_vip'] = 0;
|
||
$where['u.egold'] = array('<',1000);
|
||
$data = db('order')
|
||
->field('o.money,o.out_trade_no,o.create_time as addtime,o.id as type,u.uid,u.username,u.avatar,u.channel,u.clickid')
|
||
->alias('o')
|
||
->join('member u','o.uid = u.uid')
|
||
->where('o.ldurl',$id)
|
||
->where($where)
|
||
->where('iscontrol',0)
|
||
->group('o.uid')
|
||
->order('o.id desc')
|
||
->paginate(10,false,['query'=>request()->param()]);
|
||
}
|
||
|
||
|
||
// 充值配置id
|
||
$pageurl = db('transfer')->where('id',$id)->value('pageurl');
|
||
$payId = db('transfer')->where('pageurl',$pageurl)->value('payid');
|
||
$controlaccout_open = db('transfer')->where('id',$id)->value('controlaccout_open');
|
||
|
||
if($payId){
|
||
$payId = unserialize($payId);
|
||
}
|
||
|
||
$trId = db('transfer')->where('pageurl',$pageurl)->value('id');
|
||
|
||
// dump($clickid);die;
|
||
// 展示前端时间戳
|
||
$startdata = date('Y-m-d H:i:s',$startdata);
|
||
$enddata = date('Y-m-d H:i:s',$enddata);
|
||
|
||
$PayClickNum = db('payclickid')->where('ldurl',$id)->count();
|
||
|
||
// 绑定推广链接ID
|
||
$LinkId = db('transfer')->where('id',$id)->value('linkid');
|
||
//搜索和统计
|
||
$this->assign('payStatus', $payStatus);
|
||
$this->assign('orderStatus', $orderStatus);
|
||
$this->assign('hc', $hc);
|
||
$this->assign('nhc', $nhc);
|
||
$this->assign('bhc', $bhc);
|
||
$this->assign('bhcz', $bhcz);
|
||
$this->assign('startdata', $startdata);
|
||
$this->assign('enddata', $enddata);
|
||
$this->assign('text',$text);
|
||
// 基础数据
|
||
//$this->assign('ybook',$ybook);
|
||
$this->assign('aidname',$aidname);
|
||
$this->assign('controlaccout_open',$controlaccout_open);
|
||
$this->assign('trId',$trId);
|
||
$this->assign('payId',$payId);
|
||
$this->assign('PayClickNum',$PayClickNum);
|
||
$this->assign('pageurl',$pageurl);
|
||
$this->assign('data',$data);
|
||
$this->assign('linkid',$LinkId);
|
||
$this->setMeta('回传日志 绑定推广链接:'.$LinkId);
|
||
return $this->fetch();
|
||
}
|
||
|
||
//计划详情
|
||
public function planinfo(){
|
||
$id = input('id');
|
||
$startdata = input('startdata');
|
||
$enddata = input('enddata');
|
||
if($startdata && $enddata){
|
||
// TP5有个bug url表单数据有空值自动转化了+号 因此需要去掉+
|
||
$startdata = str_replace('+',' ',$startdata);
|
||
$enddata = str_replace('+',' ',$enddata);
|
||
$text = "从 ".$startdata." 开始 到 ".$enddata." 的数据统计";
|
||
$startdata = strtotime($startdata);
|
||
$enddata = strtotime($enddata);
|
||
}else{
|
||
$startdata = strtotime(date('Y-m-d')); //一天内
|
||
$enddata = time(); //现在
|
||
$text = "从 ".date('Y-m-d')."凌晨开始 到 ".date('Y-m-d h:i:s');
|
||
}
|
||
|
||
// $t = input('t');
|
||
// if($t=='all'){
|
||
// $startdata = '1448812800';
|
||
// $enddata = '1766208739';
|
||
// $text = '全部时间段';
|
||
// }elseif($t=='2'){
|
||
// $startdata = strtotime('yesterday');
|
||
// $enddata = mktime(0,0,0,date('m'),date('d'),date('Y'))-1;
|
||
// $text = $text = "从 ".date('Y-m-d H:i:s',$startdata)." 开始 到 ".date('Y-m-d H:i:s',$enddata)." 的数据统计";
|
||
// }
|
||
|
||
$landingurl = db('transfer')->where('id',$id)->value('pageurl');
|
||
$adlist = $this->getrealexpend($landingurl,3,0,2);
|
||
$list = $adlist['list'];
|
||
if($list){
|
||
foreach($list as $k=>$v){
|
||
$value = db('planratio_set')->where('adid',$v['adId'])->find();
|
||
if($value){
|
||
$list[$k]['value'] = $value['value'];
|
||
}else{
|
||
$list[$k]['value'] = 0;
|
||
}
|
||
$list[$k]['paynum'] = db('order')->where(['ldurl'=>$id,'adid'=>$v['adId'],'status'=>1])->where('create_time', 'between', [$startdata,$enddata])->where('is_complex',1)->where('ispay',1)->where('iscontrol',0)->count();
|
||
$list[$k]['mon'] = db('order')->where(['ldurl'=>$id,'adid'=>$v['adId'],'status'=>1])->where('create_time', 'between', [$startdata,$enddata])->where('is_complex',1)->where('ispay',1)->where('iscontrol',0)->sum('money');
|
||
|
||
|
||
$list[$k]['success'] = db('returnpay_log')->where(['ldurl'=>$id,'adid'=>$v['adId'],'status'=>1])->where('addtime', 'between', [$startdata,$enddata])->count();
|
||
$list[$k]['not'] = db('returnpay_log')->where(['ldurl'=>$id,'adid'=>$v['adId'],'status'=>2])->where('addtime', 'between', [$startdata,$enddata])->count();
|
||
$list[$k]['control'] = db('returnpay_log')->where(['ldurl'=>$id,'adid'=>$v['adId'],'status'=>3])->where('addtime', 'between', [$startdata,$enddata])->count();
|
||
|
||
$list[$k]['reg'] = db('member')->where(['adid'=>$v['adId']])->where('reg_time', 'between', [$startdata,$enddata])->count();
|
||
|
||
}
|
||
}
|
||
|
||
$isopen = db('transfer')->where('id',$id)->value('controlaccout_open');
|
||
|
||
// 展示前端时间戳
|
||
$startdata = date('Y-m-d H:i:s',$startdata);
|
||
$enddata = date('Y-m-d H:i:s',$enddata);
|
||
|
||
$this->assign('list',$list);
|
||
$this->assign('startdata', $startdata);
|
||
$this->assign('enddata', $enddata);
|
||
$this->assign('trId',$id);
|
||
$this->assign('text',$text);
|
||
$this->assign('isopen',$isopen);
|
||
$this->setMeta('计划详情 落地页:'.$id);
|
||
return $this->fetch();
|
||
}
|
||
|
||
//切换回传方式
|
||
public function openplan(){
|
||
$id = input('id');
|
||
$t = input('t');
|
||
$list = db('member_clickid')->field('ad_id')->where(['ldurl'=>$id,'ad_id'=>array('neq','')])->group('ad_id')->select();
|
||
if($t=='1'){
|
||
foreach($list as $k=>$v){
|
||
$is = db('planratio_set')->where(['adid'=>$v['adid'],'tid'=>$id])->value('id');
|
||
if(empty($is)){
|
||
db('planratio_set')->insert([
|
||
'tid'=>$id,
|
||
'adid'=>$v['adid'],
|
||
'value'=>0
|
||
]);
|
||
}
|
||
}
|
||
}elseif($t=='2'){
|
||
foreach($list as $k=>$v){
|
||
$is = db('planratio_set')->where(['adid'=>$v['adid'],'tid'=>$id])->value('id');
|
||
if($is){
|
||
db('planratio_set')->where(['adid'=>$v['adid'],'tid'=>$id])->update(['counts'=>0,'value'=>0]);
|
||
}
|
||
}
|
||
}
|
||
db('transfer')->where('id',$id)->update(['openplan'=>$t]);
|
||
exit(json_encode(array('status'=>1,'reg'=>'成功')));
|
||
}
|
||
|
||
//修改单个计划比例
|
||
public function oneplan(){
|
||
$id = input('id');
|
||
$adid = input('adid');
|
||
$val = input('val');
|
||
$r = db('planratio_set')->where(['tid'=>$id,'adid'=>$adid,'value'=>$val])->value('id');
|
||
if($r){
|
||
exit(json_encode(array('status'=>2,'reg'=>'请勿设置重复值')));
|
||
}else{
|
||
$is = db('planratio_set')->where(['adid'=>$adid,'tid'=>$id])->value('id');
|
||
if($is){
|
||
$r = db('planratio_set')->where('id',$is)->update(['value'=>$val,'counts'=>0]);
|
||
}else{
|
||
$r = db('planratio_set')->insert([
|
||
'tid'=>$id,
|
||
'adid'=>$adid,
|
||
'value'=>$val
|
||
]);
|
||
}
|
||
if($r){
|
||
exit(json_encode(array('status'=>1,'reg'=>'设置成功')));
|
||
}else{
|
||
exit(json_encode(array('status'=>2,'reg'=>'错误')));
|
||
}
|
||
}
|
||
}
|
||
|
||
//单个计划回传日志
|
||
public function planreturnlog(){
|
||
$id = input('id');
|
||
$adid = input('adid');
|
||
$aidname = input('aidname');
|
||
$startdata = input('startdata');
|
||
$enddata = input('enddata');
|
||
if($startdata && $enddata){
|
||
// TP5有个bug url表单数据有空值自动转化了+号 因此需要去掉+
|
||
$startdata = str_replace('+',' ',$startdata);
|
||
$enddata = str_replace('+',' ',$enddata);
|
||
$text = "从 ".$startdata." 开始 到 ".$enddata." 的数据统计";
|
||
$startdata = strtotime($startdata);
|
||
$enddata = strtotime($enddata);
|
||
}else{
|
||
$startdata = strtotime(date('Y-m-d')); //一天内
|
||
$enddata = time(); //现在
|
||
$text = "从 ".date('Y-m-d')."凌晨开始 到 ".date('Y-m-d h:i:s');
|
||
}
|
||
|
||
$t = input('t');
|
||
if($t=='all'){
|
||
$startdata = '1448812800';
|
||
$enddata = '1766208739';
|
||
$text = '全部时间段';
|
||
}elseif($t=='2'){
|
||
$startdata = strtotime('yesterday');
|
||
$enddata = mktime(0,0,0,date('m'),date('d'),date('Y'))-1;
|
||
$text = $text = "从 ".date('Y-m-d H:i:s',$startdata)." 开始 到 ".date('Y-m-d H:i:s',$enddata)." 的数据统计";
|
||
}
|
||
|
||
$hcout1['ldurl'] = $id;
|
||
$hcout1['status'] = 1;
|
||
$hcout1['adid'] = $adid;
|
||
|
||
$hcout2['ldurl'] = $id;
|
||
$hcout2['status'] = 2;
|
||
$hcout2['adid'] = $adid;
|
||
|
||
$hcout3['ldurl'] = $id;
|
||
$hcout3['status'] = 3;
|
||
$hcout3['adid'] = $adid;
|
||
|
||
$hcout4['ldurl'] = $id;
|
||
$hcout4['status'] = 3;
|
||
$hcout4['adid'] = $adid;
|
||
|
||
$hc = db('returnpay_log')->where($hcout1)->whereTime('addtime', 'between', [$startdata,$enddata])->count();
|
||
$nhc = db('returnpay_log')->where($hcout2)->whereTime('addtime', 'between', [$startdata,$enddata])->count();
|
||
$bhc = db('returnpay_log')->where($hcout3)->whereTime('addtime', 'between', [$startdata,$enddata])->where('type','like',"%手动%")->count();
|
||
$bhcz = db('returnpay_log')->where($hcout4)->whereTime('addtime', 'between', [$startdata,$enddata])->where('type','like',"%自动%")->count();
|
||
|
||
$where = array();
|
||
$where['a.adid'] = $adid;
|
||
$data = db('returnpay_log')
|
||
->field('a.*,u.username,a.ldurl,a.clickid,a.aidname')
|
||
->alias('a')
|
||
->join('member u','a.uid = u.uid')
|
||
->where('a.ldurl',$id)
|
||
->where($where)
|
||
->whereTime('a.addtime', 'between', [$startdata,$enddata])
|
||
->group('a.uid')
|
||
->order('a.addtime desc')
|
||
->paginate(10,false,['query'=>request()->param()]);
|
||
|
||
// 展示前端时间戳
|
||
$startdata = date('Y-m-d H:i:s',$startdata);
|
||
$enddata = date('Y-m-d H:i:s',$enddata);
|
||
|
||
$PayClickNum = db('payclickid')->where(['ldurl'=>$id,'adid'=>$adid])->count();
|
||
$controlaccout_open = db('transfer')->where('id',$id)->value('controlaccout_open');
|
||
$pageurl = db('transfer')->where('id',$id)->value('pageurl');
|
||
|
||
$this->assign('controlaccout_open', $controlaccout_open);
|
||
$this->assign('startdata', $startdata);
|
||
$this->assign('enddata', $enddata);
|
||
$this->assign('text',$text);
|
||
$this->assign('data',$data);
|
||
$this->assign('PayClickNum', $PayClickNum);
|
||
$this->assign('hc', $hc);
|
||
$this->assign('nhc', $nhc);
|
||
$this->assign('bhc', $bhc);
|
||
$this->assign('bhcz', $bhcz);
|
||
$this->assign('trId',$id);
|
||
$this->assign('adid',$adid);
|
||
$this->assign('aidname',$aidname);
|
||
$this->assign('pageurl', $pageurl);
|
||
$this->setMeta($aidname.'回传详情');
|
||
return $this->fetch();
|
||
}
|
||
|
||
// 未充值订单的用户clickid列表
|
||
public function notRechargedUserList(){
|
||
$startdata = input('startdata');
|
||
$enddata = input('enddata');
|
||
$pageurl = input('pageurl');
|
||
$clickid = input('clickid');
|
||
|
||
if($startdata && $enddata){
|
||
// TP5有个bug url表单数据有空值自动转化了+号 因此需要去掉+
|
||
$startdata = str_replace('+',' ',$startdata);
|
||
$enddata = str_replace('+',' ',$enddata);
|
||
$text = "从 ".$startdata." 开始 到 ".$enddata." 的数据统计";
|
||
$startdata = strtotime($startdata);
|
||
$enddata = strtotime($enddata);
|
||
}else{
|
||
$startdata = strtotime(date('Y-m-d')); //一天内
|
||
$enddata = time(); //现在
|
||
$text = "从 ".date('Y-m-d')."凌晨开始 到 ".date('Y-m-d h:i:s');
|
||
}
|
||
|
||
|
||
$where = array();
|
||
if($clickid){
|
||
$where['clickid'] = array('like',"%".$clickid."%");
|
||
}
|
||
$id = db('transfer')->where('pageurl',$pageurl)->value('id');
|
||
$data = db('member')->field('uid,username,avatar,reg_time,clickid,channel,ldurl')->where(array(
|
||
'pay'=>0,
|
||
'group'=>99,
|
||
'ldurl'=>$id,
|
||
'is_vip'=>0,
|
||
'egold'=>array('<',1000)
|
||
))->where($where)->whereTime('reg_time', 'between', [$startdata,$enddata])->order('uid desc')->paginate(10,false,['query'=>request()->param()]);
|
||
|
||
foreach($data as $k=>$v){
|
||
$isOrder = db('order')->where('iscontrol',0)->where('uid',$v['uid'])->value('id');
|
||
if($isOrder){
|
||
unset($data[$k]);
|
||
}
|
||
}
|
||
|
||
// 展示前端时间戳
|
||
$startdata = date('Y-m-d H:i:s',$startdata);
|
||
$enddata = date('Y-m-d H:i:s',$enddata);
|
||
// 绑定推广链接ID
|
||
$LinkId = db('transfer')->where('pageurl',$pageurl)->value('linkid');
|
||
$this->assign('text', $text);
|
||
$this->assign('startdata', $startdata);
|
||
$this->assign('enddata', $enddata);
|
||
$this->assign('clickid',$clickid);
|
||
$this->assign('data',$data);
|
||
$this->assign('pageurl',$pageurl);
|
||
$this->setMeta('回传日志 绑定推广链接ID:'.$LinkId);
|
||
return $this->fetch();
|
||
}
|
||
|
||
// 设置充值独立配置
|
||
public function setpayid(){
|
||
$data = input('');
|
||
if($data){
|
||
if($data['payIds']){
|
||
$data['payIds'] = serialize($data['payIds']);
|
||
}
|
||
$res = db('transfer')->where('pageurl',$data['pageurl'])->update(['payid'=>$data['payIds']]);
|
||
if($res){
|
||
exit(json_encode(array('status'=>1,'reg'=>'成功')));
|
||
}else{
|
||
exit(json_encode(array('status'=>2,'reg'=>'设置失败')));
|
||
}
|
||
}
|
||
}
|
||
|
||
// 设置充值独立配置
|
||
public function setpayids(){
|
||
$data = input('');
|
||
if($data){
|
||
$list = explode('-',$data['val']);
|
||
foreach($list as $k=>$v){
|
||
if(!preg_match("/^[1-9][0-9]*$/",$v)){
|
||
exit(json_encode(array('status'=>2,'reg'=>'值设置错误')));
|
||
}
|
||
}
|
||
foreach($list as $k=>$v){
|
||
$is = db('pay_setting')->where('price',$v)->count('id');
|
||
if(empty($is)){
|
||
$arr = array(
|
||
'status'=>0,
|
||
'create_time'=>time(),
|
||
'price'=>$v,
|
||
'egold'=>$v*100,
|
||
'type'=>1,
|
||
'description'=>'得'.($v*100).'书币',
|
||
'title'=>'普通充值'
|
||
);
|
||
db('pay_setting')->insert($arr);
|
||
}
|
||
}
|
||
$list = serialize($list);
|
||
$res = db('transfer')->where('id',$data['id'])->update(['payid'=>$list]);
|
||
if($res){
|
||
exit(json_encode(array('status'=>1,'reg'=>'成功')));
|
||
}else{
|
||
exit(json_encode(array('status'=>2,'reg'=>'设置失败')));
|
||
}
|
||
}
|
||
}
|
||
// 修改在跑链接状态
|
||
public function openrun(){
|
||
$data = input('');
|
||
if($data){
|
||
$arr = array(
|
||
'run'=>$data['type'],
|
||
'runtime'=>time()
|
||
);
|
||
db('tuiguang')->where('id',$data['linkid'])->update($arr);
|
||
$res = db('transfer')->where('id',$data['id'])->update($arr);
|
||
if($res){
|
||
exit(json_encode(array('status'=>1,'reg'=>'开启成功')));
|
||
}else{
|
||
exit(json_encode(array('status'=>2,'reg'=>'开启失败')));
|
||
}
|
||
}
|
||
}
|
||
|
||
// 修改TASK回传方式
|
||
public function uppaytype(){
|
||
$data = input('');
|
||
if($data){
|
||
$redis = new \Redis();
|
||
$redis->connect('127.0.0.1',6379);
|
||
if($data['paytime']==0){
|
||
$res = db('transfer')->where('id',$data['id'])->update(['payopen'=>2,'paytime'=>0]);
|
||
$redis->del('swoole-taskopen-is'.$data['id']);
|
||
exit(json_encode(array('status'=>1,'reg'=>'任务1关闭成功。。。','type'=>2,'id'=>$data['id'])));
|
||
}else{
|
||
$isopens = $redis->get('swoole-taskopen-is'.$data['id']);
|
||
if($isopens){
|
||
exit(json_encode(array('status'=>2,'reg'=>'程序运行中,请先关闭')));
|
||
}else{
|
||
//定时任务进程是否完全关闭
|
||
if($data['tasktype']=='time'){
|
||
$taskopen = db('transfer')->where('id',$data['id'])->value('taskopen');
|
||
if($taskopen==1){
|
||
exit(json_encode(array('status'=>2,'reg'=>'上个定时任务还未完成')));
|
||
}
|
||
}
|
||
$timec = time();
|
||
$arr = array(
|
||
'paytime'=>$data['paytime'],
|
||
'paynum'=>1,
|
||
'paytimest'=>$timec,
|
||
'paynumlog'=>0,
|
||
'payopen'=>1,
|
||
'taskopen'=>$data['tasktype']=='time'?1:2,
|
||
'payclick'=>$data['click']
|
||
);
|
||
$res = db('transfer')->where('id',$data['id'])->update($arr);
|
||
if($res){
|
||
$tcpurl = "http://127.0.0.1:9502";
|
||
$tcparr = array(
|
||
'id'=>$data['id'],
|
||
'time'=>$data['paytime'],
|
||
'num'=>1,
|
||
'type'=>$data['tasktype'],
|
||
'click'=>$data['click']
|
||
);
|
||
$redis->set('swoole-taskopen-is'.$data['id'],1);
|
||
pushMessageToClient($tcpurl,json_encode($tcparr));
|
||
exit(json_encode(array('status'=>1,'reg'=>'任务1开启成功','type'=>1,'id'=>$data['id'])));
|
||
}else{
|
||
exit(json_encode(array('status'=>2,'reg'=>'设置失败')));
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
// 修改TASK回传方式
|
||
public function uppaytypes(){
|
||
$data = input('');
|
||
if($data){
|
||
$redis = new \Redis();
|
||
$redis->connect('127.0.0.1',6379);
|
||
if($data['paytime2']==0){
|
||
$res = db('transfer')->where('id',$data['id'])->update(['payopen2'=>2,'paytime2'=>0]);
|
||
$redis->del('swoole-taskopen2-is'.$data['id']);
|
||
exit(json_encode(array('status'=>1,'reg'=>'任务2关闭成功。。。','type'=>2,'id'=>$data['id'])));
|
||
}else{
|
||
$isopens = $redis->get('swoole-taskopen2-is'.$data['id']);
|
||
if($isopens){
|
||
exit(json_encode(array('status'=>2,'reg'=>'程序运行中,请先关闭')));
|
||
}else{
|
||
//定时任务进程是否完全关闭
|
||
if($data['tasktype']=='time'){
|
||
$taskopen = db('transfer')->where('id',$data['id'])->value('taskopen2');
|
||
if($taskopen==1){
|
||
exit(json_encode(array('status'=>2,'reg'=>'上个定时任务还未完成')));
|
||
}
|
||
}
|
||
$timec = time();
|
||
$arr = array(
|
||
'paytime2'=>$data['paytime2'],
|
||
'paynum'=>1,
|
||
'paytimest'=>$timec,
|
||
'paynumlog'=>0,
|
||
'payopen2'=>1,
|
||
'taskopen2'=>$data['tasktype']=='time'?1:2,
|
||
'payclicks'=>$data['clicks']
|
||
);
|
||
$res = db('transfer')->where('id',$data['id'])->update($arr);
|
||
if($res){
|
||
$tcpurl = "http://127.0.0.1:9502";
|
||
$tcparr = array(
|
||
'id'=>$data['id'],
|
||
'time2'=>$data['paytime2'],
|
||
'num'=>1,
|
||
'type'=>$data['tasktype'],
|
||
'click'=>$data['clicks']
|
||
);
|
||
$redis->set('swoole-taskopen2-is'.$data['id'],1);
|
||
pushMessageToClient($tcpurl,json_encode($tcparr));
|
||
exit(json_encode(array('status'=>1,'reg'=>'任务2开启成功','type'=>1,'id'=>$data['id'])));
|
||
}else{
|
||
exit(json_encode(array('status'=>2,'reg'=>'设置失败')));
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
//检测查找模糊匹配clickid数量
|
||
public function isgetclick(){
|
||
$d = input('');
|
||
$where = array();
|
||
// $url = db('transfer')->where('id',$d['id'])->value('pageurl');
|
||
$where['ldurl'] = $d['id'];
|
||
$where['clickid'] = array('like',"%".$d['click']."%");
|
||
$data = db('payclickid')->field('clickid')->where($where)->order('id desc')->select();
|
||
if($data){
|
||
exit(json_encode(array('status'=>1,'reg'=>'查询成功','data'=>$data,'num'=>count($data),'str'=>$d['click'])));
|
||
}else{
|
||
exit(json_encode(array('status'=>2,'reg'=>'未匹配到clickid')));
|
||
}
|
||
}
|
||
|
||
// 补回传
|
||
public function complement(){
|
||
$data = input('');
|
||
if($data){
|
||
|
||
if($data['hcnum']>0){
|
||
$transferInfo = db('transfer')->where('pageurl',$data['pageurl'])->find();
|
||
// if($transferInfo['ybook']==0){
|
||
// exit(json_encode(array('status'=>2,'reg'=>'原书名ID为0')));
|
||
// }
|
||
$linkid = $transferInfo['linkid'];
|
||
$clickid = db('payclickid')->field('clickid,addtime,ldurl,uid')->where('ldurl',$transferInfo['id'])->order('id desc')->limit($data['hcnum'])->select();
|
||
if($clickid){
|
||
import("Payreturn.Payreturn", EXTEND_PATH,'.php');
|
||
$YueKaiPay = new \Payreturn();
|
||
foreach($clickid as $k=>$v){
|
||
db('payclickid')->where('uid',$v['uid'])->delete();
|
||
// 登录回传
|
||
//$this->translogin($v['clickid']);
|
||
// 支付回传
|
||
$YueKaiPay->transpays($v['clickid']);
|
||
$returnpaylog = array(
|
||
'uid'=>0,
|
||
'ldurl'=>$transferInfo['id'],
|
||
'type'=>'手动 补回传 1条 绑定推广链接 '.$linkid,
|
||
'addtime'=>time(),
|
||
'status'=>3,
|
||
'channel'=>$linkid
|
||
);
|
||
//写入回传日志
|
||
M('returnpay_log')->insert($returnpaylog);
|
||
}
|
||
exit(json_encode(array('status'=>1,'reg'=>'成功')));
|
||
}else{
|
||
exit(json_encode(array('status'=>2,'reg'=>'暂无支付过的clickid')));
|
||
}
|
||
}else{
|
||
exit(json_encode(array('status'=>2,'reg'=>'输入值不正确')));
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
//自定义用户回传
|
||
public function payPass(){
|
||
$c = input('c');
|
||
$pageurl = input('pageurl');
|
||
$linkid = input('linkid');
|
||
$uid = input('uid');
|
||
if($c){
|
||
$isc = db('payclickid')->where('clickid',$c)->value('id');
|
||
if($isc){
|
||
db('payclickid')->where('clickid',$c)->delete();
|
||
//$this->translogin($c);
|
||
$this->transpays($c);
|
||
$transferInfo = db('transfer')->where('pageurl',$pageurl)->find();
|
||
$returnpaylog = array(
|
||
'uid'=>0,
|
||
'ldurl'=>$transferInfo['id'],
|
||
'type'=>'手动 自定义补回传',
|
||
'addtime'=>time(),
|
||
'status'=>3,
|
||
'channel'=>$linkid
|
||
);
|
||
//写入回传日志
|
||
M('returnpay_log')->insert($returnpaylog);
|
||
exit(json_encode(array('status'=>1,'reg'=>'回传成功')));
|
||
}else{
|
||
exit(json_encode(array('status'=>2,'reg'=>'该用户clickid已经回传')));
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
// 自定义充值失败用户回传
|
||
public function payPassNo(){
|
||
$uid = input('uid');
|
||
$c = input('c');
|
||
$pageurl = input('pageurl');
|
||
$linkid = input('linkid');
|
||
db('order')->where(array('status'=>0,'uid'=>$uid))->delete();
|
||
//$this->translogin($c);
|
||
$this->transpays($c);
|
||
$transferInfo = db('transfer')->where('pageurl',$pageurl)->find();
|
||
$returnpaylog = array(
|
||
'uid'=>$uid,
|
||
'ldurl'=>$transferInfo['id'],
|
||
'type'=>'手动 自定义充值失败用户回传',
|
||
'addtime'=>time(),
|
||
'status'=>3,
|
||
'channel'=>$linkid
|
||
);
|
||
//写入回传日志
|
||
M('returnpay_log')->insert($returnpaylog);
|
||
exit(json_encode(array('status'=>1,'reg'=>'回传成功')));
|
||
}
|
||
|
||
//自定义未有任何订单用户回传
|
||
public function payPassNoAll(){
|
||
$uid = input('uid');
|
||
$c = input('c');
|
||
$pageurl = input('pageurl');
|
||
$linkid = input('linkid');
|
||
db('member')->where('uid',$uid)->update(['clickid'=>'']);
|
||
//$this->translogin($c);
|
||
$this->transpays($c);
|
||
$transferInfo = db('transfer')->where('pageurl',$pageurl)->find();
|
||
$returnpaylog = array(
|
||
'uid'=>$uid,
|
||
'ldurl'=>$transferInfo['id'],
|
||
'type'=>'手动 自定义未有订单用户回传',
|
||
'addtime'=>time(),
|
||
'status'=>3,
|
||
'channel'=>$linkid
|
||
);
|
||
//写入回传日志
|
||
M('returnpay_log')->insert($returnpaylog);
|
||
exit(json_encode(array('status'=>1,'reg'=>'回传成功')));
|
||
}
|
||
|
||
// 计划回传
|
||
public function planpay(){
|
||
$id = input('id');
|
||
$data = input();
|
||
if(isset($data['tim'])){
|
||
if((time()+10)>strtotime($data['tim'])){
|
||
exit(json_encode(array('status'=>2,'reg'=>'小于当前时间')));
|
||
}
|
||
$arr = array(
|
||
'trid'=>$data['id'],
|
||
'tim'=>strtotime($data['tim']),
|
||
'num'=>$data['num'],
|
||
'addtime'=>time(),
|
||
'clickid'=>$data['cid']
|
||
);
|
||
$res = db('planpay')->insert($arr);
|
||
if($res){
|
||
exit(json_encode(array('status'=>1,'reg'=>'添加成功')));
|
||
}else{
|
||
exit(json_encode(array('status'=>2,'reg'=>'失败')));
|
||
}
|
||
}else{
|
||
$list = db('planpay')->where('trid',$id)->order('id asc')->select();
|
||
$linkid = db('transfer')->where('id',$id)->value('linkid');
|
||
$this->assign('list', $list);
|
||
$this->assign('trId', $id);
|
||
$this->setMeta('计划回传 落地页编号:'.$id.' 绑定推广链接:'.$linkid);
|
||
return $this->fetch();
|
||
}
|
||
}
|
||
|
||
// 启动计划
|
||
public function openpay(){
|
||
$id = input('id');
|
||
if($id){
|
||
$taskInfo = db('planpay')->where('id',$id)->find();
|
||
if($taskInfo){
|
||
if((time()+10)>$taskInfo['tim']){
|
||
exit(json_encode(array('status'=>2,'reg'=>'任务时间小于当前时间')));
|
||
}
|
||
$tim = $taskInfo['tim'] - time();
|
||
$tcpurl = "http://127.0.0.1:9507";
|
||
$tcparr = array(
|
||
'id'=>$taskInfo['id'],
|
||
'trid'=>$taskInfo['trid'],
|
||
'tim'=>$tim,
|
||
'num'=>$taskInfo['num'],
|
||
'clickid'=>$taskInfo['clickid']
|
||
);
|
||
pushMessageToClient($tcpurl,json_encode($tcparr));
|
||
db('planpay')->where('id',$id)->update(['status'=>1]);
|
||
exit(json_encode(array('status'=>1,'reg'=>'投递任务成功')));
|
||
}
|
||
}
|
||
}
|
||
|
||
// 删除计划
|
||
public function delplanpay($id){
|
||
$res = db('planpay')->delete($id);
|
||
if($res){
|
||
exit(json_encode(array('status'=>1,'reg'=>'删除成功')));
|
||
}else{
|
||
exit(json_encode(array('status'=>2,'reg'=>'失败')));
|
||
}
|
||
}
|
||
|
||
// 定时换尾缀 尾缀管理
|
||
public function setfont(){
|
||
$data = input('');
|
||
if(isset($data['text'])){
|
||
$r = db('wxfont')->insert(array(
|
||
'text'=>$data['text'],
|
||
'lid'=>$data['lid']
|
||
));
|
||
if($r){
|
||
exit(json_encode(array('status'=>1,'reg'=>'添加成功')));
|
||
}else{
|
||
exit(json_encode(array('status'=>2,'reg'=>'失败')));
|
||
}
|
||
}else{
|
||
$redis = new \Redis();
|
||
$redis->connect('127.0.0.1',6379);
|
||
$redData = $redis->get('WxFontTask-'.$data['id']);
|
||
$redData = @unserialize($redData);
|
||
if($redData){
|
||
$istask = $redData['TaskStatus'];
|
||
$TaskTime = $redData['TaskTime'];
|
||
}else{
|
||
$rarr = array(
|
||
'TaskStatus'=>0,
|
||
'TaskTime'=>0,
|
||
'run'=>0
|
||
);
|
||
$redis->set('WxFontTask-'.$data['id'],serialize($rarr));
|
||
$istask = 0;
|
||
$TaskTime = 0;
|
||
}
|
||
$res = db('wxfont')->where('lid',$data['id'])->order('id asc')->paginate(20);
|
||
$page = $res->render();
|
||
$modeswitch = db('transfer')->where('id',$data['id'])->value('modeswitch');
|
||
$this->assign('modeswitch', $modeswitch);
|
||
$this->assign('TaskTime', $TaskTime);
|
||
$this->assign('istask', $istask);
|
||
$this->assign('page', $page);
|
||
$this->assign('res', $res);
|
||
$this->assign('id', $data['id']);
|
||
$this->setMeta('定时换尾缀 落地页编号:'.$data['id']);
|
||
return $this->fetch();
|
||
}
|
||
}
|
||
|
||
// 修改尾缀项
|
||
public function upwxfont(){
|
||
$d = input('');
|
||
$r = db('wxfont')->where('id',$d['id'])->update(['text'=>$d['text']]);
|
||
if($r){
|
||
exit(json_encode(array('status'=>1,'reg'=>'成功')));
|
||
}else{
|
||
exit(json_encode(array('status'=>2,'reg'=>'失败')));
|
||
}
|
||
}
|
||
|
||
// 删除尾缀项
|
||
public function delwxfont($id){
|
||
$res = db('wxfont')->delete($id);
|
||
if($res){
|
||
exit(json_encode(array('status'=>1,'reg'=>'删除成功')));
|
||
}else{
|
||
exit(json_encode(array('status'=>2,'reg'=>'失败')));
|
||
}
|
||
}
|
||
|
||
// 尾缀task
|
||
public function setWxFontTask(){
|
||
$data = input('');
|
||
if($data){
|
||
$redis = new \Redis();
|
||
$redis->connect('127.0.0.1',6379);
|
||
$redData = $redis->get('WxFontTask-'.$data['lid']);
|
||
$redData = @unserialize($redData);
|
||
if($data['TaskTime']==0){
|
||
$rarr = array(
|
||
'TaskStatus'=>0,
|
||
'TaskTime'=>0,
|
||
'run'=>$redData['run']
|
||
);
|
||
$redis->set('WxFontTask-'.$data['lid'],serialize($rarr));
|
||
db('wxfont')->where(['lid'=>$data['lid'],'status'=>1])->delete();
|
||
exit(json_encode(array('status'=>1,'reg'=>'关闭成功')));
|
||
}
|
||
if($redData){
|
||
if($redData['run']==1 || $redData['TaskStatus']==1){
|
||
exit(json_encode(array('status'=>2,'reg'=>'上个任务未执行完')));
|
||
}else{
|
||
//开始任务投递
|
||
$rarr = array(
|
||
'TaskStatus'=>1,
|
||
'TaskTime'=>$data['TaskTime'],
|
||
'run'=>1
|
||
);
|
||
$redis->set('WxFontTask-'.$data['lid'],serialize($rarr));
|
||
$tcpurl = "http://127.0.0.1:9510";
|
||
$tcparr = array(
|
||
'lid'=>$data['lid']
|
||
);
|
||
pushMessageToClient($tcpurl,json_encode($tcparr));
|
||
exit(json_encode(array('status'=>1,'reg'=>'任务开启')));
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
//切换防截流模式
|
||
public function openmodes(){
|
||
$d = input('');
|
||
if($d){
|
||
$name = db('transfer')->where('id',$d['lid'])->value('nickname');
|
||
$name = trim($name);
|
||
$is = db('applets')->where('name',$name)->value('id');
|
||
if($is){
|
||
$r = db('transfer')->where('id',$d['lid'])->update(['modeswitch'=>$d['t']]);
|
||
if($r){
|
||
exit(json_encode(array('status'=>1,'reg'=>'成功')));
|
||
}else{
|
||
exit(json_encode(array('status'=>2,'reg'=>'失败')));
|
||
}
|
||
}else{
|
||
exit(json_encode(array('status'=>2,'reg'=>'此公众号未配置')));
|
||
}
|
||
}
|
||
}
|
||
|
||
//clickid分类统计
|
||
public function clicksort(){
|
||
$id = input('id');
|
||
$sql = "select substring(clickid,3,11) as cid,count(*) as num,sum(money) as m,(select count(*) from cps_returnpay_log where channel = {$id} and status!=2 and substring(clickid,3,11) = cid) as h from cps_returnpay_log where channel = {$id} and uid != 0 group by substring(clickid,3,11) order by num desc";
|
||
$list = db('returnpay_log')->query($sql);
|
||
$this->assign('id', $id);
|
||
$this->assign('list', $list);
|
||
$this->setMeta('clickid分类统计 推广链接ID:'.$id);
|
||
return $this->fetch();
|
||
}
|
||
|
||
//强制关闭定时任务
|
||
public function resetcid(){
|
||
$data = input('');
|
||
if($data){
|
||
$is = db('transfer')->field('id,payopen,taskopen,payopen2,taskopen2')->where('id',$data['id'])->find();
|
||
if($data['t']=='1'){
|
||
if($is['payopen']=='1'){
|
||
exit(json_encode(array('status'=>2,'reg'=>'请先手动关闭')));
|
||
}
|
||
$r = db('transfer')->where('id',$data['id'])->update(['taskopen'=>2]);
|
||
if($r){
|
||
exit(json_encode(array('status'=>1,'reg'=>'任务1重置成功')));
|
||
}else{
|
||
exit(json_encode(array('status'=>2,'reg'=>'无需重置')));
|
||
}
|
||
}elseif($data['t']=='2'){
|
||
if($is['payopen2']=='1'){
|
||
exit(json_encode(array('status'=>2,'reg'=>'请先手动关闭')));
|
||
}
|
||
$r = db('transfer')->where('id',$data['id'])->update(['taskopen2'=>2]);
|
||
if($r){
|
||
exit(json_encode(array('status'=>1,'reg'=>'任务2重置成功')));
|
||
}else{
|
||
exit(json_encode(array('status'=>2,'reg'=>'无需重置')));
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
//回传登录信息
|
||
public function translogin($clickid){
|
||
$url = "https://ad.toutiao.com/track/activate/?callback=".$clickid."&event_type=0";
|
||
$ret = $this->curl_get($url);
|
||
$retjson = json_decode($ret,true);
|
||
//return $retjson;
|
||
}
|
||
// 回传支付
|
||
// public function transpays($clickid=''){
|
||
// $url = "https://ad.toutiao.com/track/activate/?callback=".$clickid."&event_type=2";
|
||
// $ret = $this->curl_get($url);
|
||
// $retjson = json_decode($ret,true);
|
||
// //return $retjson;
|
||
// }
|
||
|
||
// 回传方式2
|
||
public function transpays($clickid='',$type='active_pay'){
|
||
$arr = [
|
||
'event_type'=>$type,
|
||
'context'=>[
|
||
'ad'=>[
|
||
'callback'=>$clickid
|
||
]
|
||
],
|
||
'timestamp'=>time()
|
||
];
|
||
$arr = json_encode($arr);
|
||
$url = 'https://analytics.oceanengine.com/api/v2/conversion';
|
||
$r = $this->pushMessageToClient($url,$arr);
|
||
return $r;
|
||
}
|
||
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, 10);
|
||
//发送请求
|
||
$output = curl_exec($ch);
|
||
curl_close($ch);
|
||
//返回数据
|
||
return $output;
|
||
}
|
||
|
||
public function curl_get($url=''){
|
||
$ch = curl_init();
|
||
curl_setopt($ch, CURLOPT_URL, $url);
|
||
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
|
||
$output = curl_exec($ch);
|
||
//var_dump($output);
|
||
}
|
||
|
||
// 巨量实时消耗 time 1 近一年 2近一个小时 3近一天
|
||
// adid 单条计划没有返回所有计划
|
||
// adStatus 1 包含已删除的 2不包含
|
||
public function getrealexpend($landingurl,$time=3,$adid=null,$adStatus=2){
|
||
$timarr = $this->timetype($time);
|
||
$url = 'http://ocean.cswmwangluo.cn/api/v1/ocean/cost/realTimeByLand';
|
||
$arr = array(
|
||
'landUri'=>$landingurl,
|
||
'startTime'=>$timarr['startdata'],
|
||
'endTime'=>$timarr['enddata'],
|
||
'adStatus'=>$adStatus
|
||
);
|
||
$arr = json_encode($arr);
|
||
$res = $this->pushMessageToClient($url,$arr);
|
||
$res = json_decode($res,true);
|
||
if($res['code']=='200'){
|
||
if($adid){
|
||
$adinfo = $this->find_by_foreach($res['result']['list'],$adid);
|
||
return $adinfo;
|
||
}
|
||
return $res['result'];
|
||
}else{
|
||
return 0;
|
||
}
|
||
}
|
||
|
||
//找到对应计划数据
|
||
public function find_by_foreach($array,$find){
|
||
if(empty($array)){
|
||
return 0;
|
||
}
|
||
foreach ($array as $key => $v){
|
||
if($v['adId']==$find){
|
||
return $array[$key];
|
||
}
|
||
}
|
||
}
|
||
|
||
//时间格式返回
|
||
public function timetype($t){
|
||
if($t==1){ //一年内
|
||
$startdata = '2021-03-16 0:0:0';
|
||
}elseif($t==2){ //一个小时内
|
||
$startdata = date('Y-m-d H:0:0');
|
||
}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);
|
||
$arr = array(
|
||
'startdata'=>$startdata,
|
||
'enddata'=>$enddata
|
||
);
|
||
return $arr;
|
||
}
|
||
|
||
|
||
public function texts()
|
||
{
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
} |