diff --git a/Application/Admin/Controller/PresidentDepositController.class.php b/Application/Admin/Controller/PresidentDepositController.class.php index e0ae9920f..4fc4d139d 100644 --- a/Application/Admin/Controller/PresidentDepositController.class.php +++ b/Application/Admin/Controller/PresidentDepositController.class.php @@ -23,7 +23,7 @@ class PresidentDepositController extends ThinkController '_string' => '1=1', 'company_belong' => ['in', [1, 2]] ]; - if ($companyId != '') { + if ($companyId != 0) { $where['id'] = $companyId; } if ($companyType !== '') { @@ -43,7 +43,6 @@ class PresidentDepositController extends ThinkController $depositWhere['status'] = $status; } } - if (I('pay_confirm_time_start', '') != '') { $depositStrWhere .= ' and pay_confirm_time>=' . strtotime(I('pay_confirm_time_start') . ' 00:00:00'); } @@ -65,6 +64,7 @@ class PresidentDepositController extends ThinkController $depositStrWhere .= ' and pay_accept_time<=' . strtotime(I('pay_accept_time_end') . ' 23:59:59'); } + $depositWhere['_string'] = $depositStrWhere; if ($payType !== '') { $depositWhere['pay_type'] = $payType; } @@ -83,7 +83,7 @@ class PresidentDepositController extends ThinkController $companies = []; if (I('export', 0) == 1 || $row == 'all') { $companies = $query->select(); - $count = count($promotes); + $count = count($companies); } else { $countQuery = clone $query; $companies = $query->page($page, $row)->select(); @@ -92,7 +92,10 @@ class PresidentDepositController extends ThinkController // 汇总金额 if (count($companies) > 0 || (isset($count) && $count > 0)) { - $total = M('president_deposit', 'tab_')->where(['promote_id'=>['in', $totalQuery->getField('id', true)]])->field('sum(amount) as totalAmount, sum(if(status = 1, amount, 0)) as confirmedAmount, sum(if(status = 2, amount, 0)) as refundedAmount')->find(); + $total = M('president_deposit', 'tab_') + ->field('sum(amount) as totalAmount, sum(if(status = 1, amount, 0)) as confirmedAmount, sum(if(status = 2, amount, 0)) as refundedAmount') + ->where(['company_id'=>['in', $totalQuery->getField('id', true)]]) + ->find(); $total = [ 'totalamount' => $total['totalamount'] ?? 0, 'confirmedamount' => $total['confirmedamount'] ?? 0, 'refundedamount' => $total['refundedamount'] ?? 0 ]; @@ -121,8 +124,8 @@ class PresidentDepositController extends ThinkController 'company_name' => $company['company_name'], 'company_belong_text' => $companyTypes[$company['company_belong']], ]; - if ($promote['presidentDeposit']) { - $presidentDeposit = $promote['presidentDeposit']; + if ($company['presidentDeposit']) { + $presidentDeposit = $company['presidentDeposit']; if ($presidentDeposit['pay_type'] == PresidentDepositService::PAY_TYPE_NONE) { $record['payer'] = '--'; $record['pay_account'] = '--'; @@ -228,11 +231,11 @@ class PresidentDepositController extends ThinkController { $this->meta_title = '编辑会长押金'; $id = I('id', 0); - $promote = M('promote', 'tab_')->field(['account', 'id'])->where(['id' => $id])->find(); - $record = M('president_deposit', 'tab_')->where(['promote_id' => $id])->find(); + $company = M('promote_company', 'tab_')->field(['company_name', 'id'])->where(['id' => $id])->find(); + $record = M('president_deposit', 'tab_')->where(['company_id' => $id])->find(); $this->assign('payWays', PresidentDepositService::$payWays); $this->assign('payTypes', PresidentDepositService::$payTypes); - $this->assign('promote', $promote); + $this->assign('company', $company); $this->assign('record', $record); $this->display('form'); } @@ -241,133 +244,26 @@ class PresidentDepositController extends ThinkController { $this->meta_title = '查看会长押金'; $id = I('id', 0); - $promote = M('promote', 'tab_')->field(['account', 'id'])->where(['id' => $id])->find(); - $record = M('president_deposit', 'tab_')->where(['promote_id' => $id])->find(); + $company = M('promote_company', 'tab_')->field(['company_name', 'id'])->where(['id' => $id])->find(); + $record = M('president_deposit', 'tab_')->where(['company_id' => $id])->find(); $this->assign('payWays', PresidentDepositService::$payWays); $this->assign('payTypes', PresidentDepositService::$payTypes); - $this->assign('promote', $promote); + $this->assign('company', $company); $this->assign('record', $record); $this->display('show'); } public function save() { - $payWay = I('pay_way', 0); - $payType = I('pay_type', 0); - $promoteId = I('id', 0); - $payAccount = I('pay_account', ''); - $amount = I('amount', ''); - $payer = I('payer', ''); - $payAcceptTime = I('pay_accept_time', 0) ? strtotime(I('pay_accept_time')): 0; - $refundTime = I('refund_time', 0) ? strtotime(I('refund_time')): 0; - - - - $record = M('president_deposit', 'tab_')->where(['promote_id' => $promoteId])->find(); - - $promoteData = M('promote', 'tab_')->field('account')->where(['id' => $promoteId])->find(); - - // 市场部门无法操作押金退款和收到时间 - if ((($record['pay_accept_time'] != $payAcceptTime) || ($record['refund_time'] != $refundTime)) && isMarketAdmin()) { - return $this->error('无法操作记录'); + $params = I('post.'); + try { + $record = M('president_deposit', 'tab_')->where(['company_id' => $id])->find(); + $service = new PresidentDepositService(); + $service->save($params); + $this->success('保存成功'); + } catch (\Exception $e) { + $this->error($e->getMessage()); } - - if ($payType == 0) { - return $this->error('请选择押金付款方式'); - } - if ($payType == 3) { - $this->handleNoDeposit($promoteId); - return $this->success('保存成功', U('records')); - } - if ($payType != 2 && $payWay == 0) { - return $this->error('请选择付款方式'); - } - - if (!$record) { - if ($amount !== '') { - if (!is_numeric($amount)) { - return $this->error('请输入正确金额'); - } - if ($amount <= 0) { - return $this->error('金额必须大于0'); - } - if ($amount > 100000000) { - return $this->error('金额过高'); - } - } - - $data = []; - - // 填写押金到账时间后自动变为押金已确认到账状态,并且状态在待确认时候 - if ($record['pay_accept_time'] != $payAcceptTime && $record['status'] == 0) { - $data = ['status' => 1, - 'pay_confirm_time' => time()]; - } - - $data['pay_way'] = $payType == 2 ? 4 : $payWay; - $data['pay_type'] = $payType; - $data['promote_id'] = $promoteId; - $data['pay_account'] = $payAccount; - $data['amount'] = floatval($amount); - $data['payer'] = $payer; - $data['create_time'] = time(); - $data['update_time'] = time(); - $data['pay_accept_time'] = $payAcceptTime; - $data['refund_time'] = $refundTime; - - M('president_deposit', 'tab_')->add($data); - - addOperationLog(['op_type'=>0,'key'=>$promoteData['account'].'/'.$amount,'op_name'=>'新增会长押金','url'=>U('PresidentDeposit/edit',['id'=>$promoteId]),'menu'=>'推广员-结算单管理-奖罚记录管理-新增会长押金']); - return $this->success('保存成功', U('records')); - } - - /* if ($record['status'] != 0) { - return $this->error('该状态下不可编辑/修改'); - } */ - - if ($amount === '') { - return $this->error('请输入金额'); - } - if (!is_numeric($amount)) { - return $this->error('请输入正确金额'); - } - if ($amount <= 0) { - return $this->error('金额必须大于0'); - } - if ($amount > 100000000) { - return $this->error('金额过高'); - } - /* if ($payer == '') { - return $this->error('请输入付款人'); - } - if ($payAccount == '') { - return $this->error('请输入付款账号'); - } */ - - $data = []; - - // 切换类型 - if ($payType != $record['pay_type']) { - $payStatus = 0; - $data['refund_time'] = $data['pay_accept_time'] = $data['pay_confirm_time'] = 0; - } else { - $data['pay_accept_time'] = $payAcceptTime; - $data['refund_time'] = $refundTime; - } - - $data['pay_way'] = $payType == 2 ? 4 : $payWay; - $data['pay_type'] = $payType; - $data['pay_account'] = $payAccount; - $data['amount'] = floatval($amount); - $data['status'] = $payStatus ?? $record['status']; - $data['payer'] = $payer; - $data['update_time'] = time(); - - M('president_deposit', 'tab_')->where(['promote_id' => $promoteId])->save($data); - - addOperationLog(['op_type'=>1,'key'=>$promoteData['account'].'/'.$amount,'op_name'=>'编辑会长押金','url'=>U('PresidentDeposit/edit',['id'=>$promoteId]),'menu'=>'推广员-结算单管理-会长押金管理-编辑会长押金']); - - return $this->success('保存成功', U('records')); } public function delete() @@ -389,163 +285,65 @@ class PresidentDepositController extends ThinkController ]); } - /** - * 处理无需押金 - */ - public function handleNoDeposit($promoteId) - { - $record = M('president_deposit', 'tab_')->where(['promote_id' => $promoteId])->find(); - - $data = []; - $data['pay_way'] = 0; - $data['pay_type'] = PresidentDepositService::PAY_TYPE_NONE; - $data['pay_account'] = ''; - $data['amount'] = 0; - $data['payer'] = ''; - $data['status'] = 1; - $data['pay_confirm_time'] = time(); - $data['create_time'] = time(); - $data['update_time'] = time(); - $data['status'] = 1; - $data['pay_accept_time'] = $data['refund_time'] = 0; - $data['promote_id'] = $promoteId; - - if (!$record) { - M('president_deposit', 'tab_')->add($data); - } else { - M('president_deposit', 'tab_')->where(['promote_id' => $promoteId])->save($data); - } - - $promoteData = M('promote', 'tab_')->field('account')->where(['id' => $promoteId])->find(); - addOperationLog(['op_type'=>1,'key'=>$promoteData['account'],'op_name'=>'编辑无需押金','url'=>U('PresidentDeposit/records'),'menu'=>'推广员-结算单管理-会长押金管理-无需押金']); - } - public function noDeposit() { - $promoteId = I('id', 0); - $this->handleNoDeposit($promoteId); - $this->ajaxReturn([ - 'status' => 1, - 'message' => '操作成功' - ]); - } - - public function refund() - { - if (isMarketAdmin()) { - return $this->error('无法操作记录'); - } - $promoteIds = I('ids', []); - if (count($promoteIds) == 0) { + $id = I('id', 0); + $company = M('promote_company', 'tab_')->where(['id' => $id])->find(); + if (is_null($company)) { $this->ajaxReturn([ 'status' => 0, - 'message' => '无选中项' + 'message' => '推广公司不存在' ]); } - - $checkStatus = true; - $records = M('president_deposit', 'tab_')->field(['id', 'status'])->where(['promote_id' => ['in', $promoteIds]])->select(); - foreach ($records as $record) { - if ($record['status'] != 1) { - $checkStatus = false; - break; - } - } - if (!$checkStatus) { + try { + $record = M('president_deposit', 'tab_')->where(['company_id' => $id])->find(); + $service = new PresidentDepositService(); + $service->handleNoDeposit($company, $record); + $this->ajaxReturn([ + 'status' => 1, + 'message' => '操作成功' + ]); + } catch (\Exception $e) { $this->ajaxReturn([ 'status' => 0, - 'message' => '含有非已到账状态记录,不可批量操作' + 'message' => $e->getMessage() ]); } - - $promoteData = M('promote','tab_') - ->field('account,amount') - ->join('left join tab_president_deposit on tab_president_deposit.promote_id=tab_promote.id') - ->where(['tab_promote.id'=>['in', $promoteIds]]) - ->select(); - -// dump($promoteData);die(); - - foreach ($promoteData as $key => $value) { - if ($value['amount']) { - addOperationLog(['op_type'=>1,'key'=>$value['account'].'/'.$value['amount'],'op_name'=>'编辑押金已退款','url'=>U('PresidentDeposit/records'),'menu'=>'推广员-结算单管理-会长押金管理-押金已退款']); - } - - } - - M('president_deposit', 'tab_')->where(['promote_id' => ['in', $promoteIds]])->save([ - 'status' => 2, - 'refund_time' => time(), - 'update_time' => time(), - 'pay_accept_time' => 0 - ]); - $this->ajaxReturn([ - 'status' => 1, - 'message' => '操作成功' - ]); } - public function payConfirm() + public function refund() { - if (isMarketAdmin()) { + $ids = I('ids', []); + try { + $service = new PresidentDepositService(); + $service->batchRefund($ids); $this->ajaxReturn([ - 'status' => 0, - 'message' => '无权限操作记录' + 'status' => 1, + 'message' => '操作成功' ]); - } - $promoteIds = I('ids', []); - if (count($promoteIds) == 0) { + } catch (\Exception $e) { $this->ajaxReturn([ 'status' => 0, - 'message' => '无选中项' + 'message' => $e->getMessage() ]); } - $checkStatus = true; - $records = M('president_deposit', 'tab_')->where(['promote_id' => ['in', $promoteIds]])->select(); - foreach ($records as $record) { - if ($record['status'] != 0) { - $checkStatus = false; - break; - } - // 如果不是无需押金,并且没有填写收到押金时间 - // if ($record['pay_type'] != PresidentDepositService::PAY_TYPE_NONE && empty($record['pay_accept_time'])) { - // $this->ajaxReturn([ - // 'status' => 0, - // 'message' => '含有待确认收到押金时间记录,不可批量操作' - // ]); - // } - } - if (!$checkStatus) { + } + + public function payConfirm() + { + $ids = I('ids', []); + try { + $service = new PresidentDepositService(); + $service->batchPayConfirm($ids); + $this->ajaxReturn([ + 'status' => 1, + 'message' => '操作成功' + ]); + } catch (\Exception $e) { $this->ajaxReturn([ 'status' => 0, - 'message' => '含有非待确认状态记录,不可批量操作' + 'message' => $e->getMessage() ]); } - - $promoteData = M('promote','tab_') - ->field('account,amount') - ->join('left join tab_president_deposit on tab_president_deposit.promote_id=tab_promote.id') - ->where(['tab_promote.id'=>['in', $promoteIds]]) - ->select(); - -// dump($promoteData);die(); - - foreach ($promoteData as $key => $value) { - if ($value['amount']) { - addOperationLog(['op_type'=>1,'key'=>$value['account'].'/'.$value['amount'],'op_name'=>'编辑确认押金到账','url'=>U('PresidentDeposit/records'),'menu'=>'推广员-结算单管理-会长押金管理-确认押金到账']); - } - - } - - M('president_deposit', 'tab_')->where(['promote_id' => ['in', $promoteIds]])->save([ - 'status' => 1, - 'pay_confirm_time' => time(), - 'update_time' => time(), - 'pay_accept_time' => strtotime(I('accept_time')) - ]); - $this->ajaxReturn([ - 'status' => 1, - 'message' => '操作成功' - ]); } } diff --git a/Application/Admin/Controller/PromoteCompanyController.class.php b/Application/Admin/Controller/PromoteCompanyController.class.php index 8c9b3e8cc..a169f52e0 100644 --- a/Application/Admin/Controller/PromoteCompanyController.class.php +++ b/Application/Admin/Controller/PromoteCompanyController.class.php @@ -402,7 +402,6 @@ class PromoteCompanyController extends ThinkController 'info' => $e->getMessage() )); } - $save['create_time'] = $time; $save['turnover_ratio'] = $this->setTurnoverRatio($save); $res = D("PromoteCompanyVerify")->add_db($save); diff --git a/Application/Admin/View/PresidentDeposit/form.html b/Application/Admin/View/PresidentDeposit/form.html index b6a496a7a..3bf23e540 100644 --- a/Application/Admin/View/PresidentDeposit/form.html +++ b/Application/Admin/View/PresidentDeposit/form.html @@ -82,9 +82,9 @@ - + @@ -148,7 +148,7 @@
*会长账号:*推广公司: - {$promote.account} + {$company.company_name}
- +
- - +
diff --git a/Application/Admin/View/PresidentDeposit/show.html b/Application/Admin/View/PresidentDeposit/show.html index 3389fd62c..38094e376 100644 --- a/Application/Admin/View/PresidentDeposit/show.html +++ b/Application/Admin/View/PresidentDeposit/show.html @@ -81,9 +81,9 @@ - + @@ -94,6 +94,7 @@ + +
会长账号:推广公司: - {$promote.account} + {$company.company_name}
付款方式: @@ -136,6 +137,7 @@
diff --git a/Application/Base/Service/PresidentDepositService.class.php b/Application/Base/Service/PresidentDepositService.class.php index 592e940a6..f2cb9d733 100644 --- a/Application/Base/Service/PresidentDepositService.class.php +++ b/Application/Base/Service/PresidentDepositService.class.php @@ -62,8 +62,9 @@ class PresidentDepositService } } - public function save($params, $company) + public function save($params, $company = null) { + $companyId = $params['company_id'] ?? 0; $payWay = $params['pay_way'] ?? 0; $payType = $params['pay_type'] ?? 0; $payAccount = $params['pay_account'] ?? ''; @@ -75,17 +76,25 @@ class PresidentDepositService $payAcceptTime = $payAcceptTime ? strtotime($payAcceptTime) : 0; $refundTime = $refundTime ? strtotime($refundTime) : 0; + if (is_null($company)) { + $company = M('promote_company', 'tab_')->where(['id' => $companyId, 'company_belong' => ['in', [1, 2]]])->find(); + if (is_null($company)) { + throw new \Exception('推广公司不存在'); + } + } + $record = M('president_deposit', 'tab_')->where(['company_id' => $company['id']])->find(); + $this->checkBeforeSave($params, $record); if ($params['pay_type'] == 3) { return $this->handleNoDeposit($company, $record); } if ($record) { - $this->update(); + $this->update($params, $company, $record); addOperationLog(['op_type'=>1,'key'=>$company['company_name'].'/'.$params['amount'],'op_name'=>'编辑会长押金','url'=>U('PresidentDeposit/edit',['id'=>$company['id']]),'menu'=>'推广员-结算单管理-会长押金管理-编辑会长押金']); } else { - $this->add(); + $this->add($params, $company); addOperationLog(['op_type'=>0,'key'=>$company['company_name'].'/'.$params['amount'],'op_name'=>'新增会长押金','url'=>U('PresidentDeposit/edit',['id'=>$company['id']]),'menu'=>'推广员-结算单管理-奖罚记录管理-新增会长押金']); } } diff --git a/Application/Base/Service/PromoteCompanyService.class.php b/Application/Base/Service/PromoteCompanyService.class.php index 7149b78f0..df4ec23bd 100644 --- a/Application/Base/Service/PromoteCompanyService.class.php +++ b/Application/Base/Service/PromoteCompanyService.class.php @@ -130,11 +130,13 @@ class PromoteCompanyService public function getVerifyingPromotes($exceptId = 0) { $promotes = []; - $verifyCompanies = M('promote_company_verify', 'tab_')->field(['company_info'])->where(['status' => 0])->getField('company_info', true); + $verifyCompanies = M('promote_company_verify', 'tab_')->field(['company_info'])->where(['verify_status' => ['in', [0, 1]]])->getField('company_info', true); if ($verifyCompanies) { foreach ($verifyCompanies as $item) { $row = json_decode($item, true); - $promotes = array_merge($promotes, $row['promotes']); + if (isset($row['promotes'])) { + $promotes = array_merge($promotes, $row['promotes']); + } } } return $promotes; @@ -195,14 +197,14 @@ class PromoteCompanyService $data = []; if ($bindRelation['collaborate_way'] == 1) { $data['first_company_id'] = $company['id']; - $data['first_company_id'] = $company['company_name']; + $data['first_company_name'] = $company['company_name']; $data['first_company_type'] = 2; $data['second_company_id'] = $selfCompany['id']; $data['second_company_name'] = $selfCompany['partner']; $data['second_company_type'] = 0; } else { $data['first_company_id'] = $selfCompany['id']; - $data['first_company_id'] = $selfCompany['partner']; + $data['first_company_name'] = $selfCompany['partner']; $data['first_company_type'] = 0; $data['second_company_id'] = $company['id']; $data['second_company_name'] = $company['company_name']; diff --git a/Application/Base/Service/PromoteService.class.php b/Application/Base/Service/PromoteService.class.php index f61253769..7d3ead135 100644 --- a/Application/Base/Service/PromoteService.class.php +++ b/Application/Base/Service/PromoteService.class.php @@ -1041,9 +1041,9 @@ class PromoteService { public function isPresidentAccess($promote) { - $topPromote = $this->getTopPromote($promote); - if (in_array($topPromote['company_belong'], [1, 2])) { - $record = M('president_deposit', 'tab_')->where(['promote_id' => $topPromote['id']])->find(); + $company = M('promote_company', 'tab_')->field(['id', 'company_belong'])->where(['id' => $promote['company_id']])->find(); + if (in_array($company['company_belong'], [1, 2])) { + $record = M('president_deposit', 'tab_')->where(['company_id' => $company['id']])->find(); if (!$record) { return false; }