diff --git a/Application/Admin/Common/extend.php b/Application/Admin/Common/extend.php index b2c537cfa..7a4e332fa 100644 --- a/Application/Admin/Common/extend.php +++ b/Application/Admin/Common/extend.php @@ -2885,6 +2885,23 @@ function getAdminUsernameList(array $ids) return $items; } +function getAdminDepartmentList(array $ids) +{ + if (count($ids) == 0) { + return []; + } + $rows = M('auth_group_access', 'sys_')->field(['uid', 'group_id'])->where(['uid' => ['in', $ids]])->select(); + $groups = M('auth_group', 'sys_')->field(['id', 'department_id', 'department_name'])->where(['uid' => ['in', array_column($rows, 'group_id')]])->select(); + $groups = index_by_column('id', $groups); + $items = []; + foreach ($rows as $row) { + $group = $groups[$row['group_id']] ?? null; + $items[$row['uid']] = $group ? $group['department_name'] : '--'; + } + return $items; +} + + function isMarketLeader() { if(IS_SUBSITE){ @@ -2901,6 +2918,27 @@ function isMarketLeader() return false; } +function getSearchAdminIds($searchAdminParam = 'admin_id', $searchDepartmentParam = 'department_id') +{ + $adminIds = null; + $isMarketAdmin = isMarketAdmin(); + if ($isMarketAdmin) { + $userAuth = session('user_auth'); + $adminIds = [$userAuth['uid']]; + } else { + if (!empty(I($searchAdminParam))) { + $adminIds = [I($searchAdminParam)]; + } + } + + if (is_null($adminIds) && isset($_REQUEST[$searchDepartmentParam])) { + $admins = getMarketAdmin($_REQUEST[$searchDepartmentParam]); + $adminIds = count($admins) ? array_column($admins, 'uid') : [-1]; + } + + return $adminIds; +} + function isMarketAdmin() { if(IS_SUBSITE){ @@ -2919,10 +2957,9 @@ function isMarketAdmin() * 获取市场专员 * */ -function getMarketAdmin() { - - $map['group_id'] =['in',A("Market","Event")->getNoLeaderMarketGroupId()]; - +function getMarketAdmin($departmentId = null) { + $map = []; + $map['group_id'] = ['in',A("Market","Event")->getNoLeaderMarketGroupId($departmentId)]; $data = M("auth_group_access") ->field("real_name,menber.uid,nickname") ->join("left join sys_member menber on sys_auth_group_access.uid = menber.uid") diff --git a/Application/Admin/Controller/AjaxController.class.php b/Application/Admin/Controller/AjaxController.class.php index b32b2477c..f141a57dd 100644 --- a/Application/Admin/Controller/AjaxController.class.php +++ b/Application/Admin/Controller/AjaxController.class.php @@ -664,4 +664,14 @@ class AjaxController extends ThinkController{ $promotes = M('promote', 'tab_')->where($companyMap)->field(['id', 'account'])->select(); return $this->ajaxReturn(['status' => 1, 'message' => '获取成功', 'data' => ['promotes' => $promotes]]); } + + public function getAdminsByDepartment() + { + $departmentId = I('department_id', 0); + if ($departmentId <= 0) { + $departmentId = null; + } + $admins = getMarketAdmin($departmentId); + return $this->ajaxReturn(['status' => 1, 'message' => '获取成功', 'data' => ['admins' => $admins]]); + } } \ No newline at end of file diff --git a/Application/Admin/Controller/FinancePromoteController.class.php b/Application/Admin/Controller/FinancePromoteController.class.php index 01b480c80..ec695235f 100644 --- a/Application/Admin/Controller/FinancePromoteController.class.php +++ b/Application/Admin/Controller/FinancePromoteController.class.php @@ -93,7 +93,7 @@ class FinancePromoteController extends AdminController } } $isMarketAdmin = isMarketAdmin(); - if(I('admin_id', 0) != 0 || $isMarketAdmin){ + if(I('admin_id', 0) != 0 || I('department_id', 0) != 0 || $isMarketAdmin){ $nwtflag = false; } if (isset($_REQUEST['promote_id'])) { @@ -142,7 +142,9 @@ class FinancePromoteController extends AdminController } } $promotes = index_by_column('id', $promotes); - $adminUsernames = getAdminUsernameList(array_column($promotes, 'admin_id')); + $adminIds = array_column($promotes, 'admin_id'); + $adminUsernames = getAdminUsernameList($adminIds); + $adminDepartments = getAdminDepartmentList($adminIds); foreach($senddata as $k=>$v){ $promote = $promotes[$v['p_id']] ?? null; $v['company_belong'] = $v['company_belong'] ?:0; @@ -156,6 +158,7 @@ class FinancePromoteController extends AdminController $v['promote_account'] = get_promote_name($v['p_id']); ($v['promote_account']=='官方渠道')?($v['promote_account']=C('OFFICIEL_CHANNEL')):''; $v['admin_username'] = $adminUsernames[$promote['admin_id']] ?? '无'; + $v['admin_department'] = $adminDepartments[$promote['admin_id']] ?? '无'; $v['develop_type_text'] = getCompanyDevelopTypeText($v['develop_type']); $v['inside_cash_count'] = number_format($v['inside_cash_count'],2,'.',''); $v['allcount'] = number_format($v['cash_count']-0+$v['balance_coin_count']+$v['bind_coin_count'],2,'.',''); @@ -179,6 +182,7 @@ class FinancePromoteController extends AdminController "company_name"=>"推广公司", "promote_account"=>"会长渠道", "admin_username"=>"所属市场专员", + "admin_department"=>"所属市场部", "company_belong"=>"团体类型", "develop_type_text"=>"开发类型", "cash_count"=>"游戏现金金额", @@ -219,6 +223,9 @@ class FinancePromoteController extends AdminController $this->checkListOrCountAuthRestMap($map,[]); + $departments = M('department', 'sys_')->select(); + $this->assign('departments', $departments); + //外团占比 $this->assign('outBelong',number_format($outBelong/$count['all_count']*100,2,'.','')); //内团占比 @@ -264,21 +271,7 @@ class FinancePromoteController extends AdminController $map['company.develop_type'] = ['in',I('develop_type')]; } - $adminId = 0; - // $havingPids = []; - $isMarketAdmin = isMarketAdmin(); - if ($isMarketAdmin) { - $userAuth = session('user_auth'); - $adminId = $userAuth['uid']; - } else { - if (!empty(I('admin_id'))) { - $adminId = I('admin_id'); - } - } - /* if ($adminId > 0) { - $havingPids = M('promote', 'tab_')->where(['admin_id' => $adminId])->getField('id', true); - $havingPids = count($havingPids) > 0 ? $havingPids : [0]; - } */ + $adminIds = getSearchAdminIds(); if($type == "spend"){ if (isset($_REQUEST['game_name']) || isset($_REQUEST['game_type'])) { @@ -290,8 +283,8 @@ class FinancePromoteController extends AdminController if ($isMarketLeader) { $map['s.market_admin_id'] = ['gt', 0]; } - if ($adminId > 0) { - $map['s.market_admin_id'] = $adminId; + if (is_array($adminIds)) { + $map['s.market_admin_id'] = ['in', $adminIds]; } $map['s.pay_status']=1; $map['s.is_check']=2; @@ -348,22 +341,8 @@ class FinancePromoteController extends AdminController if (!empty(I('develop_type'))) { $map['company.develop_type'] = ['in',I('develop_type')]; } - - $adminId = 0; - // $havingPids = []; - $isMarketAdmin = isMarketAdmin(); - if ($isMarketAdmin) { - $userAuth = session('user_auth'); - $adminId = $userAuth['uid']; - } else { - if (!empty(I('admin_id'))) { - $adminId = I('admin_id'); - } - } - /* if ($adminId > 0) { - $havingPids = M('promote', 'tab_')->where(['admin_id' => $adminId])->getField('id', true); - $havingPids = count($havingPids) > 0 ? $havingPids : [0]; - } */ + + $adminIds = getSearchAdminIds(); if($type == "spend"){ if (isset($_REQUEST['game_name']) || isset($_REQUEST['game_type'])) { @@ -375,8 +354,8 @@ class FinancePromoteController extends AdminController if ($isMarketLeader) { $map['s.market_admin_id'] = ['gt', 0]; } - if ($adminId > 0) { - $map['s.market_admin_id'] = $adminId; + if (is_array($adminIds)) { + $map['s.market_admin_id'] = ['in', $adminIds]; } $map['s.pay_status']=1; // $map['s.is_check']=1; @@ -400,20 +379,9 @@ class FinancePromoteController extends AdminController if($istimeselect){ $map['s.create_time']=$istimeselect; } - $adminId = 0; - // $havingPids = []; - $isMarketAdmin = isMarketAdmin(); - if ($isMarketAdmin) { - $userAuth = session('user_auth'); - $adminId = $userAuth['uid']; - } else { - if (!empty(I('admin_id'))) { - $adminId = I('admin_id'); - } - } - if ($adminId > 0) { - $map['promote.admin_id'] = $adminId; - // $havingPids = M('promote', 'tab_')->where(['admin_id' => $adminId])->getField('id', true); + if (is_array($adminIds)) { + $map['promote.admin_id'] = ['in', $adminIds]; + // $havingPids = M('promote', 'tab_')->where(['admin_id' => ['in', $adminIds]])->getField('id', true); // $havingPids = count($havingPids) > 0 ? $havingPids : [0]; } $map['s.status']=1; @@ -511,16 +479,29 @@ class FinancePromoteController extends AdminController ); $marketAdmins = []; + $adminDepartments = []; if (count($senddata) > 0) { $promoteIds = array_column($senddata, 'promote_id'); if (count($promoteIds)) { $marketAdmins = getMarketAdminsByPromoteIds($promoteIds); } + + $adminIds = []; + foreach ($marketAdmins as $item) { + if ( $item['admin']) { + $adminIds[] = $item['admin']['id']; + } + } + if (count($adminIds)) { + $adminDepartments = getAdminDepartmentList($adminIds); + } } - + foreach($senddata as $k=>$v){ $promote = $promotes[$v['promote_id']] ?? null; - $v['admin_username'] = isset($marketAdmins[$v['promote_id']]) && $marketAdmins[$v['promote_id']]['admin'] ? $marketAdmins[$v['promote_id']]['admin']['username'] : '无'; + $marketAdmin = $marketAdmins[$v['promote_id']]['admin'] ?? null; + $v['admin_username'] = $marketAdmin ? $marketAdmin['username'] : '无'; + $v['admin_department'] = $marketAdmin && isset($adminDepartments[$marketAdmin['id']]) ? $adminDepartments[$marketAdmin['id']] : '无'; $v['develop_type_text'] = getCompanyDevelopTypeText($v['develop_type']); $v['company_belong'] = getCompanyBlong($v['company_belong']); if(empty($v['company_name'])) $v['company_name']= $this->COMPANY_NAME; @@ -555,6 +536,7 @@ class FinancePromoteController extends AdminController data2csv($data,'渠道统计',array( "company_name"=>"推广公司", "promote_account"=>"推广员账号", + "admin_department"=>"所属市场部", "admin_username"=>"所属市场专员", "company_belong"=>"团体类型", "develop_type_text"=>"开发类型", @@ -570,6 +552,9 @@ class FinancePromoteController extends AdminController $size = $row; $data = array_slice($data, ($arraypage - 1) * $size, $size); + + $departments = M('department', 'sys_')->select(); + $this->assign('departments', $departments); $this->assign('all_count', $allcount); $this->assign('list_data', $data); $this->meta_title = '渠道统计'; @@ -582,18 +567,9 @@ class FinancePromoteController extends AdminController if (isset($_REQUEST['company_id'])) { $map['promote.company_id'] = $_REQUEST['company_id']; } - if ($type == "spend") { - $adminId = 0; - $isMarketAdmin = isMarketAdmin(); - if ($isMarketAdmin) { - $userAuth = session('user_auth'); - $adminId = $userAuth['uid']; - } else { - if (!empty(I('admin_id'))) { - $adminId = I('admin_id'); - } - } + $adminIds = getSearchAdminIds(); + if ($type == "spend") { if (isset($_REQUEST['game_name']) || isset($_REQUEST['game_type'])) { $map["s.game_id"] = array("in",implode(',', array_column(getGameByName($_REQUEST['game_name'], $_REQUEST['game_type']), 'id')) ); } @@ -605,8 +581,8 @@ class FinancePromoteController extends AdminController $map['s.market_admin_id'] = ['gt', 0]; $map['promote.admin_id'] = ['gt', 0]; } - if ($adminId) { - $map['s.market_admin_id'] = $adminId; + if (is_array($adminIds)) { + $map['s.market_admin_id'] = ['in', $adminIds]; } $map['s.pay_status']=1; $map['s.is_check']=1; @@ -630,21 +606,10 @@ class FinancePromoteController extends AdminController } $map['s.status']=1; $map['s.source_id']=0; - - $adminId = 0; - $isMarketAdmin = isMarketAdmin(); - if ($isMarketAdmin) { - $userAuth = session('user_auth'); - $adminId = $userAuth['uid']; - } else { - if (!empty(I('admin_id'))) { - $adminId = I('admin_id'); - } - } $isMarketLeader = isMarketLeader(); - if ($adminId > 0) { - $map['promote.admin_id'] = $adminId; + if (is_array($adminIds)) { + $map['promote.admin_id'] = ['in', $adminIds]; } elseif ($isMarketLeader) { $map['promote.admin_id'] = ['gt', 0]; } @@ -659,8 +624,8 @@ class FinancePromoteController extends AdminController ->group('promote_id'); /* $havingPids = []; - if ($adminId > 0) { - $topIds = M('promote', 'tab_')->where(['admin_id' => $adminId])->getField('id', true); + if (is_array($adminIds)) { + $topIds = M('promote', 'tab_')->where(['admin_id' => ['in', $adminIds]])->getField('id', true); $havingPids = getPromoteIdsByTopIds($topIds); $havingPids = count($havingPids) > 0 ? $havingPids : [0]; $query->having('promote_id in (' . implode(',', $havingPids) . ')'); @@ -722,7 +687,9 @@ class FinancePromoteController extends AdminController } } $promotes = index_by_column('id', $promotes); - $adminUsernames = getAdminUsernameList(array_column($promotes, 'admin_id')); + $adminIds = array_column($promotes, 'admin_id'); + $adminUsernames = getAdminUsernameList($adminIds); + $adminDepartments = getAdminDepartmentList($adminIds); foreach ($data as $key => &$value) { $promote = $promotes[$value['p_id']] ?? null; @@ -733,6 +700,7 @@ class FinancePromoteController extends AdminController $value['company_belong'] =getCompanyBlong($value['company_belong']); ($value['account']=='官方渠道')?($value['account']=C('OFFICIEL_CHANNEL')):''; + $value['admin_department'] = $adminDepartments[$promote['admin_id']] ?? '无'; $value['admin_username'] = $adminUsernames[$promote['admin_id']] ?? '无'; $value['develop_type_text'] = getCompanyDevelopTypeText($value['develop_type']); @@ -755,6 +723,7 @@ class FinancePromoteController extends AdminController "company_name"=>"推广公司", "account"=>"会长账号", "admin_username"=>"所属市场专员", + "admin_department"=>"所属市场部", "company_belong"=>"团体类型", "develop_type_text"=>"开发类型", "game_name"=>"游戏", @@ -783,6 +752,8 @@ class FinancePromoteController extends AdminController $sumInside = $totalData['inside_cash_count']; $sumAll = number_format($sumCash + $sumBalance + $sumInside,2,'.',''); + $departments = M('department', 'sys_')->select(); + $this->assign('departments', $departments); $this->assign('sumCash', $sumCash); $this->assign('sumBalance', $sumBalance); $this->assign('sumInside', $sumInside); @@ -815,25 +786,15 @@ class FinancePromoteController extends AdminController $map['pay_order_number'] = $_REQUEST['pay_order_number']; } - $adminId = 0; - $havingPids = []; - $isMarketAdmin = isMarketAdmin(); - if ($isMarketAdmin) { - $userAuth = session('user_auth'); - $adminId = $userAuth['uid']; - } else { - if (!empty(I('admin_id'))) { - $adminId = I('admin_id'); - } - } + $adminIds = getSearchAdminIds(); $isMarketLeader = isMarketLeader(); if ($isMarketLeader) { $map['market_admin_id'] = ['gt', 0]; } - - if ($adminId > 0) { - $map['market_admin_id'] = $adminId; + + if (is_array($adminIds)) { + $map['market_admin_id'] = ['in', $adminIds]; } D("Spend")->addSubsiteWhere($map); /* if (!empty(I('develop_type'))) { @@ -901,7 +862,9 @@ class FinancePromoteController extends AdminController $marketAdmins = []; if (count($data) > 0) { - $marketAdmins = getAdminUsernameList(array_column($data, 'market_admin_id')); + $marketAdminIds = array_column($data, 'market_admin_id'); + $marketAdmins = getAdminUsernameList($marketAdminIds); + $adminDepartments = getAdminDepartmentList($marketAdminIds); } $merchant_data = M("payment_merchant","tab_") @@ -920,6 +883,7 @@ class FinancePromoteController extends AdminController $data[$key]['game_name'] =clearGameNameType($data[$key]['game_name']); $data[$key]['sdk_version'] =getGameTypeName($data[$key]['sdk_version']); $data[$key]['market_admin_username'] = $marketAdmins[$value['market_admin_id']] ?? '无'; + $data[$key]['admin_department'] = $adminDepartments[$value['market_admin_id']] ?? '无'; ($data[$key]['promote_account']=='官方渠道')?($data[$key]['promote_account']=C('OFFICIEL_CHANNEL')):''; if (isset($_REQUEST['export'])) { @@ -942,6 +906,7 @@ class FinancePromoteController extends AdminController "sdk_version"=>"设备名称", "promote_account"=>"所属推广员", "market_admin_username"=>"所属市场专员", + "admin_department"=>"所属市场部", "spend_ip"=>"充值ip", "server_name"=>"游戏区服", "game_player_name"=>"角色名称", @@ -971,6 +936,9 @@ class FinancePromoteController extends AdminController if($page) {$this->assign('_page', $page);} $this->meta_title = '游戏订单查看'; + $departments = M('department', 'sys_')->select(); + $this->assign('departments', $departments); + $this->assign('data',$data); $from = I('from', ''); $this->display($from); @@ -978,19 +946,9 @@ class FinancePromoteController extends AdminController private function gameStatisticsData($map, $row = 0, $page = 1) { - $adminId = 0; - $isMarketAdmin = isMarketAdmin(); - if ($isMarketAdmin) { - $userAuth = session('user_auth'); - $adminId = $userAuth['uid']; - } else { - if (!empty(I('admin_id'))) { - $adminId = I('admin_id'); - } - } - - if ($adminId > 0) { - $map['s.market_admin_id'] = $adminId; + $adminIds = getSearchAdminIds(); + if (is_array($adminIds)) { + $map['s.market_admin_id'] = ['in', $adminIds]; } $map['s.pay_status']=1; @@ -1023,19 +981,9 @@ class FinancePromoteController extends AdminController } private function totalGameStatisticsData($map, $join = true) { - $adminId = 0; - $isMarketAdmin = isMarketAdmin(); - if ($isMarketAdmin) { - $userAuth = session('user_auth'); - $adminId = $userAuth['uid']; - } else { - if (!empty(I('admin_id'))) { - $adminId = I('admin_id'); - } - } - - if ($adminId > 0) { - $map['s.market_admin_id'] = $adminId; + $adminIds = getSearchAdminIds(); + if (is_array($adminIds)) { + $map['s.market_admin_id'] = ['in', $adminIds]; } $query = SM("spend","tab_")->alias("s") diff --git a/Application/Admin/Event/MarketEvent.class.php b/Application/Admin/Event/MarketEvent.class.php index c7817f566..369df1ee5 100644 --- a/Application/Admin/Event/MarketEvent.class.php +++ b/Application/Admin/Event/MarketEvent.class.php @@ -30,11 +30,12 @@ class MarketEvent extends Controller /** * 获取市场专员gid(除了总监) */ - public function getNoLeaderMarketGroupId() + public function getNoLeaderMarketGroupId($departmentId = null) { + $departmentIds = $departmentId ? [$departmentId] : $this->MarketDepartmentId; $where = [ - "department_id"=>['in',$this->MarketDepartmentId], - "department_level"=>['neq',$this->DirectorLevel] + "department_id"=>['in', $departmentIds], + "department_level"=>['neq', $this->DirectorLevel] ]; $dbres = M('auth_group','sys_')->where($where)->getField("id",true); return implode(",",$dbres); diff --git a/Application/Admin/View/FinancePromote/gameStatistics.html b/Application/Admin/View/FinancePromote/gameStatistics.html index 099aee315..1cedfba0e 100644 --- a/Application/Admin/View/FinancePromote/gameStatistics.html +++ b/Application/Admin/View/FinancePromote/gameStatistics.html @@ -128,6 +128,16 @@ + +
+ +
+
+
+ +
+
+ +
+
+ +
+ +
+