From 379716298a5936419547fe54e9431c5c98da00f6 Mon Sep 17 00:00:00 2001 From: zhengyongxing Date: Sun, 28 Jun 2020 22:15:00 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B8=82=E5=9C=BA=E4=B8=93=E5=91=98=E7=BB=93?= =?UTF-8?q?=E7=AE=97=E4=BB=A3=E7=A0=81=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Application/Admin/Common/extend.php | 99 +++- .../AuthManagerController.class.php | 26 +- .../MarketPercentageController.class.php | 465 +++++++++++++++++- .../Controller/TimingController.class.php | 151 ++++++ .../Admin/Controller/UserController.class.php | 4 + .../View/AuthManager/authmarketmember.html | 164 ++++++ .../Admin/View/AuthManager/category.html | 3 + .../Admin/View/AuthManager/dataempower.html | 3 + Application/Admin/View/AuthManager/index.html | 3 + .../Admin/View/AuthManager/managergroup.html | 3 + Application/Admin/View/AuthManager/user.html | 3 + .../Admin/View/MarketPercentage/index.html | 411 ++++++++++++++++ .../MarketPercentage/marketstaffsettle.html | 387 +++++++++++++++ .../personmarketstaffsettle.html | 402 +++++++++++++++ .../View/MarketPercentage/showbonuslist.html | 388 +++++++++++++++ Application/Admin/View/User/edit.html | 2 +- Data/update.sql | 5 +- 17 files changed, 2511 insertions(+), 8 deletions(-) create mode 100644 Application/Admin/View/AuthManager/authmarketmember.html create mode 100644 Application/Admin/View/MarketPercentage/index.html create mode 100644 Application/Admin/View/MarketPercentage/marketstaffsettle.html create mode 100644 Application/Admin/View/MarketPercentage/personmarketstaffsettle.html create mode 100644 Application/Admin/View/MarketPercentage/showbonuslist.html diff --git a/Application/Admin/Common/extend.php b/Application/Admin/Common/extend.php index a05e905ce..04a1573d8 100644 --- a/Application/Admin/Common/extend.php +++ b/Application/Admin/Common/extend.php @@ -293,7 +293,7 @@ function get_pay_way($id=null) return "微信APP"; break; case 4: - return "威富通"; + return "汇付宝"; break; case 5: return "聚宝云"; @@ -1424,7 +1424,7 @@ function get_promote_levels($id = 0) case '4': return "组员"; break; - + default: return ''; } @@ -1485,6 +1485,7 @@ function cash_pay_way() $pay_way[3]=array('key'=>2,'value'=>"微信"); // $pay_way[3]=array('key'=>3,'value'=>'微信APP'); // $pay_way[4]=array('key'=>4,'value'=>'威富通'); + $pay_way[4]=array('key'=>4,'value'=>'汇付宝'); /* $pay_way[4]=array('key'=>5,'value'=>'聚宝云'); */ // $pay_way[5]=array('key'=>6,'value'=>'汇付宝'); /* $pay_way[6]=array('key'=>7,'value'=>"苹果支付"); @@ -1817,7 +1818,7 @@ function all_pay_way_other($type=false) $pay_way[1]=array('key'=>-1,'value'=>"绑币"); $pay_way[2]=array('key'=>1,'value'=>"支付宝"); $pay_way[3]=array('key'=>2,'value'=>"微信"); - $pay_way[7]=array('key'=>7,'value'=>'金猪'); + $pay_way[7]=array('key'=>7,'value'=>'苹果'); $pay_way[9]=array('key'=>9,'value'=>"双乾支付-支付宝"); $pay_way[10]=array('key'=>10,'value'=>"双乾支付-银联"); // $pay_way[3]=array('key'=>3,'value'=>'微信APP'); @@ -2088,7 +2089,7 @@ function getPromoteCompanyList() { return $data; } -//获取游戏cp分成比例 $type=false时返回最低分成比例 +//获取游戏cp分成比例 $type=false时返回最低分成比例 上游 function getGameCpRadio($game_id,$amount,$type) { if (!$type) { $data = M('cp_game_ratio','tab_')->where(['game_id'=>$game_id])->order('begin_total_amount asc')->find(); @@ -2115,6 +2116,60 @@ function getGameCpRadio($game_id,$amount,$type) { return $data['ratio']?$data['ratio']:0; } +/**下游 + * 获取渠道分成比例 + * @author chenzhi + * @param [type] $company_id 公司id + * @param [type] $relation_game_id 游戏广联id + * @param [type] $endtime 结算结束的时间戳 + * @param [type] $amount 金额 + * @param [type] $type $type=false时返回最低分成比例 + * @param [type] $company_belong 公司团体类型,不传的话用id查询 + * @return ratio + */ +function getGamePromoteCompanyRadio($company_id,$relation_game_id,$endtime,$amount,$type,$company_belong=false) { + //判断是否有生效 + $rwhere = "(end_time = 0 OR end_time >= '{$endtime}') and company_id='{$company_id}' and relation_game_id='{$relation_game_id}'"; + $cgr_res = M("CompanyGameRatio","tab_")->where($rwhere)->find(); + // dump( M("CompanyGameRatio","tab_")->where($rwhere)->select(false)); + if(empty($cgr_res)){ + //模板搜索 + //获取公司类型 + if($company_belong === false){ + $company_belong = M("PromoteCompany","tab_")->field("company_belong")->where("id='{$company_id}'")->find()['company_belong']; + } + $mwhere = "company_belong='{$company_belong}' and relation_game_id='{$relation_game_id}'"; + $m_res = M("GameRatioMould","tab_")->where($mwhere)->find(); + if(empty($m_res)){ + $default_r = 0; + $turnover_ratio = false; + }else{ + $default_r = $m_res['ratio']; + $turnover_ratio = json_decode($m_res['turnover_ratio'],true); + } + }else{ + $default_r = $cgr_res['ratio']; + $turnover_ratio = json_decode($cgr_res['turnover_ratio'],true); + } + //执行比例 + if (!$type || !$turnover_ratio) { + return $default_r; + } + //获取比例 + $ratio = $default_r; + foreach($turnover_ratio as $k=>$v){ + if($v['instanceof'] == 1){ + if($amount >= $v['turnover']){ + $ratio = $v['ratio']; + } + }else{ + if($amount > $v['turnover']){ + $ratio = $v['ratio']; + } + } + } + return $ratio; +} function check_str($str, $substr) { @@ -2386,5 +2441,41 @@ function getAvailableBalance($promote_id=0,$game_id=0,$server_id='') { } +/** + * + * 获取市场专员 + * + */ +function getMarketAdmin() { + +// $map['group_id'] = ['in','11,12,21']; + + $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") + ->where($map) + ->select(); + + foreach ($data as $key => $value) { + !$value['real_name'] ? ($data[$key]['real_name'] = "未命名"):""; + } + + return $data; +} + +function is_sendBonus($pay_time = '',$admin_id = '') { + + $market_altogether = M("market_altogether","tab_") + ->where(['pay_time'=>$pay_time,'admin_id'=>$admin_id]) + ->find(); + + if ($market_altogether) { + return '已发放'; + } else { + return '未发放'; + } + + +} ?> diff --git a/Application/Admin/Controller/AuthManagerController.class.php b/Application/Admin/Controller/AuthManagerController.class.php index 400804d5a..0a01aa345 100644 --- a/Application/Admin/Controller/AuthManagerController.class.php +++ b/Application/Admin/Controller/AuthManagerController.class.php @@ -595,14 +595,38 @@ class AuthManagerController extends AdminController{ function AuthMarketMember() { - $mid = I('id'); $gid = I('group_id'); + $data = $_POST; + $AuthGroup = D('AuthGroup'); if( !$AuthGroup->find($gid)){ $this->error('用户组不存在'); } + if (IS_POST) { + + $data = json_encode($data); + + $AuthGroup->where(['id'=>$gid])->save(['market_percentage'=>$data]); + + $this->success("编辑成功",U("index")); + + } else { + + $auth_group = M('AuthGroup')->where( array('status'=>array('egt','0'),'module'=>'admin','type'=>AuthGroupModel::TYPE_ADMIN) ) + ->getfield('id,id,title,rules'); + $data = $AuthGroup->where(['id'=>$gid])->find(); + + $data['market_percentage'] = json_decode($data['market_percentage'],true); + $this->assign('data',$data['market_percentage']); + $this->assign('auth_group', $auth_group); + + $this->display(); + } + + + } } diff --git a/Application/Admin/Controller/MarketPercentageController.class.php b/Application/Admin/Controller/MarketPercentageController.class.php index 049e6e900..81e301c38 100644 --- a/Application/Admin/Controller/MarketPercentageController.class.php +++ b/Application/Admin/Controller/MarketPercentageController.class.php @@ -11,7 +11,470 @@ use User\Api\UserApi as UserApi; class MarketPercentageController extends ThinkController { - public function index(){ + public function index($row = 10, $p = 1){ + + $map = []; + + $_REQUEST['pay_time']?($map['pay_time'] = $_REQUEST['pay_time']):''; + $_REQUEST['promote_id']?($map['promote_id'] = $_REQUEST['promote_id']):''; + $_REQUEST['relation_game_id']?($map['relation_game_id'] = $_REQUEST['relation_game_id']):''; + $_REQUEST['sdk_version']?($map['sdk_version'] = $_REQUEST['sdk_version']):''; + + $data = M("settleup_marketorder","tab_") + ->field("pay_time,promote_account,company_belong,real_name,develop_type,game_name, + sum(pay_amount) pay_amount,sum(cp_amount) cp_amount,sum(promote_amount) promote_amount, + sum(channel_amount) channel_amount, sum(company_tax) company_tax,sum(company_profit) company_profit"); + + if ($_REQUEST['export']) { + $data = $data->where($map) + ->group("promote_id,game_name,pay_time") + ->select(); + } else { + $data = $data->page($p, $row) + ->where($map) + ->group("promote_id,game_name,pay_time") + ->order("pay_time DESC") + ->select(); + } + + $sum = M("settleup_marketorder","tab_") + ->field("pay_time,promote_account,company_belong,real_name,develop_type,game_name, + sum(pay_amount) pay_amount,sum(cp_amount) cp_amount,sum(promote_amount) promote_amount, + sum(channel_amount) channel_amount, sum(company_tax) company_tax,sum(company_profit) company_profit") + ->where($map) + ->find(); + + if ($_REQUEST['export']) { + + $title = ['pay_time' => '时间', + 'promote_account' => '会长账号', + 'company_belong' => '内外团', + 'real_name' => '所属市场专员', + 'develop_type' => '类型', + 'game_name' => '游戏名称', + 'pay_amount' => '总流水', + 'cp_amount' => '上游结算流水', + 'promote_amount' => '下游结算流水', + 'channel_amount' => '支付渠道费用', + 'company_tax' => '公司税费', + 'company_profit' => '税后毛利额']; + + $sum['pay_time'] = ''; + $sum['promote_account'] = ''; + $sum['company_belong'] = '合计'; + $sum['real_name'] = ''; + $sum['develop_type'] = ''; + $sum['game_name'] = ''; + + $data = array_merge($data,[$sum]); + + data2csv($data,'市场结算管理',$title); + } + + $this->assign("sum",$sum); + + foreach ($data as $key => $value) { + + if ($value['company_belong'] == 0) { + $data[$key]['company_belong'] = '内团'; + } else if ($value['company_belong'] == 1) { + $data[$key]['company_belong'] = '外团'; + } else if ($value['company_belong'] == 2) { + $data[$key]['company_belong'] = '分发联盟'; + } else { + $data[$key]['company_belong'] = '无'; + } + + if ($value['develop_type'] == 1) { + $data[$key]['develop_type'] = '自主开发'; + } else if ($value['develop_type'] == 2) { + $data[$key]['develop_type'] = '自主开发及维护'; + } else if ($value['develop_type'] == 3) { + $data[$key]['develop_type'] = '只维护'; + } else { + $data[$key]['develop_type'] = '无'; + } + } + + $count = M("settleup_marketorder","tab_") + ->where($map) + ->group("promote_id,game_name,pay_time") + ->select(false); + + $count = M()->table("({$count}) count")->count(); + + $page = set_pagination($count, $row); + if ($page) { + $this->assign('_page', $page); + } + $this->checkListOrCountAuthRestMap($map,[]); + + $this->assign("list_data",$data); + $this->display(); + + } + + public function marketStaffSettle($row = 10, $p = 1) { + + $map = []; + + $map['group_id'] = ['in','11,12,21']; + + $_REQUEST['pay_time']?($map['pay_time'] = $_REQUEST['pay_time']):''; + $_REQUEST['admin_id']?($map['admin_id'] = $_REQUEST['admin_id']):''; + $_REQUEST['group_id']?($map['group_id'] = $_REQUEST['group_id']):''; + +// dump(getMarketAdmin());die(); + $data = M("settleup_marketorder","tab_") + ->field("pay_time,promote_account,company_belong,real_name,develop_type,game_name, + sum(pay_amount) pay_amount,sum(company_profit) company_profit,group_id,market_percentage") + ->join("left join sys_auth_group_access access on admin_id=access.uid") + ->join("left join sys_auth_group auth on access.group_id=auth.id"); + + if ($_REQUEST['export']) { + $data = $data->where($map) + ->group("admin_id,pay_time") + ->order("pay_time DESC") + ->select(); + } else { + $data = $data->page($p, $row) + ->where($map) + ->group("admin_id,pay_time") + ->order("pay_time DESC") + ->select(); + } + + $count = M("settleup_marketorder","tab_") + ->field("pay_time,promote_account,company_belong,real_name,develop_type,game_name, + sum(pay_amount) pay_amount,sum(company_profit) company_profit,group_id,market_percentage") + ->join("left join sys_auth_group_access access on admin_id=access.uid") + ->join("left join sys_auth_group auth on access.group_id=auth.id") + ->where($map) + ->group("admin_id,pay_time") + ->select(false); + $count = M()->table("({$count}) count")->count(); + + $page = set_pagination($count, $row); + if ($page) { + $this->assign('_page', $page); + } + $this->checkListOrCountAuthRestMap($map,[]); + +// dump($data);die(); + + foreach ($data as $key => $value) { + + if ($value['group_id'] == 21) { + $data[$key]['level'] = '初级'; + } else if ($value['group_id'] == 11) { + $data[$key]['level'] = '中级'; + } else if ($value['group_id'] == 12) { + $data[$key]['level'] = '高级'; + } + + $market_percentage = json_decode($value['market_percentage'],true); + $data[$key]['performance_revenue'] = number_format($market_percentage['performance_revenue'], 2, '.', ''); + $data[$key]['appraisal_bonuses'] = number_format($market_percentage['appraisal_bonuses'], 2, '.', ''); + //业绩提成 + $data[$key]['performance_commission'] = + number_format($value['company_profit']*($market_percentage['develop_commission_ratio']/100) + + $value['company_profit']*($market_percentage['maintain_commission_ratio']/100), 2, '.', ''); + //绩效考核奖金 + $data[$key]['achievement_bonus'] = + number_format($value['company_profit']*($market_percentage['appraisal_bonuses_ratio']/100) + + $value['company_profit']*($market_percentage['maintain_appraisal_bonuses_ratio']/100), 2, '.', ''); + //总提成 + $data[$key]['commission'] = number_format($data[$key]['performance_commission']+$data[$key]['achievement_bonus'], 2, '.', ''); + //应发金额 + $data[$key]['extend_commission'] = + number_format($data[$key]['performance_commission'] * ($market_percentage['performance_monthly_ratio']/100)+ + $data[$key]['performance_commission'] * ($market_percentage['month_bonus_ratio']/100), 2, '.', ''); + //待发金额 + $data[$key]['wait_commission'] = number_format($data[$key]['commission'] - $data[$key]['extend_commission'], 2, '.', ''); + } + + if ($_REQUEST['export']) { + + $title = ['pay_time' => '时间', + 'real_name' => '市场人员', + 'level' => '级别', + 'performance_revenue' => '开发总流水', + 'appraisal_bonuses' => '维护总流水', + 'performance_commission' => '业绩提成', + 'achievement_bonus' => '绩效考核奖金', + 'commission' => '当月总提成', + 'extend_commission' => '应发金额', + 'wait_commission' => '待发金额']; + + data2csv($data,'市场结算管理',$title); + } + + $this->assign("list_data",$data); + $this->display(); + + } + + public function personMarketStaffSettle($row = 10, $p = 1) { + + $map = []; + +// $map['group_id'] = ['in','11,12,21']; + + $_REQUEST['pay_time']?($map['pay_time'] = $_REQUEST['pay_time']):''; + $_REQUEST['admin_id']?($map['admin_id'] = $_REQUEST['admin_id']):''; + $_REQUEST['group_id']?($map['group_id'] = $_REQUEST['group_id']):''; + + $admin_id = $_SESSION['onethink_admin']['user_auth']['uid']; + $map['admin_id'] = $admin_id; + + $data = M("settleup_marketorder","tab_") + ->field("tab_settleup_marketorder.id,pay_time,promote_account,company_belong,tab_settleup_marketorder.real_name,develop_type,game_name, + sum(pay_amount) pay_amount,sum(company_profit) company_profit,group_id,market_percentage,nickname,admin_id") + ->join("left join sys_auth_group_access access on admin_id=access.uid") + ->join("left join sys_auth_group auth on access.group_id=auth.id") + ->join("left join sys_member member on access.uid=member.uid"); + + if ($_REQUEST['export']) { + $data = $data->where($map) + ->group("admin_id,pay_time") + ->order("pay_time DESC") + ->select(); + } else { + $data = $data + ->where($map) + ->group("admin_id,pay_time") + ->order("pay_time DESC") + ->select(); + } + + $count = M("settleup_marketorder","tab_") + ->field("pay_time,promote_account,company_belong,tab_settleup_marketorder.real_name,develop_type,game_name, + sum(pay_amount) pay_amount,sum(company_profit) company_profit,group_id,market_percentage,nickname") + ->join("left join sys_auth_group_access access on admin_id=access.uid") + ->join("left join sys_auth_group auth on access.group_id=auth.id") + ->join("left join sys_member member on access.uid=member.uid") + ->where($map) + ->group("admin_id,pay_time") + ->select(false); + $count = M()->table("({$count}) count")->count(); + + $page = set_pagination($count, $row); + if ($page) { + $this->assign('_page', $page); + } + $this->checkListOrCountAuthRestMap($map,[]); + +// dump($data);die(); + + $sum['performance_commission'] = 0; + $sum['achievement_bonus'] = 0; + + $sum['commission'] = 0; + $sum['extend_commission'] = 0; + + $sum['wait_commission'] = 0; + $sum['company_profit'] = 0; + + foreach ($data as $key => $value) { + + if ($value['group_id'] == 21) { + $data[$key]['level'] = '初级'; + } else if ($value['group_id'] == 11) { + $data[$key]['level'] = '中级'; + } else if ($value['group_id'] == 12) { + $data[$key]['level'] = '高级'; + } + $data[$key]['is_send'] = is_sendBonus($value['pay_time'],$value['admin_id']); + + $market_percentage = json_decode($value['market_percentage'],true); + $data[$key]['performance_revenue'] = number_format($market_percentage['performance_revenue'], 2, '.', ''); + $data[$key]['appraisal_bonuses'] = number_format($market_percentage['appraisal_bonuses'], 2, '.', ''); + //业绩提成 + $data[$key]['performance_commission'] = + number_format($value['company_profit']*($market_percentage['develop_commission_ratio']/100) + + $value['company_profit']*($market_percentage['maintain_commission_ratio']/100), 2, '.', ''); + $sum['performance_commission'] += $data[$key]['performance_commission']; + //绩效考核奖金 + $data[$key]['achievement_bonus'] = + number_format($value['company_profit']*($market_percentage['appraisal_bonuses_ratio']/100) + + $value['company_profit']*($market_percentage['maintain_appraisal_bonuses_ratio']/100), 2, '.', ''); + $sum['achievement_bonus'] += $data[$key]['achievement_bonus']; + //总提成 + $data[$key]['commission'] = number_format($data[$key]['performance_commission']+$data[$key]['achievement_bonus'], 2, '.', ''); + $sum['commission'] += $data[$key]['commission']; + //应发金额 + $data[$key]['extend_commission'] = + number_format($data[$key]['performance_commission'] * ($market_percentage['performance_monthly_ratio']/100)+ + $data[$key]['performance_commission'] * ($market_percentage['month_bonus_ratio']/100), 2, '.', ''); + $sum['extend_commission'] += $data[$key]['extend_commission']; + //待发金额 + $data[$key]['wait_commission'] = number_format($data[$key]['commission'] - $data[$key]['extend_commission'], 2, '.', ''); + $sum['wait_commission'] += $data[$key]['wait_commission']; + + $sum['company_profit'] += $value['company_profit']; + } + + $this->assign("sum",$sum); + + if ($_REQUEST['export']) { + + $title = ['pay_time' => '时间', + 'real_name' => '市场人员', + 'nickname' => '账号', + 'level' => '级别', + 'performance_revenue' => '开发总流水', + 'appraisal_bonuses' => '维护总流水', + 'company_profit'=>'税后毛利', + 'performance_commission' => '业绩提成', + 'achievement_bonus' => '绩效考核奖金', + 'commission' => '总提成', + 'extend_commission' => '当月应发金额', + 'wait_commission' => '剩余金额', + 'is_send'=>'剩余金额发放状态']; + + $data = array_merge($data,[$sum]); + + data2csv($data,'个人总提成列表',$title); + } + $arraypage = $p; + $size = $row;//每页显示的记录数 + $data = array_slice($data, ($arraypage - 1) * $size, $size); + + $this->assign("list_data",$data); + $this->display(); + + } + + public function sendBonus() { + + $map['pay_time'] = $_REQUEST['pay_time']; + $map['admin_id'] = $_REQUEST['admin_id']; + + if (!$_REQUEST['pay_time']||!$_REQUEST['admin_id']) { + $this->ajaxReturn(['status'=>0,'msg'=>'数据错误']); + } + + $data = M("settleup_marketorder","tab_") + ->field("tab_settleup_marketorder.id,pay_time,promote_account,company_belong,tab_settleup_marketorder.real_name,develop_type,game_name, + sum(pay_amount) pay_amount,sum(company_profit) company_profit,group_id,market_percentage,nickname,admin_id") + ->join("left join sys_auth_group_access access on admin_id=access.uid") + ->join("left join sys_auth_group auth on access.group_id=auth.id") + ->join("left join sys_member member on access.uid=member.uid") + ->where($map) + ->group("admin_id,pay_time") + ->select(); + + + foreach ($data as $key => $value) { + + if ($value['group_id'] == 21) { + $data[$key]['level'] = '初级'; + } else if ($value['group_id'] == 11) { + $data[$key]['level'] = '中级'; + } else if ($value['group_id'] == 12) { + $data[$key]['level'] = '高级'; + } + + $market_percentage = json_decode($value['market_percentage'],true); + $data[$key]['performance_revenue'] = number_format($market_percentage['performance_revenue'], 2, '.', ''); + $data[$key]['appraisal_bonuses'] = number_format($market_percentage['appraisal_bonuses'], 2, '.', ''); + //业绩提成 + $data[$key]['performance_commission'] = + number_format($value['company_profit']*($market_percentage['develop_commission_ratio']/100) + + $value['company_profit']*($market_percentage['maintain_commission_ratio']/100), 2, '.', ''); + //绩效考核奖金 + $data[$key]['achievement_bonus'] = + number_format($value['company_profit']*($market_percentage['appraisal_bonuses_ratio']/100) + + $value['company_profit']*($market_percentage['maintain_appraisal_bonuses_ratio']/100), 2, '.', ''); + //总提成 + $data[$key]['commission'] = number_format($data[$key]['performance_commission']+$data[$key]['achievement_bonus'], 2, '.', ''); + //应发金额 + $data[$key]['extend_commission'] = + number_format($data[$key]['performance_commission'] * ($market_percentage['performance_monthly_ratio']/100)+ + $data[$key]['performance_commission'] * ($market_percentage['month_bonus_ratio']/100), 2, '.', ''); + //待发金额 + $data[$key]['wait_commission'] = number_format($data[$key]['commission'] - $data[$key]['extend_commission'], 2, '.', ''); + } + + $insert['pay_time'] = $data[0]['pay_time']; + $insert['admin_id'] = $data[0]['admin_id']; + $insert['real_name'] = $data[0]['real_name']; + $insert['nickname'] = $data[0]['nickname']; + $insert['level'] = $data[0]['level']; + $insert['pay_amount'] = $data[0]['pay_amount']; + $insert['extend_commission'] = $data[0]['extend_commission']; + $insert['wait_commission'] = $data[0]['wait_commission']; + $insert['remark'] = "{$data[0]['nickname']}发起提成发放"; + $insert['create_time'] = time(); + + $is_hav = M("market_altogether","tab_") + ->where(['pay_time'=>$data[0]['pay_time'],'admin_id'=>$data[0]['admin_id']]) + ->find(); + if ($is_hav) { + $this->ajaxReturn(['status'=>1,'msg'=>'已经发放过']); + } + + $is_add = M("market_altogether","tab_")->add($insert); + + if ($is_add) { + $this->ajaxReturn(['status'=>1,'msg'=>'发放成功']); + } else { + $this->ajaxReturn(['status'=>0,'msg'=>'发放失败']); + } + + } + + public function showBonusList($row = 10, $p = 1) { + + $map = []; + + $_REQUEST['pay_time']?$map['pay_time'] = $_REQUEST['pay_time']:''; + $_REQUEST['real_name']?$map['real_name'] = $_REQUEST['real_name']:''; + $_REQUEST['nickname']?$map['nickname'] = $_REQUEST['nickname']:''; + $_REQUEST['level']?$map['level'] = $_REQUEST['level']:''; + + $data = M("market_altogether","tab_") + ->field("real_name,admin_id,nickname,level,sum(pay_amount) pay_amount,sum(extend_commission) extend_commission, sum(wait_commission) wait_commission,remark") + ->where($map); + if ($_REQUEST['export']) { + $data = $data + ->order("pay_time DESC") + ->group("admin_id") + ->select(); + } else { + $data = $data->page($p, $row) + ->order("pay_time DESC") + ->group("admin_id") + ->select(); + } + + if ($_REQUEST['export']) { + + $title = ['real_name' => '姓名', + 'nickname' => '账号', + 'level' => '级别', + 'pay_amount' => '总流水', + 'extend_commission' => '已发放总提成', + 'wait_commission'=>'剩余未发放总提成']; + + data2csv($data,'个人总提成列表',$title); + } + + $count = M("market_altogether","tab_") + ->where($map) + ->group("admin_id") + ->select(false); + $count = M()->table("({$count}) count")->count(); + + $page = set_pagination($count, $row); + if ($page) { + $this->assign('_page', $page); + } + + $this->checkListOrCountAuthRestMap($map,[]); + + $this->assign("list_data",$data); + $this->display(); } diff --git a/Application/Admin/Controller/TimingController.class.php b/Application/Admin/Controller/TimingController.class.php index 9a800890b..03e9d330b 100644 --- a/Application/Admin/Controller/TimingController.class.php +++ b/Application/Admin/Controller/TimingController.class.php @@ -343,4 +343,155 @@ class TimingController extends AdminController { } + function getPayway($name) { + switch ($name){ + case 'alipay': //支付宝 1 + return 1; + case 'wei_xin': //微信支付 2 3 + return 2; + case 'heepay': //汇付宝 6 + return 6; + case 'sqpay': //双乾支付9,10,15 + return 9; + case 'yeepay': //易宝支付17 + return 17; + default: + return ''; + } + + } + + public function caculateMarketStream () { + echo date("Y-m-d H:i:s")."----------------------市场结算管理计算----------------------\n"; + $data = M("auth_group") + ->where(['title'=>['like','%市场%']]) + ->select(false); + + $data = M("auth_group_access") + ->field("auth.market_percentage,real_name,sys_member.uid") + ->join("left join ({$data}) auth on auth.id = sys_auth_group_access.group_id") + ->join("left join sys_member on sys_member.uid = sys_auth_group_access.uid") + ->where("auth.title is not null") + ->select(false); + + $spend = M("spend","tab_") + ->field("sum(pay_amount) as pay_amount,FROM_UNIXTIME(pay_time,'%Y-%m') pay_time, + substring_index(substring_index(tab_spend.game_name,'(',1),'(',-1) game_name,game_id,relation_game_id,tab_spend.sdk_version, + CASE WHEN substring_index(substring_index(`chain`,'/',2),'/',-1) !='' THEN substring_index(substring_index(`chain`,'/',2),'/',-1) ELSE promote_id END promote_id,pay_way") + ->join("left join tab_promote on tab_spend.promote_id = tab_promote.id") + ->join("left join tab_game game on game.id=tab_spend.game_id") + ->where(['tab_spend.pay_status'=>1,'pay_way'=>['egt',1]]) + ->group("tab_spend.id") + ->select(false); + + $payway_spend = M()->table("({$spend}) spend") + ->field("sum(pay_amount) as pay_amount,pay_time,promote_id,game_name,game_id,relation_game_id,pay_way,sdk_version") + ->group("pay_time,promote_id,game_name,sdk_version,pay_way") + ->select(); + + $channel_fee = []; + + $paywayData = M("tool","tab_") + ->field("name,config") + ->where(['name'=>['in',"alipay,weixin,wei_xin,wei_xin_app,jubaobar,weixin_gf,jft,jft_wap,goldpig,ptb_pay,bind_pay,sqpay,heepay,yeepay"]]) + ->select(); + + $pay_rate = []; + foreach ($paywayData as $key => $value) { + $pay_config = json_decode($value['config'],true); + if ($this->getPayway($value['name'])) { + $pay_rate[$this->getPayway($value['name'])] = $pay_config['channel_rate']?$pay_config['channel_rate']:0; + } + } + foreach ($payway_spend as $key => $value) { + + switch ($value['pay_way']){ + case 3: //微信同步 + $value['pay_way'] = '2'; + break; + case 10: //双乾同步 + $value['pay_way'] = '9'; + break; + case 15: //双乾同步 + $value['pay_way'] = '9'; + break; + } + //将时间、推广员id、游戏名、设备类型作为键值标记渠道费用 + if (!$channel_fee[$value['pay_time'].$value['promote_id'].$value['game_name'].$value['sdk_version']]) { + if (!$value['pay_way']) { + $channel_fee[$value['pay_time'].$value['promote_id'].$value['game_name'].$value['sdk_version']] = 0; + } + $channel_fee[$value['pay_time'].$value['promote_id'].$value['game_name'].$value['sdk_version']] + = $value['pay_amount'] * ($pay_rate[$value['pay_way']]/100); + } else { + $channel_fee[$value['pay_time'].$value['promote_id'].$value['game_name'].$value['sdk_version']] + = $channel_fee[$value['pay_time'].$value['promote_id'].$value['game_name'].$value['sdk_version']]+($value['pay_amount'] * ($pay_rate[$value['pay_way']]/100)); + } + + } + + $spend = M()->table("({$spend}) spend") + ->field("sum(pay_amount) as pay_amount,pay_time,promote_id,game_name,game_id,relation_game_id,sdk_version") + ->group("pay_time,promote_id,game_name,sdk_version") + ->select(false); + + $promote_data = M()->table("({$spend}) spend") + ->field("pay_time,company_id,account as promote_account,company.company_belong,develop_type,spend.promote_id,spend.game_name,game_id,relation_game_id,spend.pay_amount,auth.real_name,auth.uid as admin_id,market_percentage,sdk_version") + ->join("left join tab_promote promote on spend.promote_id = promote.id") + ->join("left join tab_promote_company company on promote.company_id = company.id") + ->join("left join ({$data}) auth on auth.uid=admin_id") + ->select(); +// dump($promote_data);die(); + + foreach ($promote_data as $key => $value) { + + $cp_radio = getGameCpRadio($value['game_id'],$value['pay_amount'],true); + if (!$cp_radio) { + $cp_radio = getGameCpRadio($value['game_id'],$value['pay_amount'],false); + } + //上游流水 + $promote_data[$key]['cp_amount'] = $value['pay_amount'] * ($cp_radio * 0.01); + //下游 + $promote_radio = getGamePromoteCompanyRadio($value['company_id'],$value['relation_game_id'],time(),$value['pay_amount'],true,$value['company_belong']); + if (!$promote_radio) { + $promote_radio = getGamePromoteCompanyRadio($value['company_id'],$value['relation_game_id'],time(),$value['pay_amount'],false,$value['company_belong']); + } + //下游流水 + $promote_data[$key]['promote_amount'] = $value['pay_amount'] * ($promote_radio * 0.01); + //渠道费用 + $promote_data[$key]['channel_amount'] = $channel_fee[$value['pay_time'].$value['promote_id'].$value['game_name'].$value['sdk_version']]; + //公司税费 + $promote_data[$key]['company_tax'] = ($value['pay_amount']-$promote_data[$key]['cp_amount']- $promote_data[$key]['promote_amount'])*(6.72/100); + //毛利 + $promote_data[$key]['company_profit'] = $value['pay_amount']-$promote_data[$key]['cp_amount']-$promote_data[$key]['promote_amount']-$promote_data[$key]['channel_amount']-$promote_data[$key]['company_tax']; + + if ($value['promote_id'] == 0) { + $promote_data[$key]['promote_account']='官方渠道'; + $promote_data[$key]['company_id']='0'; + $promote_data[$key]['company_belong']='3'; + $promote_data[$key]['develop_type']='0'; + } + + unset($promote_data[$key]['market_percentage']); + + $marker_data = M("settleup_marketorder","tab_") + ->where(['pay_time'=>$value['pay_time'],'promote_id'=>$value['promote_id'],'game_name'=>$value['game_name'],'sdk_version'=>$value['sdk_version']]) + ->find(); + echo "日期:{$value['pay_time']},游戏:{$value['game_name']},推广员:{$value['promote_account']}\n"; +// dump($promote_data[$key]);die(); + if (!$marker_data) { + M("settleup_marketorder","tab_") + ->add($promote_data[$key]); + } else { + M("settleup_marketorder","tab_") + ->where(['pay_time'=>$value['pay_time'],'promote_id'=>$value['promote_id'],'game_name'=>$value['game_name']]) + ->save($promote_data[$key]); + } + + } +// dump($promote_data); + echo date("Y-m-d H:i:s")."----------------------市场结算管理计算----------------------\n"; + + } + } diff --git a/Application/Admin/Controller/UserController.class.php b/Application/Admin/Controller/UserController.class.php index c12f721ee..fda736a24 100644 --- a/Application/Admin/Controller/UserController.class.php +++ b/Application/Admin/Controller/UserController.class.php @@ -435,6 +435,9 @@ class UserController extends AdminController } else { $map['id'] = $_GET['id']; $Member = D('UcenterMember')->where($map)->find(); + + $data = D('Member')->where(array('uid' => $_GET['id']))->find(); + $au = D('AuthGroupAccess')->where(array('uid' => $_GET['id']))->find(); $this->assign("authid", $au["group_id"]); $this->assign("houtai", $au["houtai"]); @@ -442,6 +445,7 @@ class UserController extends AdminController $username = $_POST['username']; $password = $_POST['password']; $this->assign('lists', $list); + $this->assign('data',$data); $this->assign('list', $Member); $this->assign('sd', $group); $this->meta_title = '编辑管理员'; diff --git a/Application/Admin/View/AuthManager/authmarketmember.html b/Application/Admin/View/AuthManager/authmarketmember.html new file mode 100644 index 000000000..ae8d1862e --- /dev/null +++ b/Application/Admin/View/AuthManager/authmarketmember.html @@ -0,0 +1,164 @@ + + + +
+ 位置 + +
+
+
+ +
+ + +
+ +
+ 市场专员分成 + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
业绩提成起提流水: + +
开发业绩提成比例: + +
维护业绩提成比例: + +
业绩月发放比例: + +
余下业绩发放时间选择: + +
考核奖金起提流水: + +
开发考核奖金比例: + +
维护考核奖金比例: + +
奖金月发放比例: + +
余下奖金发放时间选择: + +
+
+ +
+ + + + + 返回 + +
+
+
+
+
+ +
+
+ + +
+ + + + + + + + diff --git a/Application/Admin/View/AuthManager/category.html b/Application/Admin/View/AuthManager/category.html index 9e976cb56..1343dcfc8 100644 --- a/Application/Admin/View/AuthManager/category.html +++ b/Application/Admin/View/AuthManager/category.html @@ -16,6 +16,9 @@
  • 分类授权
  • 数据授权
  • 成员授权
  • + +
  • 市场专员分成
  • +
  • diff --git a/Application/Admin/View/AuthManager/index.html b/Application/Admin/View/AuthManager/index.html index 5e19eb690..1a543c92c 100644 --- a/Application/Admin/View/AuthManager/index.html +++ b/Application/Admin/View/AuthManager/index.html @@ -47,6 +47,9 @@ 分类授权 成员授权 数据授权 + + 市场专员分成 + {:get_status_title($vo['status'])} diff --git a/Application/Admin/View/AuthManager/managergroup.html b/Application/Admin/View/AuthManager/managergroup.html index 7cbac77ff..a817267c6 100644 --- a/Application/Admin/View/AuthManager/managergroup.html +++ b/Application/Admin/View/AuthManager/managergroup.html @@ -16,6 +16,9 @@
  • 分类授权
  • 数据授权
  • 成员授权
  • + +
  • 市场专员分成
  • +
  • diff --git a/Application/Admin/View/MarketPercentage/index.html b/Application/Admin/View/MarketPercentage/index.html new file mode 100644 index 000000000..69aca9cbf --- /dev/null +++ b/Application/Admin/View/MarketPercentage/index.html @@ -0,0 +1,411 @@ + + + + + + + + + + + + + + + +
    +
    +
    + + 新增 + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    + + +
    + 搜索 +
    +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    时间会长账号内外团所属市场专员类型游戏名称总流水上游结算流水下游结算流水支付渠道费用公司税费税后毛利额
    aOh! 暂时还没有内容!
    {$data.pay_time}{$data.promote_account}{$data.company_belong}{$data.real_name}{$data['develop_type']}{$data['game_name']}{$data['pay_amount']}{$data['cp_amount']}{$data['promote_amount']}{$data['channel_amount']}{$data['company_tax']}{$data['company_profit']}
    合计{$sum['pay_amount']}{$sum['cp_amount']}{$sum['promote_amount']}{$sum['channel_amount']}{$sum['company_tax']}{$sum['company_profit']}
    +
    + +
    + +
    +
    + + 导出 + + {$_page|default=''} +
    + +
    + + + + + + diff --git a/Application/Admin/View/MarketPercentage/marketstaffsettle.html b/Application/Admin/View/MarketPercentage/marketstaffsettle.html new file mode 100644 index 000000000..e50051110 --- /dev/null +++ b/Application/Admin/View/MarketPercentage/marketstaffsettle.html @@ -0,0 +1,387 @@ + + + + + + + + + + + + + + + +
    +
    +
    + + 新增 + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    + + +
    + 搜索 +
    +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    时间市场专员级别开发总流水维护总流水业绩提成绩效考核奖金当月总提成应发金额待发金额
    aOh! 暂时还没有内容!
    {$data.pay_time|default='无'}{$data.real_name|default='无'}{$data.level|default='无'}{$data.performance_revenue|default='0.00'}{$data['appraisal_bonuses']|default='0.00'}{$data['performance_commission']|default='0.00'}{$data['achievement_bonus']|default='0.00'}{$data['commission']|default='0.00'}{$data['extend_commission']|default='0.00'}{$data['wait_commission']|default='0.00'}
    +
    + +
    + +
    +
    + + 导出 + + {$_page|default=''} +
    + +
    + + + + + + diff --git a/Application/Admin/View/MarketPercentage/personmarketstaffsettle.html b/Application/Admin/View/MarketPercentage/personmarketstaffsettle.html new file mode 100644 index 000000000..46e5a5b1f --- /dev/null +++ b/Application/Admin/View/MarketPercentage/personmarketstaffsettle.html @@ -0,0 +1,402 @@ + + + + + + + + + + + + + + + +
    +
    +
    + + 新增 + +
    +
    + +
    +
    + +
    +
    + +
    + + +
    + 搜索 +
    +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    时间市场专员账号级别开发总流水维护总流水税后毛利业绩提成绩效考核奖金总提成当月应发金额剩余金额剩余金额发放状态操作
    aOh! 暂时还没有内容!
    {$data.pay_time|default='无'}{$data.real_name|default='无'}{$data.nickname|default='无'}{$data.level|default='无'}{$data.performance_revenue|default='0.00'}{$data['appraisal_bonuses']|default='0.00'}{$data.company_profit|default="0.00"}{$data['performance_commission']|default='0.00'}{$data['achievement_bonus']|default='0.00'}{$data['commission']|default='0.00'}{$data['extend_commission']|default='0.00'}{$data['wait_commission']|default='0.00'}{$data['is_send']|default='0.00'} + + 发放 + +
    合计{$sum.company_profit|default="0.00"}{$sum['performance_commission']|default='0.00'}{$sum['achievement_bonus']|default='0.00'}{$sum['commission']|default='0.00'}{$sum['extend_commission']|default='0.00'}{$sum['wait_commission']|default='0.00'}
    +
    + +
    + +
    +
    + + 导出 + + {$_page|default=''} +
    + +
    + + + + + + diff --git a/Application/Admin/View/MarketPercentage/showbonuslist.html b/Application/Admin/View/MarketPercentage/showbonuslist.html new file mode 100644 index 000000000..2cd0efbab --- /dev/null +++ b/Application/Admin/View/MarketPercentage/showbonuslist.html @@ -0,0 +1,388 @@ + + + + + + + + + + + + + + + +
    +
    +
    + + 新增 + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    + + +
    + 搜索 +
    +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    姓名账号级别总流水已发放总提成剩余未发放总提成操作备注
    aOh! 暂时还没有内容!
    {$data.real_name}{$data.nickname}{$data.level}{$data.pay_amount}{$data['extend_commission']}{$data['wait_commission']}{$data['remark']}
    +
    + +
    + +
    +
    + + 导出 + + {$_page|default=''} +
    + +
    + + + + + + diff --git a/Application/Admin/View/User/edit.html b/Application/Admin/View/User/edit.html index 5305ac602..4b155719e 100644 --- a/Application/Admin/View/User/edit.html +++ b/Application/Admin/View/User/edit.html @@ -21,7 +21,7 @@ 真实姓名 - + 管理员账号用于管理后台登录 diff --git a/Data/update.sql b/Data/update.sql index 830ee62f2..4cd35a696 100644 --- a/Data/update.sql +++ b/Data/update.sql @@ -1748,4 +1748,7 @@ ALTER TABLE `sj_game_user`.`sj_user` ADD COLUMN `platform_account` varchar(60) NULL COMMENT '游戏渠道玩家账号' AFTER `age_type`; ALTER TABLE `tab_deposit` ADD COLUMN `old_change_promote_id` int(11) NULL DEFAULT 0 COMMENT '修改配置前渠道' , -ADD COLUMN `old_change_promote_account` varchar(30) NULL COMMENT '修改配置前渠道账号' ; \ No newline at end of file +ADD COLUMN `old_change_promote_account` varchar(30) NULL COMMENT '修改配置前渠道账号' ; + +ALTER TABLE `sys_member` +ADD COLUMN `real_name` varchar(255) NULL DEFAULT '' COMMENT '真实姓名' AFTER `status`; \ No newline at end of file