新增获取药品订单列表接口
This commit is contained in:
parent
e5845adf01
commit
ef2289b1f7
@ -84,65 +84,9 @@ class InquiryController extends AbstractController
|
|||||||
return $this->response->json($data);
|
return $this->response->json($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取患者问诊订单列表
|
|
||||||
* @return ResponseInterface
|
|
||||||
* @throws ContainerExceptionInterface
|
|
||||||
* @throws NotFoundExceptionInterface
|
|
||||||
*/
|
|
||||||
public function getPatientInquiryOrderList(): ResponseInterface
|
|
||||||
{
|
|
||||||
$request = $this->container->get(InquiryRequest::class);
|
|
||||||
$request->scene('getPatientInquiryOrderList')->validateResolved();
|
|
||||||
|
|
||||||
$InquiryService = new InquiryService();
|
|
||||||
$data = $InquiryService->getPatientInquiryOrderList();
|
|
||||||
return $this->response->json($data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取患者问诊订单详情
|
|
||||||
* @return ResponseInterface
|
|
||||||
*/
|
|
||||||
public function getPatientInquiryOrderInfo(): ResponseInterface
|
|
||||||
{
|
|
||||||
$InquiryService = new InquiryService();
|
|
||||||
$data = $InquiryService->getPatientInquiryOrderInfo();
|
|
||||||
return $this->response->json($data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 取消患者问诊订单
|
|
||||||
* @return ResponseInterface
|
|
||||||
* @throws ContainerExceptionInterface
|
|
||||||
* @throws NotFoundExceptionInterface
|
|
||||||
*/
|
|
||||||
public function putCancelPatientInquiryOrder(): ResponseInterface
|
|
||||||
{
|
|
||||||
$InquiryService = new InquiryService();
|
|
||||||
$data = $InquiryService->putCancelPatientInquiryOrder();
|
|
||||||
return $this->response->json($data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除问诊订单
|
|
||||||
* @return ResponseInterface
|
|
||||||
*/
|
|
||||||
public function deletePatientInquiryOrder(): ResponseInterface
|
|
||||||
{
|
|
||||||
$InquiryService = new InquiryService();
|
|
||||||
$data = $InquiryService->deletePatientInquiryOrder();
|
|
||||||
return $this->response->json($data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 问诊订单取消支付
|
|
||||||
* @return ResponseInterface
|
|
||||||
*/
|
|
||||||
public function putPatientInquiryOrderCancelPay(): ResponseInterface
|
|
||||||
{
|
|
||||||
$InquiryService = new InquiryService();
|
|
||||||
$data = $InquiryService->putPatientInquiryOrderCancelPay();
|
|
||||||
return $this->response->json($data);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
95
app/Controller/PatientOrderController.php
Normal file
95
app/Controller/PatientOrderController.php
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Controller;
|
||||||
|
|
||||||
|
use App\Request\InquiryRequest;
|
||||||
|
use App\Request\PatientOrderRequest;
|
||||||
|
use App\Services\InquiryService;
|
||||||
|
use App\Services\PatientOrderService;
|
||||||
|
use Psr\Container\ContainerExceptionInterface;
|
||||||
|
use Psr\Container\NotFoundExceptionInterface;
|
||||||
|
use Psr\Http\Message\ResponseInterface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 患者订单
|
||||||
|
*/
|
||||||
|
class PatientOrderController extends AbstractController
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* 获取患者问诊订单列表
|
||||||
|
* @return ResponseInterface
|
||||||
|
* @throws ContainerExceptionInterface
|
||||||
|
* @throws NotFoundExceptionInterface
|
||||||
|
*/
|
||||||
|
public function getPatientInquiryOrderList(): ResponseInterface
|
||||||
|
{
|
||||||
|
$request = $this->container->get(PatientOrderRequest::class);
|
||||||
|
$request->scene('getPatientInquiryOrderList')->validateResolved();
|
||||||
|
|
||||||
|
$PatientOrderService = new PatientOrderService();
|
||||||
|
$data = $PatientOrderService->getPatientInquiryOrderList();
|
||||||
|
return $this->response->json($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取患者问诊订单详情
|
||||||
|
* @return ResponseInterface
|
||||||
|
*/
|
||||||
|
public function getPatientInquiryOrderInfo(): ResponseInterface
|
||||||
|
{
|
||||||
|
$PatientOrderService = new PatientOrderService();
|
||||||
|
$data = $PatientOrderService->getPatientInquiryOrderInfo();
|
||||||
|
return $this->response->json($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 取消患者问诊订单
|
||||||
|
* @return ResponseInterface
|
||||||
|
* @throws ContainerExceptionInterface
|
||||||
|
* @throws NotFoundExceptionInterface
|
||||||
|
*/
|
||||||
|
public function putCancelPatientInquiryOrder(): ResponseInterface
|
||||||
|
{
|
||||||
|
$PatientOrderService = new PatientOrderService();
|
||||||
|
$data = $PatientOrderService->putCancelPatientInquiryOrder();
|
||||||
|
return $this->response->json($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除问诊订单
|
||||||
|
* @return ResponseInterface
|
||||||
|
*/
|
||||||
|
public function deletePatientInquiryOrder(): ResponseInterface
|
||||||
|
{
|
||||||
|
$PatientOrderService = new PatientOrderService();
|
||||||
|
$data = $PatientOrderService->deletePatientInquiryOrder();
|
||||||
|
return $this->response->json($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 问诊订单取消支付
|
||||||
|
* @return ResponseInterface
|
||||||
|
*/
|
||||||
|
public function putPatientInquiryOrderCancelPay(): ResponseInterface
|
||||||
|
{
|
||||||
|
$PatientOrderService = new PatientOrderService();
|
||||||
|
$data = $PatientOrderService->putPatientInquiryOrderCancelPay();
|
||||||
|
return $this->response->json($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取药品订单列表
|
||||||
|
* @return ResponseInterface
|
||||||
|
* @throws ContainerExceptionInterface
|
||||||
|
* @throws NotFoundExceptionInterface
|
||||||
|
*/
|
||||||
|
public function getPatientProductOrderList(): ResponseInterface
|
||||||
|
{
|
||||||
|
$request = $this->container->get(PatientOrderRequest::class);
|
||||||
|
$request->scene('getPatientProductOrderList')->validateResolved();
|
||||||
|
|
||||||
|
$PatientOrderService = new PatientOrderService();
|
||||||
|
$data = $PatientOrderService->getPatientProductOrderList();
|
||||||
|
return $this->response->json($data);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -223,6 +223,7 @@ class OrderInquiry extends Model
|
|||||||
* 获取问诊订单分页
|
* 获取问诊订单分页
|
||||||
* 已结束
|
* 已结束
|
||||||
* @param array $params
|
* @param array $params
|
||||||
|
* @param array $inquiry_status_params
|
||||||
* @param array $fields
|
* @param array $fields
|
||||||
* @param int|null $page
|
* @param int|null $page
|
||||||
* @param int|null $per_page
|
* @param int|null $per_page
|
||||||
|
|||||||
@ -7,6 +7,8 @@ namespace App\Model;
|
|||||||
|
|
||||||
|
|
||||||
use Hyperf\Database\Model\Collection;
|
use Hyperf\Database\Model\Collection;
|
||||||
|
use Hyperf\Database\Model\Relations\HasMany;
|
||||||
|
use Hyperf\Database\Model\Relations\HasOne;
|
||||||
use Hyperf\Snowflake\Concern\Snowflake;
|
use Hyperf\Snowflake\Concern\Snowflake;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -15,11 +17,13 @@ use Hyperf\Snowflake\Concern\Snowflake;
|
|||||||
* @property int $order_prescription_id 订单-处方id
|
* @property int $order_prescription_id 订单-处方id
|
||||||
* @property int $doctor_id 医生id
|
* @property int $doctor_id 医生id
|
||||||
* @property int $patient_id 患者id
|
* @property int $patient_id 患者id
|
||||||
|
* @property int $family_id 家庭成员id(就诊用户)
|
||||||
* @property string $order_product_no 订单编号
|
* @property string $order_product_no 订单编号
|
||||||
* @property string $escrow_trade_no 第三方支付流水号
|
* @property string $escrow_trade_no 第三方支付流水号
|
||||||
* @property int $order_product_status 订单状态(1:待支付 2:待发货 3:已发货 4:已签收 5:已完成 6:已取消)
|
* @property int $order_product_status 订单状态(1:待支付 2:待发货 3:已发货 4:已签收 5:已取消)
|
||||||
* @property int $pay_channel 支付渠道(1:小程序支付 2:微信扫码支付)
|
* @property int $pay_channel 支付渠道(1:小程序支付 2:微信扫码支付)
|
||||||
* @property int $pay_status 支付状态(1:未支付 2:已支付 3:支付中 4:支付失败 5:支付超时 6:支付关闭 7:已撤销 8:转入退款)
|
* @property int $pay_status 支付状态(1:未支付 2:已支付 3:支付中 4:支付失败 5:支付超时 6:支付关闭 7:已撤销 8:转入退款)
|
||||||
|
* @property int $is_delete 删除状态(0:否 1:是)
|
||||||
* @property int $cancel_reason 订单取消原因(1:主动取消 2:复核失败/库存不足 3:支付超时)
|
* @property int $cancel_reason 订单取消原因(1:主动取消 2:复核失败/库存不足 3:支付超时)
|
||||||
* @property string $amount_total 订单金额
|
* @property string $amount_total 订单金额
|
||||||
* @property string $payment_amount_total 实际付款金额
|
* @property string $payment_amount_total 实际付款金额
|
||||||
@ -56,10 +60,18 @@ class OrderProduct extends Model
|
|||||||
/**
|
/**
|
||||||
* The attributes that are mass assignable.
|
* The attributes that are mass assignable.
|
||||||
*/
|
*/
|
||||||
protected array $fillable = ['order_product_id', 'order_inquiry_id', 'order_prescription_id', 'doctor_id', 'patient_id', 'order_product_no', 'escrow_trade_no', 'order_product_status', 'pay_channel', 'pay_status', 'cancel_reason', 'amount_total', 'payment_amount_total', 'logistics_fee', 'logistics_no', 'pay_time', 'remarks', 'refund_status', 'cancel_remarks', 'province_id', 'province', 'city_id', 'city', 'county_id', 'county', 'address', 'address_mask', 'consignee_name', 'consignee_name_mask', 'consignee_tel', 'consignee_tel_mask', 'created_at', 'updated_at'];
|
protected array $fillable = ['order_product_id', 'order_inquiry_id', 'order_prescription_id', 'doctor_id', 'patient_id', 'family_id', 'order_product_no', 'escrow_trade_no', 'order_product_status', 'pay_channel', 'pay_status', 'is_delete', 'cancel_reason', 'amount_total', 'payment_amount_total', 'logistics_fee', 'logistics_no', 'pay_time', 'remarks', 'refund_status', 'cancel_remarks', 'province_id', 'province', 'city_id', 'city', 'county_id', 'county', 'address', 'address_mask', 'consignee_name', 'consignee_name_mask', 'consignee_tel', 'consignee_tel_mask', 'created_at', 'updated_at'];
|
||||||
|
|
||||||
protected string $primaryKey = "order_product_id";
|
protected string $primaryKey = "order_product_id";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 关联订单商品item表
|
||||||
|
*/
|
||||||
|
public function OrderProductItem(): HasMany
|
||||||
|
{
|
||||||
|
return $this->HasMany(OrderProductItem::class, 'order_product_id','order_product_id');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取信息-单条
|
* 获取信息-单条
|
||||||
* @param array $params
|
* @param array $params
|
||||||
@ -101,4 +113,30 @@ class OrderProduct extends Model
|
|||||||
{
|
{
|
||||||
return self::where($params)->count();
|
return self::where($params)->count();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取药品订单分页
|
||||||
|
* @param array $params
|
||||||
|
* @param array $fields
|
||||||
|
* @param int|null $page
|
||||||
|
* @param int|null $per_page
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public static function getPatientOrderProductPage(array $params,array $fields = ["*"], int $page = null, ?int $per_page = 10): array
|
||||||
|
{
|
||||||
|
$result = self::with([
|
||||||
|
"OrderProductItem:product_item_id,order_product_id,product_id,product_name,amount,manufacturer,product_cover_img,product_spec",
|
||||||
|
])
|
||||||
|
->where($params)
|
||||||
|
->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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,6 +25,7 @@ use Hyperf\Snowflake\Concern\Snowflake;
|
|||||||
* @property string $product_spec 商品规格
|
* @property string $product_spec 商品规格
|
||||||
* @property \Carbon\Carbon $created_at 创建时间
|
* @property \Carbon\Carbon $created_at 创建时间
|
||||||
* @property \Carbon\Carbon $updated_at 修改时间
|
* @property \Carbon\Carbon $updated_at 修改时间
|
||||||
|
* @property-read Product $Product
|
||||||
*/
|
*/
|
||||||
class OrderProductItem extends Model
|
class OrderProductItem extends Model
|
||||||
{
|
{
|
||||||
|
|||||||
99
app/Request/PatientOrderRequest.php
Normal file
99
app/Request/PatientOrderRequest.php
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace App\Request;
|
||||||
|
|
||||||
|
use App\Constants\HttpEnumCode;
|
||||||
|
use Hyperf\Validation\Request\FormRequest;
|
||||||
|
|
||||||
|
class PatientOrderRequest extends FormRequest
|
||||||
|
{
|
||||||
|
protected array $scenes = [
|
||||||
|
'getPatientInquiryOrderList' => [ // 获取患者问诊订单列表
|
||||||
|
'inquiry_status',// 问诊订单状态(0:全部 1:待支付 2:待接诊 3:问诊中 4:完成/取消
|
||||||
|
'family_id',// 家庭成员id(就诊用户)
|
||||||
|
],
|
||||||
|
'getPatientProductOrderList' => [ // 获取药品订单列表
|
||||||
|
'order_product_status',// 订单状态(0:全部 1:待支付 2:待发货 3:已发货 4:已签收 5:已取消)
|
||||||
|
'family_id',// 家庭成员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 [
|
||||||
|
'inquiry_type' => 'required|integer|min:1|max:4',
|
||||||
|
'inquiry_mode' => 'required|integer|min:1|max:5',
|
||||||
|
'patient_id' => 'required',
|
||||||
|
'family_id' => 'required',
|
||||||
|
'disease_class_id' => 'required',
|
||||||
|
'diagnosis_date' => 'date',
|
||||||
|
'disease_desc' => 'required',
|
||||||
|
'is_allergy_history' => ['sometimes','numeric','min:0','max:1'],
|
||||||
|
'is_family_history' => ['sometimes','numeric','min:0','max:1'],
|
||||||
|
'is_pregnant' => ['sometimes','numeric','min:0','max:1'],
|
||||||
|
'client_type' => 'required|integer|min:1|max:2',
|
||||||
|
|
||||||
|
'doctor_id' => 'required',
|
||||||
|
'order_inquiry_id' => 'required',
|
||||||
|
'reply_quality' => 'required|integer|min:0|max:5',
|
||||||
|
'service_attitude' => 'required|integer|min:0|max:5',
|
||||||
|
'reply_progress' => 'required|integer|min:0|max:5',//
|
||||||
|
|
||||||
|
'inquiry_status' => 'required|integer|min:0|max:4',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取已定义验证规则的错误消息.
|
||||||
|
*/
|
||||||
|
public function messages(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'inquiry_type.required' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
|
'inquiry_type.integer' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
|
'inquiry_type.min' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
|
'inquiry_type.max' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
|
'inquiry_mode.required' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
|
'inquiry_mode.integer' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
|
'inquiry_mode.min' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
|
'inquiry_mode.max' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
|
|
||||||
|
'patient_id.required' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
|
'family_id.required' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
|
'disease_class_id.required' => "请您选择疾病",
|
||||||
|
'diagnosis_date.date' => HttpEnumCode::getMessage(HttpEnumCode::DATE_FORMAT_ERROR),
|
||||||
|
'disease_desc.required' => "请您输入病情主诉",
|
||||||
|
'is_allergy_history.numeric' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
|
'is_allergy_history.min' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
|
'is_allergy_history.max' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
|
'is_family_history.numeric' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
|
'is_family_history.min' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
|
'is_family_history.max' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
|
'is_pregnant.numeric' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
|
'is_pregnant.min' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
|
'is_pregnant.max' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
|
'client_type.required' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
|
'client_type.integer' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
|
'client_type.min' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
|
'client_type.max' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
|
|
||||||
|
'inquiry_status.required' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
|
'inquiry_status.integer' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
|
'inquiry_status.min' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
|
'inquiry_status.max' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -487,359 +487,6 @@ class InquiryService extends BaseService
|
|||||||
return success();
|
return success();
|
||||||
}
|
}
|
||||||
|
|
||||||
//获取患者问诊订单列表
|
|
||||||
public function getPatientInquiryOrderList(): array
|
|
||||||
{
|
|
||||||
$user_info = $this->request->getAttribute("userInfo") ?? [];
|
|
||||||
|
|
||||||
$inquiry_status = $this->request->input('inquiry_status',0);
|
|
||||||
$family_id = $this->request->input('family_id');
|
|
||||||
$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 (!empty($family_id)){
|
|
||||||
$params['family_id'] = $family_id;
|
|
||||||
}
|
|
||||||
|
|
||||||
$inquiry_status_params = [];
|
|
||||||
if (!empty($inquiry_status) && $inquiry_status != 0){
|
|
||||||
// 问诊订单状态(0:全部 1:待支付 2:待接诊 3:问诊中 4:完成/取消
|
|
||||||
// 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消)
|
|
||||||
if ($inquiry_status == 1){
|
|
||||||
$inquiry_status_params = [1];
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($inquiry_status == 2){
|
|
||||||
$inquiry_status_params = [2,3];
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($inquiry_status == 3){
|
|
||||||
$inquiry_status_params = [4];
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($inquiry_status == 4){
|
|
||||||
$inquiry_status_params = [5,6,7];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$params['is_delete'] = 0;
|
|
||||||
|
|
||||||
$fields = [
|
|
||||||
'order_inquiry_id',
|
|
||||||
'patient_id',
|
|
||||||
'doctor_id',
|
|
||||||
'family_id',
|
|
||||||
'inquiry_type',
|
|
||||||
'inquiry_mode',
|
|
||||||
'inquiry_status',
|
|
||||||
'is_delete',
|
|
||||||
'inquiry_refund_status',
|
|
||||||
'inquiry_pay_channel',
|
|
||||||
'inquiry_pay_status',
|
|
||||||
'inquiry_no',
|
|
||||||
'escrow_trade_no',
|
|
||||||
'amount_total',
|
|
||||||
'payment_amount_total',
|
|
||||||
'patient_name',
|
|
||||||
'patient_name_mask',
|
|
||||||
'patient_sex',
|
|
||||||
'patient_age',
|
|
||||||
'created_at',
|
|
||||||
];
|
|
||||||
$order_inquiry = OrderInquiry::getPatientOrderInquiryPage($params,$inquiry_status_params,$fields);
|
|
||||||
if (empty($order_inquiry['data'])){
|
|
||||||
return success();
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($order_inquiry['data'] as &$item){
|
|
||||||
$item['disease_desc'] = $item['OrderInquiryCase']['disease_desc'];
|
|
||||||
unset($item['OrderInquiryCase']);
|
|
||||||
|
|
||||||
// 获取医生数据
|
|
||||||
$item['user_doctor'] = [];
|
|
||||||
if (!empty($item['doctor_id'])){
|
|
||||||
$fields = [
|
|
||||||
'doctor_id',
|
|
||||||
'user_name',
|
|
||||||
'doctor_title',
|
|
||||||
'hospital_id',
|
|
||||||
];
|
|
||||||
|
|
||||||
$params = array();
|
|
||||||
$params['doctor_id'] = $item['doctor_id'];
|
|
||||||
$user_doctor = UserDoctor::getOne($params,$fields);
|
|
||||||
if (empty($user_doctor)){
|
|
||||||
return fail(HttpEnumCode::SERVER_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 转换医生职称
|
|
||||||
$user_doctor['doctor_title'] = empty($user_doctor['doctor_title']) ? "" : DoctorTitleCode::getMessage($user_doctor['doctor_title']);
|
|
||||||
|
|
||||||
// 获取医生医院名称
|
|
||||||
$user_doctor['hospital_name'] = "";
|
|
||||||
$user_doctor['hospital_level_name'] = "";
|
|
||||||
|
|
||||||
$fields = [
|
|
||||||
'hospital_id',
|
|
||||||
'hospital_name',
|
|
||||||
'hospital_level_name',
|
|
||||||
];
|
|
||||||
|
|
||||||
$params = array();
|
|
||||||
$params['hospital_id'] = $user_doctor['hospital_id'];
|
|
||||||
$hospital = Hospital::getOne($params,$fields);
|
|
||||||
if (!empty($hospital)){
|
|
||||||
$user_doctor['hospital_name'] = $hospital['hospital_name'];
|
|
||||||
$user_doctor['hospital_level_name'] = $hospital['hospital_level_name'];
|
|
||||||
}
|
|
||||||
|
|
||||||
$item['user_doctor'] = $user_doctor;
|
|
||||||
unset($hospital);
|
|
||||||
unset($user_doctor);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return success($order_inquiry);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取患者问诊订单详情
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
public function getPatientInquiryOrderInfo(): array
|
|
||||||
{
|
|
||||||
$user_info = $this->request->getAttribute("userInfo") ?? [];
|
|
||||||
|
|
||||||
$order_inquiry_id = $this->request->route('order_inquiry_id');
|
|
||||||
|
|
||||||
// 获取订单数据
|
|
||||||
$params = array();
|
|
||||||
$params['patient_id'] = $user_info['client_user_id'];
|
|
||||||
$params['order_inquiry_id'] = $order_inquiry_id;
|
|
||||||
$params['is_delete'] = 0;
|
|
||||||
$order_inquiry = OrderInquiry::getOne($params);
|
|
||||||
if (empty($order_inquiry)){
|
|
||||||
return fail();
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取病例信息
|
|
||||||
$fields = [
|
|
||||||
'disease_class_name',
|
|
||||||
'disease_desc',
|
|
||||||
];
|
|
||||||
$params = array();
|
|
||||||
$params['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];
|
|
||||||
$order_inquiry_case = OrderInquiryCase::getOne($params,$fields);
|
|
||||||
if (empty($order_inquiry_case)){
|
|
||||||
return fail();
|
|
||||||
}
|
|
||||||
|
|
||||||
$order_inquiry['case'] = $order_inquiry_case->toArray();
|
|
||||||
|
|
||||||
// 获取医生数据
|
|
||||||
$order_inquiry['user_doctor'] = [];
|
|
||||||
if (!empty($order_inquiry['doctor_id'])){
|
|
||||||
$fields = [
|
|
||||||
'doctor_id',
|
|
||||||
'user_name',
|
|
||||||
'doctor_title',
|
|
||||||
'hospital_id',
|
|
||||||
'avatar',
|
|
||||||
];
|
|
||||||
|
|
||||||
$params = array();
|
|
||||||
$params['doctor_id'] = $order_inquiry['doctor_id'];
|
|
||||||
$user_doctor = UserDoctor::getOne($params,$fields);
|
|
||||||
if (empty($user_doctor)){
|
|
||||||
return fail(HttpEnumCode::SERVER_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 转换医生职称
|
|
||||||
$user_doctor['doctor_title'] = empty($user_doctor['doctor_title']) ? "" : DoctorTitleCode::getMessage($user_doctor['doctor_title']);
|
|
||||||
|
|
||||||
// 头像
|
|
||||||
$user_doctor['avatar'] = addAliyunOssWebsite($user_doctor['avatar']);
|
|
||||||
|
|
||||||
// 获取医生医院名称
|
|
||||||
$user_doctor['hospital_name'] = "";
|
|
||||||
$user_doctor['hospital_level_name'] = "";
|
|
||||||
|
|
||||||
$fields = [
|
|
||||||
'hospital_id',
|
|
||||||
'hospital_name',
|
|
||||||
'hospital_level_name',
|
|
||||||
];
|
|
||||||
|
|
||||||
$params = array();
|
|
||||||
$params['hospital_id'] = $user_doctor['hospital_id'];
|
|
||||||
$hospital = Hospital::getOne($params,$fields);
|
|
||||||
if (!empty($hospital)){
|
|
||||||
$user_doctor['hospital_name'] = $hospital['hospital_name'];
|
|
||||||
$user_doctor['hospital_level_name'] = $hospital['hospital_level_name'];
|
|
||||||
}
|
|
||||||
|
|
||||||
$order_inquiry['user_doctor'] = $user_doctor;
|
|
||||||
unset($hospital);
|
|
||||||
unset($user_doctor);
|
|
||||||
}
|
|
||||||
|
|
||||||
return success($order_inquiry->toArray());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 取消患者问诊订单
|
|
||||||
* @return array
|
|
||||||
* @throws ContainerExceptionInterface
|
|
||||||
* @throws NotFoundExceptionInterface
|
|
||||||
*/
|
|
||||||
public function putCancelPatientInquiryOrder(): array
|
|
||||||
{
|
|
||||||
$user_info = $this->request->getAttribute("userInfo") ?? [];
|
|
||||||
|
|
||||||
$order_inquiry_id = $this->request->route('order_inquiry_id');
|
|
||||||
|
|
||||||
// 获取订单数据
|
|
||||||
$params = array();
|
|
||||||
$params['patient_id'] = $user_info['client_user_id'];
|
|
||||||
$params['order_inquiry_id'] = $order_inquiry_id;
|
|
||||||
$params['is_delete'] = 0;
|
|
||||||
$order_inquiry = OrderInquiry::getOne($params);
|
|
||||||
if (empty($order_inquiry)){
|
|
||||||
return fail();
|
|
||||||
}
|
|
||||||
|
|
||||||
// 检测订单状态
|
|
||||||
if (!in_array($order_inquiry['inquiry_status'],[1,2,3])) {
|
|
||||||
// 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消)
|
|
||||||
return fail(HttpEnumCode::HTTP_ERROR,"订单无法取消");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!in_array($order_inquiry['inquiry_refund_status'],[0,4,5])) {
|
|
||||||
// 问诊订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭)
|
|
||||||
return fail(HttpEnumCode::HTTP_ERROR,"订单正在退款中");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 支付状态(1:未支付 2:已支付 3:支付中 4:支付失败 5:支付超时 6:支付关闭 7:已撤销 8:转入退款)
|
|
||||||
|
|
||||||
Db::beginTransaction();
|
|
||||||
try {
|
|
||||||
// 修改问诊订单为取消
|
|
||||||
$data = array();
|
|
||||||
$data['inquiry_status'] = 7;
|
|
||||||
$data['cancel_time'] = date("Y-m-d H:i:s",time());
|
|
||||||
$data['cancel_reason'] = 2; // 取消订单原因(1:医生未接诊 2:主动取消 3:无可分配医生 4:客服取消 5:支付超时)
|
|
||||||
$data['updated_at'] = date("Y-m-d H:i:s",time());
|
|
||||||
|
|
||||||
$params = array();
|
|
||||||
$params['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];
|
|
||||||
OrderInquiry::edit($params,$data);
|
|
||||||
|
|
||||||
// 检测支付状态,判断是否需要退款处理
|
|
||||||
if ($order_inquiry['inquiry_pay_status'] == 2){
|
|
||||||
// 需退款
|
|
||||||
$this->inquiryRefund($order_inquiry['order_inquiry_id'],"取消问诊");
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (\Exception $e) {
|
|
||||||
Db::rollBack();
|
|
||||||
return fail(HttpEnumCode::HTTP_ERROR, $e->getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
return success();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除问诊订单
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
public function deletePatientInquiryOrder(): array
|
|
||||||
{
|
|
||||||
$user_info = $this->request->getAttribute("userInfo") ?? [];
|
|
||||||
|
|
||||||
$order_inquiry_id = $this->request->route('order_inquiry_id');
|
|
||||||
|
|
||||||
// 获取订单数据
|
|
||||||
$params = array();
|
|
||||||
$params['patient_id'] = $user_info['client_user_id'];
|
|
||||||
$params['order_inquiry_id'] = $order_inquiry_id;
|
|
||||||
$params['is_delete'] = 0;
|
|
||||||
$order_inquiry = OrderInquiry::getOne($params);
|
|
||||||
if (empty($order_inquiry)){
|
|
||||||
return fail();
|
|
||||||
}
|
|
||||||
|
|
||||||
// 检测订单状态
|
|
||||||
if (!in_array($order_inquiry['inquiry_status'],[1,5])) {
|
|
||||||
// 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消)
|
|
||||||
return fail(HttpEnumCode::HTTP_ERROR,"订单无法删除");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!in_array($order_inquiry['inquiry_refund_status'],[0,4,5])) {
|
|
||||||
// 问诊订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭)
|
|
||||||
return fail(HttpEnumCode::HTTP_ERROR,"订单正在退款中");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 修改订单删除状态
|
|
||||||
$data = array();
|
|
||||||
$data['is_delete'] = 1;
|
|
||||||
|
|
||||||
$params = array();
|
|
||||||
$params['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];
|
|
||||||
|
|
||||||
OrderInquiry::edit($params,$data);
|
|
||||||
|
|
||||||
return success();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 问诊订单取消支付
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
public function putPatientInquiryOrderCancelPay(): array
|
|
||||||
{
|
|
||||||
$user_info = $this->request->getAttribute("userInfo") ?? [];
|
|
||||||
|
|
||||||
$order_inquiry_id = $this->request->route('order_inquiry_id');
|
|
||||||
|
|
||||||
// 获取订单数据
|
|
||||||
$params = array();
|
|
||||||
$params['patient_id'] = $user_info['client_user_id'];
|
|
||||||
$params['order_inquiry_id'] = $order_inquiry_id;
|
|
||||||
$params['is_delete'] = 0;
|
|
||||||
$order_inquiry = OrderInquiry::getOne($params);
|
|
||||||
if (empty($order_inquiry)){
|
|
||||||
return fail();
|
|
||||||
}
|
|
||||||
|
|
||||||
// 检测订单状态
|
|
||||||
if (!in_array($order_inquiry['inquiry_status'],[1])) {
|
|
||||||
// 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消)
|
|
||||||
return fail(HttpEnumCode::HTTP_ERROR,"订单无法删除");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!in_array($order_inquiry['inquiry_refund_status'],[0,4,5])) {
|
|
||||||
// 问诊订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭)
|
|
||||||
return fail(HttpEnumCode::HTTP_ERROR,"订单正在退款中");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 修改订单删除状态
|
|
||||||
$data = array();
|
|
||||||
$data['inquiry_status'] = 7;
|
|
||||||
$data['cancel_time'] = date("Y-m-d H:i:s",time());
|
|
||||||
$data['cancel_reason'] = 2; // 取消订单原因(1:医生未接诊 2:主动取消 3:无可分配医生 4:客服取消 5:支付超时)
|
|
||||||
$data['cancel_remarks'] = "未支付取消";
|
|
||||||
$data['updated_at'] = date("Y-m-d H:i:s",time());
|
|
||||||
|
|
||||||
$params = array();
|
|
||||||
$params['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];
|
|
||||||
OrderInquiry::edit($params,$data);
|
|
||||||
|
|
||||||
return success();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取医生未接诊订单数量
|
* 获取医生未接诊订单数量
|
||||||
* @param string $doctor_id 医生id
|
* @param string $doctor_id 医生id
|
||||||
|
|||||||
437
app/Services/PatientOrderService.php
Normal file
437
app/Services/PatientOrderService.php
Normal file
@ -0,0 +1,437 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Services;
|
||||||
|
|
||||||
|
use App\Constants\DoctorTitleCode;
|
||||||
|
use App\Constants\HttpEnumCode;
|
||||||
|
use App\Model\Hospital;
|
||||||
|
use App\Model\OrderInquiry;
|
||||||
|
use App\Model\OrderInquiryCase;
|
||||||
|
use App\Model\OrderProduct;
|
||||||
|
use App\Model\UserDoctor;
|
||||||
|
use Hyperf\DbConnection\Db;
|
||||||
|
use Psr\Container\ContainerExceptionInterface;
|
||||||
|
use Psr\Container\NotFoundExceptionInterface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 患者订单
|
||||||
|
*/
|
||||||
|
class PatientOrderService extends BaseService
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* 获取患者问诊订单列表
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getPatientInquiryOrderList(): array
|
||||||
|
{
|
||||||
|
$user_info = $this->request->getAttribute("userInfo") ?? [];
|
||||||
|
|
||||||
|
$inquiry_status = $this->request->input('inquiry_status',0);
|
||||||
|
$family_id = $this->request->input('family_id');
|
||||||
|
$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 (!empty($family_id)){
|
||||||
|
$params['family_id'] = $family_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
$inquiry_status_params = [];
|
||||||
|
if (!empty($inquiry_status) && $inquiry_status != 0){
|
||||||
|
// 问诊订单状态(0:全部 1:待支付 2:待接诊 3:问诊中 4:完成/取消
|
||||||
|
// 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消)
|
||||||
|
if ($inquiry_status == 1){
|
||||||
|
$inquiry_status_params = [1];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($inquiry_status == 2){
|
||||||
|
$inquiry_status_params = [2,3];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($inquiry_status == 3){
|
||||||
|
$inquiry_status_params = [4];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($inquiry_status == 4){
|
||||||
|
$inquiry_status_params = [5,6,7];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$params['is_delete'] = 0;
|
||||||
|
|
||||||
|
$fields = [
|
||||||
|
'order_inquiry_id',
|
||||||
|
'patient_id',
|
||||||
|
'doctor_id',
|
||||||
|
'family_id',
|
||||||
|
'inquiry_type',
|
||||||
|
'inquiry_mode',
|
||||||
|
'inquiry_status',
|
||||||
|
'is_delete',
|
||||||
|
'inquiry_refund_status',
|
||||||
|
'inquiry_pay_channel',
|
||||||
|
'inquiry_pay_status',
|
||||||
|
'inquiry_no',
|
||||||
|
'escrow_trade_no',
|
||||||
|
'amount_total',
|
||||||
|
'payment_amount_total',
|
||||||
|
'patient_name',
|
||||||
|
'patient_name_mask',
|
||||||
|
'patient_sex',
|
||||||
|
'patient_age',
|
||||||
|
'created_at',
|
||||||
|
];
|
||||||
|
$order_inquiry = OrderInquiry::getPatientOrderInquiryPage($params,$inquiry_status_params,$fields);
|
||||||
|
if (empty($order_inquiry['data'])){
|
||||||
|
return success();
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($order_inquiry['data'] as &$item){
|
||||||
|
$item['disease_desc'] = $item['OrderInquiryCase']['disease_desc'];
|
||||||
|
unset($item['OrderInquiryCase']);
|
||||||
|
|
||||||
|
// 获取医生数据
|
||||||
|
$item['user_doctor'] = [];
|
||||||
|
if (!empty($item['doctor_id'])){
|
||||||
|
$fields = [
|
||||||
|
'doctor_id',
|
||||||
|
'user_name',
|
||||||
|
'doctor_title',
|
||||||
|
'hospital_id',
|
||||||
|
];
|
||||||
|
|
||||||
|
$params = array();
|
||||||
|
$params['doctor_id'] = $item['doctor_id'];
|
||||||
|
$user_doctor = UserDoctor::getOne($params,$fields);
|
||||||
|
if (empty($user_doctor)){
|
||||||
|
return fail(HttpEnumCode::SERVER_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 转换医生职称
|
||||||
|
$user_doctor['doctor_title'] = empty($user_doctor['doctor_title']) ? "" : DoctorTitleCode::getMessage($user_doctor['doctor_title']);
|
||||||
|
|
||||||
|
// 获取医生医院名称
|
||||||
|
$user_doctor['hospital_name'] = "";
|
||||||
|
$user_doctor['hospital_level_name'] = "";
|
||||||
|
|
||||||
|
$fields = [
|
||||||
|
'hospital_id',
|
||||||
|
'hospital_name',
|
||||||
|
'hospital_level_name',
|
||||||
|
];
|
||||||
|
|
||||||
|
$params = array();
|
||||||
|
$params['hospital_id'] = $user_doctor['hospital_id'];
|
||||||
|
$hospital = Hospital::getOne($params,$fields);
|
||||||
|
if (!empty($hospital)){
|
||||||
|
$user_doctor['hospital_name'] = $hospital['hospital_name'];
|
||||||
|
$user_doctor['hospital_level_name'] = $hospital['hospital_level_name'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$item['user_doctor'] = $user_doctor;
|
||||||
|
unset($hospital);
|
||||||
|
unset($user_doctor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return success($order_inquiry);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取患者问诊订单详情
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getPatientInquiryOrderInfo(): array
|
||||||
|
{
|
||||||
|
$user_info = $this->request->getAttribute("userInfo") ?? [];
|
||||||
|
|
||||||
|
$order_inquiry_id = $this->request->route('order_inquiry_id');
|
||||||
|
|
||||||
|
// 获取订单数据
|
||||||
|
$params = array();
|
||||||
|
$params['patient_id'] = $user_info['client_user_id'];
|
||||||
|
$params['order_inquiry_id'] = $order_inquiry_id;
|
||||||
|
$params['is_delete'] = 0;
|
||||||
|
$order_inquiry = OrderInquiry::getOne($params);
|
||||||
|
if (empty($order_inquiry)){
|
||||||
|
return fail();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取病例信息
|
||||||
|
$fields = [
|
||||||
|
'disease_class_name',
|
||||||
|
'disease_desc',
|
||||||
|
];
|
||||||
|
$params = array();
|
||||||
|
$params['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];
|
||||||
|
$order_inquiry_case = OrderInquiryCase::getOne($params,$fields);
|
||||||
|
if (empty($order_inquiry_case)){
|
||||||
|
return fail();
|
||||||
|
}
|
||||||
|
|
||||||
|
$order_inquiry['case'] = $order_inquiry_case->toArray();
|
||||||
|
|
||||||
|
// 获取医生数据
|
||||||
|
$order_inquiry['user_doctor'] = [];
|
||||||
|
if (!empty($order_inquiry['doctor_id'])){
|
||||||
|
$fields = [
|
||||||
|
'doctor_id',
|
||||||
|
'user_name',
|
||||||
|
'doctor_title',
|
||||||
|
'hospital_id',
|
||||||
|
'avatar',
|
||||||
|
];
|
||||||
|
|
||||||
|
$params = array();
|
||||||
|
$params['doctor_id'] = $order_inquiry['doctor_id'];
|
||||||
|
$user_doctor = UserDoctor::getOne($params,$fields);
|
||||||
|
if (empty($user_doctor)){
|
||||||
|
return fail(HttpEnumCode::SERVER_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 转换医生职称
|
||||||
|
$user_doctor['doctor_title'] = empty($user_doctor['doctor_title']) ? "" : DoctorTitleCode::getMessage($user_doctor['doctor_title']);
|
||||||
|
|
||||||
|
// 头像
|
||||||
|
$user_doctor['avatar'] = addAliyunOssWebsite($user_doctor['avatar']);
|
||||||
|
|
||||||
|
// 获取医生医院名称
|
||||||
|
$user_doctor['hospital_name'] = "";
|
||||||
|
$user_doctor['hospital_level_name'] = "";
|
||||||
|
|
||||||
|
$fields = [
|
||||||
|
'hospital_id',
|
||||||
|
'hospital_name',
|
||||||
|
'hospital_level_name',
|
||||||
|
];
|
||||||
|
|
||||||
|
$params = array();
|
||||||
|
$params['hospital_id'] = $user_doctor['hospital_id'];
|
||||||
|
$hospital = Hospital::getOne($params,$fields);
|
||||||
|
if (!empty($hospital)){
|
||||||
|
$user_doctor['hospital_name'] = $hospital['hospital_name'];
|
||||||
|
$user_doctor['hospital_level_name'] = $hospital['hospital_level_name'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$order_inquiry['user_doctor'] = $user_doctor;
|
||||||
|
unset($hospital);
|
||||||
|
unset($user_doctor);
|
||||||
|
}
|
||||||
|
|
||||||
|
return success($order_inquiry->toArray());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 取消患者问诊订单
|
||||||
|
* @return array
|
||||||
|
* @throws ContainerExceptionInterface
|
||||||
|
* @throws NotFoundExceptionInterface
|
||||||
|
*/
|
||||||
|
public function putCancelPatientInquiryOrder(): array
|
||||||
|
{
|
||||||
|
$user_info = $this->request->getAttribute("userInfo") ?? [];
|
||||||
|
|
||||||
|
$order_inquiry_id = $this->request->route('order_inquiry_id');
|
||||||
|
|
||||||
|
// 获取订单数据
|
||||||
|
$params = array();
|
||||||
|
$params['patient_id'] = $user_info['client_user_id'];
|
||||||
|
$params['order_inquiry_id'] = $order_inquiry_id;
|
||||||
|
$params['is_delete'] = 0;
|
||||||
|
$order_inquiry = OrderInquiry::getOne($params);
|
||||||
|
if (empty($order_inquiry)){
|
||||||
|
return fail();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检测订单状态
|
||||||
|
if (!in_array($order_inquiry['inquiry_status'],[1,2,3])) {
|
||||||
|
// 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消)
|
||||||
|
return fail(HttpEnumCode::HTTP_ERROR,"订单无法取消");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!in_array($order_inquiry['inquiry_refund_status'],[0,4,5])) {
|
||||||
|
// 问诊订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭)
|
||||||
|
return fail(HttpEnumCode::HTTP_ERROR,"订单正在退款中");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 支付状态(1:未支付 2:已支付 3:支付中 4:支付失败 5:支付超时 6:支付关闭 7:已撤销 8:转入退款)
|
||||||
|
|
||||||
|
Db::beginTransaction();
|
||||||
|
try {
|
||||||
|
// 修改问诊订单为取消
|
||||||
|
$data = array();
|
||||||
|
$data['inquiry_status'] = 7;
|
||||||
|
$data['cancel_time'] = date("Y-m-d H:i:s",time());
|
||||||
|
$data['cancel_reason'] = 2; // 取消订单原因(1:医生未接诊 2:主动取消 3:无可分配医生 4:客服取消 5:支付超时)
|
||||||
|
$data['updated_at'] = date("Y-m-d H:i:s",time());
|
||||||
|
|
||||||
|
$params = array();
|
||||||
|
$params['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];
|
||||||
|
OrderInquiry::edit($params,$data);
|
||||||
|
|
||||||
|
// 检测支付状态,判断是否需要退款处理
|
||||||
|
if ($order_inquiry['inquiry_pay_status'] == 2){
|
||||||
|
// 需退款
|
||||||
|
$inquiryService = new InquiryService();
|
||||||
|
$inquiryService->inquiryRefund($order_inquiry['order_inquiry_id'],"取消问诊");
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
Db::rollBack();
|
||||||
|
return fail(HttpEnumCode::HTTP_ERROR, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
return success();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除问诊订单
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function deletePatientInquiryOrder(): array
|
||||||
|
{
|
||||||
|
$user_info = $this->request->getAttribute("userInfo") ?? [];
|
||||||
|
|
||||||
|
$order_inquiry_id = $this->request->route('order_inquiry_id');
|
||||||
|
|
||||||
|
// 获取订单数据
|
||||||
|
$params = array();
|
||||||
|
$params['patient_id'] = $user_info['client_user_id'];
|
||||||
|
$params['order_inquiry_id'] = $order_inquiry_id;
|
||||||
|
$params['is_delete'] = 0;
|
||||||
|
$order_inquiry = OrderInquiry::getOne($params);
|
||||||
|
if (empty($order_inquiry)){
|
||||||
|
return fail();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检测订单状态
|
||||||
|
if (!in_array($order_inquiry['inquiry_status'],[1,5])) {
|
||||||
|
// 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消)
|
||||||
|
return fail(HttpEnumCode::HTTP_ERROR,"订单无法删除");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!in_array($order_inquiry['inquiry_refund_status'],[0,4,5])) {
|
||||||
|
// 问诊订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭)
|
||||||
|
return fail(HttpEnumCode::HTTP_ERROR,"订单正在退款中");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改订单删除状态
|
||||||
|
$data = array();
|
||||||
|
$data['is_delete'] = 1;
|
||||||
|
|
||||||
|
$params = array();
|
||||||
|
$params['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];
|
||||||
|
|
||||||
|
OrderInquiry::edit($params,$data);
|
||||||
|
|
||||||
|
return success();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 问诊订单取消支付
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function putPatientInquiryOrderCancelPay(): array
|
||||||
|
{
|
||||||
|
$user_info = $this->request->getAttribute("userInfo") ?? [];
|
||||||
|
|
||||||
|
$order_inquiry_id = $this->request->route('order_inquiry_id');
|
||||||
|
|
||||||
|
// 获取订单数据
|
||||||
|
$params = array();
|
||||||
|
$params['patient_id'] = $user_info['client_user_id'];
|
||||||
|
$params['order_inquiry_id'] = $order_inquiry_id;
|
||||||
|
$params['is_delete'] = 0;
|
||||||
|
$order_inquiry = OrderInquiry::getOne($params);
|
||||||
|
if (empty($order_inquiry)){
|
||||||
|
return fail();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检测订单状态
|
||||||
|
if (!in_array($order_inquiry['inquiry_status'],[1])) {
|
||||||
|
// 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消)
|
||||||
|
return fail(HttpEnumCode::HTTP_ERROR,"订单无法删除");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!in_array($order_inquiry['inquiry_refund_status'],[0,4,5])) {
|
||||||
|
// 问诊订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭)
|
||||||
|
return fail(HttpEnumCode::HTTP_ERROR,"订单正在退款中");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改订单删除状态
|
||||||
|
$data = array();
|
||||||
|
$data['inquiry_status'] = 7;
|
||||||
|
$data['cancel_time'] = date("Y-m-d H:i:s",time());
|
||||||
|
$data['cancel_reason'] = 2; // 取消订单原因(1:医生未接诊 2:主动取消 3:无可分配医生 4:客服取消 5:支付超时)
|
||||||
|
$data['cancel_remarks'] = "未支付取消";
|
||||||
|
$data['updated_at'] = date("Y-m-d H:i:s",time());
|
||||||
|
|
||||||
|
$params = array();
|
||||||
|
$params['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];
|
||||||
|
OrderInquiry::edit($params,$data);
|
||||||
|
|
||||||
|
return success();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取药品订单列表
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getPatientProductOrderList(): array
|
||||||
|
{
|
||||||
|
$user_info = $this->request->getAttribute("userInfo") ?? [];
|
||||||
|
|
||||||
|
$order_product_status = $this->request->input('order_product_status',0);
|
||||||
|
$family_id = $this->request->input('family_id');
|
||||||
|
$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 (!empty($family_id)){
|
||||||
|
$params['family_id'] = $family_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$inquiry_status_params = [];
|
||||||
|
if (!empty($inquiry_status_params) && $inquiry_status_params != 0){
|
||||||
|
// 入参订单状态(1:待支付 2:待发货 3:已发货 4:已签收 5:已取消)
|
||||||
|
// 数据库订单状态(1:待支付 2:待发货 3:已发货 4:已签收 5:已取消)
|
||||||
|
$params['inquiry_status_params'] = $family_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
$params['is_delete'] = 0;
|
||||||
|
|
||||||
|
$fields = [
|
||||||
|
'order_product_id',
|
||||||
|
'order_inquiry_id',
|
||||||
|
'order_prescription_id',
|
||||||
|
'doctor_id',
|
||||||
|
'patient_id',
|
||||||
|
'family_id',
|
||||||
|
'order_product_status',
|
||||||
|
'pay_status',
|
||||||
|
'cancel_reason',
|
||||||
|
'remarks',
|
||||||
|
'refund_status',
|
||||||
|
'cancel_remarks',
|
||||||
|
'created_at',
|
||||||
|
];
|
||||||
|
|
||||||
|
$order_product = OrderProduct::getPatientOrderProductPage($params,$fields);
|
||||||
|
if (empty($order_product['data'])){
|
||||||
|
return success();
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($order_product['data'] as $item){
|
||||||
|
foreach ($item['orderProductItem'] as &$product_item){
|
||||||
|
$product_item['product_cover_img'] = addAliyunOssWebsite($product_item['product_cover_img']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return success($order_product);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -23,6 +23,7 @@ use App\Controller\PatientCaseController;
|
|||||||
use App\Controller\PatientCenterController;
|
use App\Controller\PatientCenterController;
|
||||||
use App\Controller\PatientDoctorController;
|
use App\Controller\PatientDoctorController;
|
||||||
use App\Controller\PatientFamilyController;
|
use App\Controller\PatientFamilyController;
|
||||||
|
use App\Controller\PatientOrderController;
|
||||||
use App\Controller\SafeController;
|
use App\Controller\SafeController;
|
||||||
use App\Controller\SystemController;
|
use App\Controller\SystemController;
|
||||||
use App\Controller\UserController;
|
use App\Controller\UserController;
|
||||||
@ -195,32 +196,19 @@ Router::addGroup('/patient', function () {
|
|||||||
// 创建问诊订单
|
// 创建问诊订单
|
||||||
Router::post('', [InquiryController::class, 'addInquiryOrder']);
|
Router::post('', [InquiryController::class, 'addInquiryOrder']);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 检测是否可以接诊
|
// 检测是否可以接诊
|
||||||
Router::get('/check', [PatientDoctorController::class, 'getDoctorInquiryCheck']);
|
Router::get('/check', [PatientDoctorController::class, 'getDoctorInquiryCheck']);
|
||||||
|
|
||||||
// 检测快速、购药订单分配医生状态
|
// 检测快速、购药订单分配医生状态
|
||||||
Router::get('/assign/{order_inquiry_id:\d+}', [InquiryController::class, 'getInquiryAssign']);
|
Router::get('/assign/{order_inquiry_id:\d+}', [InquiryController::class, 'getInquiryAssign']);
|
||||||
|
|
||||||
// 获取患者问诊订单列表
|
|
||||||
Router::get('/list', [InquiryController::class, 'getPatientInquiryOrderList']);
|
|
||||||
|
|
||||||
// 新增问诊评价
|
// 新增问诊评价
|
||||||
Router::post('/evaluation', [InquiryController::class, 'addInquiryEvaluation']);
|
Router::post('/evaluation', [InquiryController::class, 'addInquiryEvaluation']);
|
||||||
|
|
||||||
// 获取患者问诊订单详情
|
|
||||||
Router::get('/{order_inquiry_id:\d+}', [InquiryController::class, 'getPatientInquiryOrderInfo']);
|
|
||||||
|
|
||||||
// 取消患者问诊订单-1:待支付 2:待分配 3:待接诊
|
|
||||||
Router::put('/cancel/{order_inquiry_id:\d+}', [InquiryController::class, 'putCancelPatientInquiryOrder']);
|
|
||||||
|
|
||||||
// 删除问诊订单-1:待支付 5:已完成
|
|
||||||
Router::delete('/{order_inquiry_id:\d+}', [InquiryController::class, 'deletePatientInquiryOrder']);
|
|
||||||
|
|
||||||
// 问诊订单取消支付-1未支付
|
|
||||||
Router::put('/cancel-pay/{order_inquiry_id:\d+}', [InquiryController::class, 'putPatientInquiryOrderCancelPay']);
|
|
||||||
|
|
||||||
// 获取药品订单列表-药品订单
|
|
||||||
Router::post('/8', [CallBackController::class, 'imCallBack']);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// 医生数据
|
// 医生数据
|
||||||
@ -289,6 +277,55 @@ Router::addGroup('/patient', function () {
|
|||||||
Router::get('/last/{family_id:\d+}', [PatientCaseController::class, 'getLastCase']);
|
Router::get('/last/{family_id:\d+}', [PatientCaseController::class, 'getLastCase']);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Router::addGroup('/order', function () {
|
||||||
|
Router::addGroup('/inquiry', function () {
|
||||||
|
// 获取患者问诊订单列表
|
||||||
|
Router::get('', [PatientOrderController::class, 'getPatientInquiryOrderList']);
|
||||||
|
|
||||||
|
// 获取患者问诊订单详情
|
||||||
|
Router::get('/{order_inquiry_id:\d+}', [PatientOrderController::class, 'getPatientInquiryOrderInfo']);
|
||||||
|
|
||||||
|
// 删除问诊订单-1:待支付 5:已完成
|
||||||
|
Router::delete('/{order_inquiry_id:\d+}', [PatientOrderController::class, 'deletePatientInquiryOrder']);
|
||||||
|
|
||||||
|
// 取消问诊订单-1:待支付 2:待分配 3:待接诊
|
||||||
|
Router::put('/cancel/{order_inquiry_id:\d+}', [PatientOrderController::class, 'putCancelPatientInquiryOrder']);
|
||||||
|
|
||||||
|
// 问诊订单取消支付-1未支付
|
||||||
|
Router::put('/cancel-pay/{order_inquiry_id:\d+}', [PatientOrderController::class, 'putPatientInquiryOrderCancelPay']);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 药品订单
|
||||||
|
Router::addGroup('/product', function () {
|
||||||
|
// 获取药品订单列表
|
||||||
|
Router::get('', [PatientOrderController::class, 'getPatientProductOrderList']);
|
||||||
|
|
||||||
|
// 获取药品订单详情
|
||||||
|
Router::post('/8', [PatientOrderController::class, 'imCallBack']);
|
||||||
|
|
||||||
|
// 药品订单取消支付-1未支付
|
||||||
|
Router::put('/cancel-pay/{order_inquiry_id:\d+}', [PatientOrderController::class, 'putPatientInquiryOrderCancelPay']);
|
||||||
|
|
||||||
|
// 创建处方订单
|
||||||
|
Router::post('/17', [PatientOrderController::class, 'imCallBack']);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 处方订单
|
||||||
|
Router::addGroup('/prescription', function () {
|
||||||
|
// 获取处方订单列表
|
||||||
|
Router::post('/14', [PatientOrderController::class, 'imCallBack']);
|
||||||
|
|
||||||
|
// 获取处方订单详情
|
||||||
|
Router::post('/8', [PatientOrderController::class, 'imCallBack']);
|
||||||
|
|
||||||
|
// 获取处方订单支付页详情-处方管理
|
||||||
|
Router::post('/16', [PatientOrderController::class, 'imCallBack']);
|
||||||
|
|
||||||
|
// 删除处方订单记录-处方管理
|
||||||
|
Router::post('/18', [PatientOrderController::class, 'imCallBack']);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// 药师端api
|
// 药师端api
|
||||||
@ -425,11 +462,8 @@ Router::get('/testpay', [UserController::class, 'testpay']);
|
|||||||
|
|
||||||
// 未开发接口
|
// 未开发接口
|
||||||
|
|
||||||
// 获取药品订单列表-药品订单
|
|
||||||
Router::post('/8', [CallBackController::class, 'imCallBack']);
|
|
||||||
|
|
||||||
// 获取药品订单详情-药品订单
|
|
||||||
Router::post('/9', [CallBackController::class, 'imCallBack']);
|
|
||||||
|
|
||||||
// 获取地址列表-地址管理
|
// 获取地址列表-地址管理
|
||||||
Router::post('/10', [CallBackController::class, 'imCallBack']);
|
Router::post('/10', [CallBackController::class, 'imCallBack']);
|
||||||
@ -443,20 +477,12 @@ Router::post('/12', [CallBackController::class, 'imCallBack']);
|
|||||||
// 删除地址-地址管理
|
// 删除地址-地址管理
|
||||||
Router::post('/13', [CallBackController::class, 'imCallBack']);
|
Router::post('/13', [CallBackController::class, 'imCallBack']);
|
||||||
|
|
||||||
// 获取处方列表-处方管理
|
|
||||||
Router::post('/14', [CallBackController::class, 'imCallBack']);
|
|
||||||
|
|
||||||
// 获取处方详情-处方管理
|
|
||||||
Router::post('/15', [CallBackController::class, 'imCallBack']);
|
|
||||||
|
|
||||||
// 获取处方支付页详情-处方管理
|
|
||||||
Router::post('/16', [CallBackController::class, 'imCallBack']);
|
|
||||||
|
|
||||||
// 创建处方订单-处方管理
|
|
||||||
Router::post('/17', [CallBackController::class, 'imCallBack']);
|
|
||||||
|
|
||||||
// 删除处方记录-处方管理
|
|
||||||
Router::post('/18', [CallBackController::class, 'imCallBack']);
|
|
||||||
|
|
||||||
// 获取问诊价格列表-消息-无问诊消息时
|
// 获取问诊价格列表-消息-无问诊消息时
|
||||||
Router::post('/19', [CallBackController::class, 'imCallBack']);
|
Router::post('/19', [CallBackController::class, 'imCallBack']);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user