优化市场绩效脚本

master
chenzhi 4 years ago
parent 5439bd2ee0
commit 8ebecb5517

@ -246,7 +246,12 @@ class MarketPerformanceSetController extends Controller {
$userid = array_merge(array_keys($value),$userid);
}
$userid = array_unique($userid);
$this->marketUserInfo = M("member")->where(["uid"=>['in',$userid]])->getField("uid,real_name",true);
$this->marketUserInfo = M("auth_group_access")
->alias("acc")
->where(["acc.uid"=>['in',$userid]])
->join("sys_member as mem on acc.uid = mem.uid")
->join("sys_auth_group as gro on acc.group_id = gro.id")
->getField("acc.uid,mem.real_name,gro.department_id",true);
}
/**
@ -468,7 +473,8 @@ class MarketPerformanceSetController extends Controller {
$baseArr = $this->companyInfo[$company_id];
$baseArr['pay_time'] = $this->date;
$baseArr['is_settlement'] = 1;
$baseArr['real_name'] = $this->marketUserInfo[$markertUserId];
$baseArr['real_name'] = $this->marketUserInfo[$markertUserId]['real_name'];
$baseArr['department_id'] = $this->marketUserInfo[$markertUserId]['department_id'];
$baseArr['admin_id'] = $markertUserId;
foreach ($games as $k => $v) {
$game = $this->gameInfo[$k];
@ -520,54 +526,51 @@ class MarketPerformanceSetController extends Controller {
public function marketManagerSet($count_date)
{
if(!$this->isInit) $this->configInit($count_date);
$marketManagerGroupId = "25";
$this->marketAltogetherModel->where(['pay_time'=>$this->date,'level'=>$marketManagerGroupId])->delete();
//获取毛利统计
$dbres = $this->settleupMarketorderModel->where(['pay_time'=>$this->date])->field("sum(pay_amount) pay_amount,sum(refund_amount) refund_amount,develop_type")->group('develop_type')->select();
$count = [
'pay_amount'=>0,
'performance_revenue'=>0,
'appraisal_bonuses'=>0
];
foreach ($dbres as $k => $v) {
$tmpPayAmount = $v['pay_amount']-$v['refund_amount'];
$count['pay_amount'] += $tmpPayAmount;
if($v['develop_type'] == 3){
$count['appraisal_bonuses'] += $tmpPayAmount;
}else{
$count['performance_revenue'] += $tmpPayAmount;
//获取所有的经理
$MarketEvent = A("Market","Event");
$level = $MarketEvent->getConfig('ManagerLevel');
$this->marketAltogetherModel->where(['pay_time'=>$this->date,'level'=>$level])->delete();
$markertManager = $MarketEvent->getManagerPerformanInfo();
if(!$markertManager) return;
foreach ($markertManager as $k => $manager) {
//获取毛利统计
$dbres = $this->settleupMarketorderModel->where(['pay_time'=>$this->date,'department_id'=>$manager['department_id']])->field("sum(pay_amount) pay_amount,sum(refund_amount) refund_amount,develop_type")->group('develop_type')->select();
$count = [
'pay_amount'=>0,
'performance_revenue'=>0,
'appraisal_bonuses'=>0
];
foreach ($dbres as $k => $v) {
$tmpPayAmount = $v['pay_amount']-$v['refund_amount'];
$count['pay_amount'] += $tmpPayAmount;
if($v['develop_type'] == 3){
$count['appraisal_bonuses'] += $tmpPayAmount;
}else{
$count['performance_revenue'] += $tmpPayAmount;
}
}
}
//获取经理配置及经理
$config = M("auth_group")->where("id = {$marketManagerGroupId}")->getField("market_percentage");
$config = json_decode($config,true);
$user = M("auth_group_access")->alias("access")->join("left join sys_member member on access.uid=member.uid")->where(['group_id'=>$marketManagerGroupId])->field("access.uid,real_name,nickname")->select();
if(!$user) return;
//获取经理抽成公式
$achievement_bonus = round(($count['appraisal_bonuses']*$config['maintain_appraisal_bonuses_ratio'] + $count['performance_revenue']*$config['appraisal_bonuses_ratio'])/100,2);
$baseData = [
'pay_time'=>$this->date,
'level'=>$marketManagerGroupId,
'pay_amount' => $count['pay_amount'],
'extend_commission'=> round($achievement_bonus*$config['month_bonus_ratio']/100,2),
'wait_commission' => round($achievement_bonus*(100-$config['month_bonus_ratio'])/100,2),
'create_time'=>time(),
'performance_revenue'=>$count['performance_revenue'],
'appraisal_bonuses'=>$count['appraisal_bonuses'],
'achievement_bonus'=>$achievement_bonus,
'wait_achievement_commission'=>round($achievement_bonus*(100-$config['month_bonus_ratio'])/100,2)
];
foreach ($user as $k=> $v) {
$baseData['real_name'] = $v['real_name'];
$baseData['nickname'] = $v['nickname'];
$baseData['admin_id'] = $v['uid'];
$res = $this->marketAltogetherModel->add($baseData);
$config = json_decode($manager['market_percentage'],true);
$achievement_bonus = round(($count['appraisal_bonuses']*$config['maintain_appraisal_bonuses_ratio'] + $count['performance_revenue']*$config['appraisal_bonuses_ratio'])/100,2);
echo "marketManagerSet {$v['real_name']}/{$res}".PHP_EOL;
$baseData = [
'pay_time'=>$this->date,
'level'=>$level,
'pay_amount' => $count['pay_amount'],
'extend_commission'=> round($achievement_bonus*$config['month_bonus_ratio']/100,2),
'wait_commission' => round($achievement_bonus*(100-$config['month_bonus_ratio'])/100,2),
'create_time'=>time(),
'performance_revenue'=>$count['performance_revenue'],
'appraisal_bonuses'=>$count['appraisal_bonuses'],
'achievement_bonus'=>$achievement_bonus,
'wait_achievement_commission'=>round($achievement_bonus*(100-$config['month_bonus_ratio'])/100,2),
'real_name'=>$manager['real_name'],
'admin_id'=>$manager['uid'],
'nickname'=>$manager['nickname'],
'department_id'=>$manager['department_id']
];
$res = $this->marketAltogetherModel->add($baseData);
echo "marketManagerSet {$manager['real_name']}/{$res}".PHP_EOL;
}
}
/**
* 设置每月第一个周一自动重算

@ -15,59 +15,67 @@ class OldCountController extends \Think\Controller
public function moreDepartment()
{
//1.新增组
$manager = M('auth_group','sys_')->where("title = '高级市场专员'")->find();
$dbres = M('auth_group','sys_')->where("title LIKE '%市场%' AND id != 18")->select();
foreach ($dbres as &$v) {
if($v['id'] == 25){
$v['rules'] = $manager['rules'];
$v['data_empower_type'] =3;
$v['show_data'] =1;
$v['show_market_admin'] =1;
$v['show_promote'] =1;
}
$v['title'] = "一部".$v['title'];
$v['department_id'] = 1;
$v['department_name'] = "市场一部";
M('auth_group','sys_')->save($v);
unset($v['id']);
$v['title'] = str_replace("一部","二部",$v['title']);
$v['department_id'] = 2;
$v['department_name'] = '市场二部';
M('auth_group','sys_')->add($v);
}
// $manager = M('auth_group','sys_')->where("title = '高级市场专员'")->find();
// $dbres = M('auth_group','sys_')->where("title LIKE '%市场%' AND id != 18")->select();
// foreach ($dbres as &$v) {
// if($v['id'] == 25){
// $v['rules'] = $manager['rules'];
// $v['data_empower_type'] =3;
// $v['show_data'] =1;
// $v['show_market_admin'] =1;
// $v['show_promote'] =1;
// }
// if(mb_strpos($v['title'],"初级")){
// $v['department_level'] = 1;
// }
// if(mb_strpos($v['title'],"中级")){
// $v['department_level'] = 2;
// }
// if(mb_strpos($v['title'],"高级")){
// $v['department_level'] = 3;
// }
// if(mb_strpos($v['title'],"经理")){
// $v['department_level'] = 4;
// }
// if(mb_strpos($v['title'],"总监")){
// $v['department_level'] = 5;
// }
// $v['title'] = "一部".$v['title'];
// $v['department_id'] = 1;
// $v['department_name'] = "市场一部";
// M('auth_group','sys_')->save($v);
// unset($v['id']);
// $v['title'] = str_replace("一部","二部",$v['title']);
// $v['department_id'] = 2;
// $v['department_name'] = '市场二部';
// M('auth_group','sys_')->add($v);
// }
//2.增加配置
M("kv")->add([
'key'=>"market_manager_group_ids",
'value'=>'25,30',
'type'=>'string',
'remark'=>'市场经理组id'
]);
M("kv")->add([
'key'=>"market_director_group_ids",
'value'=>'14,28',
'type'=>'string',
'remark'=>'市场总监组id'
]);
//3.增加部门表数据
M("department")->add([
'id'=>1,
'name'=>'市场一部',
'group_ids'=>'11,12,14,21,25',
'leader_group'=>'14',
'create_time'=>time(),
'update_time'=>time()
]);
M("department")->add([
'id'=>2,
'name'=>'市场二部',
'group_ids'=>'26,27,28,29,30',
'leader_group'=>'28',
'create_time'=>time(),
'update_time'=>time()
]);
//3.增加部门表数据
// M("department")->add([
// 'id'=>1,
// 'name'=>'市场一部',
// 'group_ids'=>'11,12,14,21,25',
// 'leader_group'=>'14',
// 'create_time'=>time(),
// 'update_time'=>time()
// ]);
// M("department")->add([
// 'id'=>2,
// 'name'=>'市场二部',
// 'group_ids'=>'26,27,28,29,30',
// 'leader_group'=>'28',
// 'create_time'=>time(),
// 'update_time'=>time()
// ]);
//4.修改旧等级
// M("market_altogether","tab_")->where("level = 21")->save(['level'=>1]);
// M("market_altogether","tab_")->where("level = 11")->save(['level'=>2]);
// M("market_altogether","tab_")->where("level = 12")->save(['level'=>3]);
// M("market_altogether","tab_")->where("level = 25")->save(['level'=>4]);
}
@ -755,6 +763,12 @@ class OldCountController extends \Think\Controller
}
return $time_arr;
}
public function eventTest($event,$action)
{
$Event = A($event,"Event");
$res = $Event->$action();
dd($res);
}

@ -853,11 +853,12 @@ class TimingController extends AdminController {
public function insertAllUserBonus($time) {
// $time = $_REQUEST['time'];
$groupIds = A("Market","Event")->getGeneralMarketGroup();
$data = M("member")
->field("access.uid admin_id,real_name,nickname,group_id level")
->field("access.uid admin_id,real_name,nickname,auth.department_level level")
->join("left join sys_auth_group_access access on sys_member.uid = access.uid")
->join("left join sys_auth_group auth on access.group_id=auth.id")
->where(['group_id'=>['in','11,12,21']])
->where(['group_id'=>['in',$groupIds]])
->select();
foreach ($data as $key => $value) {
@ -909,13 +910,13 @@ class TimingController extends AdminController {
}
$map['is_settlement'] = 1;
$groupIds = A("Market","Event")->getGeneralMarketGroup();
//获取admin_id
$accessData = M("auth_group_access")
->alias("access")
->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(['group_id'=>['in','11,12,21']])
->where(['group_id'=>['in',$groupIds]])
->getField("access.uid,group_id,market_percentage,nickname");
$all_data = SM("settleup_marketorder","tab_")

@ -6,6 +6,10 @@ use Think\Controller;
class MarketEvent extends Controller
{
private $MarketDepartmentId = "1,2";
private $ManagerLevel = "4";
/**
* 获取所有市场部组id
*/
public function getMarketGroupId()
{
$res = M('department','sys_')->where("id in ({$this->MarketDepartmentId})")->getField("group_ids",true);
@ -15,4 +19,39 @@ class MarketEvent extends Controller
}
return rtrim($sendData,",");
}
/**
* 获取普通的市场专员初中高的gid
*/
public function getGeneralMarketGroup()
{
$where = [
"department_id"=>['in',$this->MarketDepartmentId],
"department_level"=>['LT',4]
];
$dbres = M('auth_group','sys_')->where($where)->getField("id",true);
return implode(",",$dbres);
}
/**
* 获取经理信息
*/
public function getManagerPerformanInfo()
{
$where = [
"department_id"=>['in',$this->MarketDepartmentId],
"department_level"=>['eq',$this->ManagerLevel]
];
$dbres = M('auth_group','sys_')->where($where)->getField("id",true);
$market = M("auth_group_access")
->alias("acc")
->where(["acc.group_id"=>['in',$dbres]])
->join("sys_member as mem on acc.uid = mem.uid")
->join("sys_auth_group as gro on acc.group_id = gro.id")
->getField("acc.uid,mem.nickname,mem.real_name,gro.department_id,gro.market_percentage",true);
return $market;
}
public function getConfig($key)
{
return $this->$key;
}
}
Loading…
Cancel
Save