You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
337 lines
12 KiB
PHP
337 lines
12 KiB
PHP
<?php
|
|
|
|
namespace Home\Controller;
|
|
|
|
use OT\DataDictionary;
|
|
use Admin\Model\ApplyModel;
|
|
use Think\Model;
|
|
use Base\Facade\Request;
|
|
use Base\Service\ApplyService;
|
|
use Base\Service\PromoteService;
|
|
|
|
|
|
/**
|
|
* 前台首页控制器
|
|
* 主要获取首页聚合数据
|
|
*/
|
|
class WithdrawController extends BaseController
|
|
{
|
|
public function index($p=0)
|
|
{
|
|
|
|
$page = intval($p);
|
|
$page = $page ? $page : 1; //默认显示第一页数据
|
|
$row=10;
|
|
if(isset($_REQUEST['row'])) {$row = $_REQUEST['row'];}else{$row = 10;}
|
|
|
|
|
|
$id = get_pid();
|
|
$safePwd = M('promote','tab_')->where(['id'=>$id])->field('second_pwd')->find();
|
|
if(empty($safePwd['second_pwd'])) {
|
|
$this->display('Public/setSafePwd');
|
|
exit;
|
|
}
|
|
|
|
|
|
$map = [];
|
|
|
|
$map["promote.id"] = get_pid();
|
|
$map['tab_company_statement_info.company_type'] = ['in',"1,2"];
|
|
|
|
if ($_REQUEST['pay_status'] || $_REQUEST['pay_status'] == '0') {
|
|
$map['pay_status'] = $_REQUEST['pay_status'];
|
|
}
|
|
|
|
if(!empty($_REQUEST['start'])&&empty($_REQUEST['end'])){
|
|
$map['statement_begin_time'] = array('GT',strtotime($_REQUEST['start']));
|
|
unset($_REQUEST['start']);
|
|
}
|
|
if(empty($_REQUEST['start'])&&!empty($_REQUEST['end'])){
|
|
$map['statement_end_time'] = array('LT',strtotime($_REQUEST['end'])+24*60*60-1);
|
|
unset($_REQUEST['end']);
|
|
}
|
|
if(!empty($_REQUEST['start'])&&!empty($_REQUEST['end'])){
|
|
$map['statement_begin_time'] = array('GT',strtotime($_REQUEST['start']));
|
|
$map['statement_end_time'] = array('LT',strtotime($_REQUEST['end'])+24*60*60-1);
|
|
unset($_REQUEST['start']);unset($_REQUEST['end']);
|
|
}
|
|
|
|
$promote_data = M("promote","tab_")->where(['id'=>get_pid()])->find();
|
|
|
|
$this->assign("promote_data",$promote_data);
|
|
|
|
$data = M("company_statement_info","tab_")
|
|
->field("tab_company_statement_info.*")
|
|
->join("left join tab_promote_company company on tab_company_statement_info.company_id=company.id")
|
|
->join("left join tab_promote promote on company.id=promote.company_id")
|
|
->page($page,$row)
|
|
->where($map)
|
|
->select();
|
|
|
|
foreach ($data as $key => $value) {
|
|
|
|
$data[$key]['time'] = date("Y-m-d H:i:s",$value["statement_begin_time"])."-".date("Y-m-d H:i:s",$value["statement_end_time"]);
|
|
|
|
}
|
|
|
|
$parameter =I('get.');
|
|
$parameter['p']=I('get.p',1);
|
|
$parameter['row']=I('get.row');
|
|
|
|
$count = M("company_statement_info","tab_")
|
|
->field("tab_company_statement_info.*")
|
|
->join("left join tab_promote_company company on tab_company_statement_info.company_id=company.id")
|
|
->join("left join tab_promote promote on company.id=promote.company_id")
|
|
->where($map)
|
|
->count();
|
|
|
|
|
|
$page = set_pagination($count,$row,$parameter);
|
|
if($page) {$this->assign('_page', $page);}
|
|
|
|
$this->assign("data",$data);
|
|
|
|
$this->display();
|
|
|
|
}
|
|
|
|
//执行打款
|
|
public function doPayment()
|
|
{
|
|
|
|
$id = get_pid();
|
|
$safePwd = M('promote','tab_')->where(['id'=>$id])->field('second_pwd')->find();
|
|
if(empty($safePwd['second_pwd'])) {
|
|
$this->display('Public/setSafePwd');
|
|
exit;
|
|
}
|
|
|
|
$id = $_REQUEST['id'];
|
|
$remark = $_REQUEST['remark'];
|
|
Vendor("Alipay2020/Fund");
|
|
$fund = new \Fund();
|
|
|
|
//
|
|
$dbres = M("company_statement_info","tab_")->where("id='{$id}'")->find();
|
|
// $this->ajaxReturn(["msg"=>"打款成功","data"=>$dbres,"status"=>1]);die();
|
|
$company_info = json_decode($dbres['company_info'],true);
|
|
|
|
if($dbres['pay_status'] != 1 && $dbres['verify_status'] == 1){
|
|
//执行打款
|
|
$title = "测试-".$dbres['company_name']."结算";
|
|
$amount = $dbres['statement_money'];
|
|
//TODO:线上要关闭这个
|
|
$amount = 0.1;//测试金额为0
|
|
$payres = $fund->transfer($company_info['ali_account'],$company_info['ali_user'],$dbres['statement_num'],$amount, $title);
|
|
$resultCode = $payres->code;
|
|
|
|
$savedata = ["id"=>$dbres['id']];
|
|
if(!empty($resultCode)&&$resultCode == 10000){
|
|
$savedata["pay_status"]=1;
|
|
} else {
|
|
$savedata["pay_status"]=-1;
|
|
}
|
|
|
|
$payres = json_decode( json_encode($payres),true);
|
|
$payres["remark"] = $remark;
|
|
|
|
$savedata["pay_info"] = json_encode($payres,JSON_UNESCAPED_UNICODE);
|
|
$savedata["pay_type"]=1;
|
|
$savedata["pay_time"]=time();
|
|
|
|
} else {
|
|
$this->poolCount($dbres['pool_id']);
|
|
$this->ajaxReturn(["msg"=>"已经打款过","data"=>$dbres,"status"=>0]);
|
|
}
|
|
$this->poolCount($dbres['pool_id']);
|
|
M("company_statement_info","tab_")->save($savedata);
|
|
$this->ajaxReturn(["msg"=>"打款成功","data"=>$dbres,"status"=>1]);
|
|
}
|
|
|
|
/**
|
|
* 执行最后聚合表统计
|
|
* 整合数据,全部成功则支付成功,否则为支付中
|
|
*/
|
|
public function poolCount($poolid){
|
|
$f = M("company_statement_info","tab_")->where("pool_id = {$poolid} AND pay_status <> 1")->find();
|
|
if(empty($f)){
|
|
//全部完成
|
|
$this->setOneVerifyStatus(4,"payment",$poolid);
|
|
}else{
|
|
//打款中
|
|
$this->setOneVerifyStatus(3,"payment",$poolid);
|
|
}
|
|
}
|
|
protected function setOneVerifyStatus($change_status,$op_pre,$id)
|
|
{
|
|
$dbres = M("company_statement_pool","tab_")->field("id,verify_status,verify_log")->where("id = {$id}")->find();
|
|
$dbres['verify_log'] = json_decode($dbres['verify_log'],true);
|
|
$dbres['verify_log'][$op_pre.'_user']=$_SESSION['onethink_home']['promote_auth']['account'];
|
|
$dbres['verify_log'][$op_pre.'_time']=date("Y-m-d H:i:s");
|
|
$dbres['verify_log'] = json_encode($dbres['verify_log']);
|
|
$dbres['verify_status']=$change_status;
|
|
M("company_statement_pool","tab_")->save($dbres);
|
|
}
|
|
|
|
public function withdrawDetail() {
|
|
|
|
$id = get_pid();
|
|
$safePwd = M('promote','tab_')->where(['id'=>$id])->field('second_pwd')->find();
|
|
if(empty($safePwd['second_pwd'])) {
|
|
$this->display('Public/setSafePwd');
|
|
exit;
|
|
}
|
|
|
|
$id = $_REQUEST["id"];
|
|
|
|
$dbres = M("company_statement_info","tab_")
|
|
->field("*,tab_company_statement_info.id")
|
|
->join("left join tab_promote_company company on tab_company_statement_info.company_id=company.id")
|
|
->where("tab_company_statement_info.id='{$id}'")->find();
|
|
|
|
// dump($dbres);die();
|
|
|
|
$relation = M("company_relation","tab_")->where("second_company_id={$dbres['company_id']}")->find();
|
|
|
|
if (!$relation) {
|
|
$this->error("乙方关联信息不存在!");
|
|
}
|
|
|
|
if ($relation['invoice_type']==1) {
|
|
$relation['invoice_type'] = "专票";
|
|
} else if ($relation['invoice_type'] == 2) {
|
|
$relation['invoice_type'] = "普票";
|
|
} else {
|
|
$relation['invoice_type'] = "无";
|
|
}
|
|
|
|
$first_companmInfo = M("company_info","tab_")->where("id={$relation['first_company_id']}")->find();
|
|
if (!$first_companmInfo) {
|
|
$this->error("甲方公司信息不存在!");
|
|
}
|
|
|
|
$this->assign("relation",$relation);
|
|
$this->assign("first_company_info",$first_companmInfo);
|
|
|
|
$company_info = json_decode($dbres['company_info'],true);
|
|
$statemnt_info = json_decode($dbres['statement_info'],true);
|
|
|
|
$dbres['pay_time'] = date("Y-m-d H:i:s",$dbres['pay_time']);
|
|
|
|
$dbres['statement_begin_time'] = date("Y-m-d",$dbres['statement_begin_time']);
|
|
$dbres['statement_end_time'] = date("Y-m-d",$dbres['statement_end_time']);
|
|
$dbres['hletter_amount'] = convertAmountToCn($dbres['statement_money']);
|
|
|
|
// dump($company_info);
|
|
// dump($statemnt_info);die();
|
|
$rowspan = count($statemnt_info);
|
|
|
|
$this->assign("data",$dbres);
|
|
$this->assign("rowspan",$rowspan);
|
|
$this->assign("company_info",$company_info);
|
|
$this->assign("statemnt_info",$statemnt_info);
|
|
|
|
$this->display("withdrawdetail");
|
|
|
|
}
|
|
|
|
public function withdrawOrderDetail($p=0) {
|
|
|
|
$id = get_pid();
|
|
$safePwd = M('promote','tab_')->where(['id'=>$id])->field('second_pwd')->find();
|
|
if(empty($safePwd['second_pwd'])) {
|
|
$this->display('Public/setSafePwd');
|
|
exit;
|
|
}
|
|
|
|
$page = intval($p);
|
|
$page = $page ? $page : 1; //默认显示第一页数据
|
|
$row=10;
|
|
if(isset($_REQUEST['row'])) {$row = $_REQUEST['row'];}else{$row = 10;}
|
|
|
|
$start = $_REQUEST['start'];
|
|
$end = $_REQUEST['end'];
|
|
|
|
$game_map['relation_game_id'] = $_REQUEST['relation_game_id'];
|
|
|
|
$game_id = M("game","tab_")->field("id")->where($game_map)->select();
|
|
|
|
$promote_data = [];
|
|
$promote_id = M("promote","tab_")->field("id")->where(['company_id'=>$_REQUEST['company_id']])->select();
|
|
foreach ($promote_id as $key => $value) {
|
|
$promote_data[] = $value['id'];
|
|
$data = M("promote","tab_")->field("id")->where(['chain'=>['like',"/{$value['id']}/"]])->select();
|
|
foreach ($data as $k => $v) {
|
|
$promote_data[] = $v['id'];
|
|
}
|
|
|
|
}
|
|
|
|
if ($promote_data) {
|
|
$map['promote_id'] = ['in',$promote_data];
|
|
}
|
|
|
|
$game_id = array_column($game_id,'id');
|
|
|
|
$map['pay_time'] = ['between',[strtotime($start),strtotime($end)+86399]];
|
|
$map['pay_status'] = 1;
|
|
$map['game_id'] = ['in',$game_id];
|
|
|
|
|
|
if ($_REQUEST['team_leader_id']) {
|
|
$promote_id = M("promote","tab_")->field("id")->where("id = {$_REQUEST['team_leader_id']} or chain like '%/{$_REQUEST['team_leader_id']}/%'")->select();
|
|
$map['promote_id'] = ['in',array_column($promote_id,'id')];
|
|
}
|
|
|
|
if(!empty($_REQUEST['start'])&&empty($_REQUEST['end'])){
|
|
$map['pay_time'] = array('GT',strtotime($_REQUEST['start']));
|
|
unset($_REQUEST['start']);
|
|
}
|
|
if(empty($_REQUEST['start'])&&!empty($_REQUEST['end'])){
|
|
$map['pay_time'] = array('LT',strtotime($_REQUEST['end'])+24*60*60-1);
|
|
unset($_REQUEST['end']);
|
|
}
|
|
if(!empty($_REQUEST['start'])&&!empty($_REQUEST['end'])){
|
|
$map['pay_time'] = array('between',[strtotime($_REQUEST['start']),strtotime($_REQUEST['end'])+24*60*60-1]);
|
|
unset($_REQUEST['start']);unset($_REQUEST['end']);
|
|
}
|
|
if($_REQUEST['pay_order_number']) {
|
|
$map['pay_order_number'] = ['like',"%{$_REQUEST['pay_order_number']}%"];
|
|
}
|
|
|
|
if (!$game_id) {
|
|
$this->error("游戏不存在");
|
|
}
|
|
|
|
$data = M("spend","tab_")
|
|
->where($map)
|
|
->page($page,$row)
|
|
->select();
|
|
// var_dump($data);die();
|
|
|
|
foreach ($data as $key => $value) {
|
|
$data[$key]['pay_time'] = date("Y-m-d H:i:s",$data[$key]['pay_time']);
|
|
if ($value['promote_account'] == "官方渠道") {
|
|
$data[$key]['promote_account'] = "江息网络";
|
|
}
|
|
}
|
|
|
|
$parameter =I('get.');
|
|
$parameter['p']=I('get.p',1);
|
|
$parameter['row']=I('get.row');
|
|
|
|
$count = M("spend","tab_")
|
|
->where($map)
|
|
->count();
|
|
|
|
$page = set_pagination($count,$row,$parameter);
|
|
if($page) {$this->assign('_page', $page);}
|
|
|
|
$this->assign('data',$data);
|
|
|
|
$this->display("withdraworderdetail");
|
|
|
|
}
|
|
|
|
}
|