|
@@ -0,0 +1,392 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+class refill_companyControl extends SystemControl
|
|
|
+{
|
|
|
+ public function __construct()
|
|
|
+ {
|
|
|
+ parent::__construct();
|
|
|
+ }
|
|
|
+
|
|
|
+ public function indexOp()
|
|
|
+ {
|
|
|
+ $cond = [];
|
|
|
+ $company_mod = Model('refill_company');
|
|
|
+ if(!empty($_GET['co_name'])) {
|
|
|
+ $cond['co_name'] = ['like', '%'.$_GET['co_name'].'%'];
|
|
|
+ }
|
|
|
+ if(!empty($_GET['co_type'])) {
|
|
|
+ $cond['params'] = $_GET['co_type'];
|
|
|
+ }
|
|
|
+ if(!empty($_GET['opened'])) {
|
|
|
+ $cond['opened'] = $_GET['opened'];
|
|
|
+ }
|
|
|
+ $list = $company_mod->getCompanyList($cond);
|
|
|
+
|
|
|
+ Tpl::output('list', $list);
|
|
|
+ Tpl::output('show_page', $company_mod->showpage());
|
|
|
+ Tpl::showpage('refill.company');
|
|
|
+ }
|
|
|
+
|
|
|
+ public function changeStateOp()
|
|
|
+ {
|
|
|
+ $co_id = intval($_GET['co_id']);
|
|
|
+ $opened = intval($_GET['opened']);
|
|
|
+ $company_mod = Model('refill_company');
|
|
|
+ $company_info = $company_mod->getCompanyInfo(['co_id' => $co_id]);
|
|
|
+ if (empty($company_info) || !in_array($opened, [1, 2])) {
|
|
|
+ showMessage('操作成功');
|
|
|
+ }
|
|
|
+ $resp = $company_mod->editCompany(['opened' => $opened], ['co_id' => $co_id]);
|
|
|
+ if (!$resp) {
|
|
|
+ showMessage('操作失败', 'index.php?act=refill_company&op=index', 'html', 'error');
|
|
|
+ }
|
|
|
+ showMessage('操作成功');
|
|
|
+ }
|
|
|
+
|
|
|
+ public function addOp()
|
|
|
+ {
|
|
|
+ $company_mod = Model('refill_company');
|
|
|
+ if (chksubmit())
|
|
|
+ {
|
|
|
+ $obj_validate = new Validator();
|
|
|
+ $obj_validate->validateparam = [
|
|
|
+ ["input" => $_POST["co_type"], "require" => "true", "message" => '必须选择公司类型'],
|
|
|
+ ["input" => $_POST["co_name"], "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 {
|
|
|
+ $insert_array['co_name'] = $_POST['co_name'];
|
|
|
+ $insert_array['co_type'] = $_POST['co_type'];
|
|
|
+ $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['max_debt'] = $_POST['max_debt'] ?? 0;
|
|
|
+ $insert_array['province'] = $_POST['province'] ?? '';
|
|
|
+ $insert_array['city'] = $_POST['city'] ?? '';
|
|
|
+ $insert_array['bank_code'] = $_POST['bank_code'] ?? '';
|
|
|
+ $insert_array['remark'] = $_POST['remark'] ?? '';
|
|
|
+ $insert_array['oper_time'] = time();
|
|
|
+ $co_id = $company_mod->addCompany($insert_array);
|
|
|
+ if ($co_id) {
|
|
|
+ $cid = $_POST['cid'] ?? '';
|
|
|
+ $this->co_id_bind($cid, $co_id, $insert_array['co_type']);
|
|
|
+ showMessage('添加成功', 'index.php?act=refill_company&op=index');
|
|
|
+ } else {
|
|
|
+ showMessage('添加失败');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ Tpl::showpage('refill.company.add');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public function editOp()
|
|
|
+ {
|
|
|
+ $co_id = $_GET['co_id'] ?? $_POST['co_id'];
|
|
|
+ $company_mod = Model('refill_company');
|
|
|
+ $company_info = $company_mod->getCompanyInfo(['co_id' => $co_id]);
|
|
|
+ if (empty($company_info)) {
|
|
|
+ showMessage('公司信息不存在');
|
|
|
+ }
|
|
|
+ if (chksubmit()) {
|
|
|
+ $update['co_type'] = $_POST['co_type'];
|
|
|
+ $update['bank_name'] = trim($_POST['bank_name']);
|
|
|
+ $update['bank_username'] = trim($_POST['bank_username']);
|
|
|
+ $update['bank_card_no'] = trim($_POST['bank_card_no']);
|
|
|
+ $update['max_debt'] = trim($_POST['max_debt']);
|
|
|
+ $update['province'] = trim($_POST['province']);
|
|
|
+ $update['city'] = trim($_POST['city']);
|
|
|
+ $update['bank_code'] = trim($_POST['bank_code']);
|
|
|
+ $update['remark'] = trim($_POST['remark']);
|
|
|
+ $update['oper_time'] = time();
|
|
|
+
|
|
|
+ $result = $company_mod->editCompany($update, ['co_id' => $co_id]);
|
|
|
+ if (!$result) {
|
|
|
+ showMessage('编辑失败');
|
|
|
+ }
|
|
|
+ $cid = $_POST['cid'] ?? '';
|
|
|
+ $this->co_id_bind($cid, $co_id, $company_info['co_type']);
|
|
|
+ showMessage('编辑成功','index.php?act=refill_company&op=index');
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ $cid = [];
|
|
|
+ if($company_info['co_type'] == 'merchant') {
|
|
|
+ $cid = Model('')->table('merchant')->where(['co_id' => $co_id])->field('mchid')->select();
|
|
|
+ $cid = array_column($cid, 'mchid');
|
|
|
+ }elseif ($company_info['co_type'] == 'provider') {
|
|
|
+ $cid = Model('')->table('refill_provider')->where(['co_id' => $co_id])->field('provider_id')->select();
|
|
|
+ $cid = array_column($cid, 'provider_id');
|
|
|
+ }
|
|
|
+ Tpl::output('cid', implode(',', $cid));
|
|
|
+ Tpl::output('company_info', $company_info);
|
|
|
+ Tpl::showpage('refill.company.edit');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private function co_id_bind($cid, $co_id, $co_type)
|
|
|
+ {
|
|
|
+ if(!empty($cid)) {
|
|
|
+ $cid = explode(',', $cid);
|
|
|
+ if($co_type == 'merchant'){
|
|
|
+ $cond['mchid'] = ['in', $cid];
|
|
|
+ Model('')->table('merchant')->where(['co_id' => $co_id])->update(['co_id' => 0]);
|
|
|
+ Model('')->table('merchant')->where($cond)->update(['co_id' => $co_id]);
|
|
|
+ }elseif ($co_type == 'provider'){
|
|
|
+ $cond['provider_id'] = ['in', $cid];
|
|
|
+ Model('')->table('refill_provider')->where(['co_id' => $co_id])->update(['co_id' => 0]);
|
|
|
+ Model('')->table('refill_provider')->where($cond)->update(['co_id' => $co_id]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public function remit_cfgOp()
|
|
|
+ {
|
|
|
+ if(chksubmit())
|
|
|
+ {
|
|
|
+ unset($_POST['form_submit']);
|
|
|
+ $cache = [];
|
|
|
+ foreach ($_POST as $key => $value) {
|
|
|
+ $cache[$key] = $value;
|
|
|
+ }
|
|
|
+ wcache('remit', ['cfg' => serialize($cache)], 'refill-');
|
|
|
+ showMessage('编辑成功');
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ $config = rcache('remit', 'refill-');
|
|
|
+ if (empty($config)) {
|
|
|
+ $config = [];
|
|
|
+ } else {
|
|
|
+ $config = unserialize($config['cfg']);
|
|
|
+ }
|
|
|
+ Tpl::output('config', $config);
|
|
|
+ Tpl::showpage('remit.config');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public function remit_recordOp()
|
|
|
+ {
|
|
|
+ $mod_remit = Model('refill_company_remit');
|
|
|
+ $cond = [];
|
|
|
+ $start_unixtime = intval(strtotime($_GET['query_start_time']));
|
|
|
+ $end_unixtime = intval(strtotime($_GET['query_end_time']));
|
|
|
+ if ($start_unixtime > 0 && $end_unixtime > $start_unixtime) {
|
|
|
+ $cond['add_time'] = [['egt', $start_unixtime], ['lt', $end_unixtime], 'and'];
|
|
|
+ } elseif ($start_unixtime > 0) {
|
|
|
+ $cond['add_time'] = ['egt', $start_unixtime];
|
|
|
+ } elseif ($end_unixtime > 0) {
|
|
|
+ $cond['add_time'] = ['lt', $end_unixtime];
|
|
|
+ }
|
|
|
+ $list = $mod_remit->getRemitList($cond);
|
|
|
+ foreach ($list as $key => $value)
|
|
|
+ {
|
|
|
+ $list[$key]['amount'] = number_format($value['amount'],4,'.',',');
|
|
|
+ }
|
|
|
+ $refill_company = $this->refill_companys([]);
|
|
|
+
|
|
|
+ Tpl::output('list', $list);
|
|
|
+ Tpl::output('refill_company', $refill_company);
|
|
|
+ Tpl::output('show_page', $mod_remit->showpage());
|
|
|
+ Tpl::showpage('refill.company.remit');
|
|
|
+ }
|
|
|
+
|
|
|
+ public function remit_editOp()
|
|
|
+ {
|
|
|
+ $remit_id = $_GET['remit_id'] ?? $_POST['remit_id'];
|
|
|
+ $remit = $this->check_remit($remit_id);
|
|
|
+ $params = json_decode($remit['params'], true);
|
|
|
+ $provider_list = $this->providers();
|
|
|
+ foreach ($provider_list as $provider) {
|
|
|
+ $providers[$provider['provider_id']] = $provider;
|
|
|
+ }
|
|
|
+ $refill_company = $this->refill_companys(['co_type' => refill_companyModel::co_type_provider]);
|
|
|
+ if(chksubmit())
|
|
|
+ {
|
|
|
+ $remits = $_POST['remits'];
|
|
|
+ $strs = $_POST['strs'];
|
|
|
+ $operation = $_POST['operation'];
|
|
|
+ $remit_total = 0;
|
|
|
+ foreach ($strs as $key => $str)
|
|
|
+ {
|
|
|
+ $remit = $remits[$key];
|
|
|
+ if(empty($remit)) continue;
|
|
|
+ $item = explode('-', $str);
|
|
|
+ $co_id = $item[0];
|
|
|
+ $pid = $item[1];
|
|
|
+ $data[$co_id][$pid] = $remit;
|
|
|
+ $remit_total += $remit;
|
|
|
+ }
|
|
|
+ if(empty($data)) {
|
|
|
+ showMessage('未提交数据');
|
|
|
+ }
|
|
|
+ $remit_record = [
|
|
|
+ 'amount' => $remit_total,
|
|
|
+ 'params' => json_encode($data),
|
|
|
+ 'operation' => $operation,
|
|
|
+ 'oper_time' => time()
|
|
|
+ ];
|
|
|
+ Model('refill_company_remit')->editRemit($remit_record, ['remit_id' => $remit_id]);
|
|
|
+ showMessage('操作成功', 'index.php?act=refill_company&op=remit_record');
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ foreach ($params as $co_id => $item)
|
|
|
+ {
|
|
|
+ $data = [];
|
|
|
+ $data['co_name'] = $refill_company[$co_id]['co_name'];
|
|
|
+ foreach ($item as $pid => $remit_money)
|
|
|
+ {
|
|
|
+ $providers[$pid]['remit'] = $remit_money;
|
|
|
+ $data['providers'][] = $providers[$pid];
|
|
|
+ }
|
|
|
+ $result[] = $data;
|
|
|
+ }
|
|
|
+ Tpl::output('remit_data', $result);
|
|
|
+ Tpl::output('remit', $remit);
|
|
|
+ Tpl::showpage('provider.remit.edit');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public function remit_commitOp()
|
|
|
+ {
|
|
|
+ $mod = Model('refill_company_remit');
|
|
|
+
|
|
|
+ $remit_id = $_GET['remit_id'];
|
|
|
+ $remit = $this->check_remit($remit_id);
|
|
|
+ $params = json_decode($remit['params'], true);
|
|
|
+ $provider_list = $this->providers();
|
|
|
+ foreach ($provider_list as $provider) {
|
|
|
+ $providers[$provider['provider_id']] = $provider;
|
|
|
+ }
|
|
|
+ $bz = '批量打款';
|
|
|
+
|
|
|
+ foreach ($params as $item)
|
|
|
+ {
|
|
|
+ try {
|
|
|
+ $trans = new trans_wapper($mod, __METHOD__);
|
|
|
+ $remit_total = 0;
|
|
|
+ foreach ($item as $pid => $money)
|
|
|
+ {
|
|
|
+ $amount_data = [
|
|
|
+ 'pointsnum' => $money,
|
|
|
+ 'operation' => $remit['operation'],
|
|
|
+ 'bz' => $bz
|
|
|
+ ];
|
|
|
+ $this->credit_save_money($money, 'add', $providers[$pid]['account_id'], $bz);
|
|
|
+ $this->ct_provider_amount($amount_data, $providers[$pid]);
|
|
|
+ $remit_total += $money;
|
|
|
+ }
|
|
|
+ $trans->commit();
|
|
|
+ } catch (Exception $e) {
|
|
|
+ $trans->rollback();
|
|
|
+ Log::record("remit_commit err: {$e->getMessage()}", Log::ERR);
|
|
|
+ showMessage('提交失败');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $mod->editRemit(['remit_state' => refill_company_remitModel::remit_have], ['remit_id' => $remit_id]);
|
|
|
+ showMessage('操作成功!');
|
|
|
+ }
|
|
|
+
|
|
|
+ private function ct_provider_amount($params, $provider_info)
|
|
|
+ {
|
|
|
+ $input['provider_id'] = $provider_info['provider_id'];
|
|
|
+ $input['memeber_id'] = $provider_info['account_id'];
|
|
|
+ $input['amount'] = $params['pointsnum'];
|
|
|
+ $input['operation'] = $params['operation'];
|
|
|
+ $input['add_time'] = time();
|
|
|
+ $input['bz'] = $params['bz'] ?? '';
|
|
|
+
|
|
|
+ return Model('provider_amount')->addAmount($input);
|
|
|
+ }
|
|
|
+
|
|
|
+ private function check_remit($remit_id)
|
|
|
+ {
|
|
|
+ $remit = Model('refill_company_remit')->getRemit($remit_id);
|
|
|
+ if(empty($remit)) {
|
|
|
+ showMessage('记录不存在');
|
|
|
+ }
|
|
|
+ return $remit;
|
|
|
+ }
|
|
|
+
|
|
|
+ public function remit_exportOp()
|
|
|
+ {
|
|
|
+ $remit_id = $_GET['remit_id'];
|
|
|
+ $remit = $this->check_remit($remit_id);
|
|
|
+ $params = json_decode($remit['params']);
|
|
|
+ $remit_cfg = $this->remit_cfg();
|
|
|
+ $remit_max = intval($remit_cfg['remit_max']);
|
|
|
+ $refill_company = $this->refill_companys(['co_type' => refill_companyModel::co_type_provider]);
|
|
|
+
|
|
|
+ foreach ($params as $co_id => $item)
|
|
|
+ {
|
|
|
+ $remit_total = 0;
|
|
|
+ foreach ($item as $money)
|
|
|
+ {
|
|
|
+ $remit_total += $money;
|
|
|
+ }
|
|
|
+ if( $remit_total < $remit_max) {
|
|
|
+ $refill_company[$co_id]['money'] = $remit_total;
|
|
|
+ $remit_data[] = $refill_company[$co_id];
|
|
|
+ }else{
|
|
|
+ for ( $i = $remit_total / $remit_max; $i>=0; --$i)
|
|
|
+ {
|
|
|
+ if($i < 1) {
|
|
|
+ $refill_company[$co_id]['money'] = $remit_total % $remit_max;
|
|
|
+ } else {
|
|
|
+ $refill_company[$co_id]['money'] = $remit_max;
|
|
|
+ }
|
|
|
+ $remit_data[] = $refill_company[$co_id];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $this->Export_file($remit['title'], $remit_data);
|
|
|
+ }
|
|
|
+
|
|
|
+ private function Export_file($file_name, $remit_data)
|
|
|
+ {
|
|
|
+ Language::read('export');
|
|
|
+ import('libraries.excel');
|
|
|
+ $excel_obj = new Excel();
|
|
|
+ $excel_data = [];
|
|
|
+ //设置样式
|
|
|
+ $excel_obj->setStyle(['id' => 's_title', 'Font' => ['FontName' => '宋体', 'Size' => '12', 'Bold' => '1']]);
|
|
|
+ //header
|
|
|
+ $excel_data[0][] = ['styleid' => 's_title', 'data' => '序号'];
|
|
|
+ $excel_data[0][] = ['styleid' => 's_title', 'data' => '收款人姓名'];
|
|
|
+ $excel_data[0][] = ['styleid' => 's_title', 'data' => '银行卡号'];
|
|
|
+ $excel_data[0][] = ['styleid' => 's_title', 'data' => '银行编码'];
|
|
|
+ $excel_data[0][] = ['styleid' => 's_title', 'data' => '省/直辖市'];
|
|
|
+ $excel_data[0][] = ['styleid' => 's_title', 'data' => '城市'];
|
|
|
+ $excel_data[0][] = ['styleid' => 's_title', 'data' => '开户行名称'];
|
|
|
+ $excel_data[0][] = ['styleid' => 's_title', 'data' => '付款金额'];
|
|
|
+ $excel_data[0][] = ['styleid' => 's_title', 'data' => '0(对私付款)/1(对公付款)'];
|
|
|
+
|
|
|
+ //data
|
|
|
+ foreach ($remit_data as $key => $data) {
|
|
|
+ if($data['money'] <= 0) continue;
|
|
|
+ $tmp = [];
|
|
|
+ $tmp[] = ['data' => $key+1];
|
|
|
+ $tmp[] = ['data' => $data['bank_username']];
|
|
|
+ $tmp[] = ['data' => $data['bank_card_no']];
|
|
|
+ $tmp[] = ['data' => $data['bank_code']];
|
|
|
+ $tmp[] = ['data' => $data['province']];
|
|
|
+ $tmp[] = ['data' => $data['city']];
|
|
|
+ $tmp[] = ['data' => $data['bank_name']];
|
|
|
+ $tmp[] = ['data' => $data['money']];
|
|
|
+ $tmp[] = ['data' => 1];
|
|
|
+ $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($file_name);
|
|
|
+ }
|
|
|
+}
|