function(Query $query){ $query->field(['sn','goods_name','goods_image','number','service_fee','company_name','delivery_type','shop_goods_type','goods_specs_inventory_id','specs_type','custom_attribute_items','specs'])->append(['spec_arr','delivery_type_text','shop_goods_type_text']); }])->field('id, sn, real_name,mobile, address,pay_time, paw_way,pay_sn, pay_status, refund_status, refund_transaction_id,create_time,shop_order_type,amount_total, order_amount') ->append(['pay_way_text','pay_status_text','refund_status_text'])->where(['sn'=> $params['sn'],'worker_id'=>$params['worker_id']])->findOrEmpty()->toArray(); $orderGoodsArr = []; $companyNameArr = array_column($detail['orderGoods'],'company_name'); foreach($companyNameArr as $val) { $orderGoods = []; foreach ($detail['orderGoods'] as $goodVal) { if($val == $goodVal['company_name']){ unset($goodVal['goodsSpecsInventory'], $goodVal['custom_attribute_items'], $goodVal['specs'], $goodVal['sn'], $goodVal['goods_specs_inventory_id'],$goodVal['company_name']); $orderGoods[] = $goodVal; } } if(!empty($orderGoods)){ $orderGoodsArr[] = [ 'company_name' => $val, 'goods' => $orderGoods ]; } } $detail['orderGoods'] = $orderGoodsArr; return $detail; } public static function cancelOrder($params):bool { Db::startTrans(); try { $orderModel = ShopOrders::where([ 'shop_order_type' => 1, 'worker_id' => $params['worker_id'], 'sn'=>$params['sn'] ])->findOrEmpty(); if($orderModel->isEmpty()){ throw new \Exception('订单不存在或不是待支付状态'); } $orderModel->shop_order_type = 0; $orderModel->save(); Db::commit(); return true; } catch (\Exception $e) { Db::rollback(); self::setError($e->getMessage()); return false; } } }