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