diff --git a/app/adminapi/controller/bank/BankAccountController.php b/app/adminapi/controller/bank/BankAccountController.php index 5fe1a6336..bcd364597 100644 --- a/app/adminapi/controller/bank/BankAccountController.php +++ b/app/adminapi/controller/bank/BankAccountController.php @@ -16,9 +16,9 @@ namespace app\adminapi\controller\bank; -use app\adminapi\controller\BaseAdminController; -use app\adminapi\lists\bank\BankAccountLists; -use app\adminapi\logic\bank\BankAccountLogic; +use app\adminapi\controller\BaseAdminController; +use app\adminapi\lists\bank\BankAccountLists; +use app\adminapi\logic\bank\BankAccountLogic; use app\adminapi\validate\bank\BankAccountValidate; diff --git a/app/adminapi/controller/bid/BidSecurityApplyController.php b/app/adminapi/controller/bid/BidSecurityApplyController.php index 75b1364ee..737f72e14 100644 --- a/app/adminapi/controller/bid/BidSecurityApplyController.php +++ b/app/adminapi/controller/bid/BidSecurityApplyController.php @@ -16,9 +16,9 @@ namespace app\adminapi\controller\bid; -use app\adminapi\controller\BaseAdminController; -use app\adminapi\lists\bid\BidSecurityApplyLists; -use app\adminapi\logic\bid\BidSecurityApplyLogic; +use app\adminapi\controller\BaseAdminController; +use app\adminapi\lists\bid\BidSecurityApplyLists; +use app\adminapi\logic\bid\BidSecurityApplyLogic; use app\adminapi\validate\bid\BidSecurityApplyValidate; diff --git a/app/adminapi/controller/bid/BidSecurityRefundController.php b/app/adminapi/controller/bid/BidSecurityRefundController.php index b05cfeab4..21b81d538 100644 --- a/app/adminapi/controller/bid/BidSecurityRefundController.php +++ b/app/adminapi/controller/bid/BidSecurityRefundController.php @@ -16,9 +16,9 @@ namespace app\adminapi\controller\bid; -use app\adminapi\controller\BaseAdminController; -use app\adminapi\lists\bid\BidSecurityRefundLists; -use app\adminapi\logic\bid\BidSecurityRefundLogic; +use app\adminapi\controller\BaseAdminController; +use app\adminapi\lists\bid\BidSecurityRefundLists; +use app\adminapi\logic\bid\BidSecurityRefundLogic; use app\adminapi\validate\bid\BidSecurityRefundValidate; diff --git a/app/adminapi/lists/bank/BankAccountLists.php b/app/adminapi/lists/bank/BankAccountLists.php index bbc0b48f1..1554650ba 100644 --- a/app/adminapi/lists/bank/BankAccountLists.php +++ b/app/adminapi/lists/bank/BankAccountLists.php @@ -18,6 +18,8 @@ namespace app\adminapi\lists\bank; use app\adminapi\lists\BaseAdminDataLists; use app\common\model\bank\BankAccount; use app\common\lists\ListsSearchInterface; +use app\common\model\dept\Dept; +use app\common\model\dept\Orgs; /** @@ -38,7 +40,8 @@ class BankAccountLists extends BaseAdminDataLists implements ListsSearchInterfac public function setSearch(): array { return [ - '=' => ['org_id', 'dept_id', 'account_sn', 'account'], + '=' => ['org_id', 'dept_id'], + '%like%' => ['account_sn', 'account','deposit_bank','account_name'] ]; } @@ -55,10 +58,16 @@ class BankAccountLists extends BaseAdminDataLists implements ListsSearchInterfac public function lists(): array { return BankAccount::where($this->searchWhere) - ->field(['id', 'org_id', 'dept_id', 'account_sn', 'deposit_bank', 'account_name', 'account', 'account_opening_date', 'opening_amount', 'remark']) + ->field('id,org_id,dept_id,account_sn,deposit_bank,account_name,account,account_opening_date,opening_amount,remark') ->limit($this->limitOffset, $this->limitLength) ->order(['id' => 'desc']) - ->select() + ->select()->each(function($data){ + $org = Orgs::field('name')->where('id',$data['org_id'])->findOrEmpty(); + $dept = Dept::field('name')->where('id',$data['dept_id'])->findOrEmpty(); + $data['org_name'] = $org['name']; + $data['dept_name'] = $dept['name']; + return $data; + }) ->toArray(); } diff --git a/app/adminapi/lists/bid/BidSecurityApplyLists.php b/app/adminapi/lists/bid/BidSecurityApplyLists.php index 824369d37..6c3dffec2 100644 --- a/app/adminapi/lists/bid/BidSecurityApplyLists.php +++ b/app/adminapi/lists/bid/BidSecurityApplyLists.php @@ -16,8 +16,12 @@ namespace app\adminapi\lists\bid; use app\adminapi\lists\BaseAdminDataLists; +use app\common\model\bid\BidBiddingDecision; use app\common\model\bid\BidSecurityApply; use app\common\lists\ListsSearchInterface; +use app\common\model\bid\BidSecurityRefund; +use app\common\model\custom\Custom; +use app\common\model\project\Project; use think\facade\Db; /** @@ -38,7 +42,8 @@ class BidSecurityApplyLists extends BaseAdminDataLists implements ListsSearchInt public function setSearch(): array { return [ - '=' => ['bsa.bidding_decision_id', 'bsa.applier', 'bsa.pay_type'], + '=' => ['bidding_decision_id', 'project_id', 'pay_type'], + '%like%' => ['applier'] ]; } @@ -54,22 +59,26 @@ class BidSecurityApplyLists extends BaseAdminDataLists implements ListsSearchInt */ public function lists(): array { - return Db::name('BidSecurityApply')->alias('bsa') - ->where($this->searchWhere) - ->whereNull('bsa.delete_time') - ->leftJoin('bid_bidding_decision bbd','bbd.id = bsa.bidding_decision_id') - ->leftJoin('project p','p.id = bbd.project_id') - ->leftJoin('custom ct','ct.id = p.custom_id') - ->field('bsa.*, bbd.project_id, bbd.bidding_time, bbd.margin_amount, p.name as project_name, p.project_code, ct.name as customer_name') + return BidSecurityApply::where($this->searchWhere) + ->field('id,security_apply_code,project_id,bidding_decision_id,applier,refund_date,create_time') ->limit($this->limitOffset, $this->limitLength) - ->order(['bsa.id' => 'desc']) - ->select()->each(function($item, $key){ - //关联数据后续添加 - $item['approve_no'] = '付款单号'; - $item['approve_step'] = '流程步骤'; - $item['approve_settle_status'] = 1; - $item['bidding_time'] = empty($item['bidding_time']) ? '' : date('Y-m-d H:i:s', $item['bidding_time']); - return $item; + ->order(['id' => 'desc']) + ->select()->each(function($data){ + $bidding_decision = BidBiddingDecision::field('code,margin_amount,bidding_time')->where('id',$data['bidding_decision_id'])->findOrEmpty(); + $project = Project::field('custom_id,name,project_code')->where('id',$data['project_id'])->findOrEmpty(); + $custom = Custom::field('name')->where('id',$project['custom_id'])->findOrEmpty(); + $data['bidding_decision_cod'] = $bidding_decision['code']; + $data['project_name'] = $project['name']; + $data['project_code'] = $project['project_code']; + $data['custom_name'] = $custom['name']; + $data['bidding_time'] = $bidding_decision['bidding_time']; + //保证金金额 + $data['margin_amount'] = $bidding_decision['margin_amount']; + //已退金额 + $data['has_refund_amount'] = BidSecurityRefund::where('bid_security_apply_id',$data['id'])->sum('refund_amount'); + //未退金额 + $data['not_refund_amount'] = $data['margin_amount'] - $data['has_refund_amount']; + return $data; }) ->toArray(); } @@ -83,12 +92,7 @@ class BidSecurityApplyLists extends BaseAdminDataLists implements ListsSearchInt */ public function count(): int { - return Db::name('BidSecurityApply')->alias('bsa') - ->where($this->searchWhere) - ->whereNull('bsa.delete_time') - ->leftJoin('bid_bidding_decision bbd','bbd.id = bsa.bidding_decision_id') - ->leftJoin('project p','p.id = bbd.project_id') - ->leftJoin('custom ct','ct.id = p.custom_id')->count(); + return BidSecurityApply::where($this->searchWhere)->count(); } } \ No newline at end of file diff --git a/app/adminapi/lists/bid/BidSecurityRefundLists.php b/app/adminapi/lists/bid/BidSecurityRefundLists.php index 902ec4623..2b5b15dfb 100644 --- a/app/adminapi/lists/bid/BidSecurityRefundLists.php +++ b/app/adminapi/lists/bid/BidSecurityRefundLists.php @@ -16,8 +16,12 @@ namespace app\adminapi\lists\bid; use app\adminapi\lists\BaseAdminDataLists; +use app\common\model\bid\BidBiddingDecision; +use app\common\model\bid\BidSecurityApply; use app\common\model\bid\BidSecurityRefund; use app\common\lists\ListsSearchInterface; +use app\common\model\custom\Custom; +use app\common\model\project\Project; use think\facade\Db; /** @@ -38,7 +42,7 @@ class BidSecurityRefundLists extends BaseAdminDataLists implements ListsSearchIn public function setSearch(): array { return [ - '=' => ['bsr.bidding_decision_id', 'bsr.refund_date', 'bsr.bank_account_id'], + '=' => ['bid_security_apply_id', 'project_id', 'bank_account_id'], ]; } @@ -54,21 +58,21 @@ class BidSecurityRefundLists extends BaseAdminDataLists implements ListsSearchIn */ public function lists(): array { - return Db::name('BidSecurityRefund')->alias('bsr') - ->where($this->searchWhere) - ->whereNull('bsr.delete_time') - ->leftJoin('bid_bidding_decision bbd','bbd.id = bsr.bidding_decision_id') - ->leftJoin('project p','p.id = bbd.project_id') - ->leftJoin('custom ct','ct.id = p.custom_id') - ->field('bsr.*, bbd.project_id, p.name as project_name, p.project_code, ct.name as customer_name') + return BidSecurityRefund::where($this->searchWhere) + ->field('id,project_id,bid_security_apply_id,refund_amount,refund_date,remark,annex,bank_account_id,create_time') ->limit($this->limitOffset, $this->limitLength) - ->order(['bsr.id' => 'desc']) - ->select()->each(function($item, $key){ - //关联数据后续添加 - $item['approve_no'] = '付款单号'; - $item['approve_step'] = '流程步骤'; - $item['approve_settle_status'] = 1; - return $item; + ->order(['id' => 'desc']) + ->select()->each(function($data){ + $project = Project::field('custom_id,name,project_code')->where('id',$data['project_id'])->findOrEmpty(); + $custom = Custom::field('name')->where('id',$project['custom_id'])->findOrEmpty(); + $bid_security_apply = BidSecurityApply::field('bidding_decision_id')->where('id',$data['bid_security_apply_id'])->findOrEmpty(); + $bidding_decision = BidBiddingDecision::field('code,bidding_time')->where('id',$bid_security_apply['bidding_decision_id'])->findOrEmpty(); + $data['bidding_decision_code'] = $bidding_decision['code']; + $data['custom_name'] = $custom['name']; + $data['project_name'] = $project['name']; + $data['project_code'] = $project['project_code']; + $data['bidding_time'] = $bidding_decision['bidding_time']; + return $data; }) ->toArray(); } @@ -82,12 +86,7 @@ class BidSecurityRefundLists extends BaseAdminDataLists implements ListsSearchIn */ public function count(): int { - return Db::name('BidSecurityRefund')->alias('bsr') - ->where($this->searchWhere) - ->whereNull('bsr.delete_time') - ->leftJoin('bid_bidding_decision bbd','bbd.id = bsr.bidding_decision_id') - ->leftJoin('project p','p.id = bbd.project_id') - ->leftJoin('custom ct','ct.id = p.custom_id')->count(); + return BidSecurityRefund::where($this->searchWhere)->count(); } } \ No newline at end of file diff --git a/app/adminapi/logic/bank/BankAccountLogic.php b/app/adminapi/logic/bank/BankAccountLogic.php index 73b155b9d..28e6a6377 100644 --- a/app/adminapi/logic/bank/BankAccountLogic.php +++ b/app/adminapi/logic/bank/BankAccountLogic.php @@ -17,6 +17,8 @@ namespace app\adminapi\logic\bank; use app\common\model\bank\BankAccount; use app\common\logic\BaseLogic; +use app\common\model\dept\Dept; +use app\common\model\dept\Orgs; use think\facade\Db; @@ -41,17 +43,16 @@ class BankAccountLogic extends BaseLogic Db::startTrans(); try { BankAccount::create([ - 'org_id' => $params['org_id'] ?? 0, - 'dept_id' => $params['dept_id'] ?? 0, - 'account_sn' => $params['account_sn'] ?? '', - 'deposit_bank' => $params['deposit_bank'] ?? '', - 'account_name' => $params['account_name'] ?? '', - 'account' => $params['account'] ?? '', - 'account_opening_date' => $params['account_opening_date'] ?? '', - 'opening_amount' => $params['opening_amount'] ?? 0, + 'org_id' => $params['org_id'], + 'dept_id' => $params['dept_id'], + 'account_sn' => data_unique_code('BANK'), + 'deposit_bank' => $params['deposit_bank'], + 'account_name' => $params['account_name'], + 'account' => $params['account'], + 'account_opening_date' => !empty($params['account_opening_date']) ? strtotime($params['account_opening_date']) : 0, + 'opening_amount' => $params['opening_amount'], 'remark' => $params['remark'] ?? '', ]); - Db::commit(); return true; } catch (\Exception $e) { @@ -74,17 +75,15 @@ class BankAccountLogic extends BaseLogic Db::startTrans(); try { BankAccount::where('id', $params['id'])->update([ - 'org_id' => $params['org_id'] ?? 0, - 'dept_id' => $params['dept_id'] ?? 0, - 'account_sn' => $params['account_sn'] ?? '', - 'deposit_bank' => $params['deposit_bank'] ?? '', - 'account_name' => $params['account_name'] ?? '', - 'account' => $params['account'] ?? '', - 'account_opening_date' => $params['account_opening_date'] ?? '', - 'opening_amount' => $params['opening_amount'] ?? 0, - 'remark' => $params['remark'] ?? '', + 'org_id' => $params['org_id'], + 'dept_id' => $params['dept_id'], + 'deposit_bank' => $params['deposit_bank'], + 'account_name' => $params['account_name'], + 'account' => $params['account'], + 'account_opening_date' => !empty($params['account_opening_date']) ? strtotime($params['account_opening_date']) : 0, + 'opening_amount' => $params['opening_amount'], + 'remark' => $params['remark'] ?? '', ]); - Db::commit(); return true; } catch (\Exception $e) { @@ -117,6 +116,11 @@ class BankAccountLogic extends BaseLogic */ public static function detail($params): array { - return BankAccount::findOrEmpty($params['id'])->toArray(); + $data = BankAccount::field('id,org_id,dept_id,account_sn,deposit_bank,account_name,account,account_opening_date,opening_amount,remark')->findOrEmpty($params['id']); + $org = Orgs::field('name')->where('id',$data['org_id'])->findOrEmpty(); + $dept = Dept::field('name')->where('id',$data['dept_id'])->findOrEmpty(); + $data['org_name'] = $org['name']; + $data['dept_name'] = $dept['name']; + return $data->toArray(); } } \ No newline at end of file diff --git a/app/adminapi/logic/bid/BidSecurityApplyLogic.php b/app/adminapi/logic/bid/BidSecurityApplyLogic.php index e44f07742..560e75ab0 100644 --- a/app/adminapi/logic/bid/BidSecurityApplyLogic.php +++ b/app/adminapi/logic/bid/BidSecurityApplyLogic.php @@ -15,6 +15,7 @@ namespace app\adminapi\logic\bid; +use app\common\model\bid\BidBiddingDecision; use app\common\model\bid\BidSecurityApply; use app\common\model\project\Project; use app\common\model\custom\Custom; @@ -40,21 +41,21 @@ class BidSecurityApplyLogic extends BaseLogic */ public static function add(array $params): bool { + $bidding_decision = BidBiddingDecision::field('project_id')->where('id',$params['bidding_decision_id'])->findOrEmpty(); Db::startTrans(); try { BidSecurityApply::create([ - 'approve_id' => $params['approve_id'] ?? 0, - 'bidding_decision_id' => $params['bidding_decision_id'] ?? 0, - 'applier' => $params['applier'] ?? '', - 'pay_type' => $params['pay_type'] ?? 0, - 'refund_date' => $params['refund_date'] ?? '', + 'project_id' => $bidding_decision['project_id'], + 'bidding_decision_id' => $params['bidding_decision_id'], + 'applier' => $params['applier'], + 'pay_type' => $params['pay_type'], + 'refund_date' => !empty($params['refund_date']) ? strtotime($params['refund_date']) : 0, 'remark' => $params['remark'] ?? '', - 'annex' => $params['annex'] ?? '', - 'deposit_bank' => $params['deposit_bank'] ?? '', - 'account_name' => $params['account_name'] ?? '', - 'account' => $params['account'] ?? '', + 'annex' => !empty($params['annex']) ? $params['annex'] : null, + 'deposit_bank' => $params['deposit_bank'], + 'account_name' => $params['account_name'], + 'account' => $params['account'], ]); - Db::commit(); return true; } catch (\Exception $e) { @@ -74,21 +75,22 @@ class BidSecurityApplyLogic extends BaseLogic */ public static function edit(array $params): bool { + $bidding_decision = BidBiddingDecision::field('project_id')->where('id',$params['bidding_decision_id'])->findOrEmpty(); Db::startTrans(); try { BidSecurityApply::where('id', $params['id'])->update([ - 'approve_id' => $params['approve_id'] ?? 0, - 'bidding_decision_id' => $params['bidding_decision_id'] ?? 0, - 'applier' => $params['applier'] ?? '', - 'pay_type' => $params['pay_type'] ?? 0, - 'refund_date' => $params['refund_date'] ?? '', - 'remark' => $params['remark'] ?? '', - 'annex' => $params['annex'] ?? '', - 'deposit_bank' => $params['deposit_bank'] ?? '', - 'account_name' => $params['account_name'] ?? '', - 'account' => $params['account'] ?? '', + 'security_apply_code' => data_unique_code('投标保证金'), + 'project_id' => $bidding_decision['project_id'], + 'bidding_decision_id' => $params['bidding_decision_id'], + 'applier' => $params['applier'], + 'pay_type' => $params['pay_type'], + 'refund_date' => !empty($params['refund_date']) ? strtotime($params['refund_date']) : 0, + 'remark' => $params['remark'] ?? '', + 'annex' => !empty($params['annex']) ? $params['annex'] : null, + 'deposit_bank' => $params['deposit_bank'], + 'account_name' => $params['account_name'], + 'account' => $params['account'], ]); - Db::commit(); return true; } catch (\Exception $e) { @@ -121,16 +123,19 @@ class BidSecurityApplyLogic extends BaseLogic */ public static function detail($params): array { - $bidSecurityApply = BidSecurityApply::findOrEmpty($params['id']); - $bidSecurityApply->project = null; - $bidSecurityApply->custom = null; - if (!empty($bidSecurityApply->decision->project_id)) { - $bidSecurityApply->project = Project::findOrEmpty($bidSecurityApply->decision->project_id); - } - if (!empty($bidSecurityApply->project->custom_id)) { - $bidSecurityApply->custom = Custom::findOrEmpty($bidSecurityApply->project->custom_id); - } - $bidSecurityApply->annex = json_decode($bidSecurityApply->annex, true); - return $bidSecurityApply->toArray(); + $data = BidSecurityApply::field('id,security_apply_code,project_id,bidding_decision_id,applier,pay_type,refund_date,remark,annex,deposit_bank,account_name,account') + ->findOrEmpty($params['id']); + $bidding_decision = BidBiddingDecision::field('code,margin_amount,bidding_time')->where('id',$data['bidding_decision_id'])->findOrEmpty(); + $project = Project::field('custom_id,name,project_code')->where('id',$data['project_id'])->findOrEmpty(); + $custom = Custom::field('name')->where('id',$project['custom_id'])->findOrEmpty(); + $data['bidding_decision_cod'] = $bidding_decision['code']; + $data['project_name'] = $project['name']; + $data['project_code'] = $project['project_code']; + $data['custom_name'] = $custom['name']; + $data['pay_type_text'] = $data->pay_type_text; + $data['margin_amount'] = $bidding_decision['margin_amount']; + $data['bidding_time'] = $bidding_decision['bidding_time']; + $data['payment_account_info'] = []; + return $data->toArray(); } } \ No newline at end of file diff --git a/app/adminapi/logic/bid/BidSecurityRefundLogic.php b/app/adminapi/logic/bid/BidSecurityRefundLogic.php index dbdfa899c..fb89a7b86 100644 --- a/app/adminapi/logic/bid/BidSecurityRefundLogic.php +++ b/app/adminapi/logic/bid/BidSecurityRefundLogic.php @@ -15,6 +15,9 @@ namespace app\adminapi\logic\bid; +use app\common\model\bank\BankAccount; +use app\common\model\bid\BidBiddingDecision; +use app\common\model\bid\BidSecurityApply; use app\common\model\bid\BidSecurityRefund; use app\common\logic\BaseLogic; use app\common\model\project\Project; @@ -40,20 +43,18 @@ class BidSecurityRefundLogic extends BaseLogic */ public static function add(array $params): bool { + $bid_security_apply = BidSecurityApply::field('project_id')->where('id',$params['bid_security_apply_id'])->findOrEmpty(); Db::startTrans(); try { - BidSecurityRefund::create([ - 'bidding_decision_id' => $params['bidding_decision_id'] ?? 0, - 'refund_amount' => $params['refund_amount'] ?? 0, - 'refund_amount_daxie' => $params['refund_amount_daxie'] ?? '', - 'refund_date' => $params['refund_date'] ?? '', + BidSecurityRefund::create([ + 'project_id' => $bid_security_apply['project_id'], + 'bid_security_apply_id' => $params['bid_security_apply_id'], + 'refund_amount' => $params['refund_amount'], + 'refund_date' => strtotime($params['refund_date']), 'remark' => $params['remark'] ?? '', - 'annex' => $params['annex'] ?? '', + 'annex' => !empty($params['annex']) ? $params['annex'] : null, 'bank_account_id' => $params['bank_account_id'] ?? 0, - 'is_calculate_interest' => $params['is_calculate_interest'] ?? 0, - 'interest_calculation_start_date' => $params['interest_calculation_start_date'] ?? '', ]); - Db::commit(); return true; } catch (\Exception $e) { @@ -73,18 +74,17 @@ class BidSecurityRefundLogic extends BaseLogic */ public static function edit(array $params): bool { + $bid_security_apply = BidSecurityApply::field('project_id')->where('id',$params['bid_security_apply_id'])->findOrEmpty(); Db::startTrans(); try { BidSecurityRefund::where('id', $params['id'])->update([ - 'bidding_decision_id' => $params['bidding_decision_id'] ?? 0, - 'refund_amount' => $params['refund_amount'] ?? 0, - 'refund_amount_daxie' => $params['refund_amount_daxie'] ?? '', - 'refund_date' => $params['refund_date'] ?? '', - 'remark' => $params['remark'] ?? '', - 'annex' => $params['annex'] ?? '', - 'bank_account_id' => $params['bank_account_id'] ?? 0, - 'is_calculate_interest' => $params['is_calculate_interest'] ?? 0, - 'interest_calculation_start_date' => $params['interest_calculation_start_date'] ?? '', + 'project_id' => $bid_security_apply['project_id'], + 'bid_security_apply_id' => $params['bid_security_apply_id'], + 'refund_amount' => $params['refund_amount'], + 'refund_date' => strtotime($params['refund_date']), + 'remark' => $params['remark'] ?? '', + 'annex' => !empty($params['annex']) ? $params['annex'] : null, + 'bank_account_id' => $params['bank_account_id'] ?? 0, ]); Db::commit(); @@ -119,16 +119,17 @@ class BidSecurityRefundLogic extends BaseLogic */ public static function detail($params): array { - $bidSecurityRefund = BidSecurityRefund::findOrEmpty($params['id']); - $bidSecurityRefund->project = null; - $bidSecurityRefund->custom = null; - if (!empty($bidSecurityRefund->decision->project_id)) { - $bidSecurityRefund->project = Project::findOrEmpty($bidSecurityRefund->decision->project_id); - } - if (!empty($bidSecurityRefund->project->custom_id)) { - $bidSecurityRefund->custom = Custom::findOrEmpty($bidSecurityRefund->project->custom_id); - } - $bidSecurityRefund->annex = json_decode($bidSecurityRefund->annex, true); - return $bidSecurityRefund->toArray(); + $data = BidSecurityRefund::field('id,project_id,bid_security_apply_id,refund_amount,refund_date,remark,annex,bank_account_id')->findOrEmpty($params['id']); + $project = Project::field('custom_id,name,project_code')->where('id',$data['project_id'])->findOrEmpty(); + $custom = Custom::field('name')->where('id',$project['custom_id'])->findOrEmpty(); + $bid_security_apply = BidSecurityApply::field('bidding_decision_id')->where('id',$data['bid_security_apply_id'])->findOrEmpty(); + $bidding_decision = BidBiddingDecision::field('code,bidding_time')->where('id',$bid_security_apply['bidding_decision_id'])->findOrEmpty(); + $data['bidding_decision_code'] = $bidding_decision['code']; + $data['custom_name'] = $custom['name']; + $data['project_name'] = $project['name']; + $data['project_code'] = $project['project_code']; + $data['bidding_time'] = $bidding_decision['bidding_time']; + $data['bank_account_info'] = BankAccount::field('account_sn,deposit_bank,account_name,account')->where('id',$data['bank_account_id'])->findOrEmpty(); + return $data->toArray(); } } \ No newline at end of file diff --git a/app/adminapi/validate/bank/BankAccountValidate.php b/app/adminapi/validate/bank/BankAccountValidate.php index 966f02588..7203f8ae0 100644 --- a/app/adminapi/validate/bank/BankAccountValidate.php +++ b/app/adminapi/validate/bank/BankAccountValidate.php @@ -15,6 +15,8 @@ namespace app\adminapi\validate\bank; +use app\common\model\dept\Dept; +use app\common\model\dept\Orgs; use app\common\validate\BaseValidate; @@ -31,13 +33,14 @@ class BankAccountValidate extends BaseValidate * @var string[] */ protected $rule = [ - 'id' => 'require', - 'org_id' => 'require', - 'dept_id' => 'require', - 'deposit_bank' => 'require', - 'account_name' => 'require', - 'account' => 'require', - 'opening_amount' => 'require', + 'id' => 'require', + 'org_id' => 'require|checkOrg', + 'dept_id' => 'require|checkDept', + 'deposit_bank' => 'require', + 'account_name' => 'require', + 'account' => 'require', + 'account_opening_date' => 'dateFormat:Y-m-d', + 'opening_amount' => 'require|float|egt:0', ]; @@ -46,13 +49,14 @@ class BankAccountValidate extends BaseValidate * @var string[] */ protected $field = [ - 'id' => 'id', - 'org_id' => '组织id', - 'dept_id' => '部门id', - 'deposit_bank' => '开户银行', - 'account_name' => '开户名称', - 'account' => '账号', - 'opening_amount' => '期初金额', + 'id' => 'id', + 'org_id' => '组织', + 'dept_id' => '部门', + 'deposit_bank' => '开户银行', + 'account_name' => '开户名称', + 'account' => '账号', + 'account_opening_date' => '开户日期', + 'opening_amount' => '期初金额', ]; @@ -64,7 +68,7 @@ class BankAccountValidate extends BaseValidate */ public function sceneAdd() { - return $this->only(['org_id','dept_id','deposit_bank','account_name','account','opening_amount']); + return $this->remove('id',true); } @@ -75,9 +79,7 @@ class BankAccountValidate extends BaseValidate * @date 2023/12/20 15:04 */ public function sceneEdit() - { - return $this->only(['id','org_id','dept_id','deposit_bank','account_name','account','opening_amount']); - } + {} /** @@ -102,5 +104,26 @@ class BankAccountValidate extends BaseValidate { return $this->only(['id']); } + + public function checkOrg($value): bool|string + { + $org = Orgs::where('id',$value)->findOrEmpty(); + if($org->isEmpty()){ + return '组织不存在'; + } + return true; + } + + public function checkDept($value,$rule,$data): bool|string + { + $dept = Dept::where('id',$value)->findOrEmpty(); + if($dept->isEmpty()){ + return '部门不存在'; + } + if($dept['org_id'] != $data['org_id']){ + return '部门无效'; + } + return true; + } } \ No newline at end of file diff --git a/app/adminapi/validate/bid/BidSecurityApplyValidate.php b/app/adminapi/validate/bid/BidSecurityApplyValidate.php index a70fe78fe..24aee1d9d 100644 --- a/app/adminapi/validate/bid/BidSecurityApplyValidate.php +++ b/app/adminapi/validate/bid/BidSecurityApplyValidate.php @@ -15,6 +15,8 @@ namespace app\adminapi\validate\bid; +use app\common\model\bid\BidBiddingDecision; +use app\common\model\dict\DictData; use app\common\validate\BaseValidate; @@ -32,10 +34,11 @@ class BidSecurityApplyValidate extends BaseValidate */ protected $rule = [ 'id' => 'require', - 'approve_id' => 'require', - 'bidding_decision_id' => 'require', + 'bidding_decision_id' => 'require|checkBiddingDecision', 'applier' => 'require', - 'pay_type' => 'require', + 'pay_type' => 'require|checkPayType', + 'refund_date' => 'dateFormat:Y-m-d', + 'annex' => 'checkAnnex', 'deposit_bank' => 'require', 'account_name' => 'require', 'account' => 'require', @@ -48,9 +51,10 @@ class BidSecurityApplyValidate extends BaseValidate */ protected $field = [ 'id' => 'id', - 'bidding_decision_id' => '投标决策id', + 'bidding_decision_id' => '投标决策', 'applier' => '申请人', 'pay_type' => '付款方式', + 'refund_date' => '预计退还时间', 'deposit_bank' => '开户银行', 'account_name' => '开户名称', 'account' => '账号', @@ -65,7 +69,7 @@ class BidSecurityApplyValidate extends BaseValidate */ public function sceneAdd() { - return $this->only(['approve_id','bidding_decision_id','applier','pay_type','deposit_bank','account_name','account']); + return $this->remove('id',true); } @@ -76,9 +80,7 @@ class BidSecurityApplyValidate extends BaseValidate * @date 2023/12/16 10:46 */ public function sceneEdit() - { - return $this->only(['id','approve_id','bidding_decision_id','applier','pay_type','deposit_bank','account_name','account']); - } + {} /** @@ -103,5 +105,34 @@ class BidSecurityApplyValidate extends BaseValidate { return $this->only(['id']); } + + public function checkBiddingDecision($value): bool|string + { + $data = BidBiddingDecision::where('id',$value)->findOrEmpty(); + if($data->isEmpty()){ + return '投标决策信息不存在'; + } + return true; + } + + public function checkPayType($value): bool|string + { + $dict = DictData::where('type_value','pay_type')->column('value'); + if(!in_array($value,$dict)){ + return '付款方式无效'; + } + return true; + } + + public function checkAnnex($value): bool|string + { + if(!empty($value) && $value != ''){ + $annex = json_decode($value,true); + if(empty($annex) || !is_array($annex)){ + return '附件格式错误'; + } + } + return true; + } } \ No newline at end of file diff --git a/app/adminapi/validate/bid/BidSecurityRefundValidate.php b/app/adminapi/validate/bid/BidSecurityRefundValidate.php index 0cee6477d..4a582f290 100644 --- a/app/adminapi/validate/bid/BidSecurityRefundValidate.php +++ b/app/adminapi/validate/bid/BidSecurityRefundValidate.php @@ -15,6 +15,8 @@ namespace app\adminapi\validate\bid; +use app\common\model\bank\BankAccount; +use app\common\model\bid\BidSecurityApply; use app\common\validate\BaseValidate; @@ -32,10 +34,11 @@ class BidSecurityRefundValidate extends BaseValidate */ protected $rule = [ 'id' => 'require', - 'bidding_decision_id' => 'require', - 'refund_amount' => 'require', - 'refund_date' => 'require', - 'bank_account_id' => 'require', + 'bid_security_apply_id' => 'require|checkBidSecurityApply', + 'refund_amount' => 'require|float|egt:0', + 'refund_date' => 'require|dateFormat:Y-m-d', + 'annex' => 'checkAnnex', + 'bank_account_id' => 'require|checkBankAccount', ]; @@ -45,10 +48,10 @@ class BidSecurityRefundValidate extends BaseValidate */ protected $field = [ 'id' => 'id', - 'bidding_decision_id' => '投标决策id', + 'bid_security_apply_id' => '投标保证金id', 'refund_amount' => '退款金额', 'refund_date' => '退款日期', - 'bank_account_id' => '银行账号id', + 'bank_account_id' => '银行账号', ]; @@ -60,7 +63,7 @@ class BidSecurityRefundValidate extends BaseValidate */ public function sceneAdd() { - return $this->only(['bidding_decision_id','refund_amount','refund_date','bank_account_id']); + return $this->remove('id',true); } @@ -71,9 +74,7 @@ class BidSecurityRefundValidate extends BaseValidate * @date 2023/12/18 10:29 */ public function sceneEdit() - { - return $this->only(['id','bidding_decision_id','refund_amount','refund_date','bank_account_id']); - } + {} /** @@ -98,5 +99,34 @@ class BidSecurityRefundValidate extends BaseValidate { return $this->only(['id']); } + + public function checkBidSecurityApply($value): bool|string + { + $data = BidSecurityApply::where('id',$value)->findOrEmpty(); + if($data->isEmpty()){ + return '投标保证金信息不存在'; + } + return true; + } + + public function checkAnnex($value): bool|string + { + if(!empty($value) && $value != ''){ + $annex = json_decode($value,true); + if(empty($annex) || !is_array($annex)){ + return '附件格式错误'; + } + } + return true; + } + + public function checkBankAccount($value): bool|string + { + $data = BankAccount::where('id',$value)->findOrEmpty(); + if($data->isEmpty()){ + return '银行账户信息不存在'; + } + return true; + } } \ No newline at end of file diff --git a/app/common/model/bank/BankAccount.php b/app/common/model/bank/BankAccount.php index dafd74ee2..617bc87e0 100644 --- a/app/common/model/bank/BankAccount.php +++ b/app/common/model/bank/BankAccount.php @@ -30,5 +30,8 @@ class BankAccount extends BaseModel protected $name = 'bank_account'; protected $deleteTime = 'delete_time'; - + public function getAccountOpeningDateAttr($value): string + { + return !empty($value) ? date('Y-m-d',$value) : ''; + } } \ No newline at end of file diff --git a/app/common/model/bid/BidSecurityApply.php b/app/common/model/bid/BidSecurityApply.php index bbc8a7fa4..21ea3b7f8 100644 --- a/app/common/model/bid/BidSecurityApply.php +++ b/app/common/model/bid/BidSecurityApply.php @@ -16,6 +16,7 @@ namespace app\common\model\bid; use app\common\model\BaseModel; +use app\common\model\dict\DictData; use think\model\concern\SoftDelete; @@ -30,10 +31,18 @@ class BidSecurityApply extends BaseModel use SoftDelete; protected $name = 'bid_security_apply'; protected $deleteTime = 'delete_time'; - - - public function decision() - { - return $this->belongsTo(\app\common\model\bid\BidBiddingDecision::class, 'bidding_decision_id'); - } + + public function getAnnexAttr($value){ + return !empty($value) ? json_decode($value,true) : ''; + } + + public function getRefundDateAttr($value): string + { + return !empty($value) ? date('Y-m-d',$value) : ''; + } + + public function getPayTypeTextAttr($value,$data){ + $dict = DictData::where('type_value','pay_type')->column('name','value'); + return $dict[$data['pay_type']]; + } } \ No newline at end of file diff --git a/app/common/model/bid/BidSecurityRefund.php b/app/common/model/bid/BidSecurityRefund.php index 12804ff09..619bed80e 100644 --- a/app/common/model/bid/BidSecurityRefund.php +++ b/app/common/model/bid/BidSecurityRefund.php @@ -29,17 +29,14 @@ class BidSecurityRefund extends BaseModel use SoftDelete; protected $name = 'bid_security_refund'; protected $deleteTime = 'delete_time'; - - - /** - * @notes 关联decision - * @return \think\model\relation\HasOne - * @author likeadmin - * @date 2023/12/18 10:29 - */ - public function decision() - { - return $this->belongsTo(\app\common\model\bid\BidBiddingDecision::class, 'bidding_decision_id'); - } + + public function getAnnexAttr($value){ + return !empty($value) ? json_decode($value,true) : ''; + } + + public function getRefundDateAttr($value): string + { + return !empty($value) ? date('Y-m-d',$value) : ''; + } } \ No newline at end of file