修复一些错误

This commit is contained in:
liu
2026-08-14 22:20:13 +08:00
parent 228212f8e3
commit 4bdaf2a219
12 changed files with 454 additions and 37 deletions
@@ -3,6 +3,7 @@
namespace App\Http\Controllers\Order;
use App\Exceptions\RepositoryException;
use App\Models\BillModel;
use App\Models\NoticeModel;
use App\Models\StoreOrderModel;
use App\Models\UserModel;
@@ -38,7 +39,8 @@ class StoreOrderController extends BaseController
$query = StoreOrderModel::query()->with([
'store:id,name,address,contact,phone',
'items:id,order_id,product_id,product_name,product_spec,unit,price,quantity,amount,image_ids',
'purchase:id,purchase_no,purchase_date,status'
'purchase:id,purchase_no,purchase_date,status',
'bill:id,bill_no,bill_date,total_amount,status,payment_id,paid_at',
]);
// 按包含的商品名称搜索:任一明细品名包含关键字即命中
@@ -65,6 +67,7 @@ class StoreOrderController extends BaseController
// 明细封面图:从快照 image_ids 批量解析(不再关联商品档案表)
foreach ($data['data'] as &$order) {
app(ItemImageResolver::class)->resolve($order['items']);
$this->appendBillPayState($order);
}
unset($order);
@@ -78,6 +81,7 @@ class StoreOrderController extends BaseController
$order = StoreOrderModel::with([
'store:id,name,address,contact,phone',
'items' => static fn ($query) => $query->with('supplier:id,name'),
'bill',
])->find($id);
if (empty($order)) {
throw new RepositoryException('订单不存在');
@@ -90,6 +94,8 @@ class StoreOrderController extends BaseController
// 明细首图
app(ItemImageResolver::class)->resolve($data['items']);
// 关联账单详情:补充支付进度
$this->appendBillPayState($data);
return $this->success($data);
}
@@ -234,4 +240,21 @@ class StoreOrderController extends BaseController
]);
}
}
/**
* 订单输出数组的关联账单补充支付进度(待支付/审核中/已支付,与小程序端口径一致)
*
* @param array<string, mixed> $order 订单数组(引用修改)
*/
private function appendBillPayState(array &$order): void
{
if (! is_array($order['bill'] ?? null)) {
return;
}
// 复用模型支付进度推导(已支付 > 审核中 > 待支付)
$bill = new BillModel($order['bill']);
$payState = $bill->payState();
$order['bill']['pay_state'] = $payState;
$order['bill']['pay_state_name'] = BillModel::PAY_STATE_NAMES[$payState];
}
}