From 8b9a4e73fe1cae02d5b1636d1e8204c1eb5bb1a7 Mon Sep 17 00:00:00 2001 From: chenzhi Date: Fri, 15 May 2020 10:33:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=95=B0=E6=8D=AE1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AggregateFinanceSetController.class.php | 160 +++++++++++++++++- Data/update.sql | 5 +- 2 files changed, 157 insertions(+), 8 deletions(-) diff --git a/Application/Admin/Controller/AggregateFinanceSetController.class.php b/Application/Admin/Controller/AggregateFinanceSetController.class.php index 31af55f9a..8e126e7b6 100644 --- a/Application/Admin/Controller/AggregateFinanceSetController.class.php +++ b/Application/Admin/Controller/AggregateFinanceSetController.class.php @@ -4,19 +4,23 @@ namespace Admin\Controller; use Think\Controller; /** - * 后台总览聚合 + * 聚合渠道结算接口对接 * @author cz */ class AggregateFinanceSetController extends Controller { public $apihost; + public $cpapihost; public $token = "LYHTQDJS"; public function _initialize(){ $apihost = M("Kv")->field("value")->where("`key` = 'aggregate_finance_api'")->find(); - if(empty($apihost)){ - echo "请先设置请求接口aggregate_finance_api的值".PHP_EOL;die; + $cpapihost = M("Kv")->field("value")->where("`key` = 'aggregate_cp_settlement_api'")->find(); + + if(empty($apihost) || empty($cpapihost)){ + echo "请先设置请求接口aggregate_finance_api和aggregate_cp_settlement_api的值".PHP_EOL;die; } $this->apihost = $apihost['value']; + $this->cpapihost = $cpapihost['value']; } public function setFreeDateCount($begin,$end='') { @@ -47,7 +51,7 @@ class AggregateFinanceSetController extends Controller { public function setDailyCount($stime="now") { if(!IS_CLI){ - die("只支持脚本访问"); + // die("只支持脚本访问"); } if($stime=="now"){ $stime=time(); @@ -62,12 +66,15 @@ class AggregateFinanceSetController extends Controller { if($w == 1){ echo $nowdate.":".PHP_EOL; echo "--周结begin".PHP_EOL; - $this->setWeekCount($stime); + // $this->setWeekCount($stime); + $this->cpStatement(0,$stime); } if($d == 1){ echo $nowdate.":".PHP_EOL; echo "--月结&补点begin".PHP_EOL; - $this->setMonthCount($stime); + // $this->setMonthCount($stime); + $this->cpStatement(1,$stime); + // $this->cpStatement(2,$stime); } }else{ echo $nowdate."非周一和月初,无需任何处理".PHP_EOL; @@ -149,6 +156,11 @@ class AggregateFinanceSetController extends Controller { echo "----补点统计ok".PHP_EOL; } } + /** + * 重算聚合接口数据 + * @param [type] $id + * @return void + */ public function updateAggregateFinanceData($id) { //获取基础信息 @@ -224,9 +236,143 @@ class AggregateFinanceSetController extends Controller { } return true; } - + /** + * 上游结算 + * @param [string] $type 0:周结 1:月结 2:周结补点 + */ + public function cpStatement($type,$stime) + { + if($type == 0){ + $begintime = mktime(0,0,0,date('m',$stime),date('d',$stime)-7,date('Y',$stime)); + $endtime = mktime(0,0,0,date('m',$stime),date('d',$stime),date('Y',$stime))-1; + }else{ + $thismonth = date('m',$stime); + $thisyear = date('Y',$stime); + if ($thismonth == 1) { + $lastmonth = 12; + $lastyear = $thisyear - 1; + } else { + $lastmonth = $thismonth - 1; + $lastyear = $thisyear; + } + $lastStartDay = $lastyear . '-' . $lastmonth . '-1'; + $lastEndDay = $lastyear . '-' . $lastmonth . '-' . date('t', strtotime($lastStartDay)); + $begintime = strtotime($lastStartDay);//上个月的月初时间戳 + $endtime = strtotime($lastEndDay)+24*3600-1;//上个月的月末时间戳 + } + //获取哪些要结算 + if($type == 1){ + $cpDbRes = M("Partner","tab_")->where("settlement_type = 2")->select(); + }else{ + $cpDbRes = M("Partner","tab_")->where("settlement_type = 1")->select(); + } + $cpList=[]; + foreach ($cpDbRes as $k => $v) { + $cpList[$v['id']] =$v; + } + $cp_id = implode(",",array_flip(array_flip(array_column($cpDbRes,'id')))); + + //获取本地数据 + $locals = $this->getLocalStatementData($begintime,$endtime,$cp_id); + //获取聚合数据 + $sign = md5($begintime.$endtime."1".$this->token); + $arr = [ + "begintime"=>$begintime, + "endtime"=>$endtime, + "type"=>1, + "sign"=>$sign, + "cp_id"=>$cp_id + ]; + $dataurl .= $this->cpapihost."&".http_build_query($arr); + $html = file_get_contents($dataurl); + $rsp = json_decode($html,true); + if($rsp['code'] != 1){ + echo $rsp['error'].PHP_EOL;die; + }else{ + $rsp = $rsp['data']; + } + //整合数据本地 + + foreach($locals as $k=>$v){ + $cpList[$k]["list"] = $v["list"]; + } + + //整合数据,聚合 + foreach($rsp as $k=>$v){ + if(isset($cpList[$k]["list"])){ + //已经存在 + foreach($rsp[$k]["list"] as $ke=>$va){ + if(isset($cpList[$k]["list"][$ke])){ + $cpList[$k]["list"][$ke]['pay_money'] += $va['pay_money']; + }else{ + $cpList[$k]["list"][$ke] = ["pay_money"=>$va['pay_money']]; + } + } + }else{ + $cpList[$k]["list"] = $v["list"]; + } + + } + //比例计算及保存 + foreach($cpList as $v){ + dd($v); + } + + # code... + } + + /** + * 获取本地上游结算 + */ + public function getLocalStatementData($begintime,$endtime,$cp_id) + { + $game_where = "partner_id in ({$cp_id})"; + $game = M('game','tab_'); + $gameDbRes = $game->field("id,relation_game_name as game_name,partner_id as cp_id,original_package_name")->where($game_where)->select(); + $gameList=[]; + foreach ($gameDbRes as $k => $v) { + $gameList[$v['id']] =$v; + } + //获取所有id + $gmstr = implode(",",array_flip(array_flip(array_column($gameDbRes,'id')))); + //获取支付记录 + $paywhere = [ + "pay_status"=>1, + "payed_time"=>["BETWEEN",[$begintime,$endtime]], + "game_id"=>["in",$gmstr] + ]; + $paydb = M('spend','tab_'); + $paylist = $paydb->field("game_id,SUM(pay_amount) pay_amount")->where($paywhere)->group("game_id")->select(); + if(empty($paylist)){ + return []; + } + //绑定价格 + foreach ($paylist as $k => $v) { + $gameList[$v['game_id']]['pay_money'] =$v["pay_amount"]; + } + unset($paylist); + //按游戏名称及cp整理数据 + $cplList = []; + foreach ($gameList as $k => $v) { + if($v['pay_money'] <= 0) continue; //0值不发送 + if(empty($v['original_package_name'])){ + $game_name = $v['game_name']; + }else{ + $game_name = $v['original_package_name']; + } + $cp_id = $v['cp_id']; + unset($v['cp_id']); + $ymoney = $cplList[$cp_id]['list'][$game_name]["pay_money"]?:0; + $cplList[$cp_id]['list'][$game_name]["pay_money"] =$ymoney+$v["pay_money"]; + // if($type==2){ + // $cplList[$cp_id]['list'][$game_name]["list"][] =$v; //传递列表详情 + // } + } + return $cplList; + } + } diff --git a/Data/update.sql b/Data/update.sql index 4d62298db..32002f342 100644 --- a/Data/update.sql +++ b/Data/update.sql @@ -1751,4 +1751,7 @@ ADD COLUMN `old_change_promote_id` int(11) NULL DEFAULT 0 COMMENT '修改配置 ADD COLUMN `old_change_promote_account` varchar(30) NULL COMMENT '修改配置前渠道账号' ; --新增支付宝打款配置项 -INSERT INTO `tab_tool` (`name`,`title`, `config`,`type`, `status`, `create_time`) VALUES ('transfer_set', '支付宝打款设置','{"user_id":"","user_num":"","phone":"","type":"1","typestr":"支付宝"}', '1', '1','1589270284'); \ No newline at end of file +INSERT INTO `tab_tool` (`name`,`title`, `config`,`type`, `status`, `create_time`) VALUES ('transfer_set', '支付宝打款设置','{"user_id":"","user_num":"","phone":"","type":"1","typestr":"支付宝"}', '1', '1','1589270284'); + +--新增上游结算接口 +INSERT INTO `sys_kv` (`key`, `value`, `type`, `remark`) VALUES ('aggregate_cp_settlement_api', 'http://admin.wmtxkj.com/index.php?g=api&m=FinanceWeekCount&a=returnCPSettlement', 'string', '聚合cp结算Api地址');