From 628d35f78925f7ece5c52ef57cf2e360a59ef736 Mon Sep 17 00:00:00 2001 From: weiz <736250432@qq.com> Date: Tue, 2 Apr 2024 10:40:37 +0800 Subject: [PATCH] update --- .../MarketingCustomReturnVisitController.php | 111 ++++++++++ ...ingCustomReturnVisitEvaluateController.php | 108 ++++++++++ ...etingCustomReturnVisitSurveyController.php | 108 ++++++++++ ...ingCustomReturnVisitTemplateController.php | 5 + ...arketingCustomReturnVisitEvaluateLists.php | 82 +++++++ .../MarketingCustomReturnVisitLists.php | 86 ++++++++ .../MarketingCustomReturnVisitSurveyLists.php | 77 +++++++ .../logic/marketing/MarketingCustomLogic.php | 3 +- ...arketingCustomReturnVisitEvaluateLogic.php | 111 ++++++++++ .../MarketingCustomReturnVisitLogic.php | 200 ++++++++++++++++++ .../MarketingCustomReturnVisitSurveyLogic.php | 113 ++++++++++ ...arketingCustomReturnVisitTemplateLogic.php | 10 +- ...etingCustomReturnVisitEvaluateValidate.php | 117 ++++++++++ ...rketingCustomReturnVisitSurveyValidate.php | 117 ++++++++++ .../MarketingCustomReturnVisitValidate.php | 183 ++++++++++++++++ .../marketing/MarketingCustomReturnVisit.php | 40 ++++ .../MarketingCustomReturnVisitEvaluate.php | 34 +++ .../MarketingCustomReturnVisitSurvey.php | 34 +++ 18 files changed, 1537 insertions(+), 2 deletions(-) create mode 100644 app/adminapi/controller/marketing/MarketingCustomReturnVisitController.php create mode 100644 app/adminapi/controller/marketing/MarketingCustomReturnVisitEvaluateController.php create mode 100644 app/adminapi/controller/marketing/MarketingCustomReturnVisitSurveyController.php create mode 100644 app/adminapi/lists/marketing/MarketingCustomReturnVisitEvaluateLists.php create mode 100644 app/adminapi/lists/marketing/MarketingCustomReturnVisitLists.php create mode 100644 app/adminapi/lists/marketing/MarketingCustomReturnVisitSurveyLists.php create mode 100644 app/adminapi/logic/marketing/MarketingCustomReturnVisitEvaluateLogic.php create mode 100644 app/adminapi/logic/marketing/MarketingCustomReturnVisitLogic.php create mode 100644 app/adminapi/logic/marketing/MarketingCustomReturnVisitSurveyLogic.php create mode 100644 app/adminapi/validate/marketing/MarketingCustomReturnVisitEvaluateValidate.php create mode 100644 app/adminapi/validate/marketing/MarketingCustomReturnVisitSurveyValidate.php create mode 100644 app/adminapi/validate/marketing/MarketingCustomReturnVisitValidate.php create mode 100644 app/common/model/marketing/MarketingCustomReturnVisit.php create mode 100644 app/common/model/marketing/MarketingCustomReturnVisitEvaluate.php create mode 100644 app/common/model/marketing/MarketingCustomReturnVisitSurvey.php diff --git a/app/adminapi/controller/marketing/MarketingCustomReturnVisitController.php b/app/adminapi/controller/marketing/MarketingCustomReturnVisitController.php new file mode 100644 index 000000000..a502f1ca4 --- /dev/null +++ b/app/adminapi/controller/marketing/MarketingCustomReturnVisitController.php @@ -0,0 +1,111 @@ +dataLists(new MarketingCustomReturnVisitLists()); + } + + + /** + * @notes 添加市场经营--客户回访列表 + * @return \think\response\Json + * @author likeadmin + * @date 2024/04/02 09:17 + */ + public function add() + { + $params = (new MarketingCustomReturnVisitValidate())->post()->goCheck('add'); + $result = MarketingCustomReturnVisitLogic::add($params); + if (true === $result) { + return $this->success('添加成功', [], 1, 1); + } + return $this->fail(MarketingCustomReturnVisitLogic::getError()); + } + + + /** + * @notes 编辑市场经营--客户回访列表 + * @return \think\response\Json + * @author likeadmin + * @date 2024/04/02 09:17 + */ + public function edit() + { + $params = (new MarketingCustomReturnVisitValidate())->post()->goCheck('edit'); + $result = MarketingCustomReturnVisitLogic::edit($params); + if (true === $result) { + return $this->success('编辑成功', [], 1, 1); + } + return $this->fail(MarketingCustomReturnVisitLogic::getError()); + } + + + /** + * @notes 删除市场经营--客户回访列表 + * @return \think\response\Json + * @author likeadmin + * @date 2024/04/02 09:17 + */ + public function delete() + { + $params = (new MarketingCustomReturnVisitValidate())->post()->goCheck('delete'); + $result = MarketingCustomReturnVisitLogic::delete($params); + if (true === $result) { + return $this->success('删除成功', [], 1, 1); + } + return $this->fail(MarketingCustomReturnVisitLogic::getError()); + } + + + /** + * @notes 获取市场经营--客户回访列表详情 + * @return \think\response\Json + * @author likeadmin + * @date 2024/04/02 09:17 + */ + public function detail() + { + $params = (new MarketingCustomReturnVisitValidate())->goCheck('detail'); + $result = MarketingCustomReturnVisitLogic::detail($params); + return $this->data($result); + } + + + } \ No newline at end of file diff --git a/app/adminapi/controller/marketing/MarketingCustomReturnVisitEvaluateController.php b/app/adminapi/controller/marketing/MarketingCustomReturnVisitEvaluateController.php new file mode 100644 index 000000000..7036b7aed --- /dev/null +++ b/app/adminapi/controller/marketing/MarketingCustomReturnVisitEvaluateController.php @@ -0,0 +1,108 @@ +dataLists(new MarketingCustomReturnVisitEvaluateLists()); + } + + + /** + * @notes 添加市场经营--客户回访列表--成员评价 + * @return \think\response\Json + * @author likeadmin + * @date 2024/04/02 09:17 + */ + public function add() + { + $params = (new MarketingCustomReturnVisitEvaluateValidate())->post()->goCheck('add'); + $result = MarketingCustomReturnVisitEvaluateLogic::add($params); + if (true === $result) { + return $this->success('添加成功', [], 1, 1); + } + return $this->fail(MarketingCustomReturnVisitEvaluateLogic::getError()); + } + + + /** + * @notes 编辑市场经营--客户回访列表--成员评价 + * @return \think\response\Json + * @author likeadmin + * @date 2024/04/02 09:17 + */ + public function edit() + { + $params = (new MarketingCustomReturnVisitEvaluateValidate())->post()->goCheck('edit'); + $result = MarketingCustomReturnVisitEvaluateLogic::edit($params); + if (true === $result) { + return $this->success('编辑成功', [], 1, 1); + } + return $this->fail(MarketingCustomReturnVisitEvaluateLogic::getError()); + } + + + /** + * @notes 删除市场经营--客户回访列表--成员评价 + * @return \think\response\Json + * @author likeadmin + * @date 2024/04/02 09:17 + */ + public function delete() + { + $params = (new MarketingCustomReturnVisitEvaluateValidate())->post()->goCheck('delete'); + MarketingCustomReturnVisitEvaluateLogic::delete($params); + return $this->success('删除成功', [], 1, 1); + } + + + /** + * @notes 获取市场经营--客户回访列表--成员评价详情 + * @return \think\response\Json + * @author likeadmin + * @date 2024/04/02 09:17 + */ + public function detail() + { + $params = (new MarketingCustomReturnVisitEvaluateValidate())->goCheck('detail'); + $result = MarketingCustomReturnVisitEvaluateLogic::detail($params); + return $this->data($result); + } + + +} \ No newline at end of file diff --git a/app/adminapi/controller/marketing/MarketingCustomReturnVisitSurveyController.php b/app/adminapi/controller/marketing/MarketingCustomReturnVisitSurveyController.php new file mode 100644 index 000000000..caa486b28 --- /dev/null +++ b/app/adminapi/controller/marketing/MarketingCustomReturnVisitSurveyController.php @@ -0,0 +1,108 @@ +dataLists(new MarketingCustomReturnVisitSurveyLists()); + } + + + /** + * @notes 添加市场经营--客户回访列表--调查内容 + * @return \think\response\Json + * @author likeadmin + * @date 2024/04/02 09:17 + */ + public function add() + { + $params = (new MarketingCustomReturnVisitSurveyValidate())->post()->goCheck('add'); + $result = MarketingCustomReturnVisitSurveyLogic::add($params); + if (true === $result) { + return $this->success('添加成功', [], 1, 1); + } + return $this->fail(MarketingCustomReturnVisitSurveyLogic::getError()); + } + + + /** + * @notes 编辑市场经营--客户回访列表--调查内容 + * @return \think\response\Json + * @author likeadmin + * @date 2024/04/02 09:17 + */ + public function edit() + { + $params = (new MarketingCustomReturnVisitSurveyValidate())->post()->goCheck('edit'); + $result = MarketingCustomReturnVisitSurveyLogic::edit($params); + if (true === $result) { + return $this->success('编辑成功', [], 1, 1); + } + return $this->fail(MarketingCustomReturnVisitSurveyLogic::getError()); + } + + + /** + * @notes 删除市场经营--客户回访列表--调查内容 + * @return \think\response\Json + * @author likeadmin + * @date 2024/04/02 09:17 + */ + public function delete() + { + $params = (new MarketingCustomReturnVisitSurveyValidate())->post()->goCheck('delete'); + MarketingCustomReturnVisitSurveyLogic::delete($params); + return $this->success('删除成功', [], 1, 1); + } + + + /** + * @notes 获取市场经营--客户回访列表--调查内容详情 + * @return \think\response\Json + * @author likeadmin + * @date 2024/04/02 09:17 + */ + public function detail() + { + $params = (new MarketingCustomReturnVisitSurveyValidate())->goCheck('detail'); + $result = MarketingCustomReturnVisitSurveyLogic::detail($params); + return $this->data($result); + } + + +} \ No newline at end of file diff --git a/app/adminapi/controller/marketing/MarketingCustomReturnVisitTemplateController.php b/app/adminapi/controller/marketing/MarketingCustomReturnVisitTemplateController.php index 518eb85ff..8ea4344cf 100644 --- a/app/adminapi/controller/marketing/MarketingCustomReturnVisitTemplateController.php +++ b/app/adminapi/controller/marketing/MarketingCustomReturnVisitTemplateController.php @@ -107,5 +107,10 @@ return $this->data($result); } + public function datas(): \think\response\Json + { + return $this->data(MarketingCustomReturnVisitTemplateLogic::datas()); + } + } \ No newline at end of file diff --git a/app/adminapi/lists/marketing/MarketingCustomReturnVisitEvaluateLists.php b/app/adminapi/lists/marketing/MarketingCustomReturnVisitEvaluateLists.php new file mode 100644 index 000000000..3fb9f9986 --- /dev/null +++ b/app/adminapi/lists/marketing/MarketingCustomReturnVisitEvaluateLists.php @@ -0,0 +1,82 @@ + ['custom_return_visit_id'], + '%like%' => ['name'], + ]; + } + + + /** + * @notes 获取市场经营--客户回访列表--成员评价列表 + * @return array + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\DbException + * @throws \think\db\exception\ModelNotFoundException + * @author likeadmin + * @date 2024/04/02 09:17 + */ + public function lists(): array + { + return MarketingCustomReturnVisitEvaluate::withoutField('create_time,update_time,delete_time')->where($this->searchWhere) + ->limit($this->limitOffset, $this->limitLength) + ->order(['id' => 'desc']) + ->select()->each(function ($data) { + $custom_return_visit = MarketingCustomReturnVisit::field('contract_id')->where('id', $data['custom_return_visit_id'])->findOrEmpty(); + //todo + $data['contract_name'] = ''; + }) + ->toArray(); + } + + + /** + * @notes 获取市场经营--客户回访列表--成员评价数量 + * @return int + * @author likeadmin + * @date 2024/04/02 09:17 + */ + public function count(): int + { + return MarketingCustomReturnVisitEvaluate::where($this->searchWhere)->count(); + } + + } \ No newline at end of file diff --git a/app/adminapi/lists/marketing/MarketingCustomReturnVisitLists.php b/app/adminapi/lists/marketing/MarketingCustomReturnVisitLists.php new file mode 100644 index 000000000..517c39469 --- /dev/null +++ b/app/adminapi/lists/marketing/MarketingCustomReturnVisitLists.php @@ -0,0 +1,86 @@ + ['contract_id', 'return_visit_type', 'custom_return_visit_template_id'], + '%like%' => ['code', 'create_user'], + ]; + } + + + /** + * @notes 获取市场经营--客户回访列表列表 + * @return array + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\DbException + * @throws \think\db\exception\ModelNotFoundException + * @author likeadmin + * @date 2024/04/02 09:17 + */ + public function lists(): array + { + return MarketingCustomReturnVisit::withoutField('update_time,delete_time')->where($this->searchWhere) + ->limit($this->limitOffset, $this->limitLength) + ->order(['id' => 'desc']) + ->select()->each(function ($data) { + $custom_return_visit_template = MarketingCustomReturnVisitTemplate::field('name')->where('id', $data['custom_return_visit_template_id'])->findOrEmpty(); + $data['template_name'] = $custom_return_visit_template['name']; + //todo + $data['contract_name'] = ''; + $data['custom_name'] = ''; + $data['custom_head'] = ''; + $data['return_visit_type_text'] = $data->return_visit_type_text; + }) + ->toArray(); + } + + + /** + * @notes 获取市场经营--客户回访列表数量 + * @return int + * @author likeadmin + * @date 2024/04/02 09:17 + */ + public function count(): int + { + return MarketingCustomReturnVisit::where($this->searchWhere)->count(); + } + + } \ No newline at end of file diff --git a/app/adminapi/lists/marketing/MarketingCustomReturnVisitSurveyLists.php b/app/adminapi/lists/marketing/MarketingCustomReturnVisitSurveyLists.php new file mode 100644 index 000000000..a0f9b764f --- /dev/null +++ b/app/adminapi/lists/marketing/MarketingCustomReturnVisitSurveyLists.php @@ -0,0 +1,77 @@ + ['custom_return_visit_id'], + ]; + } + + + /** + * @notes 获取市场经营--客户回访列表--调查内容列表 + * @return array + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\DbException + * @throws \think\db\exception\ModelNotFoundException + * @author likeadmin + * @date 2024/04/02 09:17 + */ + public function lists(): array + { + return MarketingCustomReturnVisitSurvey::withoutField('create_time,update_time,delete_time')->where($this->searchWhere) + ->field(['id', 'custom_return_visit_id', 'survey_content', 'survey_content_desc', 'evaluate_content', 'remark']) + ->limit($this->limitOffset, $this->limitLength) + ->order(['id' => 'desc']) + ->select() + ->toArray(); + } + + + /** + * @notes 获取市场经营--客户回访列表--调查内容数量 + * @return int + * @author likeadmin + * @date 2024/04/02 09:17 + */ + public function count(): int + { + return MarketingCustomReturnVisitSurvey::where($this->searchWhere)->count(); + } + + } \ No newline at end of file diff --git a/app/adminapi/logic/marketing/MarketingCustomLogic.php b/app/adminapi/logic/marketing/MarketingCustomLogic.php index 8c2ac217e..fb8de587c 100644 --- a/app/adminapi/logic/marketing/MarketingCustomLogic.php +++ b/app/adminapi/logic/marketing/MarketingCustomLogic.php @@ -189,7 +189,8 @@ { $detail = MarketingCustomContacts::where('custom_id', 'in', $params['id'])->findOrEmpty(); if (!$detail->isEmpty()) { - return '此数据关联了联系人信息,需删除联系人信息'; + self::setError('此数据关联了联系人信息,需删除联系人信息'); + return false; } return MarketingCustom::destroy($params['id']); } diff --git a/app/adminapi/logic/marketing/MarketingCustomReturnVisitEvaluateLogic.php b/app/adminapi/logic/marketing/MarketingCustomReturnVisitEvaluateLogic.php new file mode 100644 index 000000000..1ce19e0ca --- /dev/null +++ b/app/adminapi/logic/marketing/MarketingCustomReturnVisitEvaluateLogic.php @@ -0,0 +1,111 @@ + $params['custom_return_visit_id'], + 'name' => $params['name'], + 'job' => $params['job'], + 'opinions' => $params['opinions'], + ]); + 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/02 09:17 + */ + public static function edit(array $params): bool + { + Db::startTrans(); + try { + MarketingCustomReturnVisitEvaluate::where('id', $params['id'])->update([ + 'custom_return_visit_id' => $params['custom_return_visit_id'], + 'name' => $params['name'], + 'job' => $params['job'], + 'opinions' => $params['opinions'], + 'update_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/02 09:17 + */ + public static function delete(array $params): bool + { + return MarketingCustomReturnVisitEvaluate::destroy($params['id']); + } + + + /** + * @notes 获取市场经营--客户回访列表--成员评价详情 + * @param $params + * @return array + * @author likeadmin + * @date 2024/04/02 09:17 + */ + public static function detail($params): array + { + return MarketingCustomReturnVisitEvaluate::withoutField('create_time,update_time,delete_time')->findOrEmpty($params['id'])->toArray(); + } + } \ No newline at end of file diff --git a/app/adminapi/logic/marketing/MarketingCustomReturnVisitLogic.php b/app/adminapi/logic/marketing/MarketingCustomReturnVisitLogic.php new file mode 100644 index 000000000..65a20cf9c --- /dev/null +++ b/app/adminapi/logic/marketing/MarketingCustomReturnVisitLogic.php @@ -0,0 +1,200 @@ + $params['contract_id'], + 'code' => data_unique_code('KHHF'), + 'return_visit_type' => $params['return_visit_type'], + 'custom_return_visit_template_id' => $params['custom_return_visit_template_id'], + 'annex' => $params['annex'] ? json_encode($params['annex']) : null, + 'create_user' => $params['create_user'], + 'create_time' => !empty($params['create_time']) ? strtotime($params['create_time']) : time(), + ]); + if (!empty($params['survey'])) { + foreach ($params['survey'] as $v) { + MarketingCustomReturnVisitSurvey::create([ + 'custom_return_visit_id' => $res->id, + 'survey_content' => $v['survey_content'], + 'survey_content_desc' => $v['survey_content_desc'], + 'evaluate_content' => $v['evaluate_content'], + 'remark' => $v['remark'] ?? '', + ]); + } + } + if (!empty($params['evaluate'])) { + foreach ($params['evaluate'] as $v) { + MarketingCustomReturnVisitEvaluate::create([ + 'custom_return_visit_id' => $res->id, + 'name' => $v['name'], + 'job' => $v['job'], + 'opinions' => $v['opinions'], + ]); + } + } + 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/02 09:17 + */ + public static function edit(array $params): bool + { + Db::startTrans(); + try { + MarketingCustomReturnVisit::where('id', $params['id'])->update([ + 'contract_id' => $params['contract_id'], + 'return_visit_type' => $params['return_visit_type'], + 'custom_return_visit_template_id' => $params['custom_return_visit_template_id'], + 'annex' => $params['annex'] ? json_encode($params['annex']) : null, + 'create_user' => $params['create_user'], + 'create_time' => !empty($params['create_time']) ? strtotime($params['create_time']) : time(), + 'update_time' => time(), + ]); + if (!empty($params['survey'])) { + foreach ($params['survey'] as $v) { + if (!empty($v['id'])) { + MarketingCustomReturnVisitSurvey::where('id', $v['id'])->update([ + 'custom_return_visit_id' => $params['id'], + 'survey_content' => $v['survey_content'], + 'survey_content_desc' => $v['survey_content_desc'], + 'evaluate_content' => $v['evaluate_content'], + 'remark' => $v['remark'] ?? '', + 'update_time' => time(), + ]); + } else { + MarketingCustomReturnVisitSurvey::create([ + 'custom_return_visit_id' => $params['id'], + 'survey_content' => $v['survey_content'], + 'survey_content_desc' => $v['survey_content_desc'], + 'evaluate_content' => $v['evaluate_content'], + 'remark' => $v['remark'] ?? '', + ]); + } + } + } + if (!empty($params['evaluate'])) { + foreach ($params['evaluate'] as $v) { + if (!empty($v['id'])) { + MarketingCustomReturnVisitEvaluate::where('id', $v['id'])->update([ + 'custom_return_visit_id' => $params['id'], + 'name' => $v['name'], + 'job' => $v['job'], + 'opinions' => $v['opinions'], + 'update_time' => time(), + ]); + } else { + MarketingCustomReturnVisitEvaluate::create([ + 'custom_return_visit_id' => $params['id'], + 'name' => $v['name'], + 'job' => $v['job'], + 'opinions' => $v['opinions'], + ]); + } + } + } + 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/02 09:17 + */ + public static function delete(array $params): bool + { + $survey = MarketingCustomReturnVisitSurvey::where('custom_return_visit_id', 'in', $params['id'])->findOrEmpty(); + if (!$survey->isEmpty()) { + self::setError('此数据关联了调查内容信息,需删除调查内容信息'); + return false; + } + $evaluate = MarketingCustomReturnVisitEvaluate::where('custom_return_visit_id', 'in', $params['id'])->findOrEmpty(); + if (!$evaluate->isEmpty()) { + self::setError('此数据关联了项目成员评价信息,需删除项目成员评价信息'); + return false; + } + return MarketingCustomReturnVisit::destroy($params['id']); + } + + + /** + * @notes 获取市场经营--客户回访列表详情 + * @param $params + * @return array + * @author likeadmin + * @date 2024/04/02 09:17 + */ + public static function detail($params): array + { + $data = MarketingCustomReturnVisit::withoutField('update_time,delete_time')->findOrEmpty($params['id']); + $custom_return_visit_template = MarketingCustomReturnVisitTemplate::field('name')->where('id', $data['custom_return_visit_template_id'])->findOrEmpty(); + $data['template_name'] = $custom_return_visit_template['name']; + //todo + $data['contract_name'] = ''; + $data['custom_name'] = ''; + $data['custom_head'] = ''; + $data['return_visit_type_text'] = $data->return_visit_type_text; + return $data->toArray(); + } + } \ No newline at end of file diff --git a/app/adminapi/logic/marketing/MarketingCustomReturnVisitSurveyLogic.php b/app/adminapi/logic/marketing/MarketingCustomReturnVisitSurveyLogic.php new file mode 100644 index 000000000..78c1157a5 --- /dev/null +++ b/app/adminapi/logic/marketing/MarketingCustomReturnVisitSurveyLogic.php @@ -0,0 +1,113 @@ + $params['custom_return_visit_id'], + 'survey_content' => $params['survey_content'], + 'survey_content_desc' => $params['survey_content_desc'], + 'evaluate_content' => $params['evaluate_content'], + 'remark' => $params['remark'] ?? '', + ]); + 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/02 09:17 + */ + public static function edit(array $params): bool + { + Db::startTrans(); + try { + MarketingCustomReturnVisitSurvey::where('id', $params['id'])->update([ + 'custom_return_visit_id' => $params['custom_return_visit_id'], + 'survey_content' => $params['survey_content'], + 'survey_content_desc' => $params['survey_content_desc'], + 'evaluate_content' => $params['evaluate_content'], + 'remark' => $params['remark'] ?? '', + 'update_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/02 09:17 + */ + public static function delete(array $params): bool + { + return MarketingCustomReturnVisitSurvey::destroy($params['id']); + } + + + /** + * @notes 获取市场经营--客户回访列表--调查内容详情 + * @param $params + * @return array + * @author likeadmin + * @date 2024/04/02 09:17 + */ + public static function detail($params): array + { + return MarketingCustomReturnVisitSurvey::withoutField('create_time,update_time,delete_time')->findOrEmpty($params['id'])->toArray(); + } + } \ No newline at end of file diff --git a/app/adminapi/logic/marketing/MarketingCustomReturnVisitTemplateLogic.php b/app/adminapi/logic/marketing/MarketingCustomReturnVisitTemplateLogic.php index d5c639ae3..52875eddc 100644 --- a/app/adminapi/logic/marketing/MarketingCustomReturnVisitTemplateLogic.php +++ b/app/adminapi/logic/marketing/MarketingCustomReturnVisitTemplateLogic.php @@ -123,7 +123,8 @@ { $detail = MarketingCustomReturnVisitTemplateDetail::where('custom_id', 'in', $params['id'])->findOrEmpty(); if (!$detail->isEmpty()) { - return '此数据关联了回访内容信息,需删除回访内容信息'; + self::setError('此数据关联了回访内容信息,需删除回访内容信息'); + return false; } return MarketingCustomReturnVisitTemplate::destroy($params['id']); } @@ -142,4 +143,11 @@ $data['is_use_text'] = $data->is_use_text; return $data->toArray(); } + + public static function datas(): array + { + return MarketingCustomReturnVisitTemplate::field(['id', 'name'])->order(['id' => 'desc'])->select()->each(function ($data) { + $data['projectinfo'] = 'ID:' . $data['id'] . ' / 名称:' . $data['name']; + })->toArray(); + } } \ No newline at end of file diff --git a/app/adminapi/validate/marketing/MarketingCustomReturnVisitEvaluateValidate.php b/app/adminapi/validate/marketing/MarketingCustomReturnVisitEvaluateValidate.php new file mode 100644 index 000000000..35a128840 --- /dev/null +++ b/app/adminapi/validate/marketing/MarketingCustomReturnVisitEvaluateValidate.php @@ -0,0 +1,117 @@ + 'require|checkData', + 'custom_return_visit_id' => 'require|checkCustomReturnVisit', + 'name' => 'require', + 'job' => 'require', + 'opinions' => 'require', + ]; + + + /** + * 参数描述 + * @var string[] + */ + protected $field = [ + 'id' => 'id', + 'custom_return_visit_id' => '客户回访id', + 'name' => '姓名', + 'job' => '岗位', + 'opinions' => '意见和建议', + + ]; + + + /** + * @notes 添加场景 + * @return MarketingCustomReturnVisitEvaluateValidate + * @author likeadmin + * @date 2024/04/02 09:17 + */ + public function sceneAdd() + { + return $this->only(['custom_return_visit_id', 'name', 'job', 'opinions']); + } + + + /** + * @notes 编辑场景 + * @return MarketingCustomReturnVisitEvaluateValidate + * @author likeadmin + * @date 2024/04/02 09:17 + */ + public function sceneEdit() + { + return $this->only(['id', 'custom_return_visit_id', 'name', 'job', 'opinions']); + } + + + /** + * @notes 删除场景 + * @return MarketingCustomReturnVisitEvaluateValidate + * @author likeadmin + * @date 2024/04/02 09:17 + */ + public function sceneDelete() + { + return $this->only(['id'])->remove('id', 'checkData'); + } + + + /** + * @notes 详情场景 + * @return MarketingCustomReturnVisitEvaluateValidate + * @author likeadmin + * @date 2024/04/02 09:17 + */ + public function sceneDetail() + { + return $this->only(['id']); + } + + public function checkData($value): bool|string + { + $data = MarketingCustomReturnVisitEvaluate::where('id', $value)->findOrEmpty(); + return $data->isEmpty() ? '数据不存在' : true; + } + + public function checkCustomReturnVisit($value): bool|string + { + $data = MarketingCustomReturnVisit::where('id', $value)->findOrEmpty(); + return $data->isEmpty() ? '客户回访数据不存在' : true; + } + + } \ No newline at end of file diff --git a/app/adminapi/validate/marketing/MarketingCustomReturnVisitSurveyValidate.php b/app/adminapi/validate/marketing/MarketingCustomReturnVisitSurveyValidate.php new file mode 100644 index 000000000..50b15cf65 --- /dev/null +++ b/app/adminapi/validate/marketing/MarketingCustomReturnVisitSurveyValidate.php @@ -0,0 +1,117 @@ + 'require|checkData', + 'custom_return_visit_id' => 'require|checkCustomReturnVisit', + 'survey_content' => 'require', + 'survey_content_desc' => 'require', + 'evaluate_content' => 'require', + ]; + + + /** + * 参数描述 + * @var string[] + */ + protected $field = [ + 'id' => 'id', + 'custom_return_visit_id' => '客户回访id', + 'survey_content' => '调查内容', + 'survey_content_desc' => '内容说明', + 'evaluate_content' => '评价内容', + 'remark' => '备注', + ]; + + + /** + * @notes 添加场景 + * @return MarketingCustomReturnVisitSurveyValidate + * @author likeadmin + * @date 2024/04/02 09:17 + */ + public function sceneAdd() + { + return $this->only(['custom_return_visit_id', 'survey_content', 'survey_content_desc', 'evaluate_content', 'remark']); + } + + + /** + * @notes 编辑场景 + * @return MarketingCustomReturnVisitSurveyValidate + * @author likeadmin + * @date 2024/04/02 09:17 + */ + public function sceneEdit() + { + return $this->only(['id', 'custom_return_visit_id', 'survey_content', 'survey_content_desc', 'evaluate_content', 'remark']); + } + + + /** + * @notes 删除场景 + * @return MarketingCustomReturnVisitSurveyValidate + * @author likeadmin + * @date 2024/04/02 09:17 + */ + public function sceneDelete() + { + return $this->only(['id'])->remove('id', 'checkData'); + } + + + /** + * @notes 详情场景 + * @return MarketingCustomReturnVisitSurveyValidate + * @author likeadmin + * @date 2024/04/02 09:17 + */ + public function sceneDetail() + { + return $this->only(['id']); + } + + public function checkData($value): bool|string + { + $data = MarketingCustomReturnVisitSurvey::where('id', $value)->findOrEmpty(); + return $data->isEmpty() ? '数据不存在' : true; + } + + public function checkCustomReturnVisit($value): bool|string + { + $data = MarketingCustomReturnVisit::where('id', $value)->findOrEmpty(); + return $data->isEmpty() ? '客户回访数据不存在' : true; + } + + } \ No newline at end of file diff --git a/app/adminapi/validate/marketing/MarketingCustomReturnVisitValidate.php b/app/adminapi/validate/marketing/MarketingCustomReturnVisitValidate.php new file mode 100644 index 000000000..65b4d77e5 --- /dev/null +++ b/app/adminapi/validate/marketing/MarketingCustomReturnVisitValidate.php @@ -0,0 +1,183 @@ + 'require|checkData', + 'contract_id' => 'require|checkContract', + 'return_visit_type' => 'require|checkReturnVisitType', + 'custom_return_visit_template_id' => 'require|CustomReturnVisitTemplate', + 'create_user' => 'require', + 'create_time' => 'require|dateFormat:Y-m-d H:i:s', + 'annex' => 'checkAnnex', + 'survey' => 'checkSurvey', + 'evaluate' => 'checkEvaluate' + ]; + + + /** + * 参数描述 + * @var string[] + */ + protected $field = [ + 'id' => 'id', + 'contract_id' => '合同id', + 'code' => '回访编号', + 'return_visit_type' => '回访方式', + 'custom_return_visit_template_id' => '回访表模板', + 'create_user' => '回访人', + 'create_time' => '回访日期', + ]; + + + /** + * @notes 添加场景 + * @return MarketingCustomReturnVisitValidate + * @author likeadmin + * @date 2024/04/02 09:17 + */ + public function sceneAdd() + { + return $this->remove('id', true); + } + + + /** + * @notes 编辑场景 + * @return MarketingCustomReturnVisitValidate + * @author likeadmin + * @date 2024/04/02 09:17 + */ + public function sceneEdit() + { + } + + + /** + * @notes 删除场景 + * @return MarketingCustomReturnVisitValidate + * @author likeadmin + * @date 2024/04/02 09:17 + */ + public function sceneDelete() + { + return $this->only(['id'])->remove('id', 'checkData'); + } + + + /** + * @notes 详情场景 + * @return MarketingCustomReturnVisitValidate + * @author likeadmin + * @date 2024/04/02 09:17 + */ + public function sceneDetail() + { + return $this->only(['id']); + } + + public function checkData($value): bool|string + { + $data = MarketingCustomReturnVisit::where('id', $value)->findOrEmpty(); + return $data->isEmpty() ? '数据不存在' : true; + } + + public function checkContract($value) + { + //todo + return true; + } + + public function checkReturnVisitType($value): bool|string + { + $dict = DictData::where('type_value', 'return_visit_type')->column('value'); + return !in_array($value, $dict) ? '回访方式数据值无效' : true; + } + + public function CustomReturnVisitTemplate($value): bool|string + { + $data = MarketingCustomReturnVisitTemplate::where('id', $value)->findOrEmpty(); + return $data->isEmpty() ? '回访表模板数据不存在' : true; + } + + public function checkSurvey($value): bool|string + { + if (!isset($value) || $value == '') return true; + if (!is_array($value)) return '调查内容数据格式错误'; + foreach ($value as $k => $v) { + if (isset($v['id']) && !empty($v['id'])) { + $data = MarketingCustomReturnVisitSurvey::where('id', $v['id'])->findOrEmpty(); + if ($data->isEmpty()) { + return '第' . ($k + 1) . '行调查内容信息不存在'; + } + } + if (empty($v['survey_content'])) { + return '调查内容列表第' . ($k + 1) . '行调查内容为空'; + } + if (!empty($v['survey_content_desc'])) { + return '调查内容列表第' . ($k + 1) . '行内容说明为空'; + } + if (!empty($v['evaluate_content'])) { + return '调查内容列表第' . ($k + 1) . '行评价内容为空'; + } + } + return true; + } + + public function checkEvaluate($value): bool|string + { + if (!isset($value) || $value == '') return true; + if (!is_array($value)) return '项目成员评价数据格式错误'; + foreach ($value as $k => $v) { + if (isset($v['id']) && !empty($v['id'])) { + $data = MarketingCustomReturnVisitEvaluate::where('id', $v['id'])->findOrEmpty(); + if ($data->isEmpty()) { + return '第' . ($k + 1) . '行项目成员评价信息不存在'; + } + } + if (empty($v['name'])) { + return '项目成员评价列表第' . ($k + 1) . '行姓名为空'; + } + if (!empty($v['job'])) { + return '项目成员评价列表第' . ($k + 1) . '行岗位为空'; + } + if (!empty($v['opinions'])) { + return '项目成员评价列表第' . ($k + 1) . '行意见和建议为空'; + } + } + return true; + } + } \ No newline at end of file diff --git a/app/common/model/marketing/MarketingCustomReturnVisit.php b/app/common/model/marketing/MarketingCustomReturnVisit.php new file mode 100644 index 000000000..cf2158504 --- /dev/null +++ b/app/common/model/marketing/MarketingCustomReturnVisit.php @@ -0,0 +1,40 @@ +column('name', 'value'); + return !empty($data['return_visit_type']) ? $dict[$data['return_visit_type']] : ''; + } + } \ No newline at end of file diff --git a/app/common/model/marketing/MarketingCustomReturnVisitEvaluate.php b/app/common/model/marketing/MarketingCustomReturnVisitEvaluate.php new file mode 100644 index 000000000..365fae5eb --- /dev/null +++ b/app/common/model/marketing/MarketingCustomReturnVisitEvaluate.php @@ -0,0 +1,34 @@ +