From 17c979105ceab1cac5892a3b1852326afd81c510 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Fri, 17 Nov 2023 09:09:10 +0800 Subject: [PATCH 01/87] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E8=A7=A3=E6=9E=90token?= =?UTF-8?q?=E6=97=B6=E8=BF=87=E6=9C=9F=E6=97=B6=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Middleware/Auth/AuthMiddleware.php | 42 +++++++++++++++----------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/app/Middleware/Auth/AuthMiddleware.php b/app/Middleware/Auth/AuthMiddleware.php index 5263fd1..c23bc79 100644 --- a/app/Middleware/Auth/AuthMiddleware.php +++ b/app/Middleware/Auth/AuthMiddleware.php @@ -62,9 +62,9 @@ class AuthMiddleware implements MiddlewareInterface $white_api = $Auth->checkApiWhiteList($path_info, $method); if (!empty($token)){ + $res = $redis->get('jwt_black_' . $token); if ($white_api){ // 存在token,免鉴权 - $res = $redis->get('jwt_black_' . $token); if ($res && time() >= $res) { // token存在黑名单中 return $handler->handle($request); @@ -78,31 +78,37 @@ class AuthMiddleware implements MiddlewareInterface } }else{ // 存在token,鉴权 - $res = $redis->get('jwt_black_' . $token); if ($res && time() >= $res) { // token存在黑名单中 return $this->response->json(fail(HttpEnumCode::TOKEN_ERROR)); } - // jwt验证 - $result = $Jwt->decode($token); + try { + // jwt验证 + $result = $Jwt->decode($token); - // 处理即将过期token - $req = $Auth->checkTokenExpTime($result); - if ($req) { - // 即将过期,重新下发token - $new_token = $Jwt->encode($result['userInfo']); + // 处理即将过期token + $req = $Auth->checkTokenExpTime($result); + if ($req) { + // 即将过期,重新下发token + $new_token = $Jwt->encode($result['userInfo']); - // 旧token加入黑名单 5天有效期,5天内,无法继续进行访问 - $res = $redis->set('jwt_black_' . $token, $result['exp'], 30); - if (!$res) { - // 添加缓存失败 - return $this->response->json(fail(HttpEnumCode::SERVER_ERROR)); + // 旧token加入黑名单 5天有效期,5天内,无法继续进行访问 + $res = $redis->set('jwt_black_' . $token, $result['exp'], 30); + if (!$res) { + // 添加缓存失败 + return $this->response->json(fail(HttpEnumCode::SERVER_ERROR)); + } + + $response = Context::get(ResponseInterface::class); + $response = $response->withHeader('Authorization', $new_token); + Context::set(ResponseInterface::class, $response); } - - $response = Context::get(ResponseInterface::class); - $response = $response->withHeader('Authorization', $new_token); - Context::set(ResponseInterface::class, $response); + }catch (\Throwable $e){ + if ($e->getCode() == 405 || $e->getCode() == 406){ + return $this->response->json(fail($e->getCode())); + } + return $this->response->json(fail(HttpEnumCode::SERVER_ERROR)); } } }else{ From d7d2937159c48a0b33766c4e4970d6a0d07f095a Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Mon, 20 Nov 2023 14:08:36 +0800 Subject: [PATCH 02/87] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=97=85=E6=83=85?= =?UTF-8?q?=E8=AE=B0=E5=BD=95model=EF=BC=8C=E6=96=B0=E5=A2=9E=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E6=82=A3=E8=80=85=E7=97=85=E4=BE=8B=EF=BC=8C=E7=97=85?= =?UTF-8?q?=E6=83=85=E4=B8=BB=E8=AF=89=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Model/PatientPathography.php | 123 +++++++++++ app/Model/PatientPathographyProduct.php | 79 +++++++ app/Services/PatientFamilyService.php | 282 +++++++++++++----------- 3 files changed, 351 insertions(+), 133 deletions(-) create mode 100644 app/Model/PatientPathography.php create mode 100644 app/Model/PatientPathographyProduct.php diff --git a/app/Model/PatientPathography.php b/app/Model/PatientPathography.php new file mode 100644 index 0000000..79f31a2 --- /dev/null +++ b/app/Model/PatientPathography.php @@ -0,0 +1,123 @@ +first($fields); + } + + /** + * 获取信息-单条 + * @param array $params + * @param array $fields + * @return object|null + */ + public static function getLastOne(array $params, array $fields = ['*']): object|null + { + return self::where($params)->latest("created_at")->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 array $data + * @return \Hyperf\Database\Model\Model|PatientPathography + */ + public static function addPatientPathography(array $data): \Hyperf\Database\Model\Model|PatientPathography + { + return self::create($data); + } + + /** + * 修改 + * @param array $params + * @param array $data + * @return int + */ + public static function edit(array $params = [], array $data = []): int + { + return self::where($params)->update($data); + } +} diff --git a/app/Model/PatientPathographyProduct.php b/app/Model/PatientPathographyProduct.php new file mode 100644 index 0000000..e0cd5c5 --- /dev/null +++ b/app/Model/PatientPathographyProduct.php @@ -0,0 +1,79 @@ +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 array $data + * @return \Hyperf\Database\Model\Model|PatientPathographyProduct + */ + public static function addPatientPathographyProduct(array $data): \Hyperf\Database\Model\Model|PatientPathographyProduct + { + return self::create($data); + } + + /** + * 修改 + * @param array $params + * @param array $data + * @return int + */ + public static function edit(array $params = [], array $data = []): int + { + return self::where($params)->update($data); + } + +} diff --git a/app/Services/PatientFamilyService.php b/app/Services/PatientFamilyService.php index a67193d..29b0f2b 100644 --- a/app/Services/PatientFamilyService.php +++ b/app/Services/PatientFamilyService.php @@ -10,6 +10,7 @@ use App\Model\OrderProduct; use App\Model\PatientFamily as PatientFamilyModel; use App\Model\PatientFamilyHealth; use App\Model\PatientFamilyPersonal as PatientFamilyPersonalModel; +use App\Model\PatientPathography; use App\Utils\Mask; use Extend\VerifyDun\IdCard; use GuzzleHttp\Exception\GuzzleException; @@ -96,15 +97,15 @@ class PatientFamilyService extends BaseService } // 检测省市区 - if (!empty($request_params['county_id']) ){ - if (empty($request_params['city_id']) || empty($request_params['province_id'])){ + if (!empty($request_params['county_id'])) { + if (empty($request_params['city_id']) || empty($request_params['province_id'])) { // 区县存在时需和城市、省份在一块 return fail(HttpEnumCode::CLIENT_HTTP_ERROR); } } - if (!empty($request_params['city_id']) ){ - if (empty($request_params['province_id'])){ + if (!empty($request_params['city_id'])) { + if (empty($request_params['province_id'])) { // 城市存在时需和省份在一块 return fail(HttpEnumCode::CLIENT_HTTP_ERROR); } @@ -112,13 +113,13 @@ class PatientFamilyService extends BaseService $areaService = new AreaService(); - if (!empty($request_params['province_id'])){ - $req = $areaService->checkAreaById($request_params['province_id'],$request_params['city_id'],$request_params['county_id']); - if(empty($req)){ - return fail(HttpEnumCode::HTTP_ERROR,"地区选择错误"); + if (!empty($request_params['province_id'])) { + $req = $areaService->checkAreaById($request_params['province_id'], $request_params['city_id'], $request_params['county_id']); + if (empty($req)) { + return fail(HttpEnumCode::HTTP_ERROR, "地区选择错误"); } - $area = $areaService->getAreaById($request_params['province_id'],$request_params['city_id'],$request_params['county_id']); + $area = $areaService->getAreaById($request_params['province_id'], $request_params['city_id'], $request_params['county_id']); } if ($request_params['type'] == 1) { @@ -129,38 +130,38 @@ class PatientFamilyService extends BaseService } // 民族 - if (!empty($request_params['nation_id'])){ + if (!empty($request_params['nation_id'])) { $params = array(); $params['nation_id'] = $request_params['nation_id']; $nation = BasicNation::getOne($params); - if (empty($nation)){ - return fail(HttpEnumCode::HTTP_ERROR,"民族选择错误"); + if (empty($nation)) { + return fail(HttpEnumCode::HTTP_ERROR, "民族选择错误"); } } // 职业 - if (!empty($request_params['job_id'])){ + if (!empty($request_params['job_id'])) { $params = array(); $params['job_id'] = $request_params['job_id']; $job = BasicJob::getOne($params); - if (empty($job)){ - return fail(HttpEnumCode::HTTP_ERROR,"职位选择错误"); + if (empty($job)) { + return fail(HttpEnumCode::HTTP_ERROR, "职位选择错误"); } } // 实人认证-生产环境开启 - $app_env = config('app_env','dev'); - if ($app_env != "dev"){ + $app_env = config('app_env', 'dev'); + if ($app_env != "dev") { $IdCard = new IdCard(); - $params =array(); + $params = array(); $params['name'] = $request_params['card_name']; $params['cardNo'] = $request_params['id_number']; $res = $IdCard->checkIdCard($params); - if (!empty($res)){ - return fail(HttpEnumCode::HTTP_ERROR,$res); + if (!empty($res)) { + return fail(HttpEnumCode::HTTP_ERROR, $res); } } @@ -185,8 +186,8 @@ class PatientFamilyService extends BaseService // 新增 患者家庭成员信息表-基本信息(patient_family) $data = array(); $data['patient_id'] = $user_info['client_user_id']; - if (isset($request_params['relation'])){ - if ($request_params['relation'] != null){ + if (isset($request_params['relation'])) { + if ($request_params['relation'] != null) { $data['relation'] = $request_params['relation']; } } @@ -214,26 +215,26 @@ class PatientFamilyService extends BaseService $data['county'] = $area['county']['area_name'] ?? ""; } - if (!empty($request_params['height'])){ + if (!empty($request_params['height'])) { $data['height'] = $request_params['height']; } - if (!empty($request_params['weight'])){ + if (!empty($request_params['weight'])) { $data['weight'] = $request_params['weight']; } - if (isset($request_params['marital_status'])){ - if ($request_params['marital_status'] !== null){ + if (isset($request_params['marital_status'])) { + if ($request_params['marital_status'] !== null) { $data['marital_status'] = $request_params['marital_status']; } } - if (!empty($request_params['nation_id'])){ + if (!empty($request_params['nation_id'])) { $data['nation_id'] = $request_params['nation_id']; $data['nation_name'] = $nation['nation_name']; } - if (!empty($request_params['job_id'])){ + if (!empty($request_params['job_id'])) { $data['job_id'] = $request_params['job_id']; $data['job_name'] = $job['job_name']; } @@ -311,7 +312,7 @@ class PatientFamilyService extends BaseService $params['status'] = 1; $patient_family = PatientFamilyModel::getOne($params); - if (empty($patient_family)){ + if (empty($patient_family)) { return success(); } @@ -349,7 +350,7 @@ class PatientFamilyService extends BaseService $patient_familys = PatientFamilyModel::getList($params); if (!empty($patient_familys)) { foreach ($patient_familys as $value) { - if ($value['family_id'] == $family_id){ + if ($value['family_id'] == $family_id) { continue; } @@ -382,21 +383,21 @@ class PatientFamilyService extends BaseService } // 检测省市区 - if (isset($request_params['province_id']) && isset($request_params['city_id']) && isset($request_params['county_id'])){ - if ($request_params['province_id'] != $patient_family['province_id'] || $request_params['city_id'] != $patient_family['city_id'] || $request_params['county_id'] != $patient_family['county_id']){ + if (isset($request_params['province_id']) && isset($request_params['city_id']) && isset($request_params['county_id'])) { + if ($request_params['province_id'] != $patient_family['province_id'] || $request_params['city_id'] != $patient_family['city_id'] || $request_params['county_id'] != $patient_family['county_id']) { $areaService = new AreaService(); - $req = $areaService->checkAreaById($request_params['province_id'],$request_params['city_id'],$request_params['county_id']); - if(empty($req)){ - return fail(HttpEnumCode::HTTP_ERROR,"地区选择错误"); + $req = $areaService->checkAreaById($request_params['province_id'], $request_params['city_id'], $request_params['county_id']); + if (empty($req)) { + return fail(HttpEnumCode::HTTP_ERROR, "地区选择错误"); } - $area = $areaService->getAreaById($request_params['province_id'],$request_params['city_id'],$request_params['county_id']); + $area = $areaService->getAreaById($request_params['province_id'], $request_params['city_id'], $request_params['county_id']); } } // 检测证件号是否修改 - if ($patient_family['id_number'] != $request_params['id_number'] || $patient_family['card_name'] != $request_params['card_name']){ + if ($patient_family['id_number'] != $request_params['id_number'] || $patient_family['card_name'] != $request_params['card_name']) { // 解析年龄、性别字段 $age = getIdCardAge($this->request->input('id_number')); @@ -415,25 +416,25 @@ class PatientFamilyService extends BaseService } // 民族 - if (!empty($request_params['nation_id'])){ - if ($patient_family['nation_id'] != $request_params['nation_id']){ + if (!empty($request_params['nation_id'])) { + if ($patient_family['nation_id'] != $request_params['nation_id']) { $params = array(); $params['nation_id'] = $request_params['nation_id']; $nation = BasicNation::getOne($params); - if (empty($nation)){ - return fail(HttpEnumCode::HTTP_ERROR,"民族选择错误"); + if (empty($nation)) { + return fail(HttpEnumCode::HTTP_ERROR, "民族选择错误"); } } } // 职业 - if (!empty($request_params['job_id'])){ - if ($patient_family['job_id'] != $request_params['job_id']){ + if (!empty($request_params['job_id'])) { + if ($patient_family['job_id'] != $request_params['job_id']) { $params = array(); $params['job_id'] = $request_params['job_id']; $job = BasicJob::getOne($params); - if (empty($job)){ - return fail(HttpEnumCode::HTTP_ERROR,"职位选择错误"); + if (empty($job)) { + return fail(HttpEnumCode::HTTP_ERROR, "职位选择错误"); } } } @@ -458,13 +459,13 @@ class PatientFamilyService extends BaseService $data = array(); if (isset($request_params['relation'])) { - if ($request_params['relation'] != $patient_family['relation']){ + if ($request_params['relation'] != $patient_family['relation']) { $data['relation'] = $request_params['relation']; } } if (isset($request_params['is_default'])) { - if ($request_params['is_default'] !== $patient_family['is_default']){ + if ($request_params['is_default'] !== $patient_family['is_default']) { $data['is_default'] = $request_params['is_default']; } } @@ -477,7 +478,7 @@ class PatientFamilyService extends BaseService $data['id_number_mask'] = Mask::maskIdCard($request_params['id_number']); } - if(isset($request_params['mobile'])){ + if (isset($request_params['mobile'])) { if ($patient_family['mobile'] != $request_params['mobile']) { $data['mobile'] = $request_params['mobile']; $data['mobile_mask'] = Mask::maskPhoneStr($request_params['mobile']); @@ -494,55 +495,55 @@ class PatientFamilyService extends BaseService if (isset($area)) { // 如有改动,变量确定存在 - if ($request_params['province_id'] != $patient_family['province_id']){ + if ($request_params['province_id'] != $patient_family['province_id']) { $data['province_id'] = $request_params['province_id']; $data['province'] = $area['province']['area_name'] ?? ""; } - if ($request_params['city_id'] != $patient_family['city_id']){ + if ($request_params['city_id'] != $patient_family['city_id']) { $data['city_id'] = $request_params['city_id']; $data['city'] = $area['city']['area_name'] ?? ""; } - if ($request_params['county_id'] != $patient_family['county_id']){ + if ($request_params['county_id'] != $patient_family['county_id']) { $data['county_id'] = $request_params['county_id']; $data['county'] = $area['county']['area_name'] ?? ""; } } - if(isset($request_params['height'])){ - if ($request_params['height'] != $patient_family['height']){ + if (isset($request_params['height'])) { + if ($request_params['height'] != $patient_family['height']) { $data['height'] = $request_params['height']; } } - if(isset($request_params['weight'])){ - if ($request_params['weight'] != $patient_family['weight']){ + if (isset($request_params['weight'])) { + if ($request_params['weight'] != $patient_family['weight']) { $data['weight'] = $request_params['weight']; } } - if(isset($request_params['marital_status'])){ - if ($request_params['marital_status'] !== $patient_family['marital_status']){ + if (isset($request_params['marital_status'])) { + if ($request_params['marital_status'] !== $patient_family['marital_status']) { $data['marital_status'] = $request_params['marital_status']; } } - if(isset($request_params['nation_id'])){ - if ($request_params['nation_id'] != $patient_family['nation_id']){ + if (isset($request_params['nation_id'])) { + if ($request_params['nation_id'] != $patient_family['nation_id']) { $data['nation_id'] = $request_params['nation_id']; $data['nation_name'] = $nation['nation_name']; } } - if(isset($request_params['job_id'])){ - if ($request_params['job_id'] != $patient_family['job_id']){ + if (isset($request_params['job_id'])) { + if ($request_params['job_id'] != $patient_family['job_id']) { $data['job_id'] = $request_params['job_id']; $data['job_name'] = $job['job_name']; } } - if (!empty($data)){ + if (!empty($data)) { $data['updated_at'] = date('Y-m-d H:i:s', time()); PatientFamilyModel::edit($params, $data); } @@ -572,7 +573,7 @@ class PatientFamilyService extends BaseService $params['patient_id'] = $user_info['client_user_id']; $patient_family_personal = PatientFamilyPersonalModel::getOne($params); - if (empty($patient_family_personal)){ + if (empty($patient_family_personal)) { return success(); } @@ -600,76 +601,76 @@ class PatientFamilyService extends BaseService // 修改 $data = array(); - if (isset($request_params['is_allergy_history'])){ - if ($request_params['is_allergy_history'] !== $patient_family_personal['is_allergy_history']){ + if (isset($request_params['is_allergy_history'])) { + if ($request_params['is_allergy_history'] !== $patient_family_personal['is_allergy_history']) { // 是否存在过敏史(0:否 1:是) $data['is_allergy_history'] = $request_params['is_allergy_history']; } - if ($request_params['allergy_history'] != $patient_family_personal['allergy_history']){ + if ($request_params['allergy_history'] != $patient_family_personal['allergy_history']) { $data['allergy_history'] = $request_params['allergy_history']; } } - if (isset($request_params['is_family_history'])){ - if ($request_params['is_family_history'] !== $patient_family_personal['is_family_history']){ + if (isset($request_params['is_family_history'])) { + if ($request_params['is_family_history'] !== $patient_family_personal['is_family_history']) { // 是否存在家族病史(0:否 1:是) $data['is_family_history'] = $request_params['is_family_history']; } - if ($request_params['family_history'] != $patient_family_personal['family_history']){ + if ($request_params['family_history'] != $patient_family_personal['family_history']) { $data['family_history'] = $request_params['family_history']; } } - if (isset($request_params['is_pregnant'])){ - if ($request_params['is_pregnant'] !== $patient_family_personal['is_pregnant']){ + if (isset($request_params['is_pregnant'])) { + if ($request_params['is_pregnant'] !== $patient_family_personal['is_pregnant']) { // 是否备孕、妊娠、哺乳期(0:否 1:是) $data['is_pregnant'] = $request_params['is_pregnant']; } - if ($request_params['pregnant'] != $patient_family_personal['pregnant']){ + if ($request_params['pregnant'] != $patient_family_personal['pregnant']) { $data['pregnant'] = $request_params['pregnant']; } } - if (isset($request_params['is_operation'])){ - if ($request_params['is_operation'] !== $patient_family_personal['is_operation']){ + if (isset($request_params['is_operation'])) { + if ($request_params['is_operation'] !== $patient_family_personal['is_operation']) { // 是否存在手术(0:否 1:是) $data['is_operation'] = $request_params['is_operation']; } - if ($request_params['operation'] != $patient_family_personal['operation']){ + if ($request_params['operation'] != $patient_family_personal['operation']) { $data['operation'] = $request_params['operation']; } } - if (isset($request_params['drink_wine_status'])){ - if ($request_params['drink_wine_status'] !== $patient_family_personal['drink_wine_status']){ + if (isset($request_params['drink_wine_status'])) { + if ($request_params['drink_wine_status'] !== $patient_family_personal['drink_wine_status']) { // 饮酒状态(1:从不 2:偶尔 3:经常 4:每天 5:已戒酒) $data['drink_wine_status'] = $request_params['drink_wine_status']; } } - if (isset($request_params['smoke_status'])){ - if ($request_params['smoke_status'] !== $patient_family_personal['smoke_status']){ + if (isset($request_params['smoke_status'])) { + if ($request_params['smoke_status'] !== $patient_family_personal['smoke_status']) { // 吸烟状态(1:从不 2:偶尔 3:经常 4:每天 5:已戒烟) $data['smoke_status'] = $request_params['smoke_status']; } } - if (isset($request_params['chemical_compound_status'])){ - if ($request_params['chemical_compound_status'] !== $patient_family_personal['chemical_compound_status']){ + if (isset($request_params['chemical_compound_status'])) { + if ($request_params['chemical_compound_status'] !== $patient_family_personal['chemical_compound_status']) { // 化合物状态(1:从不 2:偶尔 3:经常 4:每天) $data['chemical_compound_status'] = $request_params['chemical_compound_status']; } - if ($request_params['chemical_compound_describe'] != $patient_family_personal['chemical_compound_describe']){ + if ($request_params['chemical_compound_describe'] != $patient_family_personal['chemical_compound_describe']) { $data['chemical_compound_describe'] = $request_params['chemical_compound_describe']; } } - if (!empty($data)){ + if (!empty($data)) { $data['updated_at'] = date('Y-m-d H:i:s', time()); $params = array(); $params['family_personal_id'] = $patient_family_personal['family_personal_id']; @@ -710,50 +711,50 @@ class PatientFamilyService extends BaseService $data = array(); $data['family_id'] = $request_params['family_id']; $data['patient_id'] = $user_info['client_user_id']; - if (isset($request_params['is_allergy_history'])){ - if ($request_params['is_allergy_history'] !== null){ + if (isset($request_params['is_allergy_history'])) { + if ($request_params['is_allergy_history'] !== null) { $data['is_allergy_history'] = $request_params['is_allergy_history']; $data['allergy_history'] = $request_params['allergy_history'] ?? ""; } } - if (isset($request_params['is_family_history'])){ - if ($request_params['is_family_history'] !== null){ + if (isset($request_params['is_family_history'])) { + if ($request_params['is_family_history'] !== null) { $data['is_family_history'] = $request_params['is_family_history']; $data['family_history'] = $request_params['family_history'] ?? ""; } } - if (isset($request_params['is_pregnant'])){ - if ($request_params['is_pregnant'] !== null){ + if (isset($request_params['is_pregnant'])) { + if ($request_params['is_pregnant'] !== null) { $data['is_pregnant'] = $request_params['is_pregnant']; $data['pregnant'] = $request_params['pregnant'] ?? ""; } } - if (isset($request_params['is_operation'])){ - if ($request_params['is_operation'] !== null){ + if (isset($request_params['is_operation'])) { + if ($request_params['is_operation'] !== null) { $data['is_operation'] = $request_params['is_operation']; $data['operation'] = $request_params['operation'] ?? ""; } } - if (isset($request_params['drink_wine_status'])){ - if ($request_params['drink_wine_status'] !== null){ + if (isset($request_params['drink_wine_status'])) { + if ($request_params['drink_wine_status'] !== null) { $data['drink_wine_status'] = $request_params['drink_wine_status']; $data['smoke_status'] = $request_params['smoke_status'] ?? ""; } } - if (isset($request_params['chemical_compound_status'])){ - if ($request_params['chemical_compound_status'] !== null){ + if (isset($request_params['chemical_compound_status'])) { + if ($request_params['chemical_compound_status'] !== null) { $data['chemical_compound_status'] = $request_params['chemical_compound_status']; $data['chemical_compound_describe'] = $request_params['chemical_compound_describe']; } } $patient_family_personal = PatientFamilyPersonalModel::addPatientFamilyPersonal($data); - if (empty($patient_family_personal)){ + if (empty($patient_family_personal)) { return fail(); } @@ -774,7 +775,7 @@ class PatientFamilyService extends BaseService $params['family_id'] = $family_id; $params['patient_id'] = $user_info['client_user_id']; $patient_family_health = PatientFamilyHealth::getOne($params); - if (empty($patient_family_health)){ + if (empty($patient_family_health)) { return success(); } @@ -801,8 +802,8 @@ class PatientFamilyService extends BaseService } $data = array(); - if (isset($request_params['disease_class_id'])){ - if ($request_params['disease_class_id'] != $patient_family_health['disease_class_id']){ + if (isset($request_params['disease_class_id'])) { + if ($request_params['disease_class_id'] != $patient_family_health['disease_class_id']) { // 疾病分类id-系统 $data['disease_class_id'] = $request_params['disease_class_id']; @@ -810,43 +811,43 @@ class PatientFamilyService extends BaseService $params = array(); $params['disease_class_id'] = $request_params['disease_class_id']; $disease_class = DiseaseClass::getOne($params); - if (empty($disease_class)){ - return fail(HttpEnumCode::HTTP_ERROR,"疾病数据错误"); + if (empty($disease_class)) { + return fail(HttpEnumCode::HTTP_ERROR, "疾病数据错误"); } $data['disease_class_name'] = $disease_class['disease_class_name']; } } - if (isset($request_params['diagnosis_date'])){ - if ($request_params['diagnosis_date'] != $patient_family_health['diagnosis_date']){ + if (isset($request_params['diagnosis_date'])) { + if ($request_params['diagnosis_date'] != $patient_family_health['diagnosis_date']) { $data['diagnosis_date'] = $request_params['diagnosis_date']; } } - if (isset($request_params['diagnosis_hospital'])){ - if ($request_params['diagnosis_hospital'] != $patient_family_health['diagnosis_hospital']){ + if (isset($request_params['diagnosis_hospital'])) { + if ($request_params['diagnosis_hospital'] != $patient_family_health['diagnosis_hospital']) { $data['diagnosis_hospital'] = $request_params['diagnosis_hospital']; } } - if (isset($request_params['is_take_medicine'])){ - if ($request_params['is_take_medicine'] !== $patient_family_health['is_take_medicine']){ + if (isset($request_params['is_take_medicine'])) { + if ($request_params['is_take_medicine'] !== $patient_family_health['is_take_medicine']) { $data['is_take_medicine'] = $request_params['is_take_medicine']; - if ($request_params['drugs_name'] != $patient_family_health['drugs_name']){ + if ($request_params['drugs_name'] != $patient_family_health['drugs_name']) { $data['drugs_name'] = $request_params['drugs_name']; } } } - if (!empty($data)){ + if (!empty($data)) { $data['updated_at'] = date('Y-m-d H:i:s', time()); $params = array(); $params['family_health_id'] = $patient_family_health['family_health_id']; - PatientFamilyHealth::edit($params,$data); + PatientFamilyHealth::edit($params, $data); } return success(); @@ -883,8 +884,8 @@ class PatientFamilyService extends BaseService $data['family_id'] = $request_params['family_id']; $data['patient_id'] = $user_info['client_user_id']; - if (isset($request_params['disease_class_id'])){ - if (!empty($request_params['disease_class_id'])){ + if (isset($request_params['disease_class_id'])) { + if (!empty($request_params['disease_class_id'])) { // 疾病分类id-系统 $data['disease_class_id'] = $request_params['disease_class_id']; @@ -892,35 +893,35 @@ class PatientFamilyService extends BaseService $params = array(); $params['disease_class_id'] = $request_params['disease_class_id']; $disease_class = DiseaseClass::getOne($params); - if (empty($disease_class)){ - return fail(HttpEnumCode::HTTP_ERROR,"疾病数据错误"); + if (empty($disease_class)) { + return fail(HttpEnumCode::HTTP_ERROR, "疾病数据错误"); } $data['disease_class_name'] = $disease_class['disease_class_name']; } } - if (isset($request_params['diagnosis_date'])){ - if (!empty($request_params['diagnosis_date'])){ + if (isset($request_params['diagnosis_date'])) { + if (!empty($request_params['diagnosis_date'])) { $data['diagnosis_date'] = $request_params['diagnosis_date']; } } - if (isset($request_params['diagnosis_hospital'])){ - if (!empty($request_params['diagnosis_hospital'])){ + if (isset($request_params['diagnosis_hospital'])) { + if (!empty($request_params['diagnosis_hospital'])) { $data['diagnosis_hospital'] = $request_params['diagnosis_hospital']; } } - if (isset($request_params['is_take_medicine'])){ - if ($request_params['is_take_medicine'] !== null){ + if (isset($request_params['is_take_medicine'])) { + if ($request_params['is_take_medicine'] !== null) { $data['is_take_medicine'] = $request_params['is_take_medicine']; $data['drugs_name'] = $request_params['drugs_name'] ?? ""; } } $patient_family_health = PatientFamilyHealth::addPatientFamilyHealth($data); - if (empty($patient_family_health)){ + if (empty($patient_family_health)) { return fail(); } @@ -935,13 +936,13 @@ class PatientFamilyService extends BaseService { $user_info = $this->request->getAttribute("userInfo"); - $family_id = $this->request->input('family_id',0); + $family_id = $this->request->input('family_id', 0); $page = $this->request->input('page', 1); $per_page = $this->request->input('per_page', 10); $params = array(); $params['patient_id'] = $user_info['client_user_id']; - if ($family_id != 0){ + if ($family_id != 0) { $params['family_id'] = $family_id; } @@ -956,11 +957,11 @@ class PatientFamilyService extends BaseService 'created_at', ]; - $result = OrderProduct::getProductRecordPage($params,$fields,$page,$per_page); - if (!empty($result['data'])){ - foreach ($result['data'] as &$item){ - if (!empty($item['OrderProductItem'])){ - foreach ($item['OrderProductItem'] as &$order_product_item){ + $result = OrderProduct::getProductRecordPage($params, $fields, $page, $per_page); + if (!empty($result['data'])) { + foreach ($result['data'] as &$item) { + if (!empty($item['OrderProductItem'])) { + foreach ($item['OrderProductItem'] as &$order_product_item) { $order_product_item['product_cover_img'] = addAliyunOssWebsite($order_product_item['product_cover_img']); } } @@ -990,10 +991,17 @@ class PatientFamilyService extends BaseService $params['patient_id'] = $user_info['client_user_id']; $patient_family_personal = PatientFamilyPersonalModel::getOne($params); - if (empty($patient_family_health) && empty($patient_family_personal)){ + if (empty($patient_family_health) && empty($patient_family_personal)) { return success(null); } + // 获取病情记录 + $params = array(); + $params['user_id'] = $user_info['user_id']; + $params['patient_id'] = $user_info['client_user_id']; + $params['family_id'] = $family_id; + $patient_pathography = PatientPathography::getLastOne($params); + $result = array(); $result['user_id'] = $user_info['user_id']; $result['patient_id'] = $user_info['client_user_id']; @@ -1007,24 +1015,32 @@ class PatientFamilyService extends BaseService $result['family_history'] = null; // 家族病史描述 $result['is_pregnant'] = null; // 是否备孕、妊娠、哺乳期(0:否 1:是) $result['pregnant'] = null; // 备孕、妊娠、哺乳期描述 + $result['disease_desc'] = ""; // 病情描述(主诉) - if (!empty($patient_family_personal)){ - if ($patient_family_personal['is_allergy_history'] != null){ + if (!empty($patient_family_personal)) { + if ($patient_family_personal['is_allergy_history'] != null) { $result['is_allergy_history'] = (int)$patient_family_personal['is_allergy_history']; // 是否存在过敏史(0:否 1:是) $result['allergy_history'] = $patient_family_personal['allergy_history']; // 过敏史描述 } - if ($patient_family_personal['is_family_history'] != null){ + if ($patient_family_personal['is_family_history'] != null) { $result['is_family_history'] = (int)$patient_family_personal['is_family_history']; // 是否存在家族病史(0:否 1:是) $result['family_history'] = $patient_family_personal['family_history']; // 家族病史描述 } - if ($patient_family_personal['is_pregnant'] != null){ + if ($patient_family_personal['is_pregnant'] != null) { $result['is_pregnant'] = (int)$patient_family_personal['is_pregnant']; // 是否备孕、妊娠、哺乳期(0:否 1:是) $result['pregnant'] = $patient_family_personal['pregnant']; // 备孕、妊娠、哺乳期描述 } } + // 病情主诉 + if (!empty($patient_pathography)){ + if ($patient_pathography['disease_desc'] != null){ + $result['disease_desc'] = $patient_pathography['disease_desc']; // 病情描述(主诉) + } + } + return success($result); } } \ No newline at end of file From 142375a752c15dec2f4dad0299233a04efc9e0bc Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Mon, 20 Nov 2023 14:58:22 +0800 Subject: [PATCH 03/87] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=A3=80=E6=B5=8B?= =?UTF-8?q?=E5=AE=B6=E5=BA=AD=E6=88=90=E5=91=98=E6=98=AF=E5=90=A6=E5=AD=98?= =?UTF-8?q?=E5=9C=A8=E7=97=85=E6=83=85=E8=AE=B0=E5=BD=95=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PatientPathographyController.php | 23 ++++++++ app/Request/PatientPathographyRequest.php | 54 +++++++++++++++++++ app/Services/PatientPathographyService.php | 36 +++++++++++++ config/routes.php | 9 +++- 4 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 app/Controller/PatientPathographyController.php create mode 100644 app/Request/PatientPathographyRequest.php create mode 100644 app/Services/PatientPathographyService.php diff --git a/app/Controller/PatientPathographyController.php b/app/Controller/PatientPathographyController.php new file mode 100644 index 0000000..d60c722 --- /dev/null +++ b/app/Controller/PatientPathographyController.php @@ -0,0 +1,23 @@ +existFamilyPathography(); + return $this->response->json($data); + } +} \ No newline at end of file diff --git a/app/Request/PatientPathographyRequest.php b/app/Request/PatientPathographyRequest.php new file mode 100644 index 0000000..8433af7 --- /dev/null +++ b/app/Request/PatientPathographyRequest.php @@ -0,0 +1,54 @@ + [ // 获取患者优惠卷列表 +// 'user_coupon_status', +// ], + ]; + + /** + * 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 [ +// 'user_coupon_status' => 'required|numeric|min:0|max:3', +// 'product_id' => 'required', +// 'shopping_cart_num' => 'required|numeric|min:0|max:999', + ]; + } + + /** + * 获取已定义验证规则的错误消息. + */ + public function messages(): array + { + return [ +// 'user_coupon_status.required' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR), +// 'user_coupon_status.numeric' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR), +// 'user_coupon_status.min' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR), +// 'user_coupon_status.max' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR), +// 'product_id.required' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR), +// +// 'shopping_cart_num.required' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR), +// 'shopping_cart_num.numeric' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR), +// 'shopping_cart_num.min' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR), +// 'shopping_cart_num.max' => "请勿超出最大添加数量", + ]; + } +} \ No newline at end of file diff --git a/app/Services/PatientPathographyService.php b/app/Services/PatientPathographyService.php new file mode 100644 index 0000000..3afd002 --- /dev/null +++ b/app/Services/PatientPathographyService.php @@ -0,0 +1,36 @@ +request->getAttribute("userInfo") ?? []; + $family_id = $this->request->route('family_id'); + + $result = array(); + $result['is_exist'] = 0; + + // 获取病情记录 + $params = array(); + $params['user_id'] = $user_info['user_id']; + $params['patient_id'] = $user_info['client_user_id']; + $params['family_id'] = $family_id; + $patient_pathography = PatientPathography::getLastOne($params); + if (!empty($patient_pathography)){ + $result['is_exist'] = 1; + } + + return success($result); + } +} \ No newline at end of file diff --git a/config/routes.php b/config/routes.php index 6be0c8f..2ee36e4 100644 --- a/config/routes.php +++ b/config/routes.php @@ -25,6 +25,7 @@ use App\Controller\PatientCenterController; use App\Controller\PatientDoctorController; use App\Controller\PatientFamilyController; use App\Controller\PatientOrderController; +use App\Controller\PatientPathographyController; use App\Controller\SafeController; use App\Controller\SystemController; use App\Controller\TestController; @@ -375,7 +376,7 @@ Router::addGroup('/patient', function () { Router::post('', [PatientFamilyController::class, 'addFamilyHealth']); }); - // 药品 + // 用药记录 Router::addGroup('/product', function () { // 获取家庭成员用药记录列表 Router::get('/record', [PatientFamilyController::class, 'getFamilyProductRecord']); @@ -485,6 +486,12 @@ Router::addGroup('/patient', function () { // 获取患者系统消息通知最后一条消息 Router::get('/system/last', [MessageNoticeController::class, 'getPatientMessageServiceLast']); }); + + // 病情记录 + Router::addGroup('/pathography', function () { + // 检测家庭成员是否存在病情记录 + Router::get('/exist/{family_id:\d+}', [PatientPathographyController::class, 'existFamilyPathography']); + }); }); // 药师端api From 083484aad64209771772e164f011df8a467a1e42 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Mon, 20 Nov 2023 15:16:20 +0800 Subject: [PATCH 04/87] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E8=B7=AF=E7=94=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Controller/PatientFamilyController.php | 11 ++++++ .../PatientPathographyController.php | 23 ------------ app/Services/PatientFamilyService.php | 25 +++++++++++++ app/Services/PatientPathographyService.php | 36 ------------------- config/routes.php | 16 +++++---- 5 files changed, 46 insertions(+), 65 deletions(-) delete mode 100644 app/Controller/PatientPathographyController.php delete mode 100644 app/Services/PatientPathographyService.php diff --git a/app/Controller/PatientFamilyController.php b/app/Controller/PatientFamilyController.php index 49f73dc..ec83eb2 100644 --- a/app/Controller/PatientFamilyController.php +++ b/app/Controller/PatientFamilyController.php @@ -250,4 +250,15 @@ class PatientFamilyController extends AbstractController $data = $patientFamilyService->getFamilyCase(); return $this->response->json($data); } + + /** + * 检测家庭成员是否存在病情记录 + * @return ResponseInterface + */ + public function existFamilyPathography(): ResponseInterface + { + $patientFamilyService = new PatientFamilyService(); + $data = $patientFamilyService->existFamilyPathography(); + return $this->response->json($data); + } } \ No newline at end of file diff --git a/app/Controller/PatientPathographyController.php b/app/Controller/PatientPathographyController.php deleted file mode 100644 index d60c722..0000000 --- a/app/Controller/PatientPathographyController.php +++ /dev/null @@ -1,23 +0,0 @@ -existFamilyPathography(); - return $this->response->json($data); - } -} \ No newline at end of file diff --git a/app/Services/PatientFamilyService.php b/app/Services/PatientFamilyService.php index 29b0f2b..91abc4c 100644 --- a/app/Services/PatientFamilyService.php +++ b/app/Services/PatientFamilyService.php @@ -1043,4 +1043,29 @@ class PatientFamilyService extends BaseService return success($result); } + + /** + * 检测家庭成员是否存在病情记录 + * @return array + */ + public function existFamilyPathography(): array + { + $user_info = $this->request->getAttribute("userInfo") ?? []; + $family_id = $this->request->route('family_id'); + + $result = array(); + $result['is_exist'] = 0; + + // 获取病情记录 + $params = array(); + $params['user_id'] = $user_info['user_id']; + $params['patient_id'] = $user_info['client_user_id']; + $params['family_id'] = $family_id; + $patient_pathography = PatientPathography::getLastOne($params); + if (!empty($patient_pathography)){ + $result['is_exist'] = 1; + } + + return success($result); + } } \ No newline at end of file diff --git a/app/Services/PatientPathographyService.php b/app/Services/PatientPathographyService.php deleted file mode 100644 index 3afd002..0000000 --- a/app/Services/PatientPathographyService.php +++ /dev/null @@ -1,36 +0,0 @@ -request->getAttribute("userInfo") ?? []; - $family_id = $this->request->route('family_id'); - - $result = array(); - $result['is_exist'] = 0; - - // 获取病情记录 - $params = array(); - $params['user_id'] = $user_info['user_id']; - $params['patient_id'] = $user_info['client_user_id']; - $params['family_id'] = $family_id; - $patient_pathography = PatientPathography::getLastOne($params); - if (!empty($patient_pathography)){ - $result['is_exist'] = 1; - } - - return success($result); - } -} \ No newline at end of file diff --git a/config/routes.php b/config/routes.php index 2ee36e4..2d6553d 100644 --- a/config/routes.php +++ b/config/routes.php @@ -25,7 +25,6 @@ use App\Controller\PatientCenterController; use App\Controller\PatientDoctorController; use App\Controller\PatientFamilyController; use App\Controller\PatientOrderController; -use App\Controller\PatientPathographyController; use App\Controller\SafeController; use App\Controller\SystemController; use App\Controller\TestController; @@ -381,6 +380,15 @@ Router::addGroup('/patient', function () { // 获取家庭成员用药记录列表 Router::get('/record', [PatientFamilyController::class, 'getFamilyProductRecord']); }); + + // 病情记录 + Router::addGroup('/pathography', function () { + // 检测家庭成员是否存在病情记录 + Router::get('/exist/{family_id:\d+}', [PatientFamilyController::class, 'existFamilyPathography']); + +// // 获取家庭成员病情记录列表-分页 +// Router::get('/exist/{family_id:\d+}', [PatientPathographyController::class, 'existFamilyPathography']); + }); }); // 药品 @@ -487,11 +495,7 @@ Router::addGroup('/patient', function () { Router::get('/system/last', [MessageNoticeController::class, 'getPatientMessageServiceLast']); }); - // 病情记录 - Router::addGroup('/pathography', function () { - // 检测家庭成员是否存在病情记录 - Router::get('/exist/{family_id:\d+}', [PatientPathographyController::class, 'existFamilyPathography']); - }); + }); // 药师端api From 65a5f6bc4d5daaeed4bf817d481c0bbf0848ef91 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Mon, 20 Nov 2023 15:35:24 +0800 Subject: [PATCH 05/87] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E8=B7=AF=E7=94=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Controller/PatientFamilyController.php | 12 +------ .../PatientPathographyController.php | 32 +++++++++++++++++ app/Request/PatientPathographyRequest.php | 13 +++---- app/Services/PatientFamilyService.php | 23 ------------ app/Services/PatientPathographyService.php | 36 +++++++++++++++++++ config/routes.php | 7 ++-- 6 files changed, 78 insertions(+), 45 deletions(-) create mode 100644 app/Controller/PatientPathographyController.php create mode 100644 app/Services/PatientPathographyService.php diff --git a/app/Controller/PatientFamilyController.php b/app/Controller/PatientFamilyController.php index ec83eb2..443da1b 100644 --- a/app/Controller/PatientFamilyController.php +++ b/app/Controller/PatientFamilyController.php @@ -5,6 +5,7 @@ namespace App\Controller; use App\Constants\HttpEnumCode; use App\Request\PatientFamilyRequest; use App\Services\PatientFamilyService; +use App\Services\PatientPathographyService; use GuzzleHttp\Exception\GuzzleException; use Hyperf\Validation\Contract\ValidatorFactoryInterface; use Psr\Container\ContainerExceptionInterface; @@ -250,15 +251,4 @@ class PatientFamilyController extends AbstractController $data = $patientFamilyService->getFamilyCase(); return $this->response->json($data); } - - /** - * 检测家庭成员是否存在病情记录 - * @return ResponseInterface - */ - public function existFamilyPathography(): ResponseInterface - { - $patientFamilyService = new PatientFamilyService(); - $data = $patientFamilyService->existFamilyPathography(); - return $this->response->json($data); - } } \ No newline at end of file diff --git a/app/Controller/PatientPathographyController.php b/app/Controller/PatientPathographyController.php new file mode 100644 index 0000000..ea2b7bf --- /dev/null +++ b/app/Controller/PatientPathographyController.php @@ -0,0 +1,32 @@ +container->get(PatientPathographyRequest::class); + $request->scene('existFamilyPathography')->validateResolved(); + + $PatientPathographyService = new PatientPathographyService(); + $data = $PatientPathographyService->existFamilyPathography(); + return $this->response->json($data); + }catch (\Throwable $e){ + return $this->response->json(fail()); + } + } +} \ No newline at end of file diff --git a/app/Request/PatientPathographyRequest.php b/app/Request/PatientPathographyRequest.php index 8433af7..7ba440b 100644 --- a/app/Request/PatientPathographyRequest.php +++ b/app/Request/PatientPathographyRequest.php @@ -8,9 +8,9 @@ use Hyperf\Validation\Request\FormRequest; class PatientPathographyRequest extends FormRequest { protected array $scenes = [ -// 'existFamilyPathography' => [ // 获取患者优惠卷列表 -// 'user_coupon_status', -// ], + 'existFamilyPathography' => [ // 获取患者优惠卷列表 + 'family_id', + ], ]; /** @@ -27,9 +27,7 @@ class PatientPathographyRequest extends FormRequest public function rules(): array { return [ -// 'user_coupon_status' => 'required|numeric|min:0|max:3', -// 'product_id' => 'required', -// 'shopping_cart_num' => 'required|numeric|min:0|max:999', + 'family_id' => 'required', ]; } @@ -39,8 +37,7 @@ class PatientPathographyRequest extends FormRequest public function messages(): array { return [ -// 'user_coupon_status.required' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR), -// 'user_coupon_status.numeric' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR), + 'family_id.required' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR), // 'user_coupon_status.min' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR), // 'user_coupon_status.max' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR), // 'product_id.required' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR), diff --git a/app/Services/PatientFamilyService.php b/app/Services/PatientFamilyService.php index 91abc4c..4d06ae9 100644 --- a/app/Services/PatientFamilyService.php +++ b/app/Services/PatientFamilyService.php @@ -1044,28 +1044,5 @@ class PatientFamilyService extends BaseService return success($result); } - /** - * 检测家庭成员是否存在病情记录 - * @return array - */ - public function existFamilyPathography(): array - { - $user_info = $this->request->getAttribute("userInfo") ?? []; - $family_id = $this->request->route('family_id'); - $result = array(); - $result['is_exist'] = 0; - - // 获取病情记录 - $params = array(); - $params['user_id'] = $user_info['user_id']; - $params['patient_id'] = $user_info['client_user_id']; - $params['family_id'] = $family_id; - $patient_pathography = PatientPathography::getLastOne($params); - if (!empty($patient_pathography)){ - $result['is_exist'] = 1; - } - - return success($result); - } } \ No newline at end of file diff --git a/app/Services/PatientPathographyService.php b/app/Services/PatientPathographyService.php new file mode 100644 index 0000000..b61dcbb --- /dev/null +++ b/app/Services/PatientPathographyService.php @@ -0,0 +1,36 @@ +request->getAttribute("userInfo") ?? []; + $family_id = $this->request->input('family_id'); + + $result = array(); + $result['is_exist'] = 0; + + // 获取病情记录 + $params = array(); + $params['user_id'] = $user_info['user_id']; + $params['patient_id'] = $user_info['client_user_id']; + $params['family_id'] = $family_id; + $patient_pathography = PatientPathography::getLastOne($params); + if (!empty($patient_pathography)){ + $result['is_exist'] = 1; + } + + return success($result); + } +} \ No newline at end of file diff --git a/config/routes.php b/config/routes.php index 2d6553d..ad9aa58 100644 --- a/config/routes.php +++ b/config/routes.php @@ -25,6 +25,7 @@ use App\Controller\PatientCenterController; use App\Controller\PatientDoctorController; use App\Controller\PatientFamilyController; use App\Controller\PatientOrderController; +use App\Controller\PatientPathographyController; use App\Controller\SafeController; use App\Controller\SystemController; use App\Controller\TestController; @@ -384,10 +385,10 @@ Router::addGroup('/patient', function () { // 病情记录 Router::addGroup('/pathography', function () { // 检测家庭成员是否存在病情记录 - Router::get('/exist/{family_id:\d+}', [PatientFamilyController::class, 'existFamilyPathography']); + Router::get('/exist', [PatientPathographyController::class, 'existFamilyPathography']); -// // 获取家庭成员病情记录列表-分页 -// Router::get('/exist/{family_id:\d+}', [PatientPathographyController::class, 'existFamilyPathography']); + // 获取家庭成员病情记录列表-分页 + Router::get('/{family_id:\d+}', [PatientPathographyController::class, 'existFamilyPathography']); }); }); From 7df80196c2251617bf46a0341d25f8a7fe7acb6d Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Mon, 20 Nov 2023 16:26:18 +0800 Subject: [PATCH 06/87] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=AE=B6=E5=BA=AD=E6=88=90=E5=91=98=E7=97=85=E6=83=85=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E5=88=97=E8=A1=A8-=E5=88=86=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PatientPathographyController.php | 22 +++++++++++- app/Controller/TestController.php | 35 +------------------ app/Model/PatientPathography.php | 24 +++++++++++++ app/Request/PatientPathographyRequest.php | 5 ++- app/Services/PatientPathographyService.php | 30 ++++++++++++++++ config/routes.php | 2 +- 6 files changed, 81 insertions(+), 37 deletions(-) diff --git a/app/Controller/PatientPathographyController.php b/app/Controller/PatientPathographyController.php index ea2b7bf..46cb092 100644 --- a/app/Controller/PatientPathographyController.php +++ b/app/Controller/PatientPathographyController.php @@ -2,7 +2,6 @@ namespace App\Controller; -use App\Constants\HttpEnumCode; use App\Request\PatientPathographyRequest; use App\Services\PatientPathographyService; use Psr\Http\Message\ResponseInterface; @@ -29,4 +28,25 @@ class PatientPathographyController extends AbstractController return $this->response->json(fail()); } } + + /** + * 获取家庭成员病情记录列表-分页 + * @return ResponseInterface + */ + public function getFamilyPathographyList(): ResponseInterface + { + try { + $request = $this->container->get(PatientPathographyRequest::class); + }catch (\Throwable $e){ + return $this->response->json(fail()); + } + + $request->scene('getFamilyPathographyList')->validateResolved(); + + $PatientPathographyService = new PatientPathographyService(); + $data = $PatientPathographyService->getFamilyPathographyList(); + return $this->response->json($data); + + + } } \ No newline at end of file diff --git a/app/Controller/TestController.php b/app/Controller/TestController.php index 1c227d3..6115636 100644 --- a/app/Controller/TestController.php +++ b/app/Controller/TestController.php @@ -34,6 +34,7 @@ use App\Services\OrderProductService; use App\Services\PatientOrderService; use App\Services\UserDoctorService; use App\Utils\Data; +use App\Utils\Jwt; use App\Utils\Log; use App\Utils\Mask; use Extend\Alibaba\Oss; @@ -463,39 +464,5 @@ class TestController extends AbstractController public function test_17(){ - $re = \Hyperf\Context\ApplicationContext::getContainer()->get(CacheInterface::class); - $a = $re->set("wucongxing","1",100); - dump($a); - $b = $re->get("wucongxing"); - dump($b); - - $redis = \Hyperf\Context\ApplicationContext::getContainer()->get(Redis::class); - $c = $redis->get("wucongxing"); - dump($c); - - -// -// $weChat = new Wechat(1); -// -// $env_version = "release"; -// $app_env = \Hyperf\Support\env("APP_ENV",'dev'); -// if ($app_env == "dev"){ -// $env_version = "trial"; -// } -// -// $options = [ -// "scene" => "?doctor_id=516900370252341248",// query 参数 -// "page" => "pages/expertDetail/expertDetail", -// "check_path" => false, -// "env_version" => $env_version, -// ]; -// -// $img_buffer = $weChat->getUnlimitedQRCode($options); -// -// $oss = new Oss(); -// -// $filename = "applet/doctor/card/516900370252341248.jpg"; -// -// $oss->putObject($filename, $img_buffer); } } \ No newline at end of file diff --git a/app/Model/PatientPathography.php b/app/Model/PatientPathography.php index 79f31a2..a4caffe 100644 --- a/app/Model/PatientPathography.php +++ b/app/Model/PatientPathography.php @@ -120,4 +120,28 @@ class PatientPathography extends Model { return self::where($params)->update($data); } + + /** + * 获取家庭成员病情记录列表-分页 + * @param array $params + * @param array $fields + * @param int|null $page + * @param int|null $per_page + * @return array + */ + public static function getPatientPathographyPage(array $params,array $fields = ["*"], int $page = null, ?int $per_page = 10): array + { + $result = self::where($params) + ->orderBy("created_at",'desc') + ->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/Request/PatientPathographyRequest.php b/app/Request/PatientPathographyRequest.php index 7ba440b..41cc22c 100644 --- a/app/Request/PatientPathographyRequest.php +++ b/app/Request/PatientPathographyRequest.php @@ -8,7 +8,10 @@ use Hyperf\Validation\Request\FormRequest; class PatientPathographyRequest extends FormRequest { protected array $scenes = [ - 'existFamilyPathography' => [ // 获取患者优惠卷列表 + 'existFamilyPathography' => [ // 检测家庭成员是否存在病情记录 + 'family_id', + ], + 'getFamilyPathographyList' => [ // 获取家庭成员病情记录列表-分页 'family_id', ], ]; diff --git a/app/Services/PatientPathographyService.php b/app/Services/PatientPathographyService.php index b61dcbb..41a313e 100644 --- a/app/Services/PatientPathographyService.php +++ b/app/Services/PatientPathographyService.php @@ -2,6 +2,8 @@ namespace App\Services; +use App\Constants\HttpEnumCode; +use App\Model\OrderProduct; use App\Model\PatientPathography; /** @@ -33,4 +35,32 @@ class PatientPathographyService extends BaseService return success($result); } + + /** + * 获取家庭成员病情记录列表-分页 + * @return array + */ + public function getFamilyPathographyList(): array + { + $user_info = $this->request->getAttribute("userInfo") ?? []; + $family_id = $this->request->input('family_id'); + $page = $this->request->input('page', 1); + $per_page = $this->request->input('per_page', 10); + + // 获取病情记录列表 + $fields = [ + "pathography_id", + "created_at", + "disease_class_name", + "disease_desc" + ]; + + $params = array(); + $params['user_id'] = $user_info['user_id']; + $params['patient_id'] = $user_info['client_user_id']; + $params['family_id'] = $family_id; + $patient_pathographys = PatientPathography::getPatientPathographyPage($params, $fields, $page, $per_page); + + return success($patient_pathographys); + } } \ No newline at end of file diff --git a/config/routes.php b/config/routes.php index ad9aa58..00ffcd3 100644 --- a/config/routes.php +++ b/config/routes.php @@ -388,7 +388,7 @@ Router::addGroup('/patient', function () { Router::get('/exist', [PatientPathographyController::class, 'existFamilyPathography']); // 获取家庭成员病情记录列表-分页 - Router::get('/{family_id:\d+}', [PatientPathographyController::class, 'existFamilyPathography']); + Router::get('', [PatientPathographyController::class, 'getFamilyPathographyList']); }); }); From 45e4fa886b3d15933b4d19c3914e1f55f5c84f88 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Tue, 21 Nov 2023 10:40:23 +0800 Subject: [PATCH 07/87] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=AE=B6=E5=BA=AD=E6=88=90=E5=91=98=E7=97=85=E6=83=85=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PatientPathographyController.php | 17 +++- app/Request/PatientPathographyRequest.php | 2 +- app/Services/PatientPathographyService.php | 96 ++++++++++++++++++- config/routes.php | 5 +- 4 files changed, 113 insertions(+), 7 deletions(-) diff --git a/app/Controller/PatientPathographyController.php b/app/Controller/PatientPathographyController.php index 46cb092..a885951 100644 --- a/app/Controller/PatientPathographyController.php +++ b/app/Controller/PatientPathographyController.php @@ -33,7 +33,7 @@ class PatientPathographyController extends AbstractController * 获取家庭成员病情记录列表-分页 * @return ResponseInterface */ - public function getFamilyPathographyList(): ResponseInterface + public function getFamilyPathographyPage(): ResponseInterface { try { $request = $this->container->get(PatientPathographyRequest::class); @@ -41,12 +41,21 @@ class PatientPathographyController extends AbstractController return $this->response->json(fail()); } - $request->scene('getFamilyPathographyList')->validateResolved(); + $request->scene('getFamilyPathographyPage')->validateResolved(); $PatientPathographyService = new PatientPathographyService(); - $data = $PatientPathographyService->getFamilyPathographyList(); + $data = $PatientPathographyService->getFamilyPathographyPage(); return $this->response->json($data); + } - + /** + * 获取家庭成员病情记录详情 + * @return ResponseInterface + */ + public function getFamilyPathographyInfo(): ResponseInterface + { + $PatientPathographyService = new PatientPathographyService(); + $data = $PatientPathographyService->getFamilyPathographyInfo(); + return $this->response->json($data); } } \ No newline at end of file diff --git a/app/Request/PatientPathographyRequest.php b/app/Request/PatientPathographyRequest.php index 41cc22c..5688039 100644 --- a/app/Request/PatientPathographyRequest.php +++ b/app/Request/PatientPathographyRequest.php @@ -11,7 +11,7 @@ class PatientPathographyRequest extends FormRequest 'existFamilyPathography' => [ // 检测家庭成员是否存在病情记录 'family_id', ], - 'getFamilyPathographyList' => [ // 获取家庭成员病情记录列表-分页 + 'getFamilyPathographyPage' => [ // 获取家庭成员病情记录列表-分页 'family_id', ], ]; diff --git a/app/Services/PatientPathographyService.php b/app/Services/PatientPathographyService.php index 41a313e..a610c81 100644 --- a/app/Services/PatientPathographyService.php +++ b/app/Services/PatientPathographyService.php @@ -3,8 +3,14 @@ namespace App\Services; use App\Constants\HttpEnumCode; +use App\Model\OrderPrescription; +use App\Model\OrderPrescriptionIcd; +use App\Model\OrderPrescriptionProduct; use App\Model\OrderProduct; use App\Model\PatientPathography; +use App\Model\PatientPathographyProduct; +use App\Model\Product; +use App\Utils\PcreMatch; /** * 家庭成员病情记录 @@ -40,7 +46,7 @@ class PatientPathographyService extends BaseService * 获取家庭成员病情记录列表-分页 * @return array */ - public function getFamilyPathographyList(): array + public function getFamilyPathographyPage(): array { $user_info = $this->request->getAttribute("userInfo") ?? []; $family_id = $this->request->input('family_id'); @@ -63,4 +69,92 @@ class PatientPathographyService extends BaseService return success($patient_pathographys); } + + /** + * 获取家庭成员病情记录详情 + * @return array + */ + public function getFamilyPathographyInfo(): array + { + $user_info = $this->request->getAttribute("userInfo") ?? []; + $pathography_id = $this->request->route('pathography_id'); + + $params = array(); + $params['user_id'] = $user_info['user_id']; + $params['patient_id'] = $user_info['client_user_id']; + $params['pathography_id'] = $pathography_id; + $patient_pathography = PatientPathography::getOne($params); + if (empty($patient_pathography)){ + return success(null); + } + + $result = $patient_pathography->toArray(); + $result['order_prescription'] = null; // 处方数据 + $result['patient_pathography_product'] = array(); // 用药意向 + $result['diagnose_images'] = array(); // 复诊凭证 + + // 获取处方数据 + if (!empty($patient_pathography['order_prescription_id'])){ + $params = array(); + $params['order_prescription_id'] = $patient_pathography['order_prescription_id']; + $params['patient_id'] = $patient_pathography['patient_id']; + $params['family_id'] = $patient_pathography['family_id']; + $order_prescription = OrderPrescription::getOne($params); + if (!empty($order_prescription)){ + // 获取处方疾病数据 + $params = array(); + $params['order_prescription_id'] = $order_prescription['order_prescription_id']; + $order_prescription_icds = OrderPrescriptionIcd::getList($params); + if (empty($order_prescription_icds)){ + return fail(); + } + + $icd_name = array_column($order_prescription_icds->toArray(),"icd_name"); + $result['order_prescription']['icd_name'] = implode(";",$icd_name); + + // 获取处方药品名称 + $params = array(); + $params['order_prescription_id'] = $order_prescription['order_prescription_id']; + $order_prescription_products = OrderPrescriptionProduct::getList($params); + if (empty($order_prescription_products)){ + return fail(); + } + + $result["order_prescription"]["product"] = $order_prescription_products->toArray(); + } + } + + // 获取用药意向 + $params = array(); + $params['pathography_id'] = $patient_pathography['pathography_id']; + $patient_pathography_products = PatientPathographyProduct::getList($params); + if (!empty($patient_pathography_products)){ + foreach ($patient_pathography_products as $patient_pathography_product){ + // 获取商品数据 + $params =array(); + $params['product_id'] = $patient_pathography_product['product_id']; + $product = Product::getOne($params); + if (empty($product)){ + return fail(); + } + + $item = array(); + $item['product_cover_img'] = addAliyunOssWebsite($product['product_cover_img']); + $item['product_name'] = $product['product_name']; // 名称 + $item['product_spec'] = $product['product_spec']; // 商品规格 + $item['packaging_unit'] = $product['packaging_unit']; // 基本包装单位(例:盒/瓶) + $item['case_product_num'] = $patient_pathography_product['case_product_num']; // 药品数量 + + $result['patient_pathography_product'][] = $item; + } + } + + // 复诊凭证 + if (!empty($patient_pathography['diagnose_images'])){ + $diagnose_images = implode(',', $patient_pathography['diagnose_images']); + $result['diagnose_images'] = PcreMatch::pregRemoveOssWebsite($diagnose_images); + } + + return success($result); + } } \ No newline at end of file diff --git a/config/routes.php b/config/routes.php index 00ffcd3..c55ac89 100644 --- a/config/routes.php +++ b/config/routes.php @@ -388,7 +388,10 @@ Router::addGroup('/patient', function () { Router::get('/exist', [PatientPathographyController::class, 'existFamilyPathography']); // 获取家庭成员病情记录列表-分页 - Router::get('', [PatientPathographyController::class, 'getFamilyPathographyList']); + Router::get('', [PatientPathographyController::class, 'getFamilyPathographyPage']); + + // 获取家庭成员病情记录详情 + Router::get('/{pathography_id:\d+}', [PatientPathographyController::class, 'getFamilyPathographyInfo']); }); }); From 8207d73fead752512e0ab842fd476563dd55e15f Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Wed, 22 Nov 2023 12:03:36 +0800 Subject: [PATCH 08/87] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=AE=B6=E5=BA=AD=E6=88=90=E5=91=98=E7=97=85=E6=83=85=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E5=88=86=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PatientPathographyController.php | 11 ++++++ app/Model/PatientPathography.php | 9 +++++ app/Request/PatientPathographyRequest.php | 3 ++ app/Services/PatientPathographyService.php | 35 +++++++++++++++++++ config/routes.php | 23 ++++++------ 5 files changed, 71 insertions(+), 10 deletions(-) diff --git a/app/Controller/PatientPathographyController.php b/app/Controller/PatientPathographyController.php index a885951..64e1496 100644 --- a/app/Controller/PatientPathographyController.php +++ b/app/Controller/PatientPathographyController.php @@ -58,4 +58,15 @@ class PatientPathographyController extends AbstractController $data = $PatientPathographyService->getFamilyPathographyInfo(); return $this->response->json($data); } + + /** + * 获取家庭成员病情记录分组 + * @return ResponseInterface + */ + public function getFamilyPathographyGroup(): ResponseInterface + { + $PatientPathographyService = new PatientPathographyService(); + $data = $PatientPathographyService->getFamilyPathographyGroup(); + return $this->response->json($data); + } } \ No newline at end of file diff --git a/app/Model/PatientPathography.php b/app/Model/PatientPathography.php index a4caffe..00c1b2b 100644 --- a/app/Model/PatientPathography.php +++ b/app/Model/PatientPathography.php @@ -7,6 +7,7 @@ namespace App\Model; use Hyperf\Database\Model\Collection; +use Hyperf\DbConnection\Db; use Hyperf\Snowflake\Concern\Snowflake; /** @@ -144,4 +145,12 @@ class PatientPathography extends Model return $data; } + + // 获取信息-分组 + public static function getFamilyPathographyGroup(array $params, array $fields = ['*']): object|null + { + return self::where($params) + ->groupBy(["family_id"]) + ->get($fields); + } } diff --git a/app/Request/PatientPathographyRequest.php b/app/Request/PatientPathographyRequest.php index 5688039..b7045f5 100644 --- a/app/Request/PatientPathographyRequest.php +++ b/app/Request/PatientPathographyRequest.php @@ -14,6 +14,9 @@ class PatientPathographyRequest extends FormRequest 'getFamilyPathographyPage' => [ // 获取家庭成员病情记录列表-分页 'family_id', ], + 'getFamilyPathographyGroup' => [ // 获取家庭成员病情记录分组 + 'family_id', + ], ]; /** diff --git a/app/Services/PatientPathographyService.php b/app/Services/PatientPathographyService.php index a610c81..3b825de 100644 --- a/app/Services/PatientPathographyService.php +++ b/app/Services/PatientPathographyService.php @@ -11,6 +11,7 @@ use App\Model\PatientPathography; use App\Model\PatientPathographyProduct; use App\Model\Product; use App\Utils\PcreMatch; +use Hyperf\DbConnection\Db; /** * 家庭成员病情记录 @@ -34,6 +35,7 @@ class PatientPathographyService extends BaseService $params['user_id'] = $user_info['user_id']; $params['patient_id'] = $user_info['client_user_id']; $params['family_id'] = $family_id; + $params['status'] = 1; $patient_pathography = PatientPathography::getLastOne($params); if (!empty($patient_pathography)){ $result['is_exist'] = 1; @@ -65,6 +67,7 @@ class PatientPathographyService extends BaseService $params['user_id'] = $user_info['user_id']; $params['patient_id'] = $user_info['client_user_id']; $params['family_id'] = $family_id; + $params['status'] = 1; $patient_pathographys = PatientPathography::getPatientPathographyPage($params, $fields, $page, $per_page); return success($patient_pathographys); @@ -83,6 +86,7 @@ class PatientPathographyService extends BaseService $params['user_id'] = $user_info['user_id']; $params['patient_id'] = $user_info['client_user_id']; $params['pathography_id'] = $pathography_id; + $params['status'] = 1; $patient_pathography = PatientPathography::getOne($params); if (empty($patient_pathography)){ return success(null); @@ -157,4 +161,35 @@ class PatientPathographyService extends BaseService return success($result); } + + /** + * 获取家庭成员病情记录分组 + * @return array + */ + public function getFamilyPathographyGroup(): array + { + $user_info = $this->request->getAttribute("userInfo") ?? []; + + $fields = [ + "pathography_id", + "user_id", + "patient_id", + "family_id", + "status", + "name", + "sex", + "age", + Db::raw('COUNT(0) AS `count`') + ]; + $params = array(); + $params['user_id'] = $user_info['user_id']; + $params['patient_id'] = $user_info['client_user_id']; + $params['status'] = 1; + $patient_pathographys = PatientPathography::getFamilyPathographyGroup($params,$fields); + if (empty($patient_pathographys)){ + return success(); + } + + return success($patient_pathographys->toArray()); + } } \ No newline at end of file diff --git a/config/routes.php b/config/routes.php index c55ac89..c0dfe18 100644 --- a/config/routes.php +++ b/config/routes.php @@ -382,17 +382,7 @@ Router::addGroup('/patient', function () { Router::get('/record', [PatientFamilyController::class, 'getFamilyProductRecord']); }); - // 病情记录 - Router::addGroup('/pathography', function () { - // 检测家庭成员是否存在病情记录 - Router::get('/exist', [PatientPathographyController::class, 'existFamilyPathography']); - // 获取家庭成员病情记录列表-分页 - Router::get('', [PatientPathographyController::class, 'getFamilyPathographyPage']); - - // 获取家庭成员病情记录详情 - Router::get('/{pathography_id:\d+}', [PatientPathographyController::class, 'getFamilyPathographyInfo']); - }); }); // 药品 @@ -499,7 +489,20 @@ Router::addGroup('/patient', function () { Router::get('/system/last', [MessageNoticeController::class, 'getPatientMessageServiceLast']); }); + // 病情记录 + Router::addGroup('/pathography', function () { + // 检测家庭成员是否存在病情记录 + Router::get('/exist', [PatientPathographyController::class, 'existFamilyPathography']); + // 获取家庭成员病情记录列表-分页 + Router::get('', [PatientPathographyController::class, 'getFamilyPathographyPage']); + + // 获取家庭成员病情记录详情 + Router::get('/{pathography_id:\d+}', [PatientPathographyController::class, 'getFamilyPathographyInfo']); + + // 获取家庭成员病情记录分组 + Router::get('/group', [PatientPathographyController::class, 'getFamilyPathographyGroup']); + }); }); // 药师端api From c03501b6b5b1bc7322cdb4bb31b48ef736a74d4b Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Wed, 22 Nov 2023 15:15:53 +0800 Subject: [PATCH 09/87] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=AE=B6=E5=BA=AD=E6=88=90=E5=91=98=E7=97=85=E6=83=85=E8=AE=B0?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PatientPathographyController.php | 11 ++++++ app/Services/PatientPathographyService.php | 36 +++++++++++++++++++ config/routes.php | 3 ++ 3 files changed, 50 insertions(+) diff --git a/app/Controller/PatientPathographyController.php b/app/Controller/PatientPathographyController.php index 64e1496..100a0b0 100644 --- a/app/Controller/PatientPathographyController.php +++ b/app/Controller/PatientPathographyController.php @@ -69,4 +69,15 @@ class PatientPathographyController extends AbstractController $data = $PatientPathographyService->getFamilyPathographyGroup(); return $this->response->json($data); } + + /** + * 删除家庭成员病情记录 + * @return ResponseInterface + */ + public function deleteFamilyPathography(): ResponseInterface + { + $PatientPathographyService = new PatientPathographyService(); + $data = $PatientPathographyService->deleteFamilyPathography(); + return $this->response->json($data); + } } \ No newline at end of file diff --git a/app/Services/PatientPathographyService.php b/app/Services/PatientPathographyService.php index 3b825de..684f1ac 100644 --- a/app/Services/PatientPathographyService.php +++ b/app/Services/PatientPathographyService.php @@ -192,4 +192,40 @@ class PatientPathographyService extends BaseService return success($patient_pathographys->toArray()); } + + /** + * 删除家庭成员病情记录 + * @return array + */ + public function deleteFamilyPathography(): array + { + $user_info = $this->request->getAttribute("userInfo") ?? []; + $pathography_id = $this->request->route('pathography_id'); + + // 获取病情记录 + $params = array(); + $params['user_id'] = $user_info['user_id']; + $params['patient_id'] = $user_info['client_user_id']; + $params['pathography_id'] = $pathography_id; + $patient_pathography = PatientPathography::getOne($params); + if (empty($patient_pathography)){ + return fail(HttpEnumCode::HTTP_ERROR,"无该病例"); + } + + if ($patient_pathography['status'] == 2){ + return success(); + } + + $params = array(); + $params['pathography_id'] = $patient_pathography['pathography_id']; + + $data = array(); + $data['status'] = 2; + $res = PatientPathography::edit($params,$data); + if (!$res){ + return fail(); + } + + return success(); + } } \ No newline at end of file diff --git a/config/routes.php b/config/routes.php index c0dfe18..7024eac 100644 --- a/config/routes.php +++ b/config/routes.php @@ -502,6 +502,9 @@ Router::addGroup('/patient', function () { // 获取家庭成员病情记录分组 Router::get('/group', [PatientPathographyController::class, 'getFamilyPathographyGroup']); + + // 删除家庭成员病情记录 + Router::delete('/{pathography_id:\d+}', [PatientPathographyController::class, 'deleteFamilyPathography']); }); }); From 820fe50461870c4f5102f7025c66cf1ac5f04b96 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Thu, 23 Nov 2023 09:38:40 +0800 Subject: [PATCH 10/87] 1 --- app/Controller/CallBackController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Controller/CallBackController.php b/app/Controller/CallBackController.php index 9ba819c..6cb293f 100644 --- a/app/Controller/CallBackController.php +++ b/app/Controller/CallBackController.php @@ -725,7 +725,7 @@ class CallBackController extends AbstractController { $request_params = $this->request->all(); try { - Log::getInstance("CallBackController-imCallBack")->info("Im回调数据:" . json_encode($request_params, JSON_UNESCAPED_UNICODE)); + Log::getInstance("CallBackController-imCallBack")->info(json_encode($request_params, JSON_UNESCAPED_UNICODE)); if (empty($request_params['RequestTime']) || empty($request_params['Sign'])) { return $this->ImErrorReturn("缺少时间时间戳/签名字段"); @@ -856,7 +856,7 @@ class CallBackController extends AbstractController */ protected function ImErrorReturn(string $message): ResponseInterface { - Log::getInstance("CallBackController-imCallBack")->error("Im回调数据处理失败:接收用户错误"); + Log::getInstance("CallBackController-imCallBack")->error($message); return $this->response ->withStatus(200) ->withBody( From 10e7fe3a914da6d4de114a2552f84f60e290db27 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Thu, 23 Nov 2023 13:36:22 +0800 Subject: [PATCH 11/87] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E5=9C=A8=E7=BA=BF?= =?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/Command/getCaCertCommand.php | 193 ------------------------- app/Model/User.php | 7 +- app/Model/UserDoctor.php | 18 +-- app/Model/UserPharmacist.php | 3 +- app/Services/UserPharmacistService.php | 7 +- 5 files changed, 19 insertions(+), 209 deletions(-) delete mode 100644 app/Command/getCaCertCommand.php diff --git a/app/Command/getCaCertCommand.php b/app/Command/getCaCertCommand.php deleted file mode 100644 index 143b539..0000000 --- a/app/Command/getCaCertCommand.php +++ /dev/null @@ -1,193 +0,0 @@ -setDescription('Ca证书申请'); - } - - public function handle() - { - $this->line('开始'); - - // 获取全部医生 - $params = array(); - $params['status'] = 1; - $params['idcard_status'] = 1; - $params['iden_auth_status'] = 1; - $user_doctors = UserDoctor::getList($params); - if (empty($user_doctors)){ - $this->line('结束,无医生需处理'); - return; - } - - // 获取医院数据 - $params = array(); - $params['is_system'] = 1; - $params['type'] = 2; - $user_ca_cert = UserCaCert::getOne($params); - if (empty($user_ca_cert)){ - $CaOnline = new CaOnline(); - - // 申请医院证书 - $data = array(); - $data['user_id'] = "5345345461"; - $data['mobile'] = "18601047315"; - $data['org_name'] = "成都金牛欣欣相照互联网医院有限公司"; - $data['org_number'] = "91510106MABTJY4K9R"; - - $result = $CaOnline->getCloudCert($data,'Organizational'); - - $data = array(); - $data['is_system'] = 1; - $data['type'] = 2; - $data['cert_base64'] = $result['certBase64']; - $data['cert_chain_p7'] = $result['certP7']; - $data['cert_serial_number'] = $result['certSerialnumber']; - $data['ca_pin'] = "5345345461"; - $doctor_pharmacist_cert = UserCaCert::addUserCaCert($data); - if (empty($doctor_pharmacist_cert)){ - $this->line('错误:医院证书错误'); - return; - } - } - - foreach ($user_doctors as $user_doctor){ - try { - // 获取医生ca证书数据 - $params = array(); - $params['user_id'] = $user_doctor['user_id']; - $user_ca_cert = UserCaCert::getOne($params); - if (!empty($user_ca_cert)){ - continue; - } - - // 获取用户数据 - $params = array(); - $params['user_id'] = $user_doctor['user_id']; - $user = User::getOne($params); - if (empty($user)){ - continue; - } - - $params = array(); - $params['user_id'] = $user_doctor['user_id']; - $user_doctor_info = UserDoctorInfo::getOne($params); - if (empty($user_doctor_info)){ - continue; - } - - $CaOnline = new CaOnline(); - - $data = array(); - $data['user_id'] = $user_doctor['user_id']; - $data['mobile'] = $user['mobile']; - $data['card_name'] = $user_doctor_info['card_name']; - $data['card_num'] = $user_doctor_info['card_num']; - $data['orgDept'] = $user_doctor['department_custom_name']; - $result = $CaOnline->getCloudCert($data); - - $data = array(); - $data['user_id'] = $user_doctor['user_id']; - $data['type'] = 2; - $data['cert_base64'] = $result['certBase64']; - $data['cert_chain_p7'] = $result['certP7']; - $data['cert_serial_number'] = $result['certSerialnumber']; - $data['ca_pin'] = $user_doctor['user_id']; - $doctor_pharmacist_cert = UserCaCert::addUserCaCert($data); - if (empty($doctor_pharmacist_cert)){ - $this->line('错误'); - return; - } - - $this->line('成功'); - }catch (\Exception $e){ - $this->line('错误:' . $e->getMessage()); - continue; - } - } - - // 获取药师数据 - $params = array(); - $params['status'] = 1; - $params['is_online'] = 1; - $user_pharmacist = UserPharmacist::getOne($params); - if (empty($user_pharmacist)){ - $this->line('结束,无药师需处理'); - return; - } - - // 获取医生ca证书数据 - $params = array(); - $params['user_id'] = $user_pharmacist['user_id']; - $user_ca_cert = UserCaCert::getOne($params); - if (!empty($user_ca_cert)){ - $this->line('结束,无药师需处理'); - return; - } - - // 获取用户数据 - $params = array(); - $params['user_id'] = $user_pharmacist['user_id']; - $user = User::getOne($params); - if (empty($user)){ - $this->line('结束,药师用户数据错误'); - return; - } - - $params = array(); - $params['user_id'] = $user_pharmacist['user_id']; - $user_pharmacist_info = UserPharmacistInfo::getOne($params); - if (empty($user_pharmacist_info)){ - $this->line('结束,无药师需处理'); - return; - } - - $CaOnline = new CaOnline(); - - $data = array(); - $data['user_id'] = $user_pharmacist_info['user_id']; - $data['mobile'] = $user['mobile']; - $data['card_name'] = $user_pharmacist_info['card_name']; - $data['card_num'] = $user_pharmacist_info['card_num']; - $result = $CaOnline->getCloudCert($data); - - $data = array(); - $data['user_id'] = $user_pharmacist_info['user_id']; - $data['type'] = 2; - $data['cert_base64'] = $result['certBase64']; - $data['cert_chain_p7'] = $result['certP7']; - $data['cert_serial_number'] = $result['certSerialnumber']; - $data['ca_pin'] = $user_pharmacist_info['user_id']; - $doctor_pharmacist_cert = UserCaCert::addUserCaCert($data); - if (empty($doctor_pharmacist_cert)){ - $this->line('错误'); - return; - } - - $this->line('全部结束'); - } -} diff --git a/app/Model/User.php b/app/Model/User.php index 40bc14d..beea059 100644 --- a/app/Model/User.php +++ b/app/Model/User.php @@ -23,9 +23,10 @@ use Hyperf\Snowflake\Concern\Snowflake; * @property int $age 年龄 * @property int $sex 性别(0:未知 1:男 2:女) * @property string $avatar 头像 - * @property string $login_ip 登陆ip + * @property int $is_online 是否在线(0:不在线 1:在线) * @property string $last_login_at 最后登陆时间 - * @property string $created_by 创建者id(后台用户表id null:自己注册) + * @property string $login_ip 登陆ip + * @property string $created_by 创建者id(后台用户表id,前台用户表id) * @property \Carbon\Carbon $created_at 创建时间 * @property \Carbon\Carbon $updated_at 修改时间 */ @@ -41,7 +42,7 @@ class User extends Model /** * The attributes that are mass assignable. */ - protected array $fillable = ['user_id', 'user_name', 'user_account', 'mobile', 'wx_mobile', 'user_password', 'salt', 'user_type', 'user_status', 'register_method', 'age', 'sex', 'avatar', 'login_ip', 'last_login_at', 'created_by', 'created_at', 'updated_at']; + protected array $fillable = ['user_id', 'user_name', 'user_account', 'mobile', 'wx_mobile', 'user_password', 'salt', 'user_type', 'user_status', 'register_method', 'age', 'sex', 'avatar', 'is_online', 'last_login_at', 'login_ip', 'created_by', 'created_at', 'updated_at']; protected string $primaryKey = "user_id"; diff --git a/app/Model/UserDoctor.php b/app/Model/UserDoctor.php index 3515e15..a5652bc 100644 --- a/app/Model/UserDoctor.php +++ b/app/Model/UserDoctor.php @@ -32,7 +32,7 @@ use Hyperf\Utils\Arr; * @property int $is_bind_bank 是否已绑定结算银行卡(0:否 1:是) * @property int $is_recommend 是否首页推荐(0:否 1:是) * @property string $avatar 头像 - * @property int $doctor_title 医生职称(1:主任中医师 2:主任医师 3:副主任中医师 4:副主任医师 5:主治医师 6:住院医师) + * @property int $doctor_title 医生职称(1:主任医师 2:主任中医师 3:副主任医师 4:副主任中医师 5:主治医师 6:住院医师) * @property int $department_custom_id 科室id-自定义 * @property string $department_custom_name 科室名称(如未自己输入,填入标准科室名称) * @property string $department_custom_mobile 科室电话 @@ -41,21 +41,21 @@ use Hyperf\Utils\Arr; * @property string $praise_rate 好评率(百分制。订单平均评价中超过4-5分的订单总数 / 总订单数 * 5) * @property string $avg_response_time 平均响应时间(分钟制) * @property int $number_of_fans 被关注数量 - * @property int $is_online 是否在线(0:不在线 1:在线) * @property int $is_img_expert_reception 是否参加专家图文接诊(0:否 1:是) * @property int $is_img_welfare_reception 是否参加公益图文问诊(0:否 1:是) * @property int $is_img_quick_reception 是否参加快速图文接诊(0:否 1:是) * @property int $is_platform_deep_cooperation 是否平台深度合作医生(0:否 1:是) * @property int $is_enterprise_deep_cooperation 是否企业深度合作医生(0:否 1:是) + * @property int $is_sys_diagno_cooperation 是否先思达合作医生(0:否 1:是) * @property string $qr_code 分享二维码 * @property string $be_good_at 擅长 * @property string $brief_introduction 医生简介 * @property \Carbon\Carbon $created_at 创建时间 * @property \Carbon\Carbon $updated_at 修改时间 - * @property-read \Hyperf\Database\Model\Collection|DoctorExpertise[] $DoctorExpertise - * @property-read \Hyperf\Database\Model\Collection|DoctorInquiryConfig[] $DoctorInquiryConfig - * @property-read Hospital $Hospital - * @property-read \Hyperf\Database\Model\Collection|OrderInquiry[] $OrderInquiry + * @property-read \Hyperf\Database\Model\Collection|DoctorExpertise[]|null $DoctorExpertise + * @property-read \Hyperf\Database\Model\Collection|DoctorInquiryConfig[]|null $DoctorInquiryConfig + * @property-read Hospital|null $Hospital + * @property-read \Hyperf\Database\Model\Collection|OrderInquiry[]|null $OrderInquiry */ class UserDoctor extends Model { @@ -69,7 +69,7 @@ class UserDoctor extends Model /** * The attributes that are mass assignable. */ - protected array $fillable = ['doctor_id', 'user_id', 'user_name', 'open_id', 'union_id', 'wx_session_key', 'status', 'idcard_status', 'iden_auth_status', 'iden_auth_time', 'iden_auth_fail_reason', 'multi_point_status', 'multi_point_time', 'multi_point_fail_reason', 'is_bind_bank', 'is_recommend', 'avatar', 'doctor_title', 'department_custom_id', 'department_custom_name', 'department_custom_mobile', 'hospital_id', 'served_patients_num', 'praise_rate', 'avg_response_time', 'number_of_fans', 'is_online', 'is_img_expert_reception', 'is_img_welfare_reception', 'is_img_quick_reception', 'is_platform_deep_cooperation', 'is_enterprise_deep_cooperation', 'qr_code', 'be_good_at', 'brief_introduction', 'created_at', 'updated_at']; + protected array $fillable = ['doctor_id', 'user_id', 'user_name', 'open_id', 'union_id', 'wx_session_key', 'status', 'idcard_status', 'iden_auth_status', 'iden_auth_time', 'iden_auth_fail_reason', 'multi_point_status', 'multi_point_time', 'multi_point_fail_reason', 'is_bind_bank', 'is_recommend', 'avatar', 'doctor_title', 'department_custom_id', 'department_custom_name', 'department_custom_mobile', 'hospital_id', 'served_patients_num', 'praise_rate', 'avg_response_time', 'number_of_fans', 'is_img_expert_reception', 'is_img_welfare_reception', 'is_img_quick_reception', 'is_platform_deep_cooperation', 'is_enterprise_deep_cooperation', 'is_sys_diagno_cooperation', 'qr_code', 'be_good_at', 'brief_introduction', 'created_at', 'updated_at']; protected string $primaryKey = "doctor_id"; @@ -180,8 +180,8 @@ class UserDoctor extends Model // 身份认证状态(0:未认证 1:认证通过 2:审核中 3:认证失败) $params["iden_auth_status"] = 1; - // 是否在线(0:不在线 1:在线) - $params["is_online"] = 1; +// // 是否在线(0:不在线 1:在线) +// $params["is_online"] = 1; // // 是否参加专家图文接诊(0:否 1:是) // $params["is_img_expert_reception"] = 1; diff --git a/app/Model/UserPharmacist.php b/app/Model/UserPharmacist.php index 7034343..ea6def1 100644 --- a/app/Model/UserPharmacist.php +++ b/app/Model/UserPharmacist.php @@ -16,7 +16,6 @@ use Hyperf\Snowflake\Concern\Snowflake; * @property string $union_id 微信开放平台唯一标识 * @property string $wx_session_key 微信会话密钥 * @property int $status 状态(0:禁用 1:正常 2:删除) - * @property int $is_online 是否在线(0:不在线 1:在线) * @property string $avatar 头像 * @property int $pharmacist_title 职称 * @property int $department_custom_id 科室id-自定义 @@ -39,7 +38,7 @@ class UserPharmacist extends Model /** * The attributes that are mass assignable. */ - protected array $fillable = ['pharmacist_id', 'user_id', 'user_name', 'open_id', 'union_id', 'wx_session_key', 'status', 'is_online', 'avatar', 'pharmacist_title', 'department_custom_id', 'department_custom_name', 'department_custom_mobile', 'medical_institution', 'worker_date', 'created_at', 'updated_at']; + protected array $fillable = ['pharmacist_id', 'user_id', 'user_name', 'open_id', 'union_id', 'wx_session_key', 'status', 'avatar', 'pharmacist_title', 'department_custom_id', 'department_custom_name', 'department_custom_mobile', 'medical_institution', 'worker_date', 'created_at', 'updated_at']; protected string $primaryKey = "pharmacist_id"; diff --git a/app/Services/UserPharmacistService.php b/app/Services/UserPharmacistService.php index 871e4bf..d44b523 100644 --- a/app/Services/UserPharmacistService.php +++ b/app/Services/UserPharmacistService.php @@ -68,10 +68,13 @@ class UserPharmacistService extends BaseService $data = array(); $data['is_online'] = $is_online; + if ($is_online == 1){ + $data['last_login_at'] = date('Y-m_d,H:i:s',time()); + } $params = array(); - $params['pharmacist_id'] = $user_pharmacist['pharmacist_id']; - UserPharmacist::editUserPharmacist($params, $data); + $params['user_id'] = $user_info['user_id']; + User::editUser($params, $data); return success(); } From 15dfe8d87f42828ac839ae1833531299fbedf30c Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Thu, 23 Nov 2023 13:47:10 +0800 Subject: [PATCH 12/87] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E6=8E=A8=E8=8D=90?= =?UTF-8?q?=E5=8C=BB=E7=94=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Model/UserDoctor.php | 16 +++++++++------- app/Services/PatientDoctorService.php | 6 ++++-- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/app/Model/UserDoctor.php b/app/Model/UserDoctor.php index a5652bc..405ff9a 100644 --- a/app/Model/UserDoctor.php +++ b/app/Model/UserDoctor.php @@ -81,6 +81,14 @@ class UserDoctor extends Model return $this->hasOne(Hospital::class, 'hospital_id', 'hospital_id'); } + /** + * 关联用户表 + */ + public function User(): HasOne + { + return $this->hasOne(User::class, 'user_id', 'user_id'); + } + /** * 关联问诊配置表(一对多) * @return HasMany @@ -108,13 +116,6 @@ class UserDoctor extends Model return $this->hasMany(OrderInquiry::class, "doctor_id", "doctor_id"); } -// /** -// * 关联职称表 -// */ -// public function BasicDoctorTitle(): HasOne -// { -// return $this->hasOne(BasicDoctorTitle::class, 'doctor_title_id', 'doctor_title_id'); -// } /** * 获取医生信息-单条 @@ -189,6 +190,7 @@ class UserDoctor extends Model $datas = self::with([ 'Hospital:hospital_id,hospital_name,hospital_level_name', "DoctorInquiryConfig", + "User" ]) ->where($params) ->orderBy("is_recommend", "desc") diff --git a/app/Services/PatientDoctorService.php b/app/Services/PatientDoctorService.php index 673883e..170d436 100644 --- a/app/Services/PatientDoctorService.php +++ b/app/Services/PatientDoctorService.php @@ -739,7 +739,6 @@ class PatientDoctorService extends BaseService "doctor_title", "department_custom_name", "hospital_id", - "is_online", "be_good_at", ]; @@ -758,12 +757,15 @@ class PatientDoctorService extends BaseService $data['avatar'] = addAliyunOssWebsite($recommend_doctor['avatar']); $data['doctor_title'] = empty($recommend_doctor['doctor_title']) ? "" : DoctorTitleCode::getMessage($recommend_doctor['doctor_title']); $data['department_custom_name'] = $recommend_doctor['department_custom_name']; - $data['is_online'] = $recommend_doctor['is_online']; $data['be_good_at'] = $recommend_doctor['be_good_at']; $data['hospital_name'] = $recommend_doctor['Hospital']['hospital_name'] ?? ""; $data['hospital_level_name'] = $recommend_doctor['Hospital']['hospital_level_name'] ?? ""; $data['multi_point_enable'] = 0; // 是否开启问诊购药 + if (!empty($recommend_doctor['user'])){ + $data['is_online'] = $recommend_doctor['user']['is_online']; + } + // 处理接诊价格 $data['price'] = 0; $data['free_clinic_price'] = 0; From 1d1abac9cb18490160eebf4413a487a730b2e15d Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Fri, 24 Nov 2023 17:38:02 +0800 Subject: [PATCH 13/87] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E5=8C=BB=E7=94=9F?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=9F=A5=E8=AF=A2=E3=80=81=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Model/User.php | 5 +- app/Model/UserDoctor.php | 174 ++++++++++--------------- app/Request/PatientDoctorRequest.php | 7 +- app/Services/IndexService.php | 11 +- app/Services/PatientDoctorService.php | 152 ++++----------------- app/Services/UserPharmacistService.php | 2 +- config/routes.php | 2 +- 7 files changed, 115 insertions(+), 238 deletions(-) diff --git a/app/Model/User.php b/app/Model/User.php index beea059..99d7c37 100644 --- a/app/Model/User.php +++ b/app/Model/User.php @@ -24,7 +24,8 @@ use Hyperf\Snowflake\Concern\Snowflake; * @property int $sex 性别(0:未知 1:男 2:女) * @property string $avatar 头像 * @property int $is_online 是否在线(0:不在线 1:在线) - * @property string $last_login_at 最后登陆时间 + * @property string $login_at 小程序登陆时间 + * @property string $im_login_at im登陆时间 * @property string $login_ip 登陆ip * @property string $created_by 创建者id(后台用户表id,前台用户表id) * @property \Carbon\Carbon $created_at 创建时间 @@ -42,7 +43,7 @@ class User extends Model /** * The attributes that are mass assignable. */ - protected array $fillable = ['user_id', 'user_name', 'user_account', 'mobile', 'wx_mobile', 'user_password', 'salt', 'user_type', 'user_status', 'register_method', 'age', 'sex', 'avatar', 'is_online', 'last_login_at', 'login_ip', 'created_by', 'created_at', 'updated_at']; + protected array $fillable = ['user_id', 'user_name', 'user_account', 'mobile', 'wx_mobile', 'user_password', 'salt', 'user_type', 'user_status', 'register_method', 'age', 'sex', 'avatar', 'is_online', 'login_at', 'im_login_at', 'login_ip', 'created_by', 'created_at', 'updated_at']; protected string $primaryKey = "user_id"; diff --git a/app/Model/UserDoctor.php b/app/Model/UserDoctor.php index 405ff9a..4f2ec2a 100644 --- a/app/Model/UserDoctor.php +++ b/app/Model/UserDoctor.php @@ -204,108 +204,6 @@ class UserDoctor extends Model return $datas; } -// /** -// * 获取问诊医生列表 -// * 专家问诊-公益问诊共用 -// * @param string $keyword -// * @param array $hospital_params 医院搜索条件 -// * @param array $doctor_params 医生搜索条件 -// * @param array $doctor_expertise_params -// * @param string|int $sort_order -// * @param array $fields -// * @param int|null $page -// * @param int|null $per_page -// * @return array -// */ -// public static function getInquiryDoctorPage(string $keyword = "", array $hospital_params = [], array $doctor_params = [], array $doctor_expertise_params = [], string|int $sort_order = 1, array $fields = ["*"], int $page = null, ?int $per_page = 10): array -// { -// $query = self::with([ -// "Hospital:hospital_id,hospital_name,hospital_status,hospital_level_name,province_id,city_id", -// "DoctorExpertise", -// "DoctorInquiryConfig" => function ($query) use ($sort_order) { -// $query->whereIn('inquiry_type', [1, 3]) -// ->where('inquiry_mode', 1); -// }, -// ]) -// ->where($doctor_params) -// ->when($keyword, function ($query, $keyword) { -// $query->where(function ($query) use ($keyword) { -// $query->orwhere("user_name", 'like', '%' . $keyword . '%'); -// $query->orwhere("department_custom_name", 'like', '%' . $keyword . '%'); -// $query->orWhereHas('Hospital', function ($query) use ($keyword) { -// $query->where('hospital_name', 'like', '%' . $keyword . '%'); -// }); -// }); -// }) -// ->whereHas('Hospital', function ($query) use ($hospital_params) { -// $query->where($hospital_params); -// }) -// ->whereHas('DoctorExpertise', function ($query) use ($doctor_expertise_params) { -// $query->where($doctor_expertise_params); -// }) -// ->whereHas('DoctorInquiryConfig', function ($query) { -// $params = array(); -// $params['inquiry_mode'] = 1;// 接诊方式:图文 -// $query->where($params)->whereIn('inquiry_type', [1, 3]); -// }); -// -// if (!empty($sort_order)){ -// if (in_array($sort_order,[1,3,4])){ -// $query = $query->join('doctor_inquiry_config', function ($query) { -// $query->on('user_doctor.doctor_id', '=', 'doctor_inquiry_config.doctor_id') -// ->whereIn('inquiry_type', [1, 3]) -// ->where('inquiry_mode', 1) -// ->orderBy('inquiry_price', 'desc') -// ->take(1); -// }) -// ->select("user_doctor.*") -// ->groupBy("user_doctor.doctor_id"); -// } -// -// if ($sort_order == 1) { -// // 综合-价格从低到高 -// $query->orderBy('is_recommend', 'desc');// 是否首页推荐(0:否 1:是) -// $query->orderByRaw('avg_response_time = 0 ASC'); -// $query->orderBy('avg_response_time'); -// $query->orderBy('served_patients_num', 'desc');// 服务数从多到少 -// $query->orderBy(Db::raw("convert(substr(user_name,1,1) using `GBK`)"), 'asc');// 名称排名 -// $query->orderBy('doctor_inquiry_config.inquiry_price', 'asc'); -// } elseif ($sort_order == 2) { -// // 响应时间快 -// $query->orderByRaw('avg_response_time = 0 ASC'); -// $query->orderBy('avg_response_time'); -// $query->orderBy(Db::raw("convert(substr(user_name,1,1) using `GBK`)"), 'asc');// 名称排名 -// } elseif ($sort_order == 3) { -// // 价格从低到高 -// $query->orderBy('doctor_inquiry_config.inquiry_price', 'asc'); -// $query->orderByRaw('avg_response_time = 0 ASC'); -// $query->orderBy('avg_response_time'); -// $query->orderBy(Db::raw("convert(substr(user_name,1,1) using `GBK`)"), 'asc');// 名称排名 -// } elseif ($sort_order == 4) { -// // 价格从高到低 -// $query->orderBy('doctor_inquiry_config.inquiry_price', 'desc'); -// $query->orderByRaw('avg_response_time = 0 ASC'); -// $query->orderBy('avg_response_time'); -// $query->orderBy(Db::raw("convert(substr(user_name,1,1) using `GBK`)"), 'asc');// 名称排名 -// } elseif ($sort_order == 5) { -// // 服务数从多到少 -// $query->orderBy('served_patients_num', 'desc'); -// $query->orderBy(Db::raw("convert(substr(user_name,1,1) using `GBK`)"), 'asc');// 名称排名 -// } -// } -// -// $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; -// } - /** * 获取问诊医生列表 * 专家问诊-公益问诊共用 @@ -314,13 +212,14 @@ class UserDoctor extends Model * @param array $doctor_params 医生搜索条件 * @param array $doctor_expertise_params * @param int $is_search_welfare_reception 是否搜索公益问诊 + * @param string|int $is_first_online 是否优先在线(1:是) * @param string|int $sort_order * @param array $fields * @param int|null $page * @param int|null $per_page * @return array */ - public static function getInquiryDoctorPage(string $keyword = "", array $hospital_params = [], array $doctor_params = [], array $doctor_expertise_params = [],int $is_search_welfare_reception = 0, string|int $sort_order = 1, array $fields = ["*"], int $page = null, ?int $per_page = 10): array + public static function getInquiryDoctorPage(string $keyword = "", array $hospital_params = [], array $doctor_params = [], array $doctor_expertise_params = [],int $is_search_welfare_reception = 0,string|int $is_first_online = 0, string|int $sort_order = 1, array $fields = ["*"], int $page = null, ?int $per_page = 10): array { $query = self::with([ "Hospital:hospital_id,hospital_name,hospital_status,hospital_level_name,province_id,city_id", @@ -332,6 +231,7 @@ class UserDoctor extends Model $query->where('is_enable', 1); } }, + "User:user_id,is_online" ]) ->where($doctor_params) ->when($keyword, function ($query, $keyword) { @@ -355,7 +255,7 @@ class UserDoctor extends Model if (!empty($is_search_welfare_reception)){ $params['is_enable'] = 1; } - + $query->where($params); if (!empty($is_search_welfare_reception)){ @@ -363,6 +263,14 @@ class UserDoctor extends Model } }); + if ($is_first_online == 1){ + $query->join('user as u', function ($query) { + $query->on('user_doctor.user_id', '=', 'u.user_id'); + }) + ->select("user_doctor.*") + ->orderBy('u.is_online', 'desc'); + } + if (!empty($sort_order)){ if (in_array($sort_order,[1,3,4])){ $query = $query->join('doctor_inquiry_config', function ($query) { @@ -382,7 +290,7 @@ class UserDoctor extends Model $query->orderByRaw('avg_response_time = 0 ASC'); $query->orderBy('avg_response_time'); $query->orderBy('served_patients_num', 'desc');// 服务数从多到少 - $query->orderBy(Db::raw("convert(substr(user_name,1,1) using `GBK`)"), 'asc');// 名称排名 + $query->orderBy(Db::raw("convert(substr(gdxz_user_doctor.user_name,1,1) using `GBK`)"), 'asc');// 名称排名 $query->orderBy('doctor_inquiry_config.inquiry_price', 'asc'); } elseif ($sort_order == 2) { // 响应时间快 @@ -420,6 +328,62 @@ class UserDoctor extends Model return $data; } + /** + * 获取问诊医生列表 + * 专家问诊-公益问诊共用 + * @param string $keyword + * @param array $hospital_params 医院搜索条件 + * @param array $doctor_params 医生搜索条件 + * @param array $doctor_expertise_params + * @param int $is_search_welfare_reception 是否搜索公益问诊 + * @param string|int $is_first_online 是否优先在线(1:是) + * @param string|int $sort_order + * @param array $fields + * @param int|null $page + * @param int|null $per_page + * @return array + */ + public static function getInquiryDoctorPageTest(string $keyword = "", array $hospital_params = [], array $doctor_params = [], array $doctor_expertise_params = [],int $is_search_welfare_reception = 0,string|int $is_first_online = 0, string|int $sort_order = 1, array $fields = ["*"], int $page = null, ?int $per_page = 10): array + { + $doctors = UserDoctor::join('user', function ($query) { + $query->on('user_doctor.user_id', '=', 'user.user_id'); + }) + ->select("user_doctor.*") + ->orderBy('user.is_online', 'desc') + ->get(); + + dump($doctors->toArray()); + return $doctors; + +// $query = self::orderBy('served_patients_num', 'desc'); +// +// if ($is_first_online == 1){ +// $query = $query->join('user', function ($query) { +// $query->on('user_doctor.user_id', '=', 'user.user_id')s +// ->orderBy('user.is_online', 'desc'); +// }) +// ->select(['user_doctor.*','user.is_online']); +// }q + +// if (!empty($sort_order)){ +// if ($sort_order == 1) { +// // 综合-价格从低到高 +// $query->orderBy('served_patients_num', 'desc');// 服务数从多到少 +// } +// } + +// $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/Request/PatientDoctorRequest.php b/app/Request/PatientDoctorRequest.php index 06fbe19..b323fbb 100644 --- a/app/Request/PatientDoctorRequest.php +++ b/app/Request/PatientDoctorRequest.php @@ -15,7 +15,8 @@ class PatientDoctorRequest extends FormRequest 'province_id', 'city_id', 'sort_order', - 'keyword' + 'keyword', + 'is_first_online' // 是否优先在线(1:是) ], 'getDoctorInquiryCheck' => [ // 检测是否可以接诊 'inquiry_type', // 订单类型(1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药) @@ -45,6 +46,7 @@ class PatientDoctorRequest extends FormRequest 'inquiry_type' => 'required|integer|min:1|max:4', 'inquiry_mode' => 'required|integer|min:1|max:5', 'my_doctor_type' => 'required|integer|min:1|max:2', + 'is_first_online' => 'integer|min:1|max:1', ]; } @@ -69,6 +71,9 @@ class PatientDoctorRequest extends FormRequest 'my_doctor_type.integer' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR), 'my_doctor_type.min' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR), 'my_doctor_type.max' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR), + 'is_first_online.integer' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR), + 'is_first_online.min' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR), + 'is_first_online.max' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR), ]; } } diff --git a/app/Services/IndexService.php b/app/Services/IndexService.php index da99fa0..a2b2517 100644 --- a/app/Services/IndexService.php +++ b/app/Services/IndexService.php @@ -332,7 +332,6 @@ class IndexService extends BaseService "user_name", "status", "avatar", - "is_online", ]; $user_pharmacist = UserPharmacist::getOne($params,$fields); @@ -350,6 +349,16 @@ class IndexService extends BaseService $user_pharmacist['avatar'] = addAliyunOssWebsite($user_pharmacist['avatar']); + // 获取用户数据 + $params = array(); + $params['user_id'] = $user_pharmacist['user_id']; + $user = User::getOne($params); + if (empty($user)){ + return fail(); + } + + $user_pharmacist['is_online'] = $user['is_online']; + // 获取药师审方数量 $params = array(); $params['pharmacist_id'] = $user_pharmacist['pharmacist_id']; diff --git a/app/Services/PatientDoctorService.php b/app/Services/PatientDoctorService.php index 170d436..17425fa 100644 --- a/app/Services/PatientDoctorService.php +++ b/app/Services/PatientDoctorService.php @@ -15,135 +15,13 @@ use App\Model\PatientFollow; use App\Model\PatientHistoryInquiry as PatientHistoryInquiryModel; use App\Model\SystemInquiryConfig; use App\Model\SystemInquiryTime; +use App\Model\User; use App\Model\UserDoctor; use App\Model\UserDoctor as UserDoctorModel; use Hyperf\DbConnection\Db; class PatientDoctorService extends BaseService { -// /** -// * 获取问诊医生列表 -// * 专家问诊-公益问诊共用 -// * @return array -// */ -// public function getInquiryDoctorList(): array -// { -// $expertise_id = $this->request->input('expertise_id'); -// $province_id = $this->request->input('province_id'); -// $city_id = $this->request->input('city_id'); -// $sort_order = $this->request->input('sort_order',1); -// $keyword = $this->request->input('keyword',""); -// $is_search_welfare_reception = $this->request->input('is_search_welfare_reception',0); -// $page = $this->request->input('page',1); -// $per_page = $this->request->input('per_page',10); -// -// // 组合条件 -// $hospital_params = array();// 医院搜索 -// $doctor_params = array();// 医生搜索 -// $doctor_expertise_params = array();// 医生专长搜索 -// -// // 省市区 -// if (!empty($province_id)) { -// if (empty($city_id)) { -// // 省份存在时需和城市在一块 -// return fail(HttpEnumCode::CLIENT_HTTP_ERROR); -// } -// $hospital_params[] = ['province_id', '=', $province_id]; -// $hospital_params[] = ['city_id', '=', $city_id]; -// } -// -// // 医生专长 -// if (!empty($expertise_id)) { -// $doctor_expertise_params['expertise_id'] = $expertise_id; -// } -// -// // 固定医生查询条件 -// $doctor_params['status'] = 1; // 状态(0:禁用 1:正常 2:删除) -// -// $doctor_params["iden_auth_status"] = 1;// 身份认证状态(0:未认证 1:认证通过 2:审核中 3:认证失败) -// $doctor_params["is_bind_bank"] = 1;// 是否已绑定结算银行卡(0:否 1:是) -// -//// if (!empty($is_search_welfare_reception)){ -//// $doctor_params["is_img_welfare_reception"] = $is_search_welfare_reception;// 是否参加公益图文问诊(0:否 1:是) -//// } -// -// $fields = [ -// "doctor_id", -// "user_id", -// "user_name", -// "multi_point_status", -// "is_bind_bank", -// "is_recommend", -// "avatar", -// "doctor_title", -// "department_custom_id", -// "department_custom_name", -// "hospital_id", -// "served_patients_num", -// "praise_rate", -// "avg_response_time", -// "number_of_fans", -// "is_online", -// "be_good_at", -// ]; -// -// $user_doctors = UserDoctor::getInquiryDoctorPage($keyword,$hospital_params, $doctor_params,$doctor_expertise_params, $sort_order, $fields,$page,$per_page); -// -// if (!empty($user_doctors['data'])) { -// foreach ($user_doctors['data'] as &$user_doctor) { -// $user_doctor['doctor_title_name'] = empty($user_doctor['doctor_title']) ? "" : DoctorTitleCode::getMessage($user_doctor['doctor_title']); -// -// // 处理医生专长 -// if (!empty($user_doctor['DoctorExpertise'])) { -// foreach ($user_doctor['DoctorExpertise'] as &$data) { -// if (!empty($data['DiseaseClassExpertise'])) { -// $data['expertise_name'] = $data['DiseaseClassExpertise']['expertise_name']; -// } -// unset($data['DiseaseClassExpertise']); -// } -// } -// -// // 处理问诊价格 -// $user_doctor['price'] = 0; -// $user_doctor['free_clinic_price'] = 0; -// if (!empty($user_doctor['DoctorInquiryConfig'])) { -// foreach ($user_doctor['DoctorInquiryConfig'] as $doctor_inquiry_config) { -// if ($doctor_inquiry_config['inquiry_mode'] == 1) { -// if ($doctor_inquiry_config['inquiry_type'] == 1) { -// // 专家 -// $user_doctor['price'] = $doctor_inquiry_config['inquiry_price'] ?? 0; -// } -// if ($doctor_inquiry_config['inquiry_type'] == 3) { -// // 公益 -// $user_doctor['free_clinic_price'] = $doctor_inquiry_config['inquiry_price']; -// } -// } -// } -// } -// -// // 好评率-超过5个已结束的订单后展示 -// $user_doctor['praise_rate'] = floor($user_doctor['praise_rate'] * 0.05 * 100) / 100; -// // 响应时间-超过5个已结束的订单后展示 -// $user_doctor['avg_response_time'] = (float)floor($user_doctor['avg_response_time'] * 10) / 10; -// -// // 获取医生订单数 -// $params = array(); -// $params['doctor_id'] = $user_doctor['doctor_id']; -// $params['inquiry_status'] = 6; // 已结束 -// $inquiry_order_count = OrderInquiry::getCount($params); -// if (empty($inquiry_order_count) || $inquiry_order_count == 0) { -// $user_doctor['is_display_score'] = false; -// } else { -// $user_doctor['is_display_score'] = true; -// } -// -// // 头像 -// $user_doctor['avatar'] = addAliyunOssWebsite($user_doctor['avatar']); -// } -// } -// return success($user_doctors); -// } - /** * 获取问诊医生列表 * 专家问诊-公益问诊共用 @@ -157,6 +35,7 @@ class PatientDoctorService extends BaseService $sort_order = $this->request->input('sort_order',1); $keyword = $this->request->input('keyword',""); $is_search_welfare_reception = $this->request->input('is_search_welfare_reception',0); // 是否参加公益图文问诊(0:否 1:是) + $is_first_online = $this->request->input('is_first_online',0); // 是否优先在线(1:是) $page = $this->request->input('page',1); $per_page = $this->request->input('per_page',10); @@ -202,11 +81,10 @@ class PatientDoctorService extends BaseService "praise_rate", "avg_response_time", "number_of_fans", - "is_online", "be_good_at", ]; - $user_doctors = UserDoctor::getInquiryDoctorPage($keyword,$hospital_params, $doctor_params,$doctor_expertise_params,$is_search_welfare_reception, $sort_order, $fields,$page,$per_page); + $user_doctors = UserDoctor::getInquiryDoctorPage($keyword,$hospital_params, $doctor_params,$doctor_expertise_params,$is_search_welfare_reception,$is_first_online, $sort_order, $fields,$page,$per_page); if (!empty($user_doctors['data'])) { foreach ($user_doctors['data'] as &$user_doctor) { @@ -307,7 +185,6 @@ class PatientDoctorService extends BaseService "praise_rate", "avg_response_time", "number_of_fans", - "is_online", "be_good_at", "brief_introduction", ]; @@ -328,6 +205,7 @@ class PatientDoctorService extends BaseService $result['hospital'] = []; $result['days'] = 0; $result['doctor_inquiry_config'] = 0; + $result['is_online'] = 0; // 获取医生医院数据 $fields = [ @@ -437,6 +315,14 @@ class PatientDoctorService extends BaseService // 头像 $result['avatar'] = addAliyunOssWebsite($user_doctor['avatar']); + // 获取用户数据 + $params = array(); + $params['user_id'] = $user_doctor['user_id']; + $user = User::getOne($params); + if (!empty($user)){ + $result['is_online'] = $user['is_online']; + } + return success($result); } @@ -652,7 +538,8 @@ class PatientDoctorService extends BaseService * 获取我的问诊、关注医生列表 * @return array */ - public function getDoctorList(){ + public function getDoctorList(): array + { $user_info = $this->request->getAttribute("userInfo") ?? []; $my_doctor_type = $this->request->input('my_doctor_type'); // 医生类型(1:问诊 2:关注) @@ -937,6 +824,14 @@ class PatientDoctorService extends BaseService continue; } + // 获取用户数据 + $params = array(); + $params['user_id'] = $user_doctor['user_id']; + $user = User::getOne($params); + if (empty($user)){ + continue; + } + // 获取医生医院 $hospital_name = ""; if (!empty($user_doctor['hospital_id'])){ @@ -964,6 +859,9 @@ class PatientDoctorService extends BaseService $data['days'] = ceil((strtotime(date('Y-m-d', strtotime('+1 day'))) - strtotime($patient_history_doctor['created_at'])) / 86400); } + // 在线状态 + $data['is_online'] = $user['is_online']; + $results[] = $data; unset($data); diff --git a/app/Services/UserPharmacistService.php b/app/Services/UserPharmacistService.php index d44b523..4e0f0a7 100644 --- a/app/Services/UserPharmacistService.php +++ b/app/Services/UserPharmacistService.php @@ -69,7 +69,7 @@ class UserPharmacistService extends BaseService $data = array(); $data['is_online'] = $is_online; if ($is_online == 1){ - $data['last_login_at'] = date('Y-m_d,H:i:s',time()); + $data['login_at'] = date('Y-m_d,H:i:s',time()); } $params = array(); diff --git a/config/routes.php b/config/routes.php index 7024eac..b22f2d3 100644 --- a/config/routes.php +++ b/config/routes.php @@ -730,7 +730,7 @@ Router::get('/case', [InquiryController::class, 'getPatientInquiryCase']); // 测试使用 Router::addGroup('/test', function () { - Router::get('', [TestController::class, 'test']); + Router::get('', [TestController::class, 'test_17']); // Router::get('/uninquiry', [TestController::class, 'uninquiry']); From 90a0777cc343a9a9e801a2f4c6dfcf3087d8fec2 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Fri, 24 Nov 2023 17:38:11 +0800 Subject: [PATCH 14/87] 1 --- app/Services/LoginService.php | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/app/Services/LoginService.php b/app/Services/LoginService.php index 54a374a..e42f146 100644 --- a/app/Services/LoginService.php +++ b/app/Services/LoginService.php @@ -88,8 +88,6 @@ class LoginService extends BaseService $data['user_type'] = $user_type; $data['register_method'] = 1;//注册方式(1:小程序授权 2:手机号 ) $data['avatar'] = $avatar; - $data['login_ip'] = (new Http())->getIp() ?? "";// 登陆ip - $data['last_login_at'] = date('Y-m-d H:i:s', time());// 最后登陆时间 $user = UserModel::addUser($data); if (empty($user)) { Db::rollBack(); @@ -285,7 +283,7 @@ class LoginService extends BaseService $data = array(); $data['login_ip'] = $login_ip ?? ""; - $data['last_login_at'] = date('Y-m-d H:i:s', time()); + $data['login_at'] = date('Y-m-d H:i:s', time()); UserModel::editUser($params, $data); @@ -379,8 +377,6 @@ class LoginService extends BaseService $data['user_type'] = $user_type; $data['register_method'] = 2; $data['avatar'] = $avatar; - $data['login_ip'] = (new Http())->getIp() ?? "";// 登陆ip - $data['last_login_at'] = date('Y-m-d H:i:s', time());// 最后登陆时间 $user = UserModel::addUser($data); if (empty($user)) { Db::rollBack(); @@ -582,7 +578,7 @@ class LoginService extends BaseService $data = array(); $data['login_ip'] = $login_ip ?? ""; - $data['last_login_at'] = date('Y-m-d H:i:s', time()); + $data['login_at'] = date('Y-m-d H:i:s', time()); UserModel::editUser($params, $data); // 组合生成token的数据 From 6c3d364a6fe09631ac3fd93bd0acac54f4a98139 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Mon, 27 Nov 2023 09:04:58 +0800 Subject: [PATCH 15/87] 1 --- app/Model/PatientFollow.php | 21 +++++++++++++++++++-- app/Model/PatientHistoryInquiry.php | 21 +++++++++++++++++++-- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/app/Model/PatientFollow.php b/app/Model/PatientFollow.php index 596c5a1..bee9b94 100644 --- a/app/Model/PatientFollow.php +++ b/app/Model/PatientFollow.php @@ -67,6 +67,22 @@ class PatientFollow extends Model ); } + /** + * 远程关联用户表 + * @return HasOneThrough + */ + public function User(): HasOneThrough + { + return $this->hasOneThrough( + User::class, + UserDoctor::class, + "doctor_id", + "user_id", + "doctor_id", + "user_id", + ); + } + /** * 获取是否存在 * @param array $params @@ -109,8 +125,9 @@ class PatientFollow extends Model $query = self::with([ 'DoctorExpertise:doctor_expertise_id,doctor_id,expertise_id', 'DoctorExpertise.DiseaseClassExpertise:expertise_id,expertise_name', - "UserDoctor:doctor_id,user_name,avatar,doctor_title,hospital_id,multi_point_status,department_custom_name,be_good_at", - "UserDoctor.Hospital:hospital_id,hospital_name,hospital_level_name" + "UserDoctor:doctor_id,user_id,user_name,avatar,doctor_title,hospital_id,multi_point_status,department_custom_name,be_good_at", + "UserDoctor.Hospital:hospital_id,hospital_name,hospital_level_name", + "UserDoctor.User:user_id,is_online" ]) ->where($params) ->paginate($per_page, $fields, "page", $page); diff --git a/app/Model/PatientHistoryInquiry.php b/app/Model/PatientHistoryInquiry.php index 7aeed7f..e818406 100644 --- a/app/Model/PatientHistoryInquiry.php +++ b/app/Model/PatientHistoryInquiry.php @@ -66,6 +66,22 @@ class PatientHistoryInquiry extends Model ); } + /** + * 远程关联用户表 + * @return HasOneThrough + */ + public function User(): HasOneThrough + { + return $this->hasOneThrough( + User::class, + UserDoctor::class, + "doctor_id", + "user_id", + "doctor_id", + "user_id", + ); + } + /** * 关联医生专长表 * @return HasMany @@ -191,8 +207,9 @@ class PatientHistoryInquiry extends Model $query = self::with([ 'DoctorExpertise:doctor_expertise_id,doctor_id,expertise_id', 'DoctorExpertise.DiseaseClassExpertise:expertise_id,expertise_name', - "UserDoctor:doctor_id,user_name,avatar,doctor_title,hospital_id,multi_point_status,department_custom_name,be_good_at", - "UserDoctor.Hospital:hospital_id,hospital_name,hospital_level_name" + "UserDoctor:doctor_id,user_id,user_name,avatar,doctor_title,hospital_id,multi_point_status,department_custom_name,be_good_at", + "UserDoctor.Hospital:hospital_id,hospital_name,hospital_level_name", + "UserDoctor.User:user_id,is_online" ]) ->where($params) ->groupBy('doctor_id') From f57f1905a8c8201dbafc1f9670273aeca4212ea3 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Mon, 27 Nov 2023 13:17:39 +0800 Subject: [PATCH 16/87] =?UTF-8?q?=E6=96=B0=E5=A2=9Eim=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E5=9B=9E=E8=B0=83=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Consumer/UserImOffDelayDirectConsumer.php | 86 +++++ .../Producer/UserImOffDelayDirectProducer.php | 30 ++ app/Controller/CallBackController.php | 111 +----- app/Services/UserService.php | 327 ++++++++++++++++++ 4 files changed, 458 insertions(+), 96 deletions(-) create mode 100644 app/Amqp/Consumer/UserImOffDelayDirectConsumer.php create mode 100644 app/Amqp/Producer/UserImOffDelayDirectProducer.php diff --git a/app/Amqp/Consumer/UserImOffDelayDirectConsumer.php b/app/Amqp/Consumer/UserImOffDelayDirectConsumer.php new file mode 100644 index 0000000..3caf1b5 --- /dev/null +++ b/app/Amqp/Consumer/UserImOffDelayDirectConsumer.php @@ -0,0 +1,86 @@ +info("开始:" . json_encode($data, JSON_UNESCAPED_UNICODE)); + + // 检测参数 + if (!isset($data['user_id'])){ + Log::getInstance("queue-UserImOff")->error("入参错误"); + return Result::DROP; + } + + // 获取用户数据 + $params = array(); + $params['user_id'] = $data['Info']['To_Account']; + $user = User::getOne($params); + if (empty($user)){ + Log::getInstance("queue-UserImOff")->error("无该用户"); + return Result::DROP; + } + + try { + // 检测用户状态 + if ($user['is_online'] == 0){ + Log::getInstance("queue-UserImOff")->info("用户目前已下线,无需处理"); + return Result::ACK; + } + + // 获取缓存 + $redis = $this->container->get(Redis::class); + $redis_key = "user_im_online" . $data['user_id']; + $res = $redis->get($redis_key); + if ($res){ + Log::getInstance("queue-UserImOff")->info("用户刚上线未满30分钟,无需处理"); + return Result::ACK; + } + + // 修改用户表在线状态 + $params = array(); + $params['user_id'] = $user['user_id']; + + $data = array(); + $data['is_online'] = 0; + $res = User::editUser($params,$data); + if (!$res){ + Log::getInstance("queue-UserImOff")->error("在线状态修改失败"); + return Result::ACK; + } + }catch (\Throwable $e){ + Log::getInstance("queue-UserImOff")->error($e->getMessage()); + return Result::DROP; + } + + Log::getInstance("queue-UserImOff")->info("结束:" . $user['user_name'] . "已下线"); + return Result::ACK; + } +} diff --git a/app/Amqp/Producer/UserImOffDelayDirectProducer.php b/app/Amqp/Producer/UserImOffDelayDirectProducer.php new file mode 100644 index 0000000..3ed77f8 --- /dev/null +++ b/app/Amqp/Producer/UserImOffDelayDirectProducer.php @@ -0,0 +1,30 @@ +payload = $data; + } +} diff --git a/app/Controller/CallBackController.php b/app/Controller/CallBackController.php index 6cb293f..251dd8d 100644 --- a/app/Controller/CallBackController.php +++ b/app/Controller/CallBackController.php @@ -738,107 +738,26 @@ class CallBackController extends AbstractController return $this->ImErrorReturn("回调签名不匹配"); } - // 验证消息内容 - if (empty($request_params['MsgBody'])) { - return $this->ImErrorReturn("消息内容错误,缺少MsgBody"); + if (empty($request_params['CallbackCommand'])){ + return $this->ImErrorReturn("回调事件为空"); } - // 验证消息内容类型 - if (empty($request_params['MsgBody'][0]['MsgType'])) { - return $this->ImErrorReturn("消息内容错误,缺少MsgType"); - } + $userService = new UserService(); - // 验证消息内容详情 - if (empty($request_params['MsgBody'][0]['MsgContent'])) { - return $this->ImErrorReturn("消息内容错误,缺少MsgContent"); - } - - // 验证接收方user_id - if (empty($request_params['To_Account'])) { - return $this->ImErrorReturn("消息内容错误,接收用户错误"); - } - - // 验证消息唯一id - if (empty($request_params['MsgKey'])) { - return $this->ImErrorReturn("消息内容错误,消息唯一标识错误"); - } - - // 验证消息重复性 - $params = array(); - $params['message_key'] = $request_params['MsgKey']; - $message = MessageIm::getExists($params); - if ($message) { - // 消息重复 - Log::getInstance("CallBackController-imCallBack")->info("消息重复"); - return $this->ImSuccessReturn(); - } - - // 处理发送结果 - if ($request_params['SendMsgResult'] == 0) { - // im中0表示成功 - $message_send_result = 1; - } - - // 验证自定义消息内容 - $is_system = 0;// 是否系统操作发送(0:否 1:是) - if (!empty($request_params['CloudCustomData'])) { - $cloud_custom_data = json_decode($request_params['CloudCustomData'], true); - - if (!empty($cloud_custom_data['order_inquiry_id'])) { - // 获取订单数据 - $params = array(); - $params['order_inquiry_id'] = $cloud_custom_data['order_inquiry_id']; - $order_inquiry = OrderInquiry::getOne($params); - if (empty($order_inquiry)) { - return $this->ImErrorReturn("消息内容错误,非法订单"); - } - - $order_inquiry_id = $cloud_custom_data['order_inquiry_id']; + if ($request_params['CallbackCommand'] == "State.StateChange"){ + // 用户状态变更 + $result = $userService->userImLoginStatus($request_params); + if ($result['code'] == 0){ + return $this->ImErrorReturn($result['message']); } - - if (!empty($cloud_custom_data['is_system'])) { - if ($cloud_custom_data['is_system'] == 1) { - // 系统发送 - $is_system = 1; - } - } - } - - // 入库 - $data = array(); - if (!empty($request_params['From_Account'])) { - // 系统发送时不带参数 - $data['from_user_id'] = $request_params['From_Account']; - } - $data['to_user_id'] = $request_params['To_Account']; - $data['message_key'] = $request_params['MsgKey']; - $data['message_send_time'] = $request_params['RequestTime']; - $data['message_seq'] = $request_params['MsgSeq']; - $data['message_send_result'] = $message_send_result ?? 0; - $data['send_error_info'] = $request_params['ErrorInfo']; - $data['message_type'] = $request_params['MsgBody'][0]['MsgType']; - - $data['is_system'] = $is_system; - if (!empty($order_inquiry_id)) { - $data['order_inquiry_id'] = $order_inquiry_id; - } - - $message_content = $request_params['MsgBody'][0]['MsgContent']; - $data['message_content'] = json_encode($message_content, JSON_UNESCAPED_UNICODE); - $data['message_custom_content'] = $request_params['CloudCustomData'] ?? ""; - $message = MessageIm::addMessage($data); - if (empty($message)) { - return $this->ImErrorReturn("存储数据库失败"); - } - - // im消息通知 - if ($is_system == 0 && isset($message_send_result) && isset($order_inquiry_id)){ - try { - $UserService = new UserService(); - $UserService->userImMessageNotice($request_params['To_Account'],$order_inquiry_id,$request_params['MsgBody']); - }catch (\Throwable $e){ - Log::getInstance("CallBackController-imCallBack")->error("im消息通知失败"); + }elseif ($request_params['CallbackCommand'] == "C2C.CallbackAfterSendMsg"){ + // 用户im消息发送后回调 + $result = $userService->userImAfterSendMsg($request_params); + if ($result['code'] == 0){ + return $this->ImErrorReturn($result['message']); } + }else{ + return $this->ImErrorReturn("非法事件"); } } catch (\Exception $e) { // 验证失败 diff --git a/app/Services/UserService.php b/app/Services/UserService.php index a5d2a85..2163698 100644 --- a/app/Services/UserService.php +++ b/app/Services/UserService.php @@ -2,8 +2,11 @@ namespace App\Services; +use App\Amqp\Producer\UserImOffDelayDirectProducer; use App\Constants\HttpEnumCode; use App\Model\Area; +use App\Model\MessageIm; +use App\Model\OrderInquiry; use App\Model\Popup; use App\Model\SubTemplate; use App\Model\User; @@ -14,12 +17,14 @@ use App\Model\UserLocation; use App\Model\UserPatient; use App\Model\UserShipAddress; use App\Model\UserSystem; +use App\Utils\Log; use App\Utils\Mask; use App\Utils\PcreMatch; use Extend\Tencent\map\Location; use Extend\TencentIm\Profile; use Extend\Wechat\Wechat; use GuzzleHttp\Exception\GuzzleException; +use Hyperf\Amqp\Producer; use Hyperf\Amqp\Result; use Hyperf\DbConnection\Db; use Hyperf\Redis\Redis; @@ -919,4 +924,326 @@ class UserService extends BaseService return true; } + + /** + * 处理用户im登陆状态 + * @param array $data im消息体 + * { + "CallbackCommand":"State.StateChange", + "Info":{ + "To_Account":"516898713896521728", + "Action":"Disconnect", + "Reason":"LinkClose" + }, + "EventTime":1701047839484, + "ClientIP":"221.216.35.130", + "OptPlatform":"Web", + "RequestId":"clhus7ir8lcc6oth83f0-144115242829354858-Disconnect-LinkClose", + "SdkAppid":"1400798221", + "contenttype":"json", + "Sign":"c32ed26bfab2b71ffc4d93f209dade65a7fb8736138d0ca6f44af4c11ba66d2d", + "RequestTime":"1701047839" + } + * @return array + */ + public function userImLoginStatus(array $msg_data): array + { + $result = array(); + $result['message'] = ""; + $result['code'] = 0; + + if (empty($msg_data['Info'])){ + $result['message'] = "消息内容错误,缺少Info"; + return $result; + } + + if (empty($msg_data['Info']['To_Account'])){ + $result['message'] = "消息内容错误,缺少Info.To_Account"; + return $result; + } + + if (empty($msg_data['Info']['Action'])){ + $result['message'] = "消息内容错误,缺少Info.Action"; + return $result; + } + + if (empty($msg_data['Info']['Reason'])){ + $result['message'] = "消息内容错误,缺少Info.Reason"; + return $result; + } + + if (empty($msg_data['RequestTime'])){ + $result['message'] = "消息内容错误,缺少RequestTime"; + return $result; + } + + // 获取用户数据 + $params = array(); + $params['user_id'] = $msg_data['Info']['To_Account']; + $user = User::getOne($params); + if (empty($user)){ + $result['message'] = "消息内容错误,接收用户错误"; + return $result; + } + + Db::beginTransaction(); + try { + if ($msg_data['Info']['Action'] == "Login"){ + // 登陆 + $im_login_at = date('Y-m-d H:i:s',$msg_data['RequestTime']); + + // 修改用户表在线状态 + $params = array(); + $params['user_id'] = $user['user_id']; + + $data = array(); + if ($user['is_online'] == 0){ + $data['is_online'] = 1; + } + $data['im_login_at'] = $im_login_at; + $res = User::editUser($params,$data); + if (!$res){ + $result['message'] = "在线状态存储失败"; + return $result; + } + + // 添加缓存 + $redis = $this->container->get(Redis::class); + $redis_key = "user_im_online" . $user['user_id']; + $redis->set($redis_key,$msg_data['RequestTime'],30*60); + + } elseif ($msg_data['Info']['Action'] == "Disconnect"){ + // 点右上角退出/断网(如手机开启飞行模式)/微信切后台/杀掉微信进程 + $time = strtotime($msg_data['RequestTime']) + 30*60; + + $data = array(); + $data['user_id'] = $user['user_id']; + + $message = new UserImOffDelayDirectProducer($data); + $message->setDelayMs(1000 * $time); + $producer = $this->container->get(Producer::class); + $res = $producer->produce($message); + if (!$res) { + $result['message'] = "添加下线队列失败"; + return $result; + } + } elseif ($msg_data['Info']['Action'] == "Logout"){ + // 主动退出 + // 修改用户表在线状态 + if ($user['is_online'] == 1){ + $params = array(); + $params['user_id'] = $user['user_id']; + + $data = array(); + $data['is_online'] = 0; + $res = User::editUser($params,$data); + if (!$res){ + $result['message'] = "在线状态存储失败"; + return $result; + } + } + + // 删除缓存 + $redis = $this->container->get(Redis::class); + $redis_key = "user_im_online" . $user['user_id']; + $redis->del($redis_key); + } + + Db::commit(); + }catch (\Throwable $e){ + Db::rollBack(); + $result['message'] = $e->getMessage(); + return $result; + } + + $result['message'] = "成功"; + $result['code'] = 1; + return $result; + } + + /** + * 处理用户im发送消息后回调 + * @param array $data im消息体 + * { + "CloudCustomData":"{\"order_inquiry_id\":\"581144270615580673\",\"is_system\":1,\"inquiry_type\":\"2\",\"message_rounds\":0,\"patient_family_data\":{\"patient_name\":\"貂蝉一\",\"patient_sex\":\"2\",\"patient_age\":\"32\"}}", + "MsgVersion":0, + "MsgBody":[ + { + "MsgType":"TIMCustomElem", + "MsgContent":{ + "Desc":"", + "Data":"{\"message_type\":11,\"title\":\"患者信息\",\"desc\":\"\",\"data\":{\"order_no\":\"581144270615580672\",\"disease_desc\":\"ᵀᵒᵈᵃʸ ᴵ ʷᵃⁿᵗ ᵗᵒ ᵇᵉ ᵗʰᵉ ʰᵃᵖᵖⁱᵉˢᵗ ᶜʰⁱˡᵈ ⁱⁿ ᵗʰᵉ ʷʰᵒˡᵉ ᵘⁿⁱᵛᵉʳˢᵉ.今天也要做全宇宙最快乐的小朋友 ​​\",\"message_path\":\"\\\/Pages\\\/yishi\\\/case\\\/index?order_inquiry_id=581144270615580673\"}}", + "Ext":"", + "Sound":"" + } + } + ], + "CallbackCommand":"C2C.CallbackAfterSendMsg", + "From_Account":"1682282293411975168", + "To_Account":"581056776246890497", + "MsgRandom":299670010, + "MsgSeq":2064411751, + "MsgTime":1699515713, + "SupportMessageExtension":0, + "MsgKey":"2064411751_299670010_1699515713", + "OnlineOnlyFlag":0, + "SendMsgResult":0, + "ErrorInfo":"send msg succeed", + "UnreadMsgNum":8, + "EventTime":1699515713924, + "ClientIP":"139.155.127.177", + "OptPlatform":"RESTAPI", + "RequestId":"37677-144115242877083697-1699515713-299670010", + "SdkAppid":"1400798221", + "contenttype":"json", + "Sign":"f6069aeb0c62cf3d77336794f7cf5a8543ddbff8c285f7341419df37ac713ff2", + "RequestTime":"1699515713" + } + * @return array + */ + public function userImAfterSendMsg(array $msg_data): array + { + $result = array(); + $result['message'] = ""; + $result['code'] = 0; + + // 验证消息内容 + if (empty($msg_data['MsgBody'])) { + $result['message'] = "消息内容错误,缺少MsgBody"; + return $result; + } + + // 验证消息内容类型 + if (empty($msg_data['MsgBody'][0]['MsgType'])) { + $result['message'] = "消息内容错误,缺少MsgType"; + return $result; + } + + // 验证消息内容详情 + if (empty($msg_data['MsgBody'][0]['MsgContent'])) { + $result['message'] = "消息内容错误,缺少MsgContent"; + return $result; + } + + // 验证接收方user_id + if (empty($msg_data['To_Account'])) { + $result['message'] = "消息内容错误,接收用户错误"; + return $result; + } + + // 验证消息唯一id + if (empty($msg_data['MsgKey'])) { + $result['message'] = "消息内容错误,消息唯一标识错误"; + return $result; + } + + // 处理自定义消息 + if ($msg_data['MsgBody'][0]['MsgType'] == "TIMCustomElem"){ + if (empty($msg_data['MsgBody'][0]['MsgContent']['Data'])){ + $result['message'] = "自定义消息数据类型错误"; + return $result; + } + + $content = json_decode($msg_data['MsgBody'][0]['MsgContent']['Data'],true); + if (empty($content)){ + $result['message'] = "自定义消息数据内容错误"; + return $result; + } + + if ($content['message_type'] == 4 || $content['message_type'] == 5){ + // 4/5类型时不进行处理 + $result['message'] = "成功"; + $result['code'] = 1; + return $result; + } + } + + // 验证消息重复性 + $params = array(); + $params['message_key'] = $msg_data['MsgKey']; + $message = MessageIm::getExists($params); + if ($message) { + $result['message'] = "消息重复"; + return $result; + } + + // 处理发送结果 + if ($msg_data['SendMsgResult'] == 0) { + // im中0表示成功 + $message_send_result = 1; + } + + // 验证自定义消息内容 + $is_system = 0;// 是否系统操作发送(0:否 1:是) + if (!empty($msg_data['CloudCustomData'])) { + $cloud_custom_data = json_decode($msg_data['CloudCustomData'], true); + + if (!empty($cloud_custom_data['order_inquiry_id'])) { + // 获取订单数据 + $params = array(); + $params['order_inquiry_id'] = $cloud_custom_data['order_inquiry_id']; + $order_inquiry = OrderInquiry::getOne($params); + if (empty($order_inquiry)) { + $result['message'] = "消息内容错误,非法订单"; + return $result; + } + + $order_inquiry_id = $cloud_custom_data['order_inquiry_id']; + } + + if (!empty($cloud_custom_data['is_system'])) { + if ($cloud_custom_data['is_system'] == 1) { + // 系统发送 + $is_system = 1; + } + } + } + + try { + // 入库 + $data = array(); + if (!empty($msg_data['From_Account'])) { + // 系统发送时不带参数 + $data['from_user_id'] = $msg_data['From_Account']; + } + $data['to_user_id'] = $msg_data['To_Account']; + $data['message_key'] = $msg_data['MsgKey']; + $data['message_send_time'] = $msg_data['RequestTime']; + $data['message_seq'] = $msg_data['MsgSeq']; + $data['message_send_result'] = $message_send_result ?? 0; + $data['send_error_info'] = $msg_data['ErrorInfo']; + $data['message_type'] = $msg_data['MsgBody'][0]['MsgType']; + + $data['is_system'] = $is_system; + if (!empty($order_inquiry_id)) { + $data['order_inquiry_id'] = $order_inquiry_id; + } + + $message_content = $msg_data['MsgBody'][0]['MsgContent']; + $data['message_content'] = json_encode($message_content, JSON_UNESCAPED_UNICODE); + $data['message_custom_content'] = $msg_data['CloudCustomData'] ?? ""; + $message = MessageIm::addMessage($data); + if (empty($message)) { + $result['message'] = "存储数据库失败"; + return $result; + } + + // im消息通知 + if ($is_system == 0 && isset($message_send_result) && isset($order_inquiry_id)){ + try { + $UserService = new UserService(); + $UserService->userImMessageNotice($msg_data['To_Account'],$order_inquiry_id,$msg_data['MsgBody']); + }catch (\Throwable $e){ + Log::getInstance("UserService-userImAfterSendMsg")->error("im消息通知失败"); + } + } + }catch (\Throwable $e){ + $result['message'] = $e->getMessage(); + return $result; + } + + $result['message'] = "成功"; + $result['code'] = 1; + return $result; + } } \ No newline at end of file From 1dcf99798e17328ce96308dbdad5532823a3bd08 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Mon, 27 Nov 2023 13:19:56 +0800 Subject: [PATCH 17/87] =?UTF-8?q?=E6=96=B0=E5=A2=9Eim=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E5=9B=9E=E8=B0=83=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Amqp/Consumer/UserImOffDelayDirectConsumer.php | 2 +- app/Services/UserService.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/Amqp/Consumer/UserImOffDelayDirectConsumer.php b/app/Amqp/Consumer/UserImOffDelayDirectConsumer.php index 3caf1b5..eb679b2 100644 --- a/app/Amqp/Consumer/UserImOffDelayDirectConsumer.php +++ b/app/Amqp/Consumer/UserImOffDelayDirectConsumer.php @@ -57,7 +57,7 @@ class UserImOffDelayDirectConsumer extends ConsumerMessage // 获取缓存 $redis = $this->container->get(Redis::class); - $redis_key = "user_im_online" . $data['user_id']; + $redis_key = "user_im_online_" . $data['user_id']; $res = $redis->get($redis_key); if ($res){ Log::getInstance("queue-UserImOff")->info("用户刚上线未满30分钟,无需处理"); diff --git a/app/Services/UserService.php b/app/Services/UserService.php index 2163698..e68ad8e 100644 --- a/app/Services/UserService.php +++ b/app/Services/UserService.php @@ -1009,7 +1009,7 @@ class UserService extends BaseService // 添加缓存 $redis = $this->container->get(Redis::class); - $redis_key = "user_im_online" . $user['user_id']; + $redis_key = "user_im_online_" . $user['user_id']; $redis->set($redis_key,$msg_data['RequestTime'],30*60); } elseif ($msg_data['Info']['Action'] == "Disconnect"){ @@ -1045,7 +1045,7 @@ class UserService extends BaseService // 删除缓存 $redis = $this->container->get(Redis::class); - $redis_key = "user_im_online" . $user['user_id']; + $redis_key = "user_im_online_" . $user['user_id']; $redis->del($redis_key); } From e32e7b83fc58f4ffa0eed838cd0c28d6ce80c887 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Mon, 27 Nov 2023 13:26:31 +0800 Subject: [PATCH 18/87] =?UTF-8?q?=E6=96=B0=E5=A2=9Eim=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E5=9B=9E=E8=B0=83=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Services/UserService.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Services/UserService.php b/app/Services/UserService.php index e68ad8e..b1190d2 100644 --- a/app/Services/UserService.php +++ b/app/Services/UserService.php @@ -1014,7 +1014,7 @@ class UserService extends BaseService } elseif ($msg_data['Info']['Action'] == "Disconnect"){ // 点右上角退出/断网(如手机开启飞行模式)/微信切后台/杀掉微信进程 - $time = strtotime($msg_data['RequestTime']) + 30*60; + $time = strtotime($msg_data['RequestTime']) + 3*60; $data = array(); $data['user_id'] = $user['user_id']; From 9acd0ae680cb30c1283a6d4a1750d443cf56d38b Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Mon, 27 Nov 2023 13:34:04 +0800 Subject: [PATCH 19/87] =?UTF-8?q?=E6=96=B0=E5=A2=9Eim=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E5=9B=9E=E8=B0=83=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Services/UserService.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Services/UserService.php b/app/Services/UserService.php index b1190d2..e4802d7 100644 --- a/app/Services/UserService.php +++ b/app/Services/UserService.php @@ -1010,7 +1010,7 @@ class UserService extends BaseService // 添加缓存 $redis = $this->container->get(Redis::class); $redis_key = "user_im_online_" . $user['user_id']; - $redis->set($redis_key,$msg_data['RequestTime'],30*60); + $redis->set($redis_key,$msg_data['RequestTime'],3*60); } elseif ($msg_data['Info']['Action'] == "Disconnect"){ // 点右上角退出/断网(如手机开启飞行模式)/微信切后台/杀掉微信进程 From d3e819eb421128c4be152638fb59a973c86c7186 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Mon, 27 Nov 2023 13:42:41 +0800 Subject: [PATCH 20/87] =?UTF-8?q?=E6=96=B0=E5=A2=9Eim=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E5=9B=9E=E8=B0=83=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Amqp/Consumer/UserImOffDelayDirectConsumer.php | 10 +++++++++- app/Services/UserService.php | 6 ------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/app/Amqp/Consumer/UserImOffDelayDirectConsumer.php b/app/Amqp/Consumer/UserImOffDelayDirectConsumer.php index eb679b2..a83ea66 100644 --- a/app/Amqp/Consumer/UserImOffDelayDirectConsumer.php +++ b/app/Amqp/Consumer/UserImOffDelayDirectConsumer.php @@ -41,7 +41,7 @@ class UserImOffDelayDirectConsumer extends ConsumerMessage // 获取用户数据 $params = array(); - $params['user_id'] = $data['Info']['To_Account']; + $params['user_id'] = $data['user_id']; $user = User::getOne($params); if (empty($user)){ Log::getInstance("queue-UserImOff")->error("无该用户"); @@ -64,6 +64,14 @@ class UserImOffDelayDirectConsumer extends ConsumerMessage return Result::ACK; } + $im_login_at = strtotime($user['im_login_at']); + + $diff_time = time() - $im_login_at; + if ($diff_time <= 3 * 60){ + Log::getInstance("queue-UserImOff")->info("用户刚上线未满30分钟,无需处理"); + return Result::ACK; + } + // 修改用户表在线状态 $params = array(); $params['user_id'] = $user['user_id']; diff --git a/app/Services/UserService.php b/app/Services/UserService.php index e4802d7..9724e41 100644 --- a/app/Services/UserService.php +++ b/app/Services/UserService.php @@ -1006,12 +1006,6 @@ class UserService extends BaseService $result['message'] = "在线状态存储失败"; return $result; } - - // 添加缓存 - $redis = $this->container->get(Redis::class); - $redis_key = "user_im_online_" . $user['user_id']; - $redis->set($redis_key,$msg_data['RequestTime'],3*60); - } elseif ($msg_data['Info']['Action'] == "Disconnect"){ // 点右上角退出/断网(如手机开启飞行模式)/微信切后台/杀掉微信进程 $time = strtotime($msg_data['RequestTime']) + 3*60; From f68a8438c1e9b3300a8873836ec4140e659ab494 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Mon, 27 Nov 2023 13:51:25 +0800 Subject: [PATCH 21/87] 1 --- app/Amqp/Consumer/UserImOffDelayDirectConsumer.php | 2 +- app/Services/UserService.php | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/Amqp/Consumer/UserImOffDelayDirectConsumer.php b/app/Amqp/Consumer/UserImOffDelayDirectConsumer.php index a83ea66..cfb658c 100644 --- a/app/Amqp/Consumer/UserImOffDelayDirectConsumer.php +++ b/app/Amqp/Consumer/UserImOffDelayDirectConsumer.php @@ -67,7 +67,7 @@ class UserImOffDelayDirectConsumer extends ConsumerMessage $im_login_at = strtotime($user['im_login_at']); $diff_time = time() - $im_login_at; - if ($diff_time <= 3 * 60){ + if ($diff_time <= (30 * 60 + 10)){ Log::getInstance("queue-UserImOff")->info("用户刚上线未满30分钟,无需处理"); return Result::ACK; } diff --git a/app/Services/UserService.php b/app/Services/UserService.php index 9724e41..dfde661 100644 --- a/app/Services/UserService.php +++ b/app/Services/UserService.php @@ -1006,9 +1006,11 @@ class UserService extends BaseService $result['message'] = "在线状态存储失败"; return $result; } + + Log::getInstance("UserService-userImLoginStatus")->info("用户已设上线"); } elseif ($msg_data['Info']['Action'] == "Disconnect"){ // 点右上角退出/断网(如手机开启飞行模式)/微信切后台/杀掉微信进程 - $time = strtotime($msg_data['RequestTime']) + 3*60; + $time = strtotime($msg_data['RequestTime']) + 30*60; $data = array(); $data['user_id'] = $user['user_id']; @@ -1021,6 +1023,7 @@ class UserService extends BaseService $result['message'] = "添加下线队列失败"; return $result; } + Log::getInstance("UserService-userImLoginStatus")->info("已添加延迟下线队列"); } elseif ($msg_data['Info']['Action'] == "Logout"){ // 主动退出 // 修改用户表在线状态 @@ -1037,10 +1040,7 @@ class UserService extends BaseService } } - // 删除缓存 - $redis = $this->container->get(Redis::class); - $redis_key = "user_im_online_" . $user['user_id']; - $redis->del($redis_key); + Log::getInstance("UserService-userImLoginStatus")->info("用户已设下线"); } Db::commit(); From 056de43bc77db4c2ab60752484b693e810fa1d1e Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Mon, 27 Nov 2023 13:53:21 +0800 Subject: [PATCH 22/87] 1 --- app/Amqp/Consumer/UserImOffDelayDirectConsumer.php | 9 --------- 1 file changed, 9 deletions(-) diff --git a/app/Amqp/Consumer/UserImOffDelayDirectConsumer.php b/app/Amqp/Consumer/UserImOffDelayDirectConsumer.php index cfb658c..4475285 100644 --- a/app/Amqp/Consumer/UserImOffDelayDirectConsumer.php +++ b/app/Amqp/Consumer/UserImOffDelayDirectConsumer.php @@ -55,15 +55,6 @@ class UserImOffDelayDirectConsumer extends ConsumerMessage return Result::ACK; } - // 获取缓存 - $redis = $this->container->get(Redis::class); - $redis_key = "user_im_online_" . $data['user_id']; - $res = $redis->get($redis_key); - if ($res){ - Log::getInstance("queue-UserImOff")->info("用户刚上线未满30分钟,无需处理"); - return Result::ACK; - } - $im_login_at = strtotime($user['im_login_at']); $diff_time = time() - $im_login_at; From cc2470a781cd22010da9c2970e66173e0125fbd7 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Tue, 28 Nov 2023 13:54:31 +0800 Subject: [PATCH 23/87] 1 --- app/Controller/PatientCaseController.php | 31 ++++++++++++ app/Controller/TestController.php | 56 ++++++++++++++++++++++ app/Model/OrderInquiryCase.php | 17 +++++-- app/Model/PatientPathography.php | 12 ++++- app/Request/PatientCaseRequest.php | 46 ++++++++++++++++++ app/Services/PatientCaseService.php | 11 +++++ app/Services/PatientPathographyService.php | 13 +++++ config/routes.php | 13 +++-- 8 files changed, 190 insertions(+), 9 deletions(-) create mode 100644 app/Controller/PatientCaseController.php create mode 100644 app/Request/PatientCaseRequest.php create mode 100644 app/Services/PatientCaseService.php diff --git a/app/Controller/PatientCaseController.php b/app/Controller/PatientCaseController.php new file mode 100644 index 0000000..c77458d --- /dev/null +++ b/app/Controller/PatientCaseController.php @@ -0,0 +1,31 @@ +container->get(PatientCaseRequest::class); + $request->scene('getPatientFamilyInquiryCase')->validateResolved(); + + $InquiryService = new InquiryService(); + $data = $InquiryService->getPatientInquiryCase(); + return $this->response->json($data); + } +} \ No newline at end of file diff --git a/app/Controller/TestController.php b/app/Controller/TestController.php index 6115636..d039773 100644 --- a/app/Controller/TestController.php +++ b/app/Controller/TestController.php @@ -463,6 +463,62 @@ class TestController extends AbstractController } public function test_17(){ + $expertise_id = $this->request->input('expertise_id'); + $province_id = $this->request->input('province_id'); + $city_id = $this->request->input('city_id'); + $sort_order = $this->request->input('sort_order',1); + $keyword = $this->request->input('keyword',""); + $is_search_welfare_reception = $this->request->input('is_search_welfare_reception',0); // 是否参加公益图文问诊(0:否 1:是) + $is_first_online = $this->request->input('is_first_online',0); // 是否优先在线(1:是) + $page = $this->request->input('page',1); + $per_page = $this->request->input('per_page',10); + // 组合条件 + $hospital_params = array();// 医院搜索 + $doctor_params = array();// 医生搜索 + $doctor_expertise_params = array();// 医生专长搜索 + + // 省市区 + if (!empty($province_id)) { + if (empty($city_id)) { + // 省份存在时需和城市在一块 + return fail(HttpEnumCode::CLIENT_HTTP_ERROR); + } + $hospital_params[] = ['province_id', '=', $province_id]; + $hospital_params[] = ['city_id', '=', $city_id]; + } + + // 医生专长 + if (!empty($expertise_id)) { + $doctor_expertise_params['expertise_id'] = $expertise_id; + } + + // 固定医生查询条件 + $doctor_params['status'] = 1; // 状态(0:禁用 1:正常 2:删除) + + $doctor_params["iden_auth_status"] = 1;// 身份认证状态(0:未认证 1:认证通过 2:审核中 3:认证失败) + $doctor_params["is_bind_bank"] = 1;// 是否已绑定结算银行卡(0:否 1:是) + + $fields = [ + "doctor_id", + "user_id", + "user_name", + "multi_point_status", + "is_bind_bank", + "is_recommend", + "avatar", + "doctor_title", + "department_custom_id", + "department_custom_name", + "hospital_id", + "served_patients_num", + "praise_rate", + "avg_response_time", + "number_of_fans", + "be_good_at", + ]; + + $user_doctors = UserDoctor::getInquiryDoctorPageTest($keyword,$hospital_params, $doctor_params,$doctor_expertise_params,$is_search_welfare_reception,$is_first_online, $sort_order, ['*'],$page,$per_page); + return success($user_doctors); } } \ No newline at end of file diff --git a/app/Model/OrderInquiryCase.php b/app/Model/OrderInquiryCase.php index 1584daf..2b9d25c 100644 --- a/app/Model/OrderInquiryCase.php +++ b/app/Model/OrderInquiryCase.php @@ -14,14 +14,14 @@ use Hyperf\Snowflake\Concern\Snowflake; * @property int $patient_id 患者id * @property int $order_inquiry_id 订单-问诊id * @property int $family_id 家庭成员id - * @property int $relation 与患者关系(1:本人 2:父母 3:爱人 4:子女 5:亲戚 6:其他 ) + * @property int $disease_class_id 疾病分类id-系统 + * @property int $nation_id 民族 * @property int $status 状态(1:正常 2:删除) * @property string $name 患者名称 * @property int $sex 患者性别(0:未知 1:男 2:女) * @property int $age 患者年龄 * @property string $height 身高(cm) * @property string $weight 体重(kg) - * @property int $disease_class_id 疾病分类id-系统 * @property string $disease_class_name 疾病名称-系统 * @property string $diagnosis_date 确诊日期 * @property string $disease_desc 病情描述(主诉) @@ -33,8 +33,17 @@ use Hyperf\Snowflake\Concern\Snowflake; * @property int $is_pregnant 是否备孕、妊娠、哺乳期(0:否 1:是) * @property string $pregnant 备孕、妊娠、哺乳期描述 * @property int $is_taboo 是否服用过禁忌药物,且无相关禁忌(0:否 1:是)问诊购药时存在 - * @property int $nation_id 民族 + * @property int $job_id 职业id + * @property int $relation 与患者关系(1:本人 2:父母 3:爱人 4:子女 5:亲戚 6:其他 ) * @property string $nation_name 民族名称 + * @property string $job_name 职业名称 + * @property string $diagnosis_hospital 确诊医院 + * @property int $is_operation 是否存在手术(0:否 1:是) + * @property string $operation 手术描述 + * @property int $drink_wine_status 饮酒状态(1:从不 2:偶尔 3:经常 4:每天 5:已戒酒) + * @property int $smoke_status 吸烟状态(1:从不 2:偶尔 3:经常 4:每天 5:已戒烟) + * @property int $chemical_compound_status 化合物状态(1:从不 2:偶尔 3:经常 4:每天) + * @property string $chemical_compound_describe 化合物描述 * @property \Carbon\Carbon $created_at 创建时间 * @property \Carbon\Carbon $updated_at 修改时间 * @property-read BasicJob|null $BasicJob @@ -53,7 +62,7 @@ class OrderInquiryCase extends Model /** * The attributes that are mass assignable. */ - protected array $fillable = ['inquiry_case_id', 'user_id', 'patient_id', 'order_inquiry_id', 'family_id', 'relation', 'status', 'name', 'sex', 'age', 'height', 'weight', 'disease_class_id', 'disease_class_name', 'diagnosis_date', 'disease_desc', 'diagnose_images', 'is_allergy_history', 'allergy_history', 'is_family_history', 'family_history', 'is_pregnant', 'pregnant', 'is_taboo', 'nation_id', 'nation_name', 'created_at', 'updated_at']; + protected array $fillable = ['inquiry_case_id', 'user_id', 'patient_id', 'order_inquiry_id', 'family_id', 'disease_class_id', 'nation_id', 'status', 'name', 'sex', 'age', 'height', 'weight', 'disease_class_name', 'diagnosis_date', 'disease_desc', 'diagnose_images', 'is_allergy_history', 'allergy_history', 'is_family_history', 'family_history', 'is_pregnant', 'pregnant', 'is_taboo', 'job_id', 'relation', 'nation_name', 'job_name', 'diagnosis_hospital', 'is_operation', 'operation', 'drink_wine_status', 'smoke_status', 'chemical_compound_status', 'chemical_compound_describe', 'created_at', 'updated_at']; protected string $primaryKey = "inquiry_case_id"; diff --git a/app/Model/PatientPathography.php b/app/Model/PatientPathography.php index 00c1b2b..87ad053 100644 --- a/app/Model/PatientPathography.php +++ b/app/Model/PatientPathography.php @@ -7,6 +7,7 @@ namespace App\Model; use Hyperf\Database\Model\Collection; +use Hyperf\Database\Model\Relations\HasOne; use Hyperf\DbConnection\Db; use Hyperf\Snowflake\Concern\Snowflake; @@ -68,6 +69,14 @@ class PatientPathography extends Model protected string $primaryKey = "pathography_id"; + /** + * 关联问诊订单表 + */ + public function OrderInquiry(): HasOne + { + return $this->hasOne(OrderInquiry::class, 'order_inquiry_id', 'order_inquiry_id'); + } + /** * 获取信息-单条 * @param array $params @@ -132,7 +141,8 @@ class PatientPathography extends Model */ public static function getPatientPathographyPage(array $params,array $fields = ["*"], int $page = null, ?int $per_page = 10): array { - $result = self::where($params) + $result = self::with(['OrderInquiry']) + ->where($params) ->orderBy("created_at",'desc') ->paginate($per_page, $fields, "page", $page); diff --git a/app/Request/PatientCaseRequest.php b/app/Request/PatientCaseRequest.php new file mode 100644 index 0000000..454356a --- /dev/null +++ b/app/Request/PatientCaseRequest.php @@ -0,0 +1,46 @@ + [ // 获取患者问诊病例 + 'order_inquiry_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 [ + 'order_inquiry_id' => 'required', + ]; + } + + /** + * 获取已定义验证规则的错误消息. + */ + public function messages(): array + { + return [ + 'order_inquiry_id.required' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR), + ]; + } +} diff --git a/app/Services/PatientCaseService.php b/app/Services/PatientCaseService.php new file mode 100644 index 0000000..fd0e6a3 --- /dev/null +++ b/app/Services/PatientCaseService.php @@ -0,0 +1,11 @@ + Date: Tue, 28 Nov 2023 13:58:34 +0800 Subject: [PATCH 24/87] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8C=BB=E7=94=9F?= =?UTF-8?q?=E6=9C=AA=E6=8E=A5=E8=AF=8A=E8=B7=B3=E8=BD=AC=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Services/MessagePush.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Services/MessagePush.php b/app/Services/MessagePush.php index ccde9f2..bbd699f 100644 --- a/app/Services/MessagePush.php +++ b/app/Services/MessagePush.php @@ -1177,7 +1177,7 @@ class MessagePush extends BaseService $data['notice_brief_title'] = "{$this->order_inquiry['patient_name']}患者的问诊您还未接诊,请注意查看。"; $data['notice_title'] = "{$this->order_inquiry['patient_name']}患者的问诊您还未接诊,请注意查看。"; $data['notice_content'] = "{$this->order_inquiry['patient_name']}患者的问诊您还未接诊,请注意查看。"; - $data['link_type'] = 1; // 聊天详情页 + $data['link_type'] = 3; // 问诊消息列表页 $link_params = array(); $link_params['order_inquiry_id'] = $this->order_inquiry['order_inquiry_id']; From b88c4a2a5e5568b38d3ee201efbac66d3e5adea5 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Tue, 28 Nov 2023 14:44:48 +0800 Subject: [PATCH 25/87] 1 --- app/Services/MessagePush.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Services/MessagePush.php b/app/Services/MessagePush.php index bbd699f..2ecdef3 100644 --- a/app/Services/MessagePush.php +++ b/app/Services/MessagePush.php @@ -1177,7 +1177,7 @@ class MessagePush extends BaseService $data['notice_brief_title'] = "{$this->order_inquiry['patient_name']}患者的问诊您还未接诊,请注意查看。"; $data['notice_title'] = "{$this->order_inquiry['patient_name']}患者的问诊您还未接诊,请注意查看。"; $data['notice_content'] = "{$this->order_inquiry['patient_name']}患者的问诊您还未接诊,请注意查看。"; - $data['link_type'] = 3; // 问诊消息列表页 + $data['link_type'] = 3; // 问诊消息列表页. $link_params = array(); $link_params['order_inquiry_id'] = $this->order_inquiry['order_inquiry_id']; From c69a2e27803461a31cfe5486845a68fd40848695 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Tue, 28 Nov 2023 15:41:33 +0800 Subject: [PATCH 26/87] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8E=A8=E9=80=81?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E5=8C=BB=E7=94=9Fxx=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E5=90=8E=E8=BF=98=E6=9C=AA=E6=8E=A5=E8=AF=8A=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Services/MessagePush.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/Services/MessagePush.php b/app/Services/MessagePush.php index 2ecdef3..8f9706d 100644 --- a/app/Services/MessagePush.php +++ b/app/Services/MessagePush.php @@ -1174,9 +1174,9 @@ class MessagePush extends BaseService $data['notice_type'] = 1; $data['inquiry_type'] = $this->order_inquiry['inquiry_type']; // 问诊类型(医生端服务通知存在 1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药) $data['from_name'] = "肝胆小秘书"; - $data['notice_brief_title'] = "{$this->order_inquiry['patient_name']}患者的问诊您还未接诊,请注意查看。"; - $data['notice_title'] = "{$this->order_inquiry['patient_name']}患者的问诊您还未接诊,请注意查看。"; - $data['notice_content'] = "{$this->order_inquiry['patient_name']}患者的问诊您还未接诊,请注意查看。"; + $data['notice_brief_title'] = "{$this->order_inquiry['patient_name']}患者的问诊您还未接诊,请及时处理。"; + $data['notice_title'] = "{$this->order_inquiry['patient_name']}患者的问诊您还未接诊,请及时处理。"; + $data['notice_content'] = "{$this->order_inquiry['patient_name']}患者的问诊您还未接诊,请及时处理。"; $data['link_type'] = 3; // 问诊消息列表页. $link_params = array(); @@ -1201,10 +1201,10 @@ class MessagePush extends BaseService $sub_data['wx_template_id'] = "G1RIs0RYqsTQ2CuPQWalIMyb6_deuEEbJfajfhGvNzc"; // 咨询提醒 $sub_data['params']['page'] = "Pages/yishi/wenzhen_v2/wenzhen"; $sub_data['params']['data'] = [ - "thing1" => "您好医生,{$this->order_inquiry['patient_name']}患者的({$inquiry_type})服务您还未接诊;",// 提醒内容 + "thing1" => "您好医生,有新的问诊服务您还未接诊",// 提醒内容 "name2" => $this->order_inquiry['patient_name'],// 患者姓名 "thing4" => mb_substr($order_inquiry_case['disease_desc'], 0, 18),// 病情描述 - "thing6" => "24小时内未接诊,平台将自动取消问诊。",// 提示说明 + "thing6" => "您还未接诊,请及时上线处理",// 提示说明 "thing5" => "",// 咨询内容 ]; @@ -1315,7 +1315,7 @@ class MessagePush extends BaseService $data['notice_brief_title'] = "{$this->order_inquiry['patient_name']}患者的电子处方已审核通过,请注意查看。"; $data['notice_title'] = "{$this->order_inquiry['patient_name']}患者的电子处方已审核通过,请注意查看。"; $data['notice_content'] = "{$this->order_inquiry['patient_name']}患者的电子处方已审核通过,请注意查看。"; - $data['link_type'] = 1; // 聊天详情页 + $data['link_type'] = 3; // 问诊消息列表页 $link_params = array(); $link_params['order_inquiry_id'] = $this->order_inquiry['order_inquiry_id']; From 9d7701f4541e5b34f3032ee9d409cd77aef1d0ab Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Wed, 29 Nov 2023 14:26:44 +0800 Subject: [PATCH 27/87] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=AE=B6=E5=BA=AD=E6=88=90=E5=91=98=E7=97=85=E6=83=85=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E8=AF=A6=E6=83=85=20=20=E6=96=B0=E5=A2=9E=20=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E9=97=AE=E8=AF=8A=E8=AE=A2=E5=8D=95=E7=97=85=E4=BE=8B?= =?UTF-8?q?=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Controller/PatientCaseController.php | 23 ++- app/Model/OrderInquiryCase.php | 8 +- app/Request/PatientCaseRequest.php | 5 +- app/Services/PatientCaseService.php | 199 +++++++++++++++++++++ app/Services/PatientPathographyService.php | 11 +- config/routes.php | 7 +- 6 files changed, 242 insertions(+), 11 deletions(-) diff --git a/app/Controller/PatientCaseController.php b/app/Controller/PatientCaseController.php index c77458d..3c0e33e 100644 --- a/app/Controller/PatientCaseController.php +++ b/app/Controller/PatientCaseController.php @@ -4,6 +4,7 @@ namespace App\Controller; use App\Request\PatientCaseRequest; use App\Services\InquiryService; +use App\Services\PatientCaseService; use Psr\Container\ContainerExceptionInterface; use Psr\Container\NotFoundExceptionInterface; use Psr\Http\Message\ResponseInterface; @@ -14,7 +15,23 @@ use Psr\Http\Message\ResponseInterface; class PatientCaseController extends AbstractController { /** - * 获取患者家庭成员问诊病例详情 + * 获取问诊订单病例详情-基础 + * @return ResponseInterface + * @throws ContainerExceptionInterface + * @throws NotFoundExceptionInterface + */ + public function getPatientFamilyInquiryCaseSimple(): ResponseInterface + { + $request = $this->container->get(PatientCaseRequest::class); + $request->scene('getPatientFamilyInquiryCaseSimple')->validateResolved(); + + $PatientCaseService = new PatientCaseService(); + $data = $PatientCaseService->getPatientFamilyInquiryCaseSimple(); + return $this->response->json($data); + } + + /** + * 获取问诊订单病例详情 * @return ResponseInterface * @throws ContainerExceptionInterface * @throws NotFoundExceptionInterface @@ -24,8 +41,8 @@ class PatientCaseController extends AbstractController $request = $this->container->get(PatientCaseRequest::class); $request->scene('getPatientFamilyInquiryCase')->validateResolved(); - $InquiryService = new InquiryService(); - $data = $InquiryService->getPatientInquiryCase(); + $PatientCaseService = new PatientCaseService(); + $data = $PatientCaseService->getPatientFamilyInquiryCase(); return $this->response->json($data); } } \ No newline at end of file diff --git a/app/Model/OrderInquiryCase.php b/app/Model/OrderInquiryCase.php index 2b9d25c..4751dc5 100644 --- a/app/Model/OrderInquiryCase.php +++ b/app/Model/OrderInquiryCase.php @@ -16,6 +16,8 @@ use Hyperf\Snowflake\Concern\Snowflake; * @property int $family_id 家庭成员id * @property int $disease_class_id 疾病分类id-系统 * @property int $nation_id 民族 + * @property int $job_id 职业id + * @property int $relation 与患者关系(1:本人 2:父母 3:爱人 4:子女 5:亲戚 6:其他 ) * @property int $status 状态(1:正常 2:删除) * @property string $name 患者名称 * @property int $sex 患者性别(0:未知 1:男 2:女) @@ -33,8 +35,8 @@ use Hyperf\Snowflake\Concern\Snowflake; * @property int $is_pregnant 是否备孕、妊娠、哺乳期(0:否 1:是) * @property string $pregnant 备孕、妊娠、哺乳期描述 * @property int $is_taboo 是否服用过禁忌药物,且无相关禁忌(0:否 1:是)问诊购药时存在 - * @property int $job_id 职业id - * @property int $relation 与患者关系(1:本人 2:父母 3:爱人 4:子女 5:亲戚 6:其他 ) + * @property int $is_take_medicine 正在服药(0:否 1:是) + * @property string $drugs_name 正在服药名称 * @property string $nation_name 民族名称 * @property string $job_name 职业名称 * @property string $diagnosis_hospital 确诊医院 @@ -62,7 +64,7 @@ class OrderInquiryCase extends Model /** * The attributes that are mass assignable. */ - protected array $fillable = ['inquiry_case_id', 'user_id', 'patient_id', 'order_inquiry_id', 'family_id', 'disease_class_id', 'nation_id', 'status', 'name', 'sex', 'age', 'height', 'weight', 'disease_class_name', 'diagnosis_date', 'disease_desc', 'diagnose_images', 'is_allergy_history', 'allergy_history', 'is_family_history', 'family_history', 'is_pregnant', 'pregnant', 'is_taboo', 'job_id', 'relation', 'nation_name', 'job_name', 'diagnosis_hospital', 'is_operation', 'operation', 'drink_wine_status', 'smoke_status', 'chemical_compound_status', 'chemical_compound_describe', 'created_at', 'updated_at']; + protected array $fillable = ['inquiry_case_id', 'user_id', 'patient_id', 'order_inquiry_id', 'family_id', 'disease_class_id', 'nation_id', 'job_id', 'relation', 'status', 'name', 'sex', 'age', 'height', 'weight', 'disease_class_name', 'diagnosis_date', 'disease_desc', 'diagnose_images', 'is_allergy_history', 'allergy_history', 'is_family_history', 'family_history', 'is_pregnant', 'pregnant', 'is_taboo', 'is_take_medicine', 'drugs_name', 'nation_name', 'job_name', 'diagnosis_hospital', 'is_operation', 'operation', 'drink_wine_status', 'smoke_status', 'chemical_compound_status', 'chemical_compound_describe', 'created_at', 'updated_at']; protected string $primaryKey = "inquiry_case_id"; diff --git a/app/Request/PatientCaseRequest.php b/app/Request/PatientCaseRequest.php index 454356a..7485bc5 100644 --- a/app/Request/PatientCaseRequest.php +++ b/app/Request/PatientCaseRequest.php @@ -11,7 +11,10 @@ use Hyperf\Validation\Rule; class PatientCaseRequest extends FormRequest { protected array $scenes = [ - 'getPatientFamilyInquiryCase' => [ // 获取患者问诊病例 + 'getPatientFamilyInquiryCaseSimple' => [ // 获取问诊订单病例详情-基础 + 'order_inquiry_id', + ], + 'getPatientFamilyInquiryCase' => [ // 获取问诊订单病例详情 'order_inquiry_id', ], ]; diff --git a/app/Services/PatientCaseService.php b/app/Services/PatientCaseService.php index fd0e6a3..1dbf3b3 100644 --- a/app/Services/PatientCaseService.php +++ b/app/Services/PatientCaseService.php @@ -2,10 +2,209 @@ namespace App\Services; +use App\Model\DetectionProject; +use App\Model\InquiryCaseProduct; +use App\Model\OrderDetection; +use App\Model\OrderInquiry; +use App\Model\OrderInquiryCase; +use App\Model\OrderPrescription; +use App\Model\OrderPrescriptionIcd; +use App\Model\OrderPrescriptionProduct; +use App\Model\PatientFamily; +use App\Model\PatientFamilyHealth; +use App\Model\PatientFamilyPersonal; +use App\Model\User; + /** * 患者家庭成员病例 */ class PatientCaseService extends BaseService { + /** + * 获取问诊订单病例详情-基础 + * @return array + */ + public function getPatientFamilyInquiryCaseSimple(): array + { + $order_inquiry_id = $this->request->input('order_inquiry_id'); + // 获取订单数据 + $params = array(); + $params['order_inquiry_id'] = $order_inquiry_id; + $order_inquiry = OrderInquiry::getOne($params); + if (empty($order_inquiry)) { + return fail(); + } + + // 获取病例信息 + $params = array(); + $params['order_inquiry_id'] = $order_inquiry_id; + $params['status'] = 1; + $order_inquiry_case = OrderInquiryCase::getOne($params); + if (empty($order_inquiry_case)) { + return fail(); + } + + $result = array(); + $result['patient_name'] = $order_inquiry['patient_name']; + $result['patient_sex'] = $order_inquiry['patient_sex']; + $result['patient_age'] = $order_inquiry['patient_age']; + $result['disease_desc'] = $order_inquiry_case['disease_desc']; + $result['reception_time'] = $order_inquiry['reception_time']; // 接诊时间 + + return success($result); + } + + /** + * 获取问诊订单病例详情 + * @return array + */ + public function getPatientFamilyInquiryCase(): array + { + $user_info = $this->request->getAttribute("userInfo") ?? []; + $order_inquiry_id = $this->request->input('order_inquiry_id'); + + // 获取订单数据 + $params = array(); + $params['order_inquiry_id'] = $order_inquiry_id; + $order_inquiry = OrderInquiry::getOne($params); + if (empty($order_inquiry)) { + return fail(); + } + + // 获取病例信息 + $params = array(); + $params['order_inquiry_id'] = $order_inquiry_id; + $params['status'] = 1; + $order_inquiry_case = OrderInquiryCase::getOne($params); + if (empty($order_inquiry_case)) { + return fail(); + } + + $order_inquiry_case = $order_inquiry_case->toArray(); + + // 获取患者家庭成员信息表-基本信息 + $params = array(); + $params['family_id'] = $order_inquiry_case['family_id']; + $patient_family = PatientFamily::getOne($params); + if (!empty($patient_family)){ + $order_inquiry_case['height'] = $order_inquiry_case['height'] ?: $patient_family['height'] ?: NULL; + $order_inquiry_case['weight'] = $order_inquiry_case['weight'] ?: $patient_family['weight'] ?: NULL; + $order_inquiry_case['job_id'] = $order_inquiry_case['job_id'] ?: $patient_family['job_id'] ?: NULL; + $order_inquiry_case['job_name'] = $order_inquiry_case['job_name'] ?: $patient_family['job_name'] ?: NULL; + $order_inquiry_case['nation_name'] = $order_inquiry_case['nation_name'] ?: $patient_family['nation_name'] ?: NULL; + $order_inquiry_case['marital_status'] = $patient_family['marital_status'] ?? 0; + $order_inquiry_case['id_number'] = $patient_family['id_number'] ?? ""; + } + + + + // 获取患者家庭成员信息表-健康情况 + $params = array(); + $params['family_id'] = $order_inquiry_case['family_id']; + $patient_family_health = PatientFamilyHealth::getOne($params); + if (!empty($patient_family_health)) { + $order_inquiry_case['diagnosis_hospital'] = $order_inquiry_case['diagnosis_hospital'] ?: $patient_family_health['diagnosis_hospital'] ?: ""; + $order_inquiry_case['is_take_medicine'] = $order_inquiry_case['is_take_medicine'] ?: $patient_family_health['is_take_medicine'] ?: null; + $order_inquiry_case['drugs_name'] = $order_inquiry_case['drugs_name'] ?: $patient_family_health['drugs_name'] ?: ""; + } + + // 获取患者家庭成员信息表-个人情况 + $params = array(); + $params['family_id'] = $order_inquiry_case['family_id']; + $patient_family_personal = PatientFamilyPersonal::getOne($params); + if (!empty($patient_family_personal)) { + $order_inquiry_case['drink_wine_status'] = $order_inquiry_case['drink_wine_status'] ?: $patient_family_personal['drink_wine_status'] ?: null; + $order_inquiry_case['smoke_status'] = $order_inquiry_case['smoke_status'] ?: $patient_family_personal['smoke_status'] ?: null; + $order_inquiry_case['chemical_compound_status'] = $order_inquiry_case['chemical_compound_status'] ?: $patient_family_personal['chemical_compound_status'] ?: null; + $order_inquiry_case['chemical_compound_describe'] = $order_inquiry_case['chemical_compound_describe'] ?: $patient_family_personal['chemical_compound_describe'] ?: ""; + $order_inquiry_case['is_operation'] = $order_inquiry_case['is_operation'] ?: $patient_family_personal['is_operation'] ?: null; + $order_inquiry_case['operation'] = $order_inquiry_case['operation'] ?: $patient_family_personal['operation'] ?: ""; + } + + // 获取用药意向 + $product = []; + $fields = [ + 'inquiry_case_id', + 'product_id', + 'case_product_num', + ]; + $params = array(); + $params['inquiry_case_id'] = $order_inquiry_case['inquiry_case_id']; + $inquiry_case_product = InquiryCaseProduct::getWithProductList($params, $fields); + if (!empty($inquiry_case_product)) { + foreach ($inquiry_case_product as &$item) { + if (!empty($item['Product'])) { + $product[] = $item['Product']['product_name'] . ' ' . $item['Product']['product_spec'] . '(' . $item['case_product_num'] . $item['Product']['packaging_unit'] . ')'; + } + } + } + + $order_inquiry_case['product'] = $product; + unset($inquiry_case_product); + + // 复诊凭证 + if (!empty($order_inquiry_case['diagnose_images'])) { + $diagnose_images = explode(',', $order_inquiry_case['diagnose_images']); + foreach ($diagnose_images as &$item) { + $item = addAliyunOssWebsite($item); + } + + $order_inquiry_case['diagnose_images'] = $diagnose_images; + } + + // 检测项目 + $order_inquiry_case['detection_project'] = null; + if ($order_inquiry['inquiry_type'] == 5) { + // 获取检测订单 + $params = array(); + $params['order_inquiry_id'] = $order_inquiry['order_inquiry_id']; + $order_detection = OrderDetection::getOne($params); + if (!empty($order_detection)) { + // 获取检测项目 + $params = array(); + $params['detection_project_id'] = $order_detection['detection_project_id']; + $detection_project = DetectionProject::getOne($params); + if (!empty($detection_project)) { + $order_inquiry_case['detection_project']['detection_project_name'] = $detection_project['detection_project_name']; // 检测项目名称 + $order_inquiry_case['detection_project']['detection_time'] = $order_detection['detection_time']; // 检测时间 + $order_inquiry_case['detection_project']['detection_link'] = addAliyunOssWebsite($order_detection['detection_result_pdf']); // 检测结果链接 + } + } + } + + // 获取处方数据 + $order_inquiry_case['order_prescription'] = null; + + $params = array(); + $params['order_inquiry_id'] = $order_inquiry['order_inquiry_id']; + $order_prescription = OrderPrescription::getOne($params); + if (!empty($order_prescription)){ + $order_inquiry_case['order_prescription']['doctor_created_time'] = $order_prescription['doctor_created_time']; // 医生开具处方时间 + $order_inquiry_case['order_prescription']['doctor_advice'] = $order_prescription['doctor_advice'];// 医嘱 + + // 获取处方疾病数据 + $params = array(); + $params['order_prescription_id'] = $order_prescription['order_prescription_id']; + $order_prescription_icds = OrderPrescriptionIcd::getList($params); + if (empty($order_prescription_icds)){ + return fail(); + } + + $icd_name = array_column($order_prescription_icds->toArray(),"icd_name"); + $order_inquiry_case['order_prescription']['icd_name'] = implode(";",$icd_name); + + // 获取处方药品名称 + $params = array(); + $params['order_prescription_id'] = $order_prescription['order_prescription_id']; + $order_prescription_products = OrderPrescriptionProduct::getList($params); + if (empty($order_prescription_products)){ + return fail(); + } + + $order_inquiry_case['order_prescription']["product"] = $order_prescription_products->toArray(); + } + + return success($order_inquiry_case); + } } \ No newline at end of file diff --git a/app/Services/PatientPathographyService.php b/app/Services/PatientPathographyService.php index 86cfc20..80c6358 100644 --- a/app/Services/PatientPathographyService.php +++ b/app/Services/PatientPathographyService.php @@ -118,6 +118,9 @@ class PatientPathographyService extends BaseService $params['family_id'] = $patient_pathography['family_id']; $order_prescription = OrderPrescription::getOne($params); if (!empty($order_prescription)){ + $result['order_prescription']['doctor_created_time'] = $order_prescription['doctor_created_time']; // 医生开具处方时间 + $result['order_prescription']['doctor_advice'] = $order_prescription['doctor_advice'];// 医嘱 + // 获取处方疾病数据 $params = array(); $params['order_prescription_id'] = $order_prescription['order_prescription_id']; @@ -168,8 +171,12 @@ class PatientPathographyService extends BaseService // 复诊凭证 if (!empty($patient_pathography['diagnose_images'])){ - $diagnose_images = implode(',', $patient_pathography['diagnose_images']); - $result['diagnose_images'] = PcreMatch::pregRemoveOssWebsite($diagnose_images); + $diagnose_images = explode(',', $patient_pathography['diagnose_images']); + foreach ($diagnose_images as &$item) { + $item = addAliyunOssWebsite($item); + } + + $result['diagnose_images'] = $diagnose_images; } return success($result); diff --git a/config/routes.php b/config/routes.php index 5147eaf..6ba8a8b 100644 --- a/config/routes.php +++ b/config/routes.php @@ -726,9 +726,12 @@ Router::addGroup('/user', function () { Router::put('/system', [UserController::class, 'putUserSystem']); }); -// 获取患者家庭成员问诊订单病例 +// 病例 Router::addGroup('/case', function () { - // 获取患者家庭成员问诊病例详情 + // 获取问诊订单病例详情-基础 + Router::get('/inquiry/simple', [PatientCaseController::class, 'getPatientFamilyInquiryCaseSimple']); + + // 获取问诊订单病例详情 Router::get('/inquiry', [PatientCaseController::class, 'getPatientFamilyInquiryCase']); }); From f7ccb78efa5647d6e623ab9ce5033ac3c5ebf754 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Wed, 29 Nov 2023 16:33:11 +0800 Subject: [PATCH 28/87] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E9=97=AE=E8=AF=8A=E8=AE=A2=E5=8D=95=E7=97=85=E4=BE=8B=E7=BC=BA?= =?UTF-8?q?=E5=B0=91=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Controller/PatientCaseController.php | 16 +++ app/Model/OrderInquiryCase.php | 3 +- app/Model/PatientPathography.php | 4 +- app/Request/PatientCaseRequest.php | 3 + app/Services/PatientCaseService.php | 122 ++++++++++++++++++++++- config/routes.php | 4 +- 6 files changed, 145 insertions(+), 7 deletions(-) diff --git a/app/Controller/PatientCaseController.php b/app/Controller/PatientCaseController.php index 3c0e33e..6354c36 100644 --- a/app/Controller/PatientCaseController.php +++ b/app/Controller/PatientCaseController.php @@ -45,4 +45,20 @@ class PatientCaseController extends AbstractController $data = $PatientCaseService->getPatientFamilyInquiryCase(); return $this->response->json($data); } + + /** + * 获取问诊订单病例缺少字段 + * @return ResponseInterface + * @throws ContainerExceptionInterface + * @throws NotFoundExceptionInterface + */ + public function getPatientFamilyInquiryCaseUnfilledFields(): ResponseInterface + { + $request = $this->container->get(PatientCaseRequest::class); + $request->scene('getPatientFamilyInquiryCaseUnfilledFields')->validateResolved(); + + $PatientCaseService = new PatientCaseService(); + $data = $PatientCaseService->getPatientFamilyInquiryCaseUnfilledFields(); + return $this->response->json($data); + } } \ No newline at end of file diff --git a/app/Model/OrderInquiryCase.php b/app/Model/OrderInquiryCase.php index 4751dc5..536fa3e 100644 --- a/app/Model/OrderInquiryCase.php +++ b/app/Model/OrderInquiryCase.php @@ -24,6 +24,7 @@ use Hyperf\Snowflake\Concern\Snowflake; * @property int $age 患者年龄 * @property string $height 身高(cm) * @property string $weight 体重(kg) + * @property int $marital_status 婚姻状况(0:未婚 1:已婚 2:离异) * @property string $disease_class_name 疾病名称-系统 * @property string $diagnosis_date 确诊日期 * @property string $disease_desc 病情描述(主诉) @@ -64,7 +65,7 @@ class OrderInquiryCase extends Model /** * The attributes that are mass assignable. */ - protected array $fillable = ['inquiry_case_id', 'user_id', 'patient_id', 'order_inquiry_id', 'family_id', 'disease_class_id', 'nation_id', 'job_id', 'relation', 'status', 'name', 'sex', 'age', 'height', 'weight', 'disease_class_name', 'diagnosis_date', 'disease_desc', 'diagnose_images', 'is_allergy_history', 'allergy_history', 'is_family_history', 'family_history', 'is_pregnant', 'pregnant', 'is_taboo', 'is_take_medicine', 'drugs_name', 'nation_name', 'job_name', 'diagnosis_hospital', 'is_operation', 'operation', 'drink_wine_status', 'smoke_status', 'chemical_compound_status', 'chemical_compound_describe', 'created_at', 'updated_at']; + protected array $fillable = ['inquiry_case_id', 'user_id', 'patient_id', 'order_inquiry_id', 'family_id', 'disease_class_id', 'nation_id', 'job_id', 'relation', 'status', 'name', 'sex', 'age', 'height', 'weight', 'marital_status', 'disease_class_name', 'diagnosis_date', 'disease_desc', 'diagnose_images', 'is_allergy_history', 'allergy_history', 'is_family_history', 'family_history', 'is_pregnant', 'pregnant', 'is_taboo', 'is_take_medicine', 'drugs_name', 'nation_name', 'job_name', 'diagnosis_hospital', 'is_operation', 'operation', 'drink_wine_status', 'smoke_status', 'chemical_compound_status', 'chemical_compound_describe', 'created_at', 'updated_at']; protected string $primaryKey = "inquiry_case_id"; diff --git a/app/Model/PatientPathography.php b/app/Model/PatientPathography.php index 87ad053..7165f40 100644 --- a/app/Model/PatientPathography.php +++ b/app/Model/PatientPathography.php @@ -28,6 +28,7 @@ use Hyperf\Snowflake\Concern\Snowflake; * @property int $age 患者年龄 * @property string $height 身高(cm) * @property string $weight 体重(kg) + * @property int $marital_status 婚姻状况(0:未婚 1:已婚 2:离异) * @property string $disease_class_name 疾病名称-系统 * @property string $diagnosis_date 确诊日期 * @property string $disease_desc 病情描述(主诉) @@ -52,6 +53,7 @@ use Hyperf\Snowflake\Concern\Snowflake; * @property string $chemical_compound_describe 化合物描述 * @property \Carbon\Carbon $created_at 创建时间 * @property \Carbon\Carbon $updated_at 修改时间 + * @property-read OrderInquiry|null $OrderInquiry */ class PatientPathography extends Model { @@ -65,7 +67,7 @@ class PatientPathography extends Model /** * The attributes that are mass assignable. */ - protected array $fillable = ['pathography_id', 'user_id', 'patient_id', 'family_id', 'order_inquiry_id', 'order_prescription_id', 'disease_class_id', 'nation_id', 'job_id', 'relation', 'status', 'name', 'sex', 'age', 'height', 'weight', 'disease_class_name', 'diagnosis_date', 'disease_desc', 'diagnose_images', 'is_allergy_history', 'allergy_history', 'is_family_history', 'family_history', 'is_pregnant', 'pregnant', 'is_taboo', 'is_take_medicine', 'drugs_name', 'nation_name', 'job_name', 'diagnosis_hospital', 'is_operation', 'operation', 'drink_wine_status', 'smoke_status', 'chemical_compound_status', 'chemical_compound_describe', 'created_at', 'updated_at']; + protected array $fillable = ['pathography_id', 'user_id', 'patient_id', 'family_id', 'order_inquiry_id', 'order_prescription_id', 'disease_class_id', 'nation_id', 'job_id', 'relation', 'status', 'name', 'sex', 'age', 'height', 'weight', 'marital_status', 'disease_class_name', 'diagnosis_date', 'disease_desc', 'diagnose_images', 'is_allergy_history', 'allergy_history', 'is_family_history', 'family_history', 'is_pregnant', 'pregnant', 'is_taboo', 'is_take_medicine', 'drugs_name', 'nation_name', 'job_name', 'diagnosis_hospital', 'is_operation', 'operation', 'drink_wine_status', 'smoke_status', 'chemical_compound_status', 'chemical_compound_describe', 'created_at', 'updated_at']; protected string $primaryKey = "pathography_id"; diff --git a/app/Request/PatientCaseRequest.php b/app/Request/PatientCaseRequest.php index 7485bc5..6790606 100644 --- a/app/Request/PatientCaseRequest.php +++ b/app/Request/PatientCaseRequest.php @@ -17,6 +17,9 @@ class PatientCaseRequest extends FormRequest 'getPatientFamilyInquiryCase' => [ // 获取问诊订单病例详情 'order_inquiry_id', ], + 'getPatientFamilyInquiryCaseUnfilledFields' => [ // 获取问诊订单病例缺少字段 + 'order_inquiry_id', + ], ]; /** diff --git a/app/Services/PatientCaseService.php b/app/Services/PatientCaseService.php index 1dbf3b3..db1cf5a 100644 --- a/app/Services/PatientCaseService.php +++ b/app/Services/PatientCaseService.php @@ -14,6 +14,7 @@ use App\Model\PatientFamily; use App\Model\PatientFamilyHealth; use App\Model\PatientFamilyPersonal; use App\Model\User; +use Hyperf\Redis\Redis; /** * 患者家庭成员病例 @@ -93,12 +94,9 @@ class PatientCaseService extends BaseService $order_inquiry_case['job_id'] = $order_inquiry_case['job_id'] ?: $patient_family['job_id'] ?: NULL; $order_inquiry_case['job_name'] = $order_inquiry_case['job_name'] ?: $patient_family['job_name'] ?: NULL; $order_inquiry_case['nation_name'] = $order_inquiry_case['nation_name'] ?: $patient_family['nation_name'] ?: NULL; - $order_inquiry_case['marital_status'] = $patient_family['marital_status'] ?? 0; - $order_inquiry_case['id_number'] = $patient_family['id_number'] ?? ""; + $order_inquiry_case['marital_status'] = $order_inquiry_case['marital_status'] ?: $patient_family['marital_status'] ?: NULL; } - - // 获取患者家庭成员信息表-健康情况 $params = array(); $params['family_id'] = $order_inquiry_case['family_id']; @@ -207,4 +205,120 @@ class PatientCaseService extends BaseService return success($order_inquiry_case); } + + /** + * 获取问诊订单病例缺少字段 + * @return array + */ + public function getPatientFamilyInquiryCaseUnfilledFields(): array + { + $user_info = $this->request->getAttribute("userInfo") ?? []; + $order_inquiry_id = $this->request->input('order_inquiry_id'); + + // 获取订单数据 + $params = array(); + $params['order_inquiry_id'] = $order_inquiry_id; + $order_inquiry = OrderInquiry::getOne($params); + if (empty($order_inquiry)) { + return fail(); + } + + // 获取病例信息 + $params = array(); + $params['order_inquiry_id'] = $order_inquiry_id; + $params['status'] = 1; + $order_inquiry_case = OrderInquiryCase::getOne($params); + if (empty($order_inquiry_case)) { + return fail(); + } + + // 获取患者家庭成员信息表-基本信息 + $params = array(); + $params['family_id'] = $order_inquiry_case['family_id']; + $patient_family = PatientFamily::getOne($params); + + // 获取患者家庭成员信息表-健康情况 + $params = array(); + $params['family_id'] = $order_inquiry_case['family_id']; + $patient_family_health = PatientFamilyHealth::getOne($params); + + // 获取患者家庭成员信息表-个人情况 + $params = array(); + $params['family_id'] = $order_inquiry_case['family_id']; + $patient_family_personal = PatientFamilyPersonal::getOne($params); + + // 初始字段定义 + $fields = [ + "relation", // 与患者关系(1:本人 2:父母 3:爱人 4:子女 5:亲戚 6:其他 ) + "name", // 患者名称 + "sex", // 患者性别(0:未知 1:男 2:女) + "age", // 患者年龄 + "height", // 身高(cm) + "weight", // 体重(kg) + "marital_status", // 婚姻状况(0:未婚 1:已婚 2:离异) + "disease_class_name", // 疾病名称-系统 + "diagnosis_date", // 确诊日期 + "disease_desc", // 病情描述(主诉) + "is_allergy_history", // 是否存在过敏史(0:否 1:是) + "allergy_history", // 过敏史描述 + "is_family_history", // 是否存在家族病史(0:否 1:是) + "family_history", // 家族病史描述 + "is_pregnant", // 是否备孕、妊娠、哺乳期(0:否 1:是) + "pregnant", // 备孕、妊娠、哺乳期描述 + "is_taboo", // 是否服用过禁忌药物,且无相关禁忌(0:否 1:是)问诊购药时存在 + "is_take_medicine", // 正在服药(0:否 1:是) + "drugs_name", // 正在服药名称 + "nation_name", // 民族名称 + "job_name", // 职业名称 + "diagnosis_hospital", // 确诊医院 + "is_operation", // 是否存在手术(0:否 1:是) + "operation", // 手术描述 + "drink_wine_status", // 饮酒状态(1:从不 2:偶尔 3:经常 4:每天 5:已戒酒) + "smoke_status", // 吸烟状态(1:从不 2:偶尔 3:经常 4:每天 5:已戒烟) + "chemical_compound_status", // 化合物状态(1:从不 2:偶尔 3:经常 4:每天) + "chemical_compound_describe", // 化合物描述 + ]; + + // 获取缓存 + $redis = $this->container->get(Redis::class); + $redis_key = "patient_family_inquiry_case_unfilled_fields_" . $order_inquiry_id; + $redis_value = $redis->get($redis_key); + + // 处理字段 + $result = null; + foreach ($fields as $field){ + if ($order_inquiry_case[$field] !== null){ + continue; + } + + if (!empty($patient_family)){ + if ($patient_family[$field] !== null){ + continue; + } + } + + if (!empty($patient_family_health)){ + if ($patient_family_health[$field] !== null){ + continue; + } + } + + if (!empty($patient_family_personal)){ + if ($patient_family_personal[$field] !== null){ + continue; + } + } + + // 缓存 + if (!empty($redis_value)){ + if (strstr($redis_value,$field)){ + continue; + } + } + + $result[] = $field; + } + + return success($result); + } } \ No newline at end of file diff --git a/config/routes.php b/config/routes.php index 6ba8a8b..4f700c4 100644 --- a/config/routes.php +++ b/config/routes.php @@ -733,8 +733,10 @@ Router::addGroup('/case', function () { // 获取问诊订单病例详情 Router::get('/inquiry', [PatientCaseController::class, 'getPatientFamilyInquiryCase']); -}); + // 获取问诊订单病例缺少字段 + Router::get('/fields', [PatientCaseController::class, 'getPatientFamilyInquiryCaseUnfilledFields']); +}); // 测试使用 Router::addGroup('/test', function () { From a69ba2ca2cf87a19f7273314dc2259e8ae6bf60c Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Thu, 30 Nov 2023 11:21:17 +0800 Subject: [PATCH 29/87] 1 --- app/Services/InquiryService.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/Services/InquiryService.php b/app/Services/InquiryService.php index 0e7f9de..a9baa3b 100644 --- a/app/Services/InquiryService.php +++ b/app/Services/InquiryService.php @@ -827,6 +827,7 @@ class InquiryService extends BaseService $result['patient_user_id'] = $order_inquiry['user_id']; $result['doctor_id'] = $order_inquiry['doctor_id']; $result['patient_id'] = $order_inquiry['patient_id']; + $result['family_id'] = $order_inquiry['family_id']; $result['order_inquiry_id'] = $order_inquiry['order_inquiry_id']; $result['patient_family_name'] = $order_inquiry['patient_name']; $result['patient_family_sex'] = $order_inquiry['patient_sex']; From 6cbbcd586eb980792d20409cdb93c75648a68a51 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Thu, 30 Nov 2023 17:56:25 +0800 Subject: [PATCH 30/87] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E9=97=AE=E8=AF=8A=E8=AE=A2=E5=8D=95=E7=97=85=E4=BE=8B?= =?UTF-8?q?=E7=BC=BA=E5=B0=91=E5=AD=97=E6=AE=B5=E3=80=81=E5=8C=BB=E7=94=9F?= =?UTF-8?q?=E5=8F=91=E9=80=81=E7=BC=BA=E5=B0=91=E5=AD=97=E6=AE=B5=E8=87=B3?= =?UTF-8?q?=E6=82=A3=E8=80=85=E3=80=81=E6=82=A3=E8=80=85=E5=A1=AB=E5=86=99?= =?UTF-8?q?=E7=BC=BA=E5=B0=91=E5=AD=97=E6=AE=B5=E8=87=B3=E5=8C=BB=E7=94=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Controller/PatientCaseController.php | 32 +++ app/Request/PatientCaseRequest.php | 6 + app/Services/ImService.php | 83 ++++++++ app/Services/PatientCaseService.php | 246 ++++++++++++++++++++++- config/routes.php | 13 +- 5 files changed, 374 insertions(+), 6 deletions(-) diff --git a/app/Controller/PatientCaseController.php b/app/Controller/PatientCaseController.php index 6354c36..9d55f5c 100644 --- a/app/Controller/PatientCaseController.php +++ b/app/Controller/PatientCaseController.php @@ -61,4 +61,36 @@ class PatientCaseController extends AbstractController $data = $PatientCaseService->getPatientFamilyInquiryCaseUnfilledFields(); return $this->response->json($data); } + + /** + * 医生发送缺少字段至患者 + * @return ResponseInterface + * @throws ContainerExceptionInterface + * @throws NotFoundExceptionInterface + */ + public function sendCaseUnfilledFieldsToPatient(): ResponseInterface + { + $request = $this->container->get(PatientCaseRequest::class); + $request->scene('sendCaseUnfilledFieldsToPatient')->validateResolved(); + + $PatientCaseService = new PatientCaseService(); + $data = $PatientCaseService->sendCaseUnfilledFieldsToPatient(); + return $this->response->json($data); + } + + /** + * 患者填写缺少字段至医生 + * @return ResponseInterface + * @throws ContainerExceptionInterface + * @throws NotFoundExceptionInterface + */ + public function sendCaseUnfilledFieldsToDoctor(): ResponseInterface + { + $request = $this->container->get(PatientCaseRequest::class); + $request->scene('sendCaseUnfilledFieldsToDoctor')->validateResolved(); + + $PatientCaseService = new PatientCaseService(); + $data = $PatientCaseService->sendCaseUnfilledFieldsToDoctor(); + return $this->response->json($data); + } } \ No newline at end of file diff --git a/app/Request/PatientCaseRequest.php b/app/Request/PatientCaseRequest.php index 6790606..ad7fe03 100644 --- a/app/Request/PatientCaseRequest.php +++ b/app/Request/PatientCaseRequest.php @@ -20,6 +20,12 @@ class PatientCaseRequest extends FormRequest 'getPatientFamilyInquiryCaseUnfilledFields' => [ // 获取问诊订单病例缺少字段 'order_inquiry_id', ], + 'sendCaseUnfilledFieldsToPatient' => [ // 医生发送缺少字段至患者 + 'order_inquiry_id', + ], + 'sendCaseUnfilledFieldsToDoctor' => [ // 患者填写缺少字段至医生 + 'order_inquiry_id', + ], ]; /** diff --git a/app/Services/ImService.php b/app/Services/ImService.php index f7c4dc8..2b9680c 100644 --- a/app/Services/ImService.php +++ b/app/Services/ImService.php @@ -775,4 +775,87 @@ class ImService extends BaseService throw new BusinessException($e->getMessage()); } } + + /** + * 问诊表-发送患者 + * @param array|object $order_inquiry 问诊表数据 + * @param string|int $doctor_user_id 医生用户id + * @param string|int $patient_user_id 患者用户id + * @param string $case_fields 医生选择需填写的病例字段 + * @return void + */ + public function CaseUnfilledFieldsToPatient(array|object $order_inquiry,string|int $doctor_user_id,string|int $patient_user_id,string $case_fields): void + { + try { + // 发送消息 + $cloud_custom_data = array(); + $cloud_custom_data['order_inquiry_id'] = $order_inquiry['order_inquiry_id']; + $cloud_custom_data['is_system'] = 1; + $cloud_custom_data['inquiry_type'] = $order_inquiry['inquiry_type']; + $cloud_custom_data['message_rounds'] = 0; + $cloud_custom_data['patient_family_data']['patient_name'] = $order_inquiry['patient_name']; + $cloud_custom_data['patient_family_data']['patient_sex'] = $order_inquiry['patient_sex']; + $cloud_custom_data['patient_family_data']['patient_age'] = $order_inquiry['patient_age']; + + // 消息内容 + $message_content_data = array(); + $message_content_data['message_type'] = 12; + $message_content_data['title'] = "问诊表"; + $message_content_data['desc'] = ""; + $message_content_data['data']['order_inquiry_id'] = $order_inquiry['order_inquiry_id']; + $message_content_data['data']['order_no'] = $order_inquiry['inquiry_no']; + $message_content_data['data']['message_path'] = "/pages/sickForm/sickForm"; // 跳转地址(小程序内页) + $message_content_data['data']['case_not_fill_fields'] = $case_fields; // 病例字段,json格式,医生端发送患者端使用(此字段仅针对message_type为12的情况) + $message_content = [ + 'Data' => json_encode($message_content_data, JSON_UNESCAPED_UNICODE), + ]; + + $this->sendMessage($doctor_user_id, $patient_user_id, $message_content, "TIMCustomElem", $cloud_custom_data); + + } catch (\Throwable $e) { + throw new BusinessException($e->getMessage()); + } + } + + /** + * 问诊表-发送医生 + * @param array|object $order_inquiry 问诊表数据 + * @param string|int $doctor_user_id 医生用户id + * @param string|int $patient_user_id 患者用户id + * @param string $case_fields 患者填写的病例字段 + * @return void + */ + public function CaseUnfilledFieldsToDoctor(array|object $order_inquiry,string|int $doctor_user_id,string|int $patient_user_id,string $case_fields): void + { + try { + // 发送消息 + $cloud_custom_data = array(); + $cloud_custom_data['order_inquiry_id'] = $order_inquiry['order_inquiry_id']; + $cloud_custom_data['is_system'] = 1; + $cloud_custom_data['inquiry_type'] = $order_inquiry['inquiry_type']; + $cloud_custom_data['message_rounds'] = 0; + $cloud_custom_data['patient_family_data']['patient_name'] = $order_inquiry['patient_name']; + $cloud_custom_data['patient_family_data']['patient_sex'] = $order_inquiry['patient_sex']; + $cloud_custom_data['patient_family_data']['patient_age'] = $order_inquiry['patient_age']; + + // 消息内容 + $message_content_data = array(); + $message_content_data['message_type'] = 12; + $message_content_data['title'] = "问诊表-已填写"; + $message_content_data['desc'] = ""; + $message_content_data['data']['order_inquiry_id'] = $order_inquiry['order_inquiry_id']; + $message_content_data['data']['order_no'] = $order_inquiry['inquiry_no']; + $message_content_data['data']['message_path'] = "/Pages/yishi/sick_detail/index"; // 跳转地址(小程序内页) + $message_content_data['data']['case_patient_message_path'] = "/pages/sickDetail/sickDetail"; // 跳转地址(小程序内页) + $message_content_data['data']['case_filled_fields'] = $case_fields; // 病例字段,json格式,患者端发送医生端使用(此字段仅针对message_type为12的情况) + $message_content = [ + 'Data' => json_encode($message_content_data, JSON_UNESCAPED_UNICODE), + ]; + + $this->sendMessage($patient_user_id, $doctor_user_id, $message_content, "TIMCustomElem", $cloud_custom_data); + + } catch (\Throwable $e) { + throw new BusinessException($e->getMessage()); + } + } } \ No newline at end of file diff --git a/app/Services/PatientCaseService.php b/app/Services/PatientCaseService.php index db1cf5a..547b4e5 100644 --- a/app/Services/PatientCaseService.php +++ b/app/Services/PatientCaseService.php @@ -2,6 +2,7 @@ namespace App\Services; +use App\Constants\HttpEnumCode; use App\Model\DetectionProject; use App\Model\InquiryCaseProduct; use App\Model\OrderDetection; @@ -14,6 +15,7 @@ use App\Model\PatientFamily; use App\Model\PatientFamilyHealth; use App\Model\PatientFamilyPersonal; use App\Model\User; +use App\Model\UserDoctor; use Hyperf\Redis\Redis; /** @@ -279,10 +281,14 @@ class PatientCaseService extends BaseService "chemical_compound_describe", // 化合物描述 ]; - // 获取缓存 - $redis = $this->container->get(Redis::class); - $redis_key = "patient_family_inquiry_case_unfilled_fields_" . $order_inquiry_id; - $redis_value = $redis->get($redis_key); + try { + // 获取缓存 + $redis = $this->container->get(Redis::class); + $redis_key = "patient_family_inquiry_case_unfilled_fields_" . $order_inquiry_id; + $redis_value = $redis->get($redis_key); + }catch (\Throwable $e){ + return fail(); + } // 处理字段 $result = null; @@ -321,4 +327,236 @@ class PatientCaseService extends BaseService return success($result); } + + /** + * 医生发送缺少字段至患者 + * @return array + */ + public function sendCaseUnfilledFieldsToPatient(): array + { + $user_info = $this->request->getAttribute("userInfo") ?? []; + if ($user_info['user_type'] != 2){ + return fail(HttpEnumCode::HTTP_ERROR,"非法请求"); + } + + $request_params = $this->request->all(); + + $order_inquiry_id = $request_params['order_inquiry_id']; + + if (empty($request_params['fields'])){ + return fail(HttpEnumCode::CLIENT_HTTP_ERROR,"请选择需要发送的信息"); + } + + // 获取订单数据 + $params = array(); + $params['order_inquiry_id'] = $order_inquiry_id; + $order_inquiry = OrderInquiry::getOne($params); + if (empty($order_inquiry)) { + return fail(HttpEnumCode::HTTP_ERROR,"订单数据错误"); + } + + // 获取医生数据 + $params = array(); + $params['doctor_id'] = $order_inquiry['doctor_id']; + $doctor = UserDoctor::getOne($params); + if (empty($doctor)){ + return fail(); + } + + // 初始字段定义 + $fields = [ + "relation", // 与患者关系(1:本人 2:父母 3:爱人 4:子女 5:亲戚 6:其他 ) + "name", // 患者名称 + "sex", // 患者性别(0:未知 1:男 2:女) + "age", // 患者年龄 + "height", // 身高(cm) + "weight", // 体重(kg) + "marital_status", // 婚姻状况(0:未婚 1:已婚 2:离异) + "disease_class_name", // 疾病名称-系统 + "diagnosis_date", // 确诊日期 + "disease_desc", // 病情描述(主诉) + "is_allergy_history", // 是否存在过敏史(0:否 1:是) + "allergy_history", // 过敏史描述 + "is_family_history", // 是否存在家族病史(0:否 1:是) + "family_history", // 家族病史描述 + "is_pregnant", // 是否备孕、妊娠、哺乳期(0:否 1:是) + "pregnant", // 备孕、妊娠、哺乳期描述 + "is_taboo", // 是否服用过禁忌药物,且无相关禁忌(0:否 1:是)问诊购药时存在 + "is_take_medicine", // 正在服药(0:否 1:是) + "drugs_name", // 正在服药名称 + "nation_name", // 民族名称 + "job_name", // 职业名称 + "diagnosis_hospital", // 确诊医院 + "is_operation", // 是否存在手术(0:否 1:是) + "operation", // 手术描述 + "drink_wine_status", // 饮酒状态(1:从不 2:偶尔 3:经常 4:每天 5:已戒酒) + "smoke_status", // 吸烟状态(1:从不 2:偶尔 3:经常 4:每天 5:已戒烟) + "chemical_compound_status", // 化合物状态(1:从不 2:偶尔 3:经常 4:每天) + "chemical_compound_describe", // 化合物描述 + ]; + + try { + $redis = $this->container->get(Redis::class); + $redis_key = "patient_family_inquiry_case_unfilled_fields_" . $order_inquiry_id; + + // 获取缓存 + $redis_value = $redis->get($redis_key); + if (!empty($redis_value)){ + $redis_value = explode(',',$redis_value); + } + + // 患者病例字段 + $case_fields = []; + foreach ($request_params['fields'] as $value){ + if (!in_array($value,$fields)){ + return fail(HttpEnumCode::HTTP_ERROR,"数据选择错误"); + } + + $case_fields[] = $value; + + // 处理缓存 + if (!empty($redis_value)){ + if (in_array($value,$redis_value)){ + continue; + } + } + $redis_value[] = $value; + } + + if (empty($case_fields)){ + return fail(); + } + + $case_fields = json_encode($case_fields,JSON_UNESCAPED_UNICODE); + + // 发送im消息 + $imService = new ImService(); + $imService->CaseUnfilledFieldsToPatient($order_inquiry,$doctor['user_id'],$order_inquiry['user_id'],$case_fields); + + // 添加缓存-逗号分割字符串 + if (!empty($redis_value)){ + $redis_value = implode(',',$redis_value); + $res = $redis->set($redis_key,$redis_value,3 * 24 * 60 * 60); + if (!$res){ + return fail(); + } + } + }catch (\Throwable $e){ + return fail(); + } + + return success(); + } + + /** + * 患者填写缺少字段至医生 + * @return array + */ + public function sendCaseUnfilledFieldsToDoctor(): array + { + $user_info = $this->request->getAttribute("userInfo") ?? []; + if ($user_info['user_type'] != 1){ + return fail(HttpEnumCode::HTTP_ERROR,"非法请求"); + } + + $request_params = $this->request->all(); + + $order_inquiry_id = $request_params['order_inquiry_id']; + + if (empty($request_params['fields'])){ + return fail(HttpEnumCode::CLIENT_HTTP_ERROR,"请填写后发送"); + } + + // 获取订单数据 + $params = array(); + $params['order_inquiry_id'] = $order_inquiry_id; + $order_inquiry = OrderInquiry::getOne($params); + if (empty($order_inquiry)) { + return fail(HttpEnumCode::HTTP_ERROR,"订单数据错误"); + } + + // 获取医生数据 + $params = array(); + $params['doctor_id'] = $order_inquiry['doctor_id']; + $doctor = UserDoctor::getOne($params); + if (empty($doctor)){ + return fail(); + } + + // 初始字段定义 + $fields = [ + "relation", // 与患者关系(1:本人 2:父母 3:爱人 4:子女 5:亲戚 6:其他 ) + "name", // 患者名称 + "sex", // 患者性别(0:未知 1:男 2:女) + "age", // 患者年龄 + "height", // 身高(cm) + "weight", // 体重(kg) + "marital_status", // 婚姻状况(0:未婚 1:已婚 2:离异) + "disease_class_name", // 疾病名称-系统 + "diagnosis_date", // 确诊日期 + "disease_desc", // 病情描述(主诉) + "is_allergy_history", // 是否存在过敏史(0:否 1:是) + "allergy_history", // 过敏史描述 + "is_family_history", // 是否存在家族病史(0:否 1:是) + "family_history", // 家族病史描述 + "is_pregnant", // 是否备孕、妊娠、哺乳期(0:否 1:是) + "pregnant", // 备孕、妊娠、哺乳期描述 + "is_taboo", // 是否服用过禁忌药物,且无相关禁忌(0:否 1:是)问诊购药时存在 + "is_take_medicine", // 正在服药(0:否 1:是) + "drugs_name", // 正在服药名称 + "nation_name", // 民族名称 + "job_name", // 职业名称 + "diagnosis_hospital", // 确诊医院 + "is_operation", // 是否存在手术(0:否 1:是) + "operation", // 手术描述 + "drink_wine_status", // 饮酒状态(1:从不 2:偶尔 3:经常 4:每天 5:已戒酒) + "smoke_status", // 吸烟状态(1:从不 2:偶尔 3:经常 4:每天 5:已戒烟) + "chemical_compound_status", // 化合物状态(1:从不 2:偶尔 3:经常 4:每天) + "chemical_compound_describe", // 化合物描述 + ]; + + try { + $redis = $this->container->get(Redis::class); + $redis_key = "patient_family_inquiry_case_unfilled_fields_" . $order_inquiry_id; + $redis_value = $redis->get($redis_key); + if (!empty($redis_value)){ + $redis_value = explode(',',$redis_value); + } + + // 患者病例字段 + $case_fields = []; + foreach ($request_params['fields'] as $key => $value){ + if (!in_array($key,$fields)){ + return fail(HttpEnumCode::HTTP_ERROR,"存在非法数据"); + } + + $case_fields[$key] = $value; + } + + $case_fields = json_encode($case_fields,JSON_UNESCAPED_UNICODE); + + // 发送im消息 + $imService = new ImService(); + $imService->CaseUnfilledFieldsToDoctor($order_inquiry,$doctor['user_id'],$user_info['user_id'],$case_fields); + + // 处理缓存 + if (!empty($redis_value)){ + $diff_values = array_diff($redis_value, array_keys($request_params['fields'])); + if (!empty($diff_values)){ + // 添加缓存-逗号分割字符串 + $redis_value = implode(',',$diff_values); + $res = $redis->set($redis_key,$redis_value,3 * 24 * 60 * 60); + if (!$res){ + return fail(); + } + } + }else{ + $redis->del($redis_key); + } + }catch (\Throwable $e){ + return fail(); + } + + return success(); + } } \ No newline at end of file diff --git a/config/routes.php b/config/routes.php index 4f700c4..a52bf62 100644 --- a/config/routes.php +++ b/config/routes.php @@ -734,8 +734,17 @@ Router::addGroup('/case', function () { // 获取问诊订单病例详情 Router::get('/inquiry', [PatientCaseController::class, 'getPatientFamilyInquiryCase']); - // 获取问诊订单病例缺少字段 - Router::get('/fields', [PatientCaseController::class, 'getPatientFamilyInquiryCaseUnfilledFields']); + // 病例未填字段 + Router::addGroup('/fields', function () { + // 获取问诊订单病例缺少字段 + Router::get('/unfilled', [PatientCaseController::class, 'getPatientFamilyInquiryCaseUnfilledFields']); + + // 医生发送缺少字段至患者 + Router::post('/doctor', [PatientCaseController::class, 'sendCaseUnfilledFieldsToPatient']); + + // 患者填写缺少字段至医生 + Router::post('/patient', [PatientCaseController::class, 'sendCaseUnfilledFieldsToDoctor']); + }); }); // 测试使用 From 613348edc95deaf4dc886dda0b0fb671e4e859fb Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Fri, 1 Dec 2023 13:41:25 +0800 Subject: [PATCH 31/87] 1 --- app/Services/PatientCaseService.php | 6 ------ 1 file changed, 6 deletions(-) diff --git a/app/Services/PatientCaseService.php b/app/Services/PatientCaseService.php index 547b4e5..09f9dce 100644 --- a/app/Services/PatientCaseService.php +++ b/app/Services/PatientCaseService.php @@ -262,23 +262,17 @@ class PatientCaseService extends BaseService "diagnosis_date", // 确诊日期 "disease_desc", // 病情描述(主诉) "is_allergy_history", // 是否存在过敏史(0:否 1:是) - "allergy_history", // 过敏史描述 "is_family_history", // 是否存在家族病史(0:否 1:是) - "family_history", // 家族病史描述 "is_pregnant", // 是否备孕、妊娠、哺乳期(0:否 1:是) - "pregnant", // 备孕、妊娠、哺乳期描述 "is_taboo", // 是否服用过禁忌药物,且无相关禁忌(0:否 1:是)问诊购药时存在 "is_take_medicine", // 正在服药(0:否 1:是) - "drugs_name", // 正在服药名称 "nation_name", // 民族名称 "job_name", // 职业名称 "diagnosis_hospital", // 确诊医院 "is_operation", // 是否存在手术(0:否 1:是) - "operation", // 手术描述 "drink_wine_status", // 饮酒状态(1:从不 2:偶尔 3:经常 4:每天 5:已戒酒) "smoke_status", // 吸烟状态(1:从不 2:偶尔 3:经常 4:每天 5:已戒烟) "chemical_compound_status", // 化合物状态(1:从不 2:偶尔 3:经常 4:每天) - "chemical_compound_describe", // 化合物描述 ]; try { From 19811a8a37a5f2eafbfa69f8dee87608ed6f60a6 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Mon, 4 Dec 2023 15:34:55 +0800 Subject: [PATCH 32/87] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E9=A1=BA=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Services/PatientCaseService.php | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/app/Services/PatientCaseService.php b/app/Services/PatientCaseService.php index 09f9dce..418e0e9 100644 --- a/app/Services/PatientCaseService.php +++ b/app/Services/PatientCaseService.php @@ -258,21 +258,17 @@ class PatientCaseService extends BaseService "height", // 身高(cm) "weight", // 体重(kg) "marital_status", // 婚姻状况(0:未婚 1:已婚 2:离异) - "disease_class_name", // 疾病名称-系统 - "diagnosis_date", // 确诊日期 - "disease_desc", // 病情描述(主诉) + "nation_id", // 民族名称 + "job_id", // 职业名称 "is_allergy_history", // 是否存在过敏史(0:否 1:是) "is_family_history", // 是否存在家族病史(0:否 1:是) "is_pregnant", // 是否备孕、妊娠、哺乳期(0:否 1:是) - "is_taboo", // 是否服用过禁忌药物,且无相关禁忌(0:否 1:是)问诊购药时存在 - "is_take_medicine", // 正在服药(0:否 1:是) - "nation_name", // 民族名称 - "job_name", // 职业名称 - "diagnosis_hospital", // 确诊医院 "is_operation", // 是否存在手术(0:否 1:是) "drink_wine_status", // 饮酒状态(1:从不 2:偶尔 3:经常 4:每天 5:已戒酒) "smoke_status", // 吸烟状态(1:从不 2:偶尔 3:经常 4:每天 5:已戒烟) "chemical_compound_status", // 化合物状态(1:从不 2:偶尔 3:经常 4:每天) + "diagnosis_hospital", // 确诊医院 + "is_take_medicine", // 正在服药(0:否 1:是) ]; try { From 42259e83cca5efd84c264c8e9114b913a589d910 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Mon, 4 Dec 2023 15:40:08 +0800 Subject: [PATCH 33/87] 1 --- app/Services/PatientCaseService.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/Services/PatientCaseService.php b/app/Services/PatientCaseService.php index 418e0e9..4151ccf 100644 --- a/app/Services/PatientCaseService.php +++ b/app/Services/PatientCaseService.php @@ -374,8 +374,6 @@ class PatientCaseService extends BaseService "is_taboo", // 是否服用过禁忌药物,且无相关禁忌(0:否 1:是)问诊购药时存在 "is_take_medicine", // 正在服药(0:否 1:是) "drugs_name", // 正在服药名称 - "nation_name", // 民族名称 - "job_name", // 职业名称 "diagnosis_hospital", // 确诊医院 "is_operation", // 是否存在手术(0:否 1:是) "operation", // 手术描述 @@ -494,8 +492,6 @@ class PatientCaseService extends BaseService "is_taboo", // 是否服用过禁忌药物,且无相关禁忌(0:否 1:是)问诊购药时存在 "is_take_medicine", // 正在服药(0:否 1:是) "drugs_name", // 正在服药名称 - "nation_name", // 民族名称 - "job_name", // 职业名称 "diagnosis_hospital", // 确诊医院 "is_operation", // 是否存在手术(0:否 1:是) "operation", // 手术描述 From a81210cb7f3b5bd615deeb388325579f24ddda2e Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Mon, 4 Dec 2023 16:41:31 +0800 Subject: [PATCH 34/87] 1 --- app/Services/PatientCaseService.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/Services/PatientCaseService.php b/app/Services/PatientCaseService.php index 4151ccf..bca8717 100644 --- a/app/Services/PatientCaseService.php +++ b/app/Services/PatientCaseService.php @@ -513,7 +513,9 @@ class PatientCaseService extends BaseService $case_fields = []; foreach ($request_params['fields'] as $key => $value){ if (!in_array($key,$fields)){ - return fail(HttpEnumCode::HTTP_ERROR,"存在非法数据"); + if ($key != "order_inquiry_id"){ + return fail(HttpEnumCode::HTTP_ERROR,"存在非法数据"); + } } $case_fields[$key] = $value; From e609e05ca6dac2ed2e8babd876a44998b5f2646a Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Mon, 4 Dec 2023 16:50:26 +0800 Subject: [PATCH 35/87] 1 --- app/Services/PatientCaseService.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/Services/PatientCaseService.php b/app/Services/PatientCaseService.php index bca8717..9cace7b 100644 --- a/app/Services/PatientCaseService.php +++ b/app/Services/PatientCaseService.php @@ -362,6 +362,8 @@ class PatientCaseService extends BaseService "height", // 身高(cm) "weight", // 体重(kg) "marital_status", // 婚姻状况(0:未婚 1:已婚 2:离异) + "nation_id", // 民族名称 + "job_id", // 职业名称 "disease_class_name", // 疾病名称-系统 "diagnosis_date", // 确诊日期 "disease_desc", // 病情描述(主诉) @@ -480,6 +482,8 @@ class PatientCaseService extends BaseService "height", // 身高(cm) "weight", // 体重(kg) "marital_status", // 婚姻状况(0:未婚 1:已婚 2:离异) + "nation_id", // 民族名称 + "job_id", // 职业名称 "disease_class_name", // 疾病名称-系统 "diagnosis_date", // 确诊日期 "disease_desc", // 病情描述(主诉) From 11bf031bd42d41006ffcabc9da57e0c8412a2456 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Tue, 5 Dec 2023 13:44:42 +0800 Subject: [PATCH 36/87] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=82=A3=E8=80=85?= =?UTF-8?q?=E5=A1=AB=E5=86=99=E7=BC=BA=E5=B0=91=E5=AD=97=E6=AE=B5=E8=87=B3?= =?UTF-8?q?=E5=8C=BB=E7=94=9F=EF=BC=8C=E5=90=8C=E6=AD=A5=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E9=97=AE=E8=AF=8A=E7=97=85=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Services/PatientCaseService.php | 45 ++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/app/Services/PatientCaseService.php b/app/Services/PatientCaseService.php index 9cace7b..c91c069 100644 --- a/app/Services/PatientCaseService.php +++ b/app/Services/PatientCaseService.php @@ -16,6 +16,7 @@ use App\Model\PatientFamilyHealth; use App\Model\PatientFamilyPersonal; use App\Model\User; use App\Model\UserDoctor; +use Hyperf\DbConnection\Db; use Hyperf\Redis\Redis; /** @@ -473,6 +474,16 @@ class PatientCaseService extends BaseService return fail(); } + // 获取病例信息 + $params = array(); + $params['order_inquiry_id'] = $order_inquiry_id; + $order_inquiry_case = OrderInquiryCase::getOne($params); + if (empty($order_inquiry_case)) { + return fail(); + } + + $order_inquiry_case = $order_inquiry_case->toArray(); + // 初始字段定义 $fields = [ "relation", // 与患者关系(1:本人 2:父母 3:爱人 4:子女 5:亲戚 6:其他 ) @@ -505,6 +516,8 @@ class PatientCaseService extends BaseService "chemical_compound_describe", // 化合物描述 ]; + Db::beginTransaction(); + try { $redis = $this->container->get(Redis::class); $redis_key = "patient_family_inquiry_case_unfilled_fields_" . $order_inquiry_id; @@ -515,19 +528,46 @@ class PatientCaseService extends BaseService // 患者病例字段 $case_fields = []; + + // 修改字段 + $order_inquiry_case_data = []; + foreach ($request_params['fields'] as $key => $value){ if (!in_array($key,$fields)){ if ($key != "order_inquiry_id"){ + Db::rollBack(); return fail(HttpEnumCode::HTTP_ERROR,"存在非法数据"); } } + if ($value === ""){ + continue; + } + + // 判断修改数据 + if (array_key_exists($key,$order_inquiry_case)){ + if ($order_inquiry_case[$key] == null){ + $order_inquiry_case_data[$key] = $value; + } + } + $case_fields[$key] = $value; } - $case_fields = json_encode($case_fields,JSON_UNESCAPED_UNICODE); + // 存储至问诊病例中 + if (!empty($order_inquiry_case_data)){ + $params = array(); + $params['inquiry_case_id'] = $order_inquiry_case['inquiry_case_id']; + $res = OrderInquiryCase::edit($params,$order_inquiry_case_data); + if (!$res){ + Db::rollBack(); + return fail(); + } + } // 发送im消息 + $case_fields = json_encode($case_fields,JSON_UNESCAPED_UNICODE); + $imService = new ImService(); $imService->CaseUnfilledFieldsToDoctor($order_inquiry,$doctor['user_id'],$user_info['user_id'],$case_fields); @@ -545,7 +585,10 @@ class PatientCaseService extends BaseService }else{ $redis->del($redis_key); } + + Db::commit(); }catch (\Throwable $e){ + Db::rollBack(); return fail(); } From 811acd7880fa34fd31b6119a47e4099ed9a6680b Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Tue, 5 Dec 2023 13:50:23 +0800 Subject: [PATCH 37/87] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=98=9F=E5=88=97?= =?UTF-8?q?=E5=A4=87=E6=B3=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Amqp/Consumer/AssignDoctorDelayDirectConsumer.php | 3 +++ .../Consumer/AutoPharmacistCaVerifyDelayDirectConsumer.php | 3 +++ app/Amqp/Consumer/DetectionCompleteDelayDirectConsumer.php | 4 ++++ app/Amqp/Consumer/GrantUserCouponDelayDirectConsumer.php | 3 +++ app/Amqp/Consumer/UserImOffDelayDirectConsumer.php | 3 +++ app/Amqp/Producer/GrantUserCouponDelayDirectProducer.php | 3 +++ 6 files changed, 19 insertions(+) diff --git a/app/Amqp/Consumer/AssignDoctorDelayDirectConsumer.php b/app/Amqp/Consumer/AssignDoctorDelayDirectConsumer.php index 891696a..43a8c49 100644 --- a/app/Amqp/Consumer/AssignDoctorDelayDirectConsumer.php +++ b/app/Amqp/Consumer/AssignDoctorDelayDirectConsumer.php @@ -30,6 +30,9 @@ use PhpAmqpLib\Message\AMQPMessage; use Psr\Container\ContainerExceptionInterface; use Psr\Container\NotFoundExceptionInterface; +/** + * 快速-购药分配医生 + */ #[Consumer(nums: 1)] class AssignDoctorDelayDirectConsumer extends ConsumerMessage { diff --git a/app/Amqp/Consumer/AutoPharmacistCaVerifyDelayDirectConsumer.php b/app/Amqp/Consumer/AutoPharmacistCaVerifyDelayDirectConsumer.php index 16628a3..e1ff22a 100644 --- a/app/Amqp/Consumer/AutoPharmacistCaVerifyDelayDirectConsumer.php +++ b/app/Amqp/Consumer/AutoPharmacistCaVerifyDelayDirectConsumer.php @@ -31,6 +31,9 @@ use PhpAmqpLib\Message\AMQPMessage; use Psr\Container\ContainerExceptionInterface; use Psr\Container\NotFoundExceptionInterface; +/** + * 药师审核并ca签章 + */ #[Consumer(nums: 1)] class AutoPharmacistCaVerifyDelayDirectConsumer extends ConsumerMessage { diff --git a/app/Amqp/Consumer/DetectionCompleteDelayDirectConsumer.php b/app/Amqp/Consumer/DetectionCompleteDelayDirectConsumer.php index e63cae7..f3f9529 100644 --- a/app/Amqp/Consumer/DetectionCompleteDelayDirectConsumer.php +++ b/app/Amqp/Consumer/DetectionCompleteDelayDirectConsumer.php @@ -29,6 +29,10 @@ use Hyperf\DbConnection\Db; use Hyperf\Snowflake\IdGeneratorInterface; use PhpAmqpLib\Message\AMQPMessage; +/** + * 检测订单自动完成延迟队列 + * 当接收到检测报告时,如当时患者-医生存在问诊中订单,则加入此延迟队列,等待问诊结束后,检测订单才会接收 + */ #[Consumer(nums: 1)] class DetectionCompleteDelayDirectConsumer extends ConsumerMessage { diff --git a/app/Amqp/Consumer/GrantUserCouponDelayDirectConsumer.php b/app/Amqp/Consumer/GrantUserCouponDelayDirectConsumer.php index a35031c..06eee1e 100644 --- a/app/Amqp/Consumer/GrantUserCouponDelayDirectConsumer.php +++ b/app/Amqp/Consumer/GrantUserCouponDelayDirectConsumer.php @@ -16,6 +16,9 @@ use Hyperf\Amqp\Message\ConsumerMessage; use Hyperf\DbConnection\Db; use PhpAmqpLib\Message\AMQPMessage; +/** + * 再次发放用户优惠卷 + */ #[Consumer(nums: 1)] class GrantUserCouponDelayDirectConsumer extends ConsumerMessage { diff --git a/app/Amqp/Consumer/UserImOffDelayDirectConsumer.php b/app/Amqp/Consumer/UserImOffDelayDirectConsumer.php index 4475285..d5be216 100644 --- a/app/Amqp/Consumer/UserImOffDelayDirectConsumer.php +++ b/app/Amqp/Consumer/UserImOffDelayDirectConsumer.php @@ -15,6 +15,9 @@ use Hyperf\Amqp\Message\ConsumerMessage; use Hyperf\Redis\Redis; use PhpAmqpLib\Message\AMQPMessage; +/** + * 用户在线状态 + */ #[Consumer(nums: 1)] class UserImOffDelayDirectConsumer extends ConsumerMessage { diff --git a/app/Amqp/Producer/GrantUserCouponDelayDirectProducer.php b/app/Amqp/Producer/GrantUserCouponDelayDirectProducer.php index 909738d..4ae1ac1 100644 --- a/app/Amqp/Producer/GrantUserCouponDelayDirectProducer.php +++ b/app/Amqp/Producer/GrantUserCouponDelayDirectProducer.php @@ -9,6 +9,9 @@ use Hyperf\Amqp\Message\ProducerDelayedMessageTrait; use Hyperf\Amqp\Message\ProducerMessage; use Hyperf\Amqp\Message\Type; +/** + * 再次发放用户优惠卷 + */ #[Producer] class GrantUserCouponDelayDirectProducer extends ProducerMessage { From 74a72c1cf64d8bd320972f3eac869d20af55bd2f Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Tue, 5 Dec 2023 17:42:08 +0800 Subject: [PATCH 38/87] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=97=AE=E8=AF=8A?= =?UTF-8?q?=E8=A1=A8=E9=87=8D=E5=A4=8D=E8=AF=B7=E6=B1=82=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Services/PatientCaseService.php | 101 ++++++++++++++++++++-------- config/routes.php | 5 -- 2 files changed, 73 insertions(+), 33 deletions(-) diff --git a/app/Services/PatientCaseService.php b/app/Services/PatientCaseService.php index c91c069..a33aff5 100644 --- a/app/Services/PatientCaseService.php +++ b/app/Services/PatientCaseService.php @@ -218,6 +218,10 @@ class PatientCaseService extends BaseService $user_info = $this->request->getAttribute("userInfo") ?? []; $order_inquiry_id = $this->request->input('order_inquiry_id'); + if ($user_info['user_type'] != 2){ + return fail(HttpEnumCode::HTTP_ERROR,"非法请求"); + } + // 获取订单数据 $params = array(); $params['order_inquiry_id'] = $order_inquiry_id; @@ -235,6 +239,8 @@ class PatientCaseService extends BaseService return fail(); } + $order_inquiry_case = $order_inquiry_case->toArray(); + // 获取患者家庭成员信息表-基本信息 $params = array(); $params['family_id'] = $order_inquiry_case['family_id']; @@ -274,6 +280,20 @@ class PatientCaseService extends BaseService try { // 获取缓存 + /** + * 获取缓存 + * 缓存格式 + * { + "height":{ + "value":1, + "is_filled":1 + }, + "weight":{ + "value":1, + "is_filled":1 + } + * } + */ $redis = $this->container->get(Redis::class); $redis_key = "patient_family_inquiry_case_unfilled_fields_" . $order_inquiry_id; $redis_value = $redis->get($redis_key); @@ -284,31 +304,41 @@ class PatientCaseService extends BaseService // 处理字段 $result = null; foreach ($fields as $field){ - if ($order_inquiry_case[$field] !== null){ - continue; + if (array_key_exists($field,$order_inquiry_case)){ + if ($order_inquiry_case[$field] !== null){ + continue; + } } + if (!empty($patient_family)){ - if ($patient_family[$field] !== null){ - continue; + if (array_key_exists($field,$patient_family->toArray())){ + if ($patient_family[$field] !== null){ + continue; + } } } if (!empty($patient_family_health)){ - if ($patient_family_health[$field] !== null){ - continue; + if (array_key_exists($field,$patient_family_health->toArray())){ + if ($patient_family_health[$field] !== null){ + continue; + } } } if (!empty($patient_family_personal)){ - if ($patient_family_personal[$field] !== null){ - continue; + if (array_key_exists($field,$patient_family_personal->toArray())){ + if ($patient_family_personal[$field] !== null){ + continue; + } } } // 缓存 if (!empty($redis_value)){ - if (strstr($redis_value,$field)){ + $redis_value = json_decode($redis_value,true); + if (array_key_exists($field,$redis_value)){ continue; } } @@ -393,25 +423,29 @@ class PatientCaseService extends BaseService // 获取缓存 $redis_value = $redis->get($redis_key); if (!empty($redis_value)){ - $redis_value = explode(',',$redis_value); + $redis_value = json_decode($redis_value,true); } // 患者病例字段 $case_fields = []; - foreach ($request_params['fields'] as $value){ - if (!in_array($value,$fields)){ + foreach ($request_params['fields'] as $key){ + if (!in_array($key,$fields)){ return fail(HttpEnumCode::HTTP_ERROR,"数据选择错误"); } - $case_fields[] = $value; + $case_fields[] = $key; // 处理缓存 if (!empty($redis_value)){ - if (in_array($value,$redis_value)){ + if (array_key_exists($key,$redis_value)){ continue; } } - $redis_value[] = $value; + + $redis_value[$key] = [ + "value" => "", + "is_filled" => 0 + ]; } if (empty($case_fields)){ @@ -426,8 +460,8 @@ class PatientCaseService extends BaseService // 添加缓存-逗号分割字符串 if (!empty($redis_value)){ - $redis_value = implode(',',$redis_value); - $res = $redis->set($redis_key,$redis_value,3 * 24 * 60 * 60); + $redis_value = json_encode($redis_value,JSON_UNESCAPED_UNICODE); + $res = $redis->set($redis_key,$redis_value,31 * 24 * 60 * 60); if (!$res){ return fail(); } @@ -523,7 +557,7 @@ class PatientCaseService extends BaseService $redis_key = "patient_family_inquiry_case_unfilled_fields_" . $order_inquiry_id; $redis_value = $redis->get($redis_key); if (!empty($redis_value)){ - $redis_value = explode(',',$redis_value); + $redis_value = json_decode($redis_value,true); } // 患者病例字段 @@ -540,10 +574,27 @@ class PatientCaseService extends BaseService } } + // 跳过关联字段传空,如是否是否过敏史、过敏史描述 if ($value === ""){ continue; } + // 判断是否存在于缓存中 + if (!empty($redis_value)){ + if (!array_key_exists($key,$redis_value)){ + Db::rollBack(); + return fail(HttpEnumCode::HTTP_ERROR,"存在非法数据"); + }else{ + if ($redis_value[$key]['is_filled'] == 1){ + Db::rollBack(); + return fail(HttpEnumCode::HTTP_ERROR,"请勿重复提交"); + } + + $redis_value[$key]['value'] = $value; + $redis_value[$key]['is_filled'] = 1; + } + } + // 判断修改数据 if (array_key_exists($key,$order_inquiry_case)){ if ($order_inquiry_case[$key] == null){ @@ -573,17 +624,11 @@ class PatientCaseService extends BaseService // 处理缓存 if (!empty($redis_value)){ - $diff_values = array_diff($redis_value, array_keys($request_params['fields'])); - if (!empty($diff_values)){ - // 添加缓存-逗号分割字符串 - $redis_value = implode(',',$diff_values); - $res = $redis->set($redis_key,$redis_value,3 * 24 * 60 * 60); - if (!$res){ - return fail(); - } + $redis_value = json_encode($redis_value,JSON_UNESCAPED_UNICODE); + $res = $redis->set($redis_key,$redis_value,31 * 24 * 60 * 60); + if (!$res){ + return fail(); } - }else{ - $redis->del($redis_key); } Db::commit(); diff --git a/config/routes.php b/config/routes.php index a52bf62..d348470 100644 --- a/config/routes.php +++ b/config/routes.php @@ -22,7 +22,6 @@ use App\Controller\LoginController; use App\Controller\CodeController; use App\Controller\MessageNoticeController; use App\Controller\PatientCaseController; -use App\Controller\PatientCenterController; use App\Controller\PatientDoctorController; use App\Controller\PatientFamilyController; use App\Controller\PatientOrderController; @@ -35,7 +34,6 @@ use App\Controller\UserDoctorController; use App\Controller\UserPatientController; use App\Controller\UserPharmacistController; use App\Middleware\Rule\LockRequestMiddleware; -use App\Services\SafeService; use Hyperf\HttpServer\Router\Router; @@ -83,9 +81,6 @@ Router::addGroup('/doctor', function () { // 修改医生问诊配置 Router::put('/config', [UserDoctorController::class, 'putInquiryConfig']); -// // 获取患者问诊病例 -// Router::get('/case', [InquiryController::class, 'getPatientInquiryCase']); - // 获取医生问诊消息列表 Router::get('/message', [UserDoctorController::class, 'getDoctorMessageList']); From 80984617c96d63455a217ef8bdb80ec4cc1f1b12 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Wed, 6 Dec 2023 10:53:35 +0800 Subject: [PATCH 39/87] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E9=97=AE=E8=AF=8A?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=EF=BC=8C=E6=96=B0=E5=A2=9E=E5=AE=B6=E5=BA=AD?= =?UTF-8?q?=E6=88=90=E5=91=98=E6=95=B0=E6=8D=AE=E5=A1=AB=E5=85=A5=E9=97=AE?= =?UTF-8?q?=E8=AF=8A=E7=97=85=E4=BE=8B=E4=B8=AD=E3=80=82=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E9=97=AE=E8=AF=8A=E7=97=85=E4=BE=8B=E6=95=B0=E6=8D=AE=E7=9A=84?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E6=96=B9=E5=BC=8F=EF=BC=8C=E5=8E=BB=E9=99=A4?= =?UTF-8?q?=E5=AE=B6=E5=BA=AD=E6=88=90=E5=91=98=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Request/InquiryRequest.php | 2 - app/Services/InquiryService.php | 134 +++++++++++++++++++++---- app/Services/PatientCaseService.php | 146 ++++++++++++++-------------- 3 files changed, 187 insertions(+), 95 deletions(-) diff --git a/app/Request/InquiryRequest.php b/app/Request/InquiryRequest.php index 78d8cda..9486c49 100644 --- a/app/Request/InquiryRequest.php +++ b/app/Request/InquiryRequest.php @@ -20,8 +20,6 @@ class InquiryRequest extends FormRequest 'is_allergy_history',// 过敏史 'is_family_history', // 家族病史 'is_pregnant',// 备孕、妊娠、哺乳期 - 'height', - 'weight', 'inquiry_type', // 订单类型(1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药) 'inquiry_mode', // 订单问诊方式(1:图文 2:视频 3:语音 4:电话 5:会员) 'client_type', // 客户端类型(1:手机 2:电脑) diff --git a/app/Services/InquiryService.php b/app/Services/InquiryService.php index a9baa3b..914e5f1 100644 --- a/app/Services/InquiryService.php +++ b/app/Services/InquiryService.php @@ -80,6 +80,16 @@ class InquiryService extends BaseService return fail(HttpEnumCode::HTTP_ERROR, "患者信息错误"); } + // 获取患者家庭成员信息表-健康情况 + $params = array(); + $params['family_id'] = $request_params['family_id']; + $patient_family_health = PatientFamilyHealth::getOne($params); + + // 获取患者家庭成员信息表-个人情况 + $params = array(); + $params['family_id'] = $request_params['family_id']; + $patient_family_personal = PatientFamilyPersonal::getOne($params); + // 检测是否存在同类型未完成的问诊订单 $PatientOrderService = new PatientOrderService(); $order_inquiry_id = $PatientOrderService->getNotFinishedOrderInquiry($request_params['inquiry_type'], $user_info['client_user_id']); @@ -90,7 +100,7 @@ class InquiryService extends BaseService return success($result); } - // 是否为孕妇 + // 是否备孕、妊娠、哺乳期(0:否 1:是) if ($request_params['is_pregnant'] == 1) { return fail(HttpEnumCode::HTTP_ERROR, "请您到线下问诊"); } @@ -174,6 +184,13 @@ class InquiryService extends BaseService $inquiry_pay_channel = 2; } + // 处理复诊凭证 + if (!empty($request_params['diagnose_images'])) { + // 医师资格证 + $diagnose_images = implode(',', $request_params['diagnose_images']); + $diagnose_images = PcreMatch::pregRemoveOssWebsite($diagnose_images); + } + Db::beginTransaction(); $generator = $this->container->get(IdGeneratorInterface::class); @@ -214,13 +231,6 @@ class InquiryService extends BaseService return fail(HttpEnumCode::SERVER_ERROR, "订单创建失败"); } - // 处理复诊凭证 - if (!empty($request_params['diagnose_images'])) { - // 医师资格证 - $diagnose_images = implode(',', $request_params['diagnose_images']); - $diagnose_images = PcreMatch::pregRemoveOssWebsite($diagnose_images); - } - // 增加患者问诊病例 $data = array(); $data['user_id'] = $user_info['user_id']; @@ -229,37 +239,121 @@ class InquiryService extends BaseService $data['family_id'] = $patient_family['family_id']; // 家庭成员id $data['relation'] = $patient_family['relation']; // 与患者关系(1:本人 2:父母 3:爱人 4:子女 5:亲戚 6:其他 ) $data['name'] = $patient_family['card_name']; // 患者名称 - $data['sex'] = $patient_family['sex'] ?? 0; // 患者性别(0:未知 1:男 2:女) - $data['age'] = $patient_family['age'] ?? null; // 患者年龄 - $data['height'] = $request_params['height'] ?? $patient_family['height'] ?: null; // 身高(cm) - $data['weight'] = $request_params['weight'] ?? $patient_family['weight'] ?: null;; // 体重(kg) + $data['sex'] = $patient_family['sex']; // 患者性别(0:未知 1:男 2:女) $data['disease_class_id'] = $disease_class['disease_class_id']; // 疾病分类id-系统 $data['disease_class_name'] = $disease_class['disease_class_name']; // 疾病名称-系统 - $data['diagnosis_date'] = $request_params['diagnosis_date'] ?: null; // 确诊日期 - $data['disease_desc'] = $request_params['disease_desc'] ?: null; // 病情描述(主诉) + $data['diagnosis_date'] = $request_params['diagnosis_date']; // 确诊日期 + $data['disease_desc'] = $request_params['disease_desc']; // 病情描述(主诉) $data['diagnose_images'] = $diagnose_images ?? ""; // 复诊凭证(多个使用逗号分隔) - if (isset($request_params['is_allergy_history'])) { + + if ($patient_family['age'] != null){ + $data['age'] = $patient_family['age'];// 患者年龄 + } + + // 身高(cm) + if ($patient_family['height'] != null){ + $data['height'] = $patient_family['height']; + } + + // 体重(kg) + if ($patient_family['weight'] != null){ + $data['weight'] = $patient_family['weight']; + } + + // 职业id-职业名称 + if ($patient_family['job_id'] != null){ + $data['job_id'] = $patient_family['job_id']; + if ($patient_family['job_name'] != null){ + $data['job_name'] = $patient_family['job_name']; + } + } + + // 民族id-民族名称 + if ($patient_family['nation_id'] != null){ + $data['nation_id'] = $patient_family['nation_id']; + if ($patient_family['nation_name'] != null){ + $data['nation_name'] = $patient_family['nation_name']; + } + } + + // 婚姻状况 + if ($patient_family['marital_status'] != null){ + $data['marital_status'] = $patient_family['marital_status']; + } + + // 家庭成员-健康情况 + if (!empty($patient_family_health)){ + if ($patient_family_health['diagnosis_hospital'] != null){ + $data['diagnosis_hospital'] = $patient_family_health['diagnosis_hospital']; // 确诊医院 + } + + if ($patient_family_health['is_take_medicine'] != null){ + $data['is_take_medicine'] = $patient_family_health['is_take_medicine']; // 正在服药 + if ($patient_family_health['drugs_name'] != null){ + $data['drugs_name'] = $patient_family_health['drugs_name']; // 正在服药名称 + } + } + } + + // 家庭成员-个人情况 + if (!empty($patient_family_personal)){ + if ($patient_family_personal['drink_wine_status'] != null){ + $data['drink_wine_status'] = $patient_family_personal['drink_wine_status']; // 饮酒状态 + } + + if ($patient_family_personal['smoke_status'] != null){ + $data['smoke_status'] = $patient_family_personal['smoke_status']; // 吸烟状态 + } + + if ($patient_family_personal['chemical_compound_status'] != null){ + $data['chemical_compound_status'] = $patient_family_personal['chemical_compound_status']; // 化合物状态 + if ($patient_family_personal['chemical_compound_describe'] != null){ + $data['chemical_compound_describe'] = $patient_family_personal['chemical_compound_describe']; // 化合物描述 + } + } + + if ($patient_family_personal['is_operation'] != null){ + $data['is_operation'] = $patient_family_personal['is_operation']; // 是否存在手术 + if ($patient_family_personal['operation'] != null){ + $data['operation'] = $patient_family_personal['operation']; // 手术描述 + } + } + } + + // 过敏史 + if (array_key_exists("is_allergy_history",$request_params)){ if ($request_params['is_allergy_history'] !== null) { $data['is_allergy_history'] = $request_params['is_allergy_history']; // 是否存在过敏史(0:否 1:是) + if ($request_params['allergy_history'] != ""){ + $data['allergy_history'] = $request_params['allergy_history']; // 过敏史描述 + } } } - $data['allergy_history'] = $request_params['allergy_history'] ?? null; // 过敏史描述 - if (isset($request_params['is_family_history'])) { + + // 家族病史 + if (array_key_exists("is_family_history",$request_params)){ if ($request_params['is_family_history'] !== null) { $data['is_family_history'] = $request_params['is_family_history']; // 是否存在家族病史(0:否 1:是) + if ($request_params['family_history'] != ""){ + $data['family_history'] = $request_params['family_history']; // 家族病史描述 + } } } - $data['family_history'] = $request_params['family_history'] ?? null; // 家族病史描述 - if (isset($request_params['is_pregnant'])) { + + // 是否备孕、妊娠、哺乳期(0:否 1:是) + if (array_key_exists("is_pregnant",$request_params)){ if ($request_params['is_pregnant'] !== null) { $data['is_pregnant'] = $request_params['is_pregnant']; // 是否备孕、妊娠、哺乳期(0:否 1:是) } } - if (isset($request_params['is_taboo'])) { + + // 是否存在禁忌药物(0:否 1:是)问诊购药时存在 + if (array_key_exists("is_taboo",$request_params)){ if ($request_params['is_taboo'] !== null) { $data['is_taboo'] = $request_params['is_taboo']; // 是否存在禁忌药物(0:否 1:是)问诊购药时存在 } } + $order_inquiry_case = OrderInquiryCase::addOrderInquiryCase($data); if (empty($order_inquiry_case)) { Db::rollBack(); diff --git a/app/Services/PatientCaseService.php b/app/Services/PatientCaseService.php index a33aff5..63589c7 100644 --- a/app/Services/PatientCaseService.php +++ b/app/Services/PatientCaseService.php @@ -87,41 +87,42 @@ class PatientCaseService extends BaseService $order_inquiry_case = $order_inquiry_case->toArray(); - // 获取患者家庭成员信息表-基本信息 - $params = array(); - $params['family_id'] = $order_inquiry_case['family_id']; - $patient_family = PatientFamily::getOne($params); - if (!empty($patient_family)){ - $order_inquiry_case['height'] = $order_inquiry_case['height'] ?: $patient_family['height'] ?: NULL; - $order_inquiry_case['weight'] = $order_inquiry_case['weight'] ?: $patient_family['weight'] ?: NULL; - $order_inquiry_case['job_id'] = $order_inquiry_case['job_id'] ?: $patient_family['job_id'] ?: NULL; - $order_inquiry_case['job_name'] = $order_inquiry_case['job_name'] ?: $patient_family['job_name'] ?: NULL; - $order_inquiry_case['nation_name'] = $order_inquiry_case['nation_name'] ?: $patient_family['nation_name'] ?: NULL; - $order_inquiry_case['marital_status'] = $order_inquiry_case['marital_status'] ?: $patient_family['marital_status'] ?: NULL; - } - - // 获取患者家庭成员信息表-健康情况 - $params = array(); - $params['family_id'] = $order_inquiry_case['family_id']; - $patient_family_health = PatientFamilyHealth::getOne($params); - if (!empty($patient_family_health)) { - $order_inquiry_case['diagnosis_hospital'] = $order_inquiry_case['diagnosis_hospital'] ?: $patient_family_health['diagnosis_hospital'] ?: ""; - $order_inquiry_case['is_take_medicine'] = $order_inquiry_case['is_take_medicine'] ?: $patient_family_health['is_take_medicine'] ?: null; - $order_inquiry_case['drugs_name'] = $order_inquiry_case['drugs_name'] ?: $patient_family_health['drugs_name'] ?: ""; - } - - // 获取患者家庭成员信息表-个人情况 - $params = array(); - $params['family_id'] = $order_inquiry_case['family_id']; - $patient_family_personal = PatientFamilyPersonal::getOne($params); - if (!empty($patient_family_personal)) { - $order_inquiry_case['drink_wine_status'] = $order_inquiry_case['drink_wine_status'] ?: $patient_family_personal['drink_wine_status'] ?: null; - $order_inquiry_case['smoke_status'] = $order_inquiry_case['smoke_status'] ?: $patient_family_personal['smoke_status'] ?: null; - $order_inquiry_case['chemical_compound_status'] = $order_inquiry_case['chemical_compound_status'] ?: $patient_family_personal['chemical_compound_status'] ?: null; - $order_inquiry_case['chemical_compound_describe'] = $order_inquiry_case['chemical_compound_describe'] ?: $patient_family_personal['chemical_compound_describe'] ?: ""; - $order_inquiry_case['is_operation'] = $order_inquiry_case['is_operation'] ?: $patient_family_personal['is_operation'] ?: null; - $order_inquiry_case['operation'] = $order_inquiry_case['operation'] ?: $patient_family_personal['operation'] ?: ""; - } +// // 获取患者家庭成员信息表-基本信息 +// $params = array(); +// $params['family_id'] = $order_inquiry_case['family_id']; +// $patient_family = PatientFamily::getOne($params); +// if (!empty($patient_family)){ +// $order_inquiry_case['height'] = $order_inquiry_case['height'] ?: $patient_family['height'] ?: NULL; +// $order_inquiry_case['weight'] = $order_inquiry_case['weight'] ?: $patient_family['weight'] ?: NULL; +// $order_inquiry_case['job_id'] = $order_inquiry_case['job_id'] ?: $patient_family['job_id'] ?: NULL; +// $order_inquiry_case['job_name'] = $order_inquiry_case['job_name'] ?: $patient_family['job_name'] ?: NULL; +// $order_inquiry_case['nation_id'] = $order_inquiry_case['nation_id'] ?: $patient_family['nation_id'] ?: NULL; +// $order_inquiry_case['nation_name'] = $order_inquiry_case['nation_name'] ?: $patient_family['nation_name'] ?: NULL; +// $order_inquiry_case['marital_status'] = $order_inquiry_case['marital_status'] ?: $patient_family['marital_status'] ?: NULL; +// } +// +// // 获取患者家庭成员信息表-健康情况 +// $params = array(); +// $params['family_id'] = $order_inquiry_case['family_id']; +// $patient_family_health = PatientFamilyHealth::getOne($params); +// if (!empty($patient_family_health)) { +// $order_inquiry_case['diagnosis_hospital'] = $order_inquiry_case['diagnosis_hospital'] ?: $patient_family_health['diagnosis_hospital'] ?: ""; +// $order_inquiry_case['is_take_medicine'] = $order_inquiry_case['is_take_medicine'] ?: $patient_family_health['is_take_medicine'] ?: null; +// $order_inquiry_case['drugs_name'] = $order_inquiry_case['drugs_name'] ?: $patient_family_health['drugs_name'] ?: ""; +// } +// +// // 获取患者家庭成员信息表-个人情况 +// $params = array(); +// $params['family_id'] = $order_inquiry_case['family_id']; +// $patient_family_personal = PatientFamilyPersonal::getOne($params); +// if (!empty($patient_family_personal)) { +// $order_inquiry_case['drink_wine_status'] = $order_inquiry_case['drink_wine_status'] ?: $patient_family_personal['drink_wine_status'] ?: null; +// $order_inquiry_case['smoke_status'] = $order_inquiry_case['smoke_status'] ?: $patient_family_personal['smoke_status'] ?: null; +// $order_inquiry_case['chemical_compound_status'] = $order_inquiry_case['chemical_compound_status'] ?: $patient_family_personal['chemical_compound_status'] ?: null; +// $order_inquiry_case['chemical_compound_describe'] = $order_inquiry_case['chemical_compound_describe'] ?: $patient_family_personal['chemical_compound_describe'] ?: ""; +// $order_inquiry_case['is_operation'] = $order_inquiry_case['is_operation'] ?: $patient_family_personal['is_operation'] ?: null; +// $order_inquiry_case['operation'] = $order_inquiry_case['operation'] ?: $patient_family_personal['operation'] ?: ""; +// } // 获取用药意向 $product = []; @@ -241,20 +242,20 @@ class PatientCaseService extends BaseService $order_inquiry_case = $order_inquiry_case->toArray(); - // 获取患者家庭成员信息表-基本信息 - $params = array(); - $params['family_id'] = $order_inquiry_case['family_id']; - $patient_family = PatientFamily::getOne($params); - - // 获取患者家庭成员信息表-健康情况 - $params = array(); - $params['family_id'] = $order_inquiry_case['family_id']; - $patient_family_health = PatientFamilyHealth::getOne($params); - - // 获取患者家庭成员信息表-个人情况 - $params = array(); - $params['family_id'] = $order_inquiry_case['family_id']; - $patient_family_personal = PatientFamilyPersonal::getOne($params); +// // 获取患者家庭成员信息表-基本信息 +// $params = array(); +// $params['family_id'] = $order_inquiry_case['family_id']; +// $patient_family = PatientFamily::getOne($params); +// +// // 获取患者家庭成员信息表-健康情况 +// $params = array(); +// $params['family_id'] = $order_inquiry_case['family_id']; +// $patient_family_health = PatientFamilyHealth::getOne($params); +// +// // 获取患者家庭成员信息表-个人情况 +// $params = array(); +// $params['family_id'] = $order_inquiry_case['family_id']; +// $patient_family_personal = PatientFamilyPersonal::getOne($params); // 初始字段定义 $fields = [ @@ -279,7 +280,6 @@ class PatientCaseService extends BaseService ]; try { - // 获取缓存 /** * 获取缓存 * 缓存格式 @@ -311,29 +311,29 @@ class PatientCaseService extends BaseService } - if (!empty($patient_family)){ - if (array_key_exists($field,$patient_family->toArray())){ - if ($patient_family[$field] !== null){ - continue; - } - } - } - - if (!empty($patient_family_health)){ - if (array_key_exists($field,$patient_family_health->toArray())){ - if ($patient_family_health[$field] !== null){ - continue; - } - } - } - - if (!empty($patient_family_personal)){ - if (array_key_exists($field,$patient_family_personal->toArray())){ - if ($patient_family_personal[$field] !== null){ - continue; - } - } - } +// if (!empty($patient_family)){ +// if (array_key_exists($field,$patient_family->toArray())){ +// if ($patient_family[$field] !== null){ +// continue; +// } +// } +// } +// +// if (!empty($patient_family_health)){ +// if (array_key_exists($field,$patient_family_health->toArray())){ +// if ($patient_family_health[$field] !== null){ +// continue; +// } +// } +// } +// +// if (!empty($patient_family_personal)){ +// if (array_key_exists($field,$patient_family_personal->toArray())){ +// if ($patient_family_personal[$field] !== null){ +// continue; +// } +// } +// } // 缓存 if (!empty($redis_value)){ From 90eac1a58f280d63a7eadb0be3d4ec96dafea4c0 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Wed, 6 Dec 2023 13:10:29 +0800 Subject: [PATCH 40/87] =?UTF-8?q?=E5=BC=82=E5=B8=B8=E5=8F=98=E5=8A=A8?= =?UTF-8?q?=E4=B8=BA=E5=85=A8=E5=B1=80=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Amqp/Consumer/AutoCompleteInquiryDelayDirectConsumer.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Amqp/Consumer/AutoCompleteInquiryDelayDirectConsumer.php b/app/Amqp/Consumer/AutoCompleteInquiryDelayDirectConsumer.php index 770f130..a2c7563 100644 --- a/app/Amqp/Consumer/AutoCompleteInquiryDelayDirectConsumer.php +++ b/app/Amqp/Consumer/AutoCompleteInquiryDelayDirectConsumer.php @@ -197,7 +197,7 @@ class AutoCompleteInquiryDelayDirectConsumer extends ConsumerMessage $MessagePush->finishInquiryToDoctor(); - }catch (\Exception $e){ + }catch (\Throwable $e){ Log::getInstance()->error("发送消息异常错误:" . $e->getMessage()); return Result::ACK; } From 08af3ff63e8192356e2db89a2140fb6665e139ab Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Thu, 7 Dec 2023 13:47:02 +0800 Subject: [PATCH 41/87] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E5=AE=8C=E6=88=90=20=E5=9B=9E=E5=86=99=E6=82=A3=E8=80=85?= =?UTF-8?q?=E7=97=85=E6=83=85=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AutoFinishInquiryDelayDirectConsumer.php | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php b/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php index 20f74f4..92e45de 100644 --- a/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php +++ b/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php @@ -12,6 +12,7 @@ use App\Model\OrderInquiryCase; use App\Model\OrderPrescription; use App\Model\PatientFamilyHealth; use App\Model\PatientFamilyPersonal; +use App\Model\PatientPathography; use App\Model\UserDoctor; use App\Model\UserPatient; use App\Services\ImService; @@ -121,6 +122,9 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage // 处理回写患者病例-回写失败不做处理 $this->handleOrderInquiryCase($order_inquiry); + // 处理回写患者病情记录-回写失败不做处理 + $this->handlePatientPathography($order_inquiry['order_inquiry_id']); + // 处理医生服务患者数量 $this->handleDoctorServedPatientsNum($order_inquiry['doctor_id']); @@ -522,4 +526,77 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage } } } + + /** + * 处理回写患者病情记录 + * 回写失败不做处理 + * @param array|object $order_inquiry + * @return bool + */ + protected function handlePatientPathography(array|object $order_inquiry): bool + { + if ($order_inquiry['inquiry_type'] != 1 && $order_inquiry['inquiry_type'] != 2 && $order_inquiry['inquiry_type'] != 3 && $order_inquiry['inquiry_type'] != 4){ + // 非问诊订单,不进行处理 + return true; + } + + // 获取患者家庭成员病情记录 + $params = array(); + $params['user_id'] = $order_inquiry['user_id']; + $params['patient_id'] = $order_inquiry['patient_id']; + $params['order_inquiry_id'] = $order_inquiry['order_inquiry_id']; + $patient_pathography = PatientPathography::getOne($params); + if (!empty($patient_pathography)){ + return false; + } + + // 获取订单-问诊病例表 + $params = array(); + $params['order_inquiry_id'] = $order_inquiry["order_inquiry_id"]; + $order_inquiry_case = OrderInquiryCase::getOne($params); + if (empty($order_inquiry_case)){ + Log::getInstance("queue-AutoFinishInquiry")->error("错误:缺少问诊病例表"); + return false; + } + + $data = array(); + foreach ($order_inquiry_case as $key => $value) { + // 主键跳过 + if ($key == "inquiry_case_id"){ + continue; + } + + if ($key == "created_at"){ + continue; + } + + if ($key == "updated_at"){ + continue; + } + + if ($value == null){ + continue; + } + + $data[$key] = $value; + + } + + // 获取处方数据 + $params = array(); + $params['order_inquiry_id'] = $order_inquiry['order_inquiry_id']; + $order_prescription = OrderPrescription::getOne($params); + if (!empty($order_prescription)){ + $data['order_prescription_id'] = $order_prescription['order_prescription_id']; + } + + // 新增病情记录 + $patient_pathography = PatientPathography::addPatientPathography($data); + if (empty($patient_pathography)){ + Log::getInstance("queue-AutoFinishInquiry")->error("错误:回写病情记录失败"); + return false; + } + + return true; + } } From db29e05f24f4dfc7284d703d48316174e3a81fd0 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Thu, 7 Dec 2023 14:03:28 +0800 Subject: [PATCH 42/87] =?UTF-8?q?=E4=BF=AE=E6=94=B9=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=A4=84=E6=96=B9=E5=B9=B3=E5=8F=B0=E5=95=86=E5=93=81=20?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=8D=AF=E5=BA=97=E7=BC=96=E7=A0=81=E8=AF=86?= =?UTF-8?q?=E5=88=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Command/getProductCommand.php | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/app/Command/getProductCommand.php b/app/Command/getProductCommand.php index e303f7c..aa4a64c 100644 --- a/app/Command/getProductCommand.php +++ b/app/Command/getProductCommand.php @@ -43,7 +43,7 @@ class getProductCommand extends HyperfCommand $page = 1; $page_size = 100; $result = $prescription->getProd(1, 100); - if (!empty($result['rows'])){ + if (!empty($result['rows'])) { foreach ($result['rows'] as $item) { // 执行入库 $this->handleData($item); @@ -55,7 +55,7 @@ class getProductCommand extends HyperfCommand for ($i = 2; $i < $count; $i++) { try { $result = $prescription->getProd($i, $page_size); - if (!isset($result['rows'])){ + if (!isset($result['rows'])) { continue; } @@ -63,7 +63,7 @@ class getProductCommand extends HyperfCommand // 执行入库 $this->handleData($item); } - }catch (\Exception $e){ + } catch (\Exception $e) { $this->line("部分商品更新失败:" . $e->getMessage()); } } @@ -109,6 +109,23 @@ class getProductCommand extends HyperfCommand return false; } + if (empty($item['thirdCode'])) { + Db::rollBack(); +// $this->line("商品更新失败,缺少药品价格" . json_encode($item, JSON_UNESCAPED_UNICODE)); + return false; + } + + $pharmacy_code = \Hyperf\Config\config("prescription_platform.pharmacy_code"); + if (empty($pharmacy_code)) { + $pharmacy_code = "JG-10009"; + } + + // 非药店编码 + if ($pharmacy_code != $item['thirdCode']) { + Db::rollBack(); + return false; + } + // 查询是否存在 $params = array(); $params['product_platform_code'] = $item['drugCode']; @@ -254,7 +271,7 @@ class getProductCommand extends HyperfCommand $data['product_platform_code'] = $item['drugCode']; // 第三方药店商品编码 - if (isset($item['thirdDrugCode'])){ + if (isset($item['thirdDrugCode'])) { $data['product_pharmacy_code'] = $item['thirdDrugCode']; } From c9c4ddc2efc687742acc37f2ce5e722924b0e45d Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Fri, 8 Dec 2023 13:10:03 +0800 Subject: [PATCH 43/87] =?UTF-8?q?=E6=8B=89=E5=8F=96=E5=95=86=E5=93=81?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Command/getProductCommand.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/Command/getProductCommand.php b/app/Command/getProductCommand.php index aa4a64c..0ba4527 100644 --- a/app/Command/getProductCommand.php +++ b/app/Command/getProductCommand.php @@ -126,6 +126,8 @@ class getProductCommand extends HyperfCommand return false; } + Log::getInstance("xiaomeiqiu")->info(json_encode($item,JSON_UNESCAPED_UNICODE)); + // 查询是否存在 $params = array(); $params['product_platform_code'] = $item['drugCode']; From be0acc304fe317847bd84f260c8e3a7cee57b28a Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Fri, 8 Dec 2023 14:24:22 +0800 Subject: [PATCH 44/87] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E6=89=93=E5=8D=B0?= =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Command/getProductCommand.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/Command/getProductCommand.php b/app/Command/getProductCommand.php index 0ba4527..aa4a64c 100644 --- a/app/Command/getProductCommand.php +++ b/app/Command/getProductCommand.php @@ -126,8 +126,6 @@ class getProductCommand extends HyperfCommand return false; } - Log::getInstance("xiaomeiqiu")->info(json_encode($item,JSON_UNESCAPED_UNICODE)); - // 查询是否存在 $params = array(); $params['product_platform_code'] = $item['drugCode']; From af9be7a12724f30de653bb92a273993c4161802e Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Fri, 8 Dec 2023 16:39:28 +0800 Subject: [PATCH 45/87] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8B=89=E5=8F=96?= =?UTF-8?q?=E5=95=86=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Command/getProductCommand.php | 64 ++++++++++++------------------- 1 file changed, 24 insertions(+), 40 deletions(-) diff --git a/app/Command/getProductCommand.php b/app/Command/getProductCommand.php index aa4a64c..9d61b2b 100644 --- a/app/Command/getProductCommand.php +++ b/app/Command/getProductCommand.php @@ -94,27 +94,29 @@ class getProductCommand extends HyperfCommand */ protected function handleData(array $item): bool { + if (empty($item['drugCode'])) { + return false; + } + + if (empty($item['drugPrice'])) { + return false; + } + + if (empty($item['thirdCode'])) { + return false; + } + + if (empty($item['thirdDrugCode'])) { + return false; + } + + if (empty($item['approvalNumber'])) { + return false; + } + try { Db::beginTransaction(); - if (empty($item['drugCode'])) { - Db::rollBack(); -// $this->line("商品更新失败,缺少平台药品编码" . json_encode($item, JSON_UNESCAPED_UNICODE)); - return false; - } - - if (empty($item['drugPrice'])) { - Db::rollBack(); -// $this->line("商品更新失败,缺少药品价格" . json_encode($item, JSON_UNESCAPED_UNICODE)); - return false; - } - - if (empty($item['thirdCode'])) { - Db::rollBack(); -// $this->line("商品更新失败,缺少药品价格" . json_encode($item, JSON_UNESCAPED_UNICODE)); - return false; - } - $pharmacy_code = \Hyperf\Config\config("prescription_platform.pharmacy_code"); if (empty($pharmacy_code)) { $pharmacy_code = "JG-10009"; @@ -129,6 +131,8 @@ class getProductCommand extends HyperfCommand // 查询是否存在 $params = array(); $params['product_platform_code'] = $item['drugCode']; + $params['product_pharmacy_code'] = $item['thirdDrugCode']; + $params['license_number'] = $item['approvalNumber']; $product_platform = ProductPlatform::getOne($params); if (!empty($product_platform)) { // 已存在,更新 @@ -173,14 +177,6 @@ class getProductCommand extends HyperfCommand } } - // 批准文号 - if (isset($item['approvalNumber'])) { - if ($product_platform['license_number'] != $item['approvalNumber']) { - $product_platform_data['license_number'] = $item['approvalNumber']; - $product_data['license_number'] = $item['approvalNumber']; - } - } - // 生产厂家 if (isset($item['manufacturer'])) { if ($product_platform['manufacturer'] != $item['manufacturer']) { @@ -197,14 +193,6 @@ class getProductCommand extends HyperfCommand } } - // 第三方药店商品编码 - if (isset($item['thirdDrugCode'])) { - if ($product_platform['product_pharmacy_code'] != $item['thirdDrugCode']) { - $product_platform_data['product_pharmacy_code'] = $item['thirdDrugCode']; - $product_data['product_pharmacy_code'] = $item['thirdDrugCode']; - } - } - // 基本包装数量 if (isset($item['basicPackingCount'])) { if ($product_platform['packaging_count'] != $item['basicPackingCount']) { @@ -271,9 +259,7 @@ class getProductCommand extends HyperfCommand $data['product_platform_code'] = $item['drugCode']; // 第三方药店商品编码 - if (isset($item['thirdDrugCode'])) { - $data['product_pharmacy_code'] = $item['thirdDrugCode']; - } + $data['product_pharmacy_code'] = $item['thirdDrugCode']; // 商品规格 if (isset($item['specifications'])) { @@ -281,9 +267,7 @@ class getProductCommand extends HyperfCommand } // 批准文号 - if (isset($item['approvalNumber'])) { - $data['license_number'] = $item['approvalNumber']; - } + $data['license_number'] = $item['approvalNumber']; // 生产厂家 if (isset($item['manufacturer'])) { From 847a77da57f8e93f5a52d725032ad3bda36ad20f Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Mon, 11 Dec 2023 10:18:44 +0800 Subject: [PATCH 46/87] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E6=88=91=E7=9A=84?= =?UTF-8?q?=E8=B4=A6=E6=88=B7=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Services/DoctorAccountService.php | 13 +++++++--- app/Services/InquiryService.php | 35 +++++++++++++++++++++++++-- app/Services/UserDoctorService.php | 28 ++++++++++----------- 3 files changed, 57 insertions(+), 19 deletions(-) diff --git a/app/Services/DoctorAccountService.php b/app/Services/DoctorAccountService.php index cb4221e..63e4f25 100644 --- a/app/Services/DoctorAccountService.php +++ b/app/Services/DoctorAccountService.php @@ -30,6 +30,13 @@ class DoctorAccountService extends BaseService $date = $this->request->input('date'); + // 今日接诊收入 + $inquiryService = new InquiryService(); + $doctor_today_inquiry_total = $inquiryService->getDoctorDayAmountTotal($user_info['client_user_id'],$date); + + // 今日已完成收入 + $doctor_day_completed_amount_total = $inquiryService->getDoctorDayCompletedAmountTotal($user_info['client_user_id'],$date); + // 获取医生账户余额 $balance_account = $this->getDoctorBalanceAccount($user_info['client_user_id']); @@ -76,9 +83,9 @@ class DoctorAccountService extends BaseService } $result = array(); - $result['balance_account'] = floor($balance_account * 100) / 100;; // 账户余额 - $result['amount_total_month'] = floor($amount_total_month * 100) / 100; // 月余额 - $result['withdrawal_amount_month'] = floor($withdrawal_amount_month * 100) / 100; // 月已提现金额 + $result['doctor_today_inquiry_total'] = bcmul($doctor_today_inquiry_total,1,2); // 今日接诊收入 + $result['doctor_day_completed_amount_total'] = bcmul($doctor_day_completed_amount_total ,1,2); // 今日已完成收入 + $result['balance_account'] = bcmul($balance_account ,1,2); // 账户余额 $result['bill'] = $bill; // 账单 return success($result); diff --git a/app/Services/InquiryService.php b/app/Services/InquiryService.php index 914e5f1..72e4f2e 100644 --- a/app/Services/InquiryService.php +++ b/app/Services/InquiryService.php @@ -1206,7 +1206,7 @@ class InquiryService extends BaseService /** * 获取医生当日接诊的订单金额 - * 状态:已接诊-已完成 + * 状态:已接诊 * @param string $doctor_id * @param string $date * @return float @@ -1228,7 +1228,38 @@ class InquiryService extends BaseService $reception_time = [$start_date, $end_date]; - $inquiry_status_params = [4, 5]; // 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消) + $inquiry_status_params = [4]; // 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消) + + $amount_total_sum = OrderInquiry::getOrderInquiryBetweenTimeAmountTotalSum($params, $reception_time, $inquiry_status_params); + + return $amount_total_sum ?: 0; + } + + /** + * 获取医生当日已完成未结束的订单金额 + * 状态:已完成 + * @param string $doctor_id + * @param string $date + * @return float + */ + public function getDoctorDayCompletedAmountTotal(string $doctor_id, string $date): float + { + // 获取当天开始时间 + $start_date = date('Y-m-d 00:00:00', strtotime($date)); + + // 获取当天结束时间 + $end_date = date('Y-m-d 23:59:59', strtotime($date)); + + // 获取医生当日接诊订单金额 + $params = array(); + $params['doctor_id'] = $doctor_id; + $params['inquiry_refund_status'] = 0; // 问诊订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭) + $params['inquiry_pay_status'] = 2; // 支付状态(1:未支付 2:已支付 3:支付中 4:支付失败 5:支付超时 6:支付关闭 7:已撤销 8:转入退款) + $params['is_withdrawal'] = 0; // 是否提现(0:否 1:是 2:提现中) + + $reception_time = [$start_date, $end_date]; + + $inquiry_status_params = [5]; // 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消) $amount_total_sum = OrderInquiry::getOrderInquiryBetweenTimeAmountTotalSum($params, $reception_time, $inquiry_status_params); diff --git a/app/Services/UserDoctorService.php b/app/Services/UserDoctorService.php index d732d70..0fe3404 100644 --- a/app/Services/UserDoctorService.php +++ b/app/Services/UserDoctorService.php @@ -592,22 +592,22 @@ class UserDoctorService extends BaseService $user_doctor = $user_doctor->toArray(); // 获取医生账户余额-未提现金额 - $DoctorAccountService = new DoctorAccountService(); - $balance_account = $DoctorAccountService->getDoctorBalanceAccount($user_info['client_user_id']); - if ($balance_account > 0) { - $balance_account = floor($balance_account * 100) / 100; - } - - // 获取医生当日接诊的订单金额 - $InquiryService = new InquiryService(); - $estimate_income = $InquiryService->getDoctorDayAmountTotal($user_info['client_user_id'], date('Y-m-d', time())); - if (!empty($estimate_income)) { - $estimate_income = floor($estimate_income * 0.75 * 100) / 100; - } +// $DoctorAccountService = new DoctorAccountService(); +// $balance_account = $DoctorAccountService->getDoctorBalanceAccount($user_info['client_user_id']); +// if ($balance_account > 0) { +// $balance_account = floor($balance_account * 100) / 100; +// } +// +// // 获取医生当日接诊的订单金额 +// $InquiryService = new InquiryService(); +// $estimate_income = $InquiryService->getDoctorDayAmountTotal($user_info['client_user_id'], date('Y-m-d', time())); +// if (!empty($estimate_income)) { +// $estimate_income = floor($estimate_income * 0.75 * 100) / 100; +// } $user_doctor['avatar'] = addAliyunOssWebsite($user_doctor['avatar']); - $user_doctor['balance_account'] = $balance_account; - $user_doctor['estimate_income'] = $estimate_income; +// $user_doctor['balance_account'] = $balance_account; +// $user_doctor['estimate_income'] = $estimate_income; $user_doctor['doctor_title'] = DoctorTitleCode::getMessage($user_doctor['doctor_title']); return success($user_doctor); From 649ef58f2d6bb0fff87162ffb250ec340fb758a7 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Mon, 11 Dec 2023 15:32:29 +0800 Subject: [PATCH 47/87] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E6=88=91=E7=9A=84?= =?UTF-8?q?=E8=B4=A6=E6=88=B7=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Controller/DoctorAccountController.php | 2 +- app/Model/DoctorAccountDay.php | 17 +++++ app/Model/OrderInquiry.php | 10 ++- app/Services/DoctorAccountService.php | 87 ++++++++++++---------- config/routes.php | 2 +- 5 files changed, 73 insertions(+), 45 deletions(-) diff --git a/app/Controller/DoctorAccountController.php b/app/Controller/DoctorAccountController.php index 425cc92..e4acb19 100644 --- a/app/Controller/DoctorAccountController.php +++ b/app/Controller/DoctorAccountController.php @@ -32,7 +32,7 @@ class DoctorAccountController extends AbstractController } /** - * 获取我的账户日账单明细数据 + * 获取我的账户月账单明细数据 * @return ResponseInterface * @throws ContainerExceptionInterface * @throws NotFoundExceptionInterface diff --git a/app/Model/DoctorAccountDay.php b/app/Model/DoctorAccountDay.php index c6e3902..39c0ad0 100644 --- a/app/Model/DoctorAccountDay.php +++ b/app/Model/DoctorAccountDay.php @@ -6,6 +6,9 @@ namespace App\Model; +use Hyperf\Database\Model\Builder; +use Hyperf\Database\Model\Collection; +use Hyperf\DbConnection\Db; use Hyperf\Snowflake\Concern\Snowflake; /** @@ -103,4 +106,18 @@ class DoctorAccountDay extends Model { return self::where($params)->decrement($field,$numeral); } + + /** + * 获取医生账户月份金额 + * @param array $params + * @param array $fields + * @return \Hyperf\Collection\Collection + */ + public static function getDoctorMonth(array $params,array $fields = ['*']): \Hyperf\Collection\Collection + { + return self::select(['month',Db::raw('SUM(total_amount) AS `total_amount`')]) + ->where($params) + ->groupBy(['month']) + ->get($fields); + } } diff --git a/app/Model/OrderInquiry.php b/app/Model/OrderInquiry.php index e611911..d2d1de1 100644 --- a/app/Model/OrderInquiry.php +++ b/app/Model/OrderInquiry.php @@ -178,17 +178,19 @@ class OrderInquiry extends Model * 获取医生某一时间段接诊订单分页数据 * 已结束 * @param array $params - * @param array $reception_time 接诊时间区间 ['2023-01-02','2023-01-03'] + * @param array $reception_time 接诊时间区间 ['2023-01','2023-01'] + * @param array $inquiry_status_params * @param array $fields * @param int|null $page * @param int|null $per_page * @return int|mixed|string */ - public static function getDoctorCreatedDateOrderInquiryPage(array $params, array $reception_time, array $fields = ["*"], int $page = null, ?int $per_page = 10): mixed + public static function getDoctorCreatedDateOrderInquiryPage(array $params, array $reception_time, array $inquiry_status_params,array $fields = ["*"], int $page = null, ?int $per_page = 10): mixed { $raw = self::where($params) - ->whereBetween('finish_time', $reception_time) - ->orderBy('finish_time') + ->whereIn('inquiry_status', $inquiry_status_params) + ->whereBetween('reception_time', $reception_time) + ->orderBy('reception_time') ->paginate($per_page, $fields, "page", $page); $data = array(); diff --git a/app/Services/DoctorAccountService.php b/app/Services/DoctorAccountService.php index 63e4f25..d8190df 100644 --- a/app/Services/DoctorAccountService.php +++ b/app/Services/DoctorAccountService.php @@ -28,7 +28,9 @@ class DoctorAccountService extends BaseService { $user_info = $this->request->getAttribute("userInfo") ?? []; - $date = $this->request->input('date'); + $year = $this->request->input('date'); + + $date = date('Y-m-d',time()); // 今日接诊收入 $inquiryService = new InquiryService(); @@ -40,43 +42,35 @@ class DoctorAccountService extends BaseService // 获取医生账户余额 $balance_account = $this->getDoctorBalanceAccount($user_info['client_user_id']); - // 获取医生月度余额 - $amount_total_month = $this->getDoctorMonthAmountTotal($user_info['client_user_id'], $date); +// // 获取医生月度余额 +// $amount_total_month = $this->getDoctorMonthAmountTotal($user_info['client_user_id'], $date); +// +// // 获取医生月度已提现金额-审核通过时间为准 +// $params = array(); +// $params['doctor_id'] = $user_info['client_user_id']; +// +// $start_time = date('Y-m-01',strtotime($date)); +// $end_time = date('Y-m-t 24:00:00',strtotime($date)); +// $created_at = [$start_time,$end_time]; +// $doctor_withdrawal = DoctorWithdrawal::getOneLatestTime($params,$created_at,['*']); +// if (empty($doctor_withdrawal)) { +// $withdrawal_amount_month = 0; +// } else { +// $withdrawal_amount_month = $doctor_withdrawal['actual_withdrawal_amount']; +// } - // 获取医生月度已提现金额-审核通过时间为准 - $params = array(); - $params['doctor_id'] = $user_info['client_user_id']; - - $start_time = date('Y-m-01',strtotime($date)); - $end_time = date('Y-m-t 24:00:00',strtotime($date)); - $created_at = [$start_time,$end_time]; - $doctor_withdrawal = DoctorWithdrawal::getOneLatestTime($params,$created_at,['*']); - if (empty($doctor_withdrawal)) { - $withdrawal_amount_month = 0; - } else { - $withdrawal_amount_month = $doctor_withdrawal['actual_withdrawal_amount']; - } - - // 获取医生每日账单数据 + // 获取医生每月账单数据 $bill = []; - $fields = [ - 'total_amount', - 'month', - 'day', - ]; - $params = array(); $params['doctor_id'] = $user_info['client_user_id']; - $params['year'] = date('Y', strtotime($date)); - $params['month'] = date('m', strtotime($date)); - $doctor_account_days = DoctorAccountDay::getList($params, $fields); + $params['year'] = $year; + $doctor_account_days = DoctorAccountDay::getDoctorMonth($params); if (!empty($doctor_account_days)) { foreach ($doctor_account_days as $doctor_account_day) { $data = array(); - $data['total_amount'] = floor($doctor_account_day['total_amount'] * 100) / 100; + $data['total_amount'] = bcmul($doctor_account_day['total_amount'],1,2); $data['month'] = $doctor_account_day['month']; - $data['day'] = $doctor_account_day['day']; $bill[] = $data; } unset($doctor_account_days); @@ -92,7 +86,7 @@ class DoctorAccountService extends BaseService } /** - * 获取我的账户日账单明细数据 + * 获取我的账户月账单明细数据 * @return array */ public function getDoctorAccountInfo(): array @@ -103,11 +97,12 @@ class DoctorAccountService extends BaseService $page = $this->request->input('page', 1); $per_page = $this->request->input('per_page', 10); - // 获取当天开始时间 - $start_date = date('Y-m-d 00:00:00', strtotime($date)); + // 获取当月开始时间 + $start_date = date('Y-m-01 00:00:00', strtotime($date)); - // 获取当天结束时间 - $end_date = date('Y-m-d 23:59:59', strtotime($date)); + // 获取当月结束时间 + // 获取给定月份的下一个月的第一天,然后减去一天得到当月的最后一天 + $end_date = date("Y-m-d 23:59:59", strtotime("+1 month", strtotime($start_date)) - 1); $reception_time = [$start_date, $end_date]; @@ -126,18 +121,32 @@ class DoctorAccountService extends BaseService 'patient_name', 'patient_sex', 'patient_age', + 'cancel_reason', + 'cancel_remarks', 'created_at', ]; $params = array(); $params['doctor_id'] = $user_info['client_user_id']; - $params['inquiry_status'] = 6; // inquiry_status:问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消) - $params['inquiry_refund_status'] = 0; // inquiry_refund_status:问诊订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭) - - $order_inquiry = OrderInquiry:: getDoctorCreatedDateOrderInquiryPage($params, $reception_time, $fields,$page,$per_page); + $inquiry_status_params = [4,5,6,7]; // 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消) + $order_inquiry = OrderInquiry:: getDoctorCreatedDateOrderInquiryPage($params, $reception_time, $inquiry_status_params,$fields,$page,$per_page); if (!empty($order_inquiry['data'])) { foreach ($order_inquiry['data'] as &$item) { - $item['estimate_income'] = floor($item['amount_total'] * 0.75 * 100) / 100; + $item['estimate_income'] = bcmul($item['amount_total'],0.75,2); + + // 入账状态 + if ($item['inquiry_status'] == 4 || $item['inquiry_status'] == 5){ + $item['entry_status'] = 1;// 入账中 + }elseif ($item['inquiry_status'] == 6){ + $item['entry_status'] = 2;// 入账成功 + }elseif ($item['inquiry_status'] == 7){ + $item['entry_status'] = 3;// 入账失败 + if (!empty($item['cancel_reason'])){ + $item['cancel_reason'] = inquiryCancelReasonToPushString($item['cancel_reason']); + } + }else{ + $item['entry_status'] = 0;// 未知 + } } } diff --git a/config/routes.php b/config/routes.php index d348470..e9a1eea 100644 --- a/config/routes.php +++ b/config/routes.php @@ -123,7 +123,7 @@ Router::addGroup('/doctor', function () { // 获取我的账户数据 Router::get('', [DoctorAccountController::class, 'getDoctorAccount']); - // 获取我的账户日账单明细数据 + // 获取我的账户月账单明细数据 Router::get('/info', [DoctorAccountController::class, 'getDoctorAccountInfo']); }); From 762b3f46133fbe0c9e4cd2cacd67a13014264f10 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Mon, 11 Dec 2023 15:56:09 +0800 Subject: [PATCH 48/87] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E6=88=91=E7=9A=84?= =?UTF-8?q?=E8=B4=A6=E6=88=B7=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Model/DoctorAccountDay.php | 1 + app/Services/DoctorAccountService.php | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/app/Model/DoctorAccountDay.php b/app/Model/DoctorAccountDay.php index 39c0ad0..9e406cf 100644 --- a/app/Model/DoctorAccountDay.php +++ b/app/Model/DoctorAccountDay.php @@ -118,6 +118,7 @@ class DoctorAccountDay extends Model return self::select(['month',Db::raw('SUM(total_amount) AS `total_amount`')]) ->where($params) ->groupBy(['month']) + ->orderBy('month') ->get($fields); } } diff --git a/app/Services/DoctorAccountService.php b/app/Services/DoctorAccountService.php index d8190df..4d63f7c 100644 --- a/app/Services/DoctorAccountService.php +++ b/app/Services/DoctorAccountService.php @@ -246,18 +246,19 @@ class DoctorAccountService extends BaseService } } - $amount_total = $amount_total * 0.75; + $amount_total = bcmul($amount_total,0.75,2); // 计算医生个人所得税 $income_tax = $this->computeIndividualIncomeTax($amount_total); - $withdrawal_amount = floor(($amount_total - $income_tax) * 100) / 100; + $withdrawal_amount = bcsub($amount_total,$income_tax,2); - $income_tax = floor($income_tax * 100) / 100; + $income_tax = bcmul($income_tax,1,2); $result = array(); $result['bank'] = $bank;//银行数据 + $result['amount_total'] = $amount_total; // 账户余额 $result['withdrawal_amount'] = $withdrawal_amount; // 提现金额 $result['income_tax'] = $income_tax; // 个人所得税 $result['order_inquiry_ids'] = $order_inquiry_id_array; // 订单合集 From ba1402b26bd5ba139813ecc4b36c2e9ae94b7818 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Tue, 12 Dec 2023 10:30:48 +0800 Subject: [PATCH 49/87] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E4=BC=98=E5=85=88=E5=9C=A8=E7=BA=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Request/PatientDoctorRequest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Request/PatientDoctorRequest.php b/app/Request/PatientDoctorRequest.php index b323fbb..8fc12fb 100644 --- a/app/Request/PatientDoctorRequest.php +++ b/app/Request/PatientDoctorRequest.php @@ -46,7 +46,7 @@ class PatientDoctorRequest extends FormRequest 'inquiry_type' => 'required|integer|min:1|max:4', 'inquiry_mode' => 'required|integer|min:1|max:5', 'my_doctor_type' => 'required|integer|min:1|max:2', - 'is_first_online' => 'integer|min:1|max:1', + 'is_first_online' => 'integer|min:0|max:1', ]; } From 8fe4f57f30697a566fb0861fc98307e93a5b2fee Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Tue, 12 Dec 2023 11:47:32 +0800 Subject: [PATCH 50/87] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=9B=91=E7=AE=A1?= =?UTF-8?q?=E5=B9=B3=E5=8F=B0=E4=B8=9A=E5=8A=A1=E6=96=87=E4=BB=B6=EF=BC=8C?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=90=9C=E7=B4=A2=E5=95=86=E5=93=81=20?= =?UTF-8?q?=E5=A4=84=E6=96=B9=E5=8F=AF=E5=BC=80=E5=85=B7=E6=95=B0=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Model/Product.php | 6 +++- app/Model/ReportRegulatory.php | 10 +++++++ app/Services/BasicDataService.php | 4 ++- app/Services/InquiryService.php | 7 ++--- app/Services/ReportRegulatoryService.php | 38 ++++++++++++++++++++++++ 5 files changed, 59 insertions(+), 6 deletions(-) create mode 100644 app/Services/ReportRegulatoryService.php diff --git a/app/Model/Product.php b/app/Model/Product.php index 7059df5..42dfb44 100644 --- a/app/Model/Product.php +++ b/app/Model/Product.php @@ -13,6 +13,9 @@ use Hyperf\Snowflake\Concern\Snowflake; /** * @property int $product_id 主键id * @property int $product_platform_id 处方平台商品id + * @property int $product_status 商品状态(1:正常 2:下架) + * @property int $is_delete 是否删除(0:否 1:是) + * @property int $prescription_num 处方可开具的数量 * @property string $product_name 商品名称 * @property string $common_name 商品通用名 * @property string $product_price 商品价格 @@ -32,6 +35,7 @@ use Hyperf\Snowflake\Concern\Snowflake; * @property string $product_remarks 商品备注 * @property \Carbon\Carbon $created_at 创建时间 * @property \Carbon\Carbon $updated_at 修改时间 + * @property-read ProductPlatformAmount|null $ProductPlatformAmount */ class Product extends Model { @@ -45,7 +49,7 @@ class Product extends Model /** * The attributes that are mass assignable. */ - protected array $fillable = ['product_id', 'product_platform_id', 'product_name', 'common_name', 'product_price', 'mnemonic_code', 'product_type', 'product_platform_code', 'product_pharmacy_code', 'product_cover_img', 'product_spec', 'license_number', 'manufacturer', 'single_unit', 'single_use', 'packaging_unit', 'frequency_use', 'available_days', 'product_remarks', 'created_at', 'updated_at']; + protected array $fillable = ['product_id', 'product_platform_id', 'product_status', 'is_delete', 'prescription_num', 'product_name', 'common_name', 'product_price', 'mnemonic_code', 'product_type', 'product_platform_code', 'product_pharmacy_code', 'product_cover_img', 'product_spec', 'license_number', 'manufacturer', 'single_unit', 'single_use', 'packaging_unit', 'frequency_use', 'available_days', 'product_remarks', 'created_at', 'updated_at']; protected string $primaryKey = "product_id"; diff --git a/app/Model/ReportRegulatory.php b/app/Model/ReportRegulatory.php index 32a051a..a56d33a 100644 --- a/app/Model/ReportRegulatory.php +++ b/app/Model/ReportRegulatory.php @@ -132,4 +132,14 @@ class ReportRegulatory extends Model }) ->get($fields); } + + /** + * 检测是否存在 + * @param array $params + * @return bool + */ + public static function getExists(array $params): bool + { + return self::where($params)->exists(); + } } diff --git a/app/Services/BasicDataService.php b/app/Services/BasicDataService.php index 06c4ce0..53fc67b 100644 --- a/app/Services/BasicDataService.php +++ b/app/Services/BasicDataService.php @@ -226,6 +226,7 @@ class BasicDataService extends BaseService $fields = [ 'product_id', 'product_platform_id', + 'prescription_num', 'product_name', 'product_price', 'product_cover_img', @@ -239,7 +240,8 @@ class BasicDataService extends BaseService ]; $params = array(); - + $params['product_status'] = 1; + $params['is_delete'] = 0; $product = Product::getSearchKeywordList($params, $product_keyword,$fields); if (empty($product)) { return success(); diff --git a/app/Services/InquiryService.php b/app/Services/InquiryService.php index 72e4f2e..16ef330 100644 --- a/app/Services/InquiryService.php +++ b/app/Services/InquiryService.php @@ -1091,7 +1091,6 @@ class InquiryService extends BaseService $message = new AutoFinishInquiryDelayDirectProducer($data); $message->setDelayMs(1000 * 60 * 60 * 24 * 3); -// $message->setDelayMs(1000 * 60 * 2); $producer = $this->container->get(Producer::class); $res = $producer->produce($message); if (!$res) { @@ -1101,7 +1100,7 @@ class InquiryService extends BaseService Db::commit(); } catch (\Exception $e) { Db::rollBack(); - Log::getInstance()->error("错误:" . $e->getMessage()); + Log::getInstance("InquiryService-putFinishInquiry")->error($e->getMessage()); return fail(HttpEnumCode::SERVER_ERROR, $e->getMessage()); } @@ -1120,8 +1119,8 @@ class InquiryService extends BaseService // 患者-发送通知消息-患者的问诊服务结束 $MessagePush = new MessagePush($order_inquiry['user_id'], $order_inquiry['order_inquiry_id']); $MessagePush->patientInquiryFinish(); - } catch (\Exception $e) { - return success([], HttpEnumCode::HTTP_SUCCESS, "消息发送失败"); + } catch (\Throwable $e) { + Log::getInstance("InquiryService-putFinishInquiry")->error($e->getMessage()); } return success(); diff --git a/app/Services/ReportRegulatoryService.php b/app/Services/ReportRegulatoryService.php new file mode 100644 index 0000000..b098b31 --- /dev/null +++ b/app/Services/ReportRegulatoryService.php @@ -0,0 +1,38 @@ + Date: Tue, 12 Dec 2023 13:13:02 +0800 Subject: [PATCH 51/87] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=95=86=E5=93=81?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Services/BasicDataService.php | 4 ++-- app/Services/UserDoctorService.php | 11 +++++++++++ app/Services/UserPatientService.php | 1 + 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/app/Services/BasicDataService.php b/app/Services/BasicDataService.php index 53fc67b..04d6b0f 100644 --- a/app/Services/BasicDataService.php +++ b/app/Services/BasicDataService.php @@ -447,8 +447,8 @@ class BasicDataService extends BaseService ]; $params = array(); - - + $params['product_status'] = 1; + $params['is_delete'] = 0; $product = Product::getWithAmountPage($params, $keyword,$fields, $page, $per_page); if (empty($product['data'])) { return success($product); diff --git a/app/Services/UserDoctorService.php b/app/Services/UserDoctorService.php index 0fe3404..d2934d7 100644 --- a/app/Services/UserDoctorService.php +++ b/app/Services/UserDoctorService.php @@ -1433,6 +1433,16 @@ class UserDoctorService extends BaseService return fail(HttpEnumCode::SERVER_ERROR,"商品错误"); } + if ($product['product_status'] == 2){ + Db::rollBack(); + return fail(HttpEnumCode::HTTP_ERROR,"药品" . $product['product_name'] . "已下架"); + } + + if ($product['is_delete'] == 1){ + Db::rollBack(); + return fail(HttpEnumCode::HTTP_ERROR,"药品" . $product['product_name'] . "已被删除,无法开具"); + } + // 获取商品库存 $params =array(); $params['product_platform_id'] = $product['product_platform_id']; @@ -1444,6 +1454,7 @@ class UserDoctorService extends BaseService } if ($product_platform_amount['stock'] <= 0){ + Db::rollBack(); return fail(HttpEnumCode::HTTP_ERROR,"商品库存不足"); } diff --git a/app/Services/UserPatientService.php b/app/Services/UserPatientService.php index 69b6e95..c0d9c5c 100644 --- a/app/Services/UserPatientService.php +++ b/app/Services/UserPatientService.php @@ -278,6 +278,7 @@ class UserPatientService extends BaseService if (empty($product)){ return fail(); } + // 获取商品库存 $params =array(); $params['product_platform_id'] = $product['product_platform_id']; From b6012b245c42f47a29c6c067ff521a210d192e16 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Tue, 12 Dec 2023 13:20:15 +0800 Subject: [PATCH 52/87] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=A4=84=E6=96=B9?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=99=90=E5=88=B6=E6=9C=80=E5=A4=A7=E5=8F=AF?= =?UTF-8?q?=E5=BC=80=E6=96=B9=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Services/UserDoctorService.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/Services/UserDoctorService.php b/app/Services/UserDoctorService.php index d2934d7..2367f48 100644 --- a/app/Services/UserDoctorService.php +++ b/app/Services/UserDoctorService.php @@ -1443,6 +1443,13 @@ class UserDoctorService extends BaseService return fail(HttpEnumCode::HTTP_ERROR,"药品" . $product['product_name'] . "已被删除,无法开具"); } + // 检测药品是否超出最大可开数 + if ($item['prescription_product_num'] > $product['prescription_num']) { + // 库存不足 + Db::rollBack(); + return fail(HttpEnumCode::HTTP_ERROR, "药品" . $product['product_name'] . "超出最大可开方数"); + } + // 获取商品库存 $params =array(); $params['product_platform_id'] = $product['product_platform_id']; @@ -1458,6 +1465,8 @@ class UserDoctorService extends BaseService return fail(HttpEnumCode::HTTP_ERROR,"商品库存不足"); } + + // 检测药品库存数据 if ($item['prescription_product_num'] > $product['ProductPlatformAmount']['stock']) { // 库存不足 From 001766143295cef44125e206397659867b44f3b8 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Tue, 12 Dec 2023 15:31:24 +0800 Subject: [PATCH 53/87] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E9=83=A8=E5=88=86?= =?UTF-8?q?=E9=98=9F=E5=88=97=E6=89=A7=E8=A1=8C=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...AutoCompleteInquiryDelayDirectConsumer.php | 34 +++++++++---------- .../AutoFinishInquiryDelayDirectConsumer.php | 1 + 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/app/Amqp/Consumer/AutoCompleteInquiryDelayDirectConsumer.php b/app/Amqp/Consumer/AutoCompleteInquiryDelayDirectConsumer.php index a2c7563..a7b2596 100644 --- a/app/Amqp/Consumer/AutoCompleteInquiryDelayDirectConsumer.php +++ b/app/Amqp/Consumer/AutoCompleteInquiryDelayDirectConsumer.php @@ -45,14 +45,14 @@ class AutoCompleteInquiryDelayDirectConsumer extends ConsumerMessage public function consumeMessage($data, AMQPMessage $message): string { - Log::getInstance()->error("开始执行 自动完成问诊订单 队列:" . json_encode($data, JSON_UNESCAPED_UNICODE)); + Log::getInstance("queue-AutoCompleteInquiry")->error(json_encode($data, JSON_UNESCAPED_UNICODE)); Db::beginTransaction(); try { // 检测入参参数 if (empty($data['order_inquiry_id'])) { Db::rollBack(); - Log::getInstance()->error("自动完成问诊订单队列执行失败:入参错误"); + Log::getInstance("queue-AutoCompleteInquiry")->error("参数错误"); return Result::DROP; } @@ -62,7 +62,7 @@ class AutoCompleteInquiryDelayDirectConsumer extends ConsumerMessage $order_inquiry = OrderInquiry::getOne($params); if (empty($order_inquiry)) { Db::rollBack(); - Log::getInstance()->error("自动完成问诊订单队列执行失败:问诊订单数据为空"); + Log::getInstance("queue-AutoCompleteInquiry")->error("问诊订单数据为空"); return Result::DROP; } @@ -72,23 +72,23 @@ class AutoCompleteInquiryDelayDirectConsumer extends ConsumerMessage if ($order_inquiry['inquiry_status'] != 4) { // 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消) Db::rollBack(); - Log::getInstance()->info("自动完成问诊订单队列执行结果:无需处理"); - return Result::DROP; + Log::getInstance("queue-AutoCompleteInquiry")->info("无需处理"); + return Result::ACK; } // 检测问诊订单退款状态 if (!in_array($order_inquiry['inquiry_refund_status'],[0,4,5])){ // 问诊订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭 6:退款异常) Db::rollBack(); - Log::getInstance()->info("自动完成问诊订单队列执行结果:订单退款中,无需处理"); - return Result::DROP; + Log::getInstance("queue-AutoCompleteInquiry")->info("订单退款中,无需处理"); + return Result::ACK; } // 订单支付状态 if ($order_inquiry['inquiry_pay_status'] != 2){ Db::rollBack(); - Log::getInstance()->info("自动完成问诊订单队列执行结果:订单未支付,无需处理"); - return Result::DROP; + Log::getInstance("queue-AutoCompleteInquiry")->info("订单未支付,无需处理"); + return Result::ACK; } // 新增患者历史问诊表 @@ -104,8 +104,8 @@ class AutoCompleteInquiryDelayDirectConsumer extends ConsumerMessage $patient_history_inquiry = PatientHistoryInquiry::addPatientHistoryInquiry($data); if (empty($patient_history_inquiry)){ Db::rollBack(); - Log::getInstance()->info("自动完成问诊订单队列执行结果:新增患者历史问诊表失败"); - return Result::DROP; + Log::getInstance("queue-AutoCompleteInquiry")->info("新增患者历史问诊表失败"); + return Result::REQUEUE; } // 获取医生数据 @@ -114,7 +114,7 @@ class AutoCompleteInquiryDelayDirectConsumer extends ConsumerMessage $user_doctor = UserDoctor::getOne($params); if(empty($user_doctor)){ Db::rollBack(); - Log::getInstance()->info("自动完成问诊订单队列执行结果:缺少医生数据"); + Log::getInstance("queue-AutoCompleteInquiry")->info("缺少医生数据"); return Result::DROP; } @@ -163,16 +163,16 @@ class AutoCompleteInquiryDelayDirectConsumer extends ConsumerMessage $res = $producer->produce($message); if (!$res) { Db::rollBack(); - Log::getInstance()->info("自动完成问诊订单队列执行结果:添加自动结束队列失败"); + Log::getInstance("queue-AutoCompleteInquiry")->error("添加自动结束队列失败"); return Result::DROP; } Db::commit(); - Log::getInstance()->info("自动完成问诊订单队列执行成功"); + Log::getInstance("queue-AutoCompleteInquiry")->info("执行成功"); } catch (\Exception $e) { Db::rollBack(); - Log::getInstance()->error("自动完成问诊订单执行失败:" . $e->getMessage()); + Log::getInstance("queue-AutoCompleteInquiry")->error($e->getMessage()); return Result::ACK; // 重回队列 } @@ -195,10 +195,8 @@ class AutoCompleteInquiryDelayDirectConsumer extends ConsumerMessage // 医生-发送站内消息-问诊结束 $MessagePush = new MessagePush($user_doctor['user_id'],$order_inquiry['order_inquiry_id']); $MessagePush->finishInquiryToDoctor(); - - }catch (\Throwable $e){ - Log::getInstance()->error("发送消息异常错误:" . $e->getMessage()); + Log::getInstance("queue-AutoCompleteInquiry")->error($e->getMessage()); return Result::ACK; } diff --git a/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php b/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php index 92e45de..22194c1 100644 --- a/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php +++ b/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php @@ -26,6 +26,7 @@ use Hyperf\Amqp\Result; use Hyperf\Amqp\Annotation\Consumer; use Hyperf\Amqp\Message\ConsumerMessage; use Hyperf\DbConnection\Db; +use Hyperf\Redis\Redis; use PhpAmqpLib\Message\AMQPMessage; use Psr\Container\ContainerExceptionInterface; use Psr\Container\NotFoundExceptionInterface; From 1c240fc0c8093933585102a5858c01e84bb8dea9 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Tue, 12 Dec 2023 17:49:26 +0800 Subject: [PATCH 54/87] 1 --- app/Services/PatientCaseService.php | 34 +++++++---------------------- 1 file changed, 8 insertions(+), 26 deletions(-) diff --git a/app/Services/PatientCaseService.php b/app/Services/PatientCaseService.php index 63589c7..f9eab53 100644 --- a/app/Services/PatientCaseService.php +++ b/app/Services/PatientCaseService.php @@ -16,6 +16,7 @@ use App\Model\PatientFamilyHealth; use App\Model\PatientFamilyPersonal; use App\Model\User; use App\Model\UserDoctor; +use App\Utils\Log; use Hyperf\DbConnection\Db; use Hyperf\Redis\Redis; @@ -297,6 +298,13 @@ class PatientCaseService extends BaseService $redis = $this->container->get(Redis::class); $redis_key = "patient_family_inquiry_case_unfilled_fields_" . $order_inquiry_id; $redis_value = $redis->get($redis_key); + + // 缓存 + if (!empty($redis_value)){ + dump($redis_value); + $redis_value = json_decode($redis_value,true); + } + }catch (\Throwable $e){ return fail(); } @@ -310,34 +318,8 @@ class PatientCaseService extends BaseService } } - -// if (!empty($patient_family)){ -// if (array_key_exists($field,$patient_family->toArray())){ -// if ($patient_family[$field] !== null){ -// continue; -// } -// } -// } -// -// if (!empty($patient_family_health)){ -// if (array_key_exists($field,$patient_family_health->toArray())){ -// if ($patient_family_health[$field] !== null){ -// continue; -// } -// } -// } -// -// if (!empty($patient_family_personal)){ -// if (array_key_exists($field,$patient_family_personal->toArray())){ -// if ($patient_family_personal[$field] !== null){ -// continue; -// } -// } -// } - // 缓存 if (!empty($redis_value)){ - $redis_value = json_decode($redis_value,true); if (array_key_exists($field,$redis_value)){ continue; } From 849e90d60762569fa11b06f964150f7713d9c7d3 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Wed, 13 Dec 2023 09:24:53 +0800 Subject: [PATCH 55/87] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=80=80=E5=87=BA?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Services/UserService.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Services/UserService.php b/app/Services/UserService.php index dfde661..6d0121b 100644 --- a/app/Services/UserService.php +++ b/app/Services/UserService.php @@ -1010,7 +1010,7 @@ class UserService extends BaseService Log::getInstance("UserService-userImLoginStatus")->info("用户已设上线"); } elseif ($msg_data['Info']['Action'] == "Disconnect"){ // 点右上角退出/断网(如手机开启飞行模式)/微信切后台/杀掉微信进程 - $time = strtotime($msg_data['RequestTime']) + 30*60; + $time = strtotime($msg_data['RequestTime']) + 2*60; $data = array(); $data['user_id'] = $user['user_id']; From b50568d9ca970effdcbed207e0fcf8753ee4073b Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Wed, 13 Dec 2023 09:32:17 +0800 Subject: [PATCH 56/87] 1 --- app/Amqp/Consumer/UserImOffDelayDirectConsumer.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/Amqp/Consumer/UserImOffDelayDirectConsumer.php b/app/Amqp/Consumer/UserImOffDelayDirectConsumer.php index d5be216..d0190b1 100644 --- a/app/Amqp/Consumer/UserImOffDelayDirectConsumer.php +++ b/app/Amqp/Consumer/UserImOffDelayDirectConsumer.php @@ -61,7 +61,8 @@ class UserImOffDelayDirectConsumer extends ConsumerMessage $im_login_at = strtotime($user['im_login_at']); $diff_time = time() - $im_login_at; - if ($diff_time <= (30 * 60 + 10)){ +// if ($diff_time <= (30 * 60 + 10)){ + if ($diff_time <= (2 * 60 + 10)){ Log::getInstance("queue-UserImOff")->info("用户刚上线未满30分钟,无需处理"); return Result::ACK; } From e62a22e95178577042ca690a9e3c80569f1dfea7 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Wed, 13 Dec 2023 09:57:58 +0800 Subject: [PATCH 57/87] 2 --- app/Services/UserService.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/Services/UserService.php b/app/Services/UserService.php index 6d0121b..2104c11 100644 --- a/app/Services/UserService.php +++ b/app/Services/UserService.php @@ -1010,7 +1010,10 @@ class UserService extends BaseService Log::getInstance("UserService-userImLoginStatus")->info("用户已设上线"); } elseif ($msg_data['Info']['Action'] == "Disconnect"){ // 点右上角退出/断网(如手机开启飞行模式)/微信切后台/杀掉微信进程 - $time = strtotime($msg_data['RequestTime']) + 2*60; + $time = time() - $msg_data['RequestTime'] + 2*60; + if ($time <= 0){ + $time = 2 * 60; + } $data = array(); $data['user_id'] = $user['user_id']; From f697ce77b1ea94586315973aee781d3fabc9a4a9 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Wed, 13 Dec 2023 09:58:46 +0800 Subject: [PATCH 58/87] 3 --- app/Amqp/Consumer/UserImOffDelayDirectConsumer.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Amqp/Consumer/UserImOffDelayDirectConsumer.php b/app/Amqp/Consumer/UserImOffDelayDirectConsumer.php index d0190b1..0d7e309 100644 --- a/app/Amqp/Consumer/UserImOffDelayDirectConsumer.php +++ b/app/Amqp/Consumer/UserImOffDelayDirectConsumer.php @@ -62,7 +62,7 @@ class UserImOffDelayDirectConsumer extends ConsumerMessage $diff_time = time() - $im_login_at; // if ($diff_time <= (30 * 60 + 10)){ - if ($diff_time <= (2 * 60 + 10)){ + if ($diff_time <= (2 * 50)){ Log::getInstance("queue-UserImOff")->info("用户刚上线未满30分钟,无需处理"); return Result::ACK; } From 2ce4aafb0149a0dea2858439fd695a67bb5e6fb8 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Wed, 13 Dec 2023 17:08:36 +0800 Subject: [PATCH 59/87] =?UTF-8?q?=E5=88=A0=E9=99=A4=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=BC=80=E6=96=B9=E6=97=B6=E5=A2=9E=E5=8A=A0=E4=B8=8A=E6=8A=A5?= =?UTF-8?q?=E5=A4=84=E6=96=B9=E6=95=B0=E6=8D=AE=E3=80=82=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E7=BB=93=E6=9D=9F=E6=97=B6=E4=B8=8A=E6=8A=A5?= =?UTF-8?q?=E5=A4=84=E6=96=B9=E6=95=B0=E6=8D=AE=EF=BC=8C=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E4=B8=8A=E6=8A=A5=E5=A4=84=E6=96=B9=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AutoFinishInquiryDelayDirectConsumer.php | 154 +++- ...oPharmacistCaVerifyDelayDirectConsumer.php | 35 - app/Command/ReportRegulatoryCommand.php | 795 +++++++++--------- app/Model/ReportRegulatory.php | 60 +- app/Services/ReportRegulatoryService.php | 37 +- .../RegulatoryPlatform/regulatoryPlatform.php | 8 +- 6 files changed, 557 insertions(+), 532 deletions(-) diff --git a/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php b/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php index 22194c1..b7763bb 100644 --- a/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php +++ b/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php @@ -4,6 +4,8 @@ declare(strict_types=1); namespace App\Amqp\Consumer; +use App\Amqp\Producer\AutoFinishInquiryDelayDirectProducer; +use App\Constants\HttpEnumCode; use App\Model\DoctorAccount; use App\Model\DoctorAccountDay; use App\Model\OrderEvaluation; @@ -17,11 +19,13 @@ use App\Model\UserDoctor; use App\Model\UserPatient; use App\Services\ImService; use App\Services\MessagePush; +use App\Services\ReportRegulatoryService; use App\Utils\Log; use App\Utils\Mask; use Hyperf\Amqp\Message\ConsumerDelayedMessageTrait; use Hyperf\Amqp\Message\ProducerDelayedMessageTrait; use Hyperf\Amqp\Message\Type; +use Hyperf\Amqp\Producer; use Hyperf\Amqp\Result; use Hyperf\Amqp\Annotation\Consumer; use Hyperf\Amqp\Message\ConsumerMessage; @@ -54,45 +58,55 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage { Log::getInstance("queue-AutoFinishInquiry")->info("开始:" . json_encode($data, JSON_UNESCAPED_UNICODE)); + // 检测入参参数 + if (empty($data['order_inquiry_id'])) { + Log::getInstance("queue-AutoFinishInquiry")->error("错误:入参错误"); + return Result::DROP; + } + + // 获取问诊订单数据 + $params = array(); + $params['order_inquiry_id'] = $data['order_inquiry_id']; + $order_inquiry = OrderInquiry::getOne($params); + if (empty($order_inquiry)) { + Log::getInstance("queue-AutoFinishInquiry")->error("问诊订单数据为空"); + return Result::DROP; + } + + $order_inquiry = $order_inquiry->toArray(); + + // 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消) + if ($order_inquiry['inquiry_status'] != 5) { + Log::getInstance("queue-AutoFinishInquiry")->error("问诊订单未完成,无法结束"); + return Result::DROP; + } + + // 问诊订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭 6:退款异常) + if (!in_array($order_inquiry['inquiry_refund_status'], [0, 4, 5])) { + Log::getInstance("queue-AutoFinishInquiry")->error("问诊订单正在申请退款"); + return Result::DROP; + } + + if (empty($order_inquiry['doctor_id'])) { + Log::getInstance("queue-AutoFinishInquiry")->error("医生id为空"); + return Result::DROP; + } + + Db::beginTransaction(); try { - // 检测入参参数 - if (empty($data['order_inquiry_id'])) { + // 检测执行次数 + $result = $this->checkExecutionCount($data['order_inquiry_id']); + if (empty($result)) { Db::rollBack(); - Log::getInstance("queue-AutoFinishInquiry")->error("错误:入参错误"); - return Result::DROP; + Log::getInstance("queue-AutoFinishInquiry")->error("检测订单执行次数错误"); + return Result::ACK; } - // 获取问诊订单数据 - $params = array(); - $params['order_inquiry_id'] = $data['order_inquiry_id']; - $order_inquiry = OrderInquiry::getOne($params); - if (empty($order_inquiry)) { + // 超出执行次数 + if ($result['code'] == 2){ Db::rollBack(); - Log::getInstance("queue-AutoFinishInquiry")->error("错误:问诊订单数据为空"); - return Result::DROP; - } - - $order_inquiry = $order_inquiry->toArray(); - - // 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消) - if ($order_inquiry['inquiry_status'] != 5) { - Db::rollBack(); - Log::getInstance("queue-AutoFinishInquiry")->error("错误:问诊订单未完成,无法结束"); - return Result::DROP; - } - - // 问诊订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭 6:退款异常) - if (!in_array($order_inquiry['inquiry_refund_status'], [0, 4, 5])) { - Db::rollBack(); - Log::getInstance("queue-AutoFinishInquiry")->error("错误:问诊订单正在申请退款"); - return Result::DROP; - } - - if (empty($order_inquiry['doctor_id'])) { - Db::rollBack(); - Log::getInstance("queue-AutoFinishInquiry")->error("错误:医生id为空"); - return Result::DROP; + return Result::ACK; } // 处理统计问题 @@ -101,16 +115,16 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage $res = $this->handleDoctorAccount($order_inquiry); if (!$res) { Db::rollBack(); - Log::getInstance("queue-AutoFinishInquiry")->error("错误:处理医生账户总表失败"); - return Result::DROP; + Log::getInstance("queue-AutoFinishInquiry")->error("处理医生账户总表失败"); + return Result::REQUEUE; } // 处理医生账户表-日 $res = $this->handleDoctorAccountDay($order_inquiry); if (!$res) { Db::rollBack(); - Log::getInstance("queue-AutoFinishInquiry")->error("错误:处理医生账户表-日失败"); - return Result::DROP; + Log::getInstance("queue-AutoFinishInquiry")->error("处理医生账户表-日失败"); + return Result::REQUEUE; } } @@ -135,12 +149,22 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage // 计算医生平均响应时间 $this->computeDoctorAvgPesponseTime($order_inquiry['doctor_id']); + // 新增上报监管平台数据 + $reportRegulatoryService = new ReportRegulatoryService(); + $res = $reportRegulatoryService->addReportRegulatory($order_inquiry['order_inquiry_id']); + if (!$res){ + // 新增上报失败 + Db::rollBack(); + Log::getInstance("queue-AutoFinishInquiry")->error("新增上报监管平台数据失败"); + return Result::REQUEUE; + } + Db::commit(); Log::getInstance("queue-AutoFinishInquiry")->info("成功"); } catch (\Exception $e) { Db::rollBack(); Log::getInstance("queue-AutoFinishInquiry")->error("错误:" . $e->getMessage()); - return Result::ACK; // 重回队列 + return Result::REQUEUE; // 重回队列 } // 推送消息 @@ -259,11 +283,6 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage return true; } - // 获取用户数据 - $params = array(); - $params['patient_id'] = $order_inquiry['patient_id']; - $user_patient = UserPatient::getOne($params); - // 未评价 $data = array(); $data['doctor_id'] = $order_inquiry['doctor_id']; @@ -600,4 +619,53 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage return true; } + + /** + * 检测执行次数 + * @param string $redis_key + * @return array + */ + protected function checkExecutionCount(string $redis_key): array + { + // code:0:异常 1:正常 2:超出最大执行次数 + $result = array(); + $result['code'] = 0; + $result['message'] = ""; + + try { + $redis = $this->container->get(Redis::class); + }catch (\Throwable $e) { + Log::getInstance("queue-AutoFinishInquiry")->error($e->getMessage()); + $result['message'] = $e->getMessage(); + return $result; + } + + try { + $redis_value = $redis->get($redis_key); + if (empty($redis_value)) { + $redis->set($redis_key, 1, 60 * 60 * 24 * 1); + + $result['code'] = 1; + return $result; + } + + // 执行次数超出4次 + if ($redis_value > 4) { + Log::getInstance("queue-AutoFinishInquiry")->info("超出最大执行次数"); + // 加入短信队列,通知管理员 + + $result['code'] = 2; + $result['message'] = "超出最大执行次数"; + return $result; + } + + $redis->incr($redis_key); + } catch (\Throwable $e) { + Log::getInstance("queue-AutoFinishInquiry")->error($e->getMessage()); + $result['message'] = $e->getMessage(); + return $result; + } + + return $result; + } } diff --git a/app/Amqp/Consumer/AutoPharmacistCaVerifyDelayDirectConsumer.php b/app/Amqp/Consumer/AutoPharmacistCaVerifyDelayDirectConsumer.php index e1ff22a..60ee84e 100644 --- a/app/Amqp/Consumer/AutoPharmacistCaVerifyDelayDirectConsumer.php +++ b/app/Amqp/Consumer/AutoPharmacistCaVerifyDelayDirectConsumer.php @@ -257,14 +257,6 @@ class AutoPharmacistCaVerifyDelayDirectConsumer extends ConsumerMessage // 修改处方表为通过 $this->modifyOrderPrescription($data['order_prescription_id'],1); - // 增加上报监管平台表 - $res = $this->addReportRegulatory($order_inquiry['order_inquiry_id'],$order_prescription['order_prescription_id']); - if (!$res){ - Db::rollBack(); - Log::getInstance("queue-AutoPharmacistCaVerify")->error("错误:增加监管平台上报表失败"); - return Result::REQUEUE; - } - Db::commit(); Log::getInstance("queue-AutoPharmacistCaVerify")->info("成功"); } catch (\Throwable $e) { @@ -479,31 +471,4 @@ class AutoPharmacistCaVerifyDelayDirectConsumer extends ConsumerMessage OrderPrescription::edit($params,$data); } - - /** - * 增加上报监管平台表 - * @param string $order_inquiry_id - * @param string $order_prescription_id - * @return bool - */ - protected function addReportRegulatory(string $order_inquiry_id,string $order_prescription_id): bool - { - // 检测是否已添加 - $params = array(); - $params['order_inquiry_id'] = $order_inquiry_id; - $report_regulatory = ReportRegulatory::getOne($params); - if (!empty($report_regulatory)) { - return true; - } - - $data = array(); - $data['order_inquiry_id'] = $order_inquiry_id; - $data['order_prescription_id'] = $order_prescription_id; - $report_regulatory = ReportRegulatory::addReportRegulatory($data); - if (empty($report_regulatory)){ - return false; - } - - return true; - } } diff --git a/app/Command/ReportRegulatoryCommand.php b/app/Command/ReportRegulatoryCommand.php index 0cbf353..371b85c 100644 --- a/app/Command/ReportRegulatoryCommand.php +++ b/app/Command/ReportRegulatoryCommand.php @@ -54,44 +54,142 @@ class ReportRegulatoryCommand extends HyperfCommand } foreach ($report_regulatorys as $report_regulatory){ - // 获取处方数据 - $params = array(); - $params['order_prescription_id'] = $report_regulatory['order_prescription_id']; - $order_prescription = OrderPrescription::getOne($params); - if (empty($order_prescription)){ - // 无处方数据,不处理 - continue; - } - - // 获取问诊订单数据 - $params = array(); - $params['order_inquiry_id'] = $order_prescription['order_inquiry_id']; - $order_inquiry = OrderInquiry::getOne($params); - if (empty($order_inquiry)) { - // 无处方数据,不处理 - continue; - } - - $order_inquiry = $order_inquiry->toArray(); - - $res = $this->checkInquiryOrder($order_inquiry); - if (!$res) { - // 问诊订单数据不符合条件,不执行 - continue; - } - $this->line("开始:" . $report_regulatory['report_regulatory_id']); - // 上报问诊 - if ($report_regulatory['report_inquiry_status'] != 1){ - $this->line("信息:上报问诊"); - $this->reportRegulatoryInquiry($report_regulatory,$order_inquiry,$order_prescription); + try { + // 获取问诊订单数据 + $params = array(); + $params['order_inquiry_id'] = $report_regulatory['order_inquiry_id']; + $order_inquiry = OrderInquiry::getOne($params); + if (empty($order_inquiry)) { + // 问诊订单数据错误 + $this->line("问诊订单数据错误"); + continue; + } + + $order_inquiry = $order_inquiry->toArray(); + + // 检测问诊订单 + $res = $this->checkInquiryOrder($order_inquiry); + if (!$res) { + continue; + } + }catch (\Throwable $e){ + $this->line($e->getMessage()); + continue; + } + + // 上报网络咨询 + try { + if ($report_regulatory['report_consult_status'] != 1 && $report_regulatory['report_consult_int'] < 5){ + $this->line("上报网络咨询"); + + // 获取上报数据-网络咨询 + $consult_data = $this->getConsultData($order_inquiry); + + // 上报网络咨询 + $regulatoryPlatform = new regulatoryPlatform(); + $result = $regulatoryPlatform->uploadConsult([$consult_data]); + + $this->line("上报网络咨询成功" . json_encode($result,JSON_UNESCAPED_UNICODE)); + + // 修改上报状态-网络咨询 + $res = $this->modifyReportConsultStatus($report_regulatory, 1); + if (!$res) { + // 记录失败 + $this->line("上报成功,存储记录失败"); + } + } + }catch (\Throwable $e){ + $this->line("上报网络咨询失败" . $e->getMessage()); + + // 上报失败 + $res = $this->modifyReportConsultStatus($report_regulatory, 2, $e->getMessage()); + if (!$res) { + // 记录失败 + $this->line("上报网络咨询失败,存储记录失败"); + } + } + + + // 上报复诊 + try { + if ($report_regulatory['is_further_consult'] == 1){ + if ($report_regulatory['report_further_consult_status'] != 1 && $report_regulatory['report_further_consult_int'] < 5) { + $this->line("上报复诊"); + + // 获取处方数据 + $params = array(); + $params['order_prescription_id'] = $report_regulatory['order_prescription_id']; + $order_prescription = OrderPrescription::getOne($params); + if (empty($order_prescription)){ + $this->line("需上报复诊,但无处方数据"); + }else{ + // 获取上报数据-复诊 + $further_consult_data = $this->getFurtherConsultData($order_inquiry,$order_prescription); + + // 上报复诊 + $regulatoryPlatform = new regulatoryPlatform(); + $result = $regulatoryPlatform->uploadFurtherConsult([$further_consult_data]); + $this->line("上报复诊成功" . json_encode($result,JSON_UNESCAPED_UNICODE)); + + // 修改上报状态-复诊 + $res = $this->modifyReportFurtherConsultStatus($report_regulatory, 1); + if (!$res) { + // 记录失败 + $this->line("上报成功,存储记录失败"); + } + } + } + } + }catch (\Throwable $e){ + $this->line("上报复诊失败" . $e->getMessage()); + + // 上报失败 + $res = $this->modifyReportFurtherConsultStatus($report_regulatory, 2, $e->getMessage()); + if (!$res) { + // 记录失败 + $this->line("上报复诊失败,存储记录失败"); + } } // 上报处方 - if ($report_regulatory['report_prescription_status'] != 1){ - $this->line("信息:上报处方"); - $this->reportRegulatoryPrescription($report_regulatory,$order_inquiry,$order_prescription); + try { + $this->line("上报处方"); + + // 获取处方数据 + $params = array(); + $params['order_prescription_id'] = $report_regulatory['order_prescription_id']; + $order_prescription = OrderPrescription::getOne($params); + if (empty($order_prescription)){ + $this->line("需上报复诊,但无处方数据"); + }else{ + // 获取上报数据-处方 + $report_prescription_data = $this->getReportPrescriptionData($order_inquiry, $order_prescription); + + // 上报处方 + $regulatoryPlatform = new regulatoryPlatform(); + $result = $regulatoryPlatform->uploadRecipe([$report_prescription_data]); + + $this->line("上报处方成功" . json_encode($result,JSON_UNESCAPED_UNICODE)); + + // 上报成功 + $res = $this->modifyReportRegulatoryPrescription($report_regulatory, 1); + if (!$res) { + // 记录失败 + $this->line("上报处方失败,存储记录失败"); + } + } + }catch (\Throwable $e){ + $this->line("上报处方失败" . $e->getMessage()); + + // 上报失败 + $res = $this->modifyReportRegulatoryPrescription($report_regulatory, 2, $e->getMessage()); + if (!$res) { + // 记录失败 + $this->line("上报复诊失败,存储记录失败"); + return ; + } } $this->line("结束:" . $report_regulatory['report_regulatory_id']); @@ -106,11 +204,7 @@ class ReportRegulatoryCommand extends HyperfCommand */ private function getNotReportRegulatory(): array { - $params = array(); - $params[] = ['report_inquiry_int','<',5]; - $params[] = ['report_prescription_int','<',5]; - - $report_regulatory = ReportRegulatory::getNotReportList($params,['*']); + $report_regulatory = ReportRegulatory::getNotReportList(); if (empty($report_regulatory)){ return []; }else{ @@ -119,48 +213,13 @@ class ReportRegulatoryCommand extends HyperfCommand } /** - * 检测执行次数 - * @param string $key - * @return bool - * @throws ContainerExceptionInterface - * @throws NotFoundExceptionInterface - */ - protected function checkHandleNumber(string $key): bool - { - try { - $redis = $this->container->get(Redis::class); - - $redis_key = "ReportRegulatoryInquiry" . $key; - $redis_value = $redis->get($redis_key); - if (empty($redis_value)) { - $redis->set($redis_key, 1, 60 * 60 * 24 * 10); - return true; - } - - // 执行次数过多 - if ($redis_value > 5) { - // 加入短信队列,通知管理员 - - return false; - } - - $redis->incr($redis_key); - } catch (\Exception $e) { - return false; - } - - return true; - } - - /** - * 修改上报问诊数据 + * 修改上报状态-网络咨询 * @param array|object $report_regulatory - * @param int $report_inquiry_status 问诊上报状态(0:未上报 1:已上报 2:上报失败) - * @param int $report_inquiry_type 问诊上报类型(1:网络初诊 2:网络复诊) - * @param string $report_inquiry_fail_reason 问诊上报失败原因 + * @param int $report_consult_status 上报网络咨询状态(0:未上报 1:已上报 2:上报失败) + * @param string $report_consult_fail_reason 网络咨询上报失败原因 * @return bool */ - private function modifyReportRegulatoryInquiry(array|object $report_regulatory, int $report_inquiry_status, int $report_inquiry_type, string $report_inquiry_fail_reason = ""): bool + private function modifyReportConsultStatus(array|object $report_regulatory, int $report_consult_status,string $report_consult_fail_reason = ""): bool { try { // 修改 @@ -168,14 +227,41 @@ class ReportRegulatoryCommand extends HyperfCommand $params['report_regulatory_id'] = $report_regulatory['report_regulatory_id']; $data = array(); - $data['report_inquiry_status'] = $report_inquiry_status; - $data['report_inquiry_int'] = $report_regulatory['report_inquiry_int'] + 1; - $data['report_inquiry_type'] = $report_inquiry_type; - $data['report_inquiry_time'] = date('Y-m-d H:i:s', time()); - $data['report_inquiry_fail_reason'] = $report_inquiry_fail_reason; + $data['report_consult_status'] = $report_consult_status; + $data['report_consult_int'] = $report_regulatory['report_consult_int'] + 1; + $data['report_consult_time'] = date('Y-m-d H:i:s', time()); + $data['report_consult_fail_reason'] = $report_consult_fail_reason; ReportRegulatory::edit($params, $data); } catch (\Exception $e) { - $this->line("失败:" . $e->getMessage()); + $this->line($e->getMessage()); + return false; + } + + return true; + } + + /** + * 修改上报状态-复诊 + * @param array|object $report_regulatory + * @param int $report_further_consult_status 上报网络复诊状态(0:未上报 1:已上报 2:上报失败) + * @param string $report_further_consult_fail_reason 网络复诊上报失败原因 + * @return bool + */ + private function modifyReportFurtherConsultStatus(array|object $report_regulatory, int $report_further_consult_status,string $report_further_consult_fail_reason = ""): bool + { + try { + // 修改 + $params = array(); + $params['report_regulatory_id'] = $report_regulatory['report_regulatory_id']; + + $data = array(); + $data['report_further_consult_status'] = $report_further_consult_status; + $data['report_further_consult_int'] = $report_regulatory['report_further_consult_int'] + 1; + $data['report_further_consult_time'] = date('Y-m-d H:i:s', time()); + $data['report_further_consult_fail_reason'] = $report_further_consult_fail_reason; + ReportRegulatory::edit($params, $data); + } catch (\Exception $e) { + $this->line($e->getMessage()); return false; } @@ -228,7 +314,7 @@ class ReportRegulatoryCommand extends HyperfCommand // 已取消状态,查看是否完成后取消的 if ($order_inquiry['inquiry_status'] == 7 && $order_inquiry['cancel_reason'] != 4 && empty($order_inquiry['complete_time'])) { - $this->line("信息:订单为取消的未完成订单,不执行"); + $this->line("信息:订单未取消的未完成订单,不执行"); return false; } @@ -236,291 +322,7 @@ class ReportRegulatoryCommand extends HyperfCommand } /** - * 检测患者是否首次问诊-是否开具过处方 - * @param string $patient_id - * @param string $order_prescription_id - * @return bool true:首次 false:复诊 - */ - private function checkPatientFirstInquiry(string $patient_id, string $order_prescription_id): bool - { - $params = array(); - $params['patient_id'] = $patient_id; - $params['pharmacist_audit_status'] = 1; - - $prescription_status_params = [2, 3, 4]; - $order_prescriptions = OrderPrescription::getStatusList($params, $prescription_status_params); - if (empty($order_prescriptions)) { - return true; - } - - foreach ($order_prescriptions as $item) { - if ($item['order_prescription_id'] == $order_prescription_id) { - continue; - } - - // 开具过处方 - return false; - } - - return true; - } - - /** - * 获取上报监管数据-问诊 - * @param array|object $order_inquiry - * @param array|object $order_prescription - * @param bool $is_first 是否首次问诊 true:是 1:否 - * @return bool|array - */ - private function getReportInquiryData(array|object $order_inquiry, array|object $order_prescription, bool $is_first = true): bool|array - { - // 获取医生数据 - $params = array(); - $params['doctor_id'] = $order_inquiry['doctor_id']; - $user_doctor = UserDoctor::getOne($params); - if (empty($user_doctor)) { - $this->line("错误:医生数据错误"); - return false; - } - - $params = array(); - $params['doctor_id'] = $order_inquiry['doctor_id']; - $user_doctor_info = UserDoctorInfo::getOne($params); - if (empty($user_doctor_info)) { - $this->line("错误:医生详情数据错误"); - return false; - } - - // 获取医生自定义科室数据 - $params = array(); - $params['department_custom_id'] = $user_doctor['department_custom_id']; - $hospital_department_custom = HospitalDepartmentCustom::getOne($params); - if (empty($hospital_department_custom)) { - $this->line("错误:医生自定义数据错误"); - return false; - } - - // 获取问诊患者数据 - $params = array(); - $params['family_id'] = $order_inquiry['family_id']; - $patient_family = PatientFamily::getOne($params); - if (empty($patient_family)) { - $this->line("错误:问诊患者数据错误"); - return false; - } - - // 获取患者问诊病例 - $params = array(); - $params['order_inquiry_id'] = $order_inquiry['order_inquiry_id']; - $params['status'] = 1; - $order_inquiry_case = OrderInquiryCase::getOne($params); - if (empty($order_inquiry_case)) { - $this->line("错误:患者问诊病例错误"); - return false; - } - - if ($is_first) { - $this->line("信息:患者首次问诊"); - // 初诊 - // 网络咨询(网络门诊)服务 - $data = array(); - $data['thirdUniqueid'] = $order_inquiry['order_inquiry_id']; // 唯一标识 - $data['orgName'] = "成都金牛欣欣相照互联网医院"; // 机构名称 - $data['orgCode'] = "MA6CGUDA251010619D2112"; // 机构编码 - $data['channelName'] = "成都金牛欣欣相照互联网医院";//平台名称 - $data['section'] = $hospital_department_custom['department_name'];//科室名称 - $data['sectionCode'] = $hospital_department_custom['department_code'];//科室编码 - $data['docName'] = $user_doctor['user_name'];// 姓名(医师、护师、技师) - $data['certificateNum'] = $user_doctor_info['qualification_cert_num']; // 执业资格证号 - $data['patientName'] = $order_inquiry['patient_name']; // 患者姓名 - $data['patientAge'] = (int)$order_inquiry['patient_age']; // 患者年龄 - $data['patientSex'] = $order_inquiry['patient_sex'] == 0 ?: 1; // 患者性别 - $data['patientIdcardType'] = 1; // 证件类型 - $data['patientIdcardNum'] = $patient_family['id_number']; // 患者证件号码 - $data['serviceType'] = 1; // 服务类型 1网络咨询 2网络门诊 - $data['consultNo'] = $order_inquiry['inquiry_no']; // 网络咨询或网络门诊编号 订单编号 - $data['consultType'] = 1; // 咨询类别 1、图文咨询 2语音咨询3、视频咨询 - $data['consultApplyTime'] = date('Y-m-d H:i:s',strtotime($order_inquiry['created_at'])); // 咨询申请时间 - $data['consultStartTime'] = date('Y-m-d H:i:s',strtotime($order_inquiry['reception_time'])); // 咨询开始时间 - $data['consultEndTime'] = date('Y-m-d H:i:s',strtotime($order_inquiry['complete_time'])); // 咨询结束时间 - $data['feeType'] = 1; // 费别 1自费 2医保 - $data['price'] = $order_inquiry['payment_amount_total']; // 咨询价格 元 - $data['isReply'] = 1; //咨询是否回复 0未回复 1已回复 - $data['patientEvaluate'] = 1; //患者满意度 1-5 1代表非常满意 5代表非常不满意 - $data['complainInfo'] = "无"; //投诉举报信息 - $data['disposeResult'] = "无"; //处理结果信息 - $data['isRiskWarn'] = 1; //是否进行诊前风险提示 0否 1是 - $data['isPatientSign'] = 1; //是否确认患者为签约对象 0否 1是 - $data['uploadTime'] = date('Y-m-d H:i:s', time()); //上传时间 - $data['medicalHistory'] = $order_inquiry_case['disease_desc']; //患者病史描述 - $data['docAdvice'] = $order_prescription['doctor_advice'] ?? "无"; // 医生建议描述 医嘱 - $data['cityId'] = "510100"; // 城市ID(参考地区字段) - $data['isMark'] = 1;//是否留痕 1:代表留痕;0代表未留痕 - } else { - $this->line("信息:患者复诊"); - // 获取患者首次问诊病例数据 - $params = array(); - $params['patient_id'] = $order_inquiry['patient_id']; - $params['pharmacist_audit_status'] = 1; - - $prescription_status_params = [2, 3, 4]; - $first_order_prescription = OrderPrescription::getStatusOne($params, $prescription_status_params); - if (empty($first_order_prescription)) { - // 复诊,但是未找到复诊处方单 - $this->line("错误:无初诊处方单"); - return false; - } - - $first_order_prescription = $first_order_prescription->toArray(); - - // 获取患者初诊疾病诊断数据 - $params = array(); - $params['order_prescription_id'] = $first_order_prescription['order_prescription_id']; - $first_order_prescription_icd = OrderPrescriptionIcd::getList($params); - if (empty($first_order_prescription_icd)) { - // 复诊,但是未找到关联疾病 - $this->line("错误:无初诊疾病诊断数据"); - return false; - } - - $first_icd_name_data = array_column($first_order_prescription_icd->toArray(), 'icd_name'); - if (empty($first_icd_name_data)){ - // 复诊,但是未找到关联疾病 - $this->line("错误:无初诊疾病诊断数据"); - return false; - } - - if (count($first_icd_name_data) > 1) { - $first_icd_name = implode('|', $first_icd_name_data); - } else { - $first_icd_name = $first_icd_name_data[0]; - } - - // 获取患者复诊疾病诊断数据 - $params = array(); - $params['order_prescription_id'] = $order_prescription['order_prescription_id']; - $order_prescription_icd = OrderPrescriptionIcd::getList($params); - if (empty($order_prescription_icd)) { - // 复诊,但是未找到关联疾病 - $this->line("错误:无复诊疾病诊断数据"); - return false; - } - - $icd_name_data = array_column($order_prescription_icd->toArray(), 'icd_name'); - if (!empty($icd_name_data)) { - if (count($icd_name_data) > 1) { - $icd_name = implode('|', $icd_name_data); - } else { - $icd_name = $icd_name_data[0]; - } - } - - // icd编码 - $icd_code_data = array_column($order_prescription_icd->toArray(), 'icd_code'); - if (!empty($icd_code_data)) { - if (count($icd_code_data) > 1) { - $icd_code = implode('|', $icd_code_data); - } else { - $icd_code = $icd_code_data[0]; - } - } - - // 网络复诊服务 - $data = array(); - $data['thirdUniqueid'] = $order_inquiry['order_inquiry_id']; // 唯一标识 - $data['orgName'] = "成都金牛欣欣相照互联网医院"; // 机构名称 - $data['orgCode'] = "MA6CGUDA251010619D2112"; // 机构编码 - $data['channelName'] = "成都金牛欣欣相照互联网医院";//平台名称 - $data['section'] = $hospital_department_custom['department_name'];//科室名称 - $data['sectionCode'] = $hospital_department_custom['department_code'];//科室编码 - $data['docName'] = $user_doctor['user_name'];// 复诊医师姓名 - $data['certificateNum'] = $user_doctor_info['qualification_cert_num']; // 执业资格证号 - $data['patientName'] = $order_inquiry['patient_name']; // 患者姓名 - $data['patientAge'] = (int)$order_inquiry['patient_age']; // 患者年龄 - $data['patientSex'] = $order_inquiry['patient_sex'] == 0 ?: 1; // 患者性别 - $data['patientIdcardType'] = 1; // 证件类型 - $data['patientIdcardNum'] = $patient_family['id_number']; // 患者证件号码 - $data['furtherConsultNo'] = $order_inquiry['order_inquiry_id']; // 网络复诊编号 - $data['furtherConsulType'] = "1"; // 复诊类别 1、图文诊疗 2、语音诊疗 3、视频诊疗 - $data['medicalHistory'] = $order_inquiry_case['disease_desc']; //患者病史描述 - $data['consultDiagnosisType'] = 1; // 首诊诊断类型 - $data['consultDiagnosis'] = $first_icd_name; // 首诊诊断 复诊患者在首诊医院的诊断,如有多条,使用“|”进行分隔;当传图片时,需要传图片的base64字符串 - $data['consultTime'] = date('Y-m-d H:i:s',strtotime($first_order_prescription['doctor_created_time'])); // 首诊时间 - $data['consultOrg'] = "成都金牛欣欣相照互联网医院"; // 首诊机构 - $data['furtherConsultApplyTime'] = date('Y-m-d H:i:s',strtotime($order_inquiry['created_at'])); // 复诊申请时间 - $data['furtherConsulStartTime'] = date('Y-m-d H:i:s',strtotime($order_inquiry['reception_time'])); // 复诊开始时间 - $data['furtherConsulEndTime'] = date('Y-m-d H:i:s',strtotime($order_inquiry['complete_time'])); // 复诊结束时间 - $data['furtherConsulIsReply'] = 1; // 复诊是否回复 0未回复 1已回复 - $data['feeType'] = 1; // 费别 1自费 2医保 - $data['furtherConsultDiagnosis'] = $icd_name; // 复诊诊断 复诊患者在实体医院的诊断名称,如有多条,使用“|”进行分隔 - $data['furtherConsultDiagnosisNo'] = $icd_code; // 复诊icd诊断编码 - $data['furtherConsultPrice'] = $order_inquiry['payment_amount_total']; // 复诊价格 - $data['patientEvaluate'] = 1; // 患者满意度 1-5 1代表非常满意 5代表非常不满意 - $data['complainInfo'] = "无"; // 投诉举报信息 - $data['disposeResult'] = "无"; // 处理结果信息 - $data['isRiskWarn'] = 1; // 是否进行诊前风险提示 0否 1是 - $data['isPatientSign'] = 1; // 是否确认患者为签约对象 0否 1是 - $data['isPrescription'] = 1; // 是否开具处方 0否 1是 - $data['uploadTime'] = date('Y-m-d H:i:s', time()); // 上传时间 - $data['cityId'] = "510100"; // 城市ID(参考地区字段) - $data['isMark'] = 1;//是否留痕 1:代表留痕;0代表未留痕 - } - return $data; - } - - /** - * 上报问诊 - * @param array|object $report_regulatory - * @param array|object $order_inquiry - * @param array|object $order_prescription - * @throws ContainerExceptionInterface - * @throws NotFoundExceptionInterface - */ - private function reportRegulatoryInquiry(array|object $report_regulatory,array|object $order_inquiry,array|object $order_prescription): void - { - if($report_regulatory['report_inquiry_int'] >= 5){ - $this->line("错误:超出最大执行次数,本条不执行"); - return ; - } - - // 检测患者是否首次问诊 - $is_first = $this->checkPatientFirstInquiry($order_prescription['patient_id'], $order_prescription['order_prescription_id']); - - try { - // 获取上报监管数据-问诊 - $report_inquiry_data = $this->getReportInquiryData($order_inquiry, $order_prescription, $is_first); - - // 上报监管平台-问诊 - $regulatoryPlatform = new regulatoryPlatform(); - if ($is_first) { - $result = $regulatoryPlatform->uploadConsult([$report_inquiry_data]); - } else { - $result = $regulatoryPlatform->uploadFurtherConsult([$report_inquiry_data]); - } - - $this->line("信息:上报成功" . json_encode($result,JSON_UNESCAPED_UNICODE)); - - // 上报成功 - $res = $this->modifyReportRegulatoryInquiry($report_regulatory, 1, $is_first ? 1 : 2); - if (!$res) { - // 记录失败 - $this->line("错误:上报成功,存储记录失败"); - return; - } - } catch (\Exception $e) { - $this->line("错误:" . $e->getMessage()); - // 上报失败 - $res = $this->modifyReportRegulatoryInquiry($report_regulatory, 2, $is_first ? 1 : 2, $e->getMessage()); - if (!$res) { - // 记录失败 - $this->line("错误:上报失败,存储记录失败"); - return; - } - } - } - - /** - * 获取上报监管数据-处方 + * 获取上报数据-处方 * @param array|object $order_inquiry * @param array|object $order_prescription * @return bool|array @@ -659,51 +461,6 @@ class ReportRegulatoryCommand extends HyperfCommand return $data; } - /** - * 上报处方 - * @param array|object $report_regulatory - * @param array|object $order_inquiry - * @param array|object $order_prescription - * @return void - * @throws ContainerExceptionInterface - * @throws NotFoundExceptionInterface - */ - private function reportRegulatoryPrescription(array|object $report_regulatory,array|object $order_inquiry,array|object $order_prescription): void - { - if ($report_regulatory['report_prescription_int'] >= 5){ - // 修改为上报失败 - $this->line("错误:超出最大执行次数,本条不执行"); - return ; - } - - try { - // 获取上报监管数据-处方 - $report_prescription_data = $this->getReportPrescriptionData($order_inquiry, $order_prescription); - - // 上报监管平台-处方 - $regulatoryPlatform = new regulatoryPlatform(); - $result = $regulatoryPlatform->uploadRecipe([$report_prescription_data]); - $this->line("信息:上报成功" . json_encode($result,JSON_UNESCAPED_UNICODE)); - - // 上报成功 - $res = $this->modifyReportRegulatoryPrescription($report_regulatory, 1); - if (!$res) { - // 记录失败 - $this->line("错误:上报成功,存储记录失败"); - return ; - } - }catch (\Exception $e){ - $this->line("错误:" . $e->getMessage()); - // 上报失败 - $res = $this->modifyReportRegulatoryPrescription($report_regulatory, 2, $e->getMessage()); - if (!$res) { - // 记录失败 - $this->line("错误:上报失败,存储记录失败"); - return ; - } - } - } - /** * 获取处方商品数据 * @param string $order_prescription_id @@ -778,4 +535,214 @@ class ReportRegulatoryCommand extends HyperfCommand return $result; } + + /** + * 获取上报数据-网络咨询 + * @param array|object $order_inquiry + * @return array + */ + private function getConsultData(array|object $order_inquiry): array + { + // 获取医生数据 + $params = array(); + $params['doctor_id'] = $order_inquiry['doctor_id']; + $user_doctor = UserDoctor::getOne($params); + if (empty($user_doctor)) { + $this->line("错误:医生数据错误"); + return []; + } + + $params = array(); + $params['doctor_id'] = $order_inquiry['doctor_id']; + $user_doctor_info = UserDoctorInfo::getOne($params); + if (empty($user_doctor_info)) { + $this->line("错误:医生详情数据错误"); + return []; + } + + // 获取医生自定义科室数据 + $params = array(); + $params['department_custom_id'] = $user_doctor['department_custom_id']; + $hospital_department_custom = HospitalDepartmentCustom::getOne($params); + if (empty($hospital_department_custom)) { + $this->line("错误:医生自定义数据错误"); + return []; + } + + // 获取问诊患者数据 + $params = array(); + $params['family_id'] = $order_inquiry['family_id']; + $patient_family = PatientFamily::getOne($params); + if (empty($patient_family)) { + $this->line("错误:问诊患者数据错误"); + return []; + } + + // 获取患者问诊病例 + $params = array(); + $params['order_inquiry_id'] = $order_inquiry['order_inquiry_id']; + $params['status'] = 1; + $order_inquiry_case = OrderInquiryCase::getOne($params); + if (empty($order_inquiry_case)) { + $this->line("错误:患者问诊病例错误"); + return []; + } + + // 网络咨询(网络门诊)服务 + $data = array(); + $data['thirdUniqueid'] = $order_inquiry['order_inquiry_id']; // 唯一标识 + $data['orgName'] = "成都金牛欣欣相照互联网医院"; // 机构名称 + $data['orgCode'] = "MA6CGUDA251010619D2112"; // 机构编码 + $data['channelName'] = "成都金牛欣欣相照互联网医院";//平台名称 + $data['section'] = $hospital_department_custom['department_name'];//科室名称 + $data['sectionCode'] = $hospital_department_custom['department_code'];//科室编码 + $data['docName'] = $user_doctor['user_name'];// 姓名(医师、护师、技师) + $data['certificateNum'] = $user_doctor_info['qualification_cert_num']; // 执业资格证号 + $data['patientName'] = $order_inquiry['patient_name']; // 患者姓名 + $data['patientAge'] = (int)$order_inquiry['patient_age']; // 患者年龄 + $data['patientSex'] = $order_inquiry['patient_sex'] == 0 ?: 1; // 患者性别 + $data['patientIdcardType'] = 1; // 证件类型 + $data['patientIdcardNum'] = $patient_family['id_number']; // 患者证件号码 + $data['serviceType'] = 1; // 服务类型 1网络咨询 2网络门诊 + $data['consultNo'] = $order_inquiry['inquiry_no']; // 网络咨询或网络门诊编号 订单编号 + $data['consultType'] = 1; // 咨询类别 1、图文咨询 2语音咨询3、视频咨询 + $data['consultApplyTime'] = date('Y-m-d H:i:s',strtotime($order_inquiry['created_at'])); // 咨询申请时间 + $data['consultStartTime'] = date('Y-m-d H:i:s',strtotime($order_inquiry['reception_time'])); // 咨询开始时间 + $data['consultEndTime'] = date('Y-m-d H:i:s',strtotime($order_inquiry['complete_time'])); // 咨询结束时间 + $data['feeType'] = 1; // 费别 1自费 2医保 + $data['price'] = $order_inquiry['payment_amount_total']; // 咨询价格 元 + $data['isReply'] = 1; //咨询是否回复 0未回复 1已回复 + $data['patientEvaluate'] = 1; //患者满意度 1-5 1代表非常满意 5代表非常不满意 + $data['complainInfo'] = "无"; //投诉举报信息 + $data['disposeResult'] = "无"; //处理结果信息 + $data['isRiskWarn'] = 1; //是否进行诊前风险提示 0否 1是 + $data['isPatientSign'] = 1; //是否确认患者为签约对象 0否 1是 + $data['uploadTime'] = date('Y-m-d H:i:s', time()); //上传时间 + $data['medicalHistory'] = $order_inquiry_case['disease_desc']; //患者病史描述 + $data['docAdvice'] = $order_prescription['doctor_advice'] ?? "无"; // 医生建议描述 医嘱 + $data['cityId'] = "510100"; // 城市ID(参考地区字段) + $data['isMark'] = 1;//是否留痕 1:代表留痕;0代表未留痕 + + return $data; + } + + /** + * 获取上报数据-复诊 + * @param array|object $order_inquiry + * @param array|object $order_prescription + * @return array + */ + private function getFurtherConsultData(array|object $order_inquiry,array|object $order_prescription): array + { + // 获取医生数据 + $params = array(); + $params['doctor_id'] = $order_inquiry['doctor_id']; + $user_doctor = UserDoctor::getOne($params); + if (empty($user_doctor)) { + $this->line("医生数据错误"); + return []; + } + + $params = array(); + $params['doctor_id'] = $order_inquiry['doctor_id']; + $user_doctor_info = UserDoctorInfo::getOne($params); + if (empty($user_doctor_info)) { + $this->line("医生详情数据错误"); + return []; + } + + // 获取医生自定义科室数据 + $params = array(); + $params['department_custom_id'] = $user_doctor['department_custom_id']; + $hospital_department_custom = HospitalDepartmentCustom::getOne($params); + if (empty($hospital_department_custom)) { + $this->line("医生自定义数据错误"); + return []; + } + + // 获取问诊患者数据 + $params = array(); + $params['family_id'] = $order_inquiry['family_id']; + $patient_family = PatientFamily::getOne($params); + if (empty($patient_family)) { + $this->line("问诊患者数据错误"); + return []; + } + + // 获取患者问诊病例 + $params = array(); + $params['order_inquiry_id'] = $order_inquiry['order_inquiry_id']; + $params['status'] = 1; + $order_inquiry_case = OrderInquiryCase::getOne($params); + if (empty($order_inquiry_case)) { + $this->line("患者问诊病例错误"); + return []; + } + + // 获取患者复诊疾病诊断数据 + $params = array(); + $params['order_prescription_id'] = $order_prescription['order_prescription_id']; + $order_prescription_icd = OrderPrescriptionIcd::getList($params); + if (empty($order_prescription_icd)) { + // 复诊,但是未找到关联疾病 + $this->line("无复诊疾病诊断数据"); + return []; + } + + $icd_name_data = array_column($order_prescription_icd->toArray(), 'icd_name'); + if (count($icd_name_data) > 1) { + $icd_name = implode('|', $icd_name_data); + } else { + $icd_name = $icd_name_data[0]; + } + + $icd_code_data = array_column($order_prescription_icd->toArray(), 'icd_code'); + if (count($icd_code_data) > 1) { + $icd_code = implode('|', $icd_code_data); + } else { + $icd_code = $icd_code_data[0]; + } + + // 网络复诊服务 + $data = array(); + $data['thirdUniqueid'] = $order_inquiry['order_inquiry_id']; // 唯一标识 + $data['orgName'] = "成都金牛欣欣相照互联网医院"; // 机构名称 + $data['orgCode'] = "MA6CGUDA251010619D2112"; // 机构编码 + $data['channelName'] = "成都金牛欣欣相照互联网医院";//平台名称 + $data['section'] = $hospital_department_custom['department_name'];//科室名称 + $data['sectionCode'] = $hospital_department_custom['department_code'];//科室编码 + $data['docName'] = $user_doctor['user_name'];// 复诊医师姓名 + $data['certificateNum'] = $user_doctor_info['qualification_cert_num']; // 执业资格证号 + $data['patientName'] = $order_inquiry['patient_name']; // 患者姓名 + $data['patientAge'] = (int)$order_inquiry['patient_age']; // 患者年龄 + $data['patientSex'] = $order_inquiry['patient_sex'] == 0 ?: 1; // 患者性别 + $data['patientIdcardType'] = 1; // 证件类型 + $data['patientIdcardNum'] = $patient_family['id_number']; // 患者证件号码 + $data['furtherConsultNo'] = $order_inquiry['order_inquiry_id']; // 网络复诊编号 + $data['furtherConsulType'] = "1"; // 复诊类别 1、图文诊疗 2、语音诊疗 3、视频诊疗 + $data['medicalHistory'] = $order_inquiry_case['disease_desc']; //患者病史描述 + $data['consultDiagnosisType'] = 1; // 首诊诊断类型 + $data['consultDiagnosis'] = $order_inquiry_case['disease_class_name']; // 首诊诊断 复诊患者在首诊医院的诊断,如有多条,使用“|”进行分隔;当传图片时,需要传图片的base64字符串 + $data['consultTime'] = date('Y-m-d H:i:s',strtotime($order_inquiry_case['diagnosis_date'])); // 首诊时间(使用确诊时间) + $data['consultOrg'] = "成都金牛欣欣相照互联网医院"; // 首诊机构 + $data['furtherConsultApplyTime'] = date('Y-m-d H:i:s',strtotime($order_inquiry['created_at'])); // 复诊申请时间 + $data['furtherConsulStartTime'] = date('Y-m-d H:i:s',strtotime($order_inquiry['reception_time'])); // 复诊开始时间 + $data['furtherConsulEndTime'] = date('Y-m-d H:i:s',strtotime($order_inquiry['complete_time'])); // 复诊结束时间 + $data['furtherConsulIsReply'] = 1; // 复诊是否回复 0未回复 1已回复 + $data['feeType'] = 1; // 费别 1:自费 2:医保 + $data['furtherConsultDiagnosis'] = $icd_name; // 复诊诊断 复诊患者在实体医院的诊断名称,如有多条,使用“|”进行分隔 + $data['furtherConsultDiagnosisNo'] = $icd_code; // 复诊icd诊断编码 + $data['furtherConsultPrice'] = $order_inquiry['payment_amount_total']; // 复诊价格 + $data['patientEvaluate'] = 1; // 患者满意度 1-5 1:代表非常满意 5:代表非常不满意 + $data['complainInfo'] = "无"; // 投诉举报信息 + $data['disposeResult'] = "无"; // 处理结果信息 + $data['isRiskWarn'] = 1; // 是否进行诊前风险提示 0否 1是 + $data['isPatientSign'] = 1; // 是否确认患者为签约对象 0否 1是 + $data['isPrescription'] = 1; // 是否开具处方 0否 1是 + $data['uploadTime'] = date('Y-m-d H:i:s', time()); // 上传时间 + $data['cityId'] = "510100"; // 城市ID(参考地区字段) + $data['isMark'] = 1;//是否留痕 1:代表留痕;0:代表未留痕 + + return $data; + } } diff --git a/app/Model/ReportRegulatory.php b/app/Model/ReportRegulatory.php index a56d33a..29b737f 100644 --- a/app/Model/ReportRegulatory.php +++ b/app/Model/ReportRegulatory.php @@ -15,11 +15,16 @@ use Hyperf\Snowflake\Concern\Snowflake; * @property int $order_inquiry_id 订单-问诊id * @property int $order_prescription_id 订单-处方表id(无需上报处方时为null) * @property int $order_product_id 订单-商品表id(无需上报处方时为null) - * @property int $report_inquiry_status 问诊上报状态(0:未上报 1:已上报 2:上报失败) - * @property int $report_inquiry_int 问诊上报次数 - * @property int $report_inquiry_type 问诊上报类型(1:网络初诊 2:网络复诊) - * @property string $report_inquiry_time 问诊上报时间 - * @property string $report_inquiry_fail_reason 问诊上报失败原因 + * @property int $report_consult_status 上报网络咨询状态(0:未上报 1:已上报 2:上报失败) + * @property int $report_consult_int 网络咨询上报次数 + * @property string $report_consult_time 网络咨询上报时间 + * @property string $report_consult_fail_reason 网络咨询上报失败原因 + * @property int $is_further_consult 是否需要上报网络复诊(0:否 1:是) + * @property int $report_further_consult_status 上报网络复诊状态(0:未上报 1:已上报 2:上报失败) + * @property int $report_further_consult_int 网络复诊上报次数 + * @property string $report_further_consult_time 网络复诊上报时间 + * @property string $report_further_consult_fail_reason 网络复诊上报失败原因 + * @property int $is_prescription 是否需要上报处方(0:否 1:是) * @property int $report_prescription_status 处方上报状态(0:未上报 1:已上报 2:上报失败) * @property int $report_prescription_int 处方上报次数 * @property string $report_prescription_time 处方上报时间 @@ -39,11 +44,10 @@ class ReportRegulatory extends Model /** * The attributes that are mass assignable. */ - protected array $fillable = ['report_regulatory_id', 'order_inquiry_id', 'order_prescription_id', 'order_product_id', 'report_inquiry_status', 'report_inquiry_int', 'report_inquiry_type', 'report_inquiry_time', 'report_inquiry_fail_reason', 'report_prescription_status', 'report_prescription_int', 'report_prescription_time', 'report_prescription_fail_reason', 'created_at', 'updated_at']; + protected array $fillable = ['report_regulatory_id', 'order_inquiry_id', 'order_prescription_id', 'order_product_id', 'report_consult_status', 'report_consult_int', 'report_consult_time', 'report_consult_fail_reason', 'is_further_consult', 'report_further_consult_status', 'report_further_consult_int', 'report_further_consult_time', 'report_further_consult_fail_reason', 'is_prescription', 'report_prescription_status', 'report_prescription_int', 'report_prescription_time', 'report_prescription_fail_reason', 'created_at', 'updated_at']; protected string $primaryKey = "report_regulatory_id"; - /** * 获取信息-单条 * @param array $params @@ -116,23 +120,6 @@ class ReportRegulatory extends Model ->get($fields); } - /** - * 列表 - * @param array $params - * @param array $or_params - * @param array $fields - * @return Collection|array - */ - public static function getNotReportList(array $params = [],array $fields = ["*"]): Collection|array - { - return self::where($params) - ->Where(function ($query) { - $query->orWhere('report_inquiry_status','!=',1); - $query->orWhere('report_prescription_status','!=',1); - }) - ->get($fields); - } - /** * 检测是否存在 * @param array $params @@ -142,4 +129,29 @@ class ReportRegulatory extends Model { return self::where($params)->exists(); } + + + /** + * 获取未上报监管平台列表 + * @param array $fields + * @return Collection|array + */ + public static function getNotReportList(array $fields = ["*"]): Collection|array + { + return self::orWhere(function ($query) { + $query->Where('is_further_consult','=',1); + $query->Where('report_further_consult_status','!=',1); + $query->Where('report_further_consult_int','<',5); + }) + ->orWhere(function ($query) { + $query->Where('is_prescription','=',1); + $query->Where('report_prescription_status','!=',1); + $query->Where('report_prescription_int','<',5); + }) + ->orWhere(function ($query) { + $query->Where('report_consult_status','!=',1); + $query->Where('report_consult_int','<',5); + }) + ->get($fields); + } } diff --git a/app/Services/ReportRegulatoryService.php b/app/Services/ReportRegulatoryService.php index b098b31..73a5129 100644 --- a/app/Services/ReportRegulatoryService.php +++ b/app/Services/ReportRegulatoryService.php @@ -2,6 +2,7 @@ namespace App\Services; +use App\Model\OrderPrescription; use App\Model\ReportRegulatory; /** @@ -15,22 +16,34 @@ class ReportRegulatoryService extends BaseService * @param string $order_prescription_id * @return bool */ - protected function addReportRegulatory(string $order_inquiry_id,string $order_prescription_id): bool + public function addReportRegulatory(string $order_inquiry_id): bool { - // 检测是否已添加 + // 检测是否已添加数据 $params = array(); $params['order_inquiry_id'] = $order_inquiry_id; - $res = ReportRegulatory::getExists($params); - if ($res) { - return true; - } - - $data = array(); - $data['order_inquiry_id'] = $order_inquiry_id; - $data['order_prescription_id'] = $order_prescription_id; - $report_regulatory = ReportRegulatory::addReportRegulatory($data); + $report_regulatory = ReportRegulatory::getOne($params); if (empty($report_regulatory)){ - return false; + // 检测是否存在处方 + $params = array(); + $params['order_inquiry_id'] = $order_inquiry_id; + $params['pharmacist_audit_status'] = 1; + $params['platform_audit_status'] = 1; + $order_prescription = OrderPrescription::getOne($params); + + // 添加数据 + $data = array(); + $data['order_inquiry_id'] = $order_inquiry_id; + if (!empty($order_prescription)){ + $data['order_prescription_id'] = $order_prescription['order_prescription_id']; + $data['is_further_consult'] = 1; + $data['is_prescription'] = 1; + } + $report_regulatory = ReportRegulatory::addReportRegulatory($data); + if (empty($report_regulatory)){ + return false; + } + + return true; } return true; diff --git a/extend/RegulatoryPlatform/regulatoryPlatform.php b/extend/RegulatoryPlatform/regulatoryPlatform.php index dc5ab7c..1d25f32 100644 --- a/extend/RegulatoryPlatform/regulatoryPlatform.php +++ b/extend/RegulatoryPlatform/regulatoryPlatform.php @@ -9,7 +9,7 @@ use GuzzleHttp\Client; use GuzzleHttp\Exception\GuzzleException; use Hyperf\Di\Annotation\Inject; use Hyperf\Redis\Redis; -use Hyperf\Utils\ApplicationContext; +use Hyperf\Context\ApplicationContext; use Psr\Container\ContainerExceptionInterface; use Psr\Container\ContainerInterface; use Psr\Container\NotFoundExceptionInterface; @@ -35,9 +35,9 @@ class regulatoryPlatform public function __construct() { // 请求地址 - $this->api_url = config('regulatory_platform.api_url'); - $this->client_id = config('regulatory_platform.client_id'); - $this->client_secret = config('regulatory_platform.client_secret'); + $this->api_url = \Hyperf\Config\config('regulatory_platform.api_url'); + $this->client_id = \Hyperf\Config\config('regulatory_platform.client_id'); + $this->client_secret = \Hyperf\Config\config('regulatory_platform.client_secret'); $this->container = ApplicationContext::getContainer(); $this->client = $this->container->get(Client::class); } From e245758ce514d0da68ecc75f779f2bed94ef417d Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Wed, 13 Dec 2023 17:15:33 +0800 Subject: [PATCH 60/87] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=8A=E6=8A=A5?= =?UTF-8?q?=E5=A4=84=E6=96=B9=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Command/ReportRegulatoryCommand.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/app/Command/ReportRegulatoryCommand.php b/app/Command/ReportRegulatoryCommand.php index 371b85c..4badcf4 100644 --- a/app/Command/ReportRegulatoryCommand.php +++ b/app/Command/ReportRegulatoryCommand.php @@ -696,6 +696,11 @@ class ReportRegulatoryCommand extends HyperfCommand $icd_name = $icd_name_data[0]; } + if (empty($icd_name)){ + $this->line("无疾病名称数据"); + return []; + } + $icd_code_data = array_column($order_prescription_icd->toArray(), 'icd_code'); if (count($icd_code_data) > 1) { $icd_code = implode('|', $icd_code_data); @@ -703,6 +708,11 @@ class ReportRegulatoryCommand extends HyperfCommand $icd_code = $icd_code_data[0]; } + if (empty($icd_code)){ + $this->line("无icd编码数据"); + return []; + } + // 网络复诊服务 $data = array(); $data['thirdUniqueid'] = $order_inquiry['order_inquiry_id']; // 唯一标识 From 595df58db8051b0022434acfd4a0b9e948ace4d3 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Wed, 13 Dec 2023 17:27:08 +0800 Subject: [PATCH 61/87] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8C=BB=E7=94=9F?= =?UTF-8?q?=E5=88=97=E8=A1=A8=EF=BC=8C=E6=8E=92=E5=BA=8F=E5=92=8C=E4=BC=98?= =?UTF-8?q?=E5=85=88=E5=9C=A8=E7=BA=BF=E5=86=B2=E7=AA=81=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Model/UserDoctor.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/Model/UserDoctor.php b/app/Model/UserDoctor.php index 4f2ec2a..78ff19a 100644 --- a/app/Model/UserDoctor.php +++ b/app/Model/UserDoctor.php @@ -296,23 +296,23 @@ class UserDoctor extends Model // 响应时间快 $query->orderByRaw('avg_response_time = 0 ASC'); $query->orderBy('avg_response_time'); - $query->orderBy(Db::raw("convert(substr(user_name,1,1) using `GBK`)"), 'asc');// 名称排名 + $query->orderBy(Db::raw("convert(substr(gdxz_user_doctor.user_name,1,1) using `GBK`)"), 'asc');// 名称排名 } elseif ($sort_order == 3) { // 价格从低到高 $query->orderBy('doctor_inquiry_config.inquiry_price', 'asc'); $query->orderByRaw('avg_response_time = 0 ASC'); $query->orderBy('avg_response_time'); - $query->orderBy(Db::raw("convert(substr(user_name,1,1) using `GBK`)"), 'asc');// 名称排名 + $query->orderBy(Db::raw("convert(substr(gdxz_user_doctor.user_name,1,1) using `GBK`)"), 'asc');// 名称排名 } elseif ($sort_order == 4) { // 价格从高到低 $query->orderBy('doctor_inquiry_config.inquiry_price', 'desc'); $query->orderByRaw('avg_response_time = 0 ASC'); $query->orderBy('avg_response_time'); - $query->orderBy(Db::raw("convert(substr(user_name,1,1) using `GBK`)"), 'asc');// 名称排名 + $query->orderBy(Db::raw("convert(substr(gdxz_user_doctor.user_name,1,1) using `GBK`)"), 'asc');// 名称排名 } elseif ($sort_order == 5) { // 服务数从多到少 $query->orderBy('served_patients_num', 'desc'); - $query->orderBy(Db::raw("convert(substr(user_name,1,1) using `GBK`)"), 'asc');// 名称排名 + $query->orderBy(Db::raw("convert(substr(gdxz_user_doctor.user_name,1,1) using `GBK`)"), 'asc');// 名称排名 } } From 753b6bf20d3aa7f884b3f0ddea80950e0a780570 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Thu, 14 Dec 2023 10:38:53 +0800 Subject: [PATCH 62/87] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=BB=93=E6=9D=9F?= =?UTF-8?q?=E9=98=9F=E5=88=97=E4=BF=AE=E6=94=B9=E4=B8=BA=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Services/InquiryService.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/Services/InquiryService.php b/app/Services/InquiryService.php index 16ef330..4ba8f00 100644 --- a/app/Services/InquiryService.php +++ b/app/Services/InquiryService.php @@ -1090,7 +1090,8 @@ class InquiryService extends BaseService $data['order_inquiry_id'] = $order_inquiry['order_inquiry_id']; $message = new AutoFinishInquiryDelayDirectProducer($data); - $message->setDelayMs(1000 * 60 * 60 * 24 * 3); +// $message->setDelayMs(1000 * 60 * 60 * 24 * 3); + $message->setDelayMs(1000 * 60 * 3); $producer = $this->container->get(Producer::class); $res = $producer->produce($message); if (!$res) { From ab9d30ce263ad0bfc0753644b2e15435447755de Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Thu, 14 Dec 2023 11:04:09 +0800 Subject: [PATCH 63/87] 1 --- app/Services/InquiryService.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Services/InquiryService.php b/app/Services/InquiryService.php index 4ba8f00..77978f8 100644 --- a/app/Services/InquiryService.php +++ b/app/Services/InquiryService.php @@ -1228,7 +1228,7 @@ class InquiryService extends BaseService $reception_time = [$start_date, $end_date]; - $inquiry_status_params = [4]; // 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消) + $inquiry_status_params = [4,5]; // 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消) $amount_total_sum = OrderInquiry::getOrderInquiryBetweenTimeAmountTotalSum($params, $reception_time, $inquiry_status_params); From a8cef4ebd5dc56d6effdfd34b36e41c3a1fb327c Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Thu, 14 Dec 2023 11:37:32 +0800 Subject: [PATCH 64/87] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=AE=B6=E5=BA=AD?= =?UTF-8?q?=E6=88=90=E5=91=98=E7=97=85=E6=83=85=E8=AE=B0=E5=BD=95=E5=88=97?= =?UTF-8?q?=E8=A1=A8-=E5=88=86=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Services/PatientPathographyService.php | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/app/Services/PatientPathographyService.php b/app/Services/PatientPathographyService.php index 80c6358..8b5c46f 100644 --- a/app/Services/PatientPathographyService.php +++ b/app/Services/PatientPathographyService.php @@ -7,6 +7,7 @@ use App\Model\OrderPrescription; use App\Model\OrderPrescriptionIcd; use App\Model\OrderPrescriptionProduct; use App\Model\OrderProduct; +use App\Model\PatientFamily; use App\Model\PatientPathography; use App\Model\PatientPathographyProduct; use App\Model\Product; @@ -50,11 +51,18 @@ class PatientPathographyService extends BaseService */ public function getFamilyPathographyPage(): array { - $user_info = $this->request->getAttribute("userInfo") ?? []; $family_id = $this->request->input('family_id'); $page = $this->request->input('page', 1); $per_page = $this->request->input('per_page', 10); + // 获取家庭成员数据 + $params = array(); + $params['family_id'] = $family_id; + $patient_family = PatientFamily::getOne($params); + if (empty($patient_family)){ + return fail(); + } + // 获取病情记录列表 $fields = [ "pathography_id", @@ -67,8 +75,7 @@ class PatientPathographyService extends BaseService ]; $params = array(); - $params['user_id'] = $user_info['user_id']; - $params['patient_id'] = $user_info['client_user_id']; + $params['patient_id'] = $patient_family['patient_id']; $params['family_id'] = $family_id; $params['status'] = 1; $patient_pathographys = PatientPathography::getPatientPathographyPage($params, $fields, $page, $per_page); From ec1a2fc13488c3882642efe868bd0c9472903c4b Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Thu, 14 Dec 2023 13:12:33 +0800 Subject: [PATCH 65/87] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=97=85=E6=83=85?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E8=B7=AF=E7=94=B1=EF=BC=8C=E7=94=A8=E6=88=B7?= =?UTF-8?q?id=E5=88=A4=E6=96=AD=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Services/PatientPathographyService.php | 56 +++++++++++++++++++--- config/routes.php | 18 +++++++ 2 files changed, 68 insertions(+), 6 deletions(-) diff --git a/app/Services/PatientPathographyService.php b/app/Services/PatientPathographyService.php index 8b5c46f..49e0468 100644 --- a/app/Services/PatientPathographyService.php +++ b/app/Services/PatientPathographyService.php @@ -28,13 +28,27 @@ class PatientPathographyService extends BaseService $user_info = $this->request->getAttribute("userInfo") ?? []; $family_id = $this->request->input('family_id'); + // 获取家庭成员数据 + $params = array(); + $params['family_id'] = $family_id; + $patient_family = PatientFamily::getOne($params); + if (empty($patient_family)){ + return fail(); + } + + if ($user_info['user_type'] == 1){ + // 患者情况下 用户id需相同 + if ($patient_family['patient_id'] != $user_info['client_user_id']){ + return fail(); + } + } + $result = array(); $result['is_exist'] = 0; // 获取病情记录 $params = array(); - $params['user_id'] = $user_info['user_id']; - $params['patient_id'] = $user_info['client_user_id']; + $params['patient_id'] = $patient_family['patient_id']; $params['family_id'] = $family_id; $params['status'] = 1; $patient_pathography = PatientPathography::getLastOne($params); @@ -51,6 +65,7 @@ class PatientPathographyService extends BaseService */ public function getFamilyPathographyPage(): array { + $user_info = $this->request->getAttribute("userInfo") ?? []; $family_id = $this->request->input('family_id'); $page = $this->request->input('page', 1); $per_page = $this->request->input('per_page', 10); @@ -63,6 +78,13 @@ class PatientPathographyService extends BaseService return fail(); } + if ($user_info['user_type'] == 1){ + // 患者情况下 用户id需相同 + if ($patient_family['patient_id'] != $user_info['client_user_id']){ + return fail(); + } + } + // 获取病情记录列表 $fields = [ "pathography_id", @@ -103,8 +125,6 @@ class PatientPathographyService extends BaseService $pathography_id = $this->request->route('pathography_id'); $params = array(); - $params['user_id'] = $user_info['user_id']; - $params['patient_id'] = $user_info['client_user_id']; $params['pathography_id'] = $pathography_id; $params['status'] = 1; $patient_pathography = PatientPathography::getOne($params); @@ -112,6 +132,17 @@ class PatientPathographyService extends BaseService return success(null); } + if ($user_info['user_type'] == 1){ + // 患者情况下 用户id需相同 + if ($patient_pathography['patient_id'] != $user_info['client_user_id']){ + return fail(); + } + + if ($patient_pathography['user_id'] != $user_info['user_id']){ + return fail(); + } + } + $result = $patient_pathography->toArray(); $result['order_prescription'] = null; // 处方数据 $result['patient_pathography_product'] = array(); // 用药意向 @@ -231,14 +262,27 @@ class PatientPathographyService extends BaseService // 获取病情记录 $params = array(); - $params['user_id'] = $user_info['user_id']; - $params['patient_id'] = $user_info['client_user_id']; $params['pathography_id'] = $pathography_id; $patient_pathography = PatientPathography::getOne($params); if (empty($patient_pathography)){ return fail(HttpEnumCode::HTTP_ERROR,"无该病例"); } + if ($user_info['user_type'] == 2){ + return fail(); + } + + if ($user_info['user_type'] == 1){ + // 患者情况下 用户id需相同 + if ($patient_pathography['patient_id'] != $user_info['client_user_id']){ + return fail(); + } + + if ($patient_pathography['user_id'] != $user_info['user_id']){ + return fail(); + } + } + if ($patient_pathography['status'] == 2){ return success(); } diff --git a/config/routes.php b/config/routes.php index e9a1eea..43edbc2 100644 --- a/config/routes.php +++ b/config/routes.php @@ -797,3 +797,21 @@ Router::addGroup('/inquiry', function () { // 获取弹窗数据 Router::get('/popup', [UserController::class, 'getUserPopup']); + +// 病情记录 +Router::addGroup('/pathography', function () { + // 检测家庭成员是否存在病情记录 + Router::get('/exist', [PatientPathographyController::class, 'existFamilyPathography']); + + // 获取家庭成员病情记录列表-分页 + Router::get('', [PatientPathographyController::class, 'getFamilyPathographyPage']); + + // 获取家庭成员病情记录详情 + Router::get('/{pathography_id:\d+}', [PatientPathographyController::class, 'getFamilyPathographyInfo']); + + // 获取家庭成员病情记录分组 + Router::get('/group', [PatientPathographyController::class, 'getFamilyPathographyGroup']); + + // 删除家庭成员病情记录 + Router::delete('/{pathography_id:\d+}', [PatientPathographyController::class, 'deleteFamilyPathography']); +}); \ No newline at end of file From b61f61d1942ff49172cf1317d0487f35008e3da5 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Thu, 14 Dec 2023 13:41:57 +0800 Subject: [PATCH 66/87] 1 --- app/Services/PatientCaseService.php | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/app/Services/PatientCaseService.php b/app/Services/PatientCaseService.php index f9eab53..f48ec36 100644 --- a/app/Services/PatientCaseService.php +++ b/app/Services/PatientCaseService.php @@ -243,21 +243,6 @@ class PatientCaseService extends BaseService $order_inquiry_case = $order_inquiry_case->toArray(); -// // 获取患者家庭成员信息表-基本信息 -// $params = array(); -// $params['family_id'] = $order_inquiry_case['family_id']; -// $patient_family = PatientFamily::getOne($params); -// -// // 获取患者家庭成员信息表-健康情况 -// $params = array(); -// $params['family_id'] = $order_inquiry_case['family_id']; -// $patient_family_health = PatientFamilyHealth::getOne($params); -// -// // 获取患者家庭成员信息表-个人情况 -// $params = array(); -// $params['family_id'] = $order_inquiry_case['family_id']; -// $patient_family_personal = PatientFamilyPersonal::getOne($params); - // 初始字段定义 $fields = [ "relation", // 与患者关系(1:本人 2:父母 3:爱人 4:子女 5:亲戚 6:其他 ) From 9c8cbf008a0caa3a6eafae5d79df6729114f2a50 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Thu, 14 Dec 2023 15:03:17 +0800 Subject: [PATCH 67/87] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=A6=8F=E5=88=A9?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Services/UserPatientService.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/Services/UserPatientService.php b/app/Services/UserPatientService.php index c0d9c5c..3064ae9 100644 --- a/app/Services/UserPatientService.php +++ b/app/Services/UserPatientService.php @@ -46,6 +46,7 @@ class UserPatientService extends BaseService // 获取福利数据 $coupon = UserCoupon::getUserObjectTypeCoupon($user_patient['user_id'],2); + $coupon = $coupon->toArray(); // 获取问诊数量-待支付 $InquiryService = new InquiryService(); From fe36a05758572e6013a900afc898ce9b11a5ba00 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Thu, 14 Dec 2023 16:40:46 +0800 Subject: [PATCH 68/87] =?UTF-8?q?=E4=BF=AE=E6=94=B9composer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- composer.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 0737866..01aefbc 100644 --- a/composer.json +++ b/composer.json @@ -95,5 +95,15 @@ "Composer\\Config::disableProcessTimeout", "php ./bin/hyperf.php start" ] - } + }, + "repositories":[ + { + "type": "composer", + "url": "https://mirrors.aliyun.com/composer/" + }, + { + "type": "composer", + "url": "https://packagist.phpcomposer.com" + } + ] } From c47517c96fe965795447e779a5f945ebadb77474 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Fri, 15 Dec 2023 08:42:33 +0800 Subject: [PATCH 69/87] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Services/PatientCaseService.php | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/app/Services/PatientCaseService.php b/app/Services/PatientCaseService.php index f48ec36..ec4b972 100644 --- a/app/Services/PatientCaseService.php +++ b/app/Services/PatientCaseService.php @@ -548,10 +548,7 @@ class PatientCaseService extends BaseService // 判断是否存在于缓存中 if (!empty($redis_value)){ - if (!array_key_exists($key,$redis_value)){ - Db::rollBack(); - return fail(HttpEnumCode::HTTP_ERROR,"存在非法数据"); - }else{ + if (array_key_exists($key,$redis_value)){ if ($redis_value[$key]['is_filled'] == 1){ Db::rollBack(); return fail(HttpEnumCode::HTTP_ERROR,"请勿重复提交"); From 102ac6ee30e44f1b69dc4fc69fbfebbe108f1c78 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Fri, 15 Dec 2023 09:04:50 +0800 Subject: [PATCH 70/87] 1 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 7f62de7..b54d26c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -49,7 +49,7 @@ WORKDIR /opt/www COPY . /opt/www -RUN composer install --no-dev -o && php bin/hyperf.php +RUN composer clear-cache && composer install --no-dev -o && php bin/hyperf.php EXPOSE 9501 From ed83d333dc093fb7d57e459275191ac125cb60c3 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Fri, 15 Dec 2023 09:10:42 +0800 Subject: [PATCH 71/87] =?UTF-8?q?=E4=BF=AE=E6=94=B9composer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 2 +- composer.lock | 3441 ++++++++++++++++++++++++++++++++++++++----------- 2 files changed, 2679 insertions(+), 764 deletions(-) diff --git a/Dockerfile b/Dockerfile index b54d26c..7f62de7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -49,7 +49,7 @@ WORKDIR /opt/www COPY . /opt/www -RUN composer clear-cache && composer install --no-dev -o && php bin/hyperf.php +RUN composer install --no-dev -o && php bin/hyperf.php EXPOSE 9501 diff --git a/composer.lock b/composer.lock index 465abc1..c226c5b 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "7b8eb338a7660aee649c5dd55b456b7c", + "content-hash": "109903d353af378b5ad6c63c827487d9", "packages": [ { "name": "adbario/php-dot-notation", @@ -16,9 +16,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/adbario/php-dot-notation/2.5.0/adbario-php-dot-notation-2.5.0.zip", + "url": "https://api.github.com/repos/adbario/php-dot-notation/zipball/081e2cca50c84bfeeea2e3ef9b2c8d206d80ccae", "reference": "081e2cca50c84bfeeea2e3ef9b2c8d206d80ccae", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-json": "*", @@ -37,6 +43,7 @@ "Adbar\\": "src" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -52,6 +59,10 @@ "ArrayAccess", "dotnotation" ], + "support": { + "issues": "https://github.com/adbario/php-dot-notation/issues", + "source": "https://github.com/adbario/php-dot-notation/tree/2.5.0" + }, "time": "2022-10-14T20:31:46+00:00" }, { @@ -64,9 +75,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/alibabacloud/credentials/1.1.5/alibabacloud-credentials-1.1.5.zip", + "url": "https://api.github.com/repos/aliyun/credentials-php/zipball/1d8383ceef695974a88a3859c42e235fd2e3981a", "reference": "1d8383ceef695974a88a3859c42e235fd2e3981a", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "adbario/php-dot-notation": "^2.2", @@ -104,6 +121,7 @@ "AlibabaCloud\\Credentials\\": "src" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "Apache-2.0" ], @@ -127,6 +145,10 @@ "sdk", "tool" ], + "support": { + "issues": "https://github.com/aliyun/credentials-php/issues", + "source": "https://github.com/aliyun/credentials-php" + }, "time": "2023-04-11T02:12:12+00:00" }, { @@ -139,9 +161,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/alibabacloud/darabonba-openapi/0.2.9/alibabacloud-darabonba-openapi-0.2.9.zip", + "url": "https://api.github.com/repos/alibabacloud-sdk-php/darabonba-openapi/zipball/4cdfc36615f345786d668dfbaf68d9a301b6dbe2", "reference": "4cdfc36615f345786d668dfbaf68d9a301b6dbe2", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "alibabacloud/credentials": "^1.1", @@ -157,6 +185,7 @@ "Darabonba\\OpenApi\\": "src" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "Apache-2.0" ], @@ -167,6 +196,10 @@ } ], "description": "Alibaba Cloud OpenApi Client", + "support": { + "issues": "https://github.com/alibabacloud-sdk-php/darabonba-openapi/issues", + "source": "https://github.com/alibabacloud-sdk-php/darabonba-openapi/tree/0.2.9" + }, "time": "2023-02-06T12:02:21+00:00" }, { @@ -179,9 +212,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/alibabacloud/dysmsapi-20170525/2.0.23/alibabacloud-dysmsapi-20170525-2.0.23.zip", + "url": "https://api.github.com/repos/alibabacloud-sdk-php/Dysmsapi-20170525/zipball/f743fce2182cb503962c37cba2ce4ba71642e89e", "reference": "f743fce2182cb503962c37cba2ce4ba71642e89e", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "alibabacloud/darabonba-openapi": "^0.2.8", @@ -196,6 +235,7 @@ "AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\": "src" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "Apache-2.0" ], @@ -206,6 +246,9 @@ } ], "description": "Alibaba Cloud Dysmsapi (20170525) SDK Library for PHP", + "support": { + "source": "https://github.com/alibabacloud-sdk-php/Dysmsapi-20170525/tree/2.0.23" + }, "time": "2022-11-29T07:24:48+00:00" }, { @@ -218,9 +261,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/alibabacloud/endpoint-util/0.1.1/alibabacloud-endpoint-util-0.1.1.zip", + "url": "https://api.github.com/repos/alibabacloud-sdk-php/endpoint-util/zipball/f3fe88a25d8df4faa3b0ae14ff202a9cc094e6c5", "reference": "f3fe88a25d8df4faa3b0ae14ff202a9cc094e6c5", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">5.5" @@ -234,6 +283,7 @@ "AlibabaCloud\\Endpoint\\": "src" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "Apache-2.0" ], @@ -244,6 +294,9 @@ } ], "description": "Alibaba Cloud Endpoint Library for PHP", + "support": { + "source": "https://github.com/alibabacloud-sdk-php/endpoint-util/tree/0.1.1" + }, "time": "2020-06-04T10:57:15+00:00" }, { @@ -256,9 +309,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/alibabacloud/gateway-spi/1.0.0/alibabacloud-gateway-spi-1.0.0.zip", + "url": "https://api.github.com/repos/alibabacloud-sdk-php/alibabacloud-gateway-spi/zipball/7440f77750c329d8ab252db1d1d967314ccd1fcb", "reference": "7440f77750c329d8ab252db1d1d967314ccd1fcb", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "alibabacloud/credentials": "^1.1", @@ -270,6 +329,7 @@ "Darabonba\\GatewaySpi\\": "src" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "Apache-2.0" ], @@ -280,6 +340,9 @@ } ], "description": "Alibaba Cloud Gateway SPI Client", + "support": { + "source": "https://github.com/alibabacloud-sdk-php/alibabacloud-gateway-spi/tree/1.0.0" + }, "time": "2022-07-14T05:31:35+00:00" }, { @@ -292,9 +355,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/alibabacloud/openapi-util/0.2.1/alibabacloud-openapi-util-0.2.1.zip", + "url": "https://api.github.com/repos/alibabacloud-sdk-php/openapi-util/zipball/f31f7bcd835e08ca24b6b8ba33637eb4eceb093a", "reference": "f31f7bcd835e08ca24b6b8ba33637eb4eceb093a", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "alibabacloud/tea": "^3.1", @@ -311,6 +380,7 @@ "AlibabaCloud\\OpenApiUtil\\": "src" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "Apache-2.0" ], @@ -321,6 +391,10 @@ } ], "description": "Alibaba Cloud OpenApi Util", + "support": { + "issues": "https://github.com/alibabacloud-sdk-php/openapi-util/issues", + "source": "https://github.com/alibabacloud-sdk-php/openapi-util/tree/0.2.1" + }, "time": "2023-01-10T09:10:10+00:00" }, { @@ -333,9 +407,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/alibabacloud/tea/3.2.1/alibabacloud-tea-3.2.1.zip", + "url": "https://api.github.com/repos/aliyun/tea-php/zipball/1619cb96c158384f72b873e1f85de8b299c9c367", "reference": "1619cb96c158384f72b873e1f85de8b299c9c367", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "adbario/php-dot-notation": "^2.4", @@ -363,6 +443,7 @@ "AlibabaCloud\\Tea\\": "src" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "Apache-2.0" ], @@ -381,6 +462,10 @@ "cloud", "tea" ], + "support": { + "issues": "https://github.com/aliyun/tea-php/issues", + "source": "https://github.com/aliyun/tea-php" + }, "time": "2023-05-16T06:43:41+00:00" }, { @@ -393,9 +478,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/alibabacloud/tea-utils/0.2.19/alibabacloud-tea-utils-0.2.19.zip", + "url": "https://api.github.com/repos/alibabacloud-sdk-php/tea-utils/zipball/8dfc1a93e9415818e93a621b644abbb84981aea4", "reference": "8dfc1a93e9415818e93a621b644abbb84981aea4", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "alibabacloud/tea": "^3.1", @@ -407,6 +498,7 @@ "AlibabaCloud\\Tea\\Utils\\": "src" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "Apache-2.0" ], @@ -417,6 +509,10 @@ } ], "description": "Alibaba Cloud Tea Utils for PHP", + "support": { + "issues": "https://github.com/aliyun/tea-util/issues", + "source": "https://github.com/aliyun/tea-util" + }, "time": "2023-06-26T09:49:19+00:00" }, { @@ -429,9 +525,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/alibabacloud/tea-xml/0.2.4/alibabacloud-tea-xml-0.2.4.zip", + "url": "https://api.github.com/repos/alibabacloud-sdk-php/tea-xml/zipball/3e0c000bf536224eebbac913c371bef174c0a16a", "reference": "3e0c000bf536224eebbac913c371bef174c0a16a", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">5.5" @@ -446,6 +548,7 @@ "AlibabaCloud\\Tea\\XML\\": "src" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "Apache-2.0" ], @@ -456,6 +559,9 @@ } ], "description": "Alibaba Cloud Tea XML Library for PHP", + "support": { + "source": "https://github.com/alibabacloud-sdk-php/tea-xml/tree/0.2.4" + }, "time": "2022-08-02T04:12:58+00:00" }, { @@ -468,9 +574,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/aliyuncs/oss-sdk-php/v2.6.0/aliyuncs-oss-sdk-php-v2.6.0.zip", + "url": "https://api.github.com/repos/aliyun/aliyun-oss-php-sdk/zipball/572d0f8e099e8630ae7139ed3fdedb926c7a760f", "reference": "572d0f8e099e8630ae7139ed3fdedb926c7a760f", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=5.3" @@ -485,6 +597,7 @@ "OSS\\": "src/OSS" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -496,8 +609,87 @@ ], "description": "Aliyun OSS SDK for PHP", "homepage": "http://www.aliyun.com/product/oss/", + "support": { + "issues": "https://github.com/aliyun/aliyun-oss-php-sdk/issues", + "source": "https://github.com/aliyun/aliyun-oss-php-sdk/tree/v2.6.0" + }, "time": "2022-08-03T08:06:01+00:00" }, + { + "name": "carbonphp/carbon-doctrine-types", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", + "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", + "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "conflict": { + "doctrine/dbal": "<3.7.0 || >=4.0.0" + }, + "require-dev": { + "doctrine/dbal": "^3.7.0", + "nesbot/carbon": "^2.71.0 || ^3.0.0", + "phpunit/phpunit": "^10.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KyleKatarn", + "email": "kylekatarnls@gmail.com" + } + ], + "description": "Types to use Carbon in Doctrine", + "keywords": [ + "carbon", + "date", + "datetime", + "doctrine", + "time" + ], + "support": { + "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/2.1.0" + }, + "funding": [ + { + "url": "https://github.com/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2023-12-11T17:09:12+00:00" + }, { "name": "doctrine/deprecations", "version": "v1.1.1", @@ -508,9 +700,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/doctrine/deprecations/v1.1.1/doctrine-deprecations-v1.1.1.zip", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.1 || ^8.0" @@ -533,11 +731,16 @@ "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", "homepage": "https://www.doctrine-project.org/", + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/v1.1.1" + }, "time": "2023-06-03T09:27:29+00:00" }, { @@ -550,9 +753,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/doctrine/inflector/2.0.8/doctrine-inflector-2.0.8.zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/f9301a5b2fb1216b2b08f02ba04dc45423db6bff", "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.2 || ^8.0" @@ -571,6 +780,7 @@ "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -610,6 +820,10 @@ "uppercase", "words" ], + "support": { + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/2.0.8" + }, "funding": [ { "url": "https://www.doctrine-project.org/sponsorship.html", @@ -636,9 +850,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/doctrine/instantiator/1.5.0/doctrine-instantiator-1.5.0.zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b", "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.1 || ^8.0" @@ -659,6 +879,7 @@ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -675,6 +896,10 @@ "constructor", "instantiate" ], + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/1.5.0" + }, "funding": [ { "url": "https://www.doctrine-project.org/sponsorship.html", @@ -701,9 +926,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/doctrine/lexer/2.1.0/doctrine-lexer-2.1.0.zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "doctrine/deprecations": "^1.0", @@ -722,6 +953,7 @@ "Doctrine\\Common\\Lexer\\": "src" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -748,6 +980,10 @@ "parser", "php" ], + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/2.1.0" + }, "funding": [ { "url": "https://www.doctrine-project.org/sponsorship.html", @@ -774,9 +1010,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/egulias/email-validator/3.2.6/egulias-email-validator-3.2.6.zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7", "reference": "e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "doctrine/lexer": "^1.2|^2", @@ -801,6 +1043,7 @@ "Egulias\\EmailValidator\\": "src" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -818,6 +1061,10 @@ "validation", "validator" ], + "support": { + "issues": "https://github.com/egulias/EmailValidator/issues", + "source": "https://github.com/egulias/EmailValidator/tree/3.2.6" + }, "funding": [ { "url": "https://github.com/egulias", @@ -836,9 +1083,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/fig/http-message-util/1.1.5/fig-http-message-util-1.1.5.zip", + "url": "https://api.github.com/repos/php-fig/http-message-util/zipball/9d94dc0154230ac39e5bf89398b324a86f63f765", "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^5.3 || ^7.0 || ^8.0" @@ -857,6 +1110,7 @@ "Fig\\Http\\Message\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -875,21 +1129,31 @@ "request", "response" ], + "support": { + "issues": "https://github.com/php-fig/http-message-util/issues", + "source": "https://github.com/php-fig/http-message-util/tree/1.1.5" + }, "time": "2020-11-24T22:02:12+00:00" }, { "name": "firebase/php-jwt", - "version": "v6.8.1", + "version": "v6.9.0", "source": { "type": "git", "url": "https://github.com/firebase/php-jwt.git", - "reference": "5dbc8959427416b8ee09a100d7a8588c00fb2e26" + "reference": "f03270e63eaccf3019ef0f32849c497385774e11" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/firebase/php-jwt/v6.8.1/firebase-php-jwt-v6.8.1.zip", - "reference": "5dbc8959427416b8ee09a100d7a8588c00fb2e26", - "shasum": "" + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/f03270e63eaccf3019ef0f32849c497385774e11", + "reference": "f03270e63eaccf3019ef0f32849c497385774e11", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.4||^8.0" @@ -912,6 +1176,7 @@ "Firebase\\JWT\\": "src" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -933,28 +1198,38 @@ "jwt", "php" ], - "time": "2023-07-14T18:33:00+00:00" + "support": { + "issues": "https://github.com/firebase/php-jwt/issues", + "source": "https://github.com/firebase/php-jwt/tree/v6.9.0" + }, + "time": "2023-10-05T00:24:42+00:00" }, { "name": "graham-campbell/result-type", - "version": "v1.1.1", + "version": "v1.1.2", "source": { "type": "git", "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831" + "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/graham-campbell/result-type/v1.1.1/graham-campbell-result-type-v1.1.1.zip", - "reference": "672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831", - "shasum": "" + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/fbd48bce38f73f8a4ec8583362e732e4095e5862", + "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.1" + "phpoption/phpoption": "^1.9.2" }, "require-dev": { - "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" }, "type": "library", "autoload": { @@ -962,6 +1237,7 @@ "GrahamCampbell\\ResultType\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -980,6 +1256,10 @@ "Result-Type", "result" ], + "support": { + "issues": "https://github.com/GrahamCampbell/Result-Type/issues", + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.2" + }, "funding": [ { "url": "https://github.com/GrahamCampbell", @@ -990,26 +1270,32 @@ "type": "tidelift" } ], - "time": "2023-02-25T20:23:15+00:00" + "time": "2023-11-12T22:16:48+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "7.7.0", + "version": "7.8.1", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5" + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/guzzlehttp/guzzle/7.7.0/guzzlehttp-guzzle-7.7.0.zip", - "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5", - "shasum": "" + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104", + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5.3 || ^2.0", - "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", + "guzzlehttp/promises": "^1.5.3 || ^2.0.1", + "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -1018,11 +1304,11 @@ "psr/http-client-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", + "bamarni/composer-bin-plugin": "^1.8.2", "ext-curl": "*", "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", "php-http/message-factory": "^1.1", - "phpunit/phpunit": "^8.5.29 || ^9.5.23", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { @@ -1045,6 +1331,7 @@ "GuzzleHttp\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1097,6 +1384,10 @@ "rest", "web service" ], + "support": { + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/7.8.1" + }, "funding": [ { "url": "https://github.com/GrahamCampbell", @@ -1111,7 +1402,7 @@ "type": "tidelift" } ], - "time": "2023-05-21T14:04:53+00:00" + "time": "2023-12-03T20:35:24+00:00" }, { "name": "guzzlehttp/promises", @@ -1123,9 +1414,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/guzzlehttp/promises/2.0.1/guzzlehttp-promises-2.0.1.zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/111166291a0f8130081195ac4556a5587d7f1b5d", "reference": "111166291a0f8130081195ac4556a5587d7f1b5d", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.2.5 || ^8.0" @@ -1146,6 +1443,7 @@ "GuzzleHttp\\Promise\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1175,6 +1473,10 @@ "keywords": [ "promise" ], + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/2.0.1" + }, "funding": [ { "url": "https://github.com/GrahamCampbell", @@ -1193,17 +1495,23 @@ }, { "name": "guzzlehttp/psr7", - "version": "2.6.0", + "version": "2.6.2", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "8bd7c33a0734ae1c5d074360512beb716bef3f77" + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/guzzlehttp/psr7/2.6.0/guzzlehttp-psr7-2.6.0.zip", - "reference": "8bd7c33a0734ae1c5d074360512beb716bef3f77", - "shasum": "" + "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221", + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.2.5 || ^8.0", @@ -1216,9 +1524,9 @@ "psr/http-message-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", + "bamarni/composer-bin-plugin": "^1.8.2", "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.29 || ^9.5.23" + "phpunit/phpunit": "^8.5.36 || ^9.6.15" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" @@ -1235,6 +1543,7 @@ "GuzzleHttp\\Psr7\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1286,6 +1595,10 @@ "uri", "url" ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/2.6.2" + }, "funding": [ { "url": "https://github.com/GrahamCampbell", @@ -1300,21 +1613,27 @@ "type": "tidelift" } ], - "time": "2023-08-03T15:06:02+00:00" + "time": "2023-12-03T20:05:35+00:00" }, { "name": "hyperf/amqp", - "version": "v3.0.30", + "version": "v3.0.42", "source": { "type": "git", "url": "https://github.com/hyperf/amqp.git", - "reference": "9ec17402a985f4fd8f9b664ce43602596f6ef9a9" + "reference": "08c9f4ddd98e134a35e3b571f790ecf5730d50c5" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/amqp/v3.0.30/hyperf-amqp-v3.0.30.zip", - "reference": "9ec17402a985f4fd8f9b664ce43602596f6ef9a9", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/amqp/zipball/08c9f4ddd98e134a35e3b571f790ecf5730d50c5", + "reference": "08c9f4ddd98e134a35e3b571f790ecf5730d50c5", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "doctrine/instantiator": "^1.2.0", @@ -1349,6 +1668,7 @@ "Hyperf\\Amqp\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1359,21 +1679,33 @@ "hyperf", "php" ], - "time": "2023-07-15T00:53:13+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-10-30T15:14:45+00:00" }, { "name": "hyperf/async-queue", - "version": "v3.0.18", + "version": "v3.0.43", "source": { "type": "git", "url": "https://github.com/hyperf/async-queue.git", - "reference": "7e7b558492a80ac29baeffe1942709a062d087aa" + "reference": "7ff36925149f2b888cde3c32ad300e1c9b244dd6" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/async-queue/v3.0.18/hyperf-async-queue-v3.0.18.zip", - "reference": "7e7b558492a80ac29baeffe1942709a062d087aa", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/async-queue/zipball/7ff36925149f2b888cde3c32ad300e1c9b244dd6", + "reference": "7ff36925149f2b888cde3c32ad300e1c9b244dd6", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/codec": "~3.0.0", @@ -1406,6 +1738,7 @@ "Hyperf\\AsyncQueue\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1416,21 +1749,33 @@ "hyperf", "php" ], - "time": "2023-04-26T03:02:31+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-11-07T08:05:54+00:00" }, { "name": "hyperf/cache", - "version": "v3.0.26", + "version": "v3.0.37", "source": { "type": "git", "url": "https://github.com/hyperf/cache.git", - "reference": "562639b565036bf13494f4e312a83439fe2bece0" + "reference": "0dc19cfaa49f7c26d1d360cc9556b057f85ccc3b" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/cache/v3.0.26/hyperf-cache-v3.0.26.zip", - "reference": "562639b565036bf13494f4e312a83439fe2bece0", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/cache/zipball/0dc19cfaa49f7c26d1d360cc9556b057f85ccc3b", + "reference": "0dc19cfaa49f7c26d1d360cc9556b057f85ccc3b", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/codec": "~3.0.0", @@ -1460,6 +1805,7 @@ "Hyperf\\Cache\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1470,21 +1816,33 @@ "hyperf", "php" ], - "time": "2023-06-19T11:35:29+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-09-19T01:50:18+00:00" }, { "name": "hyperf/code-parser", - "version": "v3.0.18", + "version": "v3.0.37", "source": { "type": "git", "url": "https://github.com/hyperf/code-parser.git", - "reference": "f1812421150d7ef95067eb6657c6f84514b6dfea" + "reference": "946fcd1c8d72747a59277926605e2544fb35b032" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/code-parser/v3.0.18/hyperf-code-parser-v3.0.18.zip", - "reference": "f1812421150d7ef95067eb6657c6f84514b6dfea", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/code-parser/zipball/946fcd1c8d72747a59277926605e2544fb35b032", + "reference": "946fcd1c8d72747a59277926605e2544fb35b032", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/collection": "~3.0.0", @@ -1507,6 +1865,7 @@ "Hyperf\\CodeParser\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1518,21 +1877,33 @@ "php", "swoole" ], - "time": "2023-04-26T03:02:31+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-09-19T01:50:18+00:00" }, { "name": "hyperf/codec", - "version": "v3.0.30", + "version": "v3.0.38", "source": { "type": "git", "url": "https://github.com/hyperf/codec.git", - "reference": "30b170b59770c7f92ae845fca777b8ea8a953599" + "reference": "dfe4ff846540362c5a56e9ade6bdeef16d264fb8" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/codec/v3.0.30/hyperf-codec-v3.0.30.zip", - "reference": "30b170b59770c7f92ae845fca777b8ea8a953599", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/codec/zipball/dfe4ff846540362c5a56e9ade6bdeef16d264fb8", + "reference": "dfe4ff846540362c5a56e9ade6bdeef16d264fb8", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-json": "*", @@ -1554,6 +1925,7 @@ "Hyperf\\Codec\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1565,21 +1937,33 @@ "php", "swoole" ], - "time": "2023-07-18T12:10:42+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-09-30T06:00:08+00:00" }, { "name": "hyperf/collection", - "version": "v3.0.29", + "version": "v3.0.44", "source": { "type": "git", "url": "https://github.com/hyperf/collection.git", - "reference": "c2e3f919f8c445da69e0e0c10920c6fc0754b9ad" + "reference": "a6ead5a5e5c6121f18306ec0222148c537a7d5e6" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/collection/v3.0.29/hyperf-collection-v3.0.29.zip", - "reference": "c2e3f919f8c445da69e0e0c10920c6fc0754b9ad", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/collection/zipball/a6ead5a5e5c6121f18306ec0222148c537a7d5e6", + "reference": "a6ead5a5e5c6121f18306ec0222148c537a7d5e6", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/contract": "~3.0.0", @@ -1600,6 +1984,7 @@ "Hyperf\\Collection\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1611,21 +1996,33 @@ "php", "swoole" ], - "time": "2023-07-14T03:41:52+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-11-16T08:02:14+00:00" }, { "name": "hyperf/command", - "version": "v3.0.27", + "version": "v3.0.41", "source": { "type": "git", "url": "https://github.com/hyperf/command.git", - "reference": "06df0f8102ec4079591d937adaca507fe5191082" + "reference": "b88631cf2fbd2fb6ba67d4727ad133d495bfccc8" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/command/v3.0.27/hyperf-command-v3.0.27.zip", - "reference": "06df0f8102ec4079591d937adaca507fe5191082", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/command/zipball/b88631cf2fbd2fb6ba67d4727ad133d495bfccc8", + "reference": "b88631cf2fbd2fb6ba67d4727ad133d495bfccc8", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/support": "~3.0.0", @@ -1649,6 +2046,7 @@ "Hyperf\\Command\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1658,21 +2056,31 @@ "php", "swoole" ], - "time": "2023-06-26T23:53:52+00:00" + "support": { + "issues": "https://github.com/hyperf/command/issues", + "source": "https://github.com/hyperf/command/tree/v3.0.41" + }, + "time": "2023-10-27T01:21:47+00:00" }, { "name": "hyperf/conditionable", - "version": "v3.0.0", + "version": "v3.0.37", "source": { "type": "git", "url": "https://github.com/hyperf/conditionable.git", - "reference": "4222cdc512e9e48e4375a480161c6365276ff803" + "reference": "8e35db68166b333ce9e8b4ef6c04e81206ad5660" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/conditionable/v3.0.0/hyperf-conditionable-v3.0.0.zip", - "reference": "4222cdc512e9e48e4375a480161c6365276ff803", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/conditionable/zipball/8e35db68166b333ce9e8b4ef6c04e81206ad5660", + "reference": "8e35db68166b333ce9e8b4ef6c04e81206ad5660", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.4" @@ -1688,6 +2096,7 @@ "Hyperf\\Conditionable\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1699,21 +2108,33 @@ "php", "swoole" ], - "time": "2023-03-28T15:02:39+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-09-19T01:50:18+00:00" }, { "name": "hyperf/config", - "version": "v3.0.20", + "version": "v3.0.37", "source": { "type": "git", "url": "https://github.com/hyperf/config.git", - "reference": "6503882f8547809d609b9489170037ceaef04962" + "reference": "faee71c69eacde52e3a68e003bdf98de9db4e2cb" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/config/v3.0.20/hyperf-config-v3.0.20.zip", - "reference": "6503882f8547809d609b9489170037ceaef04962", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/config/zipball/faee71c69eacde52e3a68e003bdf98de9db4e2cb", + "reference": "faee71c69eacde52e3a68e003bdf98de9db4e2cb", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/collection": "~3.0.0", @@ -1747,6 +2168,7 @@ "Hyperf\\Config\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1759,21 +2181,33 @@ "php", "swoole" ], - "time": "2023-05-09T03:02:12+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-09-19T01:50:18+00:00" }, { "name": "hyperf/constants", - "version": "v3.0.18", + "version": "v3.0.37", "source": { "type": "git", "url": "https://github.com/hyperf/constants.git", - "reference": "71eadfcf6495eb4945a2416569649e39a89a55e3" + "reference": "59ae4cad155e742368fe9c564885c813fdea9376" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/constants/v3.0.18/hyperf-constants-v3.0.18.zip", - "reference": "71eadfcf6495eb4945a2416569649e39a89a55e3", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/constants/zipball/59ae4cad155e742368fe9c564885c813fdea9376", + "reference": "59ae4cad155e742368fe9c564885c813fdea9376", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/di": "~3.0.0", @@ -1798,6 +2232,7 @@ "Hyperf\\Constants\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1808,21 +2243,33 @@ "hyperf", "php" ], - "time": "2023-04-26T03:02:31+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-09-19T01:50:18+00:00" }, { "name": "hyperf/context", - "version": "v3.0.18", + "version": "v3.0.37", "source": { "type": "git", "url": "https://github.com/hyperf/context.git", - "reference": "8cff8cc1c70c1a8c390a13b97986ddd5e47fa2ec" + "reference": "264e06fb882426d90758eca2c5bb8293f8b60455" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/context/v3.0.18/hyperf-context-v3.0.18.zip", - "reference": "8cff8cc1c70c1a8c390a13b97986ddd5e47fa2ec", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/context/zipball/264e06fb882426d90758eca2c5bb8293f8b60455", + "reference": "264e06fb882426d90758eca2c5bb8293f8b60455", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/engine": "^1.2|^2.0", @@ -1839,6 +2286,7 @@ "Hyperf\\Context\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1850,21 +2298,33 @@ "php", "swoole" ], - "time": "2023-04-26T03:02:31+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-09-19T01:50:18+00:00" }, { "name": "hyperf/contract", - "version": "v3.0.10", + "version": "v3.0.37", "source": { "type": "git", "url": "https://github.com/hyperf/contract.git", - "reference": "93488df36b1c4e2fc16c630fb77c110bafffb141" + "reference": "2e8290104468a8d90855067d8644a32114474452" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/contract/v3.0.10/hyperf-contract-v3.0.10.zip", - "reference": "93488df36b1c4e2fc16c630fb77c110bafffb141", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/contract/zipball/2e8290104468a8d90855067d8644a32114474452", + "reference": "2e8290104468a8d90855067d8644a32114474452", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.0" @@ -1880,6 +2340,7 @@ "Hyperf\\Contract\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1890,21 +2351,33 @@ "php", "swoole" ], - "time": "2023-03-10T04:21:37+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-09-19T01:50:18+00:00" }, { "name": "hyperf/coordinator", - "version": "v3.0.22", + "version": "v3.0.37", "source": { "type": "git", "url": "https://github.com/hyperf/coordinator.git", - "reference": "a49c2d22995b4115e8b21f1de58b992047c4d0fd" + "reference": "423f38c113982fd5faaf69f5c31c2a655da6b144" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/coordinator/v3.0.22/hyperf-coordinator-v3.0.22.zip", - "reference": "a49c2d22995b4115e8b21f1de58b992047c4d0fd", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/coordinator/zipball/423f38c113982fd5faaf69f5c31c2a655da6b144", + "reference": "423f38c113982fd5faaf69f5c31c2a655da6b144", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/engine": "^1.2|^2.0", @@ -1921,6 +2394,7 @@ "Hyperf\\Coordinator\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1932,21 +2406,33 @@ "php", "swoole" ], - "time": "2023-05-26T13:44:16+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-09-19T01:50:18+00:00" }, { "name": "hyperf/coroutine", - "version": "v3.0.16", + "version": "v3.0.37", "source": { "type": "git", "url": "https://github.com/hyperf/coroutine.git", - "reference": "4944ce69d5f35407e5dbcf7e9991f1db3366f254" + "reference": "f7ecb9d25a6ae7bd927a1e161547d44e29e157f4" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/coroutine/v3.0.16/hyperf-coroutine-v3.0.16.zip", - "reference": "4944ce69d5f35407e5dbcf7e9991f1db3366f254", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/coroutine/zipball/f7ecb9d25a6ae7bd927a1e161547d44e29e157f4", + "reference": "f7ecb9d25a6ae7bd927a1e161547d44e29e157f4", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/context": "~3.0.0", @@ -1968,6 +2454,7 @@ "Hyperf\\Coroutine\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1979,21 +2466,33 @@ "php", "swoole" ], - "time": "2023-04-12T05:34:25+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-09-19T01:50:18+00:00" }, { "name": "hyperf/crontab", - "version": "v3.0.18", + "version": "v3.0.45", "source": { "type": "git", "url": "https://github.com/hyperf/crontab.git", - "reference": "8cd73b5f6c4f2e673f9d8a116d0f8a53c2f0df7a" + "reference": "f5593a9a791707cf277512b734fad394faf27fbd" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/crontab/v3.0.18/hyperf-crontab-v3.0.18.zip", - "reference": "8cd73b5f6c4f2e673f9d8a116d0f8a53c2f0df7a", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/crontab/zipball/f5593a9a791707cf277512b734fad394faf27fbd", + "reference": "f5593a9a791707cf277512b734fad394faf27fbd", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/framework": "~3.0.0", @@ -2020,6 +2519,7 @@ "Hyperf\\Crontab\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2031,21 +2531,33 @@ "php", "swoole" ], - "time": "2023-04-26T03:02:31+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-11-20T08:42:11+00:00" }, { "name": "hyperf/database", - "version": "v3.0.30", + "version": "v3.0.45", "source": { "type": "git", "url": "https://github.com/hyperf/database.git", - "reference": "2b6178219951df7044417de1412a20a08cc331fa" + "reference": "6b50e0a4fd9032a88e63334f13360f49d1801152" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/database/v3.0.30/hyperf-database-v3.0.30.zip", - "reference": "2b6178219951df7044417de1412a20a08cc331fa", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/database/zipball/6b50e0a4fd9032a88e63334f13360f49d1801152", + "reference": "6b50e0a4fd9032a88e63334f13360f49d1801152", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/code-parser": "~3.0.0", @@ -2075,6 +2587,7 @@ "Hyperf\\Database\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2085,7 +2598,13 @@ "hyperf", "php" ], - "time": "2023-07-17T12:16:22+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-11-21T03:34:38+00:00" }, { "name": "hyperf/db-connection", @@ -2097,9 +2616,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/db-connection/v3.0.18/hyperf-db-connection-v3.0.18.zip", + "url": "https://api.github.com/repos/hyperf/db-connection/zipball/e4264bbaaa4b2f6a02096400ee05e4289b6a5509", "reference": "e4264bbaaa4b2f6a02096400ee05e4289b6a5509", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/database": "~3.0.0", @@ -2126,6 +2651,7 @@ "Hyperf\\DbConnection\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2137,21 +2663,33 @@ "hyperf", "php" ], + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, "time": "2023-04-26T03:02:31+00:00" }, { "name": "hyperf/di", - "version": "v3.0.24", + "version": "v3.0.42", "source": { "type": "git", "url": "https://github.com/hyperf/di.git", - "reference": "4fa46897ffe0e1f2d1260a65a1e25dadaacbdcd2" + "reference": "f42252d74c1dc74d75bcd62e218f3be18a4e676e" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/di/v3.0.24/hyperf-di-v3.0.24.zip", - "reference": "4fa46897ffe0e1f2d1260a65a1e25dadaacbdcd2", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/di/zipball/f42252d74c1dc74d75bcd62e218f3be18a4e676e", + "reference": "f42252d74c1dc74d75bcd62e218f3be18a4e676e", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "doctrine/instantiator": "^1.0", @@ -2183,6 +2721,7 @@ "Hyperf\\Di\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2195,21 +2734,33 @@ "php", "swoole" ], - "time": "2023-06-05T07:53:17+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-11-02T09:26:27+00:00" }, { "name": "hyperf/dispatcher", - "version": "v3.0.24", + "version": "v3.0.37", "source": { "type": "git", "url": "https://github.com/hyperf/dispatcher.git", - "reference": "af232ac01c3dcb91ad565d6202e3e3bfb2fcf560" + "reference": "9132a800f3156aeb1c54a34ce5dd094046c18062" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/dispatcher/v3.0.24/hyperf-dispatcher-v3.0.24.zip", - "reference": "af232ac01c3dcb91ad565d6202e3e3bfb2fcf560", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/dispatcher/zipball/9132a800f3156aeb1c54a34ce5dd094046c18062", + "reference": "9132a800f3156aeb1c54a34ce5dd094046c18062", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/contract": "~3.0.0", @@ -2232,6 +2783,7 @@ "Hyperf\\Dispatcher\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2245,7 +2797,13 @@ "php", "swoole" ], - "time": "2023-06-04T02:14:26+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-09-19T01:50:18+00:00" }, { "name": "hyperf/engine", @@ -2257,9 +2815,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/engine/v1.10.0/hyperf-engine-v1.10.0.zip", + "url": "https://api.github.com/repos/hyperf/engine/zipball/da38c8708f3d78d1490331e432d385489720568f", "reference": "da38c8708f3d78d1490331e432d385489720568f", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.0" @@ -2289,6 +2853,7 @@ "Hyperf\\Engine\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2296,21 +2861,31 @@ "hyperf", "php" ], + "support": { + "issues": "https://github.com/hyperf/engine/issues", + "source": "https://github.com/hyperf/engine/tree/v1.10.0" + }, "time": "2023-04-07T07:39:09+00:00" }, { "name": "hyperf/event", - "version": "v3.0.0", + "version": "v3.0.37", "source": { "type": "git", "url": "https://github.com/hyperf/event.git", - "reference": "e10cd5e8b7f02bad9c542c3592b495debba9a39a" + "reference": "76534832f51db7bf74f0dcd0a8dd9720e6e8080b" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/event/v3.0.0/hyperf-event-v3.0.0.zip", - "reference": "e10cd5e8b7f02bad9c542c3592b495debba9a39a", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/event/zipball/76534832f51db7bf74f0dcd0a8dd9720e6e8080b", + "reference": "76534832f51db7bf74f0dcd0a8dd9720e6e8080b", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/contract": "~3.0.0", @@ -2334,6 +2909,7 @@ "Hyperf\\Event\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2345,21 +2921,33 @@ "php", "swoole" ], - "time": "2022-10-13T02:40:13+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-09-19T01:50:18+00:00" }, { "name": "hyperf/exception-handler", - "version": "v3.0.24", + "version": "v3.0.37", "source": { "type": "git", "url": "https://github.com/hyperf/exception-handler.git", - "reference": "bcadcd90f2d4f71e8e85f769256afdd4ea712ad3" + "reference": "baf189572b529e9f4223cc31c23a20232179db05" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/exception-handler/v3.0.24/hyperf-exception-handler-v3.0.24.zip", - "reference": "bcadcd90f2d4f71e8e85f769256afdd4ea712ad3", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/exception-handler/zipball/baf189572b529e9f4223cc31c23a20232179db05", + "reference": "baf189572b529e9f4223cc31c23a20232179db05", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/contract": "~3.0.0", @@ -2384,6 +2972,7 @@ "Hyperf\\ExceptionHandler\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2394,21 +2983,33 @@ "php", "swoole" ], - "time": "2023-06-04T02:14:26+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-09-19T01:50:18+00:00" }, { "name": "hyperf/framework", - "version": "v3.0.23", + "version": "v3.0.45", "source": { "type": "git", "url": "https://github.com/hyperf/framework.git", - "reference": "38e0fdfd097e73efbe7391795a695cea874d4ca6" + "reference": "7ea476d31ffccd21c069ae0d322e1c4055270655" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/framework/v3.0.23/hyperf-framework-v3.0.23.zip", - "reference": "38e0fdfd097e73efbe7391795a695cea874d4ca6", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/framework/zipball/7ea476d31ffccd21c069ae0d322e1c4055270655", + "reference": "7ea476d31ffccd21c069ae0d322e1c4055270655", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "fig/http-message-util": "^1.1.2", @@ -2441,6 +3042,7 @@ "Hyperf\\Framework\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2454,21 +3056,33 @@ "php", "swoole" ], - "time": "2023-05-30T01:25:37+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-11-20T06:05:22+00:00" }, { "name": "hyperf/guzzle", - "version": "v3.0.24", + "version": "v3.0.37", "source": { "type": "git", "url": "https://github.com/hyperf/guzzle.git", - "reference": "7791900eed289bd6584e2e52d2ec02b47f85740c" + "reference": "312d15dd1c94e423da3ab959363fa5c42e131c52" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/guzzle/v3.0.24/hyperf-guzzle-v3.0.24.zip", - "reference": "7791900eed289bd6584e2e52d2ec02b47f85740c", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/guzzle/zipball/312d15dd1c94e423da3ab959363fa5c42e131c52", + "reference": "312d15dd1c94e423da3ab959363fa5c42e131c52", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "guzzlehttp/guzzle": "^6.3|^7.0", @@ -2494,6 +3108,7 @@ "Hyperf\\Guzzle\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2504,21 +3119,31 @@ "php", "swoole" ], - "time": "2023-06-04T02:14:26+00:00" + "support": { + "issues": "https://github.com/hyperf/guzzle/issues", + "source": "https://github.com/hyperf/guzzle/tree/v3.0.37" + }, + "time": "2023-09-19T01:50:18+00:00" }, { "name": "hyperf/http-message", - "version": "v3.0.18", + "version": "v3.0.37", "source": { "type": "git", "url": "https://github.com/hyperf/http-message.git", - "reference": "23affffb7a15842f990144b5bd49641e4de8dda4" + "reference": "0874d23ae88821028bb0a2ac1906a1acd7a9be58" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/http-message/v3.0.18/hyperf-http-message-v3.0.18.zip", - "reference": "23affffb7a15842f990144b5bd49641e4de8dda4", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/http-message/zipball/0874d23ae88821028bb0a2ac1906a1acd7a9be58", + "reference": "0874d23ae88821028bb0a2ac1906a1acd7a9be58", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/codec": "~3.0.0", @@ -2546,6 +3171,7 @@ "Hyperf\\HttpMessage\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2556,21 +3182,31 @@ "php", "swoole" ], - "time": "2023-04-26T03:02:31+00:00" + "support": { + "issues": "https://github.com/hyperf/http-message/issues", + "source": "https://github.com/hyperf/http-message/tree/v3.0.37" + }, + "time": "2023-09-19T01:50:18+00:00" }, { "name": "hyperf/http-server", - "version": "v3.0.24", + "version": "v3.0.45", "source": { "type": "git", "url": "https://github.com/hyperf/http-server.git", - "reference": "d8a3256a6b32879b6d7bfd308cc1dca9d8d27de1" + "reference": "245fea0328b91774af83114785dd89d947e09bf9" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/http-server/v3.0.24/hyperf-http-server-v3.0.24.zip", - "reference": "d8a3256a6b32879b6d7bfd308cc1dca9d8d27de1", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/http-server/zipball/245fea0328b91774af83114785dd89d947e09bf9", + "reference": "245fea0328b91774af83114785dd89d947e09bf9", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/codec": "~3.0.0", @@ -2607,6 +3243,7 @@ "Hyperf\\HttpServer\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2619,21 +3256,33 @@ "php", "swoole" ], - "time": "2023-06-06T12:33:49+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-11-22T06:13:01+00:00" }, { "name": "hyperf/logger", - "version": "v3.0.20", + "version": "v3.0.37", "source": { "type": "git", "url": "https://github.com/hyperf/logger.git", - "reference": "24a3b87f646ab6684310ead0b277e2464c6c5cab" + "reference": "08a525e65f48e4b99c00e45d7bf66c77cbaef415" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/logger/v3.0.20/hyperf-logger-v3.0.20.zip", - "reference": "24a3b87f646ab6684310ead0b277e2464c6c5cab", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/logger/zipball/08a525e65f48e4b99c00e45d7bf66c77cbaef415", + "reference": "08a525e65f48e4b99c00e45d7bf66c77cbaef415", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/contract": "~3.0.0", @@ -2658,6 +3307,7 @@ "Hyperf\\Logger\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2668,21 +3318,33 @@ "logger", "php" ], - "time": "2023-05-09T10:27:25+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-09-19T01:50:18+00:00" }, { "name": "hyperf/macroable", - "version": "v3.0.0", + "version": "v3.0.37", "source": { "type": "git", "url": "https://github.com/hyperf/macroable.git", - "reference": "822de69ba0c75aa9767a9cea487b84bf31d5240a" + "reference": "3bfa6099679b569880572ec1361cdb0fe3dcb8f2" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/macroable/v3.0.0/hyperf-macroable-v3.0.0.zip", - "reference": "822de69ba0c75aa9767a9cea487b84bf31d5240a", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/macroable/zipball/3bfa6099679b569880572ec1361cdb0fe3dcb8f2", + "reference": "3bfa6099679b569880572ec1361cdb0fe3dcb8f2", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.4" @@ -2698,6 +3360,7 @@ "Hyperf\\Macroable\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2709,21 +3372,33 @@ "php", "swoole" ], - "time": "2022-11-01T02:50:54+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-09-19T01:50:18+00:00" }, { "name": "hyperf/memory", - "version": "v3.0.0", + "version": "v3.0.37", "source": { "type": "git", "url": "https://github.com/hyperf/memory.git", - "reference": "c7217c9b5177562329074d332f9e13b40693bdfe" + "reference": "2cba607e04ff416dad61e8a4c43b8fa8870c7f91" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/memory/v3.0.0/hyperf-memory-v3.0.0.zip", - "reference": "c7217c9b5177562329074d332f9e13b40693bdfe", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/memory/zipball/2cba607e04ff416dad61e8a4c43b8fa8870c7f91", + "reference": "2cba607e04ff416dad61e8a4c43b8fa8870c7f91", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.4" @@ -2742,6 +3417,7 @@ "Hyperf\\Memory\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2753,21 +3429,33 @@ "php", "swoole" ], - "time": "2022-11-01T02:50:54+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-09-19T01:50:18+00:00" }, { "name": "hyperf/model-listener", - "version": "v3.0.18", + "version": "v3.0.37", "source": { "type": "git", "url": "https://github.com/hyperf/model-listener.git", - "reference": "2167252ea7bdc8626cfd3d44f0f4709502c10432" + "reference": "8aae9f715a1972a921ebc3aca915dd937f79739d" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/model-listener/v3.0.18/hyperf-model-listener-v3.0.18.zip", - "reference": "2167252ea7bdc8626cfd3d44f0f4709502c10432", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/model-listener/zipball/8aae9f715a1972a921ebc3aca915dd937f79739d", + "reference": "8aae9f715a1972a921ebc3aca915dd937f79739d", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/contract": "~3.0.0", @@ -2793,6 +3481,7 @@ "Hyperf\\ModelListener\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2804,21 +3493,33 @@ "php", "swoole" ], - "time": "2023-04-26T03:02:31+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-09-19T01:50:18+00:00" }, { "name": "hyperf/paginator", - "version": "v3.0.18", + "version": "v3.0.37", "source": { "type": "git", "url": "https://github.com/hyperf/paginator.git", - "reference": "5e732c60fb47be062970a2d436e3bee341f15302" + "reference": "aed966d7c1df6b559967b541ebba375dc4c95dea" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/paginator/v3.0.18/hyperf-paginator-v3.0.18.zip", - "reference": "5e732c60fb47be062970a2d436e3bee341f15302", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/paginator/zipball/aed966d7c1df6b559967b541ebba375dc4c95dea", + "reference": "aed966d7c1df6b559967b541ebba375dc4c95dea", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/contract": "~3.0.0", @@ -2845,6 +3546,7 @@ "Hyperf\\Paginator\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2855,21 +3557,33 @@ "paginator", "php" ], - "time": "2023-04-26T03:02:31+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-09-19T01:50:18+00:00" }, { "name": "hyperf/pipeline", - "version": "v3.0.16", + "version": "v3.0.37", "source": { "type": "git", "url": "https://github.com/hyperf/pipeline.git", - "reference": "a3f48561f5cfef5f697e7005446e16560024a443" + "reference": "90f3aa4d4635834c2309c5e208e3961e7f14db39" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/pipeline/v3.0.16/hyperf-pipeline-v3.0.16.zip", - "reference": "a3f48561f5cfef5f697e7005446e16560024a443", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/pipeline/zipball/90f3aa4d4635834c2309c5e208e3961e7f14db39", + "reference": "90f3aa4d4635834c2309c5e208e3961e7f14db39", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.0", @@ -2886,6 +3600,7 @@ "Hyperf\\Pipeline\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2897,21 +3612,33 @@ "pipeline", "swoole" ], - "time": "2023-04-11T07:57:32+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-09-19T01:50:18+00:00" }, { "name": "hyperf/pool", - "version": "v3.0.18", + "version": "v3.0.37", "source": { "type": "git", "url": "https://github.com/hyperf/pool.git", - "reference": "44c87d46a1619554deed3879e8db675654ffd051" + "reference": "0bd9cf0e6e40ca9876d5e851967d5aa195fc30b7" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/pool/v3.0.18/hyperf-pool-v3.0.18.zip", - "reference": "44c87d46a1619554deed3879e8db675654ffd051", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/pool/zipball/0bd9cf0e6e40ca9876d5e851967d5aa195fc30b7", + "reference": "0bd9cf0e6e40ca9876d5e851967d5aa195fc30b7", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/contract": "~3.0.0", @@ -2934,6 +3661,7 @@ "Hyperf\\Pool\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2945,21 +3673,33 @@ "php", "swoole" ], - "time": "2023-04-26T03:02:31+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-09-19T01:50:18+00:00" }, { "name": "hyperf/process", - "version": "v3.0.22", + "version": "v3.0.37", "source": { "type": "git", "url": "https://github.com/hyperf/process.git", - "reference": "e804c32bf7497bedcdee28994257aeaf71a1fde7" + "reference": "7e63f9eb1b832ae8d38b7665476d45b2cf97fb94" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/process/v3.0.22/hyperf-process-v3.0.22.zip", - "reference": "e804c32bf7497bedcdee28994257aeaf71a1fde7", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/process/zipball/7e63f9eb1b832ae8d38b7665476d45b2cf97fb94", + "reference": "7e63f9eb1b832ae8d38b7665476d45b2cf97fb94", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/contract": "~3.0.0", @@ -2988,6 +3728,7 @@ "Hyperf\\Process\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2998,24 +3739,36 @@ "php", "process" ], - "time": "2023-05-27T06:08:52+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-09-19T01:50:18+00:00" }, { "name": "hyperf/redis", - "version": "v3.0.21", + "version": "v3.0.40", "source": { "type": "git", "url": "https://github.com/hyperf/redis.git", - "reference": "65ec6cbecb64793670ef1a512bd15369b683c746" + "reference": "df1c2a1fc19b9c8b4752219eca31562719d3996f" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/redis/v3.0.21/hyperf-redis-v3.0.21.zip", - "reference": "65ec6cbecb64793670ef1a512bd15369b683c746", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/redis/zipball/df1c2a1fc19b9c8b4752219eca31562719d3996f", + "reference": "df1c2a1fc19b9c8b4752219eca31562719d3996f", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "ext-redis": "*", + "ext-redis": "^5.0|^6.0", "hyperf/contract": "~3.0.0", "hyperf/pool": "~3.0.0", "hyperf/support": "~3.0.0", @@ -3042,6 +3795,7 @@ "Hyperf\\Redis\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -3053,21 +3807,33 @@ "pool", "redis" ], - "time": "2023-05-15T04:08:45+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-10-13T13:04:18+00:00" }, { "name": "hyperf/serializer", - "version": "v3.0.0", + "version": "v3.0.37", "source": { "type": "git", "url": "https://github.com/hyperf/serializer.git", - "reference": "c4efedaa072c5ffe196e95e0c74a9d90fd1e4811" + "reference": "48f6192b320930266f53a030e5d6231cf0b77772" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/serializer/v3.0.0/hyperf-serializer-v3.0.0.zip", - "reference": "c4efedaa072c5ffe196e95e0c74a9d90fd1e4811", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/serializer/zipball/48f6192b320930266f53a030e5d6231cf0b77772", + "reference": "48f6192b320930266f53a030e5d6231cf0b77772", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/contract": "~3.0.0", @@ -3092,6 +3858,7 @@ "Hyperf\\Serializer\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -3103,21 +3870,33 @@ "swoole", "tappable" ], - "time": "2023-04-24T07:07:56+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-09-19T01:50:18+00:00" }, { "name": "hyperf/server", - "version": "v3.0.24", + "version": "v3.0.39", "source": { "type": "git", "url": "https://github.com/hyperf/server.git", - "reference": "0a2bfa37355631a0f0484bfd08d815ad858d279c" + "reference": "b8e305dc7583762a5e3815b1da984e7cf2f13388" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/server/v3.0.24/hyperf-server-v3.0.24.zip", - "reference": "0a2bfa37355631a0f0484bfd08d815ad858d279c", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/server/zipball/b8e305dc7583762a5e3815b1da984e7cf2f13388", + "reference": "b8e305dc7583762a5e3815b1da984e7cf2f13388", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/contract": "~3.0.0", @@ -3149,6 +3928,7 @@ "Hyperf\\Server\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -3160,21 +3940,33 @@ "server", "swoole" ], - "time": "2023-06-07T05:27:29+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-10-08T15:14:41+00:00" }, { "name": "hyperf/snowflake", - "version": "v3.0.18", + "version": "v3.0.37", "source": { "type": "git", "url": "https://github.com/hyperf/snowflake.git", - "reference": "76d7ef7683c964d17d4cd30815bcb0509428adf3" + "reference": "217435f1bfeea1692417779385dc06d15bfa11ee" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/snowflake/v3.0.18/hyperf-snowflake-v3.0.18.zip", - "reference": "76d7ef7683c964d17d4cd30815bcb0509428adf3", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/snowflake/zipball/217435f1bfeea1692417779385dc06d15bfa11ee", + "reference": "217435f1bfeea1692417779385dc06d15bfa11ee", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/contract": "~3.0.0", @@ -3199,6 +3991,7 @@ "Hyperf\\Snowflake\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -3208,23 +4001,36 @@ "php", "snowflake" ], - "time": "2023-04-26T03:02:31+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-09-19T01:50:18+00:00" }, { "name": "hyperf/stringable", - "version": "v3.0.31", + "version": "v3.0.40", "source": { "type": "git", "url": "https://github.com/hyperf/stringable.git", - "reference": "1bcea1466a87267c780cd67df05de0127c237dcd" + "reference": "103f3a9e625536b8c2f79972c90494d765d0a32a" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/stringable/v3.0.31/hyperf-stringable-v3.0.31.zip", - "reference": "1bcea1466a87267c780cd67df05de0127c237dcd", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/stringable/zipball/103f3a9e625536b8c2f79972c90494d765d0a32a", + "reference": "103f3a9e625536b8c2f79972c90494d765d0a32a", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { + "ext-mbstring": "*", "hyperf/collection": "~3.0.0", "hyperf/conditionable": "~3.0.0", "hyperf/macroable": "~3.0.0", @@ -3250,6 +4056,7 @@ "Hyperf\\Stringable\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -3261,21 +4068,33 @@ "stringable", "swoole" ], - "time": "2023-07-25T12:44:39+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-10-18T01:12:57+00:00" }, { "name": "hyperf/support", - "version": "v3.0.24", + "version": "v3.0.43", "source": { "type": "git", "url": "https://github.com/hyperf/support.git", - "reference": "576838e7185bf8eb749920a3285b399cb9c3a24b" + "reference": "e3690f00a011185472c8d5a59e2c929a50400e78" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/support/v3.0.24/hyperf-support-v3.0.24.zip", - "reference": "576838e7185bf8eb749920a3285b399cb9c3a24b", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/support/zipball/e3690f00a011185472c8d5a59e2c929a50400e78", + "reference": "e3690f00a011185472c8d5a59e2c929a50400e78", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/collection": "~3.0.0", @@ -3303,6 +4122,7 @@ "Hyperf\\Support\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -3314,21 +4134,33 @@ "support", "swoole" ], - "time": "2023-06-08T06:55:09+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-11-06T07:31:50+00:00" }, { "name": "hyperf/tappable", - "version": "v3.0.0", + "version": "v3.0.37", "source": { "type": "git", "url": "https://github.com/hyperf/tappable.git", - "reference": "4f90b9026a5bdce5b3e6be29a2ab7a86c54f372a" + "reference": "00e9c0e2d90920aff60a67ffb122ac1842648a8d" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/tappable/v3.0.0/hyperf-tappable-v3.0.0.zip", - "reference": "4f90b9026a5bdce5b3e6be29a2ab7a86c54f372a", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/tappable/zipball/00e9c0e2d90920aff60a67ffb122ac1842648a8d", + "reference": "00e9c0e2d90920aff60a67ffb122ac1842648a8d", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.4" @@ -3347,6 +4179,7 @@ "Hyperf\\Tappable\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -3358,21 +4191,33 @@ "swoole", "tappable" ], - "time": "2023-03-28T15:02:39+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-09-19T01:50:18+00:00" }, { "name": "hyperf/translation", - "version": "v3.0.22", + "version": "v3.0.42", "source": { "type": "git", "url": "https://github.com/hyperf/translation.git", - "reference": "d8043633db04c81490b87c29007f3e53307b3aa1" + "reference": "64505a0079af41b415a067e22d0aa6be331e2323" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/translation/v3.0.22/hyperf-translation-v3.0.22.zip", - "reference": "d8043633db04c81490b87c29007f3e53307b3aa1", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/translation/zipball/64505a0079af41b415a067e22d0aa6be331e2323", + "reference": "64505a0079af41b415a067e22d0aa6be331e2323", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/contract": "~3.0.0", @@ -3399,6 +4244,7 @@ "Hyperf\\Translation\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -3407,21 +4253,31 @@ "hyperf", "translation" ], - "time": "2023-05-24T13:51:45+00:00" + "support": { + "issues": "https://github.com/hyperf/translation/issues", + "source": "https://github.com/hyperf/translation/tree/v3.0.42" + }, + "time": "2023-11-02T13:31:39+00:00" }, { "name": "hyperf/utils", - "version": "v3.0.18", + "version": "v3.0.37", "source": { "type": "git", "url": "https://github.com/hyperf/utils.git", - "reference": "2e59cef3dd562053fe7c9b2a41e7243b4ee23bd6" + "reference": "1b8f487ce2290d4d2a2d137c92f10e10e0d8330b" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/utils/v3.0.18/hyperf-utils-v3.0.18.zip", - "reference": "2e59cef3dd562053fe7c9b2a41e7243b4ee23bd6", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/utils/zipball/1b8f487ce2290d4d2a2d137c92f10e10e0d8330b", + "reference": "1b8f487ce2290d4d2a2d137c92f10e10e0d8330b", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "doctrine/inflector": "^2.0", @@ -3463,6 +4319,7 @@ "Hyperf\\Utils\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -3474,31 +4331,45 @@ "swoole", "utils" ], - "time": "2023-04-26T03:02:31+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-09-19T01:50:18+00:00" }, { "name": "hyperf/validation", - "version": "v3.0.28", + "version": "v3.0.44", "source": { "type": "git", "url": "https://github.com/hyperf/validation.git", - "reference": "c1aa358eabf24148487602005e49565bbf02979b" + "reference": "6cfed667a5273f725daf7a17617b0376c0008b1f" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/validation/v3.0.28/hyperf-validation-v3.0.28.zip", - "reference": "c1aa358eabf24148487602005e49565bbf02979b", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/validation/zipball/6cfed667a5273f725daf7a17617b0376c0008b1f", + "reference": "6cfed667a5273f725daf7a17617b0376c0008b1f", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "egulias/email-validator": "^3.0", "hyperf/collection": "~3.0.0", + "hyperf/conditionable": "~3.0.0", "hyperf/contract": "~3.0.0", "hyperf/database": "~3.0.0", "hyperf/di": "~3.0.0", "hyperf/framework": "~3.0.0", "hyperf/http-server": "~3.0.0", "hyperf/macroable": "~3.0.0", + "hyperf/stringable": "~3.0.0", "hyperf/support": "~3.0.0", "hyperf/tappable": "~3.0.0", "hyperf/translation": "~3.0.0", @@ -3523,6 +4394,7 @@ "Hyperf\\Validation\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -3531,7 +4403,11 @@ "hyperf", "validation" ], - "time": "2023-07-03T04:37:00+00:00" + "support": { + "issues": "https://github.com/hyperf/validation/issues", + "source": "https://github.com/hyperf/validation/tree/v3.0.44" + }, + "time": "2023-11-16T04:02:32+00:00" }, { "name": "intervention/image", @@ -3543,9 +4419,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/intervention/image/2.7.2/intervention-image-2.7.2.zip", + "url": "https://api.github.com/repos/Intervention/image/zipball/04be355f8d6734c826045d02a1079ad658322dad", "reference": "04be355f8d6734c826045d02a1079ad658322dad", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-fileinfo": "*", @@ -3580,6 +4462,7 @@ "Intervention\\Image\\": "src/Intervention/Image" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -3600,6 +4483,10 @@ "thumbnail", "watermark" ], + "support": { + "issues": "https://github.com/Intervention/image/issues", + "source": "https://github.com/Intervention/image/tree/2.7.2" + }, "funding": [ { "url": "https://paypal.me/interventionio", @@ -3614,21 +4501,27 @@ }, { "name": "laminas/laminas-mime", - "version": "2.11.0", + "version": "2.12.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-mime.git", - "reference": "60ec04b755821c79c1987ce291b44e69f2c0831f" + "reference": "08cc544778829b7d68d27a097885bd6e7130135e" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/laminas/laminas-mime/2.11.0/laminas-laminas-mime-2.11.0.zip", - "reference": "60ec04b755821c79c1987ce291b44e69f2c0831f", - "shasum": "" + "url": "https://api.github.com/repos/laminas/laminas-mime/zipball/08cc544778829b7d68d27a097885bd6e7130135e", + "reference": "08cc544778829b7d68d27a097885bd6e7130135e", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "laminas/laminas-stdlib": "^2.7 || ^3.0", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-mime": "*" @@ -3647,6 +4540,7 @@ "Laminas\\Mime\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -3656,13 +4550,21 @@ "laminas", "mime" ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-mime/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-mime/issues", + "rss": "https://github.com/laminas/laminas-mime/releases.atom", + "source": "https://github.com/laminas/laminas-mime" + }, "funding": [ { "url": "https://funding.communitybridge.org/projects/laminas-project", "type": "community_bridge" } ], - "time": "2022-10-18T08:38:15+00:00" + "time": "2023-11-02T16:47:19+00:00" }, { "name": "laminas/laminas-stdlib", @@ -3674,9 +4576,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/laminas/laminas-stdlib/3.16.1/laminas-laminas-stdlib-3.16.1.zip", + "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/f4f773641807c7ccee59b758bfe4ac4ba33ecb17", "reference": "f4f773641807c7ccee59b758bfe4ac4ba33ecb17", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "~8.0.0 || ~8.1.0 || ~8.2.0" @@ -3697,6 +4605,7 @@ "Laminas\\Stdlib\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -3706,6 +4615,14 @@ "laminas", "stdlib" ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-stdlib/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-stdlib/issues", + "rss": "https://github.com/laminas/laminas-stdlib/releases.atom", + "source": "https://github.com/laminas/laminas-stdlib" + }, "funding": [ { "url": "https://funding.communitybridge.org/projects/laminas-project", @@ -3724,9 +4641,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/lizhichao/one-sm/1.10/lizhichao-one-sm-1.10.zip", + "url": "https://api.github.com/repos/lizhichao/sm/zipball/687a012a44a5bfd4d9143a0234e1060543be455a", "reference": "687a012a44a5bfd4d9143a0234e1060543be455a", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=5.6" @@ -3737,6 +4660,7 @@ "OneSm\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "Apache-2.0" ], @@ -3751,6 +4675,10 @@ "php", "sm3" ], + "support": { + "issues": "https://github.com/lizhichao/sm/issues", + "source": "https://github.com/lizhichao/sm/tree/1.10" + }, "funding": [ { "url": "https://www.vicsdf.com/img/w.jpg", @@ -3765,17 +4693,23 @@ }, { "name": "monolog/monolog", - "version": "2.9.1", + "version": "2.9.2", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1" + "reference": "437cb3628f4cf6042cc10ae97fc2b8472e48ca1f" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/monolog/monolog/2.9.1/monolog-monolog-2.9.1.zip", - "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1", - "shasum": "" + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/437cb3628f4cf6042cc10ae97fc2b8472e48ca1f", + "reference": "437cb3628f4cf6042cc10ae97fc2b8472e48ca1f", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.2", @@ -3831,6 +4765,7 @@ "Monolog\\": "src/Monolog" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -3848,6 +4783,10 @@ "logging", "psr-3" ], + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/2.9.2" + }, "funding": [ { "url": "https://github.com/Seldaek", @@ -3858,32 +4797,43 @@ "type": "tidelift" } ], - "time": "2023-02-06T13:44:46+00:00" + "time": "2023-10-27T15:25:26+00:00" }, { "name": "nesbot/carbon", - "version": "2.68.1", + "version": "2.72.1", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "4f991ed2a403c85efbc4f23eb4030063fdbe01da" + "reference": "2b3b3db0a2d0556a177392ff1a3bf5608fa09f78" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/nesbot/carbon/2.68.1/nesbot-carbon-2.68.1.zip", - "reference": "4f991ed2a403c85efbc4f23eb4030063fdbe01da", - "shasum": "" + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/2b3b3db0a2d0556a177392ff1a3bf5608fa09f78", + "reference": "2b3b3db0a2d0556a177392ff1a3bf5608fa09f78", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { + "carbonphp/carbon-doctrine-types": "*", "ext-json": "*", "php": "^7.1.8 || ^8.0", + "psr/clock": "^1.0", "symfony/polyfill-mbstring": "^1.0", "symfony/polyfill-php80": "^1.16", "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" }, + "provide": { + "psr/clock-implementation": "1.0" + }, "require-dev": { - "doctrine/dbal": "^2.0 || ^3.1.4", - "doctrine/orm": "^2.7", + "doctrine/dbal": "^2.0 || ^3.1.4 || ^4.0", + "doctrine/orm": "^2.7 || ^3.0", "friendsofphp/php-cs-fixer": "^3.0", "kylekatarnls/multi-tester": "^2.0", "ondrejmirtes/better-reflection": "*", @@ -3919,6 +4869,7 @@ "Carbon\\": "src/Carbon/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -3940,6 +4891,11 @@ "datetime", "time" ], + "support": { + "docs": "https://carbon.nesbot.com/docs", + "issues": "https://github.com/briannesbitt/Carbon/issues", + "source": "https://github.com/briannesbitt/Carbon" + }, "funding": [ { "url": "https://github.com/sponsors/kylekatarnls", @@ -3954,7 +4910,7 @@ "type": "tidelift" } ], - "time": "2023-06-20T18:29:04+00:00" + "time": "2023-12-08T23:47:49+00:00" }, { "name": "nikic/fast-route", @@ -3966,9 +4922,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/nikic/fast-route/v1.3.0/nikic-fast-route-v1.3.0.zip", + "url": "https://api.github.com/repos/nikic/FastRoute/zipball/181d480e08d9476e61381e04a71b34dc0432e812", "reference": "181d480e08d9476e61381e04a71b34dc0432e812", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=5.4.0" @@ -3985,6 +4947,7 @@ "FastRoute\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -3999,21 +4962,31 @@ "router", "routing" ], + "support": { + "issues": "https://github.com/nikic/FastRoute/issues", + "source": "https://github.com/nikic/FastRoute/tree/master" + }, "time": "2018-02-13T20:26:39+00:00" }, { "name": "nikic/php-parser", - "version": "v4.16.0", + "version": "v4.17.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "19526a33fb561ef417e822e85f08a00db4059c17" + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/nikic/php-parser/v4.16.0/nikic-php-parser-v4.16.0.zip", - "reference": "19526a33fb561ef417e822e85f08a00db4059c17", - "shasum": "" + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-tokenizer": "*", @@ -4037,6 +5010,7 @@ "PhpParser\\": "lib/PhpParser" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -4050,21 +5024,31 @@ "parser", "php" ], - "time": "2023-06-25T14:52:30+00:00" + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" + }, + "time": "2023-08-13T19:53:39+00:00" }, { "name": "nyholm/psr7", - "version": "1.8.0", + "version": "1.8.1", "source": { "type": "git", "url": "https://github.com/Nyholm/psr7.git", - "reference": "3cb4d163b58589e47b35103e8e5e6a6a475b47be" + "reference": "aa5fc277a4f5508013d571341ade0c3886d4d00e" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/nyholm/psr7/1.8.0/nyholm-psr7-1.8.0.zip", - "reference": "3cb4d163b58589e47b35103e8e5e6a6a475b47be", - "shasum": "" + "url": "https://api.github.com/repos/Nyholm/psr7/zipball/aa5fc277a4f5508013d571341ade0c3886d4d00e", + "reference": "aa5fc277a4f5508013d571341ade0c3886d4d00e", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.2", @@ -4094,6 +5078,7 @@ "Nyholm\\Psr7\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4113,6 +5098,10 @@ "psr-17", "psr-7" ], + "support": { + "issues": "https://github.com/Nyholm/psr7/issues", + "source": "https://github.com/Nyholm/psr7/tree/1.8.1" + }, "funding": [ { "url": "https://github.com/Zegnat", @@ -4123,26 +5112,32 @@ "type": "github" } ], - "time": "2023-05-02T11:26:24+00:00" + "time": "2023-11-13T09:31:12+00:00" }, { "name": "nyholm/psr7-server", - "version": "1.0.2", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/Nyholm/psr7-server.git", - "reference": "b846a689844cef114e8079d8c80f0afd96745ae3" + "reference": "4335801d851f554ca43fa6e7d2602141538854dc" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/nyholm/psr7-server/1.0.2/nyholm-psr7-server-1.0.2.zip", - "reference": "b846a689844cef114e8079d8c80f0afd96745ae3", - "shasum": "" + "url": "https://api.github.com/repos/Nyholm/psr7-server/zipball/4335801d851f554ca43fa6e7d2602141538854dc", + "reference": "4335801d851f554ca43fa6e7d2602141538854dc", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.1 || ^8.0", "psr/http-factory": "^1.0", - "psr/http-message": "^1.0" + "psr/http-message": "^1.0 || ^2.0" }, "require-dev": { "nyholm/nsa": "^1.1", @@ -4155,6 +5150,7 @@ "Nyholm\\Psr7Server\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4174,6 +5170,10 @@ "psr-17", "psr-7" ], + "support": { + "issues": "https://github.com/Nyholm/psr7-server/issues", + "source": "https://github.com/Nyholm/psr7-server/tree/1.1.0" + }, "funding": [ { "url": "https://github.com/Zegnat", @@ -4184,21 +5184,27 @@ "type": "github" } ], - "time": "2021-05-12T11:11:27+00:00" + "time": "2023-11-08T09:30:43+00:00" }, { "name": "overtrue/socialite", - "version": "4.8.1", + "version": "4.9.0", "source": { "type": "git", "url": "https://github.com/overtrue/socialite.git", - "reference": "470b781f288fbb24c8b105cfdada215d83d84d4b" + "reference": "dcbb1eed948fe036e6de8cdf0b125f5af1bc73fb" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/overtrue/socialite/4.8.1/overtrue-socialite-4.8.1.zip", - "reference": "470b781f288fbb24c8b105cfdada215d83d84d4b", - "shasum": "" + "url": "https://api.github.com/repos/overtrue/socialite/zipball/dcbb1eed948fe036e6de8cdf0b125f5af1bc73fb", + "reference": "dcbb1eed948fe036e6de8cdf0b125f5af1bc73fb", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-json": "*", @@ -4226,6 +5232,7 @@ "Overtrue\\Socialite\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4246,13 +5253,17 @@ "wechat", "weibo" ], + "support": { + "issues": "https://github.com/overtrue/socialite/issues", + "source": "https://github.com/overtrue/socialite/tree/4.9.0" + }, "funding": [ { "url": "https://github.com/overtrue", "type": "github" } ], - "time": "2023-07-17T08:56:49+00:00" + "time": "2023-09-01T11:01:34+00:00" }, { "name": "paragonie/constant_time_encoding", @@ -4264,9 +5275,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/paragonie/constant_time_encoding/v2.6.3/paragonie-constant_time_encoding-v2.6.3.zip", + "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/58c3f47f650c94ec05a151692652a868995d2938", "reference": "58c3f47f650c94ec05a151692652a868995d2938", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7|^8" @@ -4281,6 +5298,7 @@ "ParagonIE\\ConstantTime\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4313,6 +5331,11 @@ "hex2bin", "rfc4648" ], + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/constant_time_encoding/issues", + "source": "https://github.com/paragonie/constant_time_encoding" + }, "time": "2022-06-14T06:56:20+00:00" }, { @@ -4325,9 +5348,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/paragonie/random_compat/v9.99.100/paragonie-random_compat-v9.99.100.zip", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a", "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">= 7" @@ -4340,6 +5369,7 @@ "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." }, "type": "library", + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4357,26 +5387,37 @@ "pseudorandom", "random" ], + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/random_compat/issues", + "source": "https://github.com/paragonie/random_compat" + }, "time": "2020-10-15T08:29:30+00:00" }, { "name": "php-amqplib/php-amqplib", - "version": "v3.5.4", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/php-amqplib/php-amqplib.git", - "reference": "1aecbd182b35eb039667c50d7d92d71f105be779" + "reference": "fb84e99589de0904a25861451b0552f806284ee5" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/php-amqplib/php-amqplib/v3.5.4/php-amqplib-php-amqplib-v3.5.4.zip", - "reference": "1aecbd182b35eb039667c50d7d92d71f105be779", - "shasum": "" + "url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/fb84e99589de0904a25861451b0552f806284ee5", + "reference": "fb84e99589de0904a25861451b0552f806284ee5", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-mbstring": "*", "ext-sockets": "*", - "php": "^7.1||^8.0", + "php": "^7.2||^8.0", "phpseclib/phpseclib": "^2.0|^3.0" }, "conflict": { @@ -4402,6 +5443,7 @@ "PhpAmqpLib\\": "PhpAmqpLib/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "LGPL-2.1-or-later" ], @@ -4433,7 +5475,11 @@ "queue", "rabbitmq" ], - "time": "2023-07-01T11:25:08+00:00" + "support": { + "issues": "https://github.com/php-amqplib/php-amqplib/issues", + "source": "https://github.com/php-amqplib/php-amqplib/tree/v3.6.0" + }, + "time": "2023-10-22T15:02:02+00:00" }, { "name": "php-di/phpdoc-reader", @@ -4445,9 +5491,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/php-di/phpdoc-reader/2.2.1/php-di-phpdoc-reader-2.2.1.zip", + "url": "https://api.github.com/repos/PHP-DI/PhpDocReader/zipball/66daff34cbd2627740ffec9469ffbac9f8c8185c", "reference": "66daff34cbd2627740ffec9469ffbac9f8c8185c", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.2.0" @@ -4462,6 +5514,7 @@ "PhpDocReader\\": "src/PhpDocReader" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4470,28 +5523,38 @@ "phpdoc", "reflection" ], + "support": { + "issues": "https://github.com/PHP-DI/PhpDocReader/issues", + "source": "https://github.com/PHP-DI/PhpDocReader/tree/2.2.1" + }, "time": "2020-10-12T12:39:22+00:00" }, { "name": "phpoption/phpoption", - "version": "1.9.1", + "version": "1.9.2", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e" + "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/phpoption/phpoption/1.9.1/phpoption-phpoption-1.9.1.zip", - "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e", - "shasum": "" + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/80735db690fe4fc5c76dfa7f9b770634285fa820", + "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.2.5 || ^8.0" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" }, "type": "library", "extra": { @@ -4508,6 +5571,7 @@ "PhpOption\\": "src/PhpOption/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "Apache-2.0" ], @@ -4530,6 +5594,10 @@ "php", "type" ], + "support": { + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.9.2" + }, "funding": [ { "url": "https://github.com/GrahamCampbell", @@ -4540,21 +5608,27 @@ "type": "tidelift" } ], - "time": "2023-02-25T19:38:58+00:00" + "time": "2023-11-12T21:59:55+00:00" }, { "name": "phpseclib/phpseclib", - "version": "3.0.21", + "version": "3.0.34", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "4580645d3fc05c189024eb3b834c6c1e4f0f30a1" + "reference": "56c79f16a6ae17e42089c06a2144467acc35348a" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/phpseclib/phpseclib/3.0.21/phpseclib-phpseclib-3.0.21.zip", - "reference": "4580645d3fc05c189024eb3b834c6c1e4f0f30a1", - "shasum": "" + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/56c79f16a6ae17e42089c06a2144467acc35348a", + "reference": "56c79f16a6ae17e42089c06a2144467acc35348a", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "paragonie/constant_time_encoding": "^1|^2", @@ -4580,6 +5654,7 @@ "phpseclib3\\": "phpseclib/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4631,6 +5706,10 @@ "x.509", "x509" ], + "support": { + "issues": "https://github.com/phpseclib/phpseclib/issues", + "source": "https://github.com/phpseclib/phpseclib/tree/3.0.34" + }, "funding": [ { "url": "https://github.com/terrafrost", @@ -4645,7 +5724,7 @@ "type": "tidelift" } ], - "time": "2023-07-09T15:24:48+00:00" + "time": "2023-11-27T11:13:31+00:00" }, { "name": "psr/cache", @@ -4657,9 +5736,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/psr/cache/3.0.0/psr-cache-3.0.0.zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.0.0" @@ -4675,6 +5760,7 @@ "Psr\\Cache\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4690,8 +5776,65 @@ "psr", "psr-6" ], + "support": { + "source": "https://github.com/php-fig/cache/tree/3.0.0" + }, "time": "2021-02-03T23:26:27+00:00" }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" + }, { "name": "psr/container", "version": "2.0.2", @@ -4702,9 +5845,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/psr/container/2.0.2/psr-container-2.0.2.zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.4.0" @@ -4720,6 +5869,7 @@ "Psr\\Container\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4738,6 +5888,10 @@ "container-interop", "psr" ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" + }, "time": "2021-11-05T16:47:00+00:00" }, { @@ -4750,9 +5904,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/psr/event-dispatcher/1.0.0/psr-event-dispatcher-1.0.0.zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.2.0" @@ -4768,6 +5928,7 @@ "Psr\\EventDispatcher\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4783,21 +5944,31 @@ "psr", "psr-14" ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, "time": "2019-01-08T18:20:26+00:00" }, { "name": "psr/http-client", - "version": "1.0.2", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/php-fig/http-client.git", - "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31" + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/psr/http-client/1.0.2/psr-http-client-1.0.2.zip", - "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31", - "shasum": "" + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.0 || ^8.0", @@ -4814,6 +5985,7 @@ "Psr\\Http\\Client\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4831,7 +6003,10 @@ "psr", "psr-18" ], - "time": "2023-04-10T20:12:12+00:00" + "support": { + "source": "https://github.com/php-fig/http-client" + }, + "time": "2023-09-23T14:17:50+00:00" }, { "name": "psr/http-factory", @@ -4843,9 +6018,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/psr/http-factory/1.0.2/psr-http-factory-1.0.2.zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", "reference": "e616d01114759c4c489f93b099585439f795fe35", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.0.0", @@ -4862,6 +6043,7 @@ "Psr\\Http\\Message\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4882,21 +6064,30 @@ "request", "response" ], + "support": { + "source": "https://github.com/php-fig/http-factory/tree/1.0.2" + }, "time": "2023-04-10T20:10:41+00:00" }, { "name": "psr/http-message", - "version": "1.1", + "version": "2.0", "source": { "type": "git", "url": "https://github.com/php-fig/http-message.git", - "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba" + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/psr/http-message/1.1/psr-http-message-1.1.zip", - "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba", - "shasum": "" + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.2 || ^8.0" @@ -4904,7 +6095,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -4912,13 +6103,14 @@ "Psr\\Http\\Message\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for HTTP messages", @@ -4931,7 +6123,10 @@ "request", "response" ], - "time": "2023-04-04T09:50:52+00:00" + "support": { + "source": "https://github.com/php-fig/http-message/tree/2.0" + }, + "time": "2023-04-04T09:54:51+00:00" }, { "name": "psr/http-server-handler", @@ -4943,9 +6138,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/psr/http-server-handler/1.0.2/psr-http-server-handler-1.0.2.zip", + "url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/84c4fb66179be4caaf8e97bd239203245302e7d4", "reference": "84c4fb66179be4caaf8e97bd239203245302e7d4", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.0", @@ -4962,6 +6163,7 @@ "Psr\\Http\\Server\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4983,6 +6185,9 @@ "response", "server" ], + "support": { + "source": "https://github.com/php-fig/http-server-handler/tree/1.0.2" + }, "time": "2023-04-10T20:06:20+00:00" }, { @@ -4995,9 +6200,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/psr/http-server-middleware/1.0.2/psr-http-server-middleware-1.0.2.zip", + "url": "https://api.github.com/repos/php-fig/http-server-middleware/zipball/c1481f747daaa6a0782775cd6a8c26a1bf4a3829", "reference": "c1481f747daaa6a0782775cd6a8c26a1bf4a3829", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.0", @@ -5015,6 +6226,7 @@ "Psr\\Http\\Server\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5035,6 +6247,10 @@ "request", "response" ], + "support": { + "issues": "https://github.com/php-fig/http-server-middleware/issues", + "source": "https://github.com/php-fig/http-server-middleware/tree/1.0.2" + }, "time": "2023-04-11T06:14:47+00:00" }, { @@ -5047,9 +6263,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/psr/log/3.0.0/psr-log-3.0.0.zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.0.0" @@ -5065,6 +6287,7 @@ "Psr\\Log\\": "src" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5081,6 +6304,9 @@ "psr", "psr-3" ], + "support": { + "source": "https://github.com/php-fig/log/tree/3.0.0" + }, "time": "2021-07-14T16:46:02+00:00" }, { @@ -5093,9 +6319,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/psr/simple-cache/3.0.0/psr-simple-cache-3.0.0.zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.0.0" @@ -5111,6 +6343,7 @@ "Psr\\SimpleCache\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5128,6 +6361,9 @@ "psr-16", "simple-cache" ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" + }, "time": "2021-10-29T13:26:27+00:00" }, { @@ -5140,9 +6376,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/ralouphie/getallheaders/3.0.3/ralouphie-getallheaders-3.0.3.zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", "reference": "120b605dfeb996808c31b6477290a714d356e822", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=5.6" @@ -5157,6 +6399,7 @@ "src/getallheaders.php" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5167,6 +6410,10 @@ } ], "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, "time": "2019-03-08T08:55:37+00:00" }, { @@ -5179,9 +6426,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/symfony/cache/v6.0.19/symfony-cache-v6.0.19.zip", + "url": "https://api.github.com/repos/symfony/cache/zipball/81ca309f056e836480928b20280ec52ce8369bb3", "reference": "81ca309f056e836480928b20280ec52ce8369bb3", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.0.2", @@ -5223,6 +6476,7 @@ "/Tests/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5242,6 +6496,9 @@ "caching", "psr6" ], + "support": { + "source": "https://github.com/symfony/cache/tree/v6.0.19" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -5268,9 +6525,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/symfony/cache-contracts/v3.0.2/symfony-cache-contracts-v3.0.2.zip", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/1c0a181c9ee221afe4fa55b2d13fc63c5ae14348", "reference": "1c0a181c9ee221afe4fa55b2d13fc63c5ae14348", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.0.2", @@ -5294,6 +6557,7 @@ "Symfony\\Contracts\\Cache\\": "" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5317,6 +6581,9 @@ "interoperability", "standards" ], + "support": { + "source": "https://github.com/symfony/cache-contracts/tree/v3.0.2" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -5343,9 +6610,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/symfony/console/v6.0.19/symfony-console-v6.0.19.zip", + "url": "https://api.github.com/repos/symfony/console/zipball/c3ebc83d031b71c39da318ca8b7a07ecc67507ed", "reference": "c3ebc83d031b71c39da318ca8b7a07ecc67507ed", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.0.2", @@ -5387,6 +6660,7 @@ "/Tests/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5408,6 +6682,9 @@ "console", "terminal" ], + "support": { + "source": "https://github.com/symfony/console/tree/v6.0.19" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -5434,9 +6711,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/symfony/deprecation-contracts/v3.0.2/symfony-deprecation-contracts-v3.0.2.zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/26954b3d62a6c5fd0ea8a2a00c0353a14978d05c", "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.0.2" @@ -5456,6 +6739,7 @@ "function.php" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5471,6 +6755,9 @@ ], "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.2" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -5497,9 +6784,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/symfony/finder/v6.0.19/symfony-finder-v6.0.19.zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/5cc9cac6586fc0c28cd173780ca696e419fefa11", "reference": "5cc9cac6586fc0c28cd173780ca696e419fefa11", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.0.2" @@ -5513,6 +6806,7 @@ "/Tests/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5528,6 +6822,9 @@ ], "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v6.0.19" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -5554,9 +6851,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/symfony/http-client/v6.0.20/symfony-http-client-v6.0.20.zip", + "url": "https://api.github.com/repos/symfony/http-client/zipball/541c04560da1875f62c963c3aab6ea12a7314e11", "reference": "541c04560da1875f62c963c3aab6ea12a7314e11", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.0.2", @@ -5593,6 +6896,7 @@ "/Tests/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5608,6 +6912,9 @@ ], "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-client/tree/v6.0.20" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -5634,9 +6941,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/symfony/http-client-contracts/v3.0.2/symfony-http-client-contracts-v3.0.2.zip", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/4184b9b63af1edaf35b6a7974c6f1f9f33294129", "reference": "4184b9b63af1edaf35b6a7974c6f1f9f33294129", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.0.2" @@ -5659,6 +6972,7 @@ "Symfony\\Contracts\\HttpClient\\": "" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5682,6 +6996,9 @@ "interoperability", "standards" ], + "support": { + "source": "https://github.com/symfony/http-client-contracts/tree/v3.0.2" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -5708,9 +7025,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/symfony/http-foundation/v6.0.20/symfony-http-foundation-v6.0.20.zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/e16b2676a4b3b1fa12378a20b29c364feda2a8d6", "reference": "e16b2676a4b3b1fa12378a20b29c364feda2a8d6", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.0.2", @@ -5738,6 +7061,7 @@ "/Tests/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5753,6 +7077,9 @@ ], "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-foundation/tree/v6.0.20" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -5779,9 +7106,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/symfony/mime/v6.0.19/symfony-mime-v6.0.19.zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/d7052547a0070cbeadd474e172b527a00d657301", "reference": "d7052547a0070cbeadd474e172b527a00d657301", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.0.2", @@ -5812,6 +7145,7 @@ "/Tests/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5831,6 +7165,9 @@ "mime", "mime-type" ], + "support": { + "source": "https://github.com/symfony/mime/tree/v6.0.19" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -5849,17 +7186,23 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/symfony/polyfill-ctype/v1.27.0/symfony-polyfill-ctype-v1.27.0.zip", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", - "shasum": "" + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.1" @@ -5873,7 +7216,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5888,6 +7231,7 @@ "Symfony\\Polyfill\\Ctype\\": "" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5909,6 +7253,9 @@ "polyfill", "portable" ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -5923,21 +7270,27 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354" + "reference": "875e90aeea2777b6f135677f618529449334a612" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/symfony/polyfill-intl-grapheme/v1.27.0/symfony-polyfill-intl-grapheme-v1.27.0.zip", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354", - "shasum": "" + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", + "reference": "875e90aeea2777b6f135677f618529449334a612", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.1" @@ -5948,7 +7301,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5963,6 +7316,7 @@ "Symfony\\Polyfill\\Intl\\Grapheme\\": "" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5986,6 +7340,9 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -6000,21 +7357,27 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "639084e360537a19f9ee352433b84ce831f3d2da" + "reference": "ecaafce9f77234a6a449d29e49267ba10499116d" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/symfony/polyfill-intl-idn/v1.27.0/symfony-polyfill-intl-idn-v1.27.0.zip", - "reference": "639084e360537a19f9ee352433b84ce831f3d2da", - "shasum": "" + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/ecaafce9f77234a6a449d29e49267ba10499116d", + "reference": "ecaafce9f77234a6a449d29e49267ba10499116d", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.1", @@ -6027,7 +7390,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6042,6 +7405,7 @@ "Symfony\\Polyfill\\Intl\\Idn\\": "" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -6069,6 +7433,9 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.28.0" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -6083,21 +7450,27 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:30:37+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/symfony/polyfill-intl-normalizer/v1.27.0/symfony-polyfill-intl-normalizer-v1.27.0.zip", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", - "shasum": "" + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.1" @@ -6108,7 +7481,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6126,6 +7499,7 @@ "Resources/stubs" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -6149,6 +7523,9 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -6163,21 +7540,27 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" + "reference": "42292d99c55abe617799667f454222c54c60e229" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/symfony/polyfill-mbstring/v1.27.0/symfony-polyfill-mbstring-v1.27.0.zip", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", - "shasum": "" + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", + "reference": "42292d99c55abe617799667f454222c54c60e229", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.1" @@ -6191,7 +7574,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6206,6 +7589,7 @@ "Symfony\\Polyfill\\Mbstring\\": "" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -6228,6 +7612,9 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -6242,21 +7629,27 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-07-28T09:04:16+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "869329b1e9894268a8a61dabb69153029b7a8c97" + "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/symfony/polyfill-php72/v1.27.0/symfony-polyfill-php72-v1.27.0.zip", - "reference": "869329b1e9894268a8a61dabb69153029b7a8c97", - "shasum": "" + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/70f4aebd92afca2f865444d30a4d2151c13c3179", + "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.1" @@ -6264,7 +7657,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6279,6 +7672,7 @@ "Symfony\\Polyfill\\Php72\\": "" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -6300,6 +7694,9 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-php72/tree/v1.28.0" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -6314,21 +7711,27 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/symfony/polyfill-php80/v1.27.0/symfony-polyfill-php80-v1.27.0.zip", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", - "shasum": "" + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.1" @@ -6336,7 +7739,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6354,6 +7757,7 @@ "Resources/stubs" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -6379,6 +7783,9 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -6393,21 +7800,27 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" + "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/symfony/polyfill-php81/v1.27.0/symfony-polyfill-php81-v1.27.0.zip", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", - "shasum": "" + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/7581cd600fa9fd681b797d00b02f068e2f13263b", + "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.1" @@ -6415,7 +7828,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6433,6 +7846,7 @@ "Resources/stubs" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -6454,6 +7868,9 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-php81/tree/v1.28.0" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -6468,7 +7885,7 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/psr-http-message-bridge", @@ -6480,9 +7897,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/symfony/psr-http-message-bridge/v2.3.1/symfony-psr-http-message-bridge-v2.3.1.zip", + "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/581ca6067eb62640de5ff08ee1ba6850a0ee472e", "reference": "581ca6067eb62640de5ff08ee1ba6850a0ee472e", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.2.5", @@ -6517,6 +7940,7 @@ "/Tests/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -6538,6 +7962,10 @@ "psr-17", "psr-7" ], + "support": { + "issues": "https://github.com/symfony/psr-http-message-bridge/issues", + "source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.3.1" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -6564,9 +7992,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/symfony/service-contracts/v3.0.2/symfony-service-contracts-v3.0.2.zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d78d39c1599bd1188b8e26bb341da52c3c6d8a66", "reference": "d78d39c1599bd1188b8e26bb341da52c3c6d8a66", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.0.2", @@ -6593,6 +8027,7 @@ "Symfony\\Contracts\\Service\\": "" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -6616,6 +8051,9 @@ "interoperability", "standards" ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v3.0.2" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -6642,9 +8080,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/symfony/string/v6.0.19/symfony-string-v6.0.19.zip", + "url": "https://api.github.com/repos/symfony/string/zipball/d9e72497367c23e08bf94176d2be45b00a9d232a", "reference": "d9e72497367c23e08bf94176d2be45b00a9d232a", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.0.2", @@ -6674,6 +8118,7 @@ "/Tests/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -6697,6 +8142,9 @@ "utf-8", "utf8" ], + "support": { + "source": "https://github.com/symfony/string/tree/v6.0.19" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -6723,9 +8171,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/symfony/translation/v6.0.19/symfony-translation-v6.0.19.zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/9c24b3fdbbe9fb2ef3a6afd8bbaadfd72dad681f", "reference": "9c24b3fdbbe9fb2ef3a6afd8bbaadfd72dad681f", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.0.2", @@ -6773,6 +8227,7 @@ "/Tests/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -6788,6 +8243,9 @@ ], "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/translation/tree/v6.0.19" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -6814,9 +8272,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/symfony/translation-contracts/v3.0.2/symfony-translation-contracts-v3.0.2.zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/acbfbb274e730e5a0236f619b6168d9dedb3e282", "reference": "acbfbb274e730e5a0236f619b6168d9dedb3e282", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.0.2" @@ -6839,6 +8303,7 @@ "Symfony\\Contracts\\Translation\\": "" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -6862,6 +8327,9 @@ "interoperability", "standards" ], + "support": { + "source": "https://github.com/symfony/translation-contracts/tree/v3.0.2" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -6888,9 +8356,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/symfony/var-exporter/v6.0.19/symfony-var-exporter-v6.0.19.zip", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/df56f53818c2d5d9f683f4ad2e365ba73a3b69d2", "reference": "df56f53818c2d5d9f683f4ad2e365ba73a3b69d2", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.0.2" @@ -6907,6 +8381,7 @@ "/Tests/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -6930,6 +8405,9 @@ "instantiate", "serialize" ], + "support": { + "source": "https://github.com/symfony/var-exporter/tree/v6.0.19" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -6948,17 +8426,23 @@ }, { "name": "tecnickcom/tcpdf", - "version": "6.6.2", + "version": "6.6.5", "source": { "type": "git", "url": "https://github.com/tecnickcom/TCPDF.git", - "reference": "e3cffc9bcbc76e89e167e9eb0bbda0cab7518459" + "reference": "5fce932fcee4371865314ab7f6c0d85423c5c7ce" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/tecnickcom/tcpdf/6.6.2/tecnickcom-tcpdf-6.6.2.zip", - "reference": "e3cffc9bcbc76e89e167e9eb0bbda0cab7518459", - "shasum": "" + "url": "https://api.github.com/repos/tecnickcom/TCPDF/zipball/5fce932fcee4371865314ab7f6c0d85423c5c7ce", + "reference": "5fce932fcee4371865314ab7f6c0d85423c5c7ce", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=5.3.0" @@ -6984,8 +8468,9 @@ "include/barcodes/qrcode.php" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL-3.0-only" + "LGPL-3.0-or-later" ], "authors": [ { @@ -7005,13 +8490,17 @@ "pdf417", "qrcode" ], + "support": { + "issues": "https://github.com/tecnickcom/TCPDF/issues", + "source": "https://github.com/tecnickcom/TCPDF/tree/6.6.5" + }, "funding": [ { "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_donations¤cy_code=GBP&business=paypal@tecnick.com&item_name=donation%20for%20tcpdf%20project", "type": "custom" } ], - "time": "2022-12-17T10:28:59+00:00" + "time": "2023-09-06T15:09:26+00:00" }, { "name": "thenorthmemory/xml", @@ -7023,9 +8512,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/thenorthmemory/xml/1.1.1/thenorthmemory-xml-1.1.1.zip", + "url": "https://api.github.com/repos/TheNorthMemory/xml/zipball/6f50c63450a0b098772423f8bdc3c4ad2c4c30bb", "reference": "6f50c63450a0b098772423f8bdc3c4ad2c4c30bb", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-libxml": "*", @@ -7042,6 +8537,7 @@ "TheNorthMemory\\Xml\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "Apache-2.0" ], @@ -7057,6 +8553,10 @@ "xml-builder", "xml-parser" ], + "support": { + "issues": "https://github.com/TheNorthMemory/xml/issues", + "source": "https://github.com/TheNorthMemory/xml/tree/1.1.1" + }, "time": "2023-01-15T06:01:13+00:00" }, { @@ -7069,9 +8569,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/vlucas/phpdotenv/v5.5.0/vlucas-phpdotenv-v5.5.0.zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-pcre": "*", @@ -7105,6 +8611,7 @@ "Dotenv\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -7126,6 +8633,10 @@ "env", "environment" ], + "support": { + "issues": "https://github.com/vlucas/phpdotenv/issues", + "source": "https://github.com/vlucas/phpdotenv/tree/v5.5.0" + }, "funding": [ { "url": "https://github.com/GrahamCampbell", @@ -7140,17 +8651,23 @@ }, { "name": "w7corp/easywechat", - "version": "6.12.3", + "version": "6.8.0", "source": { "type": "git", "url": "https://github.com/w7corp/easywechat.git", - "reference": "10b9f31b61b4e5327c9e4457dffcf307de2deb6c" + "reference": "60f0b4ba2ac3144df1a2291193daa34beb949d26" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/w7corp/easywechat/6.12.3/w7corp-easywechat-6.12.3.zip", - "reference": "10b9f31b61b4e5327c9e4457dffcf307de2deb6c", - "shasum": "" + "url": "https://api.github.com/repos/w7corp/easywechat/zipball/60f0b4ba2ac3144df1a2291193daa34beb949d26", + "reference": "60f0b4ba2ac3144df1a2291193daa34beb949d26", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-curl": "*", @@ -7159,10 +8676,10 @@ "ext-openssl": "*", "ext-simplexml": "*", "ext-sodium": "*", - "monolog/monolog": "^2.2|^3.0", + "monolog/monolog": "^2.2", "nyholm/psr7": "^1.5", "nyholm/psr7-server": "^1.0", - "overtrue/socialite": "^3.5.4|^4.0.1", + "overtrue/socialite": "^3.5|^4.0.1", "php": ">=8.0.2", "psr/http-client": "^1.0", "psr/simple-cache": "^1.0|^2.0|^3.0", @@ -7208,6 +8725,7 @@ "EasyWeChat\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -7225,13 +8743,17 @@ "weixin", "weixin-sdk" ], + "support": { + "issues": "https://github.com/w7corp/easywechat/issues", + "source": "https://github.com/w7corp/easywechat/tree/6.8.0" + }, "funding": [ { "url": "https://github.com/overtrue", "type": "github" } ], - "time": "2023-07-05T14:14:28+00:00" + "time": "2022-09-25T13:05:18+00:00" } ], "packages-dev": [ @@ -7245,9 +8767,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/composer/pcre/3.1.0/composer-pcre-3.1.0.zip", + "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.4 || ^8.0" @@ -7268,6 +8796,7 @@ "Composer\\Pcre\\": "src" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -7285,6 +8814,10 @@ "regex", "regular expression" ], + "support": { + "issues": "https://github.com/composer/pcre/issues", + "source": "https://github.com/composer/pcre/tree/3.1.0" + }, "funding": [ { "url": "https://packagist.com", @@ -7303,17 +8836,23 @@ }, { "name": "composer/semver", - "version": "3.3.2", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/composer/semver/3.3.2/composer-semver-3.3.2.zip", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", - "shasum": "" + "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^5.3.2 || ^7.0 || ^8.0" @@ -7333,6 +8872,7 @@ "Composer\\Semver\\": "src" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -7360,6 +8900,11 @@ "validation", "versioning" ], + "support": { + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.4.0" + }, "funding": [ { "url": "https://packagist.com", @@ -7374,7 +8919,7 @@ "type": "tidelift" } ], - "time": "2022-04-01T19:23:25+00:00" + "time": "2023-08-31T09:50:34+00:00" }, { "name": "composer/xdebug-handler", @@ -7386,9 +8931,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/composer/xdebug-handler/3.0.3/composer-xdebug-handler-3.0.3.zip", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c", "reference": "ced299686f41dce890debac69273b47ffe98a40c", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "composer/pcre": "^1 || ^2 || ^3", @@ -7406,6 +8957,7 @@ "Composer\\XdebugHandler\\": "src" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -7420,6 +8972,11 @@ "Xdebug", "performance" ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/xdebug-handler/issues", + "source": "https://github.com/composer/xdebug-handler/tree/3.0.3" + }, "funding": [ { "url": "https://packagist.com", @@ -7436,127 +8993,56 @@ ], "time": "2022-02-25T21:32:43+00:00" }, - { - "name": "doctrine/annotations", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/annotations.git", - "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f" - }, - "dist": { - "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/doctrine/annotations/2.0.1/doctrine-annotations-2.0.1.zip", - "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^2 || ^3", - "ext-tokenizer": "*", - "php": "^7.2 || ^8.0", - "psr/cache": "^1 || ^2 || ^3" - }, - "require-dev": { - "doctrine/cache": "^2.0", - "doctrine/coding-standard": "^10", - "phpstan/phpstan": "^1.8.0", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "symfony/cache": "^5.4 || ^6", - "vimeo/psalm": "^4.10" - }, - "suggest": { - "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" - } - }, - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Docblock Annotations Parser", - "homepage": "https://www.doctrine-project.org/projects/annotations.html", - "keywords": [ - "annotations", - "docblock", - "parser" - ], - "time": "2023-02-02T22:02:53+00:00" - }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.22.0", + "version": "v3.41.1", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "92b019f6c8d79aa26349d0db7671d37440dc0ff3" + "reference": "8b6ae8dcbaf23f09680643ab832a4a3a260265f6" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/friendsofphp/php-cs-fixer/v3.22.0/friendsofphp-php-cs-fixer-v3.22.0.zip", - "reference": "92b019f6c8d79aa26349d0db7671d37440dc0ff3", - "shasum": "" + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/8b6ae8dcbaf23f09680643ab832a4a3a260265f6", + "reference": "8b6ae8dcbaf23f09680643ab832a4a3a260265f6", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "composer/semver": "^3.3", + "composer/semver": "^3.4", "composer/xdebug-handler": "^3.0.3", - "doctrine/annotations": "^2", - "doctrine/lexer": "^2 || ^3", "ext-json": "*", "ext-tokenizer": "*", "php": "^7.4 || ^8.0", "sebastian/diff": "^4.0 || ^5.0", - "symfony/console": "^5.4 || ^6.0", - "symfony/event-dispatcher": "^5.4 || ^6.0", - "symfony/filesystem": "^5.4 || ^6.0", - "symfony/finder": "^5.4 || ^6.0", - "symfony/options-resolver": "^5.4 || ^6.0", - "symfony/polyfill-mbstring": "^1.27", - "symfony/polyfill-php80": "^1.27", - "symfony/polyfill-php81": "^1.27", - "symfony/process": "^5.4 || ^6.0", - "symfony/stopwatch": "^5.4 || ^6.0" + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0", + "symfony/filesystem": "^5.4 || ^6.0 || ^7.0", + "symfony/finder": "^5.4 || ^6.0 || ^7.0", + "symfony/options-resolver": "^5.4 || ^6.0 || ^7.0", + "symfony/polyfill-mbstring": "^1.28", + "symfony/polyfill-php80": "^1.28", + "symfony/polyfill-php81": "^1.28", + "symfony/process": "^5.4 || ^6.0 || ^7.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { "facile-it/paraunit": "^1.3 || ^2.0", "justinrainbow/json-schema": "^5.2", - "keradus/cli-executor": "^2.0", + "keradus/cli-executor": "^2.1", "mikey179/vfsstream": "^1.6.11", - "php-coveralls/php-coveralls": "^2.5.3", + "php-coveralls/php-coveralls": "^2.7", "php-cs-fixer/accessible-object": "^1.1", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", - "phpspec/prophecy": "^1.16", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5", - "phpunitgoodpractices/polyfill": "^1.6", - "phpunitgoodpractices/traits": "^1.9.2", - "symfony/phpunit-bridge": "^6.2.3", - "symfony/yaml": "^5.4 || ^6.0" + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.4", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.4", + "phpunit/phpunit": "^9.6", + "symfony/phpunit-bridge": "^6.3.8 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "suggest": { "ext-dom": "For handling output formats in XML", @@ -7571,6 +9057,7 @@ "PhpCsFixer\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -7591,13 +9078,17 @@ "standards", "static analysis" ], + "support": { + "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.41.1" + }, "funding": [ { "url": "https://github.com/keradus", "type": "github" } ], - "time": "2023-07-16T23:08:06+00:00" + "time": "2023-12-10T19:59:27+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -7609,9 +9100,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hamcrest/hamcrest-php/v2.0.1/hamcrest-hamcrest-php-v2.0.1.zip", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^5.3|^7.0|^8.0" @@ -7636,6 +9133,7 @@ "hamcrest" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -7643,21 +9141,31 @@ "keywords": [ "test" ], + "support": { + "issues": "https://github.com/hamcrest/hamcrest-php/issues", + "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" + }, "time": "2020-07-09T08:09:16+00:00" }, { "name": "hyperf/devtool", - "version": "v3.0.18", + "version": "v3.0.45", "source": { "type": "git", "url": "https://github.com/hyperf/devtool.git", - "reference": "6318b261197c333f69e19de2d2ea36ffcb45383b" + "reference": "21010063ad92b74399106070d88c3d85633e7ed3" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/devtool/v3.0.18/hyperf-devtool-v3.0.18.zip", - "reference": "6318b261197c333f69e19de2d2ea36ffcb45383b", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/devtool/zipball/21010063ad92b74399106070d88c3d85633e7ed3", + "reference": "21010063ad92b74399106070d88c3d85633e7ed3", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/code-parser": "~3.0.0", @@ -7682,32 +9190,46 @@ "Hyperf\\Devtool\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "description": "A Devtool for Hyperf.", "homepage": "https://hyperf.io", "keywords": [ + "dev", "devtool", "hyperf", "php", "swoole" ], - "time": "2023-04-26T03:02:31+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-11-23T03:49:28+00:00" }, { "name": "hyperf/testing", - "version": "v3.0.30", + "version": "v3.0.45", "source": { "type": "git", "url": "https://github.com/hyperf/testing.git", - "reference": "fa9d8c1e79bc4958be5a2642387e1915a7fc9f13" + "reference": "b590c7ce61093a9fea5d40f874d29387f7d096f4" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/hyperf/testing/v3.0.30/hyperf-testing-v3.0.30.zip", - "reference": "fa9d8c1e79bc4958be5a2642387e1915a7fc9f13", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/testing/zipball/b590c7ce61093a9fea5d40f874d29387f7d096f4", + "reference": "b590c7ce61093a9fea5d40f874d29387f7d096f4", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/codec": "~3.0.0", @@ -7737,44 +9259,55 @@ "Hyperf\\Testing\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "description": "Testing for hyperf", "keywords": [ + "dev", "php", "swoole", "testing" ], - "time": "2023-07-21T03:15:25+00:00" + "support": { + "source": "https://github.com/hyperf/testing/tree/v3.0.45" + }, + "time": "2023-11-23T03:49:28+00:00" }, { "name": "mockery/mockery", - "version": "1.6.4", + "version": "1.6.6", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "d1413755e26fe56a63455f7753221c86cbb88f66" + "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/mockery/mockery/1.6.4/mockery-mockery-1.6.4.zip", - "reference": "d1413755e26fe56a63455f7753221c86cbb88f66", - "shasum": "" + "url": "https://api.github.com/repos/mockery/mockery/zipball/b8e0bb7d8c604046539c1115994632c74dcb361e", + "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hamcrest/hamcrest-php": "^2.0.1", "lib-pcre": ">=7.0", - "php": ">=7.4,<8.3" + "php": ">=7.3" }, "conflict": { "phpunit/phpunit": "<8.0" }, "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3", + "phpunit/phpunit": "^8.5 || ^9.6.10", "psalm/plugin-phpunit": "^0.18.4", "symplify/easy-coding-standard": "^11.5.0", - "vimeo/psalm": "^5.13.1" + "vimeo/psalm": "^4.30" }, "type": "library", "autoload": { @@ -7786,6 +9319,7 @@ "Mockery\\": "library/Mockery" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -7823,7 +9357,14 @@ "test double", "testing" ], - "time": "2023-07-19T15:51:02+00:00" + "support": { + "docs": "https://docs.mockery.io/", + "issues": "https://github.com/mockery/mockery/issues", + "rss": "https://github.com/mockery/mockery/releases.atom", + "security": "https://github.com/mockery/mockery/security/advisories", + "source": "https://github.com/mockery/mockery" + }, + "time": "2023-08-09T00:03:52+00:00" }, { "name": "myclabs/deep-copy", @@ -7835,9 +9376,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/myclabs/deep-copy/1.11.1/myclabs-deep-copy-1.11.1.zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.1 || ^8.0" @@ -7860,6 +9407,7 @@ "DeepCopy\\": "src/DeepCopy/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -7871,6 +9419,10 @@ "object", "object graph" ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" + }, "funding": [ { "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", @@ -7889,9 +9441,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/phar-io/manifest/2.0.3/phar-io-manifest-2.0.3.zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", "reference": "97803eca37d319dfa7826cc2437fc020857acb53", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-dom": "*", @@ -7911,6 +9469,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -7932,6 +9491,10 @@ } ], "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.3" + }, "time": "2021-07-20T11:28:43+00:00" }, { @@ -7944,9 +9507,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/phar-io/version/3.2.1/phar-io-version-3.2.1.zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.2 || ^8.0" @@ -7957,6 +9526,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -7978,21 +9548,31 @@ } ], "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, "time": "2022-02-21T01:04:05+00:00" }, { "name": "phpstan/phpstan", - "version": "1.10.26", + "version": "1.10.49", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "5d660cbb7e1b89253a47147ae44044f49832351f" + "reference": "9367ba4c4f6ad53e9efb594d74a8941563caccf6" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/phpstan/phpstan/1.10.26/phpstan-phpstan-1.10.26.zip", - "reference": "5d660cbb7e1b89253a47147ae44044f49832351f", - "shasum": "" + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9367ba4c4f6ad53e9efb594d74a8941563caccf6", + "reference": "9367ba4c4f6ad53e9efb594d74a8941563caccf6", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.2|^8.0" @@ -8010,6 +9590,7 @@ "bootstrap.php" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -8018,6 +9599,13 @@ "dev", "static analysis" ], + "support": { + "docs": "https://phpstan.org/user-guide/getting-started", + "forum": "https://github.com/phpstan/phpstan/discussions", + "issues": "https://github.com/phpstan/phpstan/issues", + "security": "https://github.com/phpstan/phpstan/security/policy", + "source": "https://github.com/phpstan/phpstan-src" + }, "funding": [ { "url": "https://github.com/ondrejmirtes", @@ -8032,21 +9620,27 @@ "type": "tidelift" } ], - "time": "2023-07-19T12:44:37+00:00" + "time": "2023-12-12T10:05:12+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.27", + "version": "9.2.29", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "b0a88255cb70d52653d80c890bd7f38740ea50d1" + "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/phpunit/php-code-coverage/9.2.27/phpunit-php-code-coverage-9.2.27.zip", - "reference": "b0a88255cb70d52653d80c890bd7f38740ea50d1", - "shasum": "" + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/6a3a87ac2bbe33b25042753df8195ba4aa534c76", + "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-dom": "*", @@ -8081,6 +9675,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -8098,13 +9693,18 @@ "testing", "xunit" ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.29" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" } ], - "time": "2023-07-26T13:44:30+00:00" + "time": "2023-09-19T04:57:46+00:00" }, { "name": "phpunit/php-file-iterator", @@ -8116,9 +9716,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/phpunit/php-file-iterator/3.0.6/phpunit-php-file-iterator-3.0.6.zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3" @@ -8137,6 +9743,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -8153,6 +9760,10 @@ "filesystem", "iterator" ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -8171,9 +9782,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/phpunit/php-invoker/3.1.1/phpunit-php-invoker-3.1.1.zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3" @@ -8196,6 +9813,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -8211,6 +9829,10 @@ "keywords": [ "process" ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -8229,9 +9851,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/phpunit/php-text-template/2.0.4/phpunit-php-text-template-2.0.4.zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3" @@ -8250,6 +9878,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -8265,6 +9894,10 @@ "keywords": [ "template" ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -8283,9 +9916,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/phpunit/php-timer/5.0.3/phpunit-php-timer-5.0.3.zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3" @@ -8304,6 +9943,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -8319,6 +9959,10 @@ "keywords": [ "timer" ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -8329,17 +9973,23 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.10", + "version": "9.6.15", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "a6d351645c3fe5a30f5e86be6577d946af65a328" + "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/phpunit/phpunit/9.6.10/phpunit-phpunit-9.6.10.zip", - "reference": "a6d351645c3fe5a30f5e86be6577d946af65a328", - "shasum": "" + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/05017b80304e0eb3f31d90194a563fd53a6021f1", + "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "doctrine/instantiator": "^1.3.1 || ^2", @@ -8353,7 +10003,7 @@ "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=7.3", - "phpunit/php-code-coverage": "^9.2.13", + "phpunit/php-code-coverage": "^9.2.28", "phpunit/php-file-iterator": "^3.0.5", "phpunit/php-invoker": "^3.1.1", "phpunit/php-text-template": "^2.0.3", @@ -8391,6 +10041,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -8408,6 +10059,11 @@ "testing", "xunit" ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.15" + }, "funding": [ { "url": "https://phpunit.de/sponsors.html", @@ -8422,7 +10078,7 @@ "type": "tidelift" } ], - "time": "2023-07-10T04:04:23+00:00" + "time": "2023-12-01T16:55:19+00:00" }, { "name": "sebastian/cli-parser", @@ -8434,9 +10090,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/sebastian/cli-parser/1.0.1/sebastian-cli-parser-1.0.1.zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3" @@ -8455,6 +10117,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -8467,6 +10130,10 @@ ], "description": "Library for parsing CLI options", "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -8485,9 +10152,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/sebastian/code-unit/1.0.8/sebastian-code-unit-1.0.8.zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3" @@ -8506,6 +10179,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -8518,6 +10192,10 @@ ], "description": "Collection of value objects that represent the PHP code units", "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -8536,9 +10214,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/sebastian/code-unit-reverse-lookup/2.0.3/sebastian-code-unit-reverse-lookup-2.0.3.zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3" @@ -8557,6 +10241,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -8568,6 +10253,10 @@ ], "description": "Looks up which function or method a line of code belongs to", "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -8586,9 +10275,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/sebastian/comparator/4.0.8/sebastian-comparator-4.0.8.zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", "reference": "fa0f136dd2334583309d32b62544682ee972b51a", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3", @@ -8609,6 +10304,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -8637,6 +10333,10 @@ "compare", "equality" ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -8655,9 +10355,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/sebastian/complexity/2.0.2/sebastian-complexity-2.0.2.zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "nikic/php-parser": "^4.7", @@ -8677,6 +10383,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -8689,6 +10396,10 @@ ], "description": "Library for calculating the complexity of PHP code units", "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -8707,9 +10418,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/sebastian/diff/4.0.5/sebastian-diff-4.0.5.zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131", "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3" @@ -8729,6 +10446,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -8750,6 +10468,10 @@ "unidiff", "unified diff" ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -8768,9 +10490,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/sebastian/environment/5.1.5/sebastian-environment-5.1.5.zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3" @@ -8792,6 +10520,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -8808,6 +10537,10 @@ "environment", "hhvm" ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -8826,9 +10559,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/sebastian/exporter/4.0.5/sebastian-exporter-4.0.5.zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3", @@ -8849,6 +10588,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -8880,6 +10620,10 @@ "export", "exporter" ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -8898,9 +10642,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/sebastian/global-state/5.0.6/sebastian-global-state-5.0.6.zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bde739e7565280bda77be70044ac1047bc007e34", "reference": "bde739e7565280bda77be70044ac1047bc007e34", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3", @@ -8925,6 +10675,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -8939,6 +10690,10 @@ "keywords": [ "global state" ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.6" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -8957,9 +10712,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/sebastian/lines-of-code/1.0.3/sebastian-lines-of-code-1.0.3.zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "nikic/php-parser": "^4.6", @@ -8979,6 +10740,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -8991,6 +10753,10 @@ ], "description": "Library for counting the lines of code in PHP source code", "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -9009,9 +10775,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/sebastian/object-enumerator/4.0.4/sebastian-object-enumerator-4.0.4.zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3", @@ -9032,6 +10804,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -9043,6 +10816,10 @@ ], "description": "Traverses array structures and object graphs to enumerate all referenced objects", "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -9061,9 +10838,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/sebastian/object-reflector/2.0.4/sebastian-object-reflector-2.0.4.zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3" @@ -9082,6 +10865,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -9093,6 +10877,10 @@ ], "description": "Allows reflection of object attributes, including inherited and non-public ones", "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -9111,9 +10899,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/sebastian/recursion-context/4.0.5/sebastian-recursion-context-4.0.5.zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3" @@ -9132,6 +10926,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -9151,6 +10946,10 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "https://github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -9169,9 +10968,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/sebastian/resource-operations/3.0.3/sebastian-resource-operations-3.0.3.zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3" @@ -9190,6 +10995,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -9201,6 +11007,10 @@ ], "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "support": { + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -9219,9 +11029,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/sebastian/type/3.2.1/sebastian-type-3.2.1.zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3" @@ -9240,6 +11056,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -9252,6 +11069,10 @@ ], "description": "Collection of value objects that represent the types of the PHP type system", "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -9270,9 +11091,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/sebastian/version/3.0.2/sebastian-version-3.0.2.zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3" @@ -9288,6 +11115,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -9300,6 +11128,10 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -9310,19 +11142,26 @@ }, { "name": "swoole/ide-helper", - "version": "5.0.3", + "version": "5.1.1", "source": { "type": "git", "url": "https://github.com/swoole/ide-helper.git", - "reference": "4b6e615cb27c251b6248b8bd9501edbd02a45c18" + "reference": "e49592f77409d792726afc839d5529960f49b8b5" }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/swoole/ide-helper/5.0.3/swoole-ide-helper-5.0.3.zip", - "reference": "4b6e615cb27c251b6248b8bd9501edbd02a45c18", - "shasum": "" + "url": "https://api.github.com/repos/swoole/ide-helper/zipball/e49592f77409d792726afc839d5529960f49b8b5", + "reference": "e49592f77409d792726afc839d5529960f49b8b5", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "type": "library", + "notification-url": "https://packagist.org/downloads/", "license": [ "Apache-2.0" ], @@ -9333,7 +11172,11 @@ } ], "description": "IDE help files for Swoole.", - "time": "2023-04-28T22:20:18+00:00" + "support": { + "issues": "https://github.com/swoole/ide-helper/issues", + "source": "https://github.com/swoole/ide-helper/tree/5.1.1" + }, + "time": "2023-12-08T17:45:22+00:00" }, { "name": "symfony/event-dispatcher", @@ -9345,9 +11188,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/symfony/event-dispatcher/v6.0.19/symfony-event-dispatcher-v6.0.19.zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/2eaf8e63bc5b8cefabd4a800157f0d0c094f677a", "reference": "2eaf8e63bc5b8cefabd4a800157f0d0c094f677a", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.0.2", @@ -9383,6 +11232,7 @@ "/Tests/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -9398,6 +11248,9 @@ ], "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.19" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -9424,9 +11277,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/symfony/event-dispatcher-contracts/v3.0.2/symfony-event-dispatcher-contracts-v3.0.2.zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7bc61cc2db649b4637d331240c5346dcc7708051", "reference": "7bc61cc2db649b4637d331240c5346dcc7708051", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.0.2", @@ -9450,6 +11309,7 @@ "Symfony\\Contracts\\EventDispatcher\\": "" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -9473,6 +11333,9 @@ "interoperability", "standards" ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.0.2" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -9499,9 +11362,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/symfony/filesystem/v6.0.19/symfony-filesystem-v6.0.19.zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/3d49eec03fda1f0fc19b7349fbbe55ebc1004214", "reference": "3d49eec03fda1f0fc19b7349fbbe55ebc1004214", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.0.2", @@ -9517,6 +11386,7 @@ "/Tests/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -9532,6 +11402,9 @@ ], "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/v6.0.19" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -9558,9 +11431,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/symfony/options-resolver/v6.0.19/symfony-options-resolver-v6.0.19.zip", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/6a180d1c45e0d9797470ca9eb46215692de00fa3", "reference": "6a180d1c45e0d9797470ca9eb46215692de00fa3", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.0.2", @@ -9575,6 +11454,7 @@ "/Tests/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -9595,6 +11475,9 @@ "configuration", "options" ], + "support": { + "source": "https://github.com/symfony/options-resolver/tree/v6.0.19" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -9621,9 +11504,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/symfony/process/v6.0.19/symfony-process-v6.0.19.zip", + "url": "https://api.github.com/repos/symfony/process/zipball/2114fd60f26a296cc403a7939ab91478475a33d4", "reference": "2114fd60f26a296cc403a7939ab91478475a33d4", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.0.2" @@ -9637,6 +11526,7 @@ "/Tests/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -9652,6 +11542,9 @@ ], "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v6.0.19" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -9678,9 +11571,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/symfony/stopwatch/v6.0.19/symfony-stopwatch-v6.0.19.zip", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/011e781839dd1d2eb8119f65ac516a530f60226d", "reference": "011e781839dd1d2eb8119f65ac516a530f60226d", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=8.0.2", @@ -9695,6 +11594,7 @@ "/Tests/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -9710,6 +11610,9 @@ ], "description": "Provides a way to profile code", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/stopwatch/tree/v6.0.19" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -9736,9 +11639,15 @@ }, "dist": { "type": "zip", - "url": "https://mirrors.huaweicloud.com/repository/php/theseer/tokenizer/1.2.1/theseer-tokenizer-1.2.1.zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-dom": "*", @@ -9752,6 +11661,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -9763,6 +11673,10 @@ } ], "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + }, "funding": [ { "url": "https://github.com/theseer", @@ -9779,7 +11693,8 @@ "prefer-lowest": false, "platform": { "php": ">=8.0", - "ext-zlib": "*" + "ext-zlib": "*", + "ext-bcmath": "*" }, "platform-dev": [], "plugin-api-version": "2.3.0" From f85ef3801f5e97960f864c7a32bf418a7acd30e9 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Fri, 15 Dec 2023 09:39:57 +0800 Subject: [PATCH 72/87] =?UTF-8?q?=E5=A4=84=E7=90=86=E8=81=8C=E4=B8=9A?= =?UTF-8?q?=E3=80=81=E6=B0=91=E6=97=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Services/PatientCaseService.php | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/app/Services/PatientCaseService.php b/app/Services/PatientCaseService.php index ec4b972..ed8fcdd 100644 --- a/app/Services/PatientCaseService.php +++ b/app/Services/PatientCaseService.php @@ -3,6 +3,8 @@ namespace App\Services; use App\Constants\HttpEnumCode; +use App\Model\BasicJob; +use App\Model\BasicNation; use App\Model\DetectionProject; use App\Model\InquiryCaseProduct; use App\Model\OrderDetection; @@ -564,6 +566,32 @@ class PatientCaseService extends BaseService if ($order_inquiry_case[$key] == null){ $order_inquiry_case_data[$key] = $value; } + + // 处理职业 + if ($key == "job_id"){ + if ($order_inquiry_case["job_name"] == null){ + // 获取职业数据 + $params = array(); + $params['job_id'] = $value; + $basic_job = BasicJob::getOne($params); + if (!empty($basic_job)){ + $order_inquiry_case_data["job_name"] = $basic_job['job_name']; + } + } + } + + // 处理民族 + if ($key == "nation_id"){ + if ($order_inquiry_case["nation_name"] == null){ + // 获取职业数据 + $params = array(); + $params['nation_id'] = $value; + $basic_nation = BasicNation::getOne($params); + if (!empty($basic_nation)){ + $order_inquiry_case_data["nation_name"] = $basic_nation['nation_name']; + } + } + } } $case_fields[$key] = $value; From 50dd519e091493e08850d15b7eef934f6e519658 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Fri, 15 Dec 2023 14:10:07 +0800 Subject: [PATCH 73/87] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E5=88=A4=E6=96=AD=EF=BC=8C=E4=BF=AE=E6=94=B9=E7=97=85=E6=83=85?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E5=9B=9E=E5=86=99=E4=BC=A0=E6=97=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AutoFinishInquiryDelayDirectConsumer.php | 2 +- app/Services/LoginService.php | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php b/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php index b7763bb..a50faf3 100644 --- a/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php +++ b/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php @@ -138,7 +138,7 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage $this->handleOrderInquiryCase($order_inquiry); // 处理回写患者病情记录-回写失败不做处理 - $this->handlePatientPathography($order_inquiry['order_inquiry_id']); + $this->handlePatientPathography($order_inquiry); // 处理医生服务患者数量 $this->handleDoctorServedPatientsNum($order_inquiry['doctor_id']); diff --git a/app/Services/LoginService.php b/app/Services/LoginService.php index e42f146..d78bd84 100644 --- a/app/Services/LoginService.php +++ b/app/Services/LoginService.php @@ -38,22 +38,32 @@ class LoginService extends BaseService $wx_code = $this->request->input('wx_code'); $user_type = $this->request->input('user_type'); + // 获取微信用户数据 try { $weChat = new Wechat($user_type); // 获取手机号 $phone_info = $weChat->getPhone($phone_code); - if (empty($phone_info) || empty($phone_info['phone_info']) || empty($phone_info['phone_info']['purePhoneNumber'])) { + if (empty($phone_info)){ + return fail(HttpEnumCode::GET_WX_ERROR); + } + + if (empty($phone_info['phone_info']) || empty($phone_info['phone_info']['purePhoneNumber'])) { return fail(HttpEnumCode::GET_WX_ERROR); } // 获取用户openid $wx_info_data = $weChat->codeToSession($wx_code); + if (empty($wx_info_data)){ + return fail(HttpEnumCode::GET_WX_ERROR); + } + if (empty($wx_info_data['session_key']) || empty($wx_info_data['openid'])) { return fail(HttpEnumCode::GET_WX_ERROR); } }catch (\Throwable $e){ + Log::getInstance("LoginService-wechatMobileLogin")->error($e->getMessage()); return fail(HttpEnumCode::GET_WX_ERROR); } @@ -86,7 +96,7 @@ class LoginService extends BaseService $data['mobile'] = $phone_info['phone_info']['purePhoneNumber']; $data['wx_mobile'] = $phone_info['phone_info']['purePhoneNumber']; $data['user_type'] = $user_type; - $data['register_method'] = 1;//注册方式(1:小程序授权 2:手机号 ) + $data['register_method'] = 1;// 注册方式(1:小程序授权 2:手机号) $data['avatar'] = $avatar; $user = UserModel::addUser($data); if (empty($user)) { From 223ffb8fe37ede066ba6fc8c18e0bd1ab57accc3 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Fri, 15 Dec 2023 14:29:57 +0800 Subject: [PATCH 74/87] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E5=9B=9E=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Controller/CallBackController.php | 37 +++++++++------------------ extend/Wechat/WechatPay.php | 2 +- 2 files changed, 13 insertions(+), 26 deletions(-) diff --git a/app/Controller/CallBackController.php b/app/Controller/CallBackController.php index 251dd8d..10a06cf 100644 --- a/app/Controller/CallBackController.php +++ b/app/Controller/CallBackController.php @@ -77,14 +77,12 @@ class CallBackController extends AbstractController $app = $WechatPay->createApp(); $server = $app->getServer(); - $message = $server->getRequestMessage(); + // 获取解密消息 + $message = $server->getDecryptedMessage(); if (empty($message)) { return $this->response->withStatus(500)->withBody(new SwooleStream(strval(json_encode(['code' => 'ERROR', 'message' => "问诊微信支付回调数据为空"], JSON_UNESCAPED_UNICODE)))); } - // 验证推送消息签名 - $app->getValidator()->validate($app->getRequest()); - Log::getInstance()->info("问诊微信支付回调数据:" . json_encode($message->toArray(), JSON_UNESCAPED_UNICODE)); if (empty($message['out_trade_no'])) { @@ -245,15 +243,13 @@ class CallBackController extends AbstractController $app = $WechatPay->createApp(); $server = $app->getServer(); - $message = $server->getRequestMessage(); + // 获取解密消息 + $message = $server->getDecryptedMessage(); if (empty($message)) { Db::rollBack(); return $this->response->withStatus(500)->withBody(new SwooleStream(strval(json_encode(['code' => 'ERROR', 'message' => "回调数据为空"], JSON_UNESCAPED_UNICODE)))); } - // 验证推送消息签名 - $app->getValidator()->validate($app->getRequest()); - Log::getInstance("CallBackController-wxPayInquiryRefundCallBack")->info("微信退款回调数据:" . json_encode($message->toArray(), JSON_UNESCAPED_UNICODE)); if (empty($message['out_trade_no'])) { @@ -392,15 +388,12 @@ class CallBackController extends AbstractController $app = $WechatPay->createApp(); $server = $app->getServer(); - $message = $server->getRequestMessage(); - + // 获取解密消息 + $message = $server->getDecryptedMessage(); if (empty($message)) { return $this->response->withStatus(500)->withBody(new SwooleStream(strval(json_encode(['code' => 'ERROR', 'message' => "药品微信支付回调数据为空"], JSON_UNESCAPED_UNICODE)))); } - // 验证推送消息签名 - $app->getValidator()->validate($app->getRequest()); - Log::getInstance()->info("药品微信支付回调数据:" . json_encode($message->toArray(), JSON_UNESCAPED_UNICODE)); if (empty($message['out_trade_no'])) { @@ -549,15 +542,13 @@ class CallBackController extends AbstractController $app = $WechatPay->createApp(); $server = $app->getServer(); - $message = $server->getRequestMessage(); + // 获取解密消息 + $message = $server->getDecryptedMessage(); if (empty($message)) { Db::rollBack(); return $this->response->withStatus(500)->withBody(new SwooleStream(strval(json_encode(['code' => 'ERROR', 'message' => "回调数据为空"], JSON_UNESCAPED_UNICODE)))); } - // 验证推送消息签名 - $app->getValidator()->validate($app->getRequest()); - Log::getInstance("CallBackController-wxPayProductRefundCallBack")->info("微信退款回调数据:" . json_encode($message->toArray(), JSON_UNESCAPED_UNICODE)); if (empty($message['out_trade_no'])) { @@ -1159,14 +1150,12 @@ class CallBackController extends AbstractController $app = $WechatPay->createApp(); $server = $app->getServer(); - $message = $server->getRequestMessage(); + // 获取解密消息 + $message = $server->getDecryptedMessage(); if (empty($message)) { return $this->response->withStatus(500)->withBody(new SwooleStream(strval(json_encode(['code' => 'ERROR', 'message' => "问诊微信支付回调数据为空"], JSON_UNESCAPED_UNICODE)))); } - // 验证推送消息签名 - $app->getValidator()->validate($app->getRequest()); - Log::getInstance()->info("检测微信支付回调数据:" . json_encode($message->toArray(), JSON_UNESCAPED_UNICODE)); if (empty($message['out_trade_no'])) { @@ -1251,15 +1240,13 @@ class CallBackController extends AbstractController $app = $WechatPay->createApp(); $server = $app->getServer(); - $message = $server->getRequestMessage(); + // 获取解密消息 + $message = $server->getDecryptedMessage(); if (empty($message)) { Db::rollBack(); return $this->response->withStatus(500)->withBody(new SwooleStream(strval(json_encode(['code' => 'ERROR', 'message' => "回调数据为空"], JSON_UNESCAPED_UNICODE)))); } - // 验证推送消息签名 - $app->getValidator()->validate($app->getRequest()); - Log::getInstance()->info("微信退款回调数据:" . json_encode($message->toArray(), JSON_UNESCAPED_UNICODE)); if (empty($message['out_trade_no'])) { diff --git a/extend/Wechat/WechatPay.php b/extend/Wechat/WechatPay.php index 897f07d..2c7cd88 100644 --- a/extend/Wechat/WechatPay.php +++ b/extend/Wechat/WechatPay.php @@ -114,7 +114,7 @@ class WechatPay try { $app = new Application($config); - $request = ApplicationContext::getContainer()->get(RequestInterface::class); + $request = \Hyperf\Context\ApplicationContext::getContainer()->get(RequestInterface::class); $app->setRequest($request); return $app; } catch (InvalidArgumentException $e) { From 269856d09c3886b8b1a8f20fda551c1b32460512 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Fri, 15 Dec 2023 15:47:57 +0800 Subject: [PATCH 75/87] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E4=BC=98=E6=83=A0=E5=8D=B7=E6=97=B6=E5=90=8C=E4=B8=80=E5=95=86?= =?UTF-8?q?=E5=93=81=E4=B8=A4=E4=B8=AA=E6=95=B0=E9=87=8F=E4=BC=98=E6=83=A0?= =?UTF-8?q?=E5=8D=B7=E9=80=89=E6=8B=A9=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Services/UserCouponService.php | 55 ++++++++++++++++++++++++------ 1 file changed, 44 insertions(+), 11 deletions(-) diff --git a/app/Services/UserCouponService.php b/app/Services/UserCouponService.php index 43b9a7c..2901752 100644 --- a/app/Services/UserCouponService.php +++ b/app/Services/UserCouponService.php @@ -124,6 +124,9 @@ class UserCouponService extends BaseService // 优惠卷最高金额 $coupon_high_price = 0; + // 优惠卷最大数量 + $coupon_high_num = 0; + // 是否存在互斥卷 $is_mutex = 0; @@ -201,28 +204,58 @@ class UserCouponService extends BaseService continue; } - if (empty($selected_coupon)) { + if (empty($selected_coupons)) { $selected_coupons[] = $coupon; // 选中的优惠卷数据 - $coupon_high_price = $coupon['coupon_price']; + // 满减/无门槛-最高价格 + if ($coupon['coupon_type'] == 1 || $coupon['coupon_type'] == 2){ + $coupon_high_price = $coupon['coupon_price']; + } + + // 数量 + if ($coupon['coupon_type'] == 3){ + $coupon_high_num = $coupon['min_usable_number']; + } + continue; } // 处理存在互斥卷情况 if ($is_mutex == 1) { - // 选择金额最高的为选中 - if ($coupon['coupon_price'] < $coupon_high_price){ - continue; + // 满减/无门槛-最高价格 + if ($coupon['coupon_type'] == 1 || $coupon['coupon_type'] == 2){ + // 选择金额最高的为选中 + if ($coupon['coupon_price'] < $coupon_high_price){ + continue; + } + + if ($coupon['coupon_price'] > $coupon_high_price) { + $coupon_high_price = $coupon['coupon_price']; + + // 选中的优惠卷数据置空 + $selected_coupons = array(); + $selected_coupons[] = $coupon; + + continue; + } } - if ($coupon['coupon_price'] > $coupon_high_price) { - $coupon_high_price = $coupon['coupon_price']; + // 数量 + if ($coupon['coupon_type'] == 3){ + // 选择金额最高的为选中 + if ($coupon['min_usable_number'] < $coupon_high_num){ + continue; + } - // 选中的优惠卷数据置空 - $selected_coupons = array(); - $selected_coupons[] = $coupon; + if ($coupon['min_usable_number'] > $coupon_high_num) { + $coupon_high_num = $coupon['min_usable_number']; - continue; + // 选中的优惠卷数据置空 + $selected_coupons = array(); + $selected_coupons[] = $coupon; + + continue; + } } } From 39e5cc13d451c9ce02e3118725b6e1e06f83c270 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Fri, 15 Dec 2023 16:15:36 +0800 Subject: [PATCH 76/87] =?UTF-8?q?=E5=A4=84=E7=90=86=E5=90=8C=E4=B8=80?= =?UTF-8?q?=E5=95=86=E5=93=81=E5=AD=98=E5=9C=A8=E6=BB=A1=E5=87=8F=E5=92=8C?= =?UTF-8?q?=E6=95=B0=E9=87=8F=E7=9A=84=E9=80=89=E6=8B=A9=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Services/UserCouponService.php | 64 ++++++++++-------------------- 1 file changed, 20 insertions(+), 44 deletions(-) diff --git a/app/Services/UserCouponService.php b/app/Services/UserCouponService.php index 2901752..5dd9bad 100644 --- a/app/Services/UserCouponService.php +++ b/app/Services/UserCouponService.php @@ -124,9 +124,6 @@ class UserCouponService extends BaseService // 优惠卷最高金额 $coupon_high_price = 0; - // 优惠卷最大数量 - $coupon_high_num = 0; - // 是否存在互斥卷 $is_mutex = 0; @@ -136,8 +133,8 @@ class UserCouponService extends BaseService $coupons[$key]['cannot_use_coupon_reason'] = ""; // 不可使用原因 } + // 处理优惠卷数量限制问题 foreach ($coupons as $key => $coupon) { - // 处理优惠卷数量限制问题 if ($coupon['coupon_type'] == 3 && !empty($coupon['product_id'])){ // 数量是否足够标识字段 $quantity_quantity = 0; @@ -175,7 +172,14 @@ class UserCouponService extends BaseService continue; } - $product_price = bcadd($product_price,$coupon_product_data['product_price'],2); + $product_price = bcadd($product_price, + bcmul( // 商品价格*数量 + $coupon_product_data['product_price'], + $coupon_product_data['product_num'], + 2 + ), + 2 + ); } if ($coupon['with_amount'] > $product_price){ @@ -207,55 +211,27 @@ class UserCouponService extends BaseService if (empty($selected_coupons)) { $selected_coupons[] = $coupon; // 选中的优惠卷数据 - // 满减/无门槛-最高价格 - if ($coupon['coupon_type'] == 1 || $coupon['coupon_type'] == 2){ - $coupon_high_price = $coupon['coupon_price']; - } - - // 数量 - if ($coupon['coupon_type'] == 3){ - $coupon_high_num = $coupon['min_usable_number']; - } + $coupon_high_price = $coupon['coupon_price']; continue; } + dump($coupon_high_price); // 处理存在互斥卷情况 if ($is_mutex == 1) { - // 满减/无门槛-最高价格 - if ($coupon['coupon_type'] == 1 || $coupon['coupon_type'] == 2){ - // 选择金额最高的为选中 - if ($coupon['coupon_price'] < $coupon_high_price){ - continue; - } - - if ($coupon['coupon_price'] > $coupon_high_price) { - $coupon_high_price = $coupon['coupon_price']; - - // 选中的优惠卷数据置空 - $selected_coupons = array(); - $selected_coupons[] = $coupon; - - continue; - } + // 选择金额最高的为选中 + if ($coupon['coupon_price'] < $coupon_high_price){ + continue; } - // 数量 - if ($coupon['coupon_type'] == 3){ - // 选择金额最高的为选中 - if ($coupon['min_usable_number'] < $coupon_high_num){ - continue; - } + if ($coupon['coupon_price'] > $coupon_high_price) { + $coupon_high_price = $coupon['coupon_price']; - if ($coupon['min_usable_number'] > $coupon_high_num) { - $coupon_high_num = $coupon['min_usable_number']; + // 选中的优惠卷数据置空 + $selected_coupons = array(); + $selected_coupons[] = $coupon; - // 选中的优惠卷数据置空 - $selected_coupons = array(); - $selected_coupons[] = $coupon; - - continue; - } + continue; } } From a0a54667b0922ab61f41c8336934eb6a0915d7cf Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Fri, 15 Dec 2023 16:22:53 +0800 Subject: [PATCH 77/87] =?UTF-8?q?=E5=A4=84=E7=90=86=E5=9B=9E=E5=86=99?= =?UTF-8?q?=E6=82=A3=E8=80=85=E7=97=85=E6=83=85=E8=AE=B0=E5=BD=95-?= =?UTF-8?q?=E5=9B=9E=E5=86=99=E5=A4=B1=E8=B4=A5=E4=B8=8D=E5=81=9A=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php b/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php index a50faf3..e84bdc3 100644 --- a/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php +++ b/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php @@ -579,6 +579,8 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage return false; } + $order_inquiry_case = $order_inquiry_case->toArray(); + $data = array(); foreach ($order_inquiry_case as $key => $value) { // 主键跳过 @@ -599,7 +601,6 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage } $data[$key] = $value; - } // 获取处方数据 From 734a15f23f0eaff979d807752d6bb16cc41d2669 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Fri, 15 Dec 2023 17:29:14 +0800 Subject: [PATCH 78/87] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=82=A3=E8=80=85?= =?UTF-8?q?=E7=97=85=E6=83=85=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Command/GrantUserCouponCommand.php | 2 +- app/Services/PatientPathographyService.php | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/Command/GrantUserCouponCommand.php b/app/Command/GrantUserCouponCommand.php index db4cbbc..17e5aad 100644 --- a/app/Command/GrantUserCouponCommand.php +++ b/app/Command/GrantUserCouponCommand.php @@ -43,7 +43,7 @@ class GrantUserCouponCommand extends HyperfCommand // 获取需要发放的优惠卷数据 $params = array(); - $params['coupon_id'] = 2; + $params['coupon_id'] = 3; $coupon = Coupon::getOne($params); if (empty($coupon)){ $this->line("结束:无可执行优惠卷"); diff --git a/app/Services/PatientPathographyService.php b/app/Services/PatientPathographyService.php index 49e0468..c4674a6 100644 --- a/app/Services/PatientPathographyService.php +++ b/app/Services/PatientPathographyService.php @@ -88,6 +88,7 @@ class PatientPathographyService extends BaseService // 获取病情记录列表 $fields = [ "pathography_id", + "order_inquiry_id", "name", "sex", "age", @@ -104,9 +105,9 @@ class PatientPathographyService extends BaseService foreach ($patient_pathographys['data'] as &$patient_pathography){ $patient_pathography['reception_time'] = null; - if (!empty($patient_pathography['order_inquiry'])){ + if (!empty($patient_pathography['OrderInquiry'])){ // 接诊时间 - $patient_pathography['reception_time'] = $patient_pathography['order_inquiry']['reception_time']; + $patient_pathography['reception_time'] = $patient_pathography['OrderInquiry']['reception_time']; } unset($patient_pathography['OrderInquiry']); From 6d2e10eb2ca20cb6a35bbaa1ea2a3430727b07d6 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Mon, 18 Dec 2023 09:16:03 +0800 Subject: [PATCH 79/87] =?UTF-8?q?=E9=98=9F=E5=88=97=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E4=BD=BF=E7=94=A8=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Consumer/AutoCompleteInquiryDelayDirectConsumer.php | 6 +++--- .../Consumer/UserCouponExpiredNoticeDelayDirectConsumer.php | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/Amqp/Consumer/AutoCompleteInquiryDelayDirectConsumer.php b/app/Amqp/Consumer/AutoCompleteInquiryDelayDirectConsumer.php index a7b2596..95fe4c4 100644 --- a/app/Amqp/Consumer/AutoCompleteInquiryDelayDirectConsumer.php +++ b/app/Amqp/Consumer/AutoCompleteInquiryDelayDirectConsumer.php @@ -45,7 +45,7 @@ class AutoCompleteInquiryDelayDirectConsumer extends ConsumerMessage public function consumeMessage($data, AMQPMessage $message): string { - Log::getInstance("queue-AutoCompleteInquiry")->error(json_encode($data, JSON_UNESCAPED_UNICODE)); + Log::getInstance("queue-AutoCompleteInquiry")->info(json_encode($data, JSON_UNESCAPED_UNICODE)); Db::beginTransaction(); try { @@ -104,7 +104,7 @@ class AutoCompleteInquiryDelayDirectConsumer extends ConsumerMessage $patient_history_inquiry = PatientHistoryInquiry::addPatientHistoryInquiry($data); if (empty($patient_history_inquiry)){ Db::rollBack(); - Log::getInstance("queue-AutoCompleteInquiry")->info("新增患者历史问诊表失败"); + Log::getInstance("queue-AutoCompleteInquiry")->error("新增患者历史问诊表失败"); return Result::REQUEUE; } @@ -114,7 +114,7 @@ class AutoCompleteInquiryDelayDirectConsumer extends ConsumerMessage $user_doctor = UserDoctor::getOne($params); if(empty($user_doctor)){ Db::rollBack(); - Log::getInstance("queue-AutoCompleteInquiry")->info("缺少医生数据"); + Log::getInstance("queue-AutoCompleteInquiry")->error("缺少医生数据"); return Result::DROP; } diff --git a/app/Amqp/Consumer/UserCouponExpiredNoticeDelayDirectConsumer.php b/app/Amqp/Consumer/UserCouponExpiredNoticeDelayDirectConsumer.php index cf23ed0..e786523 100644 --- a/app/Amqp/Consumer/UserCouponExpiredNoticeDelayDirectConsumer.php +++ b/app/Amqp/Consumer/UserCouponExpiredNoticeDelayDirectConsumer.php @@ -36,7 +36,7 @@ class UserCouponExpiredNoticeDelayDirectConsumer extends ConsumerMessage public function consumeMessage($data, AMQPMessage $message): string { - Log::getInstance("queue-UserCouponExpiredNotice")->error("开始:" . json_encode($data, JSON_UNESCAPED_UNICODE)); + Log::getInstance("queue-UserCouponExpiredNotice")->info("开始:" . json_encode($data, JSON_UNESCAPED_UNICODE)); // 检测参数 if (!isset($data['user_coupon_id'])){ From 87f1caa555a18e0fb37d7b8f91ce62b864ee88a9 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Mon, 18 Dec 2023 09:24:34 +0800 Subject: [PATCH 80/87] =?UTF-8?q?=E9=98=9F=E5=88=97=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E4=BD=BF=E7=94=A8=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PrescriptionExpiredDelayDirectConsumer.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/app/Amqp/Consumer/PrescriptionExpiredDelayDirectConsumer.php b/app/Amqp/Consumer/PrescriptionExpiredDelayDirectConsumer.php index 9e82838..6073657 100644 --- a/app/Amqp/Consumer/PrescriptionExpiredDelayDirectConsumer.php +++ b/app/Amqp/Consumer/PrescriptionExpiredDelayDirectConsumer.php @@ -34,14 +34,14 @@ class PrescriptionExpiredDelayDirectConsumer extends ConsumerMessage public function consumeMessage($data, AMQPMessage $message): string { - Log::getInstance()->error("开始执行 处方过期 队列:" . json_encode($data, JSON_UNESCAPED_UNICODE)); + Log::getInstance("queue-PrescriptionExpired")->info(json_encode($data, JSON_UNESCAPED_UNICODE)); Db::beginTransaction(); try { // 验证参数 if (!isset($data['order_prescription_id'])){ Db::rollBack(); - Log::getInstance()->error("处方过期队列执行失败:入参错误"); + Log::getInstance("queue-PrescriptionExpired")->error("入参错误"); return Result::DROP; } @@ -51,7 +51,7 @@ class PrescriptionExpiredDelayDirectConsumer extends ConsumerMessage $order_prescription = OrderPrescription::getOne($params); if (empty($order_prescription)){ Db::rollBack(); - Log::getInstance()->error("处方过期处方队列执行失败:获取处方数据为空"); + Log::getInstance("queue-PrescriptionExpired")->error("获取处方数据为空"); return Result::DROP; } @@ -66,11 +66,11 @@ class PrescriptionExpiredDelayDirectConsumer extends ConsumerMessage $this->handlePrescription($order_prescription); Db::commit(); - Log::getInstance()->info("处方过期 队列执行成功"); + Log::getInstance("queue-PrescriptionExpired")->info("成功"); return Result::ACK; } catch (\Exception $e) { Db::rollBack(); - Log::getInstance()->error("处方过期 执行失败:" . $e->getMessage()); + Log::getInstance("queue-PrescriptionExpired")->error($e->getMessage()); return Result::ACK; // 重回队列 } } @@ -84,13 +84,13 @@ class PrescriptionExpiredDelayDirectConsumer extends ConsumerMessage { if ($order_prescription['prescription_status'] == 3){ Db::rollBack(); - Log::getInstance()->info("处方过期 队列执行失败:处方已失效,无需处理"); + Log::getInstance("queue-PrescriptionExpired")->info("处方已失效,无需处理"); return false; } if ($order_prescription['prescription_status'] == 4){ Db::rollBack(); - Log::getInstance()->info("处方过期 队列执行失败:处方已使用,无需处理"); + Log::getInstance("queue-PrescriptionExpired")->info("处方已使用,无需处理"); return false; } return true; From af4eb0ceaa7e8e163d1836931bb967e871307377 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Mon, 18 Dec 2023 09:29:54 +0800 Subject: [PATCH 81/87] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E8=AF=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Services/UserService.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Services/UserService.php b/app/Services/UserService.php index 2104c11..39b5369 100644 --- a/app/Services/UserService.php +++ b/app/Services/UserService.php @@ -1007,7 +1007,7 @@ class UserService extends BaseService return $result; } - Log::getInstance("UserService-userImLoginStatus")->info("用户已设上线"); + Log::getInstance("UserService-userImLoginStatus")->info("用户已上线"); } elseif ($msg_data['Info']['Action'] == "Disconnect"){ // 点右上角退出/断网(如手机开启飞行模式)/微信切后台/杀掉微信进程 $time = time() - $msg_data['RequestTime'] + 2*60; From 1f1aa14804e60e79725fb0c60b1ef07d76785af6 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Mon, 18 Dec 2023 11:32:46 +0800 Subject: [PATCH 82/87] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=AE=B6=E5=BA=AD=E6=88=90=E5=91=98=E7=97=85=E6=83=85=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E5=88=86=E7=BB=84=E4=B8=BA=E4=BB=8E=E5=AE=B6=E5=BA=AD?= =?UTF-8?q?=E6=88=90=E5=91=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Model/PatientFamily.php | 1 + app/Services/PatientPathographyService.php | 48 ++++++++++++++-------- config/routes.php | 2 - 3 files changed, 33 insertions(+), 18 deletions(-) diff --git a/app/Model/PatientFamily.php b/app/Model/PatientFamily.php index a2768fe..aa1bbfd 100644 --- a/app/Model/PatientFamily.php +++ b/app/Model/PatientFamily.php @@ -7,6 +7,7 @@ namespace App\Model; use Hyperf\Database\Model\Collection; +use Hyperf\Database\Model\Relations\HasOne; use Hyperf\Snowflake\Concern\Snowflake; /** diff --git a/app/Services/PatientPathographyService.php b/app/Services/PatientPathographyService.php index c4674a6..ed76afc 100644 --- a/app/Services/PatientPathographyService.php +++ b/app/Services/PatientPathographyService.php @@ -229,27 +229,43 @@ class PatientPathographyService extends BaseService { $user_info = $this->request->getAttribute("userInfo") ?? []; - $fields = [ - "pathography_id", - "user_id", - "patient_id", - "family_id", - "status", - "name", - "sex", - "age", - Db::raw('COUNT(0) AS `count`') - ]; + // 获取家庭成员数据 $params = array(); - $params['user_id'] = $user_info['user_id']; $params['patient_id'] = $user_info['client_user_id']; - $params['status'] = 1; - $patient_pathographys = PatientPathography::getFamilyPathographyGroup($params,$fields); - if (empty($patient_pathographys)){ + $patient_familys = PatientFamily::getList($params); + if (empty($patient_familys)){ return success(); } - return success($patient_pathographys->toArray()); + // 定义返回数据 + $results = array(); + + foreach ($patient_familys as $patient_family){ + // 定义返回数据 + $result = array(); + $result['user_id'] = $user_info['user_id']; + $result['patient_id'] = $patient_family['patient_id']; + $result['family_id'] = $patient_family['family_id']; + $result['status'] = $patient_family['status']; + $result['card_name'] = $patient_family['card_name']; + $result['sex'] = $patient_family['sex']; + $result['age'] = $patient_family['age']; + $result['count'] = 0; + + $params = array(); + $params['user_id'] = $user_info['user_id']; + $params['patient_id'] = $patient_family['patient_id']; + $params['family_id'] = $patient_family['family_id']; + $params['status'] = 1; + $patient_pathographys = PatientPathography::getList($params); + if (!empty($patient_pathographys)){ + $result['count'] = count($patient_pathographys); + } + + $results[] = $result; + } + + return success($results); } /** diff --git a/config/routes.php b/config/routes.php index 43edbc2..d218763 100644 --- a/config/routes.php +++ b/config/routes.php @@ -377,8 +377,6 @@ Router::addGroup('/patient', function () { // 获取家庭成员用药记录列表 Router::get('/record', [PatientFamilyController::class, 'getFamilyProductRecord']); }); - - }); // 药品 From 4a746292749d65f6f93fbbc47be944b420e77058 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Mon, 18 Dec 2023 14:39:17 +0800 Subject: [PATCH 83/87] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8C=BB=E7=94=9F?= =?UTF-8?q?=E8=B4=A6=E6=88=B7=E6=8E=A5=E8=AF=8A=E6=94=B6=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Services/DoctorAccountService.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Services/DoctorAccountService.php b/app/Services/DoctorAccountService.php index 4d63f7c..080386d 100644 --- a/app/Services/DoctorAccountService.php +++ b/app/Services/DoctorAccountService.php @@ -77,8 +77,8 @@ class DoctorAccountService extends BaseService } $result = array(); - $result['doctor_today_inquiry_total'] = bcmul($doctor_today_inquiry_total,1,2); // 今日接诊收入 - $result['doctor_day_completed_amount_total'] = bcmul($doctor_day_completed_amount_total ,1,2); // 今日已完成收入 + $result['doctor_today_inquiry_total'] = bcmul($doctor_today_inquiry_total,0.75,2); // 今日接诊收入 + $result['doctor_day_completed_amount_total'] = bcmul($doctor_day_completed_amount_total ,0.75,2); // 今日已完成收入 $result['balance_account'] = bcmul($balance_account ,1,2); // 账户余额 $result['bill'] = $bill; // 账单 From 7478c198ddc8df045654b7a83d49b20a13fc04e5 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Mon, 18 Dec 2023 17:36:58 +0800 Subject: [PATCH 84/87] 1 --- app/Services/UserService.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Services/UserService.php b/app/Services/UserService.php index 39b5369..192867f 100644 --- a/app/Services/UserService.php +++ b/app/Services/UserService.php @@ -888,7 +888,7 @@ class UserService extends BaseService break; case 'TIMSoundElem': - $message = "语音消息"; + $message = "[语音]"; break; case 'TIMImageElem': $message = "图像消息"; From 0d5ee9e6adc2f6760d95cfad1bcc13ebf696c2e5 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Tue, 19 Dec 2023 09:40:56 +0800 Subject: [PATCH 85/87] =?UTF-8?q?=E5=A4=84=E7=90=86=E5=9B=9E=E5=86=99?= =?UTF-8?q?=E6=82=A3=E8=80=85=E7=97=85=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AutoFinishInquiryDelayDirectConsumer.php | 347 ++++++++++++------ 1 file changed, 235 insertions(+), 112 deletions(-) diff --git a/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php b/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php index e84bdc3..65440fd 100644 --- a/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php +++ b/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php @@ -12,6 +12,7 @@ use App\Model\OrderEvaluation; use App\Model\OrderInquiry; use App\Model\OrderInquiryCase; use App\Model\OrderPrescription; +use App\Model\PatientFamily; use App\Model\PatientFamilyHealth; use App\Model\PatientFamilyPersonal; use App\Model\PatientPathography; @@ -104,7 +105,7 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage } // 超出执行次数 - if ($result['code'] == 2){ + if ($result['code'] == 2) { Db::rollBack(); return Result::ACK; } @@ -152,7 +153,7 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage // 新增上报监管平台数据 $reportRegulatoryService = new ReportRegulatoryService(); $res = $reportRegulatoryService->addReportRegulatory($order_inquiry['order_inquiry_id']); - if (!$res){ + if (!$res) { // 新增上报失败 Db::rollBack(); Log::getInstance("queue-AutoFinishInquiry")->error("新增上报监管平台数据失败"); @@ -171,7 +172,7 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage try { // 推送问诊结束im消息 $this->pushImInquiryFinish($order_inquiry); - }catch (\Exception $e){ + } catch (\Exception $e) { Log::getInstance("queue-AutoFinishInquiry")->error("发送消息异常错误:" . $e->getMessage()); } @@ -288,7 +289,7 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage $data['doctor_id'] = $order_inquiry['doctor_id']; $data['patient_id'] = $order_inquiry['patient_id']; $data['order_inquiry_id'] = $order_inquiry['order_inquiry_id']; - $data['name_mask'] = Mask::maskNameStr($order_inquiry['patient_name'],2); + $data['name_mask'] = Mask::maskNameStr($order_inquiry['patient_name'], 2); $data['reply_quality'] = 100;//回复质量(百分制) $data['service_attitude'] = 100; // 服务态度(百分制) $data['reply_progress'] = 100; // 回复速度(百分制) @@ -308,120 +309,242 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage * @param array|object $order_inquiry * @return void */ - protected function handleOrderInquiryCase(array|object $order_inquiry): void + protected function handleOrderInquiryCase(array|object $order_inquiry): bool { // 获取订单-问诊病例表 $params = array(); $params['order_inquiry_id'] = $order_inquiry['order_inquiry_id']; $order_inquiry_case = OrderInquiryCase::getOne($params); - if (!empty($order_inquiry_case)) { - // 获取患者家庭成员信息表-健康情况 + if (empty($order_inquiry_case)) { + return false; + } + + // 获取患者家庭成员信息表-基本信息 + $params = array(); + $params['family_id'] = $order_inquiry['family_id']; + $params['patient_id'] = $order_inquiry['patient_id']; + $params['status'] = 1; + $patient_family = PatientFamily::getOne($params); + if (empty($patient_family)){ + return false; + } + + $data = array(); + + // 身高 + if ($patient_family['height'] == null && $order_inquiry_case['height'] != null){ + $data['height'] = $order_inquiry_case['height']; + } + + // 体重 + if ($patient_family['weight'] == null && $order_inquiry_case['weight'] != null){ + $data['weight'] = $order_inquiry_case['weight']; + } + + // 婚姻状况(0:未婚 1:已婚 2:离异) + if ($patient_family['marital_status'] == null && $order_inquiry_case['marital_status'] != null){ + $data['marital_status'] = $order_inquiry_case['marital_status']; + } + + // 民族 + if ($patient_family['nation_id'] == null && $order_inquiry_case['nation_id'] != null){ + $data['nation_id'] = $order_inquiry_case['nation_id']; + + // 民族名称 + if ($patient_family['nation_name'] == null && $order_inquiry_case['nation_name'] != null){ + $data['nation_name'] = $order_inquiry_case['nation_name']; + } + } + + // 职业 + if ($patient_family['job_id'] == null && $order_inquiry_case['job_id'] != null){ + $data['job_id'] = $order_inquiry_case['job_id']; + + // 职业名称 + if ($patient_family['job_name'] == null && $order_inquiry_case['job_name'] != null){ + $data['job_name'] = $order_inquiry_case['job_name']; + } + } + + if (!empty($data)) { $params = array(); - $params['family_id'] = $order_inquiry['family_id']; - $params['patient_id'] = $order_inquiry['patient_id']; - $patient_family_health = PatientFamilyHealth::getOne($params); + $params['family_id'] = $patient_family['family_id']; + PatientFamily::edit($params, $data); + } + + // 获取患者家庭成员信息表-健康情况 + $params = array(); + $params['family_id'] = $order_inquiry['family_id']; + $params['patient_id'] = $order_inquiry['patient_id']; + $patient_family_health = PatientFamilyHealth::getOne($params); + if (empty($patient_family_health)) { + // 表数据为空 + $data = array(); + $data['family_id'] = $order_inquiry['family_id']; + $data['patient_id'] = $order_inquiry['patient_id']; + $data['disease_class_id'] = $order_inquiry_case['disease_class_id']; // 疾病分类id-系统 + $data['disease_class_name'] = $order_inquiry_case['disease_class_name']; // 疾病名称-系统 + $data['diagnosis_date'] = $order_inquiry_case['diagnosis_date']; // 确诊日期 + $data['diagnosis_hospital'] = $order_inquiry_case['diagnosis_hospital']; // 确诊医院 + $data['is_take_medicine'] = $order_inquiry_case['is_take_medicine']; // 正在服药(0:否 1:是) + $data['drugs_name'] = $order_inquiry_case['drugs_name']; // 正在服药名称 + $patient_family_health = PatientFamilyHealth::addPatientFamilyHealth($data); if (empty($patient_family_health)) { - // 表数据为空 - $data = array(); - $data['family_id'] = $order_inquiry['family_id']; - $data['patient_id'] = $order_inquiry['patient_id']; - $data['disease_class_id'] = $order_inquiry_case['disease_class_id']; // 疾病分类id-系统 - $data['disease_class_name'] = $order_inquiry_case['disease_class_name']; // 疾病名称-系统 - $data['diagnosis_date'] = $order_inquiry_case['diagnosis_date']; // 确诊日期 - $patient_family_health = PatientFamilyHealth::addPatientFamilyHealth($data); - if (empty($patient_family_health)) { - Log::getInstance("queue-AutoFinishInquiry")->error("错误:回写患者家庭成员信息表-健康情况表失败"); - } - } else { - $data = array(); - if ($order_inquiry_case['disease_class_id'] != $patient_family_health['disease_class_id']) { - $data['disease_class_id'] = $order_inquiry_case['disease_class_id']; // 疾病分类id-系统 - } + Log::getInstance("queue-AutoFinishInquiry")->error("错误:回写患者家庭成员信息表-健康情况表失败"); + } + } else { + $data = array(); - if ($order_inquiry_case['disease_class_name'] != $patient_family_health['disease_class_name']) { - $data['disease_class_name'] = $order_inquiry_case['disease_class_name']; // 疾病名称-系统 - } + // 疾病分类id-系统 + if ($patient_family_health['disease_class_id'] == null && $order_inquiry_case['disease_class_id'] != null) { + $data['disease_class_id'] = $order_inquiry_case['disease_class_id']; - if ($order_inquiry_case['diagnosis_date'] != $patient_family_health['diagnosis_date']) { - $data['diagnosis_date'] = $order_inquiry_case['diagnosis_date']; // 确诊日期 - } - - if (!empty($data)) { - $params = array(); - $params['family_health_id'] = $patient_family_health['family_health_id']; - PatientFamilyHealth::edit($params, $data); + // 疾病名称-系统 + if ($patient_family_health['disease_class_name'] == null && $order_inquiry_case['disease_class_name'] != null) { + $data['disease_class_name'] = $order_inquiry_case['disease_class_name']; } } - // 获取患者家庭成员信息表-个人情况 - $params = array(); - $params['family_id'] = $order_inquiry['family_id']; - $params['patient_id'] = $order_inquiry['patient_id']; - $patient_family_personal = PatientFamilyPersonal::getOne($params); - if (empty($patient_family_personal)) { - $data = array(); - $data['family_id'] = $order_inquiry['family_id']; - $data['patient_id'] = $order_inquiry['patient_id']; - if ($order_inquiry_case['is_allergy_history'] !== null) { - $data['is_allergy_history'] = $order_inquiry_case['is_allergy_history']; // 是否存在过敏史(0:否 1:是) - } + // 确诊日期 + if ($patient_family_health['diagnosis_date'] == null && $order_inquiry_case['diagnosis_date'] != null) { + $data['diagnosis_date'] = $order_inquiry_case['diagnosis_date']; + } + // 确诊医院 + if ($patient_family_health['diagnosis_hospital'] == null && $order_inquiry_case['diagnosis_hospital'] != null) { + $data['diagnosis_hospital'] = $order_inquiry_case['diagnosis_hospital']; + } + + // 正在服药 + if ($patient_family_health['is_take_medicine'] == null && $order_inquiry_case['is_take_medicine'] != null) { + $data['is_take_medicine'] = $order_inquiry_case['is_take_medicine']; + + // 正在服药名称 + if ($patient_family_health['drugs_name'] == null && $order_inquiry_case['drugs_name'] != null) { + $data['drugs_name'] = $order_inquiry_case['drugs_name']; + } + } + + if (!empty($data)) { + $params = array(); + $params['family_health_id'] = $patient_family_health['family_health_id']; + PatientFamilyHealth::edit($params, $data); + } + } + + // 获取患者家庭成员信息表-个人情况 + $params = array(); + $params['family_id'] = $order_inquiry['family_id']; + $params['patient_id'] = $order_inquiry['patient_id']; + $patient_family_personal = PatientFamilyPersonal::getOne($params); + if (empty($patient_family_personal)) { + $data = array(); + $data['family_id'] = $order_inquiry['family_id']; + $data['patient_id'] = $order_inquiry['patient_id']; + + // 是否存在过敏史(0:否 1:是) + if ($order_inquiry_case['is_allergy_history'] !== null) { + $data['is_allergy_history'] = $order_inquiry_case['is_allergy_history']; + + // 过敏史描述 if ($order_inquiry_case['allergy_history'] != null) { - $data['allergy_history'] = $order_inquiry_case['allergy_history']; // 过敏史描述 + $data['allergy_history'] = $order_inquiry_case['allergy_history']; } + } - if ($order_inquiry_case['is_family_history'] !== null) { - $data['is_family_history'] = $order_inquiry_case['is_family_history']; // 是否存在家族病史(0:否 1:是) - } + // 是否存在家族病史(0:否 1:是) + if ($order_inquiry_case['is_family_history'] !== null) { + $data['is_family_history'] = $order_inquiry_case['is_family_history']; + + // 家族病史描述 if ($order_inquiry_case['family_history'] != null) { - $data['family_history'] = $order_inquiry_case['family_history']; // 家族病史描述 + $data['family_history'] = $order_inquiry_case['family_history']; } + } - if ($order_inquiry_case['is_pregnant'] !== null) { - $data['is_pregnant'] = $order_inquiry_case['is_pregnant']; // 是否备孕、妊娠、哺乳期(0:否 1:是) - } + // 是否备孕、妊娠、哺乳期(0:否 1:是) + if ($order_inquiry_case['is_pregnant'] !== null) { + $data['is_pregnant'] = $order_inquiry_case['is_pregnant']; + // 是否备孕、妊娠、哺乳期(0:否 1:是) if ($order_inquiry_case['pregnant'] != null) { - $data['pregnant'] = $order_inquiry_case['pregnant']; // 是否备孕、妊娠、哺乳期(0:否 1:是) + $data['pregnant'] = $order_inquiry_case['pregnant']; } + } - $patient_family_personal = PatientFamilyPersonal::addPatientFamilyPersonal($data); - if (empty($patient_family_personal)) { - Log::getInstance("queue-AutoFinishInquiry")->error("错误:回写患者家庭成员信息表-个人情况表失败"); - } - } else { - $data = array(); - if ($order_inquiry_case['is_allergy_history'] !== $patient_family_personal['is_allergy_history']) { - $data['is_allergy_history'] = $order_inquiry_case['is_allergy_history']; // 是否存在过敏史(0:否 1:是) - } + $patient_family_personal = PatientFamilyPersonal::addPatientFamilyPersonal($data); + if (empty($patient_family_personal)) { + Log::getInstance("queue-AutoFinishInquiry")->error("错误:回写患者家庭成员信息表-个人情况表失败"); + } + } else { + $data = array(); - if ($order_inquiry_case['allergy_history'] != $patient_family_personal['allergy_history']) { - $data['allergy_history'] = $order_inquiry_case['allergy_history']; // 过敏史描述 - } + // 是否存在过敏史(0:否 1:是) + if ($patient_family_personal['is_allergy_history'] == null && $order_inquiry_case['is_allergy_history'] != null){ + $data['is_allergy_history'] = $order_inquiry_case['is_allergy_history']; - if ($order_inquiry_case['is_family_history'] !== $patient_family_personal['is_family_history']) { - $data['is_family_history'] = $order_inquiry_case['is_family_history']; // 是否存在家族病史(0:否 1:是) + // 过敏史描述 + if ($patient_family_personal['allergy_history'] == null && $order_inquiry_case['allergy_history'] != null){ + $data['allergy_history'] = $order_inquiry_case['allergy_history']; } + } - if ($order_inquiry_case['family_history'] != $patient_family_personal['family_history']) { - $data['family_history'] = $order_inquiry_case['family_history']; // 家族病史描述 - } + // 是否存在家族病史(0:否 1:是) + if ($patient_family_personal['is_family_history'] == null && $order_inquiry_case['is_family_history'] != null){ + $data['is_family_history'] = $order_inquiry_case['is_family_history']; - if ($order_inquiry_case['is_pregnant'] !== $patient_family_personal['is_pregnant']) { - $data['is_pregnant'] = $order_inquiry_case['is_pregnant']; // 是否备孕、妊娠、哺乳期(0:否 1:是) + // 家族病史描述 + if ($patient_family_personal['family_history'] == null && $order_inquiry_case['family_history'] != null){ + $data['family_history'] = $order_inquiry_case['family_history']; } + } - if ($order_inquiry_case['pregnant'] != $patient_family_personal['pregnant']) { - $data['pregnant'] = $order_inquiry_case['pregnant']; // 是否备孕、妊娠、哺乳期(0:否 1:是) - } + // 是否备孕、妊娠、哺乳期(0:否 1:是) + if ($patient_family_personal['is_pregnant'] == null && $order_inquiry_case['is_pregnant'] != null){ + $data['is_pregnant'] = $order_inquiry_case['is_pregnant']; - if (!empty($data)) { - $params = array(); - $params['family_personal_id'] = $patient_family_personal['family_personal_id']; - PatientFamilyPersonal::edit($params, $data); + // 备孕、妊娠、哺乳期描述 + if ($patient_family_personal['pregnant'] == null && $order_inquiry_case['pregnant'] != null){ + $data['pregnant'] = $order_inquiry_case['pregnant']; } } + + // 是否存在手术(0:否 1:是) + if ($patient_family_personal['is_operation'] == null && $order_inquiry_case['is_operation'] != null){ + $data['is_operation'] = $order_inquiry_case['is_operation']; + + // 手术描述 + if ($patient_family_personal['operation'] == null && $order_inquiry_case['operation'] != null){ + $data['operation'] = $order_inquiry_case['operation']; + } + } + + // 饮酒状态(1:从不 2:偶尔 3:经常 4:每天 5:已戒酒) + if ($patient_family_personal['drink_wine_status'] == null && $order_inquiry_case['drink_wine_status'] != null){ + $data['drink_wine_status'] = $order_inquiry_case['drink_wine_status']; + } + + // 吸烟状态(1:从不 2:偶尔 3:经常 4:每天 5:已戒烟) + if ($patient_family_personal['smoke_status'] == null && $order_inquiry_case['smoke_status'] != null){ + $data['smoke_status'] = $order_inquiry_case['smoke_status']; + } + + // 化合物状态(1:从不 2:偶尔 3:经常 4:每天) + if ($patient_family_personal['chemical_compound_status'] == null && $order_inquiry_case['chemical_compound_status'] != null){ + $data['chemical_compound_status'] = $order_inquiry_case['chemical_compound_status']; + + // 化合物描述 + if ($patient_family_personal['chemical_compound_describe'] == null && $order_inquiry_case['chemical_compound_describe'] != null){ + $data['chemical_compound_describe'] = $order_inquiry_case['chemical_compound_describe']; + } + } + + if (!empty($data)) { + $params = array(); + $params['family_personal_id'] = $patient_family_personal['family_personal_id']; + PatientFamilyPersonal::edit($params, $data); + } } } @@ -434,7 +557,7 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage { $params = array(); $params['doctor_id'] = $doctor_id; - UserDoctor::inc($params,'served_patients_num'); + UserDoctor::inc($params, 'served_patients_num'); } /** @@ -448,7 +571,7 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage $params = array(); $params['doctor_id'] = $doctor_id; $order_evaluation_count = OrderEvaluation::getCount($params); - if ($order_evaluation_count == 0){ + if ($order_evaluation_count == 0) { return 0; } @@ -463,7 +586,7 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage $data = array(); $data['praise_rate'] = $praise_rate; - UserDoctor::editUserDoctor($params,$data); + UserDoctor::editUserDoctor($params, $data); } /** @@ -481,22 +604,22 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage $params['doctor_id'] = $doctor_id; $params['inquiry_status'] = 6; $order_inquiry = OrderInquiry::getList($params); - if (!empty($order_inquiry)){ + if (!empty($order_inquiry)) { $order_inquiry = $order_inquiry->toArray(); - foreach ($order_inquiry as $item){ - if (empty($item['reception_time'])){ + foreach ($order_inquiry as $item) { + if (empty($item['reception_time'])) { continue; } $response_time = strtotime($item['reception_time']) - strtotime($item['created_at']); - if ($response_time < 0){ + if ($response_time < 0) { // 小于0的数据不统计 continue; } $avg_response_time[] = $response_time; } - if (!empty($avg_response_time)){ + if (!empty($avg_response_time)) { $result = floor((array_sum($avg_response_time) / count($avg_response_time)) / 60 * 100) / 100; $params = array(); @@ -504,7 +627,7 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage $data = array(); $data['avg_response_time'] = $result; - UserDoctor::editUserDoctor($params,$data); + UserDoctor::editUserDoctor($params, $data); } } } @@ -520,13 +643,13 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage $is_inquiry = false; $params = array(); - $params[] = ['user_id','=',$order_inquiry['user_id']]; - $params[] = ['doctor_id','=',$order_inquiry['doctor_id']]; - $params[] = ['created_at','>',$order_inquiry['created_at']]; + $params[] = ['user_id', '=', $order_inquiry['user_id']]; + $params[] = ['doctor_id', '=', $order_inquiry['doctor_id']]; + $params[] = ['created_at', '>', $order_inquiry['created_at']]; $order_inquirys = OrderInquiry::getList($params); - if (!empty($order_inquirys)){ - foreach ($order_inquirys as $item){ - if ($item['order_inquiry_id'] == $order_inquiry['order_inquiry_id']){ + if (!empty($order_inquirys)) { + foreach ($order_inquirys as $item) { + if ($item['order_inquiry_id'] == $order_inquiry['order_inquiry_id']) { continue; } $is_inquiry = true; @@ -534,15 +657,15 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage } } - if (!$is_inquiry){ + if (!$is_inquiry) { // 获取医生数据 $params = array(); $params['doctor_id'] = $order_inquiry['doctor_id']; $user_doctor = UserDoctor::getOne($params); - if (!empty($user_doctor)){ + if (!empty($user_doctor)) { // 发送IM消息-问诊已结束 $imService = new ImService(); - $imService->inquiryFinish($order_inquiry,$user_doctor['user_id'],$order_inquiry['user_id']); + $imService->inquiryFinish($order_inquiry, $user_doctor['user_id'], $order_inquiry['user_id']); } } } @@ -555,7 +678,7 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage */ protected function handlePatientPathography(array|object $order_inquiry): bool { - if ($order_inquiry['inquiry_type'] != 1 && $order_inquiry['inquiry_type'] != 2 && $order_inquiry['inquiry_type'] != 3 && $order_inquiry['inquiry_type'] != 4){ + if ($order_inquiry['inquiry_type'] != 1 && $order_inquiry['inquiry_type'] != 2 && $order_inquiry['inquiry_type'] != 3 && $order_inquiry['inquiry_type'] != 4) { // 非问诊订单,不进行处理 return true; } @@ -566,7 +689,7 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage $params['patient_id'] = $order_inquiry['patient_id']; $params['order_inquiry_id'] = $order_inquiry['order_inquiry_id']; $patient_pathography = PatientPathography::getOne($params); - if (!empty($patient_pathography)){ + if (!empty($patient_pathography)) { return false; } @@ -574,7 +697,7 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage $params = array(); $params['order_inquiry_id'] = $order_inquiry["order_inquiry_id"]; $order_inquiry_case = OrderInquiryCase::getOne($params); - if (empty($order_inquiry_case)){ + if (empty($order_inquiry_case)) { Log::getInstance("queue-AutoFinishInquiry")->error("错误:缺少问诊病例表"); return false; } @@ -584,19 +707,19 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage $data = array(); foreach ($order_inquiry_case as $key => $value) { // 主键跳过 - if ($key == "inquiry_case_id"){ + if ($key == "inquiry_case_id") { continue; } - if ($key == "created_at"){ + if ($key == "created_at") { continue; } - if ($key == "updated_at"){ + if ($key == "updated_at") { continue; } - if ($value == null){ + if ($value == null) { continue; } @@ -607,13 +730,13 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage $params = array(); $params['order_inquiry_id'] = $order_inquiry['order_inquiry_id']; $order_prescription = OrderPrescription::getOne($params); - if (!empty($order_prescription)){ + if (!empty($order_prescription)) { $data['order_prescription_id'] = $order_prescription['order_prescription_id']; } // 新增病情记录 $patient_pathography = PatientPathography::addPatientPathography($data); - if (empty($patient_pathography)){ + if (empty($patient_pathography)) { Log::getInstance("queue-AutoFinishInquiry")->error("错误:回写病情记录失败"); return false; } @@ -635,7 +758,7 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage try { $redis = $this->container->get(Redis::class); - }catch (\Throwable $e) { + } catch (\Throwable $e) { Log::getInstance("queue-AutoFinishInquiry")->error($e->getMessage()); $result['message'] = $e->getMessage(); return $result; From 2aea3c3f5f7e248b4885b802f06687c8f243e741 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Tue, 19 Dec 2023 10:18:46 +0800 Subject: [PATCH 86/87] =?UTF-8?q?=E5=A4=84=E7=90=86=E5=9B=9E=E5=86=99?= =?UTF-8?q?=E6=82=A3=E8=80=85=E7=97=85=E4=BE=8B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AutoFinishInquiryDelayDirectConsumer.php | 415 +++++++++--------- app/Services/PatientCaseService.php | 1 - 2 files changed, 211 insertions(+), 205 deletions(-) diff --git a/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php b/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php index 65440fd..b4fe764 100644 --- a/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php +++ b/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php @@ -311,240 +311,247 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage */ protected function handleOrderInquiryCase(array|object $order_inquiry): bool { - // 获取订单-问诊病例表 - $params = array(); - $params['order_inquiry_id'] = $order_inquiry['order_inquiry_id']; - $order_inquiry_case = OrderInquiryCase::getOne($params); - if (empty($order_inquiry_case)) { - return false; - } - - // 获取患者家庭成员信息表-基本信息 - $params = array(); - $params['family_id'] = $order_inquiry['family_id']; - $params['patient_id'] = $order_inquiry['patient_id']; - $params['status'] = 1; - $patient_family = PatientFamily::getOne($params); - if (empty($patient_family)){ - return false; - } - - $data = array(); - - // 身高 - if ($patient_family['height'] == null && $order_inquiry_case['height'] != null){ - $data['height'] = $order_inquiry_case['height']; - } - - // 体重 - if ($patient_family['weight'] == null && $order_inquiry_case['weight'] != null){ - $data['weight'] = $order_inquiry_case['weight']; - } - - // 婚姻状况(0:未婚 1:已婚 2:离异) - if ($patient_family['marital_status'] == null && $order_inquiry_case['marital_status'] != null){ - $data['marital_status'] = $order_inquiry_case['marital_status']; - } - - // 民族 - if ($patient_family['nation_id'] == null && $order_inquiry_case['nation_id'] != null){ - $data['nation_id'] = $order_inquiry_case['nation_id']; - - // 民族名称 - if ($patient_family['nation_name'] == null && $order_inquiry_case['nation_name'] != null){ - $data['nation_name'] = $order_inquiry_case['nation_name']; - } - } - - // 职业 - if ($patient_family['job_id'] == null && $order_inquiry_case['job_id'] != null){ - $data['job_id'] = $order_inquiry_case['job_id']; - - // 职业名称 - if ($patient_family['job_name'] == null && $order_inquiry_case['job_name'] != null){ - $data['job_name'] = $order_inquiry_case['job_name']; - } - } - - if (!empty($data)) { + try { + // 获取订单-问诊病例表 $params = array(); - $params['family_id'] = $patient_family['family_id']; - PatientFamily::edit($params, $data); - } - - // 获取患者家庭成员信息表-健康情况 - $params = array(); - $params['family_id'] = $order_inquiry['family_id']; - $params['patient_id'] = $order_inquiry['patient_id']; - $patient_family_health = PatientFamilyHealth::getOne($params); - if (empty($patient_family_health)) { - // 表数据为空 - $data = array(); - $data['family_id'] = $order_inquiry['family_id']; - $data['patient_id'] = $order_inquiry['patient_id']; - $data['disease_class_id'] = $order_inquiry_case['disease_class_id']; // 疾病分类id-系统 - $data['disease_class_name'] = $order_inquiry_case['disease_class_name']; // 疾病名称-系统 - $data['diagnosis_date'] = $order_inquiry_case['diagnosis_date']; // 确诊日期 - $data['diagnosis_hospital'] = $order_inquiry_case['diagnosis_hospital']; // 确诊医院 - $data['is_take_medicine'] = $order_inquiry_case['is_take_medicine']; // 正在服药(0:否 1:是) - $data['drugs_name'] = $order_inquiry_case['drugs_name']; // 正在服药名称 - $patient_family_health = PatientFamilyHealth::addPatientFamilyHealth($data); - if (empty($patient_family_health)) { - Log::getInstance("queue-AutoFinishInquiry")->error("错误:回写患者家庭成员信息表-健康情况表失败"); + $params['order_inquiry_id'] = $order_inquiry['order_inquiry_id']; + $order_inquiry_case = OrderInquiryCase::getOne($params); + if (empty($order_inquiry_case)) { + return false; } - } else { + + // 获取患者家庭成员信息表-基本信息 + $params = array(); + $params['family_id'] = $order_inquiry['family_id']; + $params['patient_id'] = $order_inquiry['patient_id']; + $params['status'] = 1; + $patient_family = PatientFamily::getOne($params); + if (empty($patient_family)){ + return false; + } + $data = array(); - // 疾病分类id-系统 - if ($patient_family_health['disease_class_id'] == null && $order_inquiry_case['disease_class_id'] != null) { - $data['disease_class_id'] = $order_inquiry_case['disease_class_id']; + // 身高 + if ($patient_family['height'] == null && $order_inquiry_case['height'] != null){ + $data['height'] = $order_inquiry_case['height']; + } - // 疾病名称-系统 - if ($patient_family_health['disease_class_name'] == null && $order_inquiry_case['disease_class_name'] != null) { - $data['disease_class_name'] = $order_inquiry_case['disease_class_name']; + // 体重 + if ($patient_family['weight'] == null && $order_inquiry_case['weight'] != null){ + $data['weight'] = $order_inquiry_case['weight']; + } + + // 婚姻状况(0:未婚 1:已婚 2:离异) + if ($patient_family['marital_status'] == null && $order_inquiry_case['marital_status'] != null){ + $data['marital_status'] = $order_inquiry_case['marital_status']; + } + + // 民族 + if ($patient_family['nation_id'] == null && $order_inquiry_case['nation_id'] != null){ + $data['nation_id'] = $order_inquiry_case['nation_id']; + + // 民族名称 + if ($patient_family['nation_name'] == null && $order_inquiry_case['nation_name'] != null){ + $data['nation_name'] = $order_inquiry_case['nation_name']; } } - // 确诊日期 - if ($patient_family_health['diagnosis_date'] == null && $order_inquiry_case['diagnosis_date'] != null) { - $data['diagnosis_date'] = $order_inquiry_case['diagnosis_date']; - } + // 职业 + if ($patient_family['job_id'] == null && $order_inquiry_case['job_id'] != null){ + $data['job_id'] = $order_inquiry_case['job_id']; - // 确诊医院 - if ($patient_family_health['diagnosis_hospital'] == null && $order_inquiry_case['diagnosis_hospital'] != null) { - $data['diagnosis_hospital'] = $order_inquiry_case['diagnosis_hospital']; - } - - // 正在服药 - if ($patient_family_health['is_take_medicine'] == null && $order_inquiry_case['is_take_medicine'] != null) { - $data['is_take_medicine'] = $order_inquiry_case['is_take_medicine']; - - // 正在服药名称 - if ($patient_family_health['drugs_name'] == null && $order_inquiry_case['drugs_name'] != null) { - $data['drugs_name'] = $order_inquiry_case['drugs_name']; + // 职业名称 + if ($patient_family['job_name'] == null && $order_inquiry_case['job_name'] != null){ + $data['job_name'] = $order_inquiry_case['job_name']; } } if (!empty($data)) { $params = array(); - $params['family_health_id'] = $patient_family_health['family_health_id']; - PatientFamilyHealth::edit($params, $data); + $params['family_id'] = $patient_family['family_id']; + PatientFamily::edit($params, $data); } - } - // 获取患者家庭成员信息表-个人情况 - $params = array(); - $params['family_id'] = $order_inquiry['family_id']; - $params['patient_id'] = $order_inquiry['patient_id']; - $patient_family_personal = PatientFamilyPersonal::getOne($params); - if (empty($patient_family_personal)) { - $data = array(); - $data['family_id'] = $order_inquiry['family_id']; - $data['patient_id'] = $order_inquiry['patient_id']; + // 获取患者家庭成员信息表-健康情况 + $params = array(); + $params['family_id'] = $order_inquiry['family_id']; + $params['patient_id'] = $order_inquiry['patient_id']; + $patient_family_health = PatientFamilyHealth::getOne($params); + if (empty($patient_family_health)) { + // 表数据为空 + $data = array(); + $data['family_id'] = $order_inquiry['family_id']; + $data['patient_id'] = $order_inquiry['patient_id']; + $data['disease_class_id'] = $order_inquiry_case['disease_class_id']; // 疾病分类id-系统 + $data['disease_class_name'] = $order_inquiry_case['disease_class_name']; // 疾病名称-系统 + $data['diagnosis_date'] = $order_inquiry_case['diagnosis_date']; // 确诊日期 + $data['diagnosis_hospital'] = $order_inquiry_case['diagnosis_hospital']; // 确诊医院 + $data['is_take_medicine'] = $order_inquiry_case['is_take_medicine']; // 正在服药(0:否 1:是) + $data['drugs_name'] = $order_inquiry_case['drugs_name']; // 正在服药名称 + $patient_family_health = PatientFamilyHealth::addPatientFamilyHealth($data); + if (empty($patient_family_health)) { + Log::getInstance("queue-AutoFinishInquiry")->error("回写患者家庭成员信息表-健康情况表失败"); + } + } else { + $data = array(); - // 是否存在过敏史(0:否 1:是) - if ($order_inquiry_case['is_allergy_history'] !== null) { - $data['is_allergy_history'] = $order_inquiry_case['is_allergy_history']; + // 疾病分类id-系统 + if ($patient_family_health['disease_class_id'] == null && $order_inquiry_case['disease_class_id'] != null) { + $data['disease_class_id'] = $order_inquiry_case['disease_class_id']; - // 过敏史描述 - if ($order_inquiry_case['allergy_history'] != null) { - $data['allergy_history'] = $order_inquiry_case['allergy_history']; + // 疾病名称-系统 + if ($patient_family_health['disease_class_name'] == null && $order_inquiry_case['disease_class_name'] != null) { + $data['disease_class_name'] = $order_inquiry_case['disease_class_name']; + } + } + + // 确诊日期 + if ($patient_family_health['diagnosis_date'] == null && $order_inquiry_case['diagnosis_date'] != null) { + $data['diagnosis_date'] = $order_inquiry_case['diagnosis_date']; + } + + // 确诊医院 + if ($patient_family_health['diagnosis_hospital'] == null && $order_inquiry_case['diagnosis_hospital'] != null) { + $data['diagnosis_hospital'] = $order_inquiry_case['diagnosis_hospital']; + } + + // 正在服药 + if ($patient_family_health['is_take_medicine'] == null && $order_inquiry_case['is_take_medicine'] != null) { + $data['is_take_medicine'] = $order_inquiry_case['is_take_medicine']; + + // 正在服药名称 + if ($patient_family_health['drugs_name'] == null && $order_inquiry_case['drugs_name'] != null) { + $data['drugs_name'] = $order_inquiry_case['drugs_name']; + } + } + + if (!empty($data)) { + $params = array(); + $params['family_health_id'] = $patient_family_health['family_health_id']; + PatientFamilyHealth::edit($params, $data); } } + // 获取患者家庭成员信息表-个人情况 + $params = array(); + $params['family_id'] = $order_inquiry['family_id']; + $params['patient_id'] = $order_inquiry['patient_id']; + $patient_family_personal = PatientFamilyPersonal::getOne($params); + if (empty($patient_family_personal)) { + $data = array(); + $data['family_id'] = $order_inquiry['family_id']; + $data['patient_id'] = $order_inquiry['patient_id']; - // 是否存在家族病史(0:否 1:是) - if ($order_inquiry_case['is_family_history'] !== null) { - $data['is_family_history'] = $order_inquiry_case['is_family_history']; + // 是否存在过敏史(0:否 1:是) + if ($order_inquiry_case['is_allergy_history'] !== null) { + $data['is_allergy_history'] = $order_inquiry_case['is_allergy_history']; - // 家族病史描述 - if ($order_inquiry_case['family_history'] != null) { - $data['family_history'] = $order_inquiry_case['family_history']; + // 过敏史描述 + if ($order_inquiry_case['allergy_history'] != null) { + $data['allergy_history'] = $order_inquiry_case['allergy_history']; + } } - } - // 是否备孕、妊娠、哺乳期(0:否 1:是) - if ($order_inquiry_case['is_pregnant'] !== null) { - $data['is_pregnant'] = $order_inquiry_case['is_pregnant']; + + // 是否存在家族病史(0:否 1:是) + if ($order_inquiry_case['is_family_history'] !== null) { + $data['is_family_history'] = $order_inquiry_case['is_family_history']; + + // 家族病史描述 + if ($order_inquiry_case['family_history'] != null) { + $data['family_history'] = $order_inquiry_case['family_history']; + } + } // 是否备孕、妊娠、哺乳期(0:否 1:是) - if ($order_inquiry_case['pregnant'] != null) { - $data['pregnant'] = $order_inquiry_case['pregnant']; + if ($order_inquiry_case['is_pregnant'] !== null) { + $data['is_pregnant'] = $order_inquiry_case['is_pregnant']; + + // 是否备孕、妊娠、哺乳期(0:否 1:是) + if ($order_inquiry_case['pregnant'] != null) { + $data['pregnant'] = $order_inquiry_case['pregnant']; + } + } + + $patient_family_personal = PatientFamilyPersonal::addPatientFamilyPersonal($data); + if (empty($patient_family_personal)) { + Log::getInstance("queue-AutoFinishInquiry")->error("回写患者家庭成员信息表-个人情况表失败"); + } + } else { + $data = array(); + + // 是否存在过敏史(0:否 1:是) + if ($patient_family_personal['is_allergy_history'] == null && $order_inquiry_case['is_allergy_history'] != null){ + $data['is_allergy_history'] = $order_inquiry_case['is_allergy_history']; + + // 过敏史描述 + if ($patient_family_personal['allergy_history'] == null && $order_inquiry_case['allergy_history'] != null){ + $data['allergy_history'] = $order_inquiry_case['allergy_history']; + } + } + + // 是否存在家族病史(0:否 1:是) + if ($patient_family_personal['is_family_history'] == null && $order_inquiry_case['is_family_history'] != null){ + $data['is_family_history'] = $order_inquiry_case['is_family_history']; + + // 家族病史描述 + if ($patient_family_personal['family_history'] == null && $order_inquiry_case['family_history'] != null){ + $data['family_history'] = $order_inquiry_case['family_history']; + } + } + + // 是否备孕、妊娠、哺乳期(0:否 1:是) + if ($patient_family_personal['is_pregnant'] == null && $order_inquiry_case['is_pregnant'] != null){ + $data['is_pregnant'] = $order_inquiry_case['is_pregnant']; + + // 备孕、妊娠、哺乳期描述 + if ($patient_family_personal['pregnant'] == null && $order_inquiry_case['pregnant'] != null){ + $data['pregnant'] = $order_inquiry_case['pregnant']; + } + } + + // 是否存在手术(0:否 1:是) + if ($patient_family_personal['is_operation'] == null && $order_inquiry_case['is_operation'] != null){ + $data['is_operation'] = $order_inquiry_case['is_operation']; + + // 手术描述 + if ($patient_family_personal['operation'] == null && $order_inquiry_case['operation'] != null){ + $data['operation'] = $order_inquiry_case['operation']; + } + } + + // 饮酒状态(1:从不 2:偶尔 3:经常 4:每天 5:已戒酒) + if ($patient_family_personal['drink_wine_status'] == null && $order_inquiry_case['drink_wine_status'] != null){ + $data['drink_wine_status'] = $order_inquiry_case['drink_wine_status']; + } + + // 吸烟状态(1:从不 2:偶尔 3:经常 4:每天 5:已戒烟) + if ($patient_family_personal['smoke_status'] == null && $order_inquiry_case['smoke_status'] != null){ + $data['smoke_status'] = $order_inquiry_case['smoke_status']; + } + + // 化合物状态(1:从不 2:偶尔 3:经常 4:每天) + if ($patient_family_personal['chemical_compound_status'] == null && $order_inquiry_case['chemical_compound_status'] != null){ + $data['chemical_compound_status'] = $order_inquiry_case['chemical_compound_status']; + + // 化合物描述 + if ($patient_family_personal['chemical_compound_describe'] == null && $order_inquiry_case['chemical_compound_describe'] != null){ + $data['chemical_compound_describe'] = $order_inquiry_case['chemical_compound_describe']; + } + } + + if (!empty($data)) { + $params = array(); + $params['family_personal_id'] = $patient_family_personal['family_personal_id']; + PatientFamilyPersonal::edit($params, $data); } } - $patient_family_personal = PatientFamilyPersonal::addPatientFamilyPersonal($data); - if (empty($patient_family_personal)) { - Log::getInstance("queue-AutoFinishInquiry")->error("错误:回写患者家庭成员信息表-个人情况表失败"); - } - } else { - $data = array(); - - // 是否存在过敏史(0:否 1:是) - if ($patient_family_personal['is_allergy_history'] == null && $order_inquiry_case['is_allergy_history'] != null){ - $data['is_allergy_history'] = $order_inquiry_case['is_allergy_history']; - - // 过敏史描述 - if ($patient_family_personal['allergy_history'] == null && $order_inquiry_case['allergy_history'] != null){ - $data['allergy_history'] = $order_inquiry_case['allergy_history']; - } - } - - // 是否存在家族病史(0:否 1:是) - if ($patient_family_personal['is_family_history'] == null && $order_inquiry_case['is_family_history'] != null){ - $data['is_family_history'] = $order_inquiry_case['is_family_history']; - - // 家族病史描述 - if ($patient_family_personal['family_history'] == null && $order_inquiry_case['family_history'] != null){ - $data['family_history'] = $order_inquiry_case['family_history']; - } - } - - // 是否备孕、妊娠、哺乳期(0:否 1:是) - if ($patient_family_personal['is_pregnant'] == null && $order_inquiry_case['is_pregnant'] != null){ - $data['is_pregnant'] = $order_inquiry_case['is_pregnant']; - - // 备孕、妊娠、哺乳期描述 - if ($patient_family_personal['pregnant'] == null && $order_inquiry_case['pregnant'] != null){ - $data['pregnant'] = $order_inquiry_case['pregnant']; - } - } - - // 是否存在手术(0:否 1:是) - if ($patient_family_personal['is_operation'] == null && $order_inquiry_case['is_operation'] != null){ - $data['is_operation'] = $order_inquiry_case['is_operation']; - - // 手术描述 - if ($patient_family_personal['operation'] == null && $order_inquiry_case['operation'] != null){ - $data['operation'] = $order_inquiry_case['operation']; - } - } - - // 饮酒状态(1:从不 2:偶尔 3:经常 4:每天 5:已戒酒) - if ($patient_family_personal['drink_wine_status'] == null && $order_inquiry_case['drink_wine_status'] != null){ - $data['drink_wine_status'] = $order_inquiry_case['drink_wine_status']; - } - - // 吸烟状态(1:从不 2:偶尔 3:经常 4:每天 5:已戒烟) - if ($patient_family_personal['smoke_status'] == null && $order_inquiry_case['smoke_status'] != null){ - $data['smoke_status'] = $order_inquiry_case['smoke_status']; - } - - // 化合物状态(1:从不 2:偶尔 3:经常 4:每天) - if ($patient_family_personal['chemical_compound_status'] == null && $order_inquiry_case['chemical_compound_status'] != null){ - $data['chemical_compound_status'] = $order_inquiry_case['chemical_compound_status']; - - // 化合物描述 - if ($patient_family_personal['chemical_compound_describe'] == null && $order_inquiry_case['chemical_compound_describe'] != null){ - $data['chemical_compound_describe'] = $order_inquiry_case['chemical_compound_describe']; - } - } - - if (!empty($data)) { - $params = array(); - $params['family_personal_id'] = $patient_family_personal['family_personal_id']; - PatientFamilyPersonal::edit($params, $data); - } + return true; + }catch (\Throwable $e){ + Log::getInstance("queue-AutoFinishInquiry")->error($e->getMessage()); + return false; } } diff --git a/app/Services/PatientCaseService.php b/app/Services/PatientCaseService.php index ed8fcdd..d666f6f 100644 --- a/app/Services/PatientCaseService.php +++ b/app/Services/PatientCaseService.php @@ -288,7 +288,6 @@ class PatientCaseService extends BaseService // 缓存 if (!empty($redis_value)){ - dump($redis_value); $redis_value = json_decode($redis_value,true); } From c08e92ee3091dcc689afc9df72626a5915deb344 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Tue, 19 Dec 2023 11:22:58 +0800 Subject: [PATCH 87/87] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Services/InquiryService.php | 3 +-- app/Services/UserService.php | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/app/Services/InquiryService.php b/app/Services/InquiryService.php index 77978f8..b4051b2 100644 --- a/app/Services/InquiryService.php +++ b/app/Services/InquiryService.php @@ -1090,8 +1090,7 @@ class InquiryService extends BaseService $data['order_inquiry_id'] = $order_inquiry['order_inquiry_id']; $message = new AutoFinishInquiryDelayDirectProducer($data); -// $message->setDelayMs(1000 * 60 * 60 * 24 * 3); - $message->setDelayMs(1000 * 60 * 3); + $message->setDelayMs(1000 * 60 * 60 * 24 * 3); $producer = $this->container->get(Producer::class); $res = $producer->produce($message); if (!$res) { diff --git a/app/Services/UserService.php b/app/Services/UserService.php index 192867f..a1d8f9e 100644 --- a/app/Services/UserService.php +++ b/app/Services/UserService.php @@ -1010,9 +1010,9 @@ class UserService extends BaseService Log::getInstance("UserService-userImLoginStatus")->info("用户已上线"); } elseif ($msg_data['Info']['Action'] == "Disconnect"){ // 点右上角退出/断网(如手机开启飞行模式)/微信切后台/杀掉微信进程 - $time = time() - $msg_data['RequestTime'] + 2*60; + $time = time() - $msg_data['RequestTime'] + 30*60; if ($time <= 0){ - $time = 2 * 60; + $time = 30 * 60; } $data = array();