From d23afb5491ff59741373049964771bd8f428e403 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Tue, 28 Feb 2023 19:19:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E9=97=AE=E8=AF=8A=E7=B1=BB?= =?UTF-8?q?=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Controller/BasicDataController.php | 11 ++ ...ryController.php => InquiryController.php} | 19 +-- app/Model/Product.php | 17 +- app/Model/UserDoctor.php | 1 - app/Request/BasicDataRequest.php | 5 + ...rInquiryRequest.php => InquiryRequest.php} | 4 +- app/Services/BasicDataService.php | 33 ++++ app/Services/IndexService.php | 6 +- ...rInquiryService.php => InquiryService.php} | 158 +++++++++--------- app/Services/UserDoctorService.php | 4 +- config/routes.php | 18 +- 11 files changed, 167 insertions(+), 109 deletions(-) rename app/Controller/{OrderInquiryController.php => InquiryController.php} (66%) rename app/Request/{OrderInquiryRequest.php => InquiryRequest.php} (97%) rename app/Services/{OrderInquiryService.php => InquiryService.php} (98%) diff --git a/app/Controller/BasicDataController.php b/app/Controller/BasicDataController.php index a7bda58..84fd685 100644 --- a/app/Controller/BasicDataController.php +++ b/app/Controller/BasicDataController.php @@ -113,4 +113,15 @@ class BasicDataController extends AbstractController $data = $BasicDataService->getDiseaseExpertiseList(); return $this->response->json($data); } + + // 搜索商品 + public function getProductSearch(): ResponseInterface + { + $request = $this->container->get(BasicDataRequest::class); + $request->scene('getProductSearch')->validateResolved(); + + $BasicDataService = new BasicDataService(); + $data = $BasicDataService->getProductSearch(); + return $this->response->json($data); + } } \ No newline at end of file diff --git a/app/Controller/OrderInquiryController.php b/app/Controller/InquiryController.php similarity index 66% rename from app/Controller/OrderInquiryController.php rename to app/Controller/InquiryController.php index 9f32787..371f352 100644 --- a/app/Controller/OrderInquiryController.php +++ b/app/Controller/InquiryController.php @@ -2,23 +2,18 @@ namespace App\Controller; -use App\Amqp\Producer\AmqpDelayDirectProducer; -use App\Constants\HttpEnumCode; +use App\Request\InquiryRequest; use App\Request\OrderInquiryRequest; -use App\Request\UserPatientRequest; +use App\Services\InquiryService; use App\Services\OrderInquiryService; -use Hyperf\Amqp\Producer; -use Hyperf\Di\Annotation\Inject; -use Hyperf\Utils\ApplicationContext; -use Hyperf\Validation\Contract\ValidatorFactoryInterface; use Psr\Container\ContainerExceptionInterface; use Psr\Container\NotFoundExceptionInterface; use Psr\Http\Message\ResponseInterface; /** - * 问诊订单 + * 问诊 */ -class OrderInquiryController extends AbstractController +class InquiryController extends AbstractController { /** * 创建问诊订单 @@ -38,11 +33,11 @@ class OrderInquiryController extends AbstractController // $producer = ApplicationContext::getContainer()->get(Producer::class); // $producer->produce($message); - $request = $this->container->get(OrderInquiryRequest::class); + $request = $this->container->get(InquiryRequest::class); $request->scene('addInquiryOrder')->validateResolved(); - $OrderInquiryService = new OrderInquiryService(); - $data = $OrderInquiryService->addInquiryOrder(); + $InquiryService = new InquiryService(); + $data = $InquiryService->addInquiryOrder(); return $this->response->json($data); } } \ No newline at end of file diff --git a/app/Model/Product.php b/app/Model/Product.php index 6bd4d21..0a82844 100644 --- a/app/Model/Product.php +++ b/app/Model/Product.php @@ -6,6 +6,7 @@ namespace App\Model; +use Hyperf\Database\Model\Collection; use Hyperf\Database\Model\Relations\HasOne; use Hyperf\Snowflake\Concern\Snowflake; @@ -46,11 +47,6 @@ class Product extends Model */ 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']; - /** - * The attributes that should be cast to native types. - */ - protected array $casts = ['product_id' => 'integer', 'product_platform_id' => 'integer', 'product_type' => 'integer', 'created_at' => 'datetime', 'updated_at' => 'datetime']; - protected string $primaryKey = "product_id"; /** @@ -86,4 +82,15 @@ class Product extends Model ->where($params) ->first($fields); } + + /** + * 获取数据-多 + * @param array $params + * @param array $fields + * @return Collection|array + */ + public static function getList(array $params = [], array $fields = ['*']): Collection|array + { + return self::where($params)->get($fields); + } } diff --git a/app/Model/UserDoctor.php b/app/Model/UserDoctor.php index b0b7a8e..819fd65 100644 --- a/app/Model/UserDoctor.php +++ b/app/Model/UserDoctor.php @@ -175,7 +175,6 @@ class UserDoctor extends Model $datas = self::with([ 'Hospital:hospital_id,hospital_name,hospital_level_name', 'DoctorInquiryConfig', - 'DoctorInquiryConfig.SystemInquiryConfig' ]) ->where($params) ->orderBy("is_platform_deep_cooperation", "desc") diff --git a/app/Request/BasicDataRequest.php b/app/Request/BasicDataRequest.php index 78ba695..0a5e82f 100644 --- a/app/Request/BasicDataRequest.php +++ b/app/Request/BasicDataRequest.php @@ -17,6 +17,9 @@ class BasicDataRequest extends FormRequest ], 'getDiseaseSearch' => [ // 搜索疾病分类 'disease_class_name', + ], + 'getProductSearch' => [ // 搜索商品 + 'product_keyword', ] ]; @@ -37,6 +40,7 @@ class BasicDataRequest extends FormRequest 'province_id' => 'required_with:city_id,county_id', 'city_id' => 'required_with:county_id', 'disease_class_name' => 'required', + 'product_keyword' => 'required', ]; } @@ -49,6 +53,7 @@ class BasicDataRequest extends FormRequest 'province_id.required_with' => "请选择省份", 'city_id.required_with' => "请选择城市", 'disease_class_name.required' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR), + 'product_keyword.required' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR), ]; } } diff --git a/app/Request/OrderInquiryRequest.php b/app/Request/InquiryRequest.php similarity index 97% rename from app/Request/OrderInquiryRequest.php rename to app/Request/InquiryRequest.php index f790851..fdcd018 100644 --- a/app/Request/OrderInquiryRequest.php +++ b/app/Request/InquiryRequest.php @@ -7,10 +7,10 @@ namespace App\Request; use App\Constants\HttpEnumCode; use Hyperf\Validation\Request\FormRequest; -class OrderInquiryRequest extends FormRequest +class InquiryRequest extends FormRequest { protected array $scenes = [ - 'addInquiryOrder' => [ + 'addInquiryOrder' => [ // 创建问诊订单 'patient_id', 'family_id', 'disease_class_id', diff --git a/app/Services/BasicDataService.php b/app/Services/BasicDataService.php index d4d5969..20c7806 100644 --- a/app/Services/BasicDataService.php +++ b/app/Services/BasicDataService.php @@ -8,6 +8,7 @@ use App\Model\DiseaseClassExpertise; use App\Model\Hospital; use App\Model\HospitalDepartmentCustom; use App\Model\OperationManual; +use App\Model\Product; /** * 基础数据服务类 @@ -189,4 +190,36 @@ class BasicDataService extends BaseService $disease_class_expertise = DiseaseClassExpertise::getOrderList($params,$fields); return success($disease_class_expertise); } + + public function getProductSearch(){ + $product_keyword = $this->request->input('product_keyword'); + + $fields = [ + 'product_id', + 'product_name', + 'product_cover_img', + 'product_spec', + 'manufacturer', + 'single_unit', + 'single_use', + 'packaging_unit', + 'frequency_use', + 'available_days', + ]; + $params = array(); + $params[] = ['product_name','like','%' . $product_keyword . '%']; + + $product = Product::getList($params,$fields); + if (empty($product)){ + return success(); + } + + foreach ($product as &$item){ + $item['product_cover_img'] = addAliyunOssWebsite($item['product_cover_img']); + + $item['product_name'] = $item['product_name'] . ' ' . $item['product_spec']; + } + + return success($product->toArray()); + } } \ No newline at end of file diff --git a/app/Services/IndexService.php b/app/Services/IndexService.php index 572859e..6e1d240 100644 --- a/app/Services/IndexService.php +++ b/app/Services/IndexService.php @@ -63,14 +63,14 @@ class IndexService extends BaseService return fail(HttpEnumCode::USER_STATUS_ERROR); } - $OrderInquiryService = new OrderInquiryService(); + $InquiryService = new InquiryService(); $OrderPrescriptionService = new OrderPrescriptionService(); // 获取未接诊患者个数 - $not_accepted_inquiry_num = $OrderInquiryService->getDoctorNotAcceptedInquiryNum($doctor['doctor_id']); + $not_accepted_inquiry_num = $InquiryService->getDoctorNotAcceptedInquiryNum($doctor['doctor_id']); // 获取接诊中患者个数 - $accepting_inquiry_num = $OrderInquiryService->getDoctorAcceptingInquiryNum($doctor['doctor_id']); + $accepting_inquiry_num = $InquiryService->getDoctorAcceptingInquiryNum($doctor['doctor_id']); // 获取被驳回处方数据 $reject_prescription_number = $OrderPrescriptionService->getDoctorExistsAuditFail($doctor['doctor_id']); diff --git a/app/Services/OrderInquiryService.php b/app/Services/InquiryService.php similarity index 98% rename from app/Services/OrderInquiryService.php rename to app/Services/InquiryService.php index 9f4b510..6d484ac 100644 --- a/app/Services/OrderInquiryService.php +++ b/app/Services/InquiryService.php @@ -4,17 +4,13 @@ namespace App\Services; use App\Amqp\Producer\AmqpDelayDirectProducer; use App\Constants\HttpEnumCode; -use App\Exception\BusinessException; use App\Model\DiseaseClass; -use App\Model\DoctorInquiryConfig; use App\Model\InquiryCaseProduct; use App\Model\OrderInquiry; use App\Model\OrderInquiryCase; use App\Model\OrderInquiryCoupon; use App\Model\PatientFamily; use App\Model\Product; -use App\Model\ProductPlatformAmount; -use App\Model\SystemInquiryConfig; use App\Model\UserDoctor; use App\Utils\PcreMatch; use Hyperf\Amqp\Producer; @@ -24,85 +20,10 @@ use Psr\Container\ContainerExceptionInterface; use Psr\Container\NotFoundExceptionInterface; /** - * 问诊订单 + * 问诊 */ -class OrderInquiryService extends BaseService +class InquiryService extends BaseService { - /** - * 获取医生未接诊订单数量 - * @param string $doctor_id 医生id - * @return int - */ - public function getDoctorNotAcceptedInquiryNum(string $doctor_id): int - { - $params = array(); - $params['doctor_id'] = $doctor_id; - $params['inquiry_status'] = 3; // 待接诊 - $params['inquiry_refund_status'] = 0; // 无退款 - - $order_inquiry_count = OrderInquiry::getCount($params); - if (!empty($order_inquiry_count) || $order_inquiry_count != 0) { - $not_accepted_inquiry_num = $order_inquiry_count; - } else { - $not_accepted_inquiry_num = $order_inquiry_count; - } - - return $not_accepted_inquiry_num; - } - - /** - * 获取医生接诊中订单数量 - * @param string $doctor_id 医生id - * @return int - */ - public function getDoctorAcceptingInquiryNum(string $doctor_id): int - { - $params = array(); - $params['doctor_id'] = $doctor_id; - $params['inquiry_status'] = 4; // 已接诊 - $params['inquiry_refund_status'] = 0; // 无退款 - - $order_inquiry_count = OrderInquiry::getCount($params); - if (!empty($order_inquiry_count) || $order_inquiry_count != 0) { - $accepting_inquiry_num = $order_inquiry_count; - } else { - $accepting_inquiry_num = $order_inquiry_count; - } - - return $accepting_inquiry_num; - } - - /** - * 获取医生当日接诊的订单金额 - * 状态:已接诊-已完成 - * @param string $doctor_id - * @param string $date - * @return float - */ - public function getDoctorDayAmountTotal(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['settlement_status'] = 0; // 订单与医生结算状态(0:未结算 1:已结算) - - $reception_time = [$start_date, $end_date]; - - $inquiry_status_params = [4, 5]; // 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消) - - $amount_total_sum = OrderInquiry::getOrderInquiryAmountTotalSum($params, $reception_time, $inquiry_status_params); - - return $amount_total_sum ?: 0; - } - /** * 创建问诊订单 * @return array @@ -335,4 +256,79 @@ class OrderInquiryService extends BaseService return success($result); } + + /** + * 获取医生未接诊订单数量 + * @param string $doctor_id 医生id + * @return int + */ + public function getDoctorNotAcceptedInquiryNum(string $doctor_id): int + { + $params = array(); + $params['doctor_id'] = $doctor_id; + $params['inquiry_status'] = 3; // 待接诊 + $params['inquiry_refund_status'] = 0; // 无退款 + + $order_inquiry_count = OrderInquiry::getCount($params); + if (!empty($order_inquiry_count) || $order_inquiry_count != 0) { + $not_accepted_inquiry_num = $order_inquiry_count; + } else { + $not_accepted_inquiry_num = $order_inquiry_count; + } + + return $not_accepted_inquiry_num; + } + + /** + * 获取医生接诊中订单数量 + * @param string $doctor_id 医生id + * @return int + */ + public function getDoctorAcceptingInquiryNum(string $doctor_id): int + { + $params = array(); + $params['doctor_id'] = $doctor_id; + $params['inquiry_status'] = 4; // 已接诊 + $params['inquiry_refund_status'] = 0; // 无退款 + + $order_inquiry_count = OrderInquiry::getCount($params); + if (!empty($order_inquiry_count) || $order_inquiry_count != 0) { + $accepting_inquiry_num = $order_inquiry_count; + } else { + $accepting_inquiry_num = $order_inquiry_count; + } + + return $accepting_inquiry_num; + } + + /** + * 获取医生当日接诊的订单金额 + * 状态:已接诊-已完成 + * @param string $doctor_id + * @param string $date + * @return float + */ + public function getDoctorDayAmountTotal(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['settlement_status'] = 0; // 订单与医生结算状态(0:未结算 1:已结算) + + $reception_time = [$start_date, $end_date]; + + $inquiry_status_params = [4, 5]; // 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消) + + $amount_total_sum = OrderInquiry::getOrderInquiryAmountTotalSum($params, $reception_time, $inquiry_status_params); + + return $amount_total_sum ?: 0; + } } \ No newline at end of file diff --git a/app/Services/UserDoctorService.php b/app/Services/UserDoctorService.php index 63da7c4..4d42d3f 100644 --- a/app/Services/UserDoctorService.php +++ b/app/Services/UserDoctorService.php @@ -485,8 +485,8 @@ class UserDoctorService extends BaseService } // 获取医生当日接诊的订单金额 - $OrderInquiryService = new OrderInquiryService(); - $estimate_income = $OrderInquiryService->getDoctorDayAmountTotal($user_info['client_user_id'],date('Y-m-d',time())); + $InquiryService = new InquiryService(); + $estimate_income = $InquiryService->getDoctorDayAmountTotal($user_info['client_user_id'],date('Y-m-d',time())); if (!empty($estimate_income)){ $estimate_income = $estimate_income * 0.75; } diff --git a/config/routes.php b/config/routes.php index 89195cb..3a70b9d 100644 --- a/config/routes.php +++ b/config/routes.php @@ -15,6 +15,7 @@ use App\Controller\BasicDataController; use App\Controller\DoctorAccountController; use App\Controller\DoctorAuthController; use App\Controller\IndexController; +use App\Controller\InquiryController; use App\Controller\LoginController; use App\Controller\CodeController; use App\Controller\OrderInquiryController; @@ -60,7 +61,7 @@ Router::addGroup('/doctor', function () { Router::post('/multi', [DoctorAuthController::class, 'addAuthMulti']); }); - // 问诊配置 + // 问诊 Router::addGroup('/inquiry', function () { // 获取医生问诊配置 Router::get('/config', [UserDoctorController::class, 'getInquiryConfig']); @@ -70,6 +71,10 @@ Router::addGroup('/doctor', function () { // 修改医生问诊配置 Router::put('/config', [UserDoctorController::class, 'putInquiryConfig']); + + // 获取医生问诊配置 + Router::get('/config', [UserDoctorController::class, 'getInquiryConfig']); + }); //银行卡 @@ -177,7 +182,7 @@ Router::addGroup('/patient', function () { // 订单 Router::addGroup('/order', function () { // 创建订单 - Router::post('', [OrderInquiryController::class, 'addInquiryOrder']); + Router::post('', [InquiryController::class, 'addInquiryOrder']); }); // 检测是否可以接诊 @@ -278,6 +283,13 @@ Router::addGroup('/basic', function () { // 搜索使用 Router::get('/expertise', [BasicDataController::class, 'getDiseaseExpertiseList']); }); + + // 搜索商品 + Router::addGroup('/product', function () { + // 搜索商品 + Router::get('/search', [BasicDataController::class, 'getProductSearch']); + }); + }); // 获取医生评价 @@ -290,4 +302,4 @@ Router::addGroup('/system', function () { // 获取系统问诊配置 快速问诊-问诊购药 Router::get('/config', [SystemController::class, 'getSystemInquiryConfig']); }); -}); \ No newline at end of file +});