Files
x-server-mobile/backend/app/controller/ApprovalController.php
T

123 lines
3.3 KiB
PHP
Raw Normal View History

<?php
namespace app\controller;
use app\service\ApprovalService;
2026-02-25 18:26:22 +08:00
use app\model\ApprovalOrder;
use Webman\Http\Request;
use Webman\Http\Response;
class ApprovalController extends BaseController
{
private ApprovalService $service;
public function __construct()
{
$this->service = new ApprovalService();
}
2026-02-25 18:26:22 +08:00
/**
* 获取路由参数
*/
private function getRouteParam(Request $request, string $name, $default = null)
{
$route = $request->route;
if ($route && method_exists($route, 'param')) {
return $route->param($name) ?? $default;
}
return $default;
}
/**
* 获取审批列表
*/
public function list(Request $request): Response
{
$userId = $this->getUserId($request);
$type = $request->get('type', 'my');
$page = (int) $request->get('page', 1);
$pageSize = (int) $request->get('page_size', 20);
try {
$result = $this->service->getList($userId, $type, $page, $pageSize);
// 使用 json() 全局函数返回 JSON
return json([
'code' => 0,
'message' => 'success',
'data' => $result,
]);
} catch (\Exception $e) {
error_log("❌ Error in list controller: " . $e->getMessage() . "\n" . $e->getTraceAsString());
return $this->error($e->getMessage());
}
}
/**
* 获取审批详情
*/
public function detail(Request $request): Response
{
2026-02-25 18:26:22 +08:00
$id = (int) $this->getRouteParam($request, 'id');
2026-02-25 23:54:38 +08:00
$approval = ApprovalOrder::with(['flow.nodes', 'applicant', 'records.approver'])
->findOrFail($id);
return $this->success($approval);
}
/**
* 审批通过
*/
public function approve(Request $request): Response
{
$userId = $this->getUserId($request);
2026-02-25 18:26:22 +08:00
$id = (int) $this->getRouteParam($request, 'id');
$data = $request->post();
$data = $data ?? [];
$comment = $data['comment'] ?? null;
try {
$approval = $this->service->approve($id, $userId, $comment);
return $this->success($approval, '已通过');
} catch (\Exception $e) {
return $this->error($e->getMessage());
}
}
/**
* 审批拒绝
*/
public function reject(Request $request): Response
{
$userId = $this->getUserId($request);
2026-02-25 18:26:22 +08:00
$id = (int) $this->getRouteParam($request, 'id');
$data = $request->post();
$data = $data ?? [];
$comment = $data['comment'] ?? null;
try {
$approval = $this->service->reject($id, $userId, $comment);
return $this->success($approval, '已拒绝');
} catch (\Exception $e) {
return $this->error($e->getMessage());
}
}
/**
* 撤销申请
*/
public function cancel(Request $request): Response
{
$userId = $this->getUserId($request);
2026-02-25 18:26:22 +08:00
$id = (int) $this->getRouteParam($request, 'id');
try {
$approval = $this->service->cancel($id, $userId);
return $this->success($approval, '已撤销');
} catch (\Exception $e) {
return $this->error($e->getMessage());
}
}
}