文件还在测试中
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
<?php
|
||||
namespace App\Controllers\PSI;
|
||||
|
||||
use App\Controllers\Controller;
|
||||
use App\Models\Order;
|
||||
use App\Models\Payment;
|
||||
use Core\Payment\OrderService;
|
||||
|
||||
/**
|
||||
* PSI 订单管理:将原「后台订单」合并到进销存系统,便于管理人员在同一系统快速处理。
|
||||
* 权限:该系统拥有 orders 页面权限的用户(默认 PSI 管理员/超管全部可见,普通用户按 perms 细粒度控制)。
|
||||
* 关键动作(标记支付、删除)仅限 PSI 管理员,避免普通操作员误改订单。
|
||||
*/
|
||||
class OrdersController extends Controller
|
||||
{
|
||||
/** 列表:最新在前 */
|
||||
public function index()
|
||||
{
|
||||
$order = new Order();
|
||||
$all = array_reverse($order->all());
|
||||
return $this->renderSubsys('psi', 'psi/orders', ['orders' => $all], \subsys_nav('psi'), 'orders');
|
||||
}
|
||||
|
||||
/** 详情:订单信息 + 付款记录 */
|
||||
public function show($id)
|
||||
{
|
||||
$order = new Order();
|
||||
$o = $order->find($id);
|
||||
if (!$o) { \Core\App::notFound(); return; }
|
||||
$payments = (new Payment())->whereAll('order_no', $o['order_no']);
|
||||
return $this->renderSubsys('psi', 'psi/order_show', [
|
||||
'o' => $o, 'payments' => $payments,
|
||||
], \subsys_nav('psi'), 'orders');
|
||||
}
|
||||
|
||||
/** 标记为已支付(仅 PSI 管理员) */
|
||||
public function markPaid($id)
|
||||
{
|
||||
subsys_admin('psi') or \Core\App::forbidden('需要 PSI 管理员权限');
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST' && csrf_check()) {
|
||||
$order = new Order();
|
||||
$o = $order->find($id);
|
||||
if ($o && $o['status'] !== 'paid') {
|
||||
OrderService::markPaid($o['order_no'], 'MANUAL' . time(), $o['channel'] ?: 'manual');
|
||||
$this->flash('订单已标记为已支付', 'ok');
|
||||
}
|
||||
}
|
||||
return $this->redirect('PSI/orders/show/' . $id);
|
||||
}
|
||||
|
||||
/** 删除订单(仅 PSI 管理员) */
|
||||
public function destroy($id)
|
||||
{
|
||||
subsys_admin('psi') or \Core\App::forbidden('需要 PSI 管理员权限');
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST' && csrf_check()) {
|
||||
(new Order())->delete($id);
|
||||
$this->flash('订单已删除', 'ok');
|
||||
}
|
||||
return $this->redirect('PSI/orders');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user