hospital-applets-api/app/Services/UserPharmacistService.php
2023-03-29 15:30:36 +08:00

236 lines
7.1 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace App\Services;
use App\Constants\HttpEnumCode;
use App\Model\OrderPrescription;
use App\Model\User;
use App\Model\UserPharmacist;
use App\Model\UserPharmacistInfo;
use Hyperf\DbConnection\Db;
/**
* 药师
*/
class UserPharmacistService extends BaseService
{
/**
* 获取药师审核处方列表
* @return array
*/
public function getPrescriptionList(): array
{
$user_info = $this->request->getAttribute("userInfo") ?? [];
$pharmacist_audit_status = $this->request->input('pharmacist_audit_status');
$platform_audit_status = $this->request->input('platform_audit_status');
$page = $this->request->input('page', 1);
$per_page = $this->request->input('per_page', 10);
$OrderPrescriptionService = new OrderPrescriptionService();
$prescription = $OrderPrescriptionService->getPharmacistWaitAuditPage($user_info['client_user_id'], $pharmacist_audit_status, $platform_audit_status, $page, $per_page);
if (!empty($prescription['data'])) {
foreach ($prescription['data'] as &$item) {
$item['prescription_img'] = addAliyunOssWebsite($item['prescription_img']);
}
}
return success($prescription);
}
/**
* 设置上下线
* @return array
*/
public function putOnOff(): array
{
$user_info = $this->request->getAttribute("userInfo") ?? [];
$is_online = $this->request->input('is_online');
// 获取药师数据
$params = array();
$params['user_id'] = $user_info['user_id'];
$user_pharmacist = UserPharmacist::getOne($params);
if (empty($user_pharmacist)) {
return fail();
}
$data = array();
$data['is_online'] = $is_online;
$params = array();
$params['pharmacist_id'] = $user_pharmacist['pharmacist_id'];
UserPharmacist::editUserPharmacist($params, $data);
return success();
}
/**
* 获取处方详情
* @return array
*/
public function getPrescriptionInfo(): array
{
$user_info = $this->request->getAttribute("userInfo") ?? [];
$order_prescription_id = $this->request->route('order_prescription_id');
// 获取药师数据
$params = array();
$params['user_id'] = $user_info['user_id'];
$user_pharmacist = UserPharmacist::getOne($params);
if (empty($user_pharmacist)) {
return fail();
}
// 获取处方数据
$fields = [
"order_prescription_id",
"order_inquiry_id",
"prescription_status",
"pharmacist_audit_status",
"platform_audit_status",
"prescription_img",
];
$params = array();
$params['order_prescription_id'] = $order_prescription_id;
$params['pharmacist_id'] = $user_info['client_user_id'];
$order_prescription = OrderPrescription::getOne($params, $fields);
if (empty($order_prescription)) {
return fail();
}
$order_prescription['prescription_img'] = addAliyunOssWebsite($order_prescription['prescription_img']);
return success($order_prescription->toArray());
}
/**
* 审核处方
* @return array
*/
public function putPrescriptionVerify(): array
{
$user_info = $this->request->getAttribute("userInfo") ?? [];
$order_prescription_id = $this->request->route('order_prescription_id');
$pharmacist_audit_status = $this->request->input('pharmacist_audit_status');
$pharmacist_fail_reason = $this->request->input('pharmacist_fail_reason');
// 验证器未验证未0的情况
if ($pharmacist_audit_status == 0){
return fail(HttpEnumCode::CLIENT_HTTP_ERROR);
}
// 获取药师数据
$params = array();
$params['user_id'] = $user_info['user_id'];
$user_pharmacist = UserPharmacist::getOne($params);
if (empty($user_pharmacist)) {
return fail();
}
// 获取处方数据
$params = array();
$params['order_prescription_id'] = $order_prescription_id;
$params['pharmacist_id'] = $user_info['client_user_id'];
$order_prescription = OrderPrescription::getOne($params);
if (empty($order_prescription)) {
return fail();
}
// 验证处方状态
if ($order_prescription['prescription_status'] != 1){
// 处方状态1:待审核 3:待使用 4:已失效 5:已使用)
return fail(HttpEnumCode::HTTP_ERROR,"处方审核失败");
}
// 验证处方审核状态
if ($order_prescription['pharmacist_audit_status'] != 0){
// 药师审核状态0:审核中 1:审核成功 2:审核驳回)
return fail(HttpEnumCode::HTTP_ERROR,"处方已审核,请勿重复审核");
}
// 处方平台审核状态
if ($order_prescription['platform_audit_status'] != 0){
// 处方平台审核状态0:审核中 1:审核成功 2:审核驳回)
return fail(HttpEnumCode::HTTP_ERROR,"处方已审核,请勿重复审核");
}
Db::beginTransaction();
try {
// 修改处方审核状态
$data = array();
Db::commit();
} catch (\Exception $e) {
Db::rollBack();
return fail(HttpEnumCode::HTTP_ERROR, $e->getMessage());
}
// 新增商品订单表
// 新增商品订单明细表
// 新增未支付取消订单队列
return success($order_prescription->toArray());
}
/**
* 药师基本资料
* @return array
*/
public function getPharmacistInfo(): array
{
$user_info = $this->request->getAttribute("userInfo") ?? [];
// 获取用户数据
$fields = [
'age',
'sex',
'avatar',
];
$params = array();
$params['user_id'] = $user_info['user_id'];
$user = User::getOne($params,$fields);
if (empty($user)){
return fail();
}
$user['avatar'] = addAliyunOssWebsite($user['avatar']);
// 获取药师数据
$fields = [
'pharmacist_id',
'user_name',
'pharmacist_title',
'department_custom_name',
];
$params = array();
$params['user_id'] = $user_info['user_id'];
$user_pharmacist = UserPharmacist::getOne($params,$fields);
if (empty($user_pharmacist)) {
return fail();
}
// 获取药师详情数据
$fields = [
'card_name',
'card_num',
];
$params = array();
$params['pharmacist_id'] = $user_pharmacist['pharmacist_id'];
$user_pharmacist_info = UserPharmacistInfo::getOne($params,$fields);
if (empty($user_pharmacist_info)){
return fail();
}
$result = array_merge($user->toArray(),$user_pharmacist->toArray(),$user_pharmacist_info->toArray());
return success($result);
}
}