From ba91b80fb499de9b558a03b5f48b91c7ad128b2d Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Sat, 12 Oct 2024 14:07:22 +0800 Subject: [PATCH 01/16] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E9=A6=96?= =?UTF-8?q?=E9=A1=B5=E6=8E=A8=E8=8D=90=E5=8C=BB=E7=94=9F=EF=BC=8C=E5=8E=BB?= =?UTF-8?q?=E9=99=A4=E4=BA=86=E6=95=B0=E9=87=8F=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Model/UserDoctor.php | 5 +---- app/Services/PatientDoctorService.php | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/app/Model/UserDoctor.php b/app/Model/UserDoctor.php index e09ebe5..af4ba3a 100644 --- a/app/Model/UserDoctor.php +++ b/app/Model/UserDoctor.php @@ -170,12 +170,10 @@ class UserDoctor extends Model * 2:接诊量由高到低的医生 * 3:好评率由高到低的医生 * 5:在线 - * 6:5个 - * @param int $limit 数量 * @param array $fields * @return array|Collection|\Hyperf\Utils\Collection */ - public static function getIndexRecommendDoctorLimit(int $limit = 5, array $fields = ['*']): array|Collection|\Hyperf\Utils\Collection + public static function getIndexRecommendDoctor(array $fields = ['*']): array|Collection|\Hyperf\Utils\Collection { $params = array(); // 状态(0:禁用 1:正常 2:删除) @@ -200,7 +198,6 @@ class UserDoctor extends Model ->orderBy("is_platform_deep_cooperation", "desc") ->orderBy("served_patients_num", "desc") ->orderBy("praise_rate", "desc") - ->limit($limit) ->get($fields); diff --git a/app/Services/PatientDoctorService.php b/app/Services/PatientDoctorService.php index 29b3ab6..0342484 100644 --- a/app/Services/PatientDoctorService.php +++ b/app/Services/PatientDoctorService.php @@ -481,7 +481,7 @@ class PatientDoctorService extends BaseService "be_good_at", ]; - $recommend_doctors = UserDoctorModel::getIndexRecommendDoctorLimit(5, $fields); + $recommend_doctors = UserDoctorModel::getIndexRecommendDoctor($fields); if (empty($recommend_doctors)) { return success(); } From bed64ae07979d4675a7130ed51623af9cc018010 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Fri, 18 Oct 2024 17:04:32 +0800 Subject: [PATCH 02/16] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BA=86=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E7=A7=91=E6=99=AE=E6=96=87=E7=AB=A0=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E7=9A=84=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Controller/ArticleController.php | 69 +++++++++++++++ app/Model/ArticleScience.php | 123 +++++++++++++++++++++++++++ app/Model/ArticleScienceClass.php | 67 +++++++++++++++ app/Model/ArticleScienceSource.php | 57 +++++++++++++ app/Model/BasicArticleClass.php | 58 +++++++++++++ app/Request/ArticleRequest.php | 51 +++++++++++ config/routes.php | 10 +++ 7 files changed, 435 insertions(+) create mode 100644 app/Controller/ArticleController.php create mode 100644 app/Model/ArticleScience.php create mode 100644 app/Model/ArticleScienceClass.php create mode 100644 app/Model/ArticleScienceSource.php create mode 100644 app/Model/BasicArticleClass.php create mode 100644 app/Request/ArticleRequest.php diff --git a/app/Controller/ArticleController.php b/app/Controller/ArticleController.php new file mode 100644 index 0000000..3e3d914 --- /dev/null +++ b/app/Controller/ArticleController.php @@ -0,0 +1,69 @@ +container->get(ArticleRequest::class); + $request->scene('getArticleScienceList')->validateResolved(); + + $keyword = $this->request->input('keyword',""); + $is_top = $this->request->input('is_top'); + $source_id = $this->request->input('source_id'); + $basic_class_id = $this->request->input('basic_class_id'); + $page = $this->request->input('page',1); + $per_page = $this->request->input('per_page',10); + + // 组合条件 + $article_science_params = array();// 文章搜索 + $article_science_class_params = array();// 文章分类搜索 + + // 是否置顶(0:否 1:是) + if (!empty($is_top)){ + $article_science_params['is_top'] = $is_top; + } + + // 来源id + if (!empty($source_id)){ + $article_science_params['source_id'] = $source_id; + } + + // 分类id + if (!empty($basic_class_id)){ + $article_science_class_params['basic_class_id'] = $basic_class_id; + } + + $fields = ["*"]; + $article_sciences = ArticleScience::getArticleSciencePage($keyword,$article_science_params, $article_science_class_params, $fields,$page,$per_page); + if (!empty($article_sciences['data'])) { + foreach ($article_sciences['data'] as &$article_science) { + $article_science['article_image'] = addAliyunOssWebsite($article_science['article_image']); + + if (!empty($article_science["ArticleScienceSource"])){ + $article_science["ArticleScienceSource"]["source_image"] = addAliyunOssWebsite($article_science["ArticleScienceSource"]["source_image"]); + } + + } + } + return $this->response->json($article_sciences); + } +} \ No newline at end of file diff --git a/app/Model/ArticleScience.php b/app/Model/ArticleScience.php new file mode 100644 index 0000000..18a39c9 --- /dev/null +++ b/app/Model/ArticleScience.php @@ -0,0 +1,123 @@ +hasOne(ArticleScienceSource::class, 'source_id', 'source_id'); + } + + /** + * 关联分类 + * @return HasMany + */ + public function ArticleScienceClass(): HasMany + { + return $this->hasMany(ArticleScienceClass::class, "article_id", "article_id"); + } + + /** + * 获取信息-单条 + * @param array $params + * @param array $fields + * @return object|null + */ + public static function getOne(array $params, array $fields = ['*']): object|null + { + return self::where($params)->first($fields); + } + + /** + * 获取数据-多 + * @param array $params + * @param array $fields + * @return Collection|array + */ + public static function getList(array $params = [], array $fields = ['*']): Collection|array + { + return self::where($params)->get($fields); + } + + /** + * 获取列表 + * @param string $keyword + * @param array $article_science_params 搜索条件 + * @param array $article_science_class_params 分类搜索条件 + * @param array $fields + * @param int|null $page + * @param int|null $per_page + * @return array + */ + public static function getArticleSciencePage(string $keyword = "", array $article_science_params = [], array $article_science_class_params = [], array $fields = ["*"], int $page = null, ?int $per_page = 10): array + { + $query = self::with(['ArticleScienceSource']) + ->where($article_science_params) + ->when($keyword, function ($query, $keyword) { + $query->where(function ($query) use ($keyword) { + $query->orwhere("article_title", 'like', '%' . $keyword . '%'); + $query->orWhereHas('ArticleScienceSource', function ($query) use ($keyword) { + $query->where('source_name', 'like', '%' . $keyword . '%'); + }); + $query->orWhereHas('ArticleScienceClass.BasicArticleClass', function ($query) use ($keyword) { + $query->where('basic_class_name', 'like', '%' . $keyword . '%'); + }); + }); + }) + ->whereHas('ArticleScienceClass.BasicArticleClass', function ($query) use ($article_science_class_params) { + $query->where($article_science_class_params); + }); + + $result = $query->paginate($per_page, $fields, "page", $page); + + $data = array(); + $data['current_page'] = $result->currentPage();// 当前页码 + $data['total'] = $result->total();//数据总数 + $data['data'] = $result->items();//数据 + $data['per_page'] = $result->perPage();//每页个数 + $data['last_page'] = $result->lastPage();//最后一页 + + return $data; + } + +} diff --git a/app/Model/ArticleScienceClass.php b/app/Model/ArticleScienceClass.php new file mode 100644 index 0000000..c56608a --- /dev/null +++ b/app/Model/ArticleScienceClass.php @@ -0,0 +1,67 @@ +hasOne(BasicArticleClass::class, 'basic_class_id', 'basic_class_id'); + } + + /** + * 获取信息-单条 + * @param array $params + * @param array $fields + * @return object|null + */ + public static function getOne(array $params, array $fields = ['*']): object|null + { + return self::where($params)->first($fields); + } + + /** + * 获取数据-多 + * @param array $params + * @param array $fields + * @return Collection|array + */ + public static function getList(array $params = [], array $fields = ['*']): Collection|array + { + return self::where($params)->get($fields); + } + +} diff --git a/app/Model/ArticleScienceSource.php b/app/Model/ArticleScienceSource.php new file mode 100644 index 0000000..a744f3b --- /dev/null +++ b/app/Model/ArticleScienceSource.php @@ -0,0 +1,57 @@ +first($fields); + } + + /** + * 获取数据-多 + * @param array $params + * @param array $fields + * @return Collection|array + */ + public static function getList(array $params = [], array $fields = ['*']): Collection|array + { + return self::where($params)->get($fields); + } +} diff --git a/app/Model/BasicArticleClass.php b/app/Model/BasicArticleClass.php new file mode 100644 index 0000000..abb66e2 --- /dev/null +++ b/app/Model/BasicArticleClass.php @@ -0,0 +1,58 @@ +first($fields); + } + + /** + * 获取数据-多 + * @param array $params + * @param array $fields + * @return Collection|array + */ + public static function getList(array $params = [], array $fields = ['*']): Collection|array + { + return self::where($params)->get($fields); + } + +} diff --git a/app/Request/ArticleRequest.php b/app/Request/ArticleRequest.php new file mode 100644 index 0000000..17ecfff --- /dev/null +++ b/app/Request/ArticleRequest.php @@ -0,0 +1,51 @@ + [ + 'keyword', + 'is_top', + 'source_id', + 'basic_class_id', + ], + ]; + + /** + * Determine if the user is authorized to make this request. + */ + public function authorize(): bool + { + return true; + } + + /** + * Get the validation rules that apply to the request. + */ + public function rules(): array + { + return [ + 'is_top' => ['sometimes','numeric','min:0','max:1'], + ]; + } + + /** + * 获取已定义验证规则的错误消息. + */ + public function messages(): array + { + return [ + 'is_top.required' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR), + 'is_top.numeric' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR), + 'is_top.min' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR), + 'is_top.max' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR), + ]; + } +} diff --git a/config/routes.php b/config/routes.php index bb99420..d147eaa 100644 --- a/config/routes.php +++ b/config/routes.php @@ -11,6 +11,7 @@ declare(strict_types=1); */ use App\Controller\AreaController; +use App\Controller\ArticleController; use App\Controller\BasicDataController; use App\Controller\CallBackController; use App\Controller\DetectionController; @@ -620,6 +621,15 @@ Router::addGroup('/patient', function () { // 检测是否可创建服务包问诊订单 Router::get('/check/{order_no}', [OrderServicePackageController::class, 'getServicePackageInquiryCheck']); }); + + // 文章 + Router::addGroup('/article', function () { + // 科普文章 + Router::addGroup('/science', function () { + // 获取科普文章列表 + Router::get('', [ArticleController::class, 'getArticleScienceList']); + }); + }); }); // 药师端api From 2f74a74705a8709463857b62779d3b85aac9eb64 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Thu, 24 Oct 2024 14:31:41 +0800 Subject: [PATCH 03/16] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BA=86=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E6=88=91=E5=8E=86=E5=8F=B2=E9=97=AE=E8=AF=8A=E5=8C=BB?= =?UTF-8?q?=E7=94=9F=E5=88=97=E8=A1=A8=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Controller/PatientDoctorController.php | 14 ++++++++++++++ config/routes.php | 3 +++ 2 files changed, 17 insertions(+) diff --git a/app/Controller/PatientDoctorController.php b/app/Controller/PatientDoctorController.php index aaa978a..b4c868a 100644 --- a/app/Controller/PatientDoctorController.php +++ b/app/Controller/PatientDoctorController.php @@ -74,6 +74,20 @@ class PatientDoctorController extends AbstractController return $this->response->json($data); } + /** + * 获取我历史问诊医生列表 + * @return ResponseInterface + */ + public function getHistoryDoctorList(): ResponseInterface + { + $user_info = $this->request->getAttribute("userInfo") ?? []; + + $PatientDoctorService = new PatientDoctorService(); + $data = $PatientDoctorService->getIndexPatientDoctorLimit($user_info['client_user_id']); + + return $this->response->json($data); + } + /** * 获取医生评价 * @return ResponseInterface diff --git a/config/routes.php b/config/routes.php index d147eaa..55f849b 100644 --- a/config/routes.php +++ b/config/routes.php @@ -402,6 +402,9 @@ Router::addGroup('/patient', function () { // 获取我的问诊、关注医生列表 Router::get('/my', [PatientDoctorController::class, 'getDoctorList']); + // 获取我历史问诊医生列表 + Router::get('/my', [PatientDoctorController::class, 'getHistoryDoctorList']); + // 获取医生评价 Router::get('/evaluation/{doctor_id:\d+}', [PatientDoctorController::class, 'getDoctorEvaluationList']); From 177ff8c6f0caec8b82c1360d7dccf553b534c8fa Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Thu, 24 Oct 2024 14:34:09 +0800 Subject: [PATCH 04/16] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BA=86=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E6=88=91=E5=8E=86=E5=8F=B2=E9=97=AE=E8=AF=8A=E5=8C=BB?= =?UTF-8?q?=E7=94=9F=E5=88=97=E8=A1=A8=E6=8E=A5=E5=8F=A31?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/routes.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/routes.php b/config/routes.php index 55f849b..7a7eaa8 100644 --- a/config/routes.php +++ b/config/routes.php @@ -403,7 +403,7 @@ Router::addGroup('/patient', function () { Router::get('/my', [PatientDoctorController::class, 'getDoctorList']); // 获取我历史问诊医生列表 - Router::get('/my', [PatientDoctorController::class, 'getHistoryDoctorList']); + Router::get('/history', [PatientDoctorController::class, 'getHistoryDoctorList']); // 获取医生评价 Router::get('/evaluation/{doctor_id:\d+}', [PatientDoctorController::class, 'getDoctorEvaluationList']); From eaebba84ea06db6b7730abd2b603c9834484bffd Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Thu, 24 Oct 2024 16:25:59 +0800 Subject: [PATCH 05/16] 1 --- app/Controller/ArticleController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Controller/ArticleController.php b/app/Controller/ArticleController.php index 3e3d914..f071fd3 100644 --- a/app/Controller/ArticleController.php +++ b/app/Controller/ArticleController.php @@ -64,6 +64,6 @@ class ArticleController extends AbstractController } } - return $this->response->json($article_sciences); + return $this->response->json(success($article_sciences)); } } \ No newline at end of file From c3e331a2b5b4230c8c3daa923a0bb135268f758d Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Fri, 1 Nov 2024 08:56:05 +0800 Subject: [PATCH 06/16] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=A6=96=E9=A1=B5=20?= =?UTF-8?q?=E6=88=91=E7=9A=84=E5=8C=BB=E7=94=9F=20=E5=A4=84=E6=96=B9?= =?UTF-8?q?=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Services/PatientDoctorService.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/app/Services/PatientDoctorService.php b/app/Services/PatientDoctorService.php index 0342484..6351996 100644 --- a/app/Services/PatientDoctorService.php +++ b/app/Services/PatientDoctorService.php @@ -652,6 +652,8 @@ class PatientDoctorService extends BaseService $params['history_status'] = 1; $patient_history_doctors = PatientHistoryInquiryModel::getListOrder($params); if (!empty($patient_history_doctors)) { + $userDoctorService = new UserDoctorService(); + foreach ($patient_history_doctors as $patient_history_doctor) { if (count($results) >= 5){ break; @@ -679,6 +681,14 @@ class PatientDoctorService extends BaseService continue; } + // 获取医生问诊配置 + $params = array(); + $params['doctor_id'] = $user_doctor['doctor_id']; + $doctor_inquiry_config = DoctorInquiryConfig::getInquiryConfigList($params); + if (empty($doctor_inquiry_config)){ + continue; + } + // 获取医生医院 $hospital_name = ""; if (!empty($user_doctor['hospital_id'])){ @@ -709,6 +719,11 @@ class PatientDoctorService extends BaseService // 在线状态 $data['is_online'] = $user['is_online']; + $data['multi_point_status'] = $user_doctor['multi_point_status']; // 医生多点执业认证状态(0:未认证 1:认证通过 2:审核中 3:认证失败) + + // 是否开启问诊购药 + $data['multi_point_enable'] = $userDoctorService->getDoctorMultiPointEnable("",$doctor_inquiry_config); + $results[] = $data; unset($data); From 25e75d4f6d2952f820ea3a3dac81ef40a4da0f3b Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Fri, 1 Nov 2024 08:58:29 +0800 Subject: [PATCH 07/16] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=A6=96=E9=A1=B5=20?= =?UTF-8?q?=E6=88=91=E7=9A=84=E5=8C=BB=E7=94=9F=20=E5=A4=84=E6=96=B9?= =?UTF-8?q?=E7=8A=B6=E6=80=811?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Services/PatientDoctorService.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/Services/PatientDoctorService.php b/app/Services/PatientDoctorService.php index 6351996..cda5ba2 100644 --- a/app/Services/PatientDoctorService.php +++ b/app/Services/PatientDoctorService.php @@ -691,12 +691,14 @@ class PatientDoctorService extends BaseService // 获取医生医院 $hospital_name = ""; + $hospital_level_name = ""; if (!empty($user_doctor['hospital_id'])){ $params = array(); $params['hospital_id'] = $user_doctor['hospital_id']; $hospital = Hospital::getOne($params); if (!empty($hospital)){ $hospital_name = $hospital['hospital_name']; + $hospital_level_name = $hospital['hospital_level_name'] ?? ""; } } @@ -706,7 +708,9 @@ class PatientDoctorService extends BaseService $data['user_name'] = $user_doctor['user_name']; $data['avatar'] = addAliyunOssWebsite($user_doctor['avatar']); $data['hospital_name'] = $hospital_name; - + $data['hospital_level_name'] = $hospital_level_name; + $data['be_good_at'] = $user_doctor['be_good_at']; + $data['department_custom_name'] = $user_doctor['department_custom_name']; $data['doctor_title'] = empty($user_doctor['doctor_title']) ? "" : DoctorTitleCode::getMessage($user_doctor['doctor_title']); // 按照天来计算,当日为1,前一天为2 未服务过为0 From d0e4be6c45f0298fd0625c9acfcb81f7ecdc5935 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Fri, 1 Nov 2024 11:39:21 +0800 Subject: [PATCH 08/16] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BA=86=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E7=A7=91=E6=99=AE=E6=96=87=E7=AB=A0=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Controller/ArticleController.php | 58 ++++++++++++++++++++++++++-- app/Model/ArticleScience.php | 35 ++++++++++++++++- app/Request/ArticleRequest.php | 6 +++ config/routes.php | 5 ++- 4 files changed, 99 insertions(+), 5 deletions(-) diff --git a/app/Controller/ArticleController.php b/app/Controller/ArticleController.php index f071fd3..0664b66 100644 --- a/app/Controller/ArticleController.php +++ b/app/Controller/ArticleController.php @@ -16,15 +16,15 @@ use Psr\Http\Message\ResponseInterface; class ArticleController extends AbstractController { /** - * 获取科普文章列表 + * 获取科普文章列表-分页 * @return ResponseInterface * @throws ContainerExceptionInterface * @throws NotFoundExceptionInterface */ - public function getArticleScienceList(): ResponseInterface + public function getArticleSciencePage(): ResponseInterface { $request = $this->container->get(ArticleRequest::class); - $request->scene('getArticleScienceList')->validateResolved(); + $request->scene('getArticleSciencePage')->validateResolved(); $keyword = $this->request->input('keyword',""); $is_top = $this->request->input('is_top'); @@ -66,4 +66,56 @@ class ArticleController extends AbstractController } return $this->response->json(success($article_sciences)); } + + /** + * 获取科普文章列表 + * @return ResponseInterface + * @throws ContainerExceptionInterface + * @throws NotFoundExceptionInterface + */ + public function getArticleScienceList(): ResponseInterface + { + $request = $this->container->get(ArticleRequest::class); + $request->scene('getArticleScienceList')->validateResolved(); + + $keyword = $this->request->input('keyword',""); + $is_top = $this->request->input('is_top'); + $source_id = $this->request->input('source_id'); + $basic_class_id = $this->request->input('basic_class_id'); + + // 组合条件 + $article_science_params = array();// 文章搜索 + $article_science_class_params = array();// 文章分类搜索 + + // 是否置顶(0:否 1:是) + if (!empty($is_top)){ + $article_science_params['is_top'] = $is_top; + } + + // 来源id + if (!empty($source_id)){ + $article_science_params['source_id'] = $source_id; + } + + // 分类id + if (!empty($basic_class_id)){ + $article_science_class_params['basic_class_id'] = $basic_class_id; + } + + $fields = ["*"]; + $article_sciences = ArticleScience::getArticleScienceList($keyword,$article_science_params, $article_science_class_params, $fields); + $article_sciences = $article_sciences->toArray(); + if (!empty($article_sciences)) { + foreach ($article_sciences as &$article_science) { + $article_science['article_image'] = addAliyunOssWebsite($article_science['article_image']); + + if (!empty($article_science["ArticleScienceSource"])){ + $article_science["ArticleScienceSource"]["source_image"] = addAliyunOssWebsite($article_science["ArticleScienceSource"]["source_image"]); + } + + } + } + + return $this->response->json(success($article_sciences)); + } } \ No newline at end of file diff --git a/app/Model/ArticleScience.php b/app/Model/ArticleScience.php index 18a39c9..3c35b6b 100644 --- a/app/Model/ArticleScience.php +++ b/app/Model/ArticleScience.php @@ -80,7 +80,7 @@ class ArticleScience extends Model } /** - * 获取列表 + * 获取列表-分页 * @param string $keyword * @param array $article_science_params 搜索条件 * @param array $article_science_class_params 分类搜索条件 @@ -120,4 +120,37 @@ class ArticleScience extends Model return $data; } + /** + * 获取列表 + * @param string $keyword + * @param array $article_science_params 搜索条件 + * @param array $article_science_class_params 分类搜索条件 + * @param array $fields + * @param int $limit + * @return Collection|array + */ + public static function getArticleScienceList(string $keyword = "", array $article_science_params = [], array $article_science_class_params = [], array $fields = ["*"], int $limit = 10): Collection|array + { + $query = self::with(['ArticleScienceSource']) + ->where($article_science_params) + ->when($keyword, function ($query, $keyword) { + $query->where(function ($query) use ($keyword) { + $query->orwhere("article_title", 'like', '%' . $keyword . '%'); + $query->orWhereHas('ArticleScienceSource', function ($query) use ($keyword) { + $query->where('source_name', 'like', '%' . $keyword . '%'); + }); + $query->orWhereHas('ArticleScienceClass.BasicArticleClass', function ($query) use ($keyword) { + $query->where('basic_class_name', 'like', '%' . $keyword . '%'); + }); + }); + }) + ->whereHas('ArticleScienceClass.BasicArticleClass', function ($query) use ($article_science_class_params) { + $query->where($article_science_class_params); + }); + + $data = $query->limit($limit)->get($fields); + + return $data; + } + } diff --git a/app/Request/ArticleRequest.php b/app/Request/ArticleRequest.php index 17ecfff..bd47c4b 100644 --- a/app/Request/ArticleRequest.php +++ b/app/Request/ArticleRequest.php @@ -10,6 +10,12 @@ use Hyperf\Validation\Request\FormRequest; class ArticleRequest extends FormRequest { protected array $scenes = [ + 'getArticleSciencePage' => [ + 'keyword', + 'is_top', + 'source_id', + 'basic_class_id', + ], 'getArticleScienceList' => [ 'keyword', 'is_top', diff --git a/config/routes.php b/config/routes.php index 7a7eaa8..3b22197 100644 --- a/config/routes.php +++ b/config/routes.php @@ -629,8 +629,11 @@ Router::addGroup('/patient', function () { Router::addGroup('/article', function () { // 科普文章 Router::addGroup('/science', function () { + // 获取科普文章列表-分页 + Router::get('', [ArticleController::class, 'getArticleSciencePage']); + // 获取科普文章列表 - Router::get('', [ArticleController::class, 'getArticleScienceList']); + Router::get('/list', [ArticleController::class, 'getArticleScienceList']); }); }); }); From 1cc2386623a54a04aa9879fc5704ad0deb9758b0 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Fri, 1 Nov 2024 13:39:29 +0800 Subject: [PATCH 09/16] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BA=86=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E7=A7=91=E6=99=AE=E6=96=87=E7=AB=A0=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=8E=A5=E5=8F=A31?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Controller/ArticleController.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/Controller/ArticleController.php b/app/Controller/ArticleController.php index 0664b66..6e6c15b 100644 --- a/app/Controller/ArticleController.php +++ b/app/Controller/ArticleController.php @@ -109,8 +109,9 @@ class ArticleController extends AbstractController foreach ($article_sciences as &$article_science) { $article_science['article_image'] = addAliyunOssWebsite($article_science['article_image']); - if (!empty($article_science["ArticleScienceSource"])){ - $article_science["ArticleScienceSource"]["source_image"] = addAliyunOssWebsite($article_science["ArticleScienceSource"]["source_image"]); + if (!empty($article_science["article_science_source"])){ + dump($article_science["article_science_source"]["source_image"]); + $article_science["article_science_source"]["source_image"] = addAliyunOssWebsite($article_science["article_science_source"]["source_image"]); } } From c5eb0dba0007fa70bf8d85280a427a56d873f34b Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Fri, 1 Nov 2024 13:44:32 +0800 Subject: [PATCH 10/16] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BA=86=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E7=A7=91=E6=99=AE=E6=96=87=E7=AB=A0=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=8E=A5=E5=8F=A32?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Controller/ArticleController.php | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/app/Controller/ArticleController.php b/app/Controller/ArticleController.php index 6e6c15b..17d108e 100644 --- a/app/Controller/ArticleController.php +++ b/app/Controller/ArticleController.php @@ -58,8 +58,8 @@ class ArticleController extends AbstractController foreach ($article_sciences['data'] as &$article_science) { $article_science['article_image'] = addAliyunOssWebsite($article_science['article_image']); - if (!empty($article_science["ArticleScienceSource"])){ - $article_science["ArticleScienceSource"]["source_image"] = addAliyunOssWebsite($article_science["ArticleScienceSource"]["source_image"]); + if (!empty($article_science["article_science_source"])){ + $article_science["article_science_source"]["source_image"] = addAliyunOssWebsite($article_science["article_science_source"]["source_image"]); } } @@ -110,10 +110,8 @@ class ArticleController extends AbstractController $article_science['article_image'] = addAliyunOssWebsite($article_science['article_image']); if (!empty($article_science["article_science_source"])){ - dump($article_science["article_science_source"]["source_image"]); $article_science["article_science_source"]["source_image"] = addAliyunOssWebsite($article_science["article_science_source"]["source_image"]); } - } } From 313f36792df0fdb45066bac065d60db8a499318b Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Fri, 1 Nov 2024 14:21:03 +0800 Subject: [PATCH 11/16] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BA=86=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E7=A7=91=E6=99=AE=E6=96=87=E7=AB=A0=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=8E=A5=E5=8F=A33?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Controller/ArticleController.php | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/app/Controller/ArticleController.php b/app/Controller/ArticleController.php index 17d108e..8b03559 100644 --- a/app/Controller/ArticleController.php +++ b/app/Controller/ArticleController.php @@ -6,6 +6,7 @@ use App\Model\ArticleScience; use App\Request\ArticleRequest; use App\Request\PatientDoctorRequest; use App\Services\PatientDoctorService; +use App\Utils\Log; use Psr\Container\ContainerExceptionInterface; use Psr\Container\NotFoundExceptionInterface; use Psr\Http\Message\ResponseInterface; @@ -57,11 +58,21 @@ class ArticleController extends AbstractController if (!empty($article_sciences['data'])) { foreach ($article_sciences['data'] as &$article_science) { $article_science['article_image'] = addAliyunOssWebsite($article_science['article_image']); + if (!empty($article_science["ArticleScienceSource"])){ + // 深拷贝 ArticleScienceSource 对象 + $clonedSource = clone $article_science["ArticleScienceSource"]; - if (!empty($article_science["article_science_source"])){ - $article_science["article_science_source"]["source_image"] = addAliyunOssWebsite($article_science["article_science_source"]["source_image"]); + + // 修改克隆对象的 source_image 字段 + $clonedSource["source_image"] = addAliyunOssWebsite($clonedSource["source_image"]); + + // 将修改后的克隆对象赋回原数组 + $article_science["article_science_source"] = $clonedSource; + unset($clonedSource); + unset($article_science["ArticleScienceSource"]); } + unset($article_science); } } return $this->response->json(success($article_sciences)); From b47151bd470b149f988ff6a5f72455e7be193bf0 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Mon, 4 Nov 2024 15:11:04 +0800 Subject: [PATCH 12/16] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E6=96=87?= =?UTF-8?q?=E7=AB=A0=E5=88=97=E8=A1=A8=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Model/ArticleScience.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Model/ArticleScience.php b/app/Model/ArticleScience.php index 3c35b6b..6328121 100644 --- a/app/Model/ArticleScience.php +++ b/app/Model/ArticleScience.php @@ -108,7 +108,7 @@ class ArticleScience extends Model $query->where($article_science_class_params); }); - $result = $query->paginate($per_page, $fields, "page", $page); + $result = $query->orderBy("is_top")->paginate($per_page, $fields, "page", $page); $data = array(); $data['current_page'] = $result->currentPage();// 当前页码 @@ -148,7 +148,7 @@ class ArticleScience extends Model $query->where($article_science_class_params); }); - $data = $query->limit($limit)->get($fields); + $data = $query->orderBy("is_top")->limit($limit)->get($fields); return $data; } From 7eab105f406bd7b4d980485881cd2906cf23bdef Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Mon, 4 Nov 2024 15:21:04 +0800 Subject: [PATCH 13/16] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E6=96=87?= =?UTF-8?q?=E7=AB=A0=E5=88=97=E8=A1=A8=E6=8E=92=E5=BA=8F1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Model/ArticleScience.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Model/ArticleScience.php b/app/Model/ArticleScience.php index 6328121..916015c 100644 --- a/app/Model/ArticleScience.php +++ b/app/Model/ArticleScience.php @@ -108,7 +108,7 @@ class ArticleScience extends Model $query->where($article_science_class_params); }); - $result = $query->orderBy("is_top")->paginate($per_page, $fields, "page", $page); + $result = $query->orderBy("is_top","desc")->orderBy("created_at","desc")->paginate($per_page, $fields, "page", $page); $data = array(); $data['current_page'] = $result->currentPage();// 当前页码 @@ -148,7 +148,7 @@ class ArticleScience extends Model $query->where($article_science_class_params); }); - $data = $query->orderBy("is_top")->limit($limit)->get($fields); + $data = $query->orderBy("is_top","desc")->orderBy("created_at","desc")->limit($limit)->get($fields); return $data; } From dfe64b5b0454b2d7dce9b5bc908daf35c909a7c2 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Mon, 4 Nov 2024 15:31:13 +0800 Subject: [PATCH 14/16] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E6=96=87?= =?UTF-8?q?=E7=AB=A0=E5=88=97=E8=A1=A8=E6=8E=92=E5=BA=8F2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Model/ArticleScience.php | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/app/Model/ArticleScience.php b/app/Model/ArticleScience.php index 916015c..5f0d672 100644 --- a/app/Model/ArticleScience.php +++ b/app/Model/ArticleScience.php @@ -18,11 +18,14 @@ use Hyperf\Snowflake\Concern\Snowflake; * @property string $article_title 文章标题 * @property int $article_status 文章状态(1:正常 2:禁用) * @property int $is_top 是否置顶(0:否 1:是) + * @property int $sort 排序值(越大越靠前) * @property string $article_image 文章图片(1张) * @property int $source_id 文章来源id * @property string $article_url 文章地址 - * @property Carbon $created_at 创建时间 - * @property Carbon $updated_at 修改时间 + * @property \Carbon\Carbon $created_at 创建时间 + * @property \Carbon\Carbon $updated_at 修改时间 + * @property-read ArticleScienceSource|null $ArticleScienceSource + * @property-read \Hyperf\Database\Model\Collection|ArticleScienceClass[]|null $ArticleScienceClass */ class ArticleScience extends Model { @@ -36,7 +39,7 @@ class ArticleScience extends Model /** * The attributes that are mass assignable. */ - protected array $fillable = ['article_id', 'article_title', 'article_status', 'is_top', 'article_image', 'source_id', 'article_url', 'created_at', 'updated_at']; + protected array $fillable = ['article_id', 'article_title', 'article_status', 'is_top', 'sort', 'article_image', 'source_id', 'article_url', 'created_at', 'updated_at']; protected string $primaryKey = "article_id"; @@ -108,7 +111,7 @@ class ArticleScience extends Model $query->where($article_science_class_params); }); - $result = $query->orderBy("is_top","desc")->orderBy("created_at","desc")->paginate($per_page, $fields, "page", $page); + $result = $query->orderBy("is_top","desc")->orderBy("sort","desc")->paginate($per_page, $fields, "page", $page); $data = array(); $data['current_page'] = $result->currentPage();// 当前页码 @@ -148,7 +151,7 @@ class ArticleScience extends Model $query->where($article_science_class_params); }); - $data = $query->orderBy("is_top","desc")->orderBy("created_at","desc")->limit($limit)->get($fields); + $data = $query->orderBy("is_top","desc")->orderBy("sort","desc")->limit($limit)->get($fields); return $data; } From 7c2b6d50bd586aec5079a11b5b6fdd77d75869d9 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Tue, 5 Nov 2024 15:27:59 +0800 Subject: [PATCH 15/16] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E6=96=87?= =?UTF-8?q?=E7=AB=A0=E5=88=97=E8=A1=A8=E6=8E=92=E5=BA=8F21?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Model/ArticleScience.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Model/ArticleScience.php b/app/Model/ArticleScience.php index 5f0d672..c3e66a8 100644 --- a/app/Model/ArticleScience.php +++ b/app/Model/ArticleScience.php @@ -111,7 +111,7 @@ class ArticleScience extends Model $query->where($article_science_class_params); }); - $result = $query->orderBy("is_top","desc")->orderBy("sort","desc")->paginate($per_page, $fields, "page", $page); + $result = $query->orderBy("is_top","desc")->orderBy("sort","desc")->orderBy("created_at","desc")->paginate($per_page, $fields, "page", $page); $data = array(); $data['current_page'] = $result->currentPage();// 当前页码 @@ -151,7 +151,7 @@ class ArticleScience extends Model $query->where($article_science_class_params); }); - $data = $query->orderBy("is_top","desc")->orderBy("sort","desc")->limit($limit)->get($fields); + $data = $query->orderBy("is_top","desc")->orderBy("sort","desc")->orderBy("created_at","desc")->limit($limit)->get($fields); return $data; } From ef5d78176c0dddb2cda83ecac853022734b887c0 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Tue, 5 Nov 2024 16:20:17 +0800 Subject: [PATCH 16/16] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E6=96=87?= =?UTF-8?q?=E7=AB=A0=E5=88=97=E8=A1=A8=E6=8E=92=E5=BA=8F211?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Controller/ArticleController.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/Controller/ArticleController.php b/app/Controller/ArticleController.php index 8b03559..aa1d9e0 100644 --- a/app/Controller/ArticleController.php +++ b/app/Controller/ArticleController.php @@ -38,6 +38,9 @@ class ArticleController extends AbstractController $article_science_params = array();// 文章搜索 $article_science_class_params = array();// 文章分类搜索 + // 文章状态(1:正常 2:禁用) + $article_science_params["article_status"] = 1; + // 是否置顶(0:否 1:是) if (!empty($is_top)){ $article_science_params['is_top'] = $is_top; @@ -98,6 +101,9 @@ class ArticleController extends AbstractController $article_science_params = array();// 文章搜索 $article_science_class_params = array();// 文章分类搜索 + // 文章状态(1:正常 2:禁用) + $article_science_params["article_status"] = 1; + // 是否置顶(0:否 1:是) if (!empty($is_top)){ $article_science_params['is_top'] = $is_top;