|
|
|
|
<?php
|
|
|
|
|
namespace Admin\Controller;
|
|
|
|
|
class FinanceCompareController extends ThinkController
|
|
|
|
|
{
|
|
|
|
|
public $zfb = [1];//官方支付宝渠道id
|
|
|
|
|
public $wx = [2,3];//微信渠道id
|
|
|
|
|
public $ybzf = [17];//易宝渠道id
|
|
|
|
|
public $erro_size = 20000;//商家不存在的错误阈值,到达就不执行
|
|
|
|
|
public $page_size = 300;//每次执行比较的数量
|
|
|
|
|
public $payway = [
|
|
|
|
|
"1"=>"支付宝",
|
|
|
|
|
"2"=>"微信",
|
|
|
|
|
"3"=>"易宝"
|
|
|
|
|
];
|
|
|
|
|
public $checktype=[
|
|
|
|
|
"1"=>"金额不符",
|
|
|
|
|
"2"=>"商家数据缺失",
|
|
|
|
|
"3"=>"平台数据缺失",
|
|
|
|
|
"4"=>"状态不符",
|
|
|
|
|
"5"=>"渠道不符"
|
|
|
|
|
];
|
|
|
|
|
public $readtype=[
|
|
|
|
|
"0"=>"未处理",
|
|
|
|
|
"1"=>"已处理"
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
public function index($p=1)
|
|
|
|
|
{
|
|
|
|
|
$page = intval($p);
|
|
|
|
|
$page = $page ? $page : 1; //默认显示第一页数据
|
|
|
|
|
$arraypage = $page;
|
|
|
|
|
|
|
|
|
|
if (isset($_REQUEST['row'])) {
|
|
|
|
|
$row = $_REQUEST['row'];
|
|
|
|
|
} else {
|
|
|
|
|
$row = 10;
|
|
|
|
|
}
|
|
|
|
|
$map=["check_status"=>1];
|
|
|
|
|
if ($_REQUEST['pay_way'] != '') {
|
|
|
|
|
$map['pay_way'] = $_REQUEST['pay_way'];
|
|
|
|
|
}
|
|
|
|
|
$listdata = M("finance_compare","tab_")->where($map)->order("create_time desc");
|
|
|
|
|
if(isset($_REQUEST['export'])){
|
|
|
|
|
$listdata = $listdata->select();
|
|
|
|
|
$count = M("finance_compare","tab_")->where($map)->count();
|
|
|
|
|
}else{
|
|
|
|
|
$listdata = $listdata->page($page,$row)->select();
|
|
|
|
|
$count = count($listdata);
|
|
|
|
|
}
|
|
|
|
|
foreach ($listdata as $k => &$v) {
|
|
|
|
|
|
|
|
|
|
$v['begin_time']=date("Y-m-d H:i:s",$v['begin_time']);
|
|
|
|
|
$v['end_time']=date("Y-m-d H:i:s",$v['end_time']);
|
|
|
|
|
$v['compare_time'] = $v['begin_time']." 至 ".$v['end_time'];
|
|
|
|
|
$v['create_time']=date("Y-m-d H:i:s",$v['create_time']);
|
|
|
|
|
$v['pay_way']=$this->payway[$v['pay_way']];
|
|
|
|
|
}
|
|
|
|
|
if(isset($_REQUEST['export'])){
|
|
|
|
|
$GetData = $_GET;
|
|
|
|
|
unset($GetData['export']);
|
|
|
|
|
addOperationLog(['op_type'=>3,'key'=>getNowDate(),'url'=>U(CONTROLLER_NAME.'/'.ACTION_NAME,$GetData),'menu'=>"统计-数据校验-订单校验-导出"]);
|
|
|
|
|
|
|
|
|
|
data2csv($listdata,'订单校验',array(
|
|
|
|
|
"id"=>"序号",
|
|
|
|
|
"compare_time"=>"校验时间范围",
|
|
|
|
|
"pay_way"=>"支付渠道",
|
|
|
|
|
"check_count"=>"校验数量",
|
|
|
|
|
"diff_count"=>"异常数量",
|
|
|
|
|
"diff_money"=>"异常金额",
|
|
|
|
|
"create_time"=>"校验时间"
|
|
|
|
|
));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$this->checkListOrCountAuthRestMap($map,[]);
|
|
|
|
|
|
|
|
|
|
$page = set_pagination($count,$row);
|
|
|
|
|
if($page) {$this->assign('_page', $page);}
|
|
|
|
|
$this->assign('list_data',$listdata);
|
|
|
|
|
$this->assign('pay_way_list',$this->payway);
|
|
|
|
|
$this->display();
|
|
|
|
|
}
|
|
|
|
|
public function add()
|
|
|
|
|
{
|
|
|
|
|
$this->assign("page_size",$this->page_size);
|
|
|
|
|
$this->display();
|
|
|
|
|
}
|
|
|
|
|
public function list($p=1)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
$page = intval($p);
|
|
|
|
|
$page = $page ? $page : 1; //默认显示第一页数据
|
|
|
|
|
$arraypage = $page;
|
|
|
|
|
|
|
|
|
|
if (isset($_REQUEST['row'])) {
|
|
|
|
|
$row = $_REQUEST['row'];
|
|
|
|
|
} else {
|
|
|
|
|
$row = 10;
|
|
|
|
|
}
|
|
|
|
|
if (isset($_REQUEST['compare_id'])) {
|
|
|
|
|
$compare_id = $_REQUEST['compare_id'];
|
|
|
|
|
}else{
|
|
|
|
|
$this->error("参数错误");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$map=["type"=>["gt",0],"compare_id"=>$compare_id];
|
|
|
|
|
|
|
|
|
|
if ($_REQUEST['pay_order_number'] != '') {
|
|
|
|
|
$map['pay_order_number'] = $_REQUEST['pay_order_number'];
|
|
|
|
|
}
|
|
|
|
|
if ($_REQUEST['is_read'] != '') {
|
|
|
|
|
$map['is_read'] = $_REQUEST['is_read'];
|
|
|
|
|
}
|
|
|
|
|
if ($_REQUEST['type'] != '') {
|
|
|
|
|
$map['type'] = $_REQUEST['type'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$listdata = M("finance_compare_info","tab_")->where($map);
|
|
|
|
|
if(isset($_REQUEST['export'])){
|
|
|
|
|
$listdata = $listdata->select();
|
|
|
|
|
}else{
|
|
|
|
|
$listdata = $listdata->page($page,$row)->select();
|
|
|
|
|
}
|
|
|
|
|
foreach ($listdata as $k => &$v) {
|
|
|
|
|
$v['pay_way']=$this->payway[$v['pay_way']];
|
|
|
|
|
$v['type']=$this->checktype[$v['type']];
|
|
|
|
|
$v['read_str']=$this->readtype[$v['is_read']];
|
|
|
|
|
}
|
|
|
|
|
if(isset($_REQUEST['export'])){
|
|
|
|
|
$GetData = $_GET;
|
|
|
|
|
unset($GetData['export']);
|
|
|
|
|
addOperationLog(['op_type'=>3,'key'=>getNowDate(),'url'=>U(CONTROLLER_NAME.'/'.ACTION_NAME,$GetData),'menu'=>"统计-数据校验-订单校验-订单校验详情-导出"]);
|
|
|
|
|
|
|
|
|
|
data2csv($listdata,'订单校验详情',array(
|
|
|
|
|
"pay_order_number"=>"订单号",
|
|
|
|
|
"pay_way"=>"支付渠道",
|
|
|
|
|
"read_str"=>"状态",
|
|
|
|
|
"pt_pay_amount"=>"平台支付金额",
|
|
|
|
|
"sj_pay_amount"=>"商家订单金额",
|
|
|
|
|
"diff_money"=>"相差金额",
|
|
|
|
|
"type"=>"原因分类"
|
|
|
|
|
));
|
|
|
|
|
}
|
|
|
|
|
$count = M("finance_compare_info","tab_")
|
|
|
|
|
->field("count(*) count,
|
|
|
|
|
SUM(CASE WHEN is_read = 0 THEN pt_pay_amount ELSE 0 END) as noread_pt_pay_amount,
|
|
|
|
|
SUM(CASE WHEN is_read = 0 THEN sj_pay_amount ELSE 0 END) as noread_sj_pay_amount,
|
|
|
|
|
SUM(CASE WHEN is_read = 0 THEN diff_money ELSE 0 END) as noread_diff_money,
|
|
|
|
|
SUM(pt_pay_amount) pt_pay_amount,
|
|
|
|
|
SUM(sj_pay_amount) sj_pay_amount,
|
|
|
|
|
SUM(diff_money) diff_money")
|
|
|
|
|
->where($map)
|
|
|
|
|
->find();
|
|
|
|
|
$page = set_pagination($count['count'],$row);
|
|
|
|
|
if($page) {$this->assign('_page', $page);}
|
|
|
|
|
$this->assign('list_data',$listdata);
|
|
|
|
|
$this->assign('count_data',$count);
|
|
|
|
|
$this->assign('read_type',$this->readtype);
|
|
|
|
|
$this->assign('check_type',$this->checktype);
|
|
|
|
|
$this->display();
|
|
|
|
|
}
|
|
|
|
|
public function changeRead()
|
|
|
|
|
{
|
|
|
|
|
if (isset($_REQUEST['id']) && isset($_REQUEST['is_read']) && isset($_REQUEST['compare_id'])) {
|
|
|
|
|
$id = $_REQUEST['id'];
|
|
|
|
|
$is_read = $_REQUEST['is_read'];
|
|
|
|
|
$compare_id = $_REQUEST['compare_id'];
|
|
|
|
|
}else{
|
|
|
|
|
$this->error("参数错误");
|
|
|
|
|
}
|
|
|
|
|
//处理数据
|
|
|
|
|
$info = M("finance_compare_info","tab_")->where("id={$id}")->find();
|
|
|
|
|
if($info['is_read'] != $is_read){
|
|
|
|
|
$this->ajaxReturn(array("error"=>"此单已标记成功请勿重复点击","code"=>40001));
|
|
|
|
|
}
|
|
|
|
|
//获取
|
|
|
|
|
$fc = M("finance_compare","tab_")->where("id={$compare_id}")->find();
|
|
|
|
|
if($is_read == 0){
|
|
|
|
|
//改为已处理
|
|
|
|
|
$fcsavedata = [
|
|
|
|
|
"diff_count"=>$fc['diff_count']-1,
|
|
|
|
|
"diff_money"=>$fc['diff_money']-$info['diff_money'],
|
|
|
|
|
];
|
|
|
|
|
$isavedata = [
|
|
|
|
|
"is_read"=>1
|
|
|
|
|
];
|
|
|
|
|
}else{
|
|
|
|
|
//改为未处理
|
|
|
|
|
$fcsavedata = [
|
|
|
|
|
"diff_count"=>$fc['diff_count']-0+1,
|
|
|
|
|
"diff_money"=>$fc['diff_money']-0+$info['diff_money'],
|
|
|
|
|
];
|
|
|
|
|
$isavedata = [
|
|
|
|
|
"is_read"=>0
|
|
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
//保存
|
|
|
|
|
M("finance_compare","tab_")->where("id={$compare_id}")->save($fcsavedata);
|
|
|
|
|
M("finance_compare_info","tab_")->where("id={$id}")->save($isavedata);
|
|
|
|
|
$this->ajaxReturn(array("success"=>"处理成功","code"=>0));
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 创建比较基础数据
|
|
|
|
|
*/
|
|
|
|
|
public function creatCompare()
|
|
|
|
|
{
|
|
|
|
|
$adddata = I("post.");
|
|
|
|
|
|
|
|
|
|
$adddata['create_time'] = time();
|
|
|
|
|
$adddata['begin_time'] = strtotime($adddata['begin_time']);
|
|
|
|
|
$adddata['end_time'] = strtotime($adddata['end_time'])+ 86399;
|
|
|
|
|
|
|
|
|
|
$res = M("finance_compare","tab_")->add($adddata);
|
|
|
|
|
if($res){
|
|
|
|
|
$this->ajaxReturn(array("success"=>"ok","code"=>0,"data"=>["id"=>$res]));
|
|
|
|
|
}else{
|
|
|
|
|
$this->ajaxReturn(array("error"=>"creat error","code"=>4000));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 循环比较数据
|
|
|
|
|
*/
|
|
|
|
|
public function compareData()
|
|
|
|
|
{
|
|
|
|
|
$checkdata = I('POST.');
|
|
|
|
|
$keys = $checkdata['keys'];
|
|
|
|
|
$compare_id = $checkdata['compare_id'];
|
|
|
|
|
$pay_way = $checkdata['pay_way'];//1支付宝 2微信 17易宝
|
|
|
|
|
$data = $checkdata['checkarr'];
|
|
|
|
|
//过滤数据
|
|
|
|
|
$sp=[];
|
|
|
|
|
$pf=[];
|
|
|
|
|
$er=[];
|
|
|
|
|
foreach($data as $k=>$v){
|
|
|
|
|
$v[$keys[0]] = trim($v[$keys[0]]);
|
|
|
|
|
$v[$keys[1]] = trim($v[$keys[1]]);
|
|
|
|
|
|
|
|
|
|
$pay_where = substr($v[$keys[0]], 0, 2);
|
|
|
|
|
$tmp = [
|
|
|
|
|
"pt_pay_amount"=>0,
|
|
|
|
|
"diff_money"=>$v[$keys[1]],
|
|
|
|
|
"sj_pay_amount"=>$v[$keys[1]],
|
|
|
|
|
"type"=>3,
|
|
|
|
|
"pay_order_number"=>$v[$keys[0]],
|
|
|
|
|
"compare_id"=>$compare_id,
|
|
|
|
|
"pay_way"=>$pay_way,
|
|
|
|
|
"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;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//判断游戏流水
|
|
|
|
|
if(count($sp) > 0){
|
|
|
|
|
$keys = implode(",",array_keys($sp));
|
|
|
|
|
$where = ["pay_order_number"=>["in",$keys]];
|
|
|
|
|
$sres = M("Spend","tab_")->field("pay_order_number,pay_amount,pay_status,pay_way")->where($where)->select();
|
|
|
|
|
if($sres){
|
|
|
|
|
$this->setDiffData($sres,$sp);
|
|
|
|
|
}
|
|
|
|
|
$saveres = $this->saveCheckData($sp);
|
|
|
|
|
if($saveres == false){
|
|
|
|
|
$this->delCompare($compare_id);
|
|
|
|
|
$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->delCompare($compare_id);
|
|
|
|
|
$this->ajaxReturn(array("error"=>"添加失败","code"=>40002));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//不存在订单添加
|
|
|
|
|
if(count($er) > 0){
|
|
|
|
|
$saveerrores = $this->saveCheckData($er);
|
|
|
|
|
if($saveerrores == false){
|
|
|
|
|
$this->delCompare($compare_id);
|
|
|
|
|
$this->ajaxReturn(array("error"=>"添加失败","code"=>40003));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$this->ajaxReturn(array("success"=>"ok","code"=>0,"data"=>[]));
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 验证平台游戏流水
|
|
|
|
|
*/
|
|
|
|
|
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
|
|
|
|
|
];
|
|
|
|
|
//改为join
|
|
|
|
|
|
|
|
|
|
$fcisql = M("finance_compare_info","tab_")->field("pay_order_number,compare_id")->where($fmap)->select(false);
|
|
|
|
|
$map = [
|
|
|
|
|
// "pay_order_number"=>["not in",$fcisql],
|
|
|
|
|
"s.pay_time" => ['between', [strtotime($checkdata['begin_time']), strtotime($checkdata['end_time']) + 86399]],
|
|
|
|
|
"s.pay_status"=>1,
|
|
|
|
|
"s.pay_way"=>["in",$check_arr]
|
|
|
|
|
];
|
|
|
|
|
$res = M("Spend s","tab_")
|
|
|
|
|
->field("s.pay_order_number,s.pay_amount,s.pay_status,s.pay_way,ifnull(fc.compare_id,0) compare_id")
|
|
|
|
|
->join("( $fcisql ) fc on s.pay_order_number = fc.pay_order_number","left")
|
|
|
|
|
->where($map)
|
|
|
|
|
->having("compare_id = 0")
|
|
|
|
|
->limit($this->erro_size)
|
|
|
|
|
->select();
|
|
|
|
|
if(count($res) >= $this->erro_size){
|
|
|
|
|
$this->delCompare($checkdata['compare_id']);
|
|
|
|
|
$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->delCompare($checkdata['compare_id']);
|
|
|
|
|
$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,compare_id")->where($fmap)->select(false);
|
|
|
|
|
$map = [
|
|
|
|
|
"create_time" => ['between', [strtotime($checkdata['begin_time']), strtotime($checkdata['end_time']) + 86399]],
|
|
|
|
|
"pay_status"=>1,
|
|
|
|
|
"pay_way"=>["in",$check_arr]
|
|
|
|
|
];
|
|
|
|
|
$res = M("Deposit s","tab_")
|
|
|
|
|
->field("s.pay_order_number,s.pay_amount,s.pay_status,s.pay_way,ifnull(fc.compare_id,0) compare_id")
|
|
|
|
|
->join("( $fcisql ) fc on s.pay_order_number = fc.pay_order_number","left")
|
|
|
|
|
->where($map)
|
|
|
|
|
->having("compare_id = 0")
|
|
|
|
|
->limit($this->erro_size)
|
|
|
|
|
->select();
|
|
|
|
|
if(count($res) >= $this->erro_size){
|
|
|
|
|
$this->delCompare($checkdata['compare_id']);
|
|
|
|
|
$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"=>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->delCompare($checkdata['compare_id']);
|
|
|
|
|
$this->ajaxReturn(array("error"=>"比对数据添加失败","code"=>40005));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 生成最终比较统计
|
|
|
|
|
*/
|
|
|
|
|
public function creatCompareCount()
|
|
|
|
|
{
|
|
|
|
|
$checkdata = I('POST.');
|
|
|
|
|
$compare_id = $checkdata['compare_id'];
|
|
|
|
|
//统计
|
|
|
|
|
$imap = [
|
|
|
|
|
"compare_id"=>$compare_id,
|
|
|
|
|
"type"=>["gt",0]
|
|
|
|
|
];
|
|
|
|
|
$ires = M("finance_compare_info","tab_")->field("IFNULL(sum(diff_money),0) diff_money,IFNULL(count(*),0) count")->where($imap)->find();
|
|
|
|
|
$savedata = [
|
|
|
|
|
"diff_count"=>$ires['count'],
|
|
|
|
|
"diff_money"=>$ires['diff_money'],
|
|
|
|
|
"check_status"=>1
|
|
|
|
|
];
|
|
|
|
|
$res = M("finance_compare","tab_")->where("id='{$compare_id}'")->save($savedata);
|
|
|
|
|
if($res){
|
|
|
|
|
$this->ajaxReturn(array("success"=>"ok","code"=>0,"data"=>[]));
|
|
|
|
|
}else{
|
|
|
|
|
$this->delCompare($compare_id);
|
|
|
|
|
$this->ajaxReturn(array("error"=>"save error","code"=>40006));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
//比较数据库与原数据
|
|
|
|
|
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']]['pt_pay_amount'] = $v['pay_amount'];
|
|
|
|
|
$ydata[$v['pay_order_number']]['diff_money'] = abs($ydata[$v['pay_order_number']]['pt_pay_amount']-$ydata[$v['pay_order_number']]['sj_pay_amount']);
|
|
|
|
|
|
|
|
|
|
if($ydata[$v['pay_order_number']]['diff_money'] > 0){//金额不符
|
|
|
|
|
$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;
|
|
|
|
|
}elseif($way == 2){
|
|
|
|
|
$checkarr = $this->wx;
|
|
|
|
|
}elseif($way == 3){
|
|
|
|
|
$checkarr = $this->ybzf;
|
|
|
|
|
}
|
|
|
|
|
if(!in_array($v['pay_way'],$checkarr)){//渠道不符
|
|
|
|
|
$ydata[$v['pay_order_number']]['type'] = 5;
|
|
|
|
|
$flag = false;
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if($flag){//正常
|
|
|
|
|
$ydata[$v['pay_order_number']]['type'] = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//添加详情
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
//回退删除
|
|
|
|
|
protected function delCompare($compare_id){
|
|
|
|
|
|
|
|
|
|
M("finance_compare_info","tab_")->where("compare_id = '{$compare_id}'")->delete();
|
|
|
|
|
M("finance_compare","tab_")->where("id = '{$compare_id}'")->delete();
|
|
|
|
|
}
|
|
|
|
|
}
|