|
|
|
@ -5,9 +5,12 @@ class FinanceCompareController extends ThinkController
|
|
|
|
|
public $zfb = [1];//官方支付宝渠道id
|
|
|
|
|
public $wx = [2,3];//微信渠道id
|
|
|
|
|
public $ybzf = [17];//易宝渠道id
|
|
|
|
|
public $erro_size = 2000;//错误阈值,到达就不执行
|
|
|
|
|
public $page_size = 10;//每次执行比较的数量
|
|
|
|
|
|
|
|
|
|
public function add()
|
|
|
|
|
{
|
|
|
|
|
$this->assign("page_size",$this->page_size);
|
|
|
|
|
$this->display();
|
|
|
|
|
# code...
|
|
|
|
|
}
|
|
|
|
@ -40,9 +43,9 @@ class FinanceCompareController extends ThinkController
|
|
|
|
|
foreach($data as $k=>$v){
|
|
|
|
|
$pay_where = substr($v[$keys[0]], 0, 2);
|
|
|
|
|
$tmp = [
|
|
|
|
|
"pt_pay_amount"=>$v[$keys[1]],
|
|
|
|
|
"pt_pay_amount"=>0,
|
|
|
|
|
"diff_money"=>$v[$keys[1]],
|
|
|
|
|
"sj_pay_amount"=>0,
|
|
|
|
|
"sj_pay_amount"=>$v[$keys[1]],
|
|
|
|
|
"type"=>3,
|
|
|
|
|
"pay_order_number"=>$v[$keys[0]],
|
|
|
|
|
"compare_id"=>$compare_id,
|
|
|
|
@ -50,10 +53,13 @@ class FinanceCompareController extends ThinkController
|
|
|
|
|
"is_read"=>0
|
|
|
|
|
];
|
|
|
|
|
if($pay_where == 'SP'){
|
|
|
|
|
$tmp['order_type']=1;
|
|
|
|
|
$sp[$v[$keys[0]]] = $tmp;
|
|
|
|
|
}elseif($pay_where == 'PF'){
|
|
|
|
|
$tmp['order_type']=2;
|
|
|
|
|
$pf[$v[$keys[0]]] = $tmp;
|
|
|
|
|
}else{
|
|
|
|
|
$tmp['order_type']=0;
|
|
|
|
|
$er[$v[$keys[0]]] = $tmp;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -65,43 +71,183 @@ class FinanceCompareController extends ThinkController
|
|
|
|
|
if($sres){
|
|
|
|
|
$this->setDiffData($sres,$sp);
|
|
|
|
|
}
|
|
|
|
|
$saveres = $this->saveCheckData($sp);
|
|
|
|
|
if($saveres == false){
|
|
|
|
|
$this->ajaxReturn(array("error"=>"添加失败","code"=>40001));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//判断平台币流水
|
|
|
|
|
if(count($pf) > 0){
|
|
|
|
|
$keys = implode(",",array_keys($pf));
|
|
|
|
|
$where = ["pay_order_number"=>["in",$keys]];
|
|
|
|
|
$sres = M("Deposit","tab_")->field("pay_order_number,pay_amount,pay_status,pay_way")->where($where)->select();
|
|
|
|
|
if($sres){
|
|
|
|
|
$this->setDiffData($sres,$pf);
|
|
|
|
|
}
|
|
|
|
|
$saveres = $this->saveCheckData($pf);
|
|
|
|
|
if($saveres == false){
|
|
|
|
|
$this->ajaxReturn(array("error"=>"添加失败","code"=>40002));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//不存在订单添加
|
|
|
|
|
if(count($er) > 0){
|
|
|
|
|
$saveerrores = $this->saveCheckData($er);
|
|
|
|
|
if($saveerrores == false){
|
|
|
|
|
$this->ajaxReturn(array("error"=>"添加失败","code"=>40003));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dd($sres);
|
|
|
|
|
$this->ajaxReturn(array("success"=>"ok","code"=>0,"data"=>[]));
|
|
|
|
|
}
|
|
|
|
|
protected function setDiffData($dbres,$ydata)
|
|
|
|
|
/**
|
|
|
|
|
* 验证平台游戏流水
|
|
|
|
|
*/
|
|
|
|
|
public function checkSpendData()
|
|
|
|
|
{
|
|
|
|
|
$checkdata = I('POST.');
|
|
|
|
|
if ($checkdata['pay_way'] == 1) {
|
|
|
|
|
$check_arr = $this->zfb;
|
|
|
|
|
}elseif($checkdata['pay_way'] == 2){
|
|
|
|
|
$check_arr = $this->wx;
|
|
|
|
|
}elseif($checkdata['pay_way'] == 3){
|
|
|
|
|
$check_arr = $this->ybzf;
|
|
|
|
|
}
|
|
|
|
|
$check_arr = implode(",",$check_arr);
|
|
|
|
|
//组件sql
|
|
|
|
|
$fmap = [
|
|
|
|
|
"compare_id"=>$checkdata['compare_id'],
|
|
|
|
|
"order_type"=>1
|
|
|
|
|
];
|
|
|
|
|
$fcisql = M("finance_compare_info","tab_")->field("pay_order_number")->where($fmap)->select(false);
|
|
|
|
|
$map = [
|
|
|
|
|
"pay_order_number"=>["not in",$fcisql],
|
|
|
|
|
"pay_time" => ['between', [strtotime($checkdata['begin_time']), strtotime($checkdata['end_time']) + 86399]],
|
|
|
|
|
"pay_status"=>1,
|
|
|
|
|
"pay_way"=>["in",$check_arr]
|
|
|
|
|
];
|
|
|
|
|
$res = M("Spend","tab_")->field("pay_order_number,pay_amount,pay_status,pay_way")->where($map)->limit($this->erro_size)->select();
|
|
|
|
|
if(count($res) >= $this->erro_size){
|
|
|
|
|
$this->ajaxReturn(array("error"=>"数据差别相差大于{$this->erro_size}条,没有比较的意义,请确认表格的渠道和时间是否正确","code"=>40004));
|
|
|
|
|
}
|
|
|
|
|
$saveres = true;
|
|
|
|
|
if(count($res) > 0){
|
|
|
|
|
$add = [];
|
|
|
|
|
foreach($res as $k=>$v){
|
|
|
|
|
$tmp = [
|
|
|
|
|
"pt_pay_amount"=>$v["pay_amount"],
|
|
|
|
|
"diff_money"=>$v["pay_amount"],
|
|
|
|
|
"sj_pay_amount"=>0,
|
|
|
|
|
"type"=>2,
|
|
|
|
|
"pay_order_number"=>$v["pay_order_number"],
|
|
|
|
|
"compare_id"=>$checkdata['compare_id'],
|
|
|
|
|
"pay_way"=>$checkdata['pay_way'],
|
|
|
|
|
"order_type"=>1,
|
|
|
|
|
"is_read"=>0
|
|
|
|
|
];
|
|
|
|
|
$add[] = $tmp;
|
|
|
|
|
}
|
|
|
|
|
unset($res);
|
|
|
|
|
$saveres = M("finance_compare_info","tab_")->addAll($add);
|
|
|
|
|
}
|
|
|
|
|
if($saveres){
|
|
|
|
|
$this->ajaxReturn(array("success"=>"ok","code"=>0,"data"=>[]));
|
|
|
|
|
}else{
|
|
|
|
|
$this->ajaxReturn(array("error"=>"比对数据添加失败","code"=>40005));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 验证平台币流水
|
|
|
|
|
*/
|
|
|
|
|
public function checkDepositData()
|
|
|
|
|
{
|
|
|
|
|
$checkdata = I('POST.');
|
|
|
|
|
if ($checkdata['pay_way'] == 1) {
|
|
|
|
|
$check_arr = $this->zfb;
|
|
|
|
|
}elseif($checkdata['pay_way'] == 2){
|
|
|
|
|
$check_arr = $this->wx;
|
|
|
|
|
}elseif($checkdata['pay_way'] == 3){
|
|
|
|
|
$check_arr = $this->ybzf;
|
|
|
|
|
}
|
|
|
|
|
$check_arr = implode(",",$check_arr);
|
|
|
|
|
//组件sql
|
|
|
|
|
$fmap = [
|
|
|
|
|
"compare_id"=>$checkdata['compare_id'],
|
|
|
|
|
"order_type"=>2
|
|
|
|
|
];
|
|
|
|
|
$fcisql = M("finance_compare_info","tab_")->field("pay_order_number")->where($fmap)->select(false);
|
|
|
|
|
$map = [
|
|
|
|
|
"pay_order_number"=>["not in",$fcisql],
|
|
|
|
|
"create_time" => ['between', [strtotime($checkdata['begin_time']), strtotime($checkdata['end_time']) + 86399]],
|
|
|
|
|
"pay_status"=>1,
|
|
|
|
|
"pay_way"=>["in",$check_arr]
|
|
|
|
|
];
|
|
|
|
|
$res = M("Deposit","tab_")->field("pay_order_number,pay_amount,pay_status,pay_way")->where($map)->select();
|
|
|
|
|
if(count($res) > 10000){
|
|
|
|
|
$this->ajaxReturn(array("error"=>"数据差别相差大于10000条,没有比较的意义,请确认表格的渠道和时间是否正确","code"=>40004));
|
|
|
|
|
}
|
|
|
|
|
$saveres = true;
|
|
|
|
|
if(count($res) > 0){
|
|
|
|
|
$add = [];
|
|
|
|
|
foreach($res as $k=>$v){
|
|
|
|
|
$tmp = [
|
|
|
|
|
"pt_pay_amount"=>$v["pay_amount"],
|
|
|
|
|
"diff_money"=>$v["pay_amount"],
|
|
|
|
|
"sj_pay_amount"=>0,
|
|
|
|
|
"type"=>2,
|
|
|
|
|
"pay_order_number"=>$v["pay_order_number"],
|
|
|
|
|
"compare_id"=>$checkdata['compare_id'],
|
|
|
|
|
"pay_way"=>$checkdata['pay_way'],
|
|
|
|
|
"order_type"=>2,
|
|
|
|
|
"is_read"=>0
|
|
|
|
|
];
|
|
|
|
|
$add[] = $tmp;
|
|
|
|
|
}
|
|
|
|
|
unset($res);
|
|
|
|
|
$saveres = M("finance_compare_info","tab_")->addAll($add);
|
|
|
|
|
}
|
|
|
|
|
if($saveres){
|
|
|
|
|
$this->ajaxReturn(array("success"=>"ok","code"=>0,"data"=>[]));
|
|
|
|
|
}else{
|
|
|
|
|
$this->ajaxReturn(array("error"=>"比对数据添加失败","code"=>40005));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//比较数据库与原数据
|
|
|
|
|
protected function setDiffData($dbres,&$ydata)
|
|
|
|
|
{
|
|
|
|
|
//type 1:金额不符 2:商家数据缺失 3:平台数据缺失 4:状态不符;5:渠道不符
|
|
|
|
|
foreach ($dbres as $k => $v) {
|
|
|
|
|
if(array_key_exists($v['pay_order_number'],$ydata)){
|
|
|
|
|
//存在
|
|
|
|
|
$flag = true;
|
|
|
|
|
$ydata[$v['pay_order_number']]['sj_pay_amount'] = $v['pay_amount'];
|
|
|
|
|
$ydata[$v['pay_order_number']]['pt_pay_amount'] = $v['pay_amount'];
|
|
|
|
|
$ydata[$v['pay_order_number']]['diff_money'] = abs($ydata[$v['pay_order_number']]['pt_pay_amount']-$v['pay_amount']);
|
|
|
|
|
|
|
|
|
|
if($ydata[$v['pay_order_number']]['sj_pay_amount'] != $v['pay_amount']){//金额不符
|
|
|
|
|
$ydata[$v['pay_order_number']]['type'] = 1;
|
|
|
|
|
$flag = false;
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if($v['pay_status'] != 1){//状态不符合
|
|
|
|
|
$ydata[$v['pay_order_number']]['type'] = 4;
|
|
|
|
|
$ydata[$v['pay_order_number']]['diff_money'] = $v['pay_amount'];
|
|
|
|
|
$flag = false;
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
//判断渠道
|
|
|
|
|
$way = $ydata[$v['pay_order_number']]['pay_way'];
|
|
|
|
|
if ($way == 1) {
|
|
|
|
|
$checkarr = $this->$zfb;
|
|
|
|
|
$checkarr = $this->zfb;
|
|
|
|
|
}elseif($way == 2){
|
|
|
|
|
$checkarr = $this->$wx;
|
|
|
|
|
$checkarr = $this->wx;
|
|
|
|
|
}elseif($way == 3){
|
|
|
|
|
$checkarr = $this->$ybzf;
|
|
|
|
|
$checkarr = $this->ybzf;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(!in_array($way,$checkarr)){//渠道不符
|
|
|
|
|
$ydata[$v['pay_order_number']]['type'] = 5;
|
|
|
|
|
$flag = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if($ydata[$v['pay_order_number']]['pt_pay_amount'] != $v['pay_amount']){//金额不符
|
|
|
|
|
$ydata[$v['pay_order_number']]['type'] = 1;
|
|
|
|
|
$flag = false;
|
|
|
|
|
}
|
|
|
|
|
if($v['pay_status'] != 1){//状态不符合
|
|
|
|
|
$ydata[$v['pay_order_number']]['type'] = 4;
|
|
|
|
|
$ydata[$v['pay_order_number']]['diff_money'] = $v['pay_amount'];
|
|
|
|
|
$flag = false;
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if($flag){
|
|
|
|
@ -109,6 +255,16 @@ class FinanceCompareController extends ThinkController
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
dd($ydata);
|
|
|
|
|
}
|
|
|
|
|
//添加详情
|
|
|
|
|
protected function saveCheckData(&$data){
|
|
|
|
|
$arr = [];
|
|
|
|
|
foreach ($data as $k => $v) {
|
|
|
|
|
$arr[] = $v;
|
|
|
|
|
}
|
|
|
|
|
unset($data);
|
|
|
|
|
$res = M("finance_compare_info","tab_")->addAll($arr);
|
|
|
|
|
unset($arr);
|
|
|
|
|
return $res;
|
|
|
|
|
}
|
|
|
|
|
}
|