mirror of
https://github.com/crmeb/CRMEB.git
synced 2026-10-28 21:40:50 +00:00
fix(网盘订单): 列表合并扩展字段、打通搜索并按业务调整展示列
- 新增 OrderCenterListExtend 监听器:从 eb_pt_virtual_order 合并 product_id/status/complete_time 到列表行,修复商品ID与状态空白 - list() 搜索契约映射:order_no 走中台 keyword 前缀搜索、status 对应 status_code,修复搜索不生效 - 列表去掉发货时间/退款状态/商品ID(网盘自动发货、无退款流程), 新增商品名称/规格/金额
This commit is contained in:
parent
5134bb80b2
commit
29dd67bc0b
@ -25,14 +25,21 @@ class OrderController extends AuthController
|
||||
/**
|
||||
* 订单列表
|
||||
* 从中台表查询 product_type=virtual 的订单
|
||||
* 页面搜索契约:order_no 前缀搜索(走中台 keyword)、status 对应中台 status_code
|
||||
* @param OrderCenterServices $centerServices
|
||||
* @return \think\Response
|
||||
*/
|
||||
public function list(OrderCenterServices $centerServices)
|
||||
{
|
||||
$where = array_merge($this->request->param(), [
|
||||
'product_type' => 'virtual',
|
||||
]);
|
||||
$where = ['product_type' => 'virtual'];
|
||||
$orderNo = trim((string) $this->request->param('order_no', ''));
|
||||
if ($orderNo !== '') {
|
||||
$where['keyword'] = $orderNo;
|
||||
}
|
||||
$status = (string) $this->request->param('status', '');
|
||||
if ($status !== '') {
|
||||
$where['status_code'] = $status;
|
||||
}
|
||||
$page = (int) $this->request->param('page', 1);
|
||||
$limit = (int) $this->request->param('limit', 20);
|
||||
$list = $centerServices->getAdminList($where, $page, $limit);
|
||||
|
||||
@ -42,5 +42,10 @@ return [
|
||||
'OrderCenterDetailExtend' => [
|
||||
\modules\product\virtual\listener\OrderCenterDetailExtendListener::class,
|
||||
],
|
||||
|
||||
/** 订单中台列表扩展:合并网盘订单扩展字段(product_id/status/send_time/complete_time) */
|
||||
'OrderCenterListExtend' => [
|
||||
\modules\product\virtual\listener\OrderCenterListExtendListener::class,
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
@ -0,0 +1,77 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace modules\product\virtual\listener;
|
||||
|
||||
use modules\product\virtual\dao\VirtualOrderDao;
|
||||
use think\facade\Log;
|
||||
|
||||
/**
|
||||
* 订单中心列表扩展监听器
|
||||
* 合并网盘订单扩展字段(product_id/status/send_time/complete_time)到列表行,
|
||||
* 供后台网盘订单列表渲染;退款状态以中台实体列为准,不在此覆盖
|
||||
*/
|
||||
class OrderCenterListExtendListener
|
||||
{
|
||||
/**
|
||||
* 处理列表扩展
|
||||
* @param array $eventData ['list' => &$list]
|
||||
*/
|
||||
public function handle($eventData): void
|
||||
{
|
||||
$list = &$eventData['list'];
|
||||
if (empty($list)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$orderNos = [];
|
||||
foreach ($list as $item) {
|
||||
if (($item['source_type'] ?? '') === 'virtual_order') {
|
||||
$orderNos[] = $item['order_no'] ?? '';
|
||||
}
|
||||
}
|
||||
$orderNos = array_filter(array_unique($orderNos));
|
||||
if (empty($orderNos)) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
/** @var VirtualOrderDao $dao */
|
||||
$dao = app(VirtualOrderDao::class);
|
||||
$rows = $dao->getDb()
|
||||
->whereIn('order_no', $orderNos)
|
||||
->field('order_no, product_id, status, send_time, complete_time')
|
||||
->select()
|
||||
->toArray();
|
||||
} catch (\Throwable $e) {
|
||||
Log::error('[Virtual] OrderCenterListExtend 读取扩展表失败: ' . $e->getMessage());
|
||||
return;
|
||||
}
|
||||
|
||||
$map = [];
|
||||
foreach ($rows as $row) {
|
||||
$map[$row['order_no']] = $row;
|
||||
}
|
||||
|
||||
foreach ($list as &$item) {
|
||||
if (($item['source_type'] ?? '') !== 'virtual_order') {
|
||||
continue;
|
||||
}
|
||||
$ext = $map[$item['order_no'] ?? ''] ?? [];
|
||||
$item['product_id'] = (int)($ext['product_id'] ?? 0);
|
||||
$item['status'] = (string)($ext['status'] ?? '');
|
||||
$item['send_time'] = (int)($ext['send_time'] ?? 0);
|
||||
$item['complete_time'] = (int)($ext['complete_time'] ?? 0);
|
||||
}
|
||||
unset($item);
|
||||
}
|
||||
}
|
||||
@ -30,23 +30,25 @@
|
||||
<el-card shadow="never" :body-style="{ padding: '12px 20px' }" class="mt16">
|
||||
<el-table :data="list" v-loading="loading" stripe empty-text="暂无数据">
|
||||
<el-table-column label="订单号" min-width="200" prop="order_no" />
|
||||
<el-table-column label="商品ID" min-width="90" prop="product_id" />
|
||||
<el-table-column label="商品名称" min-width="180">
|
||||
<template #default="{ row }">{{ row.title || '--' }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="规格" min-width="90">
|
||||
<template #default="{ row }">{{ row.extra_info?.items?.[0]?.sku || '--' }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="金额" min-width="100">
|
||||
<template #default="{ row }">
|
||||
<span style="color: #ed4014; font-weight: bold">¥{{ row.pay_price || '0.00' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="状态" min-width="120">
|
||||
<template #default="{ row }">
|
||||
<el-tag :type="statusType(row.status)">{{ statusLabel(row.status) }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="发货时间" min-width="160">
|
||||
<template #default="{ row }">{{ dateFormat(row.send_time) }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="完成时间" min-width="160">
|
||||
<template #default="{ row }">{{ dateFormat(row.complete_time) }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="退款状态" min-width="100">
|
||||
<template #default="{ row }">
|
||||
<el-tag :type="row.refund_status ? 'danger' : 'info'">{{ row.refund_status ? '退款中' : '正常' }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="创建时间" min-width="160">
|
||||
<template #default="{ row }">{{ dateFormat(row.add_time) }}</template>
|
||||
</el-table-column>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user