From c9996e071c02eb17641c664e4b6205bff40ee7c3 Mon Sep 17 00:00:00 2001 From: jbrazz <2436953959@qq.com> Date: Thu, 7 Nov 2019 14:02:02 +0800 Subject: [PATCH 1/2] fix grand_id --- Application/Admin/Common/extend.php | 24 ++--- .../Controller/ExportController.class.php | 93 +++++++++---------- .../Controller/FinanceController.class.php | 2 +- .../Controller/PlatformController.class.php | 18 +--- .../PromoteCoinController.class.php | 17 ++-- .../Admin/Event/SettlementEvent.class.php | 18 +++- .../Model/BusinessAffairsModel.class.php | 7 +- .../Admin/Model/PromoteModel.class.php | 17 ---- .../Admin/View/PromoteCoin/record.html | 16 +++- 9 files changed, 94 insertions(+), 118 deletions(-) diff --git a/Application/Admin/Common/extend.php b/Application/Admin/Common/extend.php index 459ebde40..6a54f7007 100644 --- a/Application/Admin/Common/extend.php +++ b/Application/Admin/Common/extend.php @@ -572,14 +572,8 @@ function get_game_set_field($game_id,$field=""){ * @return mixed */ function promote_lists($type){ - if($type == 1){ - $map['parent_id'] = 0; - }elseif($type == 2){ - $map['parent_id'] = ['neq',0]; - $map['grand_id'] = 0; - }elseif($type == 3) { - $map['parent_id'] = ['gt',0]; - $map['grand_id'] = ['gt', 0]; + if($type){ + $map['level'] = $type; } else{ $map = ''; } @@ -1066,17 +1060,19 @@ function get_promote_parent($promote_id,$field='account'){ function get_promote_parent_acc($promote_id){ $Promote = M('promote','tab_'); - $data = $Promote->field('account,parent_id,grand_id')->find($promote_id); + $data = $Promote->field('account,parent_id')->find($promote_id); if(empty($data)){ return $data["account"]="官方渠道";exit; } - if($data['grand_id'] !=0){ - $data = $Promote->find($data['grand_id']); - }elseif($data['parent_id'] != 0){ - $data = $Promote->find($data['parent_id']); + $chain = trim($data['chain'], '/'); + if ($chain == '') { + return '------'; + } else { + $topPromoteId = explode('/', $chain)[0]; + $parent_promote = M('promote', 'tab_')->where(['id' => $topPromoteId])->find(); + return $parent_promote['account'] ?: '------'; } - return $data["account"]?$data['account']:'------'; } //获取所有苹果证书id diff --git a/Application/Admin/Controller/ExportController.class.php b/Application/Admin/Controller/ExportController.class.php index b4f362db4..5c65c1408 100644 --- a/Application/Admin/Controller/ExportController.class.php +++ b/Application/Admin/Controller/ExportController.class.php @@ -433,10 +433,8 @@ class ExportController extends Controller unset($_REQUEST['end']); } if(!empty(I('parent_id'))){ - $maps['parent_id'] = I('parent_id'); - $maps['grand_id'] =I('parent_id'); - $maps['_logic'] = 'or'; - $pro = M('promote','tab_')->field('id')->where($maps)->select(); + $parent_id = I('parent_id'); + $pro = M('promote','tab_')->field('id')->where("chain like '%/{$parent_id}/%'")->select(); $pro_ids = array_column($pro,'id'); $pro_ids[] = I('parent_id'); if (!empty($pro_ids)){ @@ -1786,7 +1784,6 @@ class ExportController extends Controller $arraypage=$page; $row = 10; $user=M('User','tab_'); - $map['promote_id']=array('egt',0); if(isset($_REQUEST['timestart'])&&isset($_REQUEST['timeend'])){ $map['register_time'] =array('BETWEEN',array(strtotime($_REQUEST['timestart']),strtotime($_REQUEST['timeend'])+24*60*60-1)); unset($_REQUEST['timestart']);unset($_REQUEST['timeend']); @@ -1795,25 +1792,35 @@ class ExportController extends Controller $map['register_time'] =array('BETWEEN',array(strtotime($_REQUEST['start']),strtotime($_REQUEST['end'])+24*60*60-1)); unset($_REQUEST['start']);unset($_REQUEST['end']); } - if(isset($_REQUEST['promote_id'])){ - $map['_string'] = "promote_id = {$_REQUEST['promote_id']} or tab_promote.parent_id = {$_REQUEST['promote_id']} or tab_promote.grand_id = {$_REQUEST['promote_id']} "; - unset($_REQUEST['promote_id']); + $play_info_map = ''; + + if (isset($_REQUEST['game_name'])) { + $map['fgame_name'] = $_REQUEST['game_name']; + $play_info_map .= " and upi.game_name = '{$_REQUEST['game_name']}' "; + unset($_REQUEST['game_name']); + } + if (isset($_REQUEST['server_id'])) { + $play_info_map .= " and upi.server_name = '{$_REQUEST['server_id']}' "; } $today=total(1); $week=total(2); $mounth=total(3); - $map['puid'] = 0; - $data=$user - ->field('promote_account,promote_id,date_format(FROM_UNIXTIME(register_time),"%Y-%m-%d") AS time, count(tab_user.id) as count, - IF(tab_promote.grand_id>0,tab_promote.grand_id,IF(tab_promote.grand_id=0 and tab_promote.parent_id >0,tab_promote.parent_id,promote_id)) as promote_id1 , - count(IF(register_time '.$today.',1,null)) as today, - count(IF(register_time '.$week.',1,null)) as week, - count(IF(register_time '.$mounth.',1,null)) as mounth') - ->join('tab_promote on promote_id = tab_promote.id','left') + if (isset($_REQUEST['promote_id'])) { + $map['tp1.id'] = $_REQUEST['promote_id']; + } else { + $map['tp1.chain'] = '/'; + } + + $data = M('promote', 'tab_')->alias('tp1')->field('tp1.account as promote_account,tp1.id as promote_id, date_format(FROM_UNIXTIME(register_time),"%Y-%m-%d") AS time, count(u.id) as count, + count(IF(register_time ' . $today . ',1,null)) as today, + count(IF(register_time ' . $week . ',1,null)) as week, + count(IF(register_time ' . $mounth . ',1,null)) as mounth') + ->join("tab_promote AS tp2 ON tp2.`chain` LIKE CONCAT('%/', tp1.id, '/%')", 'left') + ->join("tab_user as u on tp2.id = u.promote_id", 'left') + ->join($play_info_map ? "tab_user_play_info as upi on upi.user_id = u.id " . $play_info_map : false) ->where($map) - ->group('promote_id1') - ->having('promote_id != 0') - ->order('count desc,register_time') + ->group('tp1.id') + ->order('count desc, register_time') ->select(); $count=count($data); foreach ($data as $key => $value) { @@ -1874,7 +1881,7 @@ class ExportController extends Controller $page = $page ? $page : 1; //默认显示第一页数据 $arraypage=$page; $row = 10; - $map['promote_id']=array('gt',0); + $map1['promote_id'] = $map['promote_id'] = array('egt', 0); $spend=M('Spend','tab_'); if(isset($_REQUEST['timestart'])&&isset($_REQUEST['timeend'])){ $map['pay_time'] =array('BETWEEN',array(strtotime($_REQUEST['timestart']),strtotime($_REQUEST['timeend'])+24*60*60-1)); @@ -1888,7 +1895,8 @@ class ExportController extends Controller // $map['promote_id'] =$_REQUEST['promote_id']; // unset($_REQUEST['promote_id']); // } - $map['pay_status']=1; + $map1['pay_status'] = $map['pay_status']=1; + $map1['pay_way'] = $map['pay_way'] = array('gt', 0); $today=total(1); $week=total(2); $mounth=total(3); @@ -1936,14 +1944,14 @@ class ExportController extends Controller ->group('promote_id') ->select(false); } - if(isset($_REQUEST['promote_id'])){ - $condition['_string'] = "promote_id = {$_REQUEST['promote_id']} or tab_promote.parent_id = {$_REQUEST['promote_id']} or tab_promote.grand_id = {$_REQUEST['promote_id']} "; + $promote_map = "tp1.`chain` = '/'"; + if (isset($_REQUEST['promote_id'])) { + $promote_map = "tp1.`id` = {$_REQUEST['promote_id']}"; unset($_REQUEST['promote_id']); } - $data = $spend->field('a.promote_account,a.promote_id,a.time,sum(a.count) as count,sum(a.today) as today,sum(a.week) as week,sum(a.mounth) as mounth,IF(tab_promote.grand_id>0,tab_promote.grand_id,IF(tab_promote.grand_id=0 and tab_promote.parent_id >0,tab_promote.parent_id,promote_id)) as promote_id1') - ->join('tab_promote on promote_id = tab_promote.id','left') - ->where($condition) - ->table('('.$data.') as a')->group('promote_id')->order('a.count desc,a.ordertime')->select(); + $data = $spend->field('t.pid as promote_id,t.promote_account,sum(a.count) AS count,sum(a.today) AS today,sum(a. WEEK) AS WEEK,sum(a.mounth) AS mounth') + ->join("INNER JOIN (SELECT tp2.*, tp1.id AS pid, tp1.account as promote_account FROM tab_promote tp1 LEFT JOIN tab_promote tp2 ON tp2.`chain` LIKE CONCAT('%/', tp1.id, '/%') where $promote_map ) AS t ON promote_id = t.id") + ->where($condition)->table('(' . $data . ') as a')->group('t.pid')->order('count desc,a.ordertime')->select(); $count=count($data); foreach ($data as $key => $value) { static $i=0; @@ -4465,15 +4473,7 @@ if ($key == 'model'){ } $map['id']=array('in',$zid); } - if(I('promote_level') == 1){ - $map['parent_id'] = 0; - }elseif(I('promote_level') == 2){ - $map['parent_id'] = ['neq',0]; - $map['grand_id'] = 0; - }elseif (I('promote_level') == 3) { - $map['parent_id'] = ['neq',0]; - $map['grand_id'] = ['neq',0]; - } + $map['level'] = I('promote_level'); } @@ -4513,7 +4513,7 @@ if ($key == 'model'){ $v['status'] = get_info_status($v['status'],3); $v['business_affairs'] = get_business_affairs_account($v['ba_id']); - $v['grand_account'] = get_top_promote($v['id'],$v['grand_id']?$v['grand_id']:$v['parent_id']); + $v['grand_account'] = getTopPromote($v['id'])['id']; $v['promote_levels'] = get_promote_levels($v['id']); $xlsData[] = $v; @@ -5212,10 +5212,8 @@ if ($key == 'model'){ } else { - $maps['parent_id'] = I('parent_id'); - $maps['grand_id'] =I('parent_id'); - $maps['_logic'] = 'or'; - $pro = M('promote','tab_')->field('id')->where([array('id'=>$map['promote_id']),$maps])->select(); + $parent_id = I('parent_id'); + $pro = M('promote','tab_')->field('id')->where("id={$map['promote_id']} and chain like '%/{$parent_id}/%'")->select(); if(!$pro) { $map['promote_id'] = array('eq',999999999); @@ -5224,10 +5222,7 @@ if ($key == 'model'){ } } else { - $maps['parent_id'] = $map['promote_id']; - $maps['grand_id'] =$map['promote_id']; - $maps['_logic'] = 'or'; - $pro = M('promote','tab_')->field('id')->where($maps)->select(); + $pro = M('promote','tab_')->field('id')->where("chain like '%/{$map['promote_id']}/%'")->select(); $pro_ids = array_column($pro,'id'); $pro_ids[] = $map['promote_id']; if (!empty($pro_ids)){ @@ -5243,10 +5238,8 @@ if ($key == 'model'){ }else{ if(!empty(I('parent_id'))){ - $maps['parent_id'] = I('parent_id'); - $maps['grand_id'] =I('parent_id'); - $maps['_logic'] = 'or'; - $pro = M('promote','tab_')->field('id')->where($maps)->select(); + $parent_id = I('parent_id'); + $pro = M('promote','tab_')->field('id')->where("chain like '%/{$parent_id}/%'")->select(); $pro_ids = array_column($pro,'id'); $pro_ids[] = I('parent_id'); if (!empty($pro_ids)){ @@ -5646,7 +5639,7 @@ if ($key == 'model'){ $data = M('promote','tab_') ->field("id") - ->where("parent_id={$root_id} or grand_id={$root_id}") + ->where("chain like '%/{$root_id}/%'") ->select(); $handleData = []; diff --git a/Application/Admin/Controller/FinanceController.class.php b/Application/Admin/Controller/FinanceController.class.php index 2706d8429..2e46bce51 100644 --- a/Application/Admin/Controller/FinanceController.class.php +++ b/Application/Admin/Controller/FinanceController.class.php @@ -597,7 +597,7 @@ class FinanceController extends ThinkController $data = M('promote','tab_') ->field("id") - ->where("parent_id={$root_id} or grand_id={$root_id}") + ->where("chain like '%/{$root_id}/%'") ->select(); $handleData = []; diff --git a/Application/Admin/Controller/PlatformController.class.php b/Application/Admin/Controller/PlatformController.class.php index 9d34117b5..837eab59d 100644 --- a/Application/Admin/Controller/PlatformController.class.php +++ b/Application/Admin/Controller/PlatformController.class.php @@ -360,6 +360,10 @@ class PlatformController extends ThinkController $play_info_map .= " and upi.game_name = '{$_REQUEST['game_name']}' "; unset($_REQUEST['game_name']); } + if (isset($_REQUEST['server_id'])) { + $play_info_map .= " and upi.server_name = '{$_REQUEST['server_id']}' "; + } + $today = total(1); $week = total(2); $mounth = total(3); @@ -371,11 +375,6 @@ class PlatformController extends ThinkController $map['tp1.chain'] = '/'; } - - if (isset($_REQUEST['server_id'])) { - $play_info_map .= " and upi.server_name = '{$_REQUEST['server_id']}' "; - } - $data = M('promote', 'tab_')->alias('tp1')->field('tp1.account as promote_account,tp1.id, date_format(FROM_UNIXTIME(register_time),"%Y-%m-%d") AS time, count(u.id) as count, count(IF(register_time ' . $today . ',1,null)) as today, @@ -454,15 +453,6 @@ class PlatformController extends ThinkController $week = total(2); $mounth = total(3); $map1['pay_way'] = $map['pay_way'] = array('gt', 0); - /* $data=$spend - ->field('promote_account,promote_id,date_format(FROM_UNIXTIME(pay_time),"%Y-%m-%d") AS time, sum(pay_amount) as count, - sum(IF(pay_time '.$today.',pay_amount,0)) as today, - sum(IF(pay_time '.$week.',pay_amount,0)) as week, - sum(IF(pay_time '.$mounth.',pay_amount,0)) as mounth') - ->where($map) - ->group('promote_id') - ->order('count desc,pay_time') - ->select(); */ $bindrecharge_data = M('bind_recharge', 'tab_') ->field('max(id) as id,promote_account,promote_id,create_time as ordertime,date_format(FROM_UNIXTIME(create_time),"%Y-%m-%d") AS time, diff --git a/Application/Admin/Controller/PromoteCoinController.class.php b/Application/Admin/Controller/PromoteCoinController.class.php index d120b1be5..df210e264 100644 --- a/Application/Admin/Controller/PromoteCoinController.class.php +++ b/Application/Admin/Controller/PromoteCoinController.class.php @@ -166,15 +166,12 @@ class PromoteCoinController extends ThinkController { $extend['type'] = 2; $extend['source_id'] = ['neq',0]; - /*if(isset($_REQUEST['source_id'])) {$extend['source_id'] = $_REQUEST['source_id'];}*/ - if(isset($_REQUEST['promote_id'])) {$extend['promote_id'] = $_REQUEST['promote_id'];} - if(!empty($_REQUEST['source_id']) && !empty($_REQUEST['grand_id'])) { - $extend['source_id'] = ['in',[$_REQUEST['source_id'],$_REQUEST['grand_id']]]; - } elseif (!empty($_REQUEST['source_id'])) { - $extend['source_id'] = $_REQUEST['source_id']; - } elseif (!empty($_REQUEST['grand_id'])) { - $extend['source_id'] = $_REQUEST['grand_id']; - } + if(isset($_REQUEST['promote_id'])) {$extend['promote_id'] = $_REQUEST['promote_id'];} + $source_ids = []; + if (!empty($_REQUEST['source_id'])) $source_ids[] = $_REQUEST['source_id']; + if (!empty($_REQUEST['grand_id'])) $source_ids[] = $_REQUEST['grand_id']; + if (!empty($_REQUEST['child_id'])) $source_ids[] = $_REQUEST['child_id']; + if (!empty($source_ids)) $extend['source_id'] = ['in', $source_ids]; $map = $extend; $map['create_time'] = total(1,false); @@ -198,7 +195,7 @@ class PromoteCoinController extends ThinkController { $pc = D(self::model_name); $data=$pc->alias('c') - ->field('c.*,p.account as source_name, p.parent_id, p.grand_id') + ->field('c.*,p.account as source_name, p.parent_id, p.level') ->join('tab_promote p on c.source_id = p.id', 'left') ->where($extend) ->order('id desc') diff --git a/Application/Admin/Event/SettlementEvent.class.php b/Application/Admin/Event/SettlementEvent.class.php index e3ac72b97..83a9272c7 100644 --- a/Application/Admin/Event/SettlementEvent.class.php +++ b/Application/Admin/Event/SettlementEvent.class.php @@ -39,8 +39,17 @@ class SettlementEvent extends ThinkEvent { $spend = M('Spend','tab_'); $ssql=$spend - ->field('tab_spend.pay_order_number,tab_spend.game_id,tab_spend.game_name,if(tab_promote.grand_id = 0,if(tab_promote.parent_id=0,tab_spend.promote_id,tab_promote.parent_id),grand_id) as pid,pay_amount,if(isnull(tab_apply.promote_ratio),tab_game.ratio,tab_apply.promote_ratio) as ratio,if(isnull(tab_apply.promote_money),tab_game.money,tab_apply.promote_money) as money') - ->join('tab_promote on tab_spend.promote_id = tab_promote.id') + ->field('tab_spend.pay_order_number,tab_spend.game_id,tab_spend.game_name,t.pid as pid,pay_amount,if(isnull(tab_apply.promote_ratio),tab_game.ratio,tab_apply.promote_ratio) as ratio,if(isnull(tab_apply.promote_money),tab_game.money,tab_apply.promote_money) as money') + ->join("INNER JOIN ( + SELECT + tp2.*, tp1.id AS pid, + tp1.account AS promote_account + FROM + tab_promote tp1 + LEFT JOIN tab_promote tp2 ON tp2.`chain` LIKE CONCAT('%/', tp1.id, '/%') + WHERE + tp1. LEVEL = 1 + ) AS t ON promote_id = t.id") ->join('tab_game on tab_spend.game_id= tab_game.id') ->join('left join tab_apply on tab_apply.game_id = tab_game.id and tab_apply.promote_id = '.$pid['id']) ->where($smap) @@ -50,9 +59,8 @@ class SettlementEvent extends ThinkEvent { $sdata= $spend->table('('.$ssql.') as a') ->field('a.game_id,a.game_name,a.pid,sum(a.pay_amount) as spay_amount,a.ratio,a.money') ->group('game_id') - ->select(); - - + ->select(); + foreach($sdata as $k => $v) { if (empty($sdata[0]['pid'])) {unset($sdata[$k]);} if(get_settlement($_REQUEST['timestart'],$_REQUEST['timeend'],$pid['id'],$v['game_id'])) { diff --git a/Application/Admin/Model/BusinessAffairsModel.class.php b/Application/Admin/Model/BusinessAffairsModel.class.php index 812303c85..fbcba9c42 100644 --- a/Application/Admin/Model/BusinessAffairsModel.class.php +++ b/Application/Admin/Model/BusinessAffairsModel.class.php @@ -79,10 +79,7 @@ class BusinessAffairsModel extends Model{ */ public function update_child($id=0,$new_id=null,$promote_id=null){ $p_ids = array(); - $childMap['parent_id'] = $promote_id; - $childMap['grand_id'] = $promote_id; - $childMap['_logic'] = 'or'; - $data_child = D('Promote')->where($childMap)->getField('id',true); + $data_child = D('Promote')->where("chain like '%/{$promote_id}/%'")->getField('id',true); if(empty($data_child)){ $p_ids[0] = $promote_id; }else{ @@ -108,7 +105,7 @@ class BusinessAffairsModel extends Model{ $ba_new_ids = explode(",", $ba_new_ids); array_push($ba_new_ids,$p_ids); } - D('Promote')->where('parent_id='.$promote_id.' or grand_id='.$promote_id)->setField('ba_id',$new_id); + D('Promote')->where("chain like '%/{$promote_id}/%'")->setField('ba_id',$new_id); $this->where("id=".$new_id)->setField('promote_id', implode(",", $ba_new_ids)); $this->where("id=".$new_id)->setInc("inferiors",count($p_ids)); } diff --git a/Application/Admin/Model/PromoteModel.class.php b/Application/Admin/Model/PromoteModel.class.php index d3099116f..06b86a48f 100644 --- a/Application/Admin/Model/PromoteModel.class.php +++ b/Application/Admin/Model/PromoteModel.class.php @@ -119,12 +119,6 @@ class PromoteModel extends Model{ 'create_time' => NOW_TIME, 'ba_id' => $add_data['ba_id'], ); - //三级渠道 - if($add_data['grand_id']>0){ - $grand_id = $this->where(array('id'=>$add_data['parent_id']))->getField('parent_id'); - $data['grand_id'] = $add_data['grand_id']; - $data['grand_account'] = get_promote_name($grand_id); - } /* 添加用户 */ if($this->create($data)){ $uid = $this->add(); @@ -375,17 +369,6 @@ class PromoteModel extends Model{ public function getPromotersByLevel($level=1) { $result = []; - // switch ($level) { - // case 1: // 会长 - // $result = $this->field("id, nickname")->where("grand_id = 0 and parent_id = 0")->select(); - // break; - // case 2: // 组长 - // $result = $this->field("id, nickname")->where("grand_id = 0 and parent_id > 0")->select(); - // break; - // case 3: //组员 - // $result = $this->field("id, nickname")->where("parent_id > 0 and grand_id > 0")->select(); - // break; - // } $result = $this->field("*")->where("level={$level}")->select(); return $result; } diff --git a/Application/Admin/View/PromoteCoin/record.html b/Application/Admin/View/PromoteCoin/record.html index cebf32f2a..98256a13f 100644 --- a/Application/Admin/View/PromoteCoin/record.html +++ b/Application/Admin/View/PromoteCoin/record.html @@ -72,6 +72,14 @@ +