Merge remote-tracking branch 'origin/feature/platfrom_aggregate_finance' into feature/platfrom_aggregate_finance

master
zhengyongxing 5 years ago
commit 25ae6a03a4

@ -2159,6 +2159,7 @@ function getGamePromoteCompanyRadio($company_id,$relation_game_id,$endtime,$amou
//判断是否有生效
$rwhere = "(end_time = 0 OR end_time >= '{$endtime}') and company_id='{$company_id}' and relation_game_id='{$relation_game_id}'";
$cgr_res = M("CompanyGameRatio","tab_")->where($rwhere)->find();
// dump( M("CompanyGameRatio","tab_")->where($rwhere)->select(false));
if(empty($cgr_res)){
//模板搜索
//获取公司类型

@ -20,8 +20,100 @@ class CompanyGameRatioController extends AdminController
$this->DBModel = M("company_game_ratio","tab_");
parent::_initialize();
}
public function index()
{
$params = I('get.');
$page = $params['p'] ? intval($params['p']) : 1;
$row = $params['row'] ? intval($params['row']) : 10;
//权限分配
if(!IS_ROOT){
$this->OpAuthList= getModuleControllerAuth();
}
$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'];
}
$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","tab_")
->alias('m')
->field("m.*,g.*,p.company_name,p.company_belong,IFNULL(r.settlement_type,0) settlement_type")
->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")
->join("left JOIN tab_company_relation r ON (r.first_company_type =2 AND r.first_company_id = m.company_id) OR (r.second_company_type =2 AND r.second_company_id = m.company_id)")
->where($where);
if(isset($params['export'])){
$dbres = $dbres->select();
}else{
$dbres = $dbres->page($page, $row)->select();
}
foreach($dbres as $k=>&$v){
$v['begin_time'] = date("Y-m-d",$v['begin_time']);
$v['end_time'] = $v['end_time'] ? date('Y-m-d', $v['end_time']) : '永久';
$v["valid"] = "{$v['begin_time']} ~ {$v['end_time']}";
$v['company_belong'] ="下游".getCompanyBlong($v['company_belong']);
if (isset($params['export'])) {
$symbol = "\n";
} else {
$symbol = "<br>";
}
if($v['settlement_type'] == 0){
$v['settlement_type'] = '--';
}else{
$v['settlement_type'] = $v['settlement_type']== 1 ? "周结" : '月结';
}
//新
$thisTurnoverRatios = $v['turnover_ratio'] ? json_decode($v['turnover_ratio'], true) : [];
$thisRatioDtl = "默认:{$v['ratio']}%";
if ($thisTurnoverRatios) {
foreach ($thisTurnoverRatios as $thisTurnoverRatio) {
$thisIntervalClosedStatusText = isset($thisTurnoverRatio['instanceof']) ? ($thisTurnoverRatio['instanceof'] == 1 ? '≥' : '>') : '≥';
$thisRatioDtl .= "{$symbol}月流水{$thisIntervalClosedStatusText}{$thisTurnoverRatio['turnover']},比例:{$thisTurnoverRatio['ratio']}%";
}
}
$v['turnover_ratio_str'] = $thisRatioDtl;
$v['oplist'] = $this->OpAuth($v);
}
if(isset($_REQUEST['export'])){
$GetData = $_GET;
unset($GetData['export']);
addOperationLog(['op_type'=>3,'key'=>getNowDate(),"op_name"=>"导出",'url'=>U(CONTROLLER_NAME.'/'.ACTION_NAME,$GetData)]);
data2csv($dbres,'推广游戏分成管理',array(
"company_name"=>"公司名称",
"company_belong"=>"内外团",
"settlement_type"=>"结算周期",
"game_type_name"=>"游戏类型",
"original_package_name"=>"原游戏名称",
"relation_game_name"=>"现游戏名称",
"valid"=>"生效时间",
"turnover_ratio_str"=>"分成比例"
));
}
$count = M("company_game_ratio","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("companyList",D("PromoteCompany")->getList());
$this->assign("gameList",D("Game")->getRelationGameLits());
$this->display();
}
public function lists()
{
$params = I('get.');
$page = $params['p'] ? intval($params['p']) : 1;
@ -43,14 +135,15 @@ class CompanyGameRatioController extends AdminController
if(isset($params['status'])){
$where['m.status'] = $params['status'];
}
//TODO:未计算公司类型,未进行排序
//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")
->field("m.*,g.*,p.company_name,p.company_belong,IFNULL(r.settlement_type,0) settlement_type")
->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")
->join("left JOIN tab_company_relation r ON (r.first_company_type =2 AND r.first_company_id = m.company_id) OR (r.second_company_type =2 AND r.second_company_id = m.company_id)")
->where($where)
->order("FIELD(m.status,0,1,-1,-2,2),id desc");
if(isset($params['export'])){
@ -59,7 +152,11 @@ class CompanyGameRatioController extends AdminController
$dbres = $dbres->page($page, $row)->select();
}
foreach($dbres as $k=>&$v){
$v['settlement_type'] ='--';
if($v['settlement_type'] == 0){
$v['settlement_type'] = '--';
}else{
$v['settlement_type'] = $v['settlement_type']== 1 ? "周结" : '月结';
}
$v['begin_time'] = date("Y-m-d",$v['begin_time']);
$v['end_time'] = $v['end_time'] ? date('Y-m-d', $v['end_time']) : '永久';
@ -156,6 +253,8 @@ class CompanyGameRatioController extends AdminController
$this->assign("gameList",D("Game")->getRelationGameLits());
$this->display();
}
public function marketAgree(){
if(!isset($_REQUEST['ids'])) $this->error("参数错误");
@ -170,7 +269,7 @@ class CompanyGameRatioController extends AdminController
$v['verify_log'] = json_encode($v['verify_log']);
$v['status']=1;
$company_game_ratio_log->save($v);
addOperationLog(['op_type'=>1,'key'=>$v['id'],"op_name"=>"市场部审核",'url'=>U('index')]);
addOperationLog(['op_type'=>1,'key'=>$v['id'],"op_name"=>"市场部审核",'url'=>U('lists')]);
}
$this->ajaxReturn(array(
'status' => 1,
@ -190,7 +289,7 @@ class CompanyGameRatioController extends AdminController
$v['verify_log'] = json_encode($v['verify_log']);
$v['status']=-1;
$company_game_ratio_log->save($v);
addOperationLog(['op_type'=>1,'key'=>$v['id'],"op_name"=>"市场部审核",'url'=>U('index')]);
addOperationLog(['op_type'=>1,'key'=>$v['id'],"op_name"=>"市场部审核",'url'=>U('lists')]);
}
$this->ajaxReturn(array(
'status' => 1,
@ -210,7 +309,7 @@ class CompanyGameRatioController extends AdminController
$v['verify_log'] = json_encode($v['verify_log']);
$v['status']=-2;
$company_game_ratio_log->save($v);
addOperationLog(['op_type'=>1,'key'=>$v['id'],"op_name"=>"管理员审核",'url'=>U('index')]);
addOperationLog(['op_type'=>1,'key'=>$v['id'],"op_name"=>"管理员审核",'url'=>U('lists')]);
}
$this->ajaxReturn(array(
'status' => 1,
@ -251,7 +350,7 @@ class CompanyGameRatioController extends AdminController
$company_game_ratio->add($ratiov);
}
//
addOperationLog(['op_type'=>1,'key'=>$v['id'],"op_name"=>"管理员审核",'url'=>U('index')]);
addOperationLog(['op_type'=>1,'key'=>$v['id'],"op_name"=>"管理员审核",'url'=>U('lists')]);
}
$this->ajaxReturn(array(
'status' => 1,
@ -297,8 +396,8 @@ class CompanyGameRatioController extends AdminController
}
$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")]);
addOperationLog(['op_type'=>0,'key'=>$id,'op_name'=>'新增','url'=>U('lists')]);
$this->ajaxReturn(["msg"=>"添加成功","code"=>1,"url"=>U("lists")]);
} else {
$companyList = D("PromoteCompany")->getList();
@ -331,6 +430,7 @@ class CompanyGameRatioController extends AdminController
$save['id'] = $params['id'];
$save['ratio'] = $params['ratio'] ?? 0;
$save['turnover_ratio'] = $this->setTurnoverRatio($params);
$save['begin_time'] = strtotime($params['begin_time']);
$save['end_time'] = $params['end_time'] ? strtotime($params['end_time'])+86399 : 0;
$save['remark'] = $params['remark'] ?? '';
@ -339,8 +439,8 @@ class CompanyGameRatioController extends AdminController
$save['verify_log'] = json_encode(["create_user"=>$this->admininfo["username"],"create_time"=>date("Y-m-d H:i:s")]);
}
M("company_game_ratio_log","tab_")->save($save);
addOperationLog(['op_type'=>1,'key'=>$save['id'],'op_name'=>'修改','url'=>U('index')]);
$this->ajaxReturn(["msg"=>"修改成功","code"=>1,"url"=>U("index")]);
addOperationLog(['op_type'=>1,'key'=>$save['id'],'op_name'=>'修改','url'=>U('lists')]);
$this->ajaxReturn(["msg"=>"修改成功","code"=>1,"url"=>U("lists")]);
} else {
$params = I('get.');
$id = $params['id'] ?? 0;
@ -369,6 +469,20 @@ class CompanyGameRatioController extends AdminController
}
$id = $_REQUEST['id'];
$res = M("company_game_ratio_log","tab_")->where("id='{$id}'")->delete();
if($res !== false){
addOperationLog(['op_type'=>2,'key'=>$id,'op_name'=>'删除','url'=>U('lists')]);
$this->ajaxReturn(["msg"=>"删除成功","code"=>1,"url"=>U("lists")]);
}else{
$this->error('删除错误');
}
}
public function delGameRatio()
{
if(!isset($_REQUEST['id'])){
$this->error('参数错误');
}
$id = $_REQUEST['id'];
$res = M("company_game_ratio","tab_")->where("id='{$id}'")->delete();
if($res !== false){
addOperationLog(['op_type'=>2,'key'=>$id,'op_name'=>'删除','url'=>U('index')]);
$this->ajaxReturn(["msg"=>"删除成功","code"=>1,"url"=>U("index")]);
@ -376,6 +490,7 @@ class CompanyGameRatioController extends AdminController
$this->error('删除错误');
}
}
public function menuAuth()
{
$addurl = U("addRatio");
@ -405,14 +520,19 @@ class CompanyGameRatioController extends AdminController
$opBtn = [
"editRatio"=>"<a class='confirm editRatio' data-id='{$id}'>编辑</a>",
"delRatio"=>"<a class='confirm delRatio' data-id='{$id}' style='color: red;'>删除</a>",
"delGameRatio"=>"<a class='confirm delGameRatio' data-id='{$id}' style='color: red;'>删除</a>",
];
//操作对应菜单
if($info['status'] == 2){
$optist = [];
if(!isset($info['status'])){
$optist = ["delGameRatio"];
}else{
$optist = ["editRatio","delRatio"];
if($info['status'] == 2){
$optist = [];
}else{
$optist = ["editRatio","delRatio"];
}
}
//
$resarr = [];
foreach ($optist as $k => $v) {
@ -427,6 +547,8 @@ class CompanyGameRatioController extends AdminController
return $resarr;
}
public function setTurnoverRatio($params)
{
$save['turnover_ratio'] = [];
@ -474,6 +596,9 @@ class CompanyGameRatioController extends AdminController
$save['turnover_ratio'] = json_encode($save['turnover_ratio']);
}
}
if(empty($save['turnover_ratio'])){
$save['turnover_ratio'] = '';
}
return $save['turnover_ratio'];
}

@ -57,6 +57,11 @@ class CompanyRelationController extends AdminController
if(isset($params['company_id'])){
$where['_string'] .= " AND (first_company_id='{$params['company_id']}' OR second_company_id='{$params['company_id']}')";
}
if(isset($params['company_type']) && isset($params['company_id'])){
unset($where['_string']);
$where['_string'] .= " (first_company_id='{$params['company_id']}' AND first_company_type='{$params['company_type']}') OR (second_company_id='{$params['company_id']}' AND second_company_type='{$params['company_type']}')";
}
if(isset($params['settlement_type'])){
$where['settlement_type'] = $params['settlement_type'];
}
@ -129,7 +134,13 @@ class CompanyRelationController extends AdminController
}
if(isset($params['company_id'])){
$where['_string'] .= " AND (first_company_id='{$params['company_id']}' OR second_company_id='{$params['company_id']}')";
}
if(isset($params['company_type']) && isset($params['company_id'])){
unset($where['_string']);
$where['_string'] .= " (first_company_id='{$params['company_id']}' AND first_company_type='{$params['company_type']}') OR (second_company_id='{$params['company_id']}' AND second_company_type='{$params['company_type']}')";
}
if(isset($params['settlement_type'])){
$where['settlement_type'] = $params['settlement_type'];
}
@ -302,18 +313,18 @@ class CompanyRelationController extends AdminController
unset($v['remark']);
unset($v['status']);
unset($v['verify_log']);
//判断公司id及类型
if($v['first_company_type'] == 0){
$t_company_id = $v['second_company_id'];
$t_company_type = $v['second_company_type'];
}else{
$t_company_id = $v['first_company_id'];
$t_company_type = $v['first_company_type'];
}
$where = "
(
(first_company_type ='{$v['first_company_type']}' and first_company_id = '{$v['first_company_id']}')
(first_company_type ='{$t_company_type}' and first_company_id = '{$t_company_id}')
OR
(first_company_type ='{$v['second_company_type']}' and first_company_id = '{$v['second_company_id']}')
)
AND
(
(second_company_type ='{$v['first_company_type']}' and second_company_id = '{$v['first_company_id']}')
OR
(second_company_type ='{$v['second_company_type']}' and second_company_id = '{$v['second_company_id']}')
)
(second_company_type ='{$t_company_type}' and second_company_id = '{$t_company_id}')
";
$hasdb = $this->DBModel->where($where)->find();
if(isset($hasdb['id'])){

@ -106,6 +106,9 @@ class CompanyStatementController extends ThinkController
if(isset($_REQUEST['company_belong'])){
$map['company_belong'] = $_REQUEST['company_belong'];
}
if(isset($_REQUEST['company_id'])){
$map['company_id'] = $_REQUEST['company_id'];
}
if(isset($_REQUEST['verify_status'])){
$map['verify_status'] = $_REQUEST['verify_status'];
}
@ -114,7 +117,7 @@ class CompanyStatementController extends ThinkController
$data = M("company_statement","tab_")
->field("id,withdraw_type,company_name,company_belong,statement_begin_time,statement_end_time,statement_money,platform_amount,verify_status,verify_log,op_time,remark")
->where($map)
->order("op_time Desc")->page($page,$row)->select();
->order("FIELD(verify_status,0,1,-1,2,3,-2,4,5),id desc")->page($page,$row)->select();
foreach($data as $k => &$v) {
$v['statement_begin_time'] = date('Y-m-d',$v['statement_begin_time']);
@ -250,10 +253,14 @@ class CompanyStatementController extends ThinkController
$params['first_party_info'] = json_encode($params['first_party_info'],JSON_UNESCAPED_UNICODE);
$params['second_party_info'] = json_encode($params['second_party_info'],JSON_UNESCAPED_UNICODE);
$params['statement_info'] = json_encode($params['statement_info'],JSON_UNESCAPED_UNICODE);
$params['verify_status'] = 0;
$params['verify_log'] = json_encode(["create_user"=>$this->admininfo["username"],"create_time"=>date("Y-m-d H:i:s")]);
$params['op_time'] = time();
M("CompanyStatement","tab_")->save($params);
$y = M("CompanyStatement", "tab_")->where("id='{$params['id']}'")->find();
if($y['first_party_info'] != $params['first_party_info'] || $y['second_party_info'] != $params['second_party_info'] || $y['statement_info'] != $params['statement_info']){
$params['verify_status'] = 0;
$params['verify_log'] = json_encode(["create_user"=>$this->admininfo["username"],"create_time"=>date("Y-m-d H:i:s")]);
$params['op_time'] = time();
M("CompanyStatement","tab_")->save($params);
}
$this->ajaxReturn(["code"=>0,"msg"=>"ok"]);
}else{
if (!isset($_REQUEST['id'])) {
@ -310,6 +317,7 @@ class CompanyStatementController extends ThinkController
$v['verify_log'][$op_pre.'_time']=date("Y-m-d H:i:s");
$v['verify_log'] = json_encode($v['verify_log']);
$v['verify_status']=$change_status;
$v['op_time'] = time();
$this->DBModel->save($v);
$opname = $this->VerifyStatus[$change_status];
addOperationLog(['op_type'=>1,'key'=>$v['id'],"op_name"=>$opname,'url'=>U('lists')]);
@ -382,18 +390,18 @@ class CompanyStatementController extends ThinkController
}
if ($data['company_belong'] == 9) {//上游
excelUpStreamTemplate($data, $all_sum_money, $all_pay_amount, $big_all_sum_money);
} else {//下游
if($dbres["company_type"] == 1){
} else {
//下游
// if($dbres["company_type"] == 1){
excelDownStreamTemplate($data, $all_sum_money, $all_pay_amount, $big_all_sum_money);
}else{
$data['statement_begin_time'] = date('Ymd',$data['statement_begin_time']);
$data['statement_end_time'] = date('Ymd',$data['statement_end_time']);
$data['statement_count'] = count($data['statement_info']);
// dd($data);
$this->assign("data",$data);
$this->display("exportPuStatement");
}
// }else{
// $data['statement_begin_time'] = date('Ymd',$data['statement_begin_time']);
// $data['statement_end_time'] = date('Ymd',$data['statement_end_time']);
// $data['statement_count'] = count($data['statement_info']);
// // dd($data);
// $this->assign("data",$data);
// $this->display("exportPuStatement");
// }
}
}
//汇总
@ -519,6 +527,7 @@ class CompanyStatementController extends ThinkController
$v['verify_log'][$op_pre.'_num']=$num;
$v['verify_log'] = json_encode($v['verify_log']);
$v['verify_status']=$change_status;
$v['op_time']=time();
$this->DBModel->save($v);
}
}
@ -691,7 +700,95 @@ class CompanyStatementController extends ThinkController
$savedata['statement_end_time'] = $v['statement_end_time'];
}
}
//设定并保存数据
//新增结算
//获取要结算的公司及日期
public function getNewStatement()
{
$senddata = [];
//1.获取要计算的公司
$statement = M("company_statement","tab_")->field("count(id) count,company_id")->group("company_id")->select();
$has_company_id =implode(",",array_column($statement, 'company_id'));
if(empty($has_company_id)){
$where = "1=1";
}else{
$where = "(first_company_type > 0 AND first_company_id NOT IN ({$has_company_id}) ) OR ( second_company_type > 0 AND second_company_id NOT IN ({$has_company_id}) )";
}
$relation = M("company_relation","tab_")->field("first_company_id,first_company_type,second_company_id,second_company_type")->where($where)->select();
$up_company_id = [];
$dowm_company_id= [];
foreach($relation as $k=>$v){
if($v['first_company_type'] == 0){
if($v['second_company_type'] == 1){
$up_company_id[] = $v['second_company_id'];
}else{
$dowm_company_id[] = $v['second_company_id'];
}
}else{
if($v['first_company_type'] == 1){
$up_company_id[] = $v['first_company_id'];
}else{
$dowm_company_id[]=$v['first_company_id'];
}
}
}
if(count($up_company_id) < 1 && count($dowm_company_id) < 1){
$this->ajaxReturn(["error"=>'无新增关系,无需重算']);
}
$senddata['up_company_id'] = implode(",",$up_company_id);
$senddata['dowm_company_id'] = implode(",",$dowm_company_id);
//获取要结算的日期
$start = strtotime('-1 month');
$end = time();
$temp_datelist = get_date_list($start,$end,1);
$datelist = [];
foreach($temp_datelist as $k=>$v){
$w = (int)date("w",strtotime($v));
$d = (int)date("d",strtotime($v));
if($w == 1 || $d == 1){
$datelist[] = $v;
}
}
$senddata['datelist'] = $datelist;
$senddata['count'] = count($datelist);
$this->ajaxReturn(["success"=>'ok',"data"=>$senddata]);
}
public function updateNewStatement()
{
$up_company_id = $_REQUEST['up_company_id'];
$dowm_company_id = $_REQUEST['dowm_company_id'];
$date = $_REQUEST['date'];
$CompanyStatementSet = A("CompanyStatementSet");
// dd($CompanyStatementSet);
$stime = strtotime($date);
$w = (int)date("w",strtotime($date));
$d = (int)date("d",strtotime($date));
if($w == 1){
if(!empty($up_company_id)){
$CompanyStatementSet->cpStatement(0,$stime,$up_company_id,false);
}
if(!empty($dowm_company_id)){
$CompanyStatementSet->promoteCompanyStatement(0,$stime,$dowm_company_id,false);
}
}
if($d == 1){
if(!empty($up_company_id)){
$CompanyStatementSet->cpStatement(1,$stime,$up_company_id,false);
$CompanyStatementSet->cpStatement(2,$stime,$up_company_id,false);
}
if(!empty($dowm_company_id)){
$CompanyStatementSet->promoteCompanyStatement(1,$stime,$dowm_company_id,false);
$CompanyStatementSet->promoteCompanyStatement(2,$stime,$dowm_company_id,false);
}
}
$this->ajaxReturn(array("success"=>"ok","data"=>[]));
}
public function OpAuth($info)
@ -753,7 +850,8 @@ class CompanyStatementController extends ThinkController
"launch"=>"<a class='butn' id='launch'>对外发起</a>",
"pool"=>"<a class='butn' id='pool'>发起汇总</a>",
"updateStatement"=>"<a class='butn' id='updateStatement' style='background-color: green;'>重算金额</a>",
"export"=>"<a class='butn' id='export'>批量导出</a>"
"export"=>"<a class='butn' id='export'>批量导出</a>",
"updateNewStatement"=>"<a class='butn' id='updateNewStatement' style='background-color: green;'>新增结算</a>",
];
$resarr = [];
foreach ($mentBtn as $k => $v) {

@ -48,7 +48,7 @@ class CompanyStatementSetController extends Controller {
public function setDailyCount($stime="now")
{
if(!IS_CLI){
// die("只支持脚本访问");
die("只支持脚本访问");
}
if($stime=="now"){
$stime=time();
@ -97,7 +97,7 @@ class CompanyStatementSetController extends Controller {
* 上游结算
* @param [string] $type 0:周结 1:月结 2周结补点
*/
public function cpStatement($type,$stime,$company_id=false)
public function cpStatement($type,$stime,$company_id=false,$recount=true)
{
$t = $this->setBeginAndEndTime($type,$stime);;
$begintime = $t[0];
@ -109,7 +109,7 @@ class CompanyStatementSetController extends Controller {
];
}else{
$where = [
"_string"=>"(first_company_type = '1' AND first_company_id = '{$company_id}') OR (second_company_type = '1' AND second_company_id = '{$company_id}')"
"_string"=>"(first_company_type = '1' AND first_company_id in ({$company_id}) ) OR (second_company_type = '1' AND second_company_id in ({$company_id}) )"
];
}
//获取哪些要结算
@ -241,6 +241,7 @@ class CompanyStatementSetController extends Controller {
$promote_ratio = $cp[$add_data['company_id']]['channel_rate'] ?? 0;
$fax_ratio = $cp[$add_data['company_id']]['invoice_rate'] ?? 0;
//游戏统计
if(!isset($v['list'])){continue;}
foreach($v['list'] as $ke=>$va){
$game =[];
$game['pay_amount'] =$va['pay_money'];
@ -263,6 +264,7 @@ class CompanyStatementSetController extends Controller {
$tratio1 = getGameCpRadio($game_id['id'],$va['pay_money'],true);
$tratio2 = getGameCpRadio($game_id['id'],$va['pay_money'],false);
$tratio = $tratio1-$tratio2;
if($tratio <= 0){continue;}
}
}
@ -338,12 +340,11 @@ class CompanyStatementSetController extends Controller {
return;
}
//添加
if($company_id === false){
if($recount && $company_id !== false){
//非重算
$StatementDb->add($add_data);
}else{
return $add_data;
}
$StatementDb->add($add_data);
}
}
@ -365,6 +366,7 @@ class CompanyStatementSetController extends Controller {
//获取支付记录
$paywhere = [
"pay_status"=>1,
"pay_game_status"=>1,
"payed_time"=>["BETWEEN",[$begintime,$endtime]],
"game_id"=>["in",$gmstr]
];
@ -400,9 +402,8 @@ class CompanyStatementSetController extends Controller {
/**
* 下游结算
*/
public function promoteCompanyStatement($type,$stime,$company_id=false)
public function promoteCompanyStatement($type,$stime,$company_id=false,$recount=true)
{
$t = $this->setBeginAndEndTime($type,$stime);
$begintime = $t[0];
$endtime = $t[1];
@ -414,7 +415,7 @@ class CompanyStatementSetController extends Controller {
];
}else{
$where = [
"_string"=>"(first_company_type = '2' AND first_company_id = '{$company_id}') OR (second_company_type = '2' AND second_company_id = '{$company_id}')"
"_string"=>"(first_company_type = '2' AND first_company_id in ({$company_id}) ) OR (second_company_type = '2' AND second_company_id in ({$company_id}) )"
];
}
//获取哪些要结算
@ -425,7 +426,6 @@ class CompanyStatementSetController extends Controller {
$where['settlement_type']=1;
$pcDbRes = M("CompanyRelation","tab_")->where($where)->select();
}
$pcList=[];
$js_id = [];//己方公司
foreach ($pcDbRes as $k => $v) {
@ -452,6 +452,7 @@ class CompanyStatementSetController extends Controller {
foreach ($tmpp as $v) {
$pc[$v['id']]=$v;
}
unset($tmpp);
//获取己方公司
$our = [];
@ -469,12 +470,14 @@ class CompanyStatementSetController extends Controller {
$statement_begin_time = date("Y-m-d",$begintime);
$statement_end_time = date("Y-m-d",$endtime);
$RewardRecord = M("RewardRecord","tab_");
foreach($pcList as $k=>$v){
if(!isset($pc[$k])){continue;}//不存在的公司不结算
$add_data=[];
//1.获取甲乙方信息
if($v['first_company_type'] == 1){
if($v['first_company_type'] > 0){
//甲方合作
$pc[$v['first_company_id']]['invoice_type'] = $v['invoice_type'];
$pc[$v['first_company_id']]['invoice_content'] = $v['invoice_content'];
@ -509,8 +512,7 @@ class CompanyStatementSetController extends Controller {
$company_belong = $pc[$add_data['company_id']]['company_belong'];
$add_data['company_belong']=$company_belong;
$add_data['company_type']=$pc[$add_data['company_id']]['company_type'];
if(!isset($v['list'])){continue;}
//游戏统计
foreach($v['list'] as $ke=>$va){
$game =[];
@ -527,6 +529,7 @@ class CompanyStatementSetController extends Controller {
$tratio1 = getGamePromoteCompanyRadio($add_data['company_id'],$va['relation_game_id'],$endtime,$va['pay_amount'],true,$company_belong);;
$tratio2 = getGamePromoteCompanyRadio($add_data['company_id'],$va['relation_game_id'],$endtime,$va['pay_amount'],false,$company_belong);
$tratio = $tratio1-$tratio2;
if($tratio <= 0){ continue;}
}
if($v['type'] == 2){
@ -546,7 +549,6 @@ class CompanyStatementSetController extends Controller {
$game['statement_type']=0;
$add_data['statement_info'][] = $game;
}
$add_data['platform_amount'] = $add_data['pay_amount'];
if($type < 2){
//非补点计算奖罚
@ -597,17 +599,17 @@ class CompanyStatementSetController extends Controller {
if($add_data['platform_amount'] <= 0){
return;
}
// dd($add_data);
//添加
if($company_id === false){
if($recount && $company_id !== false){
//非重算
$StatementDb->add($add_data);
}else{
return $add_data;
}
$StatementDb->add($add_data);
}
}
//设定开始结束时间
protected function setBeginAndEndTime($type,$stime){
public function setBeginAndEndTime($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;
@ -629,7 +631,7 @@ class CompanyStatementSetController extends Controller {
return [$begintime,$endtime];
}
//获取推广公司推广金额
protected function getPromoteCompanySpend(&$pcList,$idarr,$begintime,$endtime){
public function getPromoteCompanySpend(&$pcList,$idarr,$begintime,$endtime){
$res = [];
//获取推广员
if(count($idarr) == 0){return $res;}
@ -756,6 +758,7 @@ class CompanyStatementSetController extends Controller {
$v['fine'] = 0;
$v['reward'] = 0;
$v['platform_amount'] = 0;
if(!isset($v['list'])){continue;}
foreach($v['list'] as $ke=>$va){
$game =[];
$game['pay_amount'] =$va['pay_amount'];
@ -765,17 +768,19 @@ class CompanyStatementSetController extends Controller {
$game['game_type_name'] = $this->getGameTypeName($va['relation_game_id']);
if($type == 1){
$tratio = getGamePromoteCompanyRadio($add_data['company_id'],$va['relation_game_id'],$endtime,$va['pay_amount'],true,$company_belong);
$tratio = getGamePromoteCompanyRadio($v['id'],$va['relation_game_id'],$endtime,$va['pay_amount'],true,$company_belong);
}elseif($type == 0){
$tratio = getGamePromoteCompanyRadio($add_data['company_id'],$va['relation_game_id'],$endtime,$va['pay_amount'],false,$company_belong);
$tratio = getGamePromoteCompanyRadio($v['id'],$va['relation_game_id'],$endtime,$va['pay_amount'],false,$company_belong);
}else{
//补点
$tratio1 = getGamePromoteCompanyRadio($add_data['company_id'],$va['relation_game_id'],$endtime,$va['pay_amount'],true,$company_belong);;
$tratio2 = getGamePromoteCompanyRadio($add_data['company_id'],$va['relation_game_id'],$endtime,$va['pay_amount'],false,$company_belong);
$tratio1 = getGamePromoteCompanyRadio($v['id'],$va['relation_game_id'],$endtime,$va['pay_amount'],true,$company_belong);;
$tratio2 = getGamePromoteCompanyRadio($v['id'],$va['relation_game_id'],$endtime,$va['pay_amount'],false,$company_belong);
$tratio = $tratio1-$tratio2;
if($tratio <= 0){
continue;
}
}
if($v['type'] == 2){
if($type == 2){
$game['increment_ratio']=$tratio;
}else{
$game['ratio']=$tratio;
@ -862,57 +867,64 @@ class CompanyStatementSetController extends Controller {
array_multisort($last_names,SORT_DESC,SORT_STRING,$v['statement_info']);
}
}
if($v['statement_money'] < 300){
//存未满
if($lackcompany['pay_amount'] > 0){
$lask_id = $LackStatement->add($lackcompany);
$countdata['create_lack_ids'][] =$lask_id;
$countdata['lack_statement_money'] +=$lackcompany['statement_money'];
$countdata['lack_platform_amount'] +=$lackcompany['platform_amount'];
}
if($type == 2 && $v['statement_money'] == 0){
//补点不存
}else{
if($v['pay_amount'] > 0){
//存成功配置单号
$company =[
"pool_id"=>0,
"company_id"=>$k,
"company_type"=>2,
"company_name"=>$v['partner'],
"company_info"=>json_encode($company_info,JSON_UNESCAPED_UNICODE),
"statement_money"=>$v['statement_money'],
"pay_amount"=>$v['pay_amount'],
"platform_amount"=>$v['platform_amount'],
"fine"=>$v['fine'],
"reward"=>$v['reward'],
"statement_begin_time"=>$begintime,
"statement_end_time"=>$endtime,
"statement_info"=>json_encode($v['statement_info'],JSON_UNESCAPED_UNICODE),
"statement_num"=>"JS_".date('Ymd').date('His').$v['company_id'].sp_random_string(5)
];
if($v['is_payment'] == 1){
$company['verify_status'] = 0;
}else{
$company['verify_status'] = 2;
if($v['statement_money'] < 300){
//存未满
if($lackcompany['pay_amount'] > 0){
$lask_id = $LackStatement->add($lackcompany);
$countdata['create_lack_ids'][] =$lask_id;
$countdata['lack_statement_money'] +=$lackcompany['statement_money'];
$countdata['lack_platform_amount'] +=$lackcompany['platform_amount'];
}
}else{
if($v['pay_amount'] > 0){
//存成功配置单号
$company =[
"pool_id"=>0,
"company_id"=>$k,
"company_type"=>2,
"company_name"=>$v['partner'],
"company_info"=>json_encode($company_info,JSON_UNESCAPED_UNICODE),
"statement_money"=>$v['statement_money'],
"pay_amount"=>$v['pay_amount'],
"platform_amount"=>$v['platform_amount'],
"fine"=>$v['fine'],
"reward"=>$v['reward'],
"statement_begin_time"=>$begintime,
"statement_end_time"=>$endtime,
"statement_info"=>json_encode($v['statement_info'],JSON_UNESCAPED_UNICODE),
"statement_num"=>"JS_".date('Ymd').date('His').$v['company_id'].sp_random_string(5)
];
if($v['is_payment'] == 1){
$company['verify_status'] = 0;
}else{
$company['verify_status'] = 2;
}
$companyid = $StatementInfo->add($company);
$countdata['info_ids'][] =$companyid;
$countdata['del_lack_ids'] =array_merge($countdata['del_lack_ids'],$del_lack_ids);
$countdata['statement_money'] +=$v['statement_money'];
$countdata['pay_amount'] +=$v['pay_amount'];
$countdata['platform_amount'] +=$v['platform_amount'];
$countdata['fine'] +=$v['fine'];
$countdata['reward'] +=$v['reward'];
}
$companyid = $StatementInfo->add($company);
$countdata['info_ids'][] =$companyid;
$countdata['del_lack_ids'] =array_merge($countdata['del_lack_ids'],$del_lack_ids);
$countdata['statement_money'] +=$v['statement_money'];
$countdata['pay_amount'] +=$v['pay_amount'];
$countdata['platform_amount'] +=$v['platform_amount'];
$countdata['fine'] +=$v['fine'];
$countdata['reward'] +=$v['reward'];
}
}
}
$this->savePromotateUserPool($users);
$this->savePromotateUserPool($user);
$this->savePromotateUserPool($users,$type);
$this->savePromotateUserPool($user,$type);
}
/**
* 保存信息汇总信息
*/
protected function savePromotateUserPool($data){
public function savePromotateUserPool($data){
if(empty($data['create_lack_ids']) && empty($data['del_lack_ids']) && empty($data['info_ids'])){ return;}
if($data['statement_money'] == 0 && $type ==2){ return;}
if($data['statement_money'] == 0){
$data['verify_status'] = 5;
$data['verify_log'] = json_encode(["create_user"=>"system","create_time"=>date("Y-m-d H:i:s"),"verify_user"=>"system","verify_time"=>date("Y-m-d H:i:s"),"payment_user"=>"system","payment_time"=>date("Y-m-d H:i:s")]);
@ -935,7 +947,7 @@ class CompanyStatementSetController extends Controller {
/**
* 获取公司额为信息
*/
protected function getCompanyOtherInfo($company_info,$company_id)
public function getCompanyOtherInfo($company_info,$company_id)
{
$pl = M("promote_company","tab_")
->alias('pc')
@ -953,7 +965,7 @@ class CompanyStatementSetController extends Controller {
/**
* 获取游戏分类名称
*/
protected function getGameTypeName($relation_game_id){
public function getGameTypeName($relation_game_id){
return M("Game","tab_")->field("game_type_name")->where("relation_game_id = '{$relation_game_id}'")->find()['game_type_name'];
}

@ -919,7 +919,6 @@ class ToolController extends ThinkController {
$this->error('参数异常');
}
}
$res = M('company_info', 'tab_')->delete($id);
if ($res === false) {
$this->error('删除失败');

@ -52,8 +52,12 @@
<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>
<div class="fr">
<a class="tabchose" href="{:U('index')}">生效列表</a>
<a href="{:U('lists')}">审核列表</a>
</div>
<h3 class="page_title">推广游戏分成</h3>
<p class="description_text">删除后游戏比例将读取模板值</p>
</div>
<!-- <div class="fl button_list">
<div class="tools">
@ -82,15 +86,6 @@
</volist>
</select>
</div>
<div class="input-list input-list-game search_label_rehab">
<select id="status" name="status" class="select_gallery" >
<option value="">请选择审核状态</option>
<volist name="status" id="vo">
<option value="{$key}" <if condition="isset($_GET['status']) && $key eq I('status')">selected</if> >{$vo}</option>
</volist>
</select>
</div>
<div class="input-list">
<a class="sch-btn" href="javascript:;" id="search" url="{:U('index','&row='.I('row'),false)}">搜索</a>
@ -113,9 +108,6 @@
<!-- 表头 -->
<thead>
<tr>
<th>
<input class="check-all" type="checkbox">
</th>
<th>公司名称</th>
<th>内外团</th>
<th>结算周期</th>
@ -123,12 +115,7 @@
<th>原游戏名称</th>
<th>现游戏名称</th>
<th>生效时间</th>
<th>原比例</th>
<th>申请比例</th>
<th>创建记录</th>
<th>市场部审批</th>
<th>管理员审批</th>
<th>备注</th>
<th>分成比例</th>
<th>操作</th>
</tr>
</thead>
@ -137,14 +124,11 @@
<tbody>
<if condition = "empty($data)">
<tr>
<td colspan="16" class="text-center">aOh! 暂时还没有内容!</td>
<td colspan="9" class="text-center">aOh! 暂时还没有内容!</td>
</tr>
<else/>
<volist name="data" id="data">
<tr>
<td>
<input class="ids" type="checkbox" data-status="{$data.status}" value="{$data['id']}" name="ids[]" >
</td>
<td>{$data.company_name}</td>
<td>{$data.company_belong}</td>
<td>{$data.settlement_type}</td>
@ -152,49 +136,12 @@
<td>{$data.original_package_name}</td>
<td>{$data.relation_game_name}</td>
<td>{$data.valid}</td>
<td style="line-height: 16px;text-indent: 0;">
<div style="text-align: left;width: 90%;margin-left: 5%;margin-top: 10px;margin-bottom: 10px;">
{$data.last_turnover_ratio_str}
</div>
</td>
<td style="line-height: 16px;text-indent: 0;">
<div style="text-align: left;width: 90%;margin-left: 5%;margin-top: 10px;margin-bottom: 10px;">
{$data.turnover_ratio_str}
</div>
</td>
<td>
<div style="line-height: 2;">
{$data.create}
</div>
</td>
<td>
<if condition="$data.status eq -1 ">
<div style="line-height: 2;color: red;">
{$data.market}
</div>
<else />
<div style="line-height: 2;">
{$data.market}
</div>
</if>
</td>
<td>
<if condition="$data.status eq -2 ">
<div style="line-height: 2;color: red;">
{$data.admin}
</div>
<else />
<div style="line-height: 2;">
{$data.admin}
</div>
</if>
</td>
<td>
{$data.remark}
</td>
<td>
<foreach name="data.oplist" item="vo" >
{$vo}
@ -263,14 +210,10 @@ $(function(){
$("#search").click();
}
});
$(".editRatio").on("click",function(){
var id = $(this).data("id");
var url = "{:U('editRatio')}"+"&id="+id;
window.location.href = url;
})
$(".delRatio").on("click",function(){
$(".delGameRatio").on("click",function(){
var id = $(this).data("id");
var url = "{:U('delRatio')}"+"&id="+id;
var url = "{:U('delGameRatio')}"+"&id="+id;
layer.confirm('删除后将无法恢复,请慎重选择', {
closeBtn:0,
title:false,
@ -291,70 +234,6 @@ $(function(){
});
})
$("#marketAgree,#marketRefuse,#adminAgree,#adminRefuse").on("click",function(){
var id = $(this).attr("id");
if(id == "marketAgree"){
var opname = "市场部审批通过";
var opurl = "{:U('marketAgree')}";
var opst ="[未进行审批]";
var status = 0;
}else if(id=="marketRefuse"){
var opname = "市场部审批拒绝";
var opurl = "{:U('marketRefuse')}";
var opst ="[未进行审批]";
var status = 0;
}else if(id=="adminAgree"){
var opname = "管理员审批通过";
var opurl = "{:U('adminAgree')}";
var opst ="[市场部审批通过]";
var status = 1;
}else if(id=="adminRefuse"){
var opname = "管理员审批拒绝";
var opurl = "{:U('adminRefuse')}";
var opst ="[市场部审批通过]";
var status = 1;
}
var flag = false;
var text = $("input:checkbox[name='ids[]']:checked").map(function(index,elem) {
if($(elem).data("status") != status){
flag = true;
}else{
return $(elem).val();
}
}).get().join(",");
if(text == ''){
layer.msg("<font style='color:white'>" + '无需要'+opname+'的申请,仅'+opst+'状态可以进行'+opname+"</font>");
return;
}
if(flag){
layer.confirm(opname+"仅会对"+opst+"的申请进行处理,选择中包含其他的状态的申请将被忽略,点击取消停止操作",{title:false}, function(index){
_doAgreeApply();
layer.close(index);
});
}else{
_doAgreeApply();
}
function _doAgreeApply(){
//执行
$.ajax({
type: "POST",
url: opurl,
dataType: 'json',
async: false,
data: {ids:text},
success:function(data){
if(data.status==1){
layer.msg("<font style='color:white'>" + data.info + "</font>");
setTimeout(function(){
window.location.reload();
},1500);
}
}
});
}
})
})

@ -0,0 +1,367 @@
<extend name="Public/base"/>
<block name="body">
<link rel="stylesheet" href="__CSS__/select2.min.css" type="text/css" />
<link rel="stylesheet" href="__CSS__/pro_promote.css" type="text/css" />
<script src="__STATIC__/jquery.form.js"></script>
<script src="__STATIC__/layer/layer.js"></script>
<script type="text/javascript" src="__JS__/bootstrap.min.js"></script>
<script type="text/javascript" src="__JS__/select2.min.js"></script>
<script type="text/javascript" src="__STATIC__/layer/extend/layer.ext.js"></script>
<link rel="stylesheet" href="__CSS__/promote.css" type="text/css"/>
<style>
.select2-container--default .select2-selection--single {
color: #000;
resize: none;
border-width: 1px;
border-style: solid;
border-color: #a7b5bc #ced9df #ced9df #a7b5bc;
box-shadow: 0px 3px 3px #F7F8F9 inset;height:35px;
height:28px;border-radius:3px;font-size:12px;
}
.select2-container--default .select2-selection--single .select2-selection__rendered {
line-height:35px;
line-height:28px;
}
.select2-container--default .select2-selection--single .select2-selection__arrow {
height:26px;
}
.select2-container--default .select2-search--dropdown .select2-search__field {
height:26px;line-height:26px;font-size:12px;
}
.select2-results__option[aria-selected] {font-size:12px;}
.layui-layer-dialog .layui-layer-content{color:red}
.butnbox {padding:10px 0 10px;}
.butnbox .butnlist {overflow:hidden;clear:both;}
.butnbox .butnlist .butn,.butnbox .butnlist .butn:hover {text-decoration:none;border:none;}
.butnbox .butnlist .butn {display:inline-block;width:120px;height:28px;line-height:28px;text-align:center;color:#FFF;background:#3C95C8;border-radius:3px;}
.butnbox .butnlist .butn.last {background:#009900;}
.butnbox .butnlist .butn~.butn {margin-left:20px;}
.butnbox a{
cursor:pointer
}
.data_list table tbody tr a.disabled,.data_list table tbody tr a.disabled:hover {color:#999;cursor:default;}
.layui-layer-title {
text-align: center;
height: 80px;
line-height: 80px;
font-weight: 600;
font-size: 18px;
}
</style>
<div class="cf top_nav_list">
<div class="cf main-place top_nav_list navtab_list">
<div class="fr">
<a href="{:U('index')}">生效列表</a>
<a class="tabchose" href="{:U('lists')}">审核列表</a>
</div>
<h3 class="page_title">推广游戏分成审核列表</h3>
<p class="description_text">如需修改已审核完成的游戏分成,请新增一个分成进行审核,未审核通过的,请直接编辑</p>
</div>
<!-- <div class="fl button_list">
<div class="tools">
<a class=" " href="{:U('add')}"><span class="button_icon button_icon1"></span>新增推广游戏分成</a>
</div>
</div> -->
<!-- 高级搜索 -->
<div class="jssearch fl cf search_list" style="margin-bottom:12px">
<div class="input-list search-title-box">
<label>搜索:</label>
</div>
<div class="input-list input-list-promote search_label_rehab">
<select id="company_id" name="company_id" class="select_gallery" >
<option value="">请选择公司</option>
<volist name="companyList" id="vo">
<option value="{$vo.id}" <if condition="$vo.id eq I('company_id')">selected</if> >{$vo.company_name}</option>
</volist>
</select>
</div>
<div class="input-list input-list-game search_label_rehab">
<select id="relation_game_id" name="relation_game_id" class="select_gallery" >
<option value="">现包名</option>
<volist name="gameList" id="vo">
<option value="{$vo.relation_game_id}" <if condition="$vo.relation_game_id eq I('relation_game_id')">selected</if> >{$vo.relation_game_name}</option>
</volist>
</select>
</div>
<div class="input-list input-list-game search_label_rehab">
<select id="status" name="status" class="select_gallery" >
<option value="">请选择审核状态</option>
<volist name="status" id="vo">
<option value="{$key}" <if condition="isset($_GET['status']) && $key eq I('status')">selected</if> >{$vo}</option>
</volist>
</select>
</div>
<div class="input-list">
<a class="sch-btn" href="javascript:;" id="search" url="{:U('lists','&row='.I('row'),false)}">搜索</a>
</div>
</div>
</div>
<div class="butnbox" style="margin-bottom: 10px;">
<div class="butnlist jscheckbutn" style="margin-left: 2px">
<foreach name="menubtn" item="vo" >
{$vo}
</foreach>
</div>
</div>
<!-- 数据列表 -->
<div class="data_list">
<div class="">
<table>
<!-- 表头 -->
<thead>
<tr>
<th>
<input class="check-all" type="checkbox">
</th>
<th>公司名称</th>
<th>内外团</th>
<th>结算周期</th>
<th>游戏类型</th>
<th>原游戏名称</th>
<th>现游戏名称</th>
<th>生效时间</th>
<th>原比例</th>
<th>申请比例</th>
<th>创建记录</th>
<th>市场部审批</th>
<th>管理员审批</th>
<th>备注</th>
<th>操作</th>
</tr>
</thead>
<!-- 列表 -->
<tbody>
<if condition = "empty($data)">
<tr>
<td colspan="16" class="text-center">aOh! 暂时还没有内容!</td>
</tr>
<else/>
<volist name="data" id="data">
<tr>
<td>
<input class="ids" type="checkbox" data-status="{$data.status}" value="{$data['id']}" name="ids[]" >
</td>
<td>{$data.company_name}</td>
<td>{$data.company_belong}</td>
<td>{$data.settlement_type}</td>
<td>{$data.game_type_name}</td>
<td>{$data.original_package_name}</td>
<td>{$data.relation_game_name}</td>
<td>{$data.valid}</td>
<td style="line-height: 16px;text-indent: 0;">
<div style="text-align: left;width: 90%;margin-left: 5%;margin-top: 10px;margin-bottom: 10px;">
{$data.last_turnover_ratio_str}
</div>
</td>
<td style="line-height: 16px;text-indent: 0;">
<div style="text-align: left;width: 90%;margin-left: 5%;margin-top: 10px;margin-bottom: 10px;">
{$data.turnover_ratio_str}
</div>
</td>
<td>
<div style="line-height: 2;">
{$data.create}
</div>
</td>
<td>
<if condition="$data.status eq -1 ">
<div style="line-height: 2;color: red;">
{$data.market}
</div>
<else />
<div style="line-height: 2;">
{$data.market}
</div>
</if>
</td>
<td>
<if condition="$data.status eq -2 ">
<div style="line-height: 2;color: red;">
{$data.admin}
</div>
<else />
<div style="line-height: 2;">
{$data.admin}
</div>
</if>
</td>
<td>
{$data.remark}
</td>
<td>
<foreach name="data.oplist" item="vo" >
{$vo}
</foreach>
</td>
</tr>
</volist>
</if>
</tbody>
</table>
</div>
</div>
<div class="page">
<if condition="$role_export_check eq true ">
<a class="sch-btn export-btn"
href="{:U(CONTROLLER_NAME.'/'.ACTION_NAME,array_merge(['export'=>1],I('get.')))}" target="_blank">导出</a>
</if>
{$_page|default=''}
</div>
<!--弹出层-->
<div class="promote-layer mb20">
<form id="ajaxForm" action="{:U('set_withdraw')}" method="post">
<ol class="promote-con">
<li class="promote-con-con " id="deny">
<div class="mb20">
<span class="promote-name">备注:</span>
<textarea class="textarea-style" name="remark" id="remark"></textarea>
</div>
<a class="ajax-post pack" style="cursor: pointer;" target-form="ids" url="{:U('setStatus',array('status'=>-1))}"><div class="promote-btn">拒绝</div></a>
</li>
</ol>
</form>
</div>
</block>
<block name="script">
<script>
<volist name=":I('get.')" id="vo">
Think.setValue('{$key}',"{$vo}");
</volist>
$(".select_gallery").select2();
</script>
<script type="text/javascript">
//导航高亮
highlight_subnav("{:U('index')}");
$(function(){
//搜索功能
$("#search").click(function(){
var url = $(this).attr('url');
var query = $('.jssearch').find('input').serialize();
query += "&"+$('.jssearch').find('select').serialize();
query = query.replace(/(&|^)(\w*?\d*?\-*?_*?)*?=?((?=&)|(?=$))/g,'');
query = query.replace(/^&/g,'');
if( url.indexOf('?')>0 ){
url += '&' + query;
}else{
url += '?' + query;
}
window.location.href = url;
});
//回车自动提交
$('.jssearch').find('input').keyup(function(event){
if(event.keyCode===13){
$("#search").click();
}
});
$(".editRatio").on("click",function(){
var id = $(this).data("id");
var url = "{:U('editRatio')}"+"&id="+id;
window.location.href = url;
})
$(".delRatio").on("click",function(){
var id = $(this).data("id");
var url = "{:U('delRatio')}"+"&id="+id;
layer.confirm('删除后将无法恢复,请慎重选择', {
closeBtn:0,
title:false,
btn: ['取消','删除'] //按钮
}, function(index){
layer.close(index);
}, function(){
$.get(url,function(data){
if(data.code == 1){
layer.msg('<span style="color:white">'+data.msg+'<span>',{time: 1000},function(){
window.location.reload();
});
}else{
layer.msg(data.msg,{icon: 2});
}
});
});
})
$("#marketAgree,#marketRefuse,#adminAgree,#adminRefuse").on("click",function(){
var id = $(this).attr("id");
if(id == "marketAgree"){
var opname = "市场部审批通过";
var opurl = "{:U('marketAgree')}";
var opst ="[未进行审批]";
var status = 0;
}else if(id=="marketRefuse"){
var opname = "市场部审批拒绝";
var opurl = "{:U('marketRefuse')}";
var opst ="[未进行审批]";
var status = 0;
}else if(id=="adminAgree"){
var opname = "管理员审批通过";
var opurl = "{:U('adminAgree')}";
var opst ="[市场部审批通过]";
var status = 1;
}else if(id=="adminRefuse"){
var opname = "管理员审批拒绝";
var opurl = "{:U('adminRefuse')}";
var opst ="[市场部审批通过]";
var status = 1;
}
var flag = false;
var text = $("input:checkbox[name='ids[]']:checked").map(function(index,elem) {
if($(elem).data("status") != status){
flag = true;
}else{
return $(elem).val();
}
}).get().join(",");
if(text == ''){
layer.msg("<font style='color:white'>" + '无需要'+opname+'的申请,仅'+opst+'状态可以进行'+opname+"</font>");
return;
}
if(flag){
layer.confirm(opname+"仅会对"+opst+"的申请进行处理,选择中包含其他的状态的申请将被忽略,点击取消停止操作",{title:false}, function(index){
_doAgreeApply();
layer.close(index);
});
}else{
_doAgreeApply();
}
function _doAgreeApply(){
//执行
$.ajax({
type: "POST",
url: opurl,
dataType: 'json',
async: false,
data: {ids:text},
success:function(data){
if(data.status==1){
layer.msg("<font style='color:white'>" + data.info + "</font>");
setTimeout(function(){
window.location.reload();
},1500);
}
}
});
}
})
})
</script>
</block>

@ -195,48 +195,36 @@ $(function(){
$("#search").click();
}
});
var loop = 1;
var company_id = "{$_GET['company_id']??0}";
$("#company_type").on("change",function(){
var type = $(this).find("option:selected").val();
var typename=setTypeName(type);
var url = "{:U('getCompanyList')}"+"&type="+type;
$.get(url,function(data){
var company = data.info;
var companystr = '<option value="">'+typename+'</option>';
for (var i in company) {
if(company[i].id == company_id){
companystr += "<option value='" + company[i].id + "' selected='selected'>" + company[i].company_name + "</option>"
}else{
companystr += "<option value='" + company[i].id + "'>" + company[i].company_name + "</option>"
if(type != ''){
var url = "{:U('getCompanyList')}"+"&type="+type;
$.get(url,function(data){
var company = data.info;
console.log(company)
var companystr = '<option value="">请选择合作公司</option>';
for (var i in company) {
if(company[i].id == company_id && loop==1){
companystr += "<option value='" + company[i].id + "' selected='selected'>" + company[i].company_name + "</option>"
}else{
companystr += "<option value='" + company[i].id + "'>" + company[i].company_name + "</option>"
}
}
}
$("#company_id").html(companystr);
$("#company_id").select2();
loop++;
})
}else{
var companystr = '<option value="">请先选择合作公司</option>';
$("#company_id").html(companystr);
$("#company_id").select2();
})
}
})
$("#company_type").change();
function setTypeName(type) {
var typename = '';
switch (type) {
case '':
typename ="请先选择公司类型";
break;
case '0':
typename = "请选择已方公司";
break;
case "1":
typename = "请选择上游CP公司";
break;
case "2":
typename ="请选择联运下游渠道公司";;
break;
default:
break;
}
return typename;
}
})

@ -57,7 +57,7 @@
<div class="cf main-place top_nav_list navtab_list">
<div class="fr">
<a href="{:U('index')}">生效列表</a>
<a class="tabchose" href="{:U('list')}">审核列表</a>
<a class="tabchose" href="{:U('lists')}">审核列表</a>
</div>
<h3 class="page_title">公司绑定审核列表</h3>
<p class="description_text"></p>
@ -268,29 +268,35 @@ $(function(){
$("#search").click();
}
});
var loop = 1;
var company_id = "{$_GET['company_id']??0}";
$("#company_type").on("change",function(){
var type = $(this).find("option:selected").val();
var typename=setTypeName(type);
var url = "{:U('getCompanyList')}"+"&type="+type;
$.get(url,function(data){
var company = data.info;
var companystr = '<option value="">'+typename+'</option>';
for (var i in company) {
if(company[i].id == company_id){
companystr += "<option value='" + company[i].id + "' selected='selected'>" + company[i].company_name + "</option>"
}else{
companystr += "<option value='" + company[i].id + "'>" + company[i].company_name + "</option>"
if(type != ''){
var url = "{:U('getCompanyList')}"+"&type="+type;
$.get(url,function(data){
var company = data.info;
console.log(company)
var companystr = '<option value="">请选择合作公司</option>';
for (var i in company) {
if(company[i].id == company_id && loop==1){
companystr += "<option value='" + company[i].id + "' selected='selected'>" + company[i].company_name + "</option>"
}else{
companystr += "<option value='" + company[i].id + "'>" + company[i].company_name + "</option>"
}
}
}
$("#company_id").html(companystr);
$("#company_id").select2();
loop++;
})
}else{
var companystr = '<option value="">请先选择合作公司</option>';
$("#company_id").html(companystr);
$("#company_id").select2();
})
}
})
$("#company_type").change();
$(".editRelation").on("click",function(){
var id = $(this).data("id");
var url = "{:U('editRelation')}"+"&id="+id;
@ -382,26 +388,6 @@ $(function(){
});
}
})
function setTypeName(type) {
var typename = '';
switch (type) {
case '':
typename ="请先选择公司类型";
break;
case '0':
typename = "请选择已方公司";
break;
case "1":
typename = "请选择上游CP公司";
break;
case "2":
typename ="请选择联运下游渠道公司";;
break;
default:
break;
}
return typename;
}
})

@ -56,11 +56,33 @@
font-weight: 400;
font-size: 14px;
}
.main-place .question_content:before{
right: 20px;
left: auto;
}
</style>
<div class="cf main-place top_nav_list navtab_list">
<h3 class="page_title">联运平台结算单管理</h3>
<p class="description_text" id="order_url"></p>
<p class="description_text" id="order_url"></p>
<div class="question" style="float: right;margin-right: 20px;">
<i class="question_mark">?</i>
<ul class="question_content" style="right: -20px;left: auto;">
<li class="question_title">数据相关说明</li>
<li class="question_list">
<span class="">重算金额:</span>
<span class="">仅会重算当前公司,当前时间的结算金额</span>
</li>
<li class="question_list">
<span class="">撤销汇总:</span>
<span class="">需要进行重算才可以再次汇总</span>
</li>
<li class="question_list">
<span class="">新增结算:</span>
<span class="">对新增绑定的公司进行结算,仅统计当月数据(不含下游个人)</span>
</li>
</ul>
</div>
</div>
@ -231,10 +253,19 @@
</div>
<div class="page">
<if condition="$role_export_check eq true ">
<a class="sch-btn" href="{:U(CONTROLLER_NAME.'/'.ACTION_NAME,array_merge(['export'=>1],I('get.')))}" target="_blank">导出</a>
<!-- <a class="sch-btn" href="{:U(CONTROLLER_NAME.'/'.ACTION_NAME,array_merge(['export'=>1],I('get.')))}" target="_blank">导出</a> -->
</if>
{$_page|default=''}
</div>
<div style="width: 100vw;height: 100vh;padding: 0;position: absolute;top: 0;z-index: 9999;display: none;" id="creat_msg">
<div class="layui-layer layui-layer-dialog layui-layer-border layui-layer-msg layui-layer-hui"
type="dialog" times="1" showtime="50000" contype="string" style="z-index: 19891015; top:30%; left:45%;">
<div class="layui-layer-content" style="padding: 15px 0 5px;font-size: 20px;font-weight: 600;color: white;">执行进度</div>
<div id="tip_msg" class="layui-layer-content" style="color: white;">开始时间与结束时间都不允许为空</div>
<div class="layui-layer-content" style="padding: 5px 10px 15px;font-size: 10px;color: #BBB;">TIP:未执行完成之前请勿刷新或关闭此页面</div>
<span class="layui-layer-setwin"></span>
</div>
</div>
</block>
<block name="script">
@ -256,6 +287,66 @@
Think.setValue('{$key}',"{$vo}");
</volist>
$(".select_gallery").select2();
var DATA={};
var MSG={
showmsg:function(str){
$("#creat_msg").show();
$("#tip_msg").html(str);
},
hidemsg:function(){
$("#creat_msg").hide();
$("#tip_msg").html('');
}
}
var COMPARE={
publiucAjax:function(url,senddata,callback){
$.ajax({
type: 'post',
url: url,
data:senddata,
success: function(data) {
if(data.success){
callback(data.data);
}else{
MSG.hidemsg();
layer.alert(data.error);
return false;
}
},
error:function(){
MSG.hidemsg();
layer.alert("网络错误或超时");
return false;
}
});
},
//获取基础参数
getNewStatement:function(callback){
MSG.showmsg("初始化获取校验中....");
COMPARE.publiucAjax("{:U('getNewStatement')}",{},function(data){
DATA = data;
DATA.now = 1;
MSG.showmsg("校验通过,开始统计 [0/"+DATA.count+"] ......");
callback();
});
},
//开始统计
updateNewStatement:function(callback){
var senddata = {date:DATA.datelist[(DATA.now-1)],up_company_id:DATA.up_company_id,dowm_company_id:DATA.dowm_company_id};
console.log(senddata);
COMPARE.publiucAjax("{:U('updateNewStatement')}",senddata,function(){
MSG.showmsg("开始统计 ["+DATA.now+"/"+DATA.count+"] ......");
DATA.now ++;
if( DATA.now > DATA.count){
callback();
}else{
COMPARE.updateNewStatement(callback)
}
});
}
}
</script>
<script type="text/javascript">
//导航高亮
@ -265,24 +356,34 @@
}
$(function(){
var loop = 1;
var company_id = "{$_GET['company_id']??0}";
$("#company_type").on("change",function(){
var type = $(this).find("option:selected").val();
var url = "{:U('Ajax/getCompanyList')}"+"&company_type="+type;
$.get(url,function(data){
var company = data;
var companystr = '<option value="">请选择合作公司</option>';
for (var i in company) {
if(company[i].id == company_id){
companystr += "<option value='" + company[i].id + "' selected='selected'>" + company[i].name + "</option>"
}else{
companystr += "<option value='" + company[i].id + "'>" + company[i].name + "</option>"
if(type != ''){
var url = "{:U('Ajax/getCompanyList')}"+"&company_type="+type;
$.get(url,function(data){
var company = data;
var companystr = '<option value="">请选择合作公司</option>';
for (var i in company) {
if(company[i].id == company_id && loop==1){
companystr += "<option value='" + company[i].id + "' selected='selected'>" + company[i].name + "</option>"
}else{
companystr += "<option value='" + company[i].id + "'>" + company[i].name + "</option>"
}
}
}
$("#company_id").html(companystr);
$("#company_id").select2();
loop++;
})
}else{
var companystr = '<option value="">请先选择合作公司</option>';
$("#company_id").html(companystr);
$("#company_id").select2();
})
}
})
$("#company_type").change();
@ -290,6 +391,20 @@
var order_url = window.location.protocol+"//"+window.location.host+"/admin.php?s=/Public/cp_login.html";
$("#order_url").html("流程说明:结算自动生成对账单--->财务审核对账单--->发起对外对账--->合作方进行确认--->进入报销流程【合作方确认地址:"+order_url+"】");
$("#updateNewStatement").on("click",function(){
layer.confirm("新增结算需要花费2分钟左右时间,并且只计算一个月内的新增结算,请勿在中途关闭页面,无需新增结算请取消",{title:false}, function(index){
COMPARE.getNewStatement(function(){
COMPARE.updateNewStatement(function(){
MSG.showmsg("统计完成,等待跳转中....");
setTimeout(function(){
window.location.reload();
},2000)
});
});
layer.close(index);
});
})
$(".viewStatement").click(function () {
var id = $(this).data("id");
var url = "{:U('viewStatement')}"+"&id="+id

@ -205,7 +205,7 @@
</div>
<div class="page">
<if condition="$role_export_check eq true ">
<a class="sch-btn" href="{:U(CONTROLLER_NAME.'/'.ACTION_NAME,array_merge(['export'=>1],I('get.')))}" target="_blank">导出</a>
<!-- <a class="sch-btn" href="{:U(CONTROLLER_NAME.'/'.ACTION_NAME,array_merge(['export'=>1],I('get.')))}" target="_blank">导出</a> -->
</if>
{$_page|default=''}
</div>

@ -107,22 +107,13 @@
<button class="submit_btn ajax-post" id="submit" type="submit" target-form="form-horizontal" style="margin-left:210px;">
保存
</button>
<a class="submit_btn " alt="返回上一页" title="返回上一页" href="{:U('Partner/lists')}" >
<a class="submit_btn " alt="返回上一页" title="返回上一页" href="{:U('Tool/company_info')}" >
返回
</a>
</div>
</form>
</div>
</div>
<div class="common_settings">
<span class="plus_icon"><span><img src="__IMG__/zwmimages/icon_jia.png"></span></span>
<form class="addShortcutIcon">
<input type="hidden" name="title" value="{$meta_title}">
<input type="hidden" name="url" value="Partner/add">
</form>
<a class="ajax-post add-butn <notempty name='commonset'>addSIsetted</notempty>" href="javascript:;" target-form="addShortcutIcon" url="{:U('Think/addShortcutIcon')}"><img src="__IMG__/zwmimages/icon_jia.png"><span><notempty name='commonset'>已添加<else />添加至常用设置</notempty></span></a>
</div>
</block>
<block name="script">

@ -39,7 +39,7 @@
<div class="fl button_list">
<div class="tools">
<a class="" href="{:U('company_add')}"><span class="button_icon button_icon1"></span>新增</a>
<a class="ajax-post confirm " target-form="ids" url="{:U('del')}"><span class="button_icon button_icon2"></span>删除</a>
<a class="ajax-post confirm " target-form="ids" url="{:U('company_del')}"><span class="button_icon button_icon2"></span>删除</a>
</div>
</div>
<!-- <div class="jssearch fl cf search_list" >-->

@ -0,0 +1,14 @@
<?php
namespace Payment\Controller;
/**
* 后台首页控制器
* @author 麦当苗儿 <zuojiazi@vip.qq.com>
*/
class IndexController extends BaseController
{
public function index()
{
$this->redirect('Payment/lists');
}
}

@ -17,6 +17,18 @@ class PaymentController extends BaseController
"2"=>"下游个人",
"3"=>"上游CP"
];
public $ALIRSP=[
"out_biz_no"=>"商户订单号",
"order_id"=>"支付订单号",
"pay_fund_order_id"=>"资金流水号",
"status"=>"转账状态",
"trans_date"=>"订单支付时间",
"msg"=>"支付信息",
"sub_msg"=>"失败描述",
"sub_code"=>"失败码",
"remark"=>"打款备注",
"code"=>"打款状态码"
];
public function _initialize()
{
$this->admininfo = session('payment_user');;
@ -118,7 +130,7 @@ class PaymentController extends BaseController
if ($page) {
$this->assign('_page', $page);
}
$this->meta_title = '打款结算单';
$this->assign("data",$CompanyInfo);
$this->assign("money",$money);
$this->assign("CompanyType", $this->CompanyType);
@ -480,6 +492,28 @@ class PaymentController extends BaseController
}
}
$this->ajaxReturn(["success"=>"打款成功","data"=>[]]);
}
/**
* 打款详情
*/
public function paymentInfo()
{
if(!isset($_REQUEST['id'])) $this->error("参数错误");
$id = $_REQUEST['id'];
$info = M("company_statement_info","tab_")->field("pay_info")->where("id='{$id}'")->find()['pay_info'];
$info = json_decode($info,true);
$senddata = [];
foreach($info as $k => &$v){
if(isset($this->ALIRSP[$k])){
$senddata[$this->ALIRSP[$k]] = $v;
}else{
$senddata[$k] = $v;
}
}
$this->assign("info",$senddata);
$this->display();
}
protected function setOneVerifyStatus($change_status,$op_pre,$id)
{

@ -224,7 +224,7 @@
<td>
<a class='confirm viewPool' data-id='{$data.id}'>查看</a>
<if condition="$data['pay_status'] neq 0">
<a class='confirm viewPayment' data-id='{$data.id}'>打款详情</a>
<a class='confirm paymentInfo' data-id='{$data.id}'>打款详情</a>
</if>
</td>
</tr>
@ -310,6 +310,19 @@
content: url
});
});
$(".paymentInfo").on("click",function(){
var id = $(this).data("id");
var url = "{:U('paymentInfo')}"+"&id="+id
layer.open({
type: 2,
title: "打款详情",
shadeClose: true,
shade: 0.8,
area: ['20%', '60%'],
content: url
});
})
$("#doPayment").on("click",function(){
var text = $("input:checkbox[name='ids[]']:checked").map(function(index,elem) {
if($(elem).data("pay") == 1){

@ -0,0 +1,67 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" type="text/css" href="__CSS__/base.css" media="all">
<link rel="stylesheet" type="text/css" href="__CSS__/common.css" media="all">
<link rel="stylesheet" type="text/css" href="__CSS__/style.css" media="all">
<link rel="stylesheet" type="text/css" href="__CSS__/default_color.css" media="all">
<link href="__STATIC__/datetimepicker/css/datetimepicker.css" rel="stylesheet" type="text/css">
<link href="__STATIC__/datetimepicker/css/dropdown.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="__CSS__/select2.min.css" type="text/css" />
<script type="text/javascript" src="__STATIC__/jquery-2.0.3.min.js"></script>
<script type="text/javascript" src="__JS__/select2.min.js"></script>
<script type="text/javascript" src="__STATIC__/layer3/layer.js"></script>
<script type="text/javascript" src="__STATIC__/datetimepicker/js/bootstrap-datetimepicker.min.js"></script>
<script type="text/javascript" src="__STATIC__/datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js"charset="UTF-8"></script>
<script src="__STATIC__/juicer-min.js" type="text/javascript"></script>
<script src="__STATIC__/table2excel.js"></script>
</head>
<style>
html {
min-width:100%;
}
body {
padding: 0px 10px 150px 10px;
/* width: 960px; */
}
</style>
<body>
<div class="tab-wrap">
<div class="tab-content tabcon1711 tabcon17112">
<div id="tab1" class="tab-pane in tab1">
<form action="{:U('saveTool')}" method="post" class="form-horizontal qq_login form_info_ml">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<foreach name="info" item="v" key="k">
<tr>
<td class="l noticeinfo">{$k}:</td>
<td class="r table_radio">
{$v}
<!-- <input type="text" class="text input-large" value="{$wechat_url}"> -->
<!-- <span class="notice-text">请将此地址复制到微信公众平台接口URL项</span> -->
</td>
</tr>
</foreach>
</tbody>
</table>
</form>
</div>
</div>
</div>
<body>
<script type="text/javascript">
</script>
</html>

@ -1947,7 +1947,7 @@ CREATE TABLE `tab_company_statement_info` (
`pay_status` tinyint(2) NOT NULL DEFAULT '0' COMMENT '打款状态 -1:打款失败 0:未打款 1:打款成功',
`pay_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '支付完成时间',
`pay_type` tinyint(2) NOT NULL DEFAULT '0' COMMENT '打款类型 1提现 2线上打款 3线下打款',
`pay_info` text NOT NULL COMMENT '打款信息',
`pay_info` text COMMENT '打款信息',
`remark` varchar(255) COLLATE utf8mb4_bin NOT NULL DEFAULT '' COMMENT '备注',
PRIMARY KEY (`id`),

@ -6,13 +6,13 @@ require_once "aop/request/AlipayFundTransOrderQueryRequest.php";
require_once "aop/request/AlipayFundAccountQueryRequest.php";
class Fund {
private $appCertPath = __DIR__ . "/cert/appCertPublicKey_2021001159678209.crt";
private $appCertPath = __DIR__ . "/cert/appCertPublicKey_2021001165628090.crt";
private $alipayCertPath = __DIR__ . "/cert/alipayCertPublicKey_RSA2.crt";
private $rootCertPath = __DIR__ . "/cert/alipayRootCert.crt";
private $gatewayUrl = "https://openapi.alipay.com/gateway.do";
private $appId = "2021001159678209";
private $alipayUserId = '2088631242187552';
private $rsaPrivateKey = 'MIIEogIBAAKCAQEApuiUWwiE9apUAWLaX8SDYgt2oQnGCtT60dZvpMMHCuGR71HKCoLuCbgoZ3GUGhS9PByQZp/hNygEu6GzQwNTj5PiWMVrlfL7Xjkcpg+JbSiR3TUSJfYO2uLa+atJCQDNhsE6cfdcE4VHiSU5TK4ezBaIcYBPmzM6xKdQ6BblCM7fakTlVct+gvrE69M6XoyoM5VT6/lRwTIscWfwkyd/lps4jBwhuVMDboulk1BXQ2+daIQGqK4QQfQtC0bvREC+gwwmFaIfrw3dF/nOVEUEyhx4SFb7RzQv9mZx9HL4P4qCRvGl+jE5NE9hUWNz2pajR2cg7DxHDEMB0dSz8LRW9QIDAQABAoIBAADqDz38avYJi9JCH14c7ndQBsNVEV+n0QPrP8tQQi6eE7WS5h9uni0xdA81ARGvgWXd5jCZuZsavgPlG91HHGMR9VB1LGSy4wueFnkWZrNRYJMsoj/Q/D3Ytkhd1tWUyottbYuIRlnZBg5LROgVoBeQHAk7IbSA8FZ5cCkFTxXgQfOHd2yWJGkI1bz9MCTawT96fEBAowq2g28LsT44/EiJIGXY4hv7SOpZIIp9JZfmEDO9vOf5nkkZbsli0KPQPkTvly3p0YfMATqsxMLue1lwfHmueRMdk8p31aaz3c2aOVyvtyNae/UP3/O47HgAI9LXoAbzChlMi15o5YTyaxUCgYEA56ThYW4+9CB1Q+qFkz4KyarI4//AHyha/LELXpeRICidxDw6PQdfBi/75udbQDI0tISJjio+S8sKUlCWcHi/1/A8k0aZBN1rs9mTVQrN1zMbSgoYOHOIGE4147ig5vU6gjvpI/SPbeg3BLg3rd/3IOsDmh4HoVhSUINUwJ9dK2MCgYEAuHU5eeInSKeEPWMMqql+OxHnA7g/Z9RYJsuuXrNm8qsGDxJbJmVfBsa7Uo466hwr3OhMuk2ShensEzFYxDrURgADjAgVn7puzMUtHYMNcK06Se8g/Crq6UYM0OGaFfKVMgX8gq+eAdDZmX+WmdJBgakVLfjxlQ94ar5EGe+w/8cCgYB4TjyzsmNFvRnKJSIsn7tQk790Ep7AT+A5fuXNweAgmJeflDwW+B4VA5TLjnro82pGGtOqHyxths0chTgsv7m7N8zuHGtaiHjoVmbbcxoG20cgA/AiWXZkUTJRy9DdQp2Zh+4Eu35GcaUpcVeRmVErKoObZl9GH63YnOzGgb4MywKBgGebWHRQhfY2OX3tg7DcUQ3GyXZ6aAre58CqyT9iD2Igk9+lVNNlPxHkUFVXlFnpBu4nAOnoJnPXZ4WEQzK9RHwpB9UAuXylUBTub5/S+5qdgk8C5Qke5iGu+gXdohnPzuNxH1scX2jvsTmZw7KUubylh0LyQGeUb/Os+T2EN2wDAoGASbDD8hLDI64DpDp73XHbKbrdHaz7c9NkUsLD3FB6nmGQtAD8Gvuvd3PvhhBGz5O/ndUU0KSdZb4Yg3/3Qx4TWIJhobkXsNLkv+aPNxyjQBkFfJmXjsx2phsvjPNRICBeWlLKbB30SbZ6uCs6uypebSzIxdjT2riFmuuaJtsZJVM=';
private $appId = "2021001165628090";
private $alipayUserId = '2088331082835421'; // pid
private $rsaPrivateKey = 'MIIEowIBAAKCAQEAmDggf4zno5KmKKEv0gbKctXyceEylTbWgZhannFGDXBkVkUqKC1btcKOFRWteVcQDFFCAgMobiTxH4rpIopyoC3x66mAynTVQnEWYFCyc628ZMAJ6aXQMvYNmzJgDczX8YI9taXbOf2YtV3uLdSs6t3Qm/rCBfrn/wj30QNsUm1f8yqCiHVwZ3jTM3ygKCr4SU3XjTKa1IqlYvGgIHrNHmTwATxvNRXa9pDTvSFz/zdvFxveWBn9PDhiNVebgEDFq0Xtv//z78UzRC3T8vV7HfCvcuR/gH0bVhvTzK55VlXlANM8o06tGsOj1jpJUGjUeMe2yiH9bDO810zNuri9LwIDAQABAoIBADoZQh4s88S1FoJvc0cgnGjUTCM3Jw1YzurL8dqDtY8vlLxwzbRkC5sGVSCrE3k6x79LzHvkJKxVoUq+xFkQqsuEfc/K9INRsIwZicbdRh9s8nkp6x6o0RyCWZMg2RSrWMivQ0pvsYsixgSDg4Mup4lFfHfsb93EdIQdMikuu0uCKFcXLO8UTma7mBRLdOis11vaZv7ROVftEUww9MZHCh/AJl7S73RvwZwZHQ9H5Y7fJ8EFqARJmTDEwDaOUQUGVTVho85KIlvpQ9gYbwy9R+xbftBSra+/THTiYjcMPR06wbf0dQwSunsz/NK4guVIpjKD23hQI1XcTcvxl6qRvjECgYEA12oro1NV9U4wVdwbbGzonW3hyNIE8pNbs3AE4q8pJF8aTVVnQuicunrgfK1W88urrngMMx+byg4ZnxUmahcyU+fId+z6FZbfypij+lMRpF85oQ0bhcXn04dcJimMlNrV4i62GeVcKtaAvoVXNYOXeS7SHtZ2nI0f7ArHbdgpbgMCgYEAtOXtfm3+CmNrlbhyPXPjUbNY3q3Uo09X6R01zYSvIobl3hoVVsw+7zJIAAaCTLcRxiVhvK5QVdRi/ohUphu2YugJx8fzNw6zl0iR/B9dWpDplMFDn3VOuS5UBeIHDn1C/A8RO7VKmYpCSAyHZxaxg0sAsAqjn9pk0ClvFpshcmUCgYEAwxXL32Yher8M1zU3QMKBB9HzoMNS57y8V40jX4fyYpYeY9rsYZP4HIobs83n6XKSULc3lTUTCbIrUf79gybu1T4cNz/OXK7+jaQfHR0N5Sa4MjqEqmnIwbDcq1MFlel5uhVDpcAp8EHC5sgrarN6Aq18baEcWjsUpdg9NCWHn7ECgYAVcyodErfLzYwlPbC2Hra2qliAVwZesvrOlnsZuoD1zB8Xneon16IixMiK0DrFE/QUlbwoHldCRiPS4KGA7MpMogz+1nO9dI3RA3bj+WgdZA9+Zwg4sTU7egXWiL2jdzDpKHQ3q0CEQkOnvWyUybkUw2D6fth2DPRlRnR4rr5hjQKBgHxl/E/sWi8iTN1thUbWzs2Q/8Qt+CHiXnWEU1rraV/0OlE4wbYVyFxURuZHCNdpTyuj0LS28WanbjJsmceL//+hy5qcjSBFJ8UO4Mw8pwDM8SEfWbo/MHNV48ElovOXxLrKTuvQUR6duWkv73qZYOpPYr+Rl0ylHGvNsqsLY7LZ';
public function transfer($aliAccount, $realName, $orderId, $amount, $title='') {

@ -1,19 +1,19 @@
-----BEGIN CERTIFICATE-----
MIIDsjCCApqgAwIBAgIQICAFCWxavNeaIxWMns+DwjANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UE
MIIDtTCCAp2gAwIBAgIQICAGGS5p70QviSuHRfPPBjANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UE
BhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNVBAsMF0NlcnRpZmljYXRpb24gQXV0
aG9yaXR5MTkwNwYDVQQDDDBBbnQgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IENs
YXNzIDIgUjEwHhcNMjAwNTA5MDg1NTE3WhcNMjIwNTA5MDg1NTE3WjCBkjELMAkGA1UEBhMCQ04x
LTArBgNVBAoMJOa1t+WNl+S4h+ebn+WkqeS4i+enkeaKgOaciemZkOWFrOWPuDEPMA0GA1UECwwG
QWxpcGF5MUMwQQYDVQQDDDrmlK/ku5jlrp0o5Lit5Zu9Kee9kee7nOaKgOacr+aciemZkOWFrOWP
uC0yMDg4NjMxMjQyMTg3NTUyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAj1gR40Zr
H2ZoHTmKAhiEcPEsc0vM7Wbeui8SBrjntEVjHCLF4mE9u9V7uYyrs0b/RGlh5Lxqe3AuterzAWOH
GTckg2GOXXRagYYekpTl77fTLmm99vI+uTA7mjvs0PLm39/MjuK5hIr39eQgctXM+m4oxSht5hIG
ahyC9nk5uId0b1oae+tAtT7mBl/9N9rcsDuoNlX447IjDsi/WxKMsI6C2rI+b6p2BBG46550s/9m
wrCpWHHeu7jOx9gS8501axUd4cjqOLRlxPuEO4Il6ZCnsI2U91/G4tKgjgXkNdTGXqP+vqvm7Mzp
YL3SMmqyboEJdKa3vDbQAcfThSPrQwIDAQABoxIwEDAOBgNVHQ8BAf8EBAMCA/gwDQYJKoZIhvcN
AQELBQADggEBAHliZVSXlOTzPzrBViOuh0riaWSLzz0L+1VwsIwVSAY6U3qMHVFKst6JmNV7T8ia
y2EW219Q8m6iSE+JMzJTyXvz5xylCHmaAuWMY9iqmsvfVmNbmYF/f2iwdULqSIeP8ZtbXKy/fgra
a6dCWST29d2PVzE7cF48tOYvqc6TQj6wUoXBDV4iU4onX1JJbDA2mQcfOzplRRJh70OUqqnbyTig
5aFQJX36KnZLxN6KBo9Y9CbGrdA/VTHBwaDhj6/NbauuGpf8swD9kHZv02HAQhpbCdOSQa+bZd+d
gEOApFe9LsoQvlbyqyu14bXUNwXd/tilisjyqoDA96CSx6gkvpA=
YXNzIDIgUjEwHhcNMjAwNjE5MDc1OTUwWhcNMjIwNjE5MDc1OTUwWjCBlTELMAkGA1UEBhMCQ04x
MDAuBgNVBAoMJ+emj+W7uumHkeiPoOiPnOe9kee7nOenkeaKgOaciemZkOWFrOWPuDEPMA0GA1UE
CwwGQWxpcGF5MUMwQQYDVQQDDDrmlK/ku5jlrp0o5Lit5Zu9Kee9kee7nOaKgOacr+aciemZkOWF
rOWPuC0yMDg4MzMxMDgyODM1NDIxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApGA7
3xiJnGXsrIPCqTSgq9C/4uNArsX3/xBE1qSl6n4X2NR+oejR9fVzM3+rlo4npJPUDh5sq3udfUNW
kC5Gb4MzHyNExNWD97pV+xNjwwKIV95ysll44qNFhSIeeiHg3duPV9ZJ3GxUS2lAE0Mw3+6eU5QF
AjYHmBsozCXz3RKk9UxVNBR3VkjLzkUh7kyg00kv/pIFM03i4l804FQ3ssbzE5FSL9maucibwRib
AnStR778bM9r9PLNZ48v9XeAGThfk9WFoOfbJB8UQMgO05QmT77iWMuOJZqP6Q1w1LF1W8eM1jz4
MzjgTyauYndZBqvXnyPBKnUYoIBNI/6bGwIDAQABoxIwEDAOBgNVHQ8BAf8EBAMCA/gwDQYJKoZI
hvcNAQELBQADggEBAAHPfzWNY149me8+Rxnf0BXI09At2z/JpF3htT09lRkma1qSuIwwKkZzvgOm
pTnUE7+3YJ6lxzTrdEAeL3Z6lY/YQJjW/ewrqfJBtducXeeTdoBlZLNLfAR/6ap4HtsUH33ftjzK
WA9JyiqKiAwqfNDJo/RjxPLCAwMFXmfoZdwgF7pib/I6Y4HkrU8RFcFEg+I/5DHbR6giaFflZ6n/
lhbFo+t8luMO+4J3eKdE1Qp/KuohbWxXpc+4AtWYMxUuhWulFP87c1SUKSWinnTrtLpamvFkYyIH
zPuF6lENjKScnzFUZTjkGs5Ms1LzfrlnjN7ZX6c4M3qQGDlktyaHwYk=
-----END CERTIFICATE-----

@ -0,0 +1,24 @@
-----BEGIN CERTIFICATE-----
MIIEtDCCA5ygAwIBAgIQICAGGaaBO7FBxTQH7IscmDANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UE
BhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNVBAsMF0NlcnRpZmljYXRpb24gQXV0
aG9yaXR5MTkwNwYDVQQDDDBBbnQgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IENs
YXNzIDEgUjEwHhcNMjAwNjE5MDc1OTUwWhcNMjIwNjE5MDc1OTUwWjB8MQswCQYDVQQGEwJDTjEw
MC4GA1UECgwn56aP5bu66YeR6I+g6I+c572R57uc56eR5oqA5pyJ6ZmQ5YWs5Y+4MQ8wDQYDVQQL
DAZBbGlwYXkxKjAoBgNVBAMMITIwODgzMzEwODI4MzU0MjEtMjAyMTAwMTE2NTYyODA5MDCCASIw
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJg4IH+M56OSpiihL9IGynLV8nHhMpU21oGYWp5x
Rg1wZFZFKigtW7XCjhUVrXlXEAxRQgIDKG4k8R+K6SKKcqAt8eupgMp01UJxFmBQsnOtvGTACeml
0DL2DZsyYA3M1/GCPbWl2zn9mLVd7i3UrOrd0Jv6wgX65/8I99EDbFJtX/Mqgoh1cGd40zN8oCgq
+ElN140ymtSKpWLxoCB6zR5k8AE8bzUV2vaQ070hc/83bxcb3lgZ/Tw4YjVXm4BAxatF7b//8+/F
M0Qt0/L1ex3wr3Lkf4B9G1Yb08yueVZV5QDTPKNOrRrDo9Y6SVBo1HjHtsoh/WwzvNdMzbq4vS8C
AwEAAaOCASkwggElMB8GA1UdIwQYMBaAFHEH4gRhFuTl8mXrMQ/J4PQ8mtWRMB0GA1UdDgQWBBQc
ZHMKu7te5Gjs21/AcjE6mO+x/TBABgNVHSAEOTA3MDUGB2CBHAFuAQEwKjAoBggrBgEFBQcCARYc
aHR0cDovL2NhLmFsaXBheS5jb20vY3BzLnBkZjAOBgNVHQ8BAf8EBAMCBsAwLwYDVR0fBCgwJjAk
oCKgIIYeaHR0cDovL2NhLmFsaXBheS5jb20vY3JsNDIuY3JsMGAGCCsGAQUFBwEBBFQwUjAoBggr
BgEFBQcwAoYcaHR0cDovL2NhLmFsaXBheS5jb20vY2E2LmNlcjAmBggrBgEFBQcwAYYaaHR0cDov
L2NhLmFsaXBheS5jb206ODM0MC8wDQYJKoZIhvcNAQELBQADggEBAGQL5J9FSNgCQ5vL2kIZYGvu
1gsaqdcmlceVxP3yd9hBdVFDZ4sBCuiXkWhZZtiHeVgWklXEIj8rQuZ5KkDBzBa/qS6AadL3g108
kQuEAlrIj7Gf9Nl9WD+mavASV1khI9297WKgWE70n59h9FDCkUL2jtLDSAcvOP3bk4aMNXjIFsWb
7rrHsn4S4aGdRhunI9Gumlkp0Si/YHrvC2LoHd2NZbFGFKR5bGh/JIUFdlal0+fUZ1UMxlrHe1HZ
NNMnQonmgovAsCfzkrhADofXT3X7bjruK0teffRk1imtzgjtjscxlVkZWSrnqIbZ03vpYSUn2Ioe
Zs9+maCIK7pv5I8=
-----END CERTIFICATE-----
Loading…
Cancel
Save