input('order_id')); //查询这个订单没有发货的商品 // $where[] = ['order_id','=',$order_id]; // $where[] = ['order_express_id','=',null]; $select = ['id','goods_id','order_id','thumb','title','goods_option_title','goods_sn','goods_market_price','payment_amount','total']; $orderGoodsCollection = OrderGoods::uniacid()->select($select)->where('order_id', $order_id) ->whereNull('order_express_id')->with(['expressPackage','manyRefundedGoodsLog'])->get()->makeVisible('order_id'); $orderGoodsCollection->makeHidden(['after_sales','expressPackage','manyRefundedGoodsLog','goods']); $order_goods = $orderGoodsCollection->map(function (OrderGoods $orderGoods) { $not_number = $orderGoods->getRefundTotal() + $orderGoods->expressPackage->sum('total'); $orderGoods->origin_total = $orderGoods->total; $orderGoods->total = $orderGoods->origin_total - $not_number; return $orderGoods; })->filter(function ($orderGoods) { return $orderGoods->total > 0; })->values()->toArray(); // $order_package = OrderPackage::uniacid()->where('order_id', $order_id)->whereNotNull('order_express_id')->get(); // $order_goods = OrderPackageService::filterGoods($order_goods,$order_package); // $order_goods = array_values($order_goods->toArray()); return $this->successJson('操作成功',$order_goods); } public function orderExpress() { $order_id = intval(request()->input('order_id')); $orderExpress = OrderExpress::where('order_id', $order_id) ->with(['hasManyOrderPackage'])->get(); if ($orderExpress->isNotEmpty()) { $orderExpress->makeHidden(['hasManyOrderPackage']); $orderExpress->map(function ($orderExpress, $key) { $orderExpress->active_name = '包裹-'. ($key + 1); $orderExpress->package_goods = $orderExpress->hasManyOrderPackage->map(function ($package) { return [ 'order_goods_id' => $package->order_goods_id, 'total' => $package->total, 'goods_title' => $package->orderGoods->title, 'goods_thumb' =>$package->orderGoods->thumb, 'goods_option_title' => $package->orderGoods->goods_option_title, ]; })->toArray(); }); } return $this->successJson('list', [ 'have_package'=> $orderExpress->isNotEmpty(), 'order_package'=> $orderExpress ]); } /** * 用来修复多包裹发货默认值为1(部分发货) 之后批量发货造成默认值不会更改 造成用户无法收货的问题 */ public function repairMultiplePackages() { $where[] = ['status','!=',2]; $where[] = ['is_all_send_goods','=',1]; Order::where($where)->update(['is_all_send_goods'=>0]); //修改所有状态不等于发货的状态为0 $where = []; $where[] = ['status','=',2]; $where[] = ['is_all_send_goods','=',1]; $data = Order::where($where)->with(['hasManyOrderGoods'])->get(); foreach ($data as $k=>$v){ $order_data = $v->toArray(); if(count($order_data['has_many_order_goods'])==1){ $v->is_all_send_goods = 0; $v->save(); }else{ $order_goods_express_id_is_null = 0; //计数 如果订单商品所有该字段都是空 则状态变为全部发货 $order_goods_express_id_num = 0;//计数 如果订单商品所有该字段都不为空则变为全部发货 foreach ($order_data['has_many_order_goods'] as $k1=>$v1){ if(empty($v1['order_express_id'])){ $order_goods_express_id_is_null++; }else{ $order_goods_express_id_num++; } } if($order_goods_express_id_is_null == count($order_data['has_many_order_goods'])){ $v->is_all_send_goods = 0; $v->save(); } if($order_goods_express_id_num == count($order_data['has_many_order_goods'])){ $v->is_all_send_goods = 0; $v->save(); } } } return $this->successJson(); } }