141 lines
4.5 KiB
PHP
141 lines
4.5 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace app\adminapi\controller\tcm;
|
|
|
|
use app\adminapi\controller\BaseAdminController;
|
|
use app\adminapi\lists\tcm\PrescriptionOrderLists;
|
|
use app\adminapi\logic\order\OrderLogic;
|
|
use app\adminapi\logic\tcm\PrescriptionOrderLogic;
|
|
use app\adminapi\validate\tcm\PrescriptionOrderValidate;
|
|
|
|
/**
|
|
* 处方业务订单(非支付单)
|
|
*/
|
|
class PrescriptionOrderController extends BaseAdminController
|
|
{
|
|
public function lists()
|
|
{
|
|
return $this->dataLists(new PrescriptionOrderLists());
|
|
}
|
|
|
|
/**
|
|
* 指定诊单下已支付支付单(创建/编辑业务订单时多选关联)
|
|
*/
|
|
public function paidPayOrders()
|
|
{
|
|
$params = (new PrescriptionOrderValidate())->get()->goCheck('paidPayOrders');
|
|
$exceptPo = (int) $this->request->get('prescription_order_id', 0);
|
|
$lists = OrderLogic::listPaidOrdersForDiagnosis(
|
|
(int) $params['diagnosis_id'],
|
|
$this->adminId,
|
|
$this->adminInfo,
|
|
$exceptPo > 0 ? $exceptPo : null
|
|
);
|
|
|
|
return $this->success('', ['lists' => $lists]);
|
|
}
|
|
|
|
public function create()
|
|
{
|
|
$params = (new PrescriptionOrderValidate())->post()->goCheck('create');
|
|
$result = PrescriptionOrderLogic::create($params, $this->adminId, $this->adminInfo);
|
|
if ($result === false) {
|
|
return $this->fail(PrescriptionOrderLogic::getError());
|
|
}
|
|
|
|
return $this->success('创建成功', $result);
|
|
}
|
|
|
|
public function detail()
|
|
{
|
|
$params = (new PrescriptionOrderValidate())->get()->goCheck('detail');
|
|
$detail = PrescriptionOrderLogic::detail((int) $params['id'], $this->adminId, $this->adminInfo);
|
|
if ($detail === null) {
|
|
return $this->fail(PrescriptionOrderLogic::getError());
|
|
}
|
|
|
|
return $this->data($detail);
|
|
}
|
|
|
|
/**
|
|
* 快递轨迹查询(对接快递100;未配置时仍可跳转顺丰/京东官网)
|
|
*/
|
|
public function logisticsTrace()
|
|
{
|
|
$params = (new PrescriptionOrderValidate())->get()->goCheck('logisticsTrace');
|
|
$expressOverride = trim((string) $this->request->get('express_company', ''));
|
|
$data = PrescriptionOrderLogic::logisticsTrace(
|
|
(int) $params['id'],
|
|
$expressOverride,
|
|
$this->adminId,
|
|
$this->adminInfo
|
|
);
|
|
if ($data === null) {
|
|
return $this->fail(PrescriptionOrderLogic::getError());
|
|
}
|
|
|
|
return $this->success('', $data);
|
|
}
|
|
|
|
public function edit()
|
|
{
|
|
$params = (new PrescriptionOrderValidate())->post()->goCheck('edit');
|
|
$result = PrescriptionOrderLogic::edit($params, $this->adminId, $this->adminInfo);
|
|
if ($result === false) {
|
|
return $this->fail(PrescriptionOrderLogic::getError());
|
|
}
|
|
|
|
return $this->success('保存成功', $result);
|
|
}
|
|
|
|
public function auditPrescription()
|
|
{
|
|
$params = (new PrescriptionOrderValidate())->post()->goCheck('auditPrescription');
|
|
$result = PrescriptionOrderLogic::auditPrescription(
|
|
(int) $params['id'],
|
|
(string) $params['action'],
|
|
(string) ($params['remark'] ?? ''),
|
|
$this->adminId,
|
|
$this->adminInfo
|
|
);
|
|
if ($result === false) {
|
|
return $this->fail(PrescriptionOrderLogic::getError());
|
|
}
|
|
|
|
return $this->success('操作成功', $result);
|
|
}
|
|
|
|
public function auditPayment()
|
|
{
|
|
$params = (new PrescriptionOrderValidate())->post()->goCheck('auditPayment');
|
|
$result = PrescriptionOrderLogic::auditPaymentSlip(
|
|
(int) $params['id'],
|
|
(string) $params['action'],
|
|
(string) ($params['remark'] ?? ''),
|
|
$this->adminId,
|
|
$this->adminInfo
|
|
);
|
|
if ($result === false) {
|
|
return $this->fail(PrescriptionOrderLogic::getError());
|
|
}
|
|
|
|
return $this->success('操作成功', $result);
|
|
}
|
|
|
|
/**
|
|
* 医助/创建人撤回:仅「待双审通过」可撤(未通过或双审均驳回等仍为该状态)
|
|
*/
|
|
public function withdraw()
|
|
{
|
|
$params = (new PrescriptionOrderValidate())->post()->goCheck('withdraw');
|
|
$result = PrescriptionOrderLogic::withdraw((int) $params['id'], $this->adminId, $this->adminInfo);
|
|
if ($result === false) {
|
|
return $this->fail(PrescriptionOrderLogic::getError());
|
|
}
|
|
|
|
return $this->success('已撤回', $result);
|
|
}
|
|
}
|