From c2d131025359d05fbf39aca800f17d5d9ffe9c43 Mon Sep 17 00:00:00 2001 From: weiz <736250432@qq.com> Date: Sat, 13 Apr 2024 15:58:42 +0800 Subject: [PATCH] update --- .../FinancialBidMarginController.php | 108 ++++++++++ .../financial/FinancialBidMarginLists.php | 116 +++++++++++ .../financial/FinancialBidMarginLogic.php | 160 +++++++++++++++ .../financial/FinancialBidMarginValidate.php | 194 ++++++++++++++++++ .../model/financial/FinancialBidMargin.php | 50 +++++ 5 files changed, 628 insertions(+) create mode 100644 app/adminapi/controller/financial/FinancialBidMarginController.php create mode 100644 app/adminapi/lists/financial/FinancialBidMarginLists.php create mode 100644 app/adminapi/logic/financial/FinancialBidMarginLogic.php create mode 100644 app/adminapi/validate/financial/FinancialBidMarginValidate.php create mode 100644 app/common/model/financial/FinancialBidMargin.php diff --git a/app/adminapi/controller/financial/FinancialBidMarginController.php b/app/adminapi/controller/financial/FinancialBidMarginController.php new file mode 100644 index 000000000..bc8bf7aa5 --- /dev/null +++ b/app/adminapi/controller/financial/FinancialBidMarginController.php @@ -0,0 +1,108 @@ +dataLists(new FinancialBidMarginLists()); + } + + + /** + * @notes 添加财务管理--投标保证金申请 + * @return \think\response\Json + * @author likeadmin + * @date 2024/04/13 15:24 + */ + public function add() + { + $params = (new FinancialBidMarginValidate())->post()->goCheck('add'); + $result = FinancialBidMarginLogic::add($params); + if (true === $result) { + return $this->success('添加成功', [], 1, 1); + } + return $this->fail(FinancialBidMarginLogic::getError()); + } + + + /** + * @notes 编辑财务管理--投标保证金申请 + * @return \think\response\Json + * @author likeadmin + * @date 2024/04/13 15:24 + */ + public function edit() + { + $params = (new FinancialBidMarginValidate())->post()->goCheck('edit'); + $result = FinancialBidMarginLogic::edit($params); + if (true === $result) { + return $this->success('编辑成功', [], 1, 1); + } + return $this->fail(FinancialBidMarginLogic::getError()); + } + + + /** + * @notes 删除财务管理--投标保证金申请 + * @return \think\response\Json + * @author likeadmin + * @date 2024/04/13 15:24 + */ + public function delete() + { + $params = (new FinancialBidMarginValidate())->post()->goCheck('delete'); + FinancialBidMarginLogic::delete($params); + return $this->success('删除成功', [], 1, 1); + } + + + /** + * @notes 获取财务管理--投标保证金申请详情 + * @return \think\response\Json + * @author likeadmin + * @date 2024/04/13 15:24 + */ + public function detail() + { + $params = (new FinancialBidMarginValidate())->goCheck('detail'); + $result = FinancialBidMarginLogic::detail($params); + return $this->data($result); + } + + +} \ No newline at end of file diff --git a/app/adminapi/lists/financial/FinancialBidMarginLists.php b/app/adminapi/lists/financial/FinancialBidMarginLists.php new file mode 100644 index 000000000..a2208fe6e --- /dev/null +++ b/app/adminapi/lists/financial/FinancialBidMarginLists.php @@ -0,0 +1,116 @@ + ['bid_info_id', 'business_opportunity_id', 'part_a'], + ]; + } + + + /** + * @notes 获取财务管理--投标保证金申请列表 + * @return array + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\DbException + * @throws \think\db\exception\ModelNotFoundException + * @author likeadmin + * @date 2024/04/13 15:24 + */ + public function lists(): array + { + $params = $this->request->get(); + $where = []; + if (!empty($params['end_date'])) { + $date = explode(',', $params['end_date']); + $where[] = ['end_date', 'between', [strtotime($date[0] . ' 00:00:00'), strtotime($date[1] . ' 23:59:59')]]; + } + if (!empty($params['expected_return_date'])) { + $date = explode(',', $params['expected_return_date']); + $where[] = ['expected_return_date', 'between', [strtotime($date[0] . ' 00:00:00'), strtotime($date[1] . ' 23:59:59')]]; + } + return FinancialBidMargin::withoutField('update_time,delete_time')->where($this->searchWhere)->where($where) + ->limit($this->limitOffset, $this->limitLength) + ->order(['id' => 'desc']) + ->select()->each(function ($data) { + $project = MarketingBusinessOpportunity::field('project_name')->where('id', $data['business_opportunity_id'])->findOrEmpty(); + $company = MarketingCustom::field('name')->where('id', $data['part_a'])->findOrEmpty(); + $province = GeoProvince::field('province_name')->where('province_code', $data['province'])->findOrEmpty(); + $city = GeoCity::field('city_name')->where('city_code', $data['city'])->findOrEmpty(); + $agent = Admin::field('name')->where('id', $data['agent'])->findOrEmpty(); + $head_dept = Dept::field('name')->where('id', $data['head_dept'])->findOrEmpty(); + $data['project_name'] = $project?->project_name; + $data['part_a_name'] = $company?->name; + $data['province_name'] = $province?->province_name; + $data['city_name'] = $city?->city_name; + $data['agent_name'] = $agent?->agent_name; + $data['head_dept_name'] = $head_dept?->head_dept_name; + $data['pay_type_text'] = $data->pay_type_text; + }) + ->toArray(); + } + + + /** + * @notes 获取财务管理--投标保证金申请数量 + * @return int + * @author likeadmin + * @date 2024/04/13 15:24 + */ + public function count(): int + { + $params = $this->request->get(); + $where = []; + if (!empty($params['end_date'])) { + $date = explode(',', $params['end_date']); + $where[] = ['end_date', 'between', [strtotime($date[0] . ' 00:00:00'), strtotime($date[1] . ' 23:59:59')]]; + } + if (!empty($params['expected_return_date'])) { + $date = explode(',', $params['expected_return_date']); + $where[] = ['expected_return_date', 'between', [strtotime($date[0] . ' 00:00:00'), strtotime($date[1] . ' 23:59:59')]]; + } + return FinancialBidMargin::where($this->searchWhere)->where($where)->count(); + } + + } \ No newline at end of file diff --git a/app/adminapi/logic/financial/FinancialBidMarginLogic.php b/app/adminapi/logic/financial/FinancialBidMarginLogic.php new file mode 100644 index 000000000..22d80a393 --- /dev/null +++ b/app/adminapi/logic/financial/FinancialBidMarginLogic.php @@ -0,0 +1,160 @@ + $params['bid_info_id'], + 'business_opportunity_id' => $params['business_opportunity_id'], + 'part_a' => $params['part_a'], + 'collection_company' => $params['collection_company'], + 'collection_account' => $params['collection_account'], + 'province' => $params['province'] ?? '', + 'city' => $params['city'] ?? '', + 'collection_bank' => $params['collection_bank'], + 'collection_open_bank' => $params['collection_open_bank'], + 'agent' => $params['agent'], + 'head_dept' => $params['head_dept'], + 'bid_margin' => $params['bid_margin'], + 'pay_type' => $params['pay_type'], + 'end_date' => !empty($params['end_date']) ? strtotime($params['end_date']) : 0, + 'expected_return_date' => !empty($params['expected_return_date']) ? strtotime($params['expected_return_date']) : 0, + 'remark' => $params['remark'] ?? '', + 'annex' => $params['annex'] ? json_encode($params['annex']) : null, + 'create_user' => $params['create_user'], + 'create_time' => !empty($params['create_time']) ? strtotime($params['create_time']) : time(), + ]); + Db::commit(); + return true; + } catch (\Exception $e) { + Db::rollback(); + self::setError($e->getMessage()); + return false; + } + } + + + /** + * @notes 编辑财务管理--投标保证金申请 + * @param array $params + * @return bool + * @author likeadmin + * @date 2024/04/13 15:24 + */ + public static function edit(array $params): bool + { + Db::startTrans(); + try { + FinancialBidMargin::where('id', $params['id'])->update([ + 'bid_info_id' => $params['bid_info_id'], + 'business_opportunity_id' => $params['business_opportunity_id'], + 'part_a' => $params['part_a'], + 'collection_company' => $params['collection_company'], + 'collection_account' => $params['collection_account'], + 'province' => $params['province'] ?? '', + 'city' => $params['city'] ?? '', + 'collection_bank' => $params['collection_bank'], + 'collection_open_bank' => $params['collection_open_bank'], + 'agent' => $params['agent'], + 'head_dept' => $params['head_dept'], + 'bid_margin' => $params['bid_margin'], + 'pay_type' => $params['pay_type'], + 'end_date' => !empty($params['end_date']) ? strtotime($params['end_date']) : 0, + 'expected_return_date' => !empty($params['expected_return_date']) ? strtotime($params['expected_return_date']) : 0, + 'remark' => $params['remark'] ?? '', + 'annex' => $params['annex'] ? json_encode($params['annex']) : null, + 'create_user' => $params['create_user'], + 'create_time' => !empty($params['create_time']) ? strtotime($params['create_time']) : time(), + ]); + Db::commit(); + return true; + } catch (\Exception $e) { + Db::rollback(); + self::setError($e->getMessage()); + return false; + } + } + + + /** + * @notes 删除财务管理--投标保证金申请 + * @param array $params + * @return bool + * @author likeadmin + * @date 2024/04/13 15:24 + */ + public static function delete(array $params): bool + { + return FinancialBidMargin::destroy($params['id']); + } + + + /** + * @notes 获取财务管理--投标保证金申请详情 + * @param $params + * @return array + * @author likeadmin + * @date 2024/04/13 15:24 + */ + public static function detail($params): array + { + $data = FinancialBidMargin::withoutField('update_time,delete_time')->findOrEmpty($params['id']); + $project = MarketingBusinessOpportunity::field('project_name')->where('id', $data['business_opportunity_id'])->findOrEmpty(); + $company = MarketingCustom::field('name')->where('id', $data['part_a'])->findOrEmpty(); + $province = GeoProvince::field('province_name')->where('province_code', $data['province'])->findOrEmpty(); + $city = GeoCity::field('city_name')->where('city_code', $data['city'])->findOrEmpty(); + $agent = Admin::field('name')->where('id', $data['agent'])->findOrEmpty(); + $head_dept = Dept::field('name')->where('id', $data['head_dept'])->findOrEmpty(); + $data['project_name'] = $project?->project_name; + $data['part_a_name'] = $company?->name; + $data['province_name'] = $province?->province_name; + $data['city_name'] = $city?->city_name; + $data['agent_name'] = $agent?->agent_name; + $data['head_dept_name'] = $head_dept?->head_dept_name; + $data['pay_type_text'] = $data->pay_type_text; + return $data->toArray(); + } + } \ No newline at end of file diff --git a/app/adminapi/validate/financial/FinancialBidMarginValidate.php b/app/adminapi/validate/financial/FinancialBidMarginValidate.php new file mode 100644 index 000000000..271c35d63 --- /dev/null +++ b/app/adminapi/validate/financial/FinancialBidMarginValidate.php @@ -0,0 +1,194 @@ + 'require|checkData', + 'bid_info_id' => 'require|checkBidInfo', + 'business_opportunity_id' => 'require|checkBusinessOpportunity', + 'part_a' => 'require|checkPartA', + 'collection_company' => 'require', + 'collection_account' => 'require', + 'province' => 'checkProvince', + 'city' => 'checkCity', + 'collection_bank' => 'require', + 'collection_open_bank' => 'require', + 'agent' => 'require|checkAgent', + 'head_dept' => 'require|checkHeadDept', + 'bid_margin' => 'require|float|egt:0', + 'pay_type' => 'require|checkPayType', + 'end_date' => 'dateFormat:Y-m-d', + 'expected_return_date' => 'dateFormat:Y-m-d', + 'create_user' => 'require', + 'create_time' => 'require|dateFormat:Y-m-d H:i:s', + 'annex' => 'checkAnnex' + ]; + + + /** + * 参数描述 + * @var string[] + */ + protected $field = [ + 'id' => 'id', + 'bid_info_id' => '投标信息id', + 'business_opportunity_id' => '业务机会id', + 'part_a' => '甲方单位', + 'collection_company' => '收款单位', + 'collection_account' => '收款账号', + 'province' => '开户省份', + 'city' => '开户城市', + 'collection_bank' => '收款银行', + 'collection_open_bank' => '收款开户行', + 'agent' => '经办人', + 'head_dept' => '负责部门', + 'bid_margin' => '投标保证金', + 'pay_type' => '支付方式', + 'end_date' => '缴纳截止日期', + 'expected_return_date' => '预计归还日期', + 'remark' => '备注', + 'create_user' => '申请人', + 'create_time' => '申请日期', + ]; + + + /** + * @notes 添加场景 + * @return FinancialBidMarginValidate + * @author likeadmin + * @date 2024/04/13 15:24 + */ + public function sceneAdd() + { + return $this->remove('id', true); + } + + + /** + * @notes 编辑场景 + * @return FinancialBidMarginValidate + * @author likeadmin + * @date 2024/04/13 15:24 + */ + public function sceneEdit() + { + } + + + /** + * @notes 删除场景 + * @return FinancialBidMarginValidate + * @author likeadmin + * @date 2024/04/13 15:24 + */ + public function sceneDelete() + { + return $this->only(['id'])->remove('id', 'checkData'); + } + + + /** + * @notes 详情场景 + * @return FinancialBidMarginValidate + * @author likeadmin + * @date 2024/04/13 15:24 + */ + public function sceneDetail() + { + return $this->only(['id']); + } + + public function checkData($value): bool|string + { + $data = FinancialBidMargin::where('id', $value)->findOrEmpty(); + return $data->isEmpty() ? '数据不存在' : true; + } + + public function checkBidInfo($value): bool|string + { + $data = MarketingBidInfo::where('id', $value)->findOrEmpty(); + return $data->isEmpty() ? '投标信息数据不存在' : true; + } + + public function checkBusinessOpportunity($value): bool|string + { + $data = MarketingBusinessOpportunity::where('id', $value)->findOrEmpty(); + return $data->isEmpty() ? '业务机会数据不存在' : true; + } + + public function checkPartA($value): bool|string + { + $data = MarketingCustom::where('id', $value)->findOrEmpty(); + return $data->isEmpty() ? '甲方单位数据不存在' : true; + } + + public function checkProvince($value): bool|string + { + if (empty($value)) return true; + $data = GeoProvince::where('province_code', $value)->findOrEmpty(); + return $data->isEmpty() ? '开户省份信息不存在' : true; + } + + public function checkCity($value): bool|string + { + if (empty($value)) return true; + $data = GeoCity::where('city_code', $value)->findOrEmpty(); + return $data->isEmpty() ? '开户城市信息不存在' : true; + } + + public function checkAgent($value): bool|string + { + $data = Admin::where('id', $value)->findOrEmpty(); + return $data->isEmpty() ? '经办人数据不存在' : true; + } + + public function checkHeadDept($value): bool|string + { + $data = Dept::where('id', $value)->findOrEmpty(); + return $data->isEmpty() ? '负责部门数据不存在' : true; + } + + public function checkPayType($value): bool|string + { + $dict = DictData::where('type_value', 'financial_pay_type')->column('value'); + return !in_array($value, $dict) ? '支付方式数据值无效' : true; + } + + } \ No newline at end of file diff --git a/app/common/model/financial/FinancialBidMargin.php b/app/common/model/financial/FinancialBidMargin.php new file mode 100644 index 000000000..c4443b15b --- /dev/null +++ b/app/common/model/financial/FinancialBidMargin.php @@ -0,0 +1,50 @@ +column('name', 'value'); + return !empty($data['pay_type']) ? $dict[$data['pay_type']] : ''; + } + + public function getEndDateAttr($value): string + { + return !empty($value) ? date('Y-m-d', $value) : ''; + } + + public function getExpectedReturnDateAttr($value): string + { + return !empty($value) ? date('Y-m-d', $value) : ''; + } + } \ No newline at end of file