You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
277 lines
12 KiB
PHTML
277 lines
12 KiB
PHTML
5 years ago
|
<?php
|
||
|
// 游戏默认分成比例模板
|
||
|
namespace Admin\Controller;
|
||
|
|
||
|
class CompanyGameRatioController extends AdminController
|
||
|
{
|
||
|
public $admininfo;
|
||
|
public $DBModel;
|
||
|
public $Status = [
|
||
|
"-2"=>"管理员拒绝",
|
||
|
"-1"=>"市场部拒绝",
|
||
|
"0"=>"待审核",
|
||
|
"1"=>"市场部通过",
|
||
|
"2"=>"管理员通过"
|
||
|
];
|
||
|
public function _initialize()
|
||
|
{
|
||
|
$this->admininfo = $_SESSION['onethink_admin']['user_auth'];
|
||
|
$this->DBModel = M("company_game_ratio","tab_");
|
||
|
parent::_initialize();
|
||
|
}
|
||
|
|
||
|
public function index()
|
||
|
{
|
||
|
dd(MODULE_NAME."/".CONTROLLER_NAME );
|
||
|
$params = I('get.');
|
||
|
$page = $params['p'] ? intval($params['p']) : 1;
|
||
|
$row = $params['row'] ? intval($params['row']) : 10;
|
||
|
|
||
|
$gamewhere['_string'] = '1 = 1';
|
||
|
$where['_string'] = '1 = 1';
|
||
|
if(isset($params['relation_game_id'])){
|
||
|
$gamewhere['relation_game_id'] = $params['relation_game_id'];
|
||
|
$where['m.relation_game_id'] = $params['relation_game_id'];
|
||
|
}
|
||
|
if(isset($params['company_id'])){
|
||
|
$where['m.company_id'] = $params['company_id'];
|
||
|
}
|
||
|
if(isset($params['status'])){
|
||
|
$where['m.status'] = $params['status'];
|
||
|
}
|
||
|
//TODO:未计算公司类型
|
||
|
$this->checkListOrCountAuthRestMap($where);
|
||
|
$gameres = M("game","tab_")->field("tab_game.relation_game_id,tab_game.relation_game_name,IF(tab_game.original_package_name='','未配置',tab_game.original_package_name) original_package_name,tab_game_type.type_name game_type_name")->where($gamewhere)->join("tab_game_type on tab_game.game_type_id = tab_game_type.id")->group("tab_game.relation_game_id")->select(false);
|
||
|
$dbres = M("company_game_ratio_log","tab_")
|
||
|
->alias('m')
|
||
|
->field("m.*,g.*,p.company_name,p.company_belong")
|
||
|
->join("left JOIN ({$gameres}) g ON m.relation_game_id = g.relation_game_id")
|
||
|
->join("left JOIN tab_promote_company p ON m.company_id = p.id")
|
||
|
->where($where)
|
||
|
->order('create_time desc, id desc');
|
||
|
if(isset($params['export'])){
|
||
|
$dbres = $dbres->select();
|
||
|
}else{
|
||
|
$dbres = $dbres->page($page, $row)->select();
|
||
|
}
|
||
|
foreach($dbres as $k=>&$v){
|
||
|
$v['settlement_type'] ='--';
|
||
|
$v['begin_time'] = date("Y-m-d",$v['begin_time']);
|
||
|
$v['end_time'] = $v['end_time'] ? date('Y-m-d', $v['end_time']) : '永久';
|
||
|
$v['company_belong'] ="下游".getCompanyBlong($v['company_belong']);
|
||
|
$v['verify_log'] = json_decode($v['verify_log'], true);
|
||
|
$v["create"]= "{$v['verify_log']['create_user']} <br/> {$v['verify_log']['create_time']}";
|
||
|
if(isset($v['verify_log']['market_user'])){
|
||
|
if($v['status'] == -1){
|
||
|
$ts = "审核拒绝";
|
||
|
}else{
|
||
|
$ts = "审核通过";
|
||
|
}
|
||
|
$v["market"]= "{$ts}({$v['verify_log']['market_user']}) <br/> {$v['verify_log']['market_time']}";
|
||
|
}else{
|
||
|
$v["market"] = '--';
|
||
|
}
|
||
|
|
||
|
if(isset($v['verify_log']['admin_user'])){
|
||
|
if($v['status'] == -2){
|
||
|
$ts = "审核拒绝";
|
||
|
}else{
|
||
|
$ts = "审核通过";
|
||
|
}
|
||
|
$v["admin"]= "{$ts}({$v['verify_log']['admin_user']}) <br/> {$v['verify_log']['admin_time']}";
|
||
|
}else{
|
||
|
$v["admin"] = '--';
|
||
|
}
|
||
|
//新
|
||
|
$thisTurnoverRatios = $v['turnover_ratio'] ? json_decode($v['turnover_ratio'], true) : [];
|
||
|
$thisRatioDtl = "默认:{$v['ratio']}%";
|
||
|
if ($thisTurnoverRatios) {
|
||
|
if (I('export', 0) == 1) {
|
||
|
$symbol = "\n";
|
||
|
} else {
|
||
|
$symbol = "<br>";
|
||
|
}
|
||
|
foreach ($thisTurnoverRatios as $thisTurnoverRatio) {
|
||
|
$thisIntervalClosedStatusText = isset($thisTurnoverRatio['instanceof']) ? ($thisTurnoverRatio['instanceof'] == 1 ? '≥' : '>') : '≥';
|
||
|
$thisRatioDtl .= "{$symbol}月流水{$thisIntervalClosedStatusText}{$thisTurnoverRatio['turnover']},比例:{$thisTurnoverRatio['ratio']}%";
|
||
|
}
|
||
|
}
|
||
|
$v['turnover_ratio_str'] = $thisRatioDtl;
|
||
|
//旧
|
||
|
$lastTurnoverRatios = $v['last_turnover_ratio'] ? json_decode($v['last_turnover_ratio'], true) : [];
|
||
|
$lastRatioDtl = "默认:{$v['last_ratio']}%";
|
||
|
if ($lastTurnoverRatios) {
|
||
|
if (I('export', 0) == 1) {
|
||
|
$symbol = "\n";
|
||
|
} else {
|
||
|
$symbol = "<br>";
|
||
|
}
|
||
|
foreach ($lastTurnoverRatios as $thisTurnoverRatio) {
|
||
|
$thisIntervalClosedStatusText = isset($thisTurnoverRatio['instanceof']) ? ($thisTurnoverRatio['instanceof'] == 1 ? '≥' : '>') : '≥';
|
||
|
$lastRatioDtl .= "{$symbol}月流水{$thisIntervalClosedStatusText}{$thisTurnoverRatio['turnover']},比例:{$thisTurnoverRatio['ratio']}%";
|
||
|
}
|
||
|
}
|
||
|
$v['last_turnover_ratio_str'] = $lastRatioDtl;
|
||
|
|
||
|
}
|
||
|
$count = M("company_game_ratio_log","tab_")->alias('m')->field("count(id) count")->where($where)->find()['count'];
|
||
|
$this->assign('data', $dbres);
|
||
|
$page = set_pagination($count, $row);
|
||
|
if($page) {
|
||
|
$this->assign('_page', $page);
|
||
|
}
|
||
|
$this->assign('status',$this->Status);
|
||
|
|
||
|
$this->assign("companyList",D("PromoteCompany")->getList());
|
||
|
$this->assign("gameList",D("Game")->getRelationGameLits());
|
||
|
$this->display();
|
||
|
}
|
||
|
|
||
|
public function add()
|
||
|
{
|
||
|
if ($_POST) {
|
||
|
$params = I('post.');
|
||
|
if (empty($params['begin_time'])) {
|
||
|
$this->error('请选择开始时间');
|
||
|
}
|
||
|
if (!empty($params['end_time'])) {
|
||
|
if (strtotime($params['end_time']) < strtotime($params['begin_time'])) {
|
||
|
$this->error('结束时间不得小于开始时间');
|
||
|
}
|
||
|
}
|
||
|
if (!isset($params['ratio']) || $params['ratio'] === '') {
|
||
|
$this->error('默认分成比例不能为空');
|
||
|
}
|
||
|
$save['turnover_ratio'] = $this->setTurnoverRatio($params);
|
||
|
$save['ratio'] = $params['ratio'] ?? 0;
|
||
|
$save['relation_game_id'] = $params['relation_game_id'] ?? 0;
|
||
|
$save['company_id'] = $params['company_id'] ?? 0;
|
||
|
$save['begin_time'] = strtotime($params['begin_time']);
|
||
|
$save['end_time'] = $params['end_time'] ? strtotime($params['end_time'])+86399 : 0;
|
||
|
$save['remark'] = $params['remark'] ?? '';
|
||
|
$save['status'] = 0;
|
||
|
$save['verify_log']=json_encode(["create_user"=>$this->admininfo["username"],"create_time"=>date("Y-m-d H:i:s")]);
|
||
|
//获取旧比例
|
||
|
$this->getOldRatio($save);
|
||
|
//判断已有未审核
|
||
|
$where = [
|
||
|
"relation_game_id"=>$save['company_id'],
|
||
|
"company_id"=>$save['company_id'],
|
||
|
"status"=>["LT",2]//管理员未确认
|
||
|
];
|
||
|
$hasdb = M("company_game_ratio_log","tab_")->field("count(id) count")->where($where)->find()['count'];
|
||
|
if($hasdb > 0){
|
||
|
$this->error('已经有审批单,请直接搜索后修改');
|
||
|
}
|
||
|
|
||
|
$id = M("company_game_ratio_log","tab_")->add($save);
|
||
|
addOperationLog(['op_type'=>0,'key'=>$id,'op_name'=>'新增','url'=>U('index')]);
|
||
|
$this->ajaxReturn(["msg"=>"添加成功","code"=>1,"url"=>U("index")]);
|
||
|
|
||
|
} else {
|
||
|
$companyList = D("PromoteCompany")->getList();
|
||
|
$this->assign("companyList",$companyList);
|
||
|
$this->assign("gameList",D("Game")->getRelationGameLits());
|
||
|
$this->display();
|
||
|
}
|
||
|
|
||
|
}
|
||
|
public function edit()
|
||
|
{
|
||
|
|
||
|
}
|
||
|
public function del()
|
||
|
{
|
||
|
|
||
|
}
|
||
|
public function setTurnoverRatio($params)
|
||
|
{
|
||
|
$save['turnover_ratio'] = [];
|
||
|
if (!empty(array_filter($params['turnover'])) || !empty(array_filter($params['turnover_ratio'])) ) {
|
||
|
if (is_array($params['turnover']) && is_array($params['turnover_ratio']) && is_array($params['instanceof'])) {
|
||
|
foreach ($params['turnover'] as $turnover) {
|
||
|
if (empty($turnover)) {
|
||
|
$this->error('月流水不能为空');
|
||
|
}
|
||
|
}
|
||
|
foreach ($params['turnover_ratio'] as $turnoverRatio) {
|
||
|
if (empty($turnoverRatio)) {
|
||
|
$this->error('月流水分成比例不能为空');
|
||
|
}
|
||
|
}
|
||
|
foreach ($params['instanceof'] as $intervalClosedStatus) {
|
||
|
if (!in_array($intervalClosedStatus, [1, 2])) {
|
||
|
$this->error('月流水分符号不能为空');
|
||
|
}
|
||
|
}
|
||
|
$turnoverCount = count($params['turnover']);
|
||
|
$sortTurnover = $params['turnover'];
|
||
|
sort($sortTurnover);
|
||
|
if ($params['turnover'] != $sortTurnover || $turnoverCount != count(array_unique($params['turnover']))) {
|
||
|
$this->error('月流水必须以正序的方式填写,且必须大于上一个月流水');
|
||
|
}
|
||
|
$ratio = $params['ratio'] ?? 0;
|
||
|
if ($params['turnover_ratio'][0] <= $ratio) {
|
||
|
$this->error('月流水分成比例必须大于默认分成比例');
|
||
|
}
|
||
|
$turnoverRatioCount = count($params['turnover_ratio']);
|
||
|
$sortTurnoverRatio = $params['turnover_ratio'];
|
||
|
sort($sortTurnoverRatio);
|
||
|
if ($params['turnover_ratio'] != $sortTurnoverRatio || $turnoverRatioCount != count(array_unique($params['turnover_ratio']))) {
|
||
|
$this->error('月流水分成比例必须以正序的方式填写,且必须大于上一个月流水分成比例');
|
||
|
}
|
||
|
|
||
|
foreach ($params['turnover'] as $key => $turnover) {
|
||
|
$save['turnover_ratio'][] = [
|
||
|
'turnover' => bcdiv($turnover, 1, 2),
|
||
|
'ratio' => bcdiv($params['turnover_ratio'][$key], 1, 2),
|
||
|
'instanceof' => (isset($params['instanceof'][$key]) ? $params['instanceof'][$key] : 1),
|
||
|
];
|
||
|
}
|
||
|
$save['turnover_ratio'] = json_encode($save['turnover_ratio']);
|
||
|
}
|
||
|
}
|
||
|
return $save['turnover_ratio'];
|
||
|
|
||
|
}
|
||
|
public function getOldRatio(&$save)
|
||
|
{
|
||
|
$tmap = [
|
||
|
"company_id"=>$save['company_id'],
|
||
|
"relation_game_id"=>$save['relation_game_id'],
|
||
|
];
|
||
|
$ratio_dbres = $this->DBModel->where($tmap)->find();
|
||
|
if(isset($ratio_dbres['ratio'])){
|
||
|
$save['last_ratio']=$ratio_dbres['ratio'];
|
||
|
$save['last_turnover_ratio']=$ratio_dbres['turnover_ratio'];
|
||
|
return ;
|
||
|
}
|
||
|
|
||
|
$cmap = [
|
||
|
"id"=>$save['company_id'],
|
||
|
];
|
||
|
$com = M("promote_company","tab_")->field("company_belong")->where($cmap)->find();
|
||
|
if(!isset($com['company_belong'])){
|
||
|
$save['last_ratio']=0;
|
||
|
$save['last_turnover_ratio']="";
|
||
|
return ;
|
||
|
}
|
||
|
//查询模板
|
||
|
$mmap = [
|
||
|
"company_belong"=>$com['company_belong'],
|
||
|
"relation_game_id"=>$save['relation_game_id']
|
||
|
];
|
||
|
$mould = M("game_ratio_mould","tab_")->where($mmap)->find();
|
||
|
if(isset($mould['ratio'])){
|
||
|
$save['last_ratio']=$mould['ratio'];
|
||
|
$save['last_turnover_ratio']=$mould['turnover_ratio'];
|
||
|
}else{
|
||
|
$save['last_ratio']=0;
|
||
|
$save['last_turnover_ratio']="";
|
||
|
}
|
||
|
return ;
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|