From 9ff24929623fa33262f19b6888a945a1e5901ce9 Mon Sep 17 00:00:00 2001 From: ZF sun <34314687@qq.com> Date: Tue, 25 Nov 2025 11:32:31 +0800 Subject: [PATCH] =?UTF-8?q?fix(src):=20=E8=A7=A3=E5=86=B3GROUP=20BY?= =?UTF-8?q?=E9=97=AE=E9=A2=98=EF=BC=9A=E5=8F=AA=E6=9F=A5=E8=AF=A2=E4=B8=BB?= =?UTF-8?q?=E9=94=AEID=EF=BC=8C=E9=81=BF=E5=85=8DONLY=5FFULL=5FGROUP=5FBY?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/addon/fenxiao/model/FenxiaoOrder.php | 47 ++++++++++++++---------- src/app/model/Model.php | 2 +- 2 files changed, 28 insertions(+), 21 deletions(-) diff --git a/src/addon/fenxiao/model/FenxiaoOrder.php b/src/addon/fenxiao/model/FenxiaoOrder.php index e803eef82..96aaf766e 100644 --- a/src/addon/fenxiao/model/FenxiaoOrder.php +++ b/src/addon/fenxiao/model/FenxiaoOrder.php @@ -381,33 +381,40 @@ class FenxiaoOrder extends BaseModel */ public function getFenxiaoOrderPage($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = 'order_id DESC') { - $field = 'order_id,order_no,site_name,member_name,create_time,is_settlement,fenxiao_order_id'; - $list = model('fenxiao_order')->pageList($condition, $field, $order, $page, $page_size, 'fo', [], 'order_id'); + // 解决GROUP BY问题:只查询主键ID,避免ONLY_FULL_GROUP_BY错误 + $field = 'DISTINCT fo.order_id'; + $list = model('fenxiao_order')->pageList($condition, $field, $order, $page, $page_size, 'fo', [], 'fo.order_id'); if (!empty($list[ 'list' ])) { $order_id_arr = []; foreach ($list['list'] as $k => $v) { $order_id_arr[] = $v['order_id']; } - $order_ids = implode(',', $order_id_arr); - $order_list = model('order')->getList([ [ 'order_id', 'in', $order_ids ] ], 'order_id,name,full_address,mobile,order_status_name'); - $order_goods_list = model('fenxiao_order')->getList([ [ 'order_id', 'in', $order_ids ] ]); - foreach ($list[ 'list' ] as $k => $item) { - foreach ($order_list as $k_order => $v_order) - { - if($item['order_id'] == $v_order['order_id']) - { - $list[ 'list' ][ $k ] = array_merge($list[ 'list' ][ $k ], $v_order); - } - } - $list[ 'list' ][ $k ][ 'order_goods' ] = []; - foreach ($order_goods_list as $k_order_goods => $v_order_goods) - { - if($item['order_id'] == $v_order_goods['order_id']) - { - $list[ 'list' ][ $k ][ 'order_goods' ][] = $v_order_goods; - } + if (!empty($order_id_arr)) { + $order_ids = implode(',', $order_id_arr); + + // 重新查询完整的分销订单数据 + $fenxiao_orders = model('fenxiao_order')->getList([ [ 'fo.order_id', 'in', $order_ids ] ], + 'fo.order_id, fo.order_no, fo.site_name, fo.member_name, fo.create_time, fo.is_settlement, fo.fenxiao_order_id', + '', 'fo'); + + // 重新组织数据 + $new_list = []; + foreach ($fenxiao_orders as $fenxiao_order) { + $order_list = model('order')->getInfo([ [ 'order_id', '=', $fenxiao_order['order_id'] ] ], + 'name,full_address,mobile,order_status_name'); + $order_goods_list = model('fenxiao_order')->getList([ [ 'order_id', '=', $fenxiao_order['order_id'] ] ]); + + // 合并数据 + $new_item = array_merge($fenxiao_order, [ + 'address' => $order_list['full_address'] ?? '', + 'mobile' => $order_list['mobile'] ?? '', + 'order_status_name' => $order_list['order_status_name'] ?? '', + 'order_goods' => $order_goods_list + ]); + $new_list[] = $new_item; } + $list['list'] = $new_list; } } return $this->success($list); diff --git a/src/app/model/Model.php b/src/app/model/Model.php index a33b68bbc..7f1b54d98 100644 --- a/src/app/model/Model.php +++ b/src/app/model/Model.php @@ -121,7 +121,7 @@ class Model /** * 获取分页列表数据 * @param array $condition - * @param bool $field + * @param bool | string $field * @param string $order * @param int $page * @param int $list_rows