更新
This commit is contained in:
@@ -0,0 +1,126 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace app\adminapi\controller\tcm;
|
||||
|
||||
use app\adminapi\controller\BaseAdminController;
|
||||
use app\adminapi\lists\tcm\RevisitDueLists;
|
||||
use app\adminapi\logic\tcm\RevisitDueLogic;
|
||||
use app\adminapi\validate\tcm\RevisitDueValidate;
|
||||
|
||||
/**
|
||||
* 复诊到期弹窗控制器(需求 4:到期未面诊弹窗 + 延迟处理;P2 主管团队视图 lists / logs)
|
||||
*
|
||||
* URL 自动映射 /adminapi/tcm.revisitDue/<action>,权限串 tcm.revisitDue/<action>,
|
||||
* 弹窗六个 action 在菜单登记于 server/sql/1.9.20261012/05_add_revisit_due_menu.sql,
|
||||
* 主管视图 lists(C 类页面 /stats/revisit_due)/ logs(A 类)登记于 08_add_revisit_due_team_menu.sql,
|
||||
* 否则 AuthMiddleware 对未登记接口放行。归属校验在 RevisitDueLogic 内完成,lists 的数据范围由 RevisitDueLists 处理。
|
||||
*
|
||||
* @package app\adminapi\controller\tcm
|
||||
*/
|
||||
class RevisitDueController extends BaseAdminController
|
||||
{
|
||||
/**
|
||||
* @notes 主管团队视图:到期跟进列表(分页 / 筛选 / 导出 export=1|2),数据范围按角色 data_scope
|
||||
*/
|
||||
public function lists()
|
||||
{
|
||||
return $this->dataLists(new RevisitDueLists());
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 主管团队视图:某条提醒的事件流水(需在当前账号数据范围内)
|
||||
*/
|
||||
public function logs()
|
||||
{
|
||||
$params = (new RevisitDueValidate())->get()->goCheck('logs');
|
||||
$result = RevisitDueLogic::logs((int) $params['due_id'], $this->adminId, $this->adminInfo);
|
||||
if ($result === false) {
|
||||
return $this->fail(RevisitDueLogic::getError() ?: '流水读取失败');
|
||||
}
|
||||
|
||||
return $this->data($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 弹窗待办(轮询):本人到期未挂号 / 过号且已到提醒时刻的项 + 汇总计数
|
||||
*/
|
||||
public function pending()
|
||||
{
|
||||
return $this->data(RevisitDueLogic::pending($this->adminId, $this->adminInfo));
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 仅计数(不更新弹出时间)
|
||||
*/
|
||||
public function summary()
|
||||
{
|
||||
return $this->data(RevisitDueLogic::summary($this->adminId, $this->adminInfo));
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 延迟一次(幂等:affected=0 也返回当前行)
|
||||
*/
|
||||
public function snooze()
|
||||
{
|
||||
$params = (new RevisitDueValidate())->post()->goCheck('snooze');
|
||||
$result = RevisitDueLogic::snooze((int) $params['id'], $this->adminId, $this->adminInfo);
|
||||
if ($result === false) {
|
||||
return $this->fail(RevisitDueLogic::getError() ?: '延迟失败');
|
||||
}
|
||||
|
||||
return $this->success($result['message'], $result['item'], 1, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 批量延迟(仅 escalation_level<=1 的项)
|
||||
*/
|
||||
public function snoozeAll()
|
||||
{
|
||||
$params = (new RevisitDueValidate())->post()->goCheck('snoozeAll');
|
||||
$result = RevisitDueLogic::snoozeAll((array) $params['ids'], $this->adminId, $this->adminInfo);
|
||||
|
||||
return $this->success($result['message'], $result, 1, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 已联系:记录患者承诺复诊日
|
||||
*/
|
||||
public function contact()
|
||||
{
|
||||
$params = (new RevisitDueValidate())->post()->goCheck('contact');
|
||||
$result = RevisitDueLogic::contact(
|
||||
(int) $params['id'],
|
||||
(string) $params['promised_date'],
|
||||
(string) ($params['remark'] ?? ''),
|
||||
$this->adminId,
|
||||
$this->adminInfo
|
||||
);
|
||||
if ($result === false) {
|
||||
return $this->fail(RevisitDueLogic::getError() ?: '记录失败');
|
||||
}
|
||||
|
||||
return $this->success($result['message'], $result['item'], 1, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 人工关闭(原因 lost|other + 说明必填)
|
||||
*/
|
||||
public function close()
|
||||
{
|
||||
$params = (new RevisitDueValidate())->post()->goCheck('close');
|
||||
$result = RevisitDueLogic::close(
|
||||
(int) $params['id'],
|
||||
(string) $params['reason'],
|
||||
(string) ($params['remark'] ?? ''),
|
||||
$this->adminId,
|
||||
$this->adminInfo
|
||||
);
|
||||
if ($result === false) {
|
||||
return $this->fail(RevisitDueLogic::getError() ?: '关闭失败');
|
||||
}
|
||||
|
||||
return $this->success($result['message'], $result['item'], 1, 1);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user