providers(); foreach ($provider_list as $provider) { $providers[$provider['provider_id']] = $provider; } $info_list = $mod->getProviderInfoList($condition,50,'*','store_id desc'); foreach ($info_list as $key => $value) { $info_list[$key]['provider_name'] = $providers[$value['provider_id']]['name']; $info_list[$key]['store_name'] = $providers[$value['provider_id']]['store_name']; } Tpl::output('provider_list', $providers); Tpl::output('info_list', $info_list); Tpl::output('page', $mod->showpage()); Tpl::showpage('provider.info'); } public function addOp() { if (chksubmit()) { $obj_validate = new Validator(); $obj_validate->validateparam = [ ["input" => $_POST["provider_id"], "require" => "true", "message" => '上游通道不能为空'], ["input" => $_POST["bank_name"], "require" => "true", "message" => '收款银行名称不能为空'], ["input" => $_POST["bank_username"], "require" => "true", "message" => '开户人名称不能为空'], ["input" => $_POST["bank_card_no"], "require" => "true", "message" => '收款卡号不能为空'] ]; $error = $obj_validate->validate(); if ($error != '') { showMessage($error); } else { $provider = Model('')->table('refill_provider,store')->field('store.store_id')->join('inner') ->on('store.store_id=refill_provider.store_id')->where(['refill_provider.provider_id' => $_POST['provider_id']])->find(); $store_id = $provider['store_id']; if(empty($provider)) { showMessage('此上游通道不存在!'); } $mod = Model('provider_info'); $insert_array['store_id'] = $store_id; $insert_array['provider_id'] = $_POST['provider_id']; $insert_array['bank_name'] = $_POST['bank_name']; $insert_array['bank_username'] = $_POST['bank_username']; $insert_array['bank_card_no'] = $_POST['bank_card_no']; $insert_array['admin_url'] = $_POST['admin_url'] ?? ''; $insert_array['admin_name'] = $_POST['admin_name'] ?? ''; $insert_array['admin_pwd'] = $_POST['admin_pwd'] ?? ''; $insert_array['bz'] = $_POST['bz'] ?? ''; $result = $mod->addInfo($insert_array); if ($result) { showMessage('添加成功', 'index.php?act=provider_info&op=index'); } else { showMessage('添加失败'); } } } else { $provider_list = $this->providers(); Tpl::output('provider_list', $provider_list); Tpl::showpage('provider.info.add'); } } public function editOp() { $info_id = $_GET['info_id'] ?? $_POST['info_id']; $mod = Model('provider_info'); $provider_info = $mod->getProviderInfo(['info_id' => $info_id]); if (empty($provider_info)) { showMessage('上游信息不存在'); } if (chksubmit()) { $update['bank_name'] = trim($_POST['bank_name']); $update['bank_username'] = trim($_POST['bank_username']); $update['bank_card_no'] = trim($_POST['bank_card_no']); $update['admin_url'] = trim($_POST['admin_url']); $update['admin_name'] = trim($_POST['admin_name']); $update['admin_pwd'] = trim($_POST['admin_pwd']); $update['bz'] = trim($_POST['bz']); $result = $mod->editProviderInfo($update, ['info_id' => $info_id]); if (!$result) { showMessage('编辑失败'); } showMessage('编辑成功','index.php?act=provider_info&op=index'); } else { Tpl::output('provider_info', $provider_info); Tpl::showpage('provider.info.edit'); } } public function delOp() { $info_id = $_GET['info_id']; $mod = Model('provider_info'); $provider_info = $mod->getProviderInfo(['info_id' => $info_id]); if (empty($provider_info)) { showMessage('上游信息不存在'); } $result = $mod->DelProviderInfo(['info_id' => $info_id]); if (!$result) { showMessage('删除失败'); } showMessage('删除成功','index.php?act=provider_info&op=index'); } public function apply_editOp() { $apply_id = $_GET['apply_id'] ?? $_POST['apply_id']; $mod = Model('provider_evidence'); $provider_evidence_info = $mod->getProviderEvidenceInfo(['apply_id' => $apply_id]); if (empty($provider_evidence_info)) { showMessage('申请信息不存在'); } if (chksubmit()) { if(!empty($_FILES['voucher']['name'])) { $upload = new UploadFile(); $upload->set('default_dir',ATTACH_UPFILE.'/provider'); $result = $upload->upfile('voucher'); if ($result){ $_POST['voucher'] = $upload->file_name; $update['voucher_name'] = $_POST['voucher']; }else { showMessage($upload->error); } } $update['bank_username'] = trim($_POST['bank_username']) ?? ''; $update['bank_name'] = trim($_POST['bank_name']) ?? ''; $update['amount'] = trim($_POST['amount']) ?? ''; $update['to_bank_username'] = trim($_POST['to_bank_username']) ?? ''; $update['to_bank_name'] = trim($_POST['to_bank_name']) ?? ''; $update['apply_time'] = strtotime($_POST['apply_time']) ?? ''; $update['bz'] = $_POST['bz'] ?? ''; $result = $mod->editProviderEvidence($update, ['apply_id' => $apply_id]); if (!$result) { showMessage('编辑失败'); } showMessage('编辑成功','index.php?act=provider_info&op=provider_evidence'); } else { $provider_list = Model('')->table('refill_provider,store') ->field('refill_provider.*,store.store_name') ->join('inner') ->on('store.store_id=refill_provider.store_id') ->limit(1000) ->select(); Tpl::output('provider_list', $provider_list); Tpl::output('info', $provider_evidence_info); Tpl::showpage('provider.evidence.edit'); } } public function apply_delOp() { $apply_id = $_GET['apply_id'] ?? $_POST['apply_id']; $mod = Model('provider_evidence'); $provider_evidence_info = $mod->getProviderEvidenceInfo(['apply_id' => $apply_id]); if (empty($provider_evidence_info)) { showMessage('申请信息不存在'); } $result = $mod->DelProviderEvidence(['apply_id' => $apply_id]); if (!$result) { showMessage('删除失败'); } showMessage('删除成功','index.php?act=provider_info&op=provider_evidence'); } public function get_provider_infoOp() { $provider_id = $_GET['provider_id']; $mod = Model('provider_info'); $provider_info = $mod->getProviderInfoList(['provider_id' => $provider_id]); $to_bank_username = []; $to_bank_name = []; if(!empty($provider_info)) { foreach ($provider_info as $info) { $to_bank_username[] = $info['bank_username']; $to_bank_name[] = $info['bank_name']; } } echo json_encode(['to_bank_username' =>$to_bank_username, 'to_bank_name' => $to_bank_name]); exit; } public function provider_evidenceOp() { $mod = Model('provider_evidence'); $condition = []; if (trim($_GET['store_name']) != '') { $condition['store_name'] = ['like', '%' . $_GET['store_name'] . '%']; } if (trim($_GET['bank_username']) != '') { $condition['bank_username'] = ['like', '%' . $_GET['bank_username'] . '%']; } if (trim($_GET['bank_name']) != '') { $condition['bank_name'] = ['like', '%' . $_GET['bank_name'] . '%']; } $start_unixtime = intval(strtotime($_GET['query_start_time'])); $end_unixtime = intval(strtotime($_GET['query_end_time'])); if ($start_unixtime > 0 && $end_unixtime > $start_unixtime) { $condition['apply_time'] = [['egt', $start_unixtime], ['lt', $end_unixtime], 'and']; } elseif ($start_unixtime > 0) { $condition['apply_time'] = ['egt', $start_unixtime]; } elseif ($end_unixtime > 0) { $condition['apply_time'] = ['lt', $end_unixtime]; } if(!empty($_GET['export'])) { $this->ProviderEvidenceExport($condition); } //上游充值申请列表 $evidence_list = $mod->getProviderEvidence($condition, 30, '*', 'apply_time desc'); $stats = $mod->field('sum(amount) as amounts')->where($condition)->find(); Tpl::output('amounts', $stats['amounts']); Tpl::output('evidence_list', $evidence_list); Tpl::output('page', $mod->showpage()); Tpl::showpage('merchant.provider.evidence_list'); } public function provider_evidence_addOp() { $provider_model = Model('refill_provider'); if (chksubmit()) { $obj_validate = new Validator(); $obj_validate->validateparam = [ ["input" => $_POST["provider_id"], "require" => "true", "message" => '上游通道不能为空'], ["input" => $_POST["bank_username"], "require" => "true", "message" => '开户人姓名不能为空'], ["input" => $_POST["bank_name"], "require" => "true", "message" => '开户银行不能为空'], ["input" => $_POST["to_bank_username"], "require" => "true", "message" => '上游开户人姓名不能为空'], ["input" => $_POST["to_bank_name"], "require" => "true", "message" => '上游开户银行不能为空'], ["input" => $_POST["amount"], "require" => "true", "message" => '预存金额不能为空'], ["input" => $_POST["apply_time"], "require" => "true", "message" => '申请日期不能为空'] ]; $error = $obj_validate->validate(); if ($error != '') { showMessage($error); } $provider_id = $_POST["provider_id"]; $provider_info = $provider_model->table('refill_provider,store') ->where((['provider_id' => $provider_id])) ->field('refill_provider.*,store.store_name') ->join('inner') ->on('store.store_id=refill_provider.store_id') ->find(); if (!$provider_info) { showMessage('对应店铺不存在'); } $amount = $_POST['amount']; $money = abs($amount); if ($money == 0) { showMessage('申请金额错误'); } if(!empty($_FILES['voucher']['name'])) { $upload = new UploadFile(); $upload->set('default_dir',ATTACH_UPFILE.'/provider'); $result = $upload->upfile('voucher'); if ($result){ $_POST['voucher'] = $upload->file_name; $input['voucher_name'] = $_POST['voucher']; }else { showMessage($upload->error); } } $model_store = Model('store'); $store_info = $model_store->getStoreInfo(['store_id'=>$provider_info['store_id']]); $input['store_name'] = $provider_info['store_name']; $input['store_id'] = $provider_info['store_id']; $input['amount'] = $amount; $input['bank_username'] = $_POST['bank_username']; $input['bank_name'] = $_POST['bank_name']; $input['to_bank_username'] = $_POST['to_bank_username']; $input['to_bank_name'] = $_POST['to_bank_name']; $input['add_time'] = time(); $input['bz'] = $_POST['bz']; $input['apply_time'] = strtotime($_POST['apply_time']); try { $mod = Model('provider_evidence'); $trans = new trans_wapper($mod, __METHOD__); $add_evidence_res = $mod->addProviderEvidence($input); $add_money_res = $this->add_money($amount, $store_info['member_id']); if(!$add_evidence_res || !$add_money_res) { $trans->rollback(); showMessage('操作失败'); } $trans->commit(); showMessage('操作成功',"index.php?act=provider_info&op=provider_evidence"); } catch (Exception $e) { $trans->rollback(); showMessage('操作失败!'); } } else { $provider_list = Model('')->table('refill_provider,store') ->field('refill_provider.*,store.store_name') ->join('inner') ->on('store.store_id=refill_provider.store_id') ->limit(1000) ->select(); Tpl::output('provider_list', $provider_list); Tpl::showpage('provider.evidence.add'); } } private function add_money($money, $member_id): bool { $obj_member = Model('member'); $member_id = intval($member_id); $member_info = $obj_member->getMemberInfo(['member_id' => $member_id]); $admininfo = $this->getAdminInfo(); $admin_act = "sys_add_money"; $log_msg = "管理员【" . $admininfo['admin_name'] . "】操作会员【" . $member_info['member_name'] . "】,预存款【增加】,金额为" . $money; $model_pd = Model('predeposit'); //调节预存款 $data = []; $data['member_id'] = $member_info['member_id']; $data['member_name'] = $member_info['member_name']; $data['amount'] = $money; $data['order_sn'] = ''; $data['admin_name'] = $admininfo['name']; $data['pdr_sn'] = ''; $data['lg_desc'] = '管理员上传通道充值申请,更改通道对应会员余额。'; $isRefill = $model_pd->isRefill($data['member_id']); $res = $model_pd->changePd($admin_act, $data,$isRefill); $this->log($log_msg, 1); return $res; } public function importOp() { if(chksubmit()) { $provider_list = Model('')->table('refill_provider,store') ->field('refill_provider.provider_id,store.store_id,store.store_name') ->join('inner') ->on('store.store_id=refill_provider.store_id') ->limit(1000) ->select(); $store = []; foreach ($provider_list as $provider) { $store[$provider['provider_id']] = ['store_id' => $provider['store_id'], 'store_name' => $provider['store_name']]; } if(empty($store)) { showMessage('上游通道为空,不可导入'); } //得到导入文件 $filename = $_FILES['csv']['name']; $tmp_name = $_FILES['csv']['tmp_name']; $extend = strrchr($filename,'.'); $extendLower = strtolower($extend); if (!in_array($extendLower, ['.xls', '.xlsx', '.csv'])) { showMessage('文件格式有误'); } $filePath = BASE_ROOT_PATH . '/data/upload/upfile/provider/'; /** Error reporting */ error_reporting(E_ALL); //注意设置时区 $time=date("m-d-H-i-s");//去当前上传的时间 //根据当前时间外加后五位产生一个 防止多个用户同时操作产生的重复概率 $randnum = 'ProviderEvidenceImport_'.$time.str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT); //上传后的文件名 $name=$randnum.$extendLower; $upload_filename=$filePath.$name;//上传后的文件名地址 $result=move_uploaded_file($tmp_name,$upload_filename); if(!$result){ showMessage('上传失败,稍后再试!'); exit; } $fileType = PHPExcel_IOFactory::identify($upload_filename); $objReader = PHPExcel_IOFactory::createReader($fileType); $objPHPExcel = $objReader->load($upload_filename); $time = time(); $mod = Model('provider_evidence'); foreach ($objPHPExcel->getWorkSheetIterator() as $sheet) { foreach ($sheet->getRowIterator() as $row) { $index = $row->getRowIndex(); if ($index == 1) continue; $items = []; foreach ($row->getCellIterator() as $cell) { $data = $cell->getValue(); $items[] = $data; } $provider_id = intval($items[0]); $params = [ 'store_id' => $store[$provider_id]['store_id'], 'store_name' => $store[$provider_id]['store_name'], 'amount' => $items[1] ?? '', 'bank_username' => trim($items[2]) ?? '', 'bank_name' => trim($items[3]) ?? '', 'to_bank_username' => trim($items[4]) ?? '', 'to_bank_name' => trim($items[5]) ?? '', 'apply_time' => strtotime($items[6]) ?? '', 'add_time' => $time ]; if(!empty($items[7])) { $params['bz'] = $items[7]; } $json_txt = json_encode($params); Log::record("import data: {$json_txt}",LOG::DEBUG); if(empty($params['store_id']) || empty($params['store_name'])) { Log::record("provider evidence import err,not find store info, provider_id: {$provider_id}, amount: {$params['amount']}",LOG::DEBUG); } $res = $mod->addProviderEvidence($params); if(!$res){ Log::record("provider evidence import err, provider_id: {$provider_id}, amount: {$params['amount']}",LOG::DEBUG); } } } showMessage('操作完成'); exit; } else { Tpl::showpage('provider.evidence.import'); } } private function ProviderEvidenceExport($condition) { $i = 0; $result = []; while (true) { $start = $i * 1000; $evidence_list = Model('')->table('provider_evidence')->where($condition)->order('apply_time desc')->limit("{$start},1000")->select(); if (empty($evidence_list)) { break; } $i++; foreach ($evidence_list as $value) { $result[] = $value; } } $this->createExcel($result); } private function createExcel($data = array()) { Language::read('export'); import('libraries.excel'); $excel_obj = new Excel(); $excel_data = array(); //设置样式 $excel_obj->setStyle(array('id' => 's_title', 'Font' => array('FontName' => '宋体', 'Size' => '12', 'Bold' => '1'))); //header $excel_data[0][] = array('styleid' => 's_title', 'data' => '通道名称'); $excel_data[0][] = array('styleid' => 's_title', 'data' => '申请金额'); $excel_data[0][] = array('styleid' => 's_title', 'data' => '转账银行开户人姓名'); $excel_data[0][] = array('styleid' => 's_title', 'data' => '转账银行名称'); $excel_data[0][] = array('styleid' => 's_title', 'data' => '上游收款银行开户人姓名'); $excel_data[0][] = array('styleid' => 's_title', 'data' => '上游收款银行名称'); $excel_data[0][] = array('styleid' => 's_title', 'data' => '申请日期'); $excel_data[0][] = array('styleid' => 's_title', 'data' => '备注'); //data foreach ((array)$data as $v) { $tmp = array(); $tmp[] = array('data' => $v['store_name']); $tmp[] = array('data' => $v['amount']); $tmp[] = array('data' => $v['bank_username']); $tmp[] = array('data' => $v['bank_name']); $tmp[] = array('data' => $v['to_bank_username']); $tmp[] = array('data' => $v['to_bank_name']); $tmp[] = array('data' => date('Y-m-d H:i:s', $v['apply_time'])); $tmp[] = array('data' => $v['bz']); $excel_data[] = $tmp; } $excel_data = $excel_obj->charset($excel_data, CHARSET); $excel_obj->addArray($excel_data); $excel_obj->addWorksheet($excel_obj->charset(L('exp_od_order'), CHARSET)); $excel_obj->generateXML($excel_obj->charset(L('exp_od_order'), CHARSET) . date('Y-m-d-H', time())); exit; } }