修正问诊类目录

This commit is contained in:
wucongxing 2023-02-28 19:19:41 +08:00
parent fd8f2cb7b7
commit d23afb5491
11 changed files with 167 additions and 109 deletions

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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")

View File

@ -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),
];
}
}

View File

@ -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',

View File

@ -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());
}
}

View File

@ -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']);

View File

@ -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;
}
}

View File

@ -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;
}

View File

@ -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']);
});
});
// 获取医生评价