@ -54,7 +54,7 @@ class SpendCountSetController extends \Think\Controller
"count_date"=>$this->date
);
$this->model->where($temp)->delete();
$this->game model->where($temp)->delete();
$this->usermodel->where($temp)->delete();
$this->monthmodel->where($temp)->delete();
echo "重置成功执行重新生成:";
@ -80,9 +80,9 @@ class SpendCountSetController extends \Think\Controller
//执行游戏表统计
$this->setGameCount();
// //执行用户表统计
// $this->setUserCount();
$this->setUserCount();
// //执行月份统计
// $this->setMonthCount();
$this->setMonthCount();
//执行
$this->model->commit();
$this->usermodel->commit();
@ -167,7 +167,7 @@ class SpendCountSetController extends \Think\Controller
"count_date"=>$this->date
);
$dbres = $this->gamemodel->where($tempmap)->find();
if(!$dbres ){
if(empty($dbres) ){
//不存在
$tempdbres = $this->gamemodel->add($spendRes[$i]);
if(!$tempdbres){
@ -195,17 +195,17 @@ class SpendCountSetController extends \Think\Controller
public function setUserCount()
{
//获取会长信息
$this->getRootUser ();
$this->getParentUser ();
$this->getPromoteUser( );
$this->getUserInsideData();
$adddata=array ();
$userarr = array ();
$this->getUserCountInit($adddata,$userarr );
$this->getUserInsideData($adddata,$userarr );
$this->addUserDb($adddata);
}
//用户聚合
public function getUserCountInit()
public function getUserCountInit(& $adddata,& $userarr )
{
$gameres = $this->gamemodel->field("sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,chain,level,promote_id,promote_account")
$gameres = $this->gamemodel->field("sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,sum(inside_cash_count) bind_coin_count, chain,level,promote_id,promote_account")
->where("count_date='{$this->date}'")->group("promote_id")->select();
if(empty($gameres)){
return;
@ -219,153 +219,39 @@ class SpendCountSetController extends \Think\Controller
if($d['level'] == 0){
$adddata[$d['promote_id']] = $d;
$userarr[] =$d['promote_id'];
// $tempdbres = $this->usermodel->add($d);
}else{
//获取所有链路
$chain = trim($d['chain'],"/");
$pid = explode("/", $chain);
$pid[] = $d['promote_id'];//添加自己
for ($k=0; $k < count ( $ pid ) ; $ k + + ) {
if(in_array($pid[$k], $userarr)){
//存在
// $adddata[$pid[$k]]["cash_count"] += $d;
$adddata[$pid[$k]]["cash_count"] += $d['cash_count'];
$adddata[$pid[$k]]["balance_coin_count"] += $d['balance_coin_count'];
$adddata[$pid[$k]]["bind_coin_count"] += $d['bind_coin_count'];
}else{
//不存在
//获取链路
$temp = $this->getChain($pid[$k]);
$temp['cash_count'] = $d['cash_count'];
$temp['balance_coin_count'] = $d['balance_coin_count'];
$temp['bind_coin_count'] = $d['bind_coin_count'];
$adddata[$pid[$k]] = $temp;
$userarr[] =$pid[$k];
}
# code...
}
// dump($pid);
}
# code...
}
dump($adddata);
dump($userarr);
}
protected function createUser(){
}
//获取会长信息
protected function getRootUser()
{
if(!$this->continue) die("api error");
//获取所有数据
$month = $this->date;
$from = "
(
SELECT root_id,root_name,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count FROM tab_spend_count WHERE root_id > 0 and count_date='{$month}' group by root_id
UNION ALL
SELECT promote_id,promote_account,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count FROM tab_spend_count WHERE parent_id = 0 and count_date='{$month}' group by promote_id
UNION ALL
SELECT parent_id,parent_name,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count FROM tab_spend_count WHERE parent_id > 0 and root_id = 0 and count_date='{$month}' group by parent_id
)
";
$subQueryAll = M()->table($from." a")
->field('root_id,root_name,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count')
->group("a.root_id")
// ->having("cash_count > 0 OR balance_coin_count > 0")
->select();
for ($i=0; $i< count ( $ subQueryAll ) ; $ i + + ) {
$adddata = array(
"promote_id"=>$subQueryAll[$i]['root_id'],
"promote_account"=>$subQueryAll[$i]['root_name'],
"parent_id"=>0,
"parent_name"=>'官方渠道',
"root_id"=>0,
"root_name"=>'官方渠道',
"cash_count"=>$subQueryAll[$i]['cash_count'],
"balance_coin_count"=>$subQueryAll[$i]['balance_coin_count'],
"all_count"=>$subQueryAll[$i]['cash_count']-0+$subQueryAll[$i]['balance_coin_count'],
"count_date"=>$this->date,
"create_time"=>$this->nowdata
);
$tempdbres = $this->usermodel->add($adddata);
if(!$tempdbres){
$this->usermodel->rollback();
die("getRootUser error");
}
}
}
//获取组长信息
protected function getParentUser()
{
if(!$this->continue) die("api error");
$month =$this->date;
//获取数据
$from = "
(
SELECT parent_id,parent_name,root_id,root_name,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count FROM tab_spend_count WHERE root_id > 0 and count_date='{$month}' group by parent_id
UNION
SELECT promote_id,promote_account,parent_id,parent_name,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count FROM tab_spend_count WHERE parent_id >0 and root_id = 0 and count_date='{$month}' group by promote_id
)
";
$subQueryAll = M()->table($from." a")
->field('parent_id,parent_name,root_id,root_name,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count')
->group("a.parent_id")
// ->having("cash_count > 0 or balance_coin_count > 0 ")
->select();
for ($i=0; $i< count ( $ subQueryAll ) ; $ i + + ) {
$adddata = array(
"promote_id"=>$subQueryAll[$i]['parent_id'],
"promote_account"=>$subQueryAll[$i]['parent_name'],
"parent_id"=>$subQueryAll[$i]['root_id'],
"parent_name"=>$subQueryAll[$i]['root_name'],
"root_id"=>0,
"root_name"=>'官方渠道',
"cash_count"=>$subQueryAll[$i]['cash_count'],
"balance_coin_count"=>$subQueryAll[$i]['balance_coin_count'],
"all_count"=>$subQueryAll[$i]['cash_count']-0+$subQueryAll[$i]['balance_coin_count'],
"count_date"=>$this->date,
"create_time"=>$this->nowdata
);
$tempdbres = $this->usermodel->add($adddata);
if(!$tempdbres){
$this->usermodel->rollback();
die("getParentUser error");
}
}
}
//获取组员
protected function getPromoteUser()
{
if(!$this->continue) die("api error");
$month = $this->date;;
//获取数据
$from = "
(
SELECT promote_id,promote_account,parent_id,parent_name,root_id,root_name,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count FROM tab_spend_count WHERE parent_id > 0 and root_id > 0 and count_date='{$month}' group by promote_id
)
";
$subQueryAll = M()->table($from." a")
->field('*')
->group("a.promote_id")
// ->having("cash_count > 0 or balance_coin_count > 0")
->select();
for ($i=0; $i< count ( $ subQueryAll ) ; $ i + + ) {
$adddata = array(
"promote_id"=>$subQueryAll[$i]['promote_id'],
"promote_account"=>$subQueryAll[$i]['promote_account'],
"parent_id"=>$subQueryAll[$i]['parent_id'],
"parent_name"=>$subQueryAll[$i]['parent_name'],
"root_id"=>$subQueryAll[$i]['root_id'],
"root_name"=>$subQueryAll[$i]['root_name'],
"cash_count"=>$subQueryAll[$i]['cash_count'],
"balance_coin_count"=>$subQueryAll[$i]['balance_coin_count'],
"all_count"=>$subQueryAll[$i]['cash_count']-0+$subQueryAll[$i]['balance_coin_count'],
"count_date"=>$this->date,
"create_time"=>$this->nowdata
);
$tempdbres = $this->usermodel->add($adddata);
if(!$tempdbres){
$this->usermodel->rollback();
die("getPromoteUser error");
}
}
# code...
//获取chain
protected function getChain($id){
return M("Promote","tab_")->field("id promote_id,account promote_account,chain,level")->where("id='".$id."'")->find();
}
//渠道角色统计仅计算推广员的平台币发放与收回
protected function getUserInsideData()
protected function getUserInsideData(& $adddata,& $userarr)
{
// if(!$this->continue) die("api error");
//获取发送给推广员的数据
$insideRes = M()
->table("tab_promote_coin")
->field("*")
@ -381,161 +267,68 @@ class SpendCountSetController extends \Think\Controller
if($insideRes[$i]['type'] > 1){
$insideRes[$i]['num'] = ( 0- $insideRes[$i]['num']);
}
$this->createUserCount($insideRes[$i]['promote_id'],$insideRes[$i]['num']);
}
}
}
//建立user表空数据
protected function createUserCount($promote_id,$inside_cash_count)
{
$promote = M("Promote","tab_")->field("id,account,parent_id,parent_name,grand_id,grand_account")->where("id='".$promote_id."'")->find();
if(empty($promote)){
return false;
}
$temprootarr=array(
"parent_id"=>0,
"root_id"=>0,
"inside_cash_count"=>$inside_cash_count,
"all_count"=>$inside_cash_count,
"count_date"=>$this->date,
"create_time"=>$this->nowdata
);
$tempparentarr=array(
"root_id"=>0,
"inside_cash_count"=>$inside_cash_count,
"all_count"=>$inside_cash_count,
"count_date"=>$this->date,
"create_time"=>$this->nowdata
);
$temppromotearr=array(
"inside_cash_count"=>$inside_cash_count,
"all_count"=>$inside_cash_count,
"count_date"=>$this->date,
"create_time"=>$this->nowdata
);
if($promote["parent_id"] == 0){
//会长
$dbres = M("spend_user_count","tab_")->where(array(
"promote_id"=>$promote["id"],
"count_date"=>$this->date
))->find();
if(empty($dbres)){
$temprootarr["promote_id"]= $promote['id'];
$temprootarr["promote_account"]= $promote['account'];
$this->usermodel->add($temprootarr);
}else{
//叠加
$this->setInsideCount($promote['id'],$inside_cash_count);
}
}elseif($promote["parent_id"] > 0 & & $promote["grand_id"] == 0){
//是组长
//添加会长
$dbres = M("spend_user_count","tab_")->where(array(
"promote_id"=>$promote["parent_id"],
"count_date"=>$this->date
))->find();
if(empty($dbres)){
//获取链路
$d = $this->getChain($insideRes[$i]['promote_id']);
$temprootarr["promote_id"]= $promote['parent_id'];
$temprootarr["promote_account"]= $promote['parent_name'];
$this->usermodel->add($temprootarr);
}else{
//叠加
$this->setInsideCount($promote['parent_id'],$inside_cash_count);
}
//添加自己
$dbres = M("spend_user_count","tab_")->where(array(
"promote_id"=>$promote["id"],
"count_date"=>$this->date
))->find();
if(empty($dbres)){
$tempparentarr['promote_id']=$promote['id'];
$tempparentarr['promote_account']=$promote['account'];
$tempparentarr['parent_id']=$promote["parent_id"];
$tempparentarr['parent_name']=$promote["parent_name"];
$this->usermodel->add($tempparentarr);
}else{
//叠加
$this->setInsideCount($promote['id'],$inside_cash_count);
}
}else{
//推广员
//添加会长
$dbres = M("spend_user_count","tab_")->where(array(
"promote_id"=>$promote["grand_id"],
"count_date"=>$this->date
))->find();
if(empty($dbres)){
$temprootarr["promote_id"]= $promote['grand_id'];
$temprootarr["promote_account"]= $promote['grand_account'];
$this->usermodel->add($temprootarr);
}else{
//叠加
$this->setInsideCount($promote['grand_id'],$inside_cash_count);
}
//添加组长
$dbres = M("spend_user_count","tab_")->where(array(
"promote_id"=>$promote["parent_id"],
"count_date"=>$this->date
))->find();
if(empty($dbres)){
$tempparentarr["promote_id"]= $promote['parent_id'];
$tempparentarr["promote_account"]= $promote['parent_name'];
$tempparentarr['parent_id']=$promote["grand_id"];
$tempparentarr['parent_name']=$promote["grand_account"];
$this->usermodel->add($tempparentarr);
}else{
//叠加
$this->setInsideCount($promote['parent_id'],$inside_cash_count);
}
$dbres = M("spend_user_count","tab_")->where(array(
"promote_id"=>$promote["id"],
"count_date"=>$this->date
))->find();
if(empty($dbres)){
$temppromotearr['promote_id']=$promote['id'];
$temppromotearr['promote_account']=$promote['account'];
$temppromotearr['parent_id']=$promote["parent_id"];
$temppromotearr['parent_name']=$promote["parent_name"];
$temppromotearr['root_id']=$promote['grand_id'];
$temppromotearr['root_name']=$promote['grand_account'];
$this->usermodel->add($temppromotearr);
}else{
//叠加
$this->setInsideCount($promote['id'],$inside_cash_count);
$chain = trim($d['chain'],"/");
$pid = explode("/", $chain);
$pid[] = $d['promote_id'];//添加自己
if($d['level'] == 0){
if(in_array($d["promote_id"], $userarr)){
//存在
$adddata[$pid[$k]]["inside_cash_count"] += $insideRes[$i]['num'];
}else{
$d['inside_cash_count'] = $insideRes[$i]['num'];
$adddata[$d['promote_id']] = $d;
$userarr[] =$d['promote_id'];
}
}else{
for ($k=0; $k < count ( $ pid ) ; $ k + + ) {
if(in_array($pid[$k], $userarr)){
//存在
$adddata[$pid[$k]]["inside_cash_count"] += $insideRes[$i]['num'];
}else{
//不存在
//获取链路
$temp = $this->getChain($pid[$k]);
$temp['inside_cash_count'] = $insideRes[$i]['num'];
$adddata[$pid[$k]] = $temp;
$userarr[] =$pid[$k];
}
}
}
}
//添加自己
}
# code...
}
//按角色修正inside_cash_count数据
protected function setInsideCount($promote_id,$inside_cash_count)
{
$tempmap = array(
"promote_id"=>$promote_id,
"count_date"=>$this->date
);
$dbres = M("spend_user_count","tab_")->where($tempmap)->find();
$savedata = array("inside_cash_count"=>$inside_cash_count-0+$dbres['inside_cash_count'],"all_count"=>$inside_cash_count-0+$dbres['all_count']);
$tempdbres = $this->usermodel->where($tempmap)->save($savedata);
if($tempdbres === false){
$this->usermodel->rollback();
die("setInsideCount error");
//添加用户统计表
protected function addUserDb(& $adddata){
$count = count($adddata);
if($count < 1 ) { return ; }
foreach ($adddata as $k => $v) {
isset($v["cash_count"]) || $v["cash_count"]=0;
isset($v["balance_coin_count"]) || $v["balance_coin_count"]=0;
isset($v["bind_coin_count"]) || $v["bind_coin_count"]=0;
isset($v["inside_cash_count"]) || $v["inside_cash_count"]=0;
//设定时间
$v["count_date"] = $this->date;
$v["create_time"] = $this->nowdata;
//聚合不含内充流水
$v['all_count'] = $v["cash_count"]-0+$v["balance_coin_count"]-0+$v["bind_coin_count"];
$this->usermodel->add($v);
}
# code...
}
/** --------以下为设定月份聚合---------- **/
/**
* @param 现金流水 cash_count 游戏中充值的现金
* @param 平台币流水 balance_coin_count 游戏中消耗的平台币
* @param 绑定币流水 bind_coin_count 游戏中绑定币的消耗
* @param 内充流水 inside_cash_count:(推广员的平台币发放-收回)+(后台发放给玩家平台币-回收平台币 ) + (后台发放绑币给玩家 -回收的绑币)
* @param 平台币充值 balance_coin_deposit
* @return void
*/
public function setMonthCount()
{
$initdata = $this->getMonthInit();
@ -555,9 +348,9 @@ class SpendCountSetController extends \Think\Controller
{
$tempmap = array(
"count_date"=>$this->date,
"parent_id "=>0
"level "=>0
);
return M("spend_user_count","tab_")->field("sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,sum(inside_cash_count) inside_cash_count")->where($tempmap)->find();
return M("spend_user_count","tab_")->field("sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,sum(bind_coin_count) bind_coin_count,sum( inside_cash_count) inside_cash_count")->where($tempmap)->find();
}
//获取平台币充值流水
protected function getBalanceDeposit()