市场业绩功能修改,将不结算毛利以日来统计

master
zhengyongxing 4 years ago
parent ba6323203a
commit 40664b5f8d

@ -1437,12 +1437,19 @@ class MarketPercentageController extends ThinkController
$data = M("company_belong_game","tab_")
->where($where)
->page($p, $row)
->order("begin_time DESC")
->select();
foreach ($data as $key => $value) {
$data[$key]["begin_time"] = date("Y-m-01",strtotime($value['time']));
$data[$key]["end_time"] = date("Y-m-t",strtotime($value['time']));
$data[$key]["begin_time"] = date("Y-m-d",$value['begin_time']);
if($value['end_time'] == 0) {
$data[$key]["end_time"] = "永久";
} else{
$data[$key]["end_time"] = date("Y-m-d",$value['end_time']);
}
$where_game = $value['game_ids'];
@ -1486,8 +1493,8 @@ class MarketPercentageController extends ThinkController
$data = $_POST;
if (!$data['time']) {
$this->ajaxReturn(['msg'=>"请填写生效月份","status"=>0]);
if (!$data['begin_time']) {
$this->ajaxReturn(['msg'=>"起始时间必填","status"=>0]);
}
if (!$data['game_ids']) {
@ -1497,16 +1504,23 @@ class MarketPercentageController extends ThinkController
$data['game_ids'] = array_merge([''],$data['game_ids'],['']);
$data['game_ids'] = implode(',',$data['game_ids']);
// $data['time'] = strtotime($data['time']);
// $data['end_time'] = strtotime($data['end_time']);
$data['begin_time'] = strtotime($data['begin_time']);
$data['end_time'] = strtotime($data['end_time']);
$time_start = $data['begin_time'];
if($data['end_time']) {
$time_end = $data['end_time'];
} else {
$time_end = 99999999999;
}
$belong_game = M("company_belong_game","tab_")
->where("time='{$data['time']}'")
->where("((begin_time<={$time_start} and (end_time >={$time_start} or end_time=0)) or (begin_time<={$time_end} and end_time >={$time_end}) or (end_time>={$time_start} and end_time <={$time_end}))")
->select();
if ($belong_game) {
$this->ajaxReturn(['msg'=>"已添加月份,请勿重复添加","status"=>0]);
$this->ajaxReturn(['msg'=>"重复时间段,请勿重复添加","status"=>0]);
}
M("company_belong_game","tab_")->add($data);
@ -1527,8 +1541,8 @@ class MarketPercentageController extends ThinkController
if (IS_POST) {
$data = $_POST;
if (!$data['time']) {
$this->ajaxReturn(['msg'=>"请填写生效月份","status"=>0]);
if (!$data['begin_time']) {
$this->ajaxReturn(['msg'=>"起始时间必填","status"=>0]);
}
if (!$data['game_ids']) {
@ -1548,18 +1562,27 @@ class MarketPercentageController extends ThinkController
$data['game_ids'] = array_merge([''],$data['game_ids'],['']);
$data['game_ids'] = implode(',',$data['game_ids']);
// $data['begin_time'] = strtotime($data['begin_time']);
// $data['end_time'] = strtotime($data['end_time']);
$time_start = strtotime($data['begin_time']);
if($data['end_time']) {
$time_end = strtotime($data['end_time']);
} else {
$time_end = 99999999999;
}
$data['begin_time'] = strtotime($data['begin_time']);
$data['end_time'] = strtotime($data['end_time']);
$belong_game = M("company_belong_game","tab_")
->where("time='{$data['time']}' and id != {$id}")
->where("((begin_time<={$time_start} and (end_time >={$time_start} or end_time=0)) or (begin_time<={$time_end} and end_time >={$time_end}) or (end_time>={$time_start} and end_time <={$time_end})) and id != {$id}")
->select();
if ($belong_game) {
$this->ajaxReturn(['msg'=>"已添加月份,请勿重复添加","status"=>0]);
$this->ajaxReturn(['msg'=>"重复时间段,请勿重复添加","status"=>0]);
}
// dump($data);die();
M("company_belong_game","tab_")->where(['id'=>$id])->save($data);
$this->ajaxReturn(['msg'=>"编辑成功","status"=>1]);
@ -1591,12 +1614,11 @@ class MarketPercentageController extends ThinkController
}
// dump($game_ids);
$data['ids'] = implode(',',$game_ids);
// dump($data);die();
$game_ids = json_encode(array_values($game_ids));
// dump($game_ids);
$data['game_ids'] = $game_ids;
$data['begin_time'] = date("Y-m-d",$data['begin_time']);

@ -993,9 +993,21 @@ class TimingController extends AdminController {
$map['pay_time'] = $_REQUEST['time'];
}
$spend_map = [];
$time_start = 0;
$time_end = 0;
if($_REQUEST['time'] == 'all') {
$belong_map = [];
$map = [];
$spend_map['pay_time'] = ['elt',strtotime(date('Y-m-t 23:59:59', strtotime(date('Y',time()).'-'.(date('m',time())-1).'-01')))];
} else {
$time_start = strtotime(date('Y-m-1',strtotime($_REQUEST['time'])));
$time_end = strtotime(date('Y-m-t',strtotime($_REQUEST['time'])));
$belong_map = "((begin_time<={$time_start} and (end_time >={$time_start} or end_time=0)) or (begin_time<={$time_end} and end_time >={$time_end}) or (end_time>={$time_start} and end_time <={$time_end}))";
}
$data = M("auth_group")
@ -1009,10 +1021,42 @@ class TimingController extends AdminController {
->where("auth.title is not null")
->select(false);
$belong_game = M("company_belong_game","tab_")
->field("game_ids,begin_time,end_time")
->where($belong_map)
->select();
if($belong_game) {
unset($spend_map['pay_time']);
}
$unsettlement = $spend_map;
foreach ($belong_game as $key => $value) {
$value['game_ids'] = explode(',',$value['game_ids']);
foreach ($value['game_ids'] as $k => $v) {
if (!$v) {
unset($value['game_ids'][$k]);
}
}
$value['game_ids'] = implode(',',$value['game_ids']);
if (!$spend_map['_string']) {
$spend_map['_string'] = "(pay_time between {$value['begin_time']} and {$value['end_time']}+86399 and relation_game_id not in({$value['game_ids']}))";
} else {
$spend_map['_string'] .= " or (pay_time between {$value['begin_time']} and {$value['end_time']}+86399 and relation_game_id not in({$value['game_ids']}))";
}
}
$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,market_admin_id")
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,market_admin_id,1 is_settlement")
->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',0]])
@ -1020,25 +1064,34 @@ class TimingController extends AdminController {
->group("tab_spend.id")
->select(false);
// $desposit = M("deposit","tab_")
// ->field("sum(pay_amount) as pay_amount,FROM_UNIXTIME(payed_time,'%Y-%m') pay_time,
// substring_index(substring_index(tab_pay_info.game_name,'(',1),'(',-1) game_name,game_id,relation_game_id,tab_deposit.sdk_version,
// CASE WHEN substring_index(substring_index(`chain`,'/',2),'/',-1) !='' THEN substring_index(substring_index(`chain`,'/',2),'/',-1) ELSE tab_pay_info.promote_id END promote_id,tab_deposit.pay_way,market_admin_id")
// ->join("inner join tab_pay_info on tab_pay_info.order_id=tab_deposit.pay_order_number")
// ->join("left join tab_promote on tab_deposit.promote_id = tab_promote.id")
// ->join("left join tab_game game on game.id=tab_pay_info.game_id")
// ->where(['tab_deposit.pay_status'=>1,'tab_deposit.pay_way'=>['egt',1],'pay_source'=>2])
// ->where($spend_map)
// ->group("tab_deposit.id")
// ->select(false);
//
// $spend = "{$spend} UNION ALL {$desposit}";
$not_in_spend = M("spend","tab_")
->field("tab_spend.id id")
->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',0]])
->where($spend_map)
->group("tab_spend.id")
->select(false);
$unsettlement['_string'] = "tab_spend.id not in($not_in_spend)";
$unsettlement_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,market_admin_id,0 is_settlement")
->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',0]])
->where($unsettlement)
->group("tab_spend.id")
->select(false);
$spend = "{$spend} UNION ALL {$unsettlement_spend}";
// var_dump($desposit);die();
$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,market_admin_id")
->field("sum(pay_amount) as pay_amount,pay_time,promote_id,game_name,game_id,relation_game_id,pay_way,sdk_version,market_admin_id,is_settlement")
->where($map)
->group("pay_time,promote_id,game_name,pay_way,market_admin_id")
->group("pay_time,promote_id,game_name,pay_way,market_admin_id,is_settlement")
->select();
$channel_fee = [];
@ -1088,35 +1141,33 @@ class TimingController extends AdminController {
break;
}
//将时间、推广员id、游戏名、设备类型作为键值标记渠道费用
if (!$channel_fee[$value['pay_time'].$value['promote_id'].$value['game_name'].$value['market_admin_id']]) {
if (!$channel_fee[$value['pay_time'].$value['promote_id'].$value['game_name'].$value['market_admin_id'].$value['is_settlement']]) {
if (!$value['pay_way']) {
$channel_fee[$value['pay_time'].$value['promote_id'].$value['game_name'].$value['market_admin_id']] = 0;
$channel_fee[$value['pay_time'].$value['promote_id'].$value['game_name'].$value['market_admin_id'].$value['is_settlement']] = 0;
}
$channel_fee[$value['pay_time'].$value['promote_id'].$value['game_name'].$value['market_admin_id']]
$channel_fee[$value['pay_time'].$value['promote_id'].$value['game_name'].$value['market_admin_id'].$value['is_settlement']]
= $value['pay_amount'] * ($pay_rate[$value['pay_way']]/100);
} else {
$channel_fee[$value['pay_time'].$value['promote_id'].$value['game_name'].$value['market_admin_id']]
= $channel_fee[$value['pay_time'].$value['promote_id'].$value['game_name'].$value['market_admin_id']]+($value['pay_amount'] * ($pay_rate[$value['pay_way']]/100));
$channel_fee[$value['pay_time'].$value['promote_id'].$value['game_name'].$value['market_admin_id'].$value['is_settlement']]
= $channel_fee[$value['pay_time'].$value['promote_id'].$value['game_name'].$value['market_admin_id'].$value['is_settlement']]+($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,market_admin_id")
->field("sum(pay_amount) as pay_amount,pay_time,promote_id,game_name,game_id,relation_game_id,sdk_version,market_admin_id,is_settlement")
->where($map)
->group("pay_time,promote_id,game_name,market_admin_id")
->group("pay_time,promote_id,game_name,market_admin_id,is_settlement")
->select(false);
$promote_data = M()->table("({$spend}) spend")
->field("pay_time,company_id,company.company_name,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,market_admin_id as admin_id,market_percentage,sdk_version")
->field("pay_time,company_id,company.company_name,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,market_admin_id as admin_id,market_percentage,sdk_version,is_settlement")
->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=market_admin_id")
->where(['develop_type'=>['egt',1],'group_id'=>['in',['11','12','21']]])
->select();
//
// dump($tax_radio);die();
$specialPayAmount = [];
foreach ($promote_data as $key => $value) {
@ -1144,7 +1195,7 @@ class TimingController extends AdminController {
$specialAmount = $specialPayAmount[$value['pay_time']][$value['company_id']."-".$value['promote_id']."-".$value['relation_game_id']]?$specialPayAmount[$value['pay_time']][$value['company_id']."-".$value['promote_id']."-".$value['relation_game_id']]:0;
//渠道费用
$promote_data[$key]['channel_amount'] = $channel_fee[$value['pay_time'].$value['promote_id'].$value['game_name'].$value['admin_id']];
$promote_data[$key]['channel_amount'] = $channel_fee[$value['pay_time'].$value['promote_id'].$value['game_name'].$value['admin_id'].$value['is_settlement']];
$tax = 0;
//公司税费
foreach($tax_radio as $k => $v) {
@ -1153,18 +1204,19 @@ class TimingController extends AdminController {
}
}
$belong_game = M("company_belong_game","tab_")
->field("game_ids")
->where("time='{$value['pay_time']}'")
->find();
$belong_game = array_values(explode(",",$belong_game['game_ids']));
if ((in_array($value['relation_game_id'],$belong_game) && $value['company_belong'] ==1) || $value['company_belong'] !=1) {
$promote_data[$key]['is_settlement']=1;
} else {
$promote_data[$key]['is_settlement']=0;
}
// $belong_game = M("company_belong_game","tab_")
// ->field("game_ids")
// ->where("time='{$value['pay_time']}'")
// ->find();
//
// $belong_game = array_values(explode(",",$belong_game['game_ids']));
//
// if ((in_array($value['relation_game_id'],$belong_game) && $value['company_belong'] ==1) || $value['company_belong'] !=1) {
// $promote_data[$key]['is_settlement']=1;
// } else {
// $promote_data[$key]['is_settlement']=0;
// }
$promote_data[$key]['is_settlement'] = $value['is_settlement'];
$promote_data[$key]['company_tax'] = ($value['pay_amount']-$promote_data[$key]['cp_amount']- $promote_data[$key]['promote_amount'])*($tax/100);

@ -107,7 +107,8 @@
<td class="l"><i class="mustmark">*</i>生效期限:</td>
<td class="r table_radio">
<div style="float: left;">
<input type="text" class="txt time" name="time" id="time" placeholder="生效月份" value="">
<input type="text" class="txt time" name="begin_time" id="begin_time" placeholder="起始时间" value="">-
<input type="text" class="txt time" name="end_time" id="end_time" placeholder="结束时间" value="">
</div>
<span class="notice-text"></span>
</td>
@ -223,17 +224,10 @@
$(function(){
$('.time').datetimepicker({
format: 'yyyy-mm',
language:"zh-CN",
// minView:2,
weekStart: 1,
todayBtn: true,
todayHighlight: false,
startView: 3,
minView: 3,
forceParse: 0,
autoclose:true,
pickerPosition:'bottom-left'
format: 'yyyy-mm-dd',
language: "zh-CN",
minView: 2,
autoclose: true
});
$('#submit').click(function (e) {

@ -52,8 +52,8 @@
<div class="cf top_nav_list">
<div class="cf main-place top_nav_list navtab_list">
<h3 class="page_title">团推广游戏</h3>
<p class="description_text">说明:外团可推广游戏数据</p>
<h3 class="page_title">仅内团推广游戏</h3>
<p class="description_text">说明:仅内团推广游戏数据</p>
</div>
<div class="fl button_list">
<div class="tools">
@ -127,7 +127,7 @@
<tr>
<td>{$game_data['original_package_name']|default="--"}</td>
<td>{$game_data['relation_game_name']|default="--"}</td>
<td>{$game_data['relation_game_name']|default="--"}</td>
<td>{$game_data['game_type_name']|default="--"}</td>
</tr>
</if>
</foreach>
@ -176,7 +176,7 @@ $(".select_gallery").select2();
<script type="text/javascript">
//导航高亮
highlight_subnav("{:U('GameRatioMould/companybelonggame')}");
highlight_subnav("{:U('MarketPercentage/companybelonggame')}");
$(function(){
$('#time_start').datetimepicker({

@ -107,7 +107,8 @@
<td class="l"><i class="mustmark">*</i>生效期限:</td>
<td class="r table_radio">
<div style="float: left;">
<input type="text" class="txt time" name="time" id="time" placeholder="生效月份" value="{$data['time']}">
<input type="text" class="txt time" name="begin_time" id="begin_time" placeholder="起始时间" value="{$data['begin_time']}">-
<input type="text" class="txt time" name="end_time" id="end_time" placeholder="结束时间" value="{$data['end_time']}">
</div>
<span class="notice-text"></span>
</td>
@ -224,17 +225,10 @@
$(function(){
$('.time').datetimepicker({
format: 'yyyy-mm',
language:"zh-CN",
// minView:2,
weekStart: 1,
todayBtn: true,
todayHighlight: false,
startView: 3,
minView: 3,
forceParse: 0,
autoclose:true,
pickerPosition:'bottom-left'
format: 'yyyy-mm-dd',
language: "zh-CN",
minView: 2,
autoclose: true
});
$('#submit').click(function (e) {

Loading…
Cancel
Save