all()); $input = $request->all(); $page_index = $input['page_index']; $page_size = $input['page_size']; $num = ($page_index - 1) * $page_size; $order_no = $input['order_no']; $start_time = $input['start_time']; $end_time = $input['end_time']; $search_name = $input['search_name']; $activity_id = $input['activity_id']; $data = Order::with(['get_user'=>function($query){ $query->with(['warea:id,admin_name'])->select('id','nickname','name','realname','warea_id'); }]) ->with(['get_address:id,username,mobile,address,province,city,town']) ->with(['get_store:name,id']) ->with(['belong_user:nickname,id,mobile']); $admin=Auth::user(); if ($request->has('order_status')) { $order_status = $input['order_status']; } else { $order_status = []; } if ($order_status || $order_status == 0) { if ('-1' == $order_status) { $data->whereIn('is_deleted', [0, 1]); } elseif ($order_status == 5) { $data->where('is_deleted', 1); } elseif ($order_status == 0) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 1) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 2) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 3) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 4) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 6) { $data->whereIn('pay_status', [0, 1])->where('is_deleted', 0); } } $num_1=Order::whereIn('is_deleted',[0,1])->count(); $num_3=Order::where('is_deleted',0)->where('status', 0)->count(); $num_4=Order::where('is_deleted',0)->where('status', 1)->count(); $num_5=Order::where('is_deleted',0)->where('status', 2)->count(); $num_6=Order::where('is_deleted',0)->where('status', 3)->count(); $num_7=Order::where('is_deleted',0)->where('status', 4)->count(); $num_8=Order::where('is_deleted',1)->count(); $num_2=Order::whereIn('pay_status', [0, 1])->where('is_deleted', 0)->count(); if ($order_no) { $data->where('order_num','like', '%'.$order_no.'%'); } if ($search_name){ $user_search=function ($q)use($search_name){ $q->where('nickname','like',"%$search_name%") // ->orwhere('nickname','like',"%$search_name%") ->orwhere('mobile','like',"%$search_name%"); }; $ids=User::where($user_search)->pluck('id'); $data->whereIn('user_id',$ids); // $data->where($user_search); } if ($start_time && $end_time && empty($activity_id)) { $data->whereBetween('created_at', [$start_time, $end_time]); } if($activity_id){ $data->where('activity_id',$activity_id); } $count = $data->count(); if ($order_status==-1){ $num_1=$count; }elseif($order_status==0){ $num_3=$count; }elseif($order_status==1){ $num_4=$count; }elseif($order_status==2){ $num_5=$count; }elseif($order_status==3){ $num_6=$count; }elseif($order_status==4){ $num_7=$count; }elseif($order_status==5){ $num_8=$count; }elseif($order_status==6){ $num_2=$count; } if ($count <= 0) { $this->error('450001', '暂无信息'); } $list = $data->orderBy('id', 'desc')->skip($num)->take($page_size)->get(); foreach ($list as $key => $val) { $list[$key]['remark'] = $this->getOrderRemark($val['id']); if ($val['is_deleted']==1){ if ($val['remark']==''){ $list[$key]['remark']=$val['destroy_cause']; } } if (!empty($val->track_number)) { $list[$key]['express'] = $this->express($val->track_company, $val->track_number); } $good_unit=Orderdetail::where('order_id',$val['id'])->select('goods_unit',DB::raw('SUM(num) as total'))->groupBy('goods_unit')->pluck('total','goods_unit'); $num_hard=0; if (isset($good_unit['盒'])){ $num_hard=ceil($good_unit['盒']/12); } $num_old=0; if (isset($good_unit['件'])){ $num_old=ceil($good_unit['件']/6); } $pei=$this->DelNum($val['id']); // $pei=[]; $x_num=count($pei[0])+$num_hard+$num_old; $list[$key]['x_arr']=[ 'peijian'=>array_count_values($pei[0]), 'peijians'=>$pei[0], 'good'=>['hard'=>$num_hard,'other'=>$num_old], 'num'=>$x_num ]; } $all=[ 'total'=>$count, 'num_1'=>$num_1, 'num_2'=>$num_2, 'num_3'=>$num_3, 'num_4'=>$num_4, 'num_5'=>$num_5, 'num_6'=>$num_6, 'num_7'=>$num_7, 'num_8'=>$num_8, 'list'=>$list, ]; return $this->success($all,'获取数据成功'); } //获取订单备注 private function getOrderRemark($order_id) { $remark = OrderRemark::where('order_id', $order_id) ->select('remark', 'name')->get(); $str_remark = ''; if ($remark) { foreach ($remark as $k => $v) { $str_remark .= '【' . $v->remark . '/---/' . $v->name . '】'; } } return $str_remark; } //订单拆分快递单 public function orderBreakUpCouriers(Request $request) { ini_set('memory_limit', '4096M'); $input = $request->all(); if ($request->has('provice')) { $order_no = $input['order_no']; $start_time = $input['start_time']; $end_time = $input['end_time']; $activity_id = $input['activity_id']; $user_name = $input['user_name']; $receive_info = $input['receive_info']; $goods_info = $input['goods_info']; $province = $input['provice']; $city = $input['city']; $town = $input['area']; if ($request->has('order_status')) { $order_status = $input['order_status']; } else { $order_status = []; } if ($request->has('pay_status')) { $pay_status = $input['pay_status']; } else { $pay_status = []; } $order_type = $input['order_type']; $data = Order::leftJoin('order_detail', 'order.id', '=', 'order_detail.order_id') ->leftJoin('users', 'order.user_id', '=', 'users.id') // ->join('warea','warea.id','=','users.warea_id') ->leftJoin('goods_all', 'goods_all.id', '=', 'order_detail.goods_id') ->leftJoin('address', 'address.id', '=', 'order.address_id') ->select('order.order_num','users.uuid as u_uuid', 'address.address_code', 'address.mobile_code','order.is_car','order.status','order.pay_status','order.is_deleted','order.store_id','order.created_at', 'order.good_user_id','users.warea_id','order.id', 'order.remark', 'users.nickname as u_nickname','users.remark_name as u_name', 'users.mobile as u_mobile','users.auth_code', 'users.realname as u_realname', 'address.username', 'address.mobile', 'address.address', 'address.province', 'address.city', 'address.town', 'goods_all.main_attr', 'goods_all.sec_attr', 'goods_all.size', DB::raw('SUM(order_detail.num) as total'),'goods_all.attr_id as rank','goods_all.id as sorts'); $admin = Auth::user(); if ($admin->role_id == 23) { $warea_ids = Warea::where('admin_id', $admin->id)->pluck('id'); $data->whereIn('users.warea_id', $warea_ids); } if ($order_no) { $data->where('order.order_num', $order_no); } if ($start_time && $end_time && empty($activity_id)) { $data->whereBetween('order.created_at', [$start_time, $end_time]); } if ($activity_id) { // $data->where('order.activity_id', $activity_id); $actice=Activity::find($activity_id); $data->whereBetween('order.created_at',[$actice->start_time,$actice->end_time]); } if ($user_name) { $user_id = $this->getUserNameIds($user_name); $data->whereIn('order.user_id', $user_id); } if ($receive_info) { $address_ids = $this->getReceiveAddressIds($receive_info); $data->whereIn('order.address_id', $address_ids); } if ($province && $province != '省') { $province_ids = $this->getProvinceIds($province); $data->whereIn('order.address_id', $province_ids); } if ($city && $city != '市') { $city_ids = $this->getCityIds($city); $data->whereIn('order.address_id', $city_ids); } if ($town && $town != '区') { $town_ids = $this->getAreaIds($town); $data->whereIn('order.address_id', $town_ids); } //商品信息 if ($goods_info) { $order_ids = $this->getGoodsOrderIds($goods_info); $data->whereIn('order.id', $order_ids); } if ($order_status) { if (!in_array('-1', $order_status)) { if (!in_array('5', $order_status)) { $data->whereIn('order.status', $order_status)->where('order.is_deleted', 0); } else { $data->where('order.is_deleted', 1) ->orWhere(function ($query) use ($order_status) { $query->where('order.is_deleted', 0) ->whereIn('order.status', $order_status); }); } } } if ($pay_status) { if (!in_array('-1', $pay_status)) { $data->whereIn('order.pay_status', $pay_status); } } if (in_array($order_type, [0, 1])) { $data->where('order.order_type', $order_type); } $list = $data->groupBy('order_detail.order_id', 'goods_all.main_attr', 'goods_all.sec_attr', 'goods_all.size') ->orderBy('order.id') // ->orderBy('order.id', 'order_detail.id') ->get()->toArray(); } else { if ($request->has('id')) { $list = Order::leftJoin('order_detail', 'order.id', '=', 'order_detail.order_id') ->leftJoin('users', 'order.user_id', '=', 'users.id') // ->join('warea','warea.id','=','users.warea_id') ->leftJoin('goods_all', 'goods_all.id', '=', 'order_detail.goods_id') ->leftJoin('address', 'address.id', '=', 'order.address_id') ->select('order.order_num','users.uuid as u_uuid', 'address.address_code', 'address.mobile_code','order.is_car','order.status','order.pay_status','order.is_deleted','order.store_id','order.created_at','order.good_user_id','order.id', 'order.remark', 'users.nickname as u_nickname', 'users.mobile as u_mobile','users.auth_code','users.warea_id','users.remark_name as u_name', 'users.name as u_realname', 'address.username', 'address.mobile', 'address.address', 'address.province', 'address.city', 'address.town', 'goods_all.main_attr', 'goods_all.sec_attr', 'goods_all.size', DB::raw('SUM(order_detail.num) as total'),'goods_all.attr_id as rank','goods_all.id as sorts') ->whereIn('order.id', $request->id) ->groupBy('order_detail.order_id', 'goods_all.sec_attr', 'goods_all.size', 'goods_all.main_attr') ->orderBy('order.id') // ->orderBy('order.id', 'order_detail.id') ->get()->toArray(); } else { if ($request->has('order_no')) { $order_no = $input['order_no']; } else { $order_no = ''; } $start_time = $input['start_time'] ?? ''; $end_time = $input['end_time'] ?? ''; $activity_id = $input['activity_id'] ?? ''; $search_name = $input['search_name'] ?? ''; if ($request->has('order_status')) { $order_status = $input['order_status']; } else { $order_status = []; } $data = Order::leftJoin('order_detail', 'order.id', '=', 'order_detail.order_id') ->leftJoin('users', 'order.user_id', '=', 'users.id') // ->join('warea','warea.id','=','users.warea_id') ->leftJoin('goods_all', 'goods_all.id', '=', 'order_detail.goods_id') ->leftJoin('address', 'address.id', '=', 'order.address_id') ->select('order.order_num','users.uuid as u_uuid', 'address.address_code', 'address.mobile_code','order.is_car','order.status','order.pay_status','order.is_deleted','order.store_id','order.created_at', 'order.good_user_id','order.id','users.warea_id', 'order.remark', 'users.nickname as u_nickname', 'users.mobile as u_mobile','users.auth_code','users.remark_name as u_name', 'users.name as u_realname', 'address.username', 'address.mobile', 'address.address', 'address.province', 'address.city', 'address.town', 'goods_all.main_attr', 'goods_all.sec_attr', 'goods_all.size', DB::raw('SUM(order_detail.num) as total'),'goods_all.attr_id as rank','goods_all.id as sorts'); $admin = Auth::user(); if ($admin->role_id == 23) { $warea_ids = Warea::where('admin_id', $admin->id)->pluck('id'); $data->whereIn('users.warea_id', $warea_ids); } if ($order_status || $order_status == 0) { if ('-1' == $order_status) { $data->whereIn('order.is_deleted', [0, 1]); } elseif ($order_status == 5) { $data->where('order.is_deleted', 1); } elseif ($order_status == 0) { $data->where('order.status', $order_status)->where('order.is_deleted', 0); } elseif ($order_status == 1) { $data->where('order.status', $order_status)->where('order.is_deleted', 0); } elseif ($order_status == 2) { $data->where('order.status', $order_status)->where('order.is_deleted', 0); } elseif ($order_status == 3) { $data->where('order.status', $order_status)->where('order.is_deleted', 0); } elseif ($order_status == 4) { $data->where('order.status', $order_status)->where('order.is_deleted', 0); } elseif ($order_status == 6) { $data->whereIn('order.pay_status', [0, 1])->where('order.is_deleted', 0); } } if ($order_no) { $data->where('order.order_num', $order_no); } if ($search_name) { // $s=substr(trim($search_name),0,4); // if($s=='DWBS'){ // $data->where('order.order_num',trim($search_name)); // }else{ $ids = $this->getUserIds($search_name); $data->whereIn('order.user_id', $ids); // } } if ($start_time && $end_time && empty($activity_id)) { $data->whereBetween('order.created_at', [$start_time, $end_time]); } if ($activity_id) { $actice = Activity::find($activity_id); $data->whereBetween('order.created_at', [$actice->start_time, $actice->end_time]); } // $list = $data->groupBy('order_detail.order_id', 'goods_all.sec_attr', 'goods_all.size', 'goods_all.main_attr') $list = $data->groupBy('order_detail.order_id', 'goods_all.main_attr', 'goods_all.sec_attr', 'goods_all.size') ->orderBy('order.id') // ->orderBy('order.id', 'order_detail.id') ->get()->toArray(); } } $re=collect($list) ->groupBy('order_num') ->map(function ($item) { return $item->toArray(); }); $dd=[]; foreach ($re as $k=>$v){ $last_names = array_column($v,'rank'); $last_namess = array_column($v,'sorts'); array_multisort($last_names,SORT_ASC,$last_namess,SORT_ASC,$v); $dd[$k]=$v; } // return $this->success($arrs); // $newArr = []; // $arr=[]; // foreach ($list as $k => $val) { //数据根据日期分组 // $newArr[$val['order_num']][] = $val; // } // return $this->success_list($newArr,'','',$arr); // $dd = $this->dataGroup($list, 'order_num'); $d = []; foreach ($dd as $key => $val) { $info['gift'] = OrderGift::leftJoin('gifts', 'order_gift.gift_id', '=', 'gifts.id') ->where('order_gift.order_id', $val[0]['id']) ->where('order_gift.num', '>', '0') ->select('gifts.name', 'order_gift.num')->get(); $auth_code=User::where('id',$val[0]['good_user_id'])->value('auth_code'); if ($auth_code){ $info['auth_code']= $auth_code; }else{ $info['auth_code']= $val[0]['auth_code']; } $info['auth_codess']= $auth_code; $info['u_nickname'] = $val[0]['u_name']; $info['u_name'] = $val[0]['u_realname']; $info['u_mobile'] =$val[0]['u_uuid']; $info['mobile'] = $val[0]['mobile']; $info['address'] = $val[0]['address']; $info['username'] = $val[0]['username']; $info['province'] = $val[0]['province']; $info['city'] = $val[0]['city']; $info['town'] = $val[0]['town']; $info['pay_status'] = $val[0]['pay_status']; $info['status'] = $val[0]['status']; $info['is_deleted'] = $val[0]['is_deleted']; if ($val[0]['is_deleted']==1){ $info['status'] = $this->judge_status(5); }else{ $info['status'] = $this->judge_status($val[0]['status']); } $info['pay_status'] = $this->judge_pay_status($val[0]['pay_status']); $info['store']=''; if ( $val[0]['store_id']){ $info['store'] ='体验店订单'; }else{ if ( $val[0]['is_car']){ $info['store'] ='专车'; } }; $info['peijian']=$this->DelNum($val[0]['id']); // if ($val[0]['good_user_id']){ // $gooduser=User::where('id',$val[0]['good_user_id'])->select('mobile','realname')->first(); // if ($gooduser){ // $info['belong']='('.$gooduser->realname.mb_substr($gooduser->mobile,7,4).')'; // }else{ // $info['belong']=''; // } // // }else{ $info['belong']=''; // } $admin_name=Warea::where('id',$val[0]['warea_id'])->value('admin_name'); $info['admin_name'] =$admin_name; $info['created_at'] = $val[0]['created_at']; // $info['remark'] = (string)$val[0]['remark']; $info['remark'] = $this->getOrderRemark($val[0]['id']); $d[$key]['data']=$info; $d[$key]['精装'] = []; $d[$key]['新款'] = []; $d[$key]['新女款'] = []; $d[$key]['红色'] = []; $d[$key]['普通'] = []; $d[$key]['精装混合'] = []; $d[$key]['新款混合'] = []; $d[$key]['新女款混合'] = []; $d[$key]['红色混合'] = []; $d[$key]['普通混合'] = []; $d[$key]['抗菌袜'] = []; $d[$key]['抗菌袜混合'] = []; $x1 = 0; $y1 = [];//精装 $x2 = 0; $y2 = [];//红色 $x3 = 0;//新款 $y3 = []; $x4 = 0;//新女款 $y4 = []; $x = 0; $y = [];//普通 $six_arr=[]; $sel_arr=[]; foreach ($val as $k => $v) { if ($v['main_attr'] == '大卫博士精装版') { $main_attr = '精装版'; $n = floor($v['total'] / 12); for ($i = 0; $i < $n; $i++) { $cc = []; $cc['main_attr'] = $main_attr; $cc['sec_attr'] = $v['sec_attr']; $cc['size'] = $v['size']; $cc['num'] = 12; array_push($d[$key]['精装'], $cc); } if ($v['total'] % 12 > 0) { $t1 = $v['total'] % 12; if ($x1 + $t1 >= 12) { $x1 = $x1 + $t1 - 12; $z1['main_attr'] = $main_attr; $z1['sec_attr'] = $v['sec_attr']; $z1['size'] = $v['size']; $z1['num'] = $t1 - $x1; if ($y1) { array_pop($d[$key]['精装混合']); } array_push($y1, $z1); $z1 = []; array_push($d[$key]['精装混合'], $y1); $y1 = []; if ($x1 > 0) { $z1['main_attr'] = $main_attr; $z1['sec_attr'] = $v['sec_attr']; $z1['size'] = $v['size']; $z1['num'] = $x1; array_push($y1, $z1); array_push($d[$key]['精装混合'], $y1); } } else { $x1 += $t1; $z1['main_attr'] = $main_attr; $z1['sec_attr'] = $v['sec_attr']; $z1['size'] = $v['size']; $z1['num'] = $v['total'] % 12; if ($y1) { array_pop($d[$key]['精装混合']); } array_push($y1, $z1); array_push($d[$key]['精装混合'], $y1); } } } elseif ($v['main_attr'] == '红色贺岁款(精装版)') { $main_attr = '红色款'; $n = floor($v['total'] / 12); for ($i = 0; $i < $n; $i++) { $cc = []; $cc['main_attr'] = $main_attr; $cc['sec_attr'] = $v['sec_attr']; $cc['size'] = $v['size']; $cc['num'] = 12; array_push($d[$key]['红色'], $cc); } if ($v['total'] % 12 > 0) { $t2 = $v['total'] % 12; if ($x2 + $t2 >= 12) { $x2 = $x2 + $t2 - 12; $z2['main_attr'] = $main_attr; $z2['sec_attr'] = $v['sec_attr']; $z2['size'] = $v['size']; $z2['num'] = $t2- $x2; if ($y2) { array_pop($d[$key]['红色混合']); } array_push($y2, $z2); $z2 = []; array_push($d[$key]['红色混合'], $y2); $y2 = []; if ($x2 > 0) { $z2['main_attr'] = $main_attr; $z2['sec_attr'] = $v['sec_attr']; $z2['size'] = $v['size']; $z2['num'] = $x2; array_push($y2, $z2); array_push($d[$key]['红色混合'], $y2); } } else { $x2 += $t2; $z2['main_attr'] = $main_attr; $z2['sec_attr'] = $v['sec_attr']; $z2['size'] = $v['size']; $z2['num'] = $v['total'] % 12; if ($y2) { array_pop($d[$key]['红色混合']); } array_push($y2, $z2); array_push($d[$key]['红色混合'], $y2); } } } elseif ($v['main_attr'] == '精装版新款') { $main_attr = '新款'; $n = floor($v['total'] / 12); for ($i = 0; $i < $n; $i++) { $cc = []; $cc['main_attr'] = $main_attr; $cc['sec_attr'] = $v['sec_attr']; $cc['size'] = $v['size']; $cc['num'] = 12; array_push($d[$key]['新款'], $cc); } if ($v['total'] % 12 > 0) { $t3 = $v['total'] % 12; if ($x3 + $t3 >= 12) { $x3 = $x3 + $t3 - 12; $z3['main_attr'] = $main_attr; $z3['sec_attr'] = $v['sec_attr']; $z3['size'] = $v['size']; $z3['num'] = $t3- $x3; if ($y3) { array_pop($d[$key]['新款混合']); } array_push($y3, $z3); $z3 = []; array_push($d[$key]['新款混合'], $y3); $y3 = []; if ($x3 > 0) { $z3['main_attr'] = $main_attr; $z3['sec_attr'] = $v['sec_attr']; $z3['size'] = $v['size']; $z3['num'] = $x3; array_push($y3, $z3); array_push($d[$key]['新款混合'], $y3); } } else { $x3 += $t3; $z3['main_attr'] = $main_attr; $z3['sec_attr'] = $v['sec_attr']; $z3['size'] = $v['size']; $z3['num'] = $v['total'] % 12; if ($y3) { array_pop($d[$key]['新款混合']); } array_push($y3, $z3); array_push($d[$key]['新款混合'], $y3); } } } elseif ($v['main_attr'] == '精装版女款新款') { $main_attr = '新女款'; $n = floor($v['total'] / 12); for ($i = 0; $i < $n; $i++) { $cc = []; $cc['main_attr'] = $main_attr; $cc['sec_attr'] = $v['sec_attr']; $cc['size'] = $v['size']; $cc['num'] = 12; array_push($d[$key]['新女款'], $cc); } if ($v['total'] % 12 > 0) { $t4 = $v['total'] % 12; if ($x4 + $t4 >= 12) { $x4 = $x4 + $t4 - 12; $z4['main_attr'] = $main_attr; $z4['sec_attr'] = $v['sec_attr']; $z4['size'] = $v['size']; $z4['num'] = $t4- $x4; if ($y4) { array_pop($d[$key]['新女款混合']); } array_push($y4, $z4); $z4 = []; array_push($d[$key]['新女款混合'], $y4); $y4 = []; if ($x4 > 0) { $z4['main_attr'] = $main_attr; $z4['sec_attr'] = $v['sec_attr']; $z4['size'] = $v['size']; $z4['num'] = $x4; array_push($y4, $z4); array_push($d[$key]['新女款混合'], $y4); } } else { $x4 += $t4; $z4['main_attr'] = $main_attr; $z4['sec_attr'] = $v['sec_attr']; $z4['size'] = $v['size']; $z4['num'] = $v['total'] % 12; if ($y4) { array_pop($d[$key]['新女款混合']); } array_push($y4, $z4); array_push($d[$key]['新女款混合'], $y4); } } } elseif ($v['main_attr'] == '抗菌袜') { $main_attr = '抗菌袜'; $n = floor($v['total'] / 6); for ($i = 0; $i < $n; $i++) { $six_arr[]=[ 'main_attr'=>$main_attr, 'sec_attr'=>$v['sec_attr'], 'size'=> $v['size'], 'num'=>6, ]; } $yu=$v['total']%6; if ($yu==3){ $six_arr[]=[ 'main_attr'=>$main_attr, 'sec_attr'=>$v['sec_attr'], 'size'=> $v['size'], 'num'=>3, ]; }elseif ($yu<3 && $yu>0){ $sel_arr[]=[ 'main_attr'=>$main_attr, 'sec_attr'=>$v['sec_attr'], 'size'=> $v['size'], 'num'=>$yu, ]; }elseif($yu>3){ $six_arr[]=[ 'main_attr'=>$main_attr, 'sec_attr'=>$v['sec_attr'], 'size'=> $v['size'], 'num'=>3, ]; $sel_arr[]=[ 'main_attr'=>$main_attr, 'sec_attr'=>$v['sec_attr'], 'size'=> $v['size'], 'num'=>$yu-3, ]; } $d[$key]['抗菌袜'] = $six_arr; $d[$key]['抗菌袜混合'] = [$sel_arr]; } else { $n = floor($v['total'] / 6); if ($v['main_attr'] == '大卫博士高腰版') { $main_attr = '高腰版'; } elseif ($v['main_attr'] == '大卫博士简约版') { $main_attr = '简'; } elseif ($v['main_attr'] == '高腰版新款') { $main_attr = '新高'; } elseif($v['main_attr']=='大卫博士纯棉老人版') { $main_attr = '棉'; }else{ $main_attr='青'; } for ($i = 0; $i < $n; $i++) { $cc = []; $cc['main_attr'] = $main_attr; $cc['sec_attr'] = $v['sec_attr']; $cc['size'] = $v['size']; $cc['num'] = 6; array_push($d[$key]['普通'], $cc); } if ($v['total'] % 6 > 0) { $t = $v['total'] % 6; if ($x + $t >= 6) { $x = $x + $t - 6; $z['main_attr'] = $main_attr; $z['sec_attr'] = $v['sec_attr']; $z['size'] = $v['size']; $z['num'] = $t - $x; if ($y) { array_pop($d[$key]['普通混合']); } array_push($y, $z); $z = []; array_push($d[$key]['普通混合'], $y); $y = []; if ($x > 0) { $z['main_attr'] = $main_attr; $z['sec_attr'] = $v['sec_attr']; $z['size'] = $v['size']; $z['num'] = $x; array_push($y, $z); array_push($d[$key]['普通混合'], $y); } } else { $x += $t; $z['main_attr'] = $main_attr; $z['sec_attr'] = $v['sec_attr']; $z['size'] = $v['size']; $z['num'] = $v['total'] % 6; if ($y) { array_pop($d[$key]['普通混合']); } array_push($y, $z); array_push($d[$key]['普通混合'], $y); } } } } } return $this->success($d); } public function judge_status($status) { if ($status == 0) { $text = '待订单审核'; } elseif ($status == 1) { $text = '待财务审核'; } elseif ($status == 2) { $text = '待发货审核'; } elseif ($status == 3) { $text = '待收货'; } elseif ($status == 4) { $text = '已完成'; }elseif ($status == 5) { $text = '已作废'; } return $text; } public function judge_pay_status($status) { if ($status == 0) { $text = '未付款'; } elseif ($status == 1) { $text = '部分付款'; } elseif ($status == 2) { $text = '已付款'; } elseif ($status == 3) { $text = '待退款'; } return $text; } public function DelNum($id){ $data=OrderDetail::where('order_id',$id)->select('goods_unit','goods_name',DB::raw('SUM(num) as total'))->groupBy('goods_unit','goods_name')->get(); $order=Order::where('id',$id)->value('created_at'); // $activity_id=Activity::where('start_time','<',$order)->where('end_time','>',$order)->value('id'); $activity_id=10; $gift_sh=Gifts::where('activity_id',$activity_id)->where('name','like',"%手环")->first(); $gift_xl=Gifts::where('activity_id',$activity_id)->where('name','like',"%项链")->first(); $shuzi=Gifts::where('activity_id',$activity_id)->where('name','like',"%梳子")->first(); // $gift_sj=Gifts::where('activity_id',$activity_id)->where('name','like',"%丝巾")->first(); $gift_wz=Gifts::where('activity_id',$activity_id)->where('name','like',"%袜子")->first(); // $gift_card=Gifts::where('name','like',"%卡%")->where('id',12)->first(); $gift_card=Gifts::where('activity_id',$activity_id)->where('name','like',"%卡%")->first(); // $gift=OrderGift::where('order_id',$id)->first(); $shou_num=0;//手提替 $shou_num_w=0;//手提替 $shouwa_num=0;//袜子袋 $shouwa_num_w=0;//袜子袋 $fei_num=0;//飞机盒 $fei_num_w=0;//飞机盒 $zao_num=0;//肥皂 $zao_num_w=0;//肥皂 $re=[]; $re_w=[]; foreach ($data as $k=>$v){ if ($v->goods_unit=='盒'){ $shou_num+=$v->total;//手提袋 $fei_num+=$v->total; $zao_num+=$v->total;//肥皂 }elseif ($v->goods_unit=='件'){ if ($v->goods_name=='爱丫丫抗菌袜' || $v->goods_name =='爱丫丫抗菌袜下单'){ $shouwa_num+=$v->total*4; }else{ $shou_num+=$v->total*4; } } } if ($fei_num){ $m=floor($fei_num/12); $n=$fei_num%12; if ($n<=4){ $n=0; }elseif($n>4 && $n<=8){ $n=1; }else{ $n=2; } $fei_num=$m*2+$n; } $str=[]; $str_w=0; //手提袋 if (floor($shou_num/250)>0){ for ($i=0;$i0){ $str[]='袋'.$n; $str_w+=$n*0.049; } }else{ $re[]='袋'.$n; $re_w[]=round($n*0.049,2); } }else{ $n=$shou_num%250; if ($n<200){ if ($n>0){ $str[]='袋'.$n; $str_w+=$n*0.049; } }else{ $re[]='袋'.$n; $re_w[]=round($n*0.049,2); } } if (floor($zao_num/120)>0){ for ($i=0;$i0){ $str[]='皂'.$n; $str_w+=$n*0.107; } }else{ $re[]='皂'.$n; $re_w[]=round($n*0.107,2); } $m='肥皂'.floor($zao_num/120).'箱'; }else{ $n=$zao_num%120; if ($n<50){ if ($n>0){ $str[]='皂'.$n; $str_w+=$n*0.107; } }else{ $re[]='皂'.$n; $re_w[]=round($n*0.107,2); } } if (floor($fei_num/115)>0){ for ($i=0;$i0){ $str[]='盒'.$n; $str_w+=$n*0.11; } }else{ $re[]='盒'.$n; $re_w[]=round($n*0.11,2); } }else{ $n=$fei_num%115; if ($n<80){ if ($n>0){ $str[]='盒'.$n; $str_w+=$n*0.11; } }else{ $re[]='盒'.$n; $re_w[]=round($n*0.11,2); } } //neikushouhuan if ($gift_sh){ $gift=OrderGift::where('order_id',$id)->where('gift_id',$gift_sh->id)->first(); if ($gift){ if (floor($gift->num/800)>0){ for ($i=0;$inum/800);$i++){ $re[]='手环800(1箱)'; $re_w[]=round(800*0.007,2); } $n=$gift->num%800; if ($n<600){ if ($n>0){ $str[]='手环'.$n; $str_w+=$n*0.007; } }else{ $re[]='手环'.$n; $re_w[]=round($n*0.007,2); } }else{ $n=$gift->num%800; if ($n<600){ if ($n>0){ $str[]='手环'.$n; $str_w+=$n*0.007; } }else{ $re[]='手环'.$n; $re_w[]=round($n*0.007,2); } } } } if ($gift_xl){ $gift=OrderGift::where('order_id',$id)->where('gift_id',$gift_xl->id)->first(); if ($gift){ if (floor($gift->num/500)>0){ for ($i=0;$inum/500);$i++){ $re[]='项链500(1箱)'; } $n=$gift->num%500; if ($n<300){ if ($n>0){ $str[]='项链'.$n; } }else{ $re[]='项链'.$n; } }else{ $n=$gift->num%500; if ($n<300){ if ($n>0){ $str[]='项链'.$n; } }else{ $re[]='项链'.$n; } } } } if ($gift_card){ $gift=OrderGift::where('order_id',$id)->where('gift_id',$gift_card->id)->first(); if ($gift){ if (floor($gift->num/10000)>0){ for ($i=0;$inum/10000);$i++){ $re[]='远红外卡10000(1箱)'; } $n=$gift->num%10000; if ($n>0){ $str[]='红外卡'.$n; } }else{ $n=$gift->num%10000; if ($n>0){ $str[]='红外卡'.$n; } } } } // if ($gift_sj){ // $gift=OrderGift::where('order_id',$id)->where('gift_id',$gift_sj->id)->first(); // if ($gift){ // if (floor($gift->num/300)>0){ // for ($i=0;$inum/300);$i++){ // $re[]='丝巾300(1箱)'; // } // $n=$gift->num%300; // if ($n>0){ // $str.='+丝巾'.$n; // } // }else{ // $n=$gift->num%300; // if ($n>0){ // $str.='+丝巾'.$n; // } // } // } // // } $sttt=''; if ($gift_wz){ $gift=OrderGift::where('order_id',$id)->where('gift_id',$gift_wz->id)->first(); if ($gift){ if (floor($gift->num/240)>0){ for ($i=0;$inum/240);$i++){ $re[]='袜子240(1箱)'; } $n=$gift->num%240; if ($n<100){ if ($n>0){ $str[]='袜子'.$n; } }else{ $re[]='袜子'.$n; } }else{ $n=$gift->num%240; if ($n<100){ if ($n>0){ $str[]='袜子'.$n; } }else{ $re[]='袜子'.$n; } } } } // if ($gift){ // if (floor($gift->num/900)>0){ // for ($i=0;$inum/900);$i++){ // $re[]='手环900(1箱)'; // } // $n=$gift->num%900; // if ($n>0){ // $str.='+手环'.$n; // } // }else{ // $n=$gift->num%900; // if ($n>0){ // $str.='+手环'.$n; // } // } // } // if (floor($zao_num/180)>0){ // $n=$shou_num%180; // if ($n>0){ // // $str.='错误皂'.($n-($zao_num%180)).'+'; // } // } if (count($str)!=0){ $re[]=implode('+',$str); $re_w[]=round($str_w,2); } $str_s=[]; $str_sw=0; if ($shouwa_num>0){ while ($shouwa_num > 0) { if ($shouwa_num >= 350) { $re[] = '袜袋350'; $re_w[]=round(350*0.045,2); $shouwa_num -= 350; } // elseif ($shouwa_num >= 170) { // $re[] = '袜袋170'; // $shouwa_num -= 170; // } elseif ($shouwa_num >= 60) { // $re[] = '袜袋60'; // $shouwa_num -= 60; // } else { if ($shouwa_num>0){ if ($shouwa_num>250){ $re []= '袜袋'.$shouwa_num; $re_w[]=round($shouwa_num*0.045,2); }else{ $str_s []= '袜袋'.$shouwa_num; $str_sw+=$shouwa_num*0.045; } // 如果剩余物品小于 60 个 $shouwa_num = 0; } } } } $A_yaya_arr=[]; // if ($gift_sh){ // $gift=OrderGift::where('order_id',$id)->where('gift_id',$gift_sh->id)->first(); // if ($gift){ // if (floor($gift->num/900)>0){ // for ($i=0;$inum/900);$i++){ // $re[]='爱丫丫手环900(1箱)'; // $re_w[]=round(900*0.007,2); // } // $n=$gift->num%900; // if ($n<600){ // if ($n>0){ // $str_s[]='爱丫丫手环'.$n; // $str_sw+=$n*0.007; // } // // }else{ // $re[]='爱丫丫手环'.$n; // $re_w[]=round($n*0.007,2); // } // }else{ // $n=$gift->num%900; // if ($n<600){ // if ($n>0){ // $str_s[]='爱丫丫手环'.$n; // $str_sw+=$n*0.007; // } // // }else{ // $re[]='爱丫丫手环'.$n; // $re_w[]=round($n*0.007,2); // } // } // } // // } if ($shuzi){ $gift=OrderGift::where('order_id',$id)->where('gift_id',$shuzi->id)->first(); if ($gift){ if (floor($gift->num/300)>0){ for ($i=0;$inum/300);$i++){ $re[]='梳子300(1箱)'; $re_w[]=round(300*0.038,2); } $n=$gift->num%300; if ($n<200){ if ($n>0){ $str_s[]='梳子'.$n; $str_sw+=$n*0.038; } }else{ $re[]='梳子'.$n; $re_w[]=round($n*0.038,2); } }else{ $n=$gift->num%300; if ($n<200){ if ($n>0){ $str_s[]='梳子'.$n; $str_sw+=$n*0.038; } }else{ $re[]='梳子'.$n; $re_w[]=round($n*0.038,2); } } } } if (count($str_s)!=0){ $re[]=implode('+',$str_s); $re_w[]=round($str_sw,2); } // if (mb_strlen($str_s)>0){ // $re[]=$str_s; // } // if (mb_strlen($sttt)>0){ // $re[]=$sttt; // } return [$re,$re_w]; } /* * 订单详情 * */ public function order_detail(Request $request) { $order_num = $request->order_num; $order = Order::where('order_num', $order_num)->with(['get_order_log'=>function($q){ $q->orderByDesc('created_at'); }, 'get_address', 'get_order_remark', 'get_user', 'get_order_gift'])->with(['belong_user:nickname,id,mobile,realname,uuid'])->first()->toArray(); $order_detail = Orderdetail::where('order_id', $order['id'])->orderByDesc('created_at')->get(); $data = []; foreach ($order_detail as $k => $v) { $good = Goods::find($v->goods_id); $data['goods_detail'][$k]['name'] = $good->name; $data['goods_detail'][$k]['main_img'] = $good->main_img; $data['goods_detail'][$k]['size'] = $good->size; $data['goods_detail'][$k]['unit'] = $good->unit; $data['goods_detail'][$k]['money'] = $v->money; $data['goods_detail'][$k]['num'] = $v->num; $data['goods_detail'][$k]['id'] = $v->goods_id; $data['goods_detail'][$k]['detail_id'] = $v->id; $data['goods_detail'][$k]['goods_price'] = $v->goods_price; $data['goods_detail'][$k]['remark'] = $v->remark == null ? '' : $v->remark; } $order['get_user']['mobile']=$order['get_user']['uuid']; $order['belong_user']['mobile']=$order['belong_user']['uuid']; $all = array_merge($order, $data); return $this->success($all); } /*地址管理---展示地址*/ public function show_address(Request $request) { $id = $request->user_id; $address = Address::where('user_id', $id)->with(['belong_user:id,nickname,level,mobile,realname'])->where('is_deleted',0)->get(); $data = []; foreach ($address as $k => $v) { $data[$k]["id"] = $v->id; $data[$k]["con_name"] = $v->username == null ? '' : $v->username; $data[$k]["con_mobile"] = $v->mobile; $data[$k]["provice"] = $v->province; $data[$k]["city"] = $v->city; $data[$k]["area"] = $v->town; $data[$k]["address"] = $v->address; $data[$k]["belong_user"]=$v->belong_user; } // Log::error(json_encode($data)); return $this->success_list($data); } /* *修改订单地址 */ public function update_address(Request $request) { $address = Address::find($request->address_id); $add=Address::where('province',$request->province) ->where('user_id',$address->user_id) ->where('city',$request->city) ->where('town',$request->area) ->where('address',$request->address) ->where('mobile',$request->mobile) ->where('username',$request->name)->first(); if(!empty($add) && $add->id!=$request->address_id){ return $this->error('450001','当前地址信息已存在'); } $address->province = $request->province; $address->city = $request->city; $address->town = $request->area; $address->address = $request->address; $address->mobile =$request->mobile; $address->username = $request->name; $row=$address->save(); if($row){ return $this->success([]); }else{ return $this->error(); } } /*地址管理-----新增地址*/ public function add_address(Request $request, Address $address) { $id = $request->user_id; $add=Address::where('province',$request->province) ->where('user_id',$id) ->where('city',$request->city) ->where('town',$request->area) ->where('address',$request->address) ->where('mobile',$request->mobile) ->where('username',$request->name)->first(); if($add){ return $this->error('450001','当前地址信息已存在'); } $address->user_id = $id; $address->username = $request->name; $address->mobile = $request->mobile; $user=User::where('mobile',$request)->first(); $id=$request->user_id; if ($user){ $id=$user->id; } $address->uid=$id; $address->province = $request->province; $address->city = $request->city; $address->town = $request->area; $address->address = $request->address; $address->save(); return $this->success(['id' => $address->id]); } public function order_address(Request $request) { $order = Order::find($request->order_id); $order->address_id = $request->address_id; $address=Address::find($request->address_id); $order->good_user_id = $address->uid; $order->save(); return $this->success([]); } public function down_load(Request $request) { ini_set('memory_limit', '1024M'); $input = $request->all(); if ($request->has('provice')){ $input = $request->all(); $page_index = $input['page_index']; $page_size = $input['page_size']; $num = ($page_index - 1) * $page_size; $order_no = $input['order_no']; $start_time = $input['start_time']; $activity_id = $input['activity_id']; $end_time = $input['end_time']; $user_name = $input['user_name']; $receive_info = $input['receive_info']; $goods_info = $input['goods_info']; $province=$input['provice']; $city=$input['city']; $town=$input['area']; if ($request->has('order_status')) { $order_status = $input['order_status']; } else { $order_status = []; } if ($request->has('pay_status')) { $pay_status = $input['pay_status']; } else { $pay_status = []; } $order_type = $input['order_type']; $data = Order::with(['get_user'=>function($query){ $query->with(['warea:id,admin_name'])->select('id','nickname','realname','name','uuid','warea_id','mobile'); },'get_order_gift']) ->with(['get_address:id,username,mobile,address,province,city,town,address_code,mobile_code']) ->with(['belong_user:id,realname,mobile']) ->with(['get_store:name,id']); if ($order_no) { $data->where('order_num', $order_no); } if ($start_time && $end_time && empty($activity_id)) { $data->whereBetween('created_at', [$start_time, $end_time]); } // if($activity_id){ // $data->where('activity_id',$activity_id); // } if($activity_id){ $actice=Activity::find($activity_id); $data->whereBetween('created_at',[$actice->start_time,$actice->end_time]); } if ($user_name) { $user_id = $this->getUserNameIds($user_name); $data->whereIn('user_id', $user_id); } if ($receive_info) { $address_ids = $this->getReceiveAddressIds($receive_info); $data->whereIn('address_id', $address_ids); } if($province && $province!='省'){ $province_ids=$this->getProvinceIds($province); $data->whereIn('address_id', $province_ids); } if($city && $city!='市'){ $city_ids=$this->getCityIds($city); $data->whereIn('address_id', $city_ids); } if($town && $town!='区'){ $town_ids=$this->getTownIds($town); $data->whereIn('address_id', $town_ids); } //商品信息 if ($goods_info) { $order_ids = $this->getGoodsOrderIds($goods_info); $data->whereIn('id', $order_ids); } if ($order_status) { if (!in_array('-1', $order_status)) { if (!in_array('5', $order_status)) { $data->whereIn('status', $order_status)->where('is_deleted', 0); } else { $data->where('is_deleted', 1) ->orWhere(function ($query) use ($order_status) { $query->where('is_deleted', 0) ->whereIn('status', $order_status); }); } } } if ($pay_status) { if (!in_array('-1', $pay_status)) { $data->whereIn('pay_status', $pay_status); } } if (in_array($order_type, [0, 1])) { $data->where('order_type', $order_type); } $list = $data->orderBy('id', 'desc')->get(); }else{ if ($request->has('id')) { $list = Order:: with(['get_user'=>function($query){ $query->with(['warea:id,admin_name'])->select('id','nickname','name','realname','warea_id','mobile','uuid'); },'get_order_gift']) // with(['get_user:id,nickname,mobile,realname','get_order_gift']) ->with(['get_address:id,username,mobile,address,province,city,town,address_code,mobile_code']) ->with(['belong_user:id,realname,mobile,nickname']) ->with(['get_store:name,id'])->whereIn('id', $request->id)->get(); } else { $order_no = $input['order_no']; $start_time = $input['start_time']; $end_time = $input['end_time']; $activity_id = $input['activity_id']; $search_name = $input['search_name']; $data = Order::with(['get_user'=>function($query){ $query->with(['warea:id,admin_name'])->select('id','nickname','name','realname','uuid','warea_id','mobile'); },'get_order_gift']) ->with(['belong_user:id,realname,mobile,nickname']) ->with(['get_address:id,username,mobile,mobile_code,address_code,address,province,city,town']); if ($request->has('order_status')) { $order_status = $input['order_status']; } else { $order_status = []; } if ($order_status || $order_status == 0) { if ('-1' == $order_status) { $data->whereIn('is_deleted', [0, 1]); } elseif ($order_status == 5) { $data->where('is_deleted', 1); } elseif ($order_status == 0) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 1) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 2) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 3) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 4) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 6) { $data->whereIn('pay_status', [0, 1])->where('is_deleted', 0); } } if ($order_no) { $data->where('order_num','like', '%'.$order_no.'%'); } if ($search_name){ // $s=substr(trim($search_name),0,4); // if($s=='DWBS'){ // $data->where('order_num',trim($search_name)); // }else{ $ids=$this->getUserIds($search_name); $data->whereIn('user_id', $ids); // } } if ($start_time && $end_time && empty($activity_id)) { $data->whereBetween('created_at', [$start_time, $end_time]); } if($activity_id){ $actice=Activity::find($activity_id); $data->whereBetween('created_at',[$actice->start_time,$actice->end_time]); } $count = $data->count(); if ($count <= 0) { $this->error('450001', '暂无信息'); } $list = $data->orderBy('id', 'desc')->get(); } } $i = 0; $re = []; foreach ($list as $k => $v) { $order_detail = Orderdetail::where('order_id', $v->id)->get(); foreach ($order_detail as $keys => $values) { // $order_detail = Orderdetail::where('order_id', $v->id)->where('goods_name', $values->goods_name)->get(); $re[$i]['订单编号'] = $v->order_num; $re[$i]['下单时间'] = $v->created_at->toDateTimeString(); if ($v->get_user->warea){ $re[$i]['所属客服'] = $v->get_user->warea->admin_name; }else{ $re[$i]['所属客服'] =''; } if ($v->is_deleted==1){ $re[$i]['订单状态'] = $this->judge_status(5); }else{ $re[$i]['订单状态'] = $this->judge_status($v->status); } $re[$i]['支付状态'] = $this->judge_pay_status($v->pay_status); $re[$i]['体验店或专车']=''; if ($v->get_store){ $re[$i]['体验店或专车'] =$v->get_store->name; }else{ if ($v->is_car){ $re[$i]['体验店或专车'] ='专车'; } } $re[$i]['备注昵称'] = $v->get_user->name; $re[$i]['下单人手机号'] = $v->get_user->uuid; $re[$i]['下单人姓名'] = $v->get_user->realname; $re[$i]['商品名称'] = $values->goods_name; $re[$i]['产品规格'] = '尺码:' . $values->goods_size; $re[$i]['产品数量'] = $values->num; $re[$i]['商品价格'] = $values->goods_price; $re[$i]['金额小计'] = $values->money; $re[$i]['收货人姓名'] = $v->get_address->username; $re[$i]['收货人联系方式'] = $v->get_address->mobile; $re[$i]['收货人省份'] = $v->get_address->province; $re[$i]['收货人城市'] = $v->get_address->city; $re[$i]['收货人地区'] = $v->get_address->town; $re[$i]['收货人地址'] =$v->get_address->address; $re[$i]['物流单号'] = $v->track_number == null ? '' : $v->track_company; $re[$i]['物流公司'] = $v->track_company == null ? '' : $v->track_company; $re[$i]['物流备注'] = $v->track_remark == null ? '' : $v->track_remark; $re[$i]['发货时间'] = $v->track_time == null ? '' : $v->track_time; $re[$i]['订单备注'] = $this->getOrderRemark($v->id); if ($v->is_deleted==1){ if ($v->destroy_cause){ $re[$i]['订单备注'] =$v->destroy_cause; } } $re[$i]['赠品信息'] = ''; if ($v->belong_user){ $re[$i]['所属'] = '('.$v->belong_user->realname.','.$v->belong_user->mobile.','.$v->belong_user->nickname.')'; }else{ $re[$i]['所属'] = ''; } if(count($v->get_order_gift)>0){ foreach($v->get_order_gift as $key =>$val){ if($val->pivot->num>0){ if(empty($re[$i]['赠品信息'])){ $re[$i]['赠品信息'] .=$val->name.$val->pivot->num; }else{ $re[$i]['赠品信息'] .=','.$val->name.$val->pivot->num; } } } // $re[$i]['赠品信息'] = json_encode($order_gift,JSON_UNESCAPED_UNICODE); } $i++; } } return $this->success_list($re); } public function order_list_down(Request $request) { ini_set('memory_limit', '4096M'); $input = $request->all(); if (!$request->has('id')) {//多条件搜索导出 $order_no = $input['order_no']; $start_time = $input['start_time']; $end_time = $input['end_time']; $search_name=[]; if ($request->has('search_name')){ $search_name = $input['search_name']; }else{ if ($request->has('user_name')){ $search_name=$input['user_name']; } } if ($request->has('pay_status')) { $pay_status = $input['pay_status']; } else { $pay_status = []; } if ($request->has('receive_info')){ $receive_info = $input['receive_info']; $goods_info = $input['goods_info']; $province=$input['provice']; $city=$input['city']; $town=$input['area']; $order_type=$input['order_type']; }else{ $receive_info=[]; $goods_info=[]; $province=[]; $city=[]; $town=[]; $order_type=[]; } $activity_id = $input['activity_id']; DB::enableQueryLog(); $data = Order::with(['get_user'=>function($query){ $query->with(['warea:id,admin_name'])->select('id','nickname','name','realname','warea_id'); }]) ->with(['get_address:id,username,mobile,address,province,city,town,mobile_code']) ->with(['get_store:name,id']) ->with(['belong_user:realname,id,mobile']); $admin=Auth::user(); if($admin->role_id==23){ $warea_ids = Warea::where('admin_id',$admin->id)->pluck('id'); $data->whereHas('get_user', function($query) use ($warea_ids){ $query->whereIn('warea_id',$warea_ids)->select('id','nickname','name','realname'); }); } if ($request->has('order_status')) { $order_status = $input['order_status']; } else { $order_status = []; } if (is_array($order_status)){ $data->where('is_deleted', 0)->whereIn('status', $order_status); }else{ if ($order_status || $order_status == 0) { if ('-1' == $order_status) { $data->whereIn('is_deleted', [0, 1]); } elseif ($order_status == 5) { $data->where('is_deleted', 1); } elseif ($order_status == 0) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 1) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 2) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 3) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 4) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 6) { $data->whereIn('pay_status', [0, 1])->where('is_deleted', 0); } } } if ($order_no) { $data->where('order_num','like', '%'.$order_no.'%'); } if ($search_name){ // $s=substr(trim($search_name),0,4); // if($s=='DWBS'){ // $data->where('order_num',trim($search_name)); // }else{ $ids=$this->getUserIds($search_name); $data->whereIn('user_id', $ids); // } } if ($start_time && $end_time && empty($activity_id)) { $data->whereBetween('created_at', [$start_time, $end_time]); } if($activity_id){ $actice=Activity::find($activity_id); $data->whereBetween('created_at',[$actice->start_time,$actice->end_time]); } if ($receive_info) { $address_ids = $this->getReceiveAddressIds($receive_info); $data->whereIn('address_id', $address_ids); } if($province && $province!='省'){ $province_ids=$this->getProvinceIds($province); $data->whereIn('address_id', $province_ids); } if($city && $city!='市'){ $city_ids=$this->getCityIds($city); $data->whereIn('address_id', $city_ids); } if($town && $town!='区'){ $town_ids=$this->getTownIds($town); $data->whereIn('address_id', $town_ids); } //商品信息 if ($goods_info) { $order_ids = $this->getGoodsOrderIds($goods_info); $data->whereIn('id', $order_ids); } // if ($order_status) { // if (!in_array('-1', $order_status)) { // if (!in_array('5', $order_status)) { // $data->whereIn('status', $order_status)->where('is_deleted', 0); // } else { // $data->where('is_deleted', 1) // ->orWhere(function ($query) use ($order_status) { // $query->where('is_deleted', 0) // ->whereIn('status', $order_status); // }); // } // } // } if ($pay_status) { if (!in_array('-1', $pay_status)) { $data->whereIn('pay_status', $pay_status); } } if ($order_type){ if (in_array($order_type, [0, 1])) { $data->where('order_type', $order_type); } } // dd(DB::getQueryLog()); }else{ $data = Order::with(['get_user'=>function($query){ $query->with(['warea:id,admin_name'])->select('id','nickname','name','realname','warea_id'); }]) ->with(['get_address:id,username,mobile,address,province,city,town,mobile_code']) ->with(['get_store:name,id']) ->with(['belong_user:realname,id,mobile']) ->whereIn('id',$request->id); } $list = $data->orderBy('id', 'desc')->get(); foreach ($list as $key => $val) { $list[$key]['remark'] = $this->getOrderRemark($val['id']); if (!empty($val->track_number)) { $list[$key]['express'] = $this->express($val->track_company, $val->track_number); } $list[$key]->get_address->mobile=$val->get_address->mobile; $good_unit=Orderdetail::where('order_id',$val['id'])->select('goods_unit',DB::raw('SUM(num) as total'))->groupBy('goods_unit')->pluck('total','goods_unit'); $num_hard=0; if (isset($good_unit['盒'])){ $num_hard=ceil($good_unit['盒']/12); } $num_old=0; if (isset($good_unit['件'])){ $num_old=ceil($good_unit['件']/6); } $pei=$this->DelNum($val['id']); $x_num=count($pei[0])+$num_hard+$num_old; $list[$key]['x_arr']=[ 'peijian'=>array_count_values($pei[0]), 'peijians'=>$pei[0], 'good'=>['hard'=>$num_hard,'other'=>$num_old], 'num'=>$x_num ]; } $all=[ 'list'=>$list, ]; return $this->success($all,'获取数据成功'); } //多条件查询订单列表 public function getConditionsOrderList(Request $request) { $input = $request->all(); $page_index = $input['page_index']; $page_size = $input['page_size']; $num = ($page_index - 1) * $page_size; $order_no = $input['order_no']; $start_time = $input['start_time']; $end_time = $input['end_time']; $user_name = $input['user_name']; $receive_info = $input['receive_info']; $goods_info = $input['goods_info']; $activity_id=$input['activity_id']; $province=$input['provice']; $city=$input['city']; $town=$input['area']; if ($request->has('order_status')) { $order_status = $input['order_status']; } else { $order_status = []; } if ($request->has('pay_status')) { $pay_status = $input['pay_status']; } else { $pay_status = []; } $order_type = $input['order_type']; $data = Order::with(['get_user'=>function($query){ $query->with(['warea:id,admin_name'])->select('id','nickname','realname','warea_id','remark_name as name'); },'get_order_gift']) ->with(['get_address:id,username,mobile,address,province,city,town'])->with(['get_store:name,id']); $admin=Auth::user(); if($admin->role_id==23){ $warea_ids = Warea::where('admin_id',$admin->id)->pluck('id'); $data->whereHas('get_user', function($query) use ($warea_ids){ $query->whereIn('warea_id',$warea_ids)->select('id','nickname','realname'); }); } if ($order_no) { $data->where('order_num', $order_no); } if ($start_time && $end_time && empty($activity_id)) { $data->whereBetween('created_at', [$start_time, $end_time]); } if($activity_id){ $actice=Activity::find($activity_id); $data->whereBetween('created_at',[$actice->start_time,$actice->end_time]); } if ($user_name) { $user_id = $this->getUserNameIds($user_name); $data->whereIn('user_id', $user_id); } if ($receive_info) { $address_ids = $this->getReceiveAddressIds($receive_info); Log::error($address_ids); $data->whereIn('address_id', $address_ids); } if($province && $province!='省'){ $province_ids=$this->getProvinceIds($province); $data->whereIn('address_id', $province_ids); } if($city && $city!='市'){ $city_ids=$this->getCityIds($city); $data->whereIn('address_id', $city_ids); } if($town && $town!='区'){ $town_ids=$this->getTownIds($town); $data->whereIn('address_id', $town_ids); } //商品信息 if ($goods_info) { $order_ids = $this->getGoodsOrderIds($goods_info); $data->whereIn('id', $order_ids); } if ($order_status) { if (!in_array('-1', $order_status)) { if (!in_array('5', $order_status)) { $data->whereIn('status', $order_status)->where('is_deleted', 0); } else { $data->where('is_deleted', 1) ->orWhere(function ($query) use ($order_status) { $query->where('is_deleted', 0) ->whereIn('status', $order_status); }); } } } if ($pay_status) { if (!in_array('-1', $pay_status)) { $data->whereIn('pay_status', $pay_status); } } if (in_array($order_type, [0, 1])) { $data->where('order_type', $order_type); } $count = $data->count(); if ($count <= 0) { $this->error('450001', '暂无信息'); } $list = $data->orderBy('id', 'desc')->skip($num)->take($page_size)->get(); $exp = 1; if ($exp == 1) { foreach ($list as $key => $val) { // $list[$key]['remarks'] = $this->getOrderRemark($val['id']); $good_unit=Orderdetail::where('order_id',$val['id'])->select('goods_unit',DB::raw('SUM(num) as total'))->groupBy('goods_unit')->pluck('total','goods_unit'); $num_hard=0; if (isset($good_unit['盒'])){ $num_hard=ceil($good_unit['盒']/12); } $num_old=0; if (isset($good_unit['件'])){ $num_old=ceil($good_unit['件']/6); } $pei=$this->DelNum($val['id']); $x_num=count($pei[0])+$num_hard+$num_old; $list[$key]['x_arr']=[ 'peijian'=>array_count_values($pei[0]), 'peijians'=>$pei[0], 'good'=>['hard'=>$num_hard,'other'=>$num_old], 'num'=>$x_num ]; } } return $this->success_list($list, '获取数据成功', $count); } //获取省Ids public function getProvinceIds($province){ return Address::where('province',$province)->pluck('id'); } //获取市Ids public function getCityIds($city){ return Address::where('city',$city)->pluck('id'); } //获取区Ids public function getTownIds($town){ return Address::where('town',$town)->pluck('id'); } //获取客户Ids public function getUserIds($search=null){ return User::where(function($query) use ($search){ $query->where('nickname','like','%'.$search.'%') ->orwhere('realname','like','%'.$search.'%') ->orwhere('remark_name','like','%'.$search.'%') ->orwhere('mobile',$search); })->pluck('id'); } //获取客户Ids public function getUserIdss($search=null){ return User::where(function($query) use ($search){ $query->where('realname','like','%'.$search.'%') ->orwhere('remark_name','like','%'.$search.'%') ->orwhere('mobile','like','%'.$search.'%'); })->pluck('id'); } //根据名称查询客户信息 public function getUserNameIds($search = null) { return User::where(function($query) use ($search){ $query->where('nickname','like','%'.$search.'%') ->orwhere('realname','like','%'.$search.'%') ->orwhere('mobile','like','%'.$search.'%'); })->pluck('id'); } //根据等级查询客户信息 public function getUserLevelIds($search = null) { return User::where('level', $search) ->pluck('id'); } //根据物流查询客户信息 public function getReceiveAddressIds($search = null) { return Address::where('username', 'like', '%' . $search . '%') ->orWhere('mobile', $search) ->pluck('id'); } //根据商品名称获取订单id public function getGoodsOrderIds($search = null) { return Orderdetail::where('goods_name', 'like', '%' . $search . '%') ->pluck('order_id'); } public function getLikeBAgentGiftBag(Request $request){ // $dd=[ // 'list'=>[], // 'all_money'=>0, // 'total'=>0, // ]; // return $this->success_list($dd,'获取数据成功',0); $dd=[ 'list'=>[], 'all_money'=>0, 'total'=>0, ]; $input=$request->all(); $page_index = $input['page_index']; $page_size = $input['page_size']; $num = ($page_index - 1) * $page_size; $search_name=$input['search_name']; $start_time=$input['start_time']; $end_time=$input['end_time']; $activity_id=$input['activity_id']; if (!$search_name){ if (Auth::user()->role_id==23){ return $this->success_list($dd); } } $where=[];$wheres=[]; if($start_time && $end_time && empty($activity_id)){ $where=function ($query) use ($start_time,$end_time){ $query->whereBetween('order.created_at',[$start_time,$end_time]); }; } $json_data=[]; if($activity_id){ $actice=Activity::find($activity_id); $wheres=function($query) use ($actice){ $query->whereBetween('order.created_at',[$actice->start_time,$actice->end_time]); }; $time=Carbon::now()->timestamp; if ($time>(strtotime($actice->end_time)+30*24*3600)){ if (!$search_name && !$end_time && !$start_time){ $re=ActivityData::where('activity_id',$activity_id)->first(); if (!$re){ $order_user_ids=Order::where($where)->where($wheres)->where('is_deleted',0)->groupBy('user_id')->pluck('user_id')->toArray(); $users=User::where('level',3)->pluck('id')->toArray(); $user_ids=array_unique(array_merge($order_user_ids,$users)); $user=User::select('users.id','users.mobile','users.nickname','users.remark_name as name','users.money','users.realname', DB::raw('SUM(order.money) as account'), DB::raw('SUM(order.pay_money) as pay_account'), DB::raw('SUM(order.no_pay_money) as no_pay_account')) ->leftJoin('order', function($join) use ($start_time,$end_time,$where,$wheres){ $join->on('order.user_id', '=', 'users.id') ->where('order.is_deleted','=','0') ->where($where) ->where($wheres); }) ->whereIn('users.id',$user_ids) ->where(function ($q)use($search_name){ $q->where('users.nickname','like','%'.$search_name.'%') ->orwhere('users.mobile','like','%'.$search_name.'%') ->orwhere('users.realname','like','%'.$search_name.'%') ->orwhere('users.name','like','%'.$search_name.'%'); }) ->groupBy('users.id') ->orderBy('account','desc') ->orderBy('pay_account','desc') ->orderBy('users.id','desc'); $list=$user->get(); $ll=[]; foreach($list as $key=>$val){ $user_id=$val->id; $uu=User::select('users.id','users.nickname','users.remark_name as name','users.realname','gt.main_attr', DB::raw('SUM(od.num) as num')) ->leftJoin('order', function($join) use ($start_time,$end_time,$where,$wheres){ $join->on('order.user_id', '=', 'users.id') ->where('order.is_deleted','=','0') ->where($where) ->where($wheres); }) ->leftJoin('order_detail as od','od.order_id','=','order.id') ->leftjoin('goods_all as gt','gt.id','=','od.goods_id') ->where('users.id',$user_id) ->whereIn('users.id',$user_ids) ->where(function ($q)use($search_name){ $q->where('users.nickname','like','%'.$search_name.'%') ->orwhere('users.mobile','like','%'.$search_name.'%') ->orwhere('users.name','like','%'.$search_name.'%') ->orwhere('users.realname','like','%'.$search_name.'%'); }) ->groupBy('users.id','gt.main_attr') ->orderBy('users.id','desc') ->get(); $ll[$key]['精装版']=0; $ll[$key]['高腰版']=0; $ll[$key]['纯棉老人版']=0; $ll[$key]['简约版']=0; foreach($uu as $k => $v){ if($v->main_attr=="大卫博士高腰版"){ $ll[$key]['高腰版']+=$v->num; }elseif($v->main_attr=="大卫博士精装版"){ $ll[$key]['精装版']+=$v->num; }elseif($v->main_attr=="大卫博士简约版"){ $ll[$key]['简约版']=$v->num; }elseif($v->main_attr=="抗菌袜"){ $ll[$key]['纯棉老人版']=$v->num; }elseif($v->main_attr=="大卫博士青春版"){ $ll[$key]['青春版']=$v->num; }elseif($v->main_attr=="红色贺岁款(精装版)"){ $ll[$key]['红色款']=$v->num; }elseif($v->main_attr=="精装版新款"){ $ll[$key]['精装版']+=$v->num; $ll[$key]['精装版xin']=$v->num; }elseif($v->main_attr=="精装版靓丽款粉色"){ $ll[$key]['精装版']+=$v->num; }elseif($v->main_attr=="精装版靓丽款灰色"){ $ll[$key]['精装版']+=$v->num; }elseif($v->main_attr=="精装版女款新款"){ $ll[$key]['精装版']+=$v->num; }elseif($v->main_attr=="高腰版新款"){ $ll[$key]['高腰版']+=$v->num; } } $ll[$key]['nickname']=$val->name; $ll[$key]['money']=$val->money; $ll[$key]['realname']=$val->realname; $ll[$key]['mobile']=$val->mobile; $ll[$key]['account']=$val->account?$val->account:0; $ll[$key]['pay_account']=round($val->pay_account?$val->pay_account:0,2); $mm=$val->no_pay_account?$val->no_pay_account:0; $ll[$key]['no_pay_account']=round($mm,2); if ($v->account>=300000){ $ll[$key]['accountrebate']=round($val->account*0.95,2); $ll[$key]['acc_status']='0.95'; $ll[$key]['no_pay_account']=round($ll[$key]['accountrebate']-$ll[$key]['pay_account'],2); }else{ $ll[$key]['accountrebate']=$val->account; $ll[$key]['acc_status']='1'; } } $json_data=$ll; $dats=json_encode($ll); $re=new ActivityData(); $re->activity_id=$activity_id; $re->data=$dats; $re->type=0; $re->save(); }else{ $json_data=json_decode($re->data,true); } } } } $order_user_ids=Order::where($where)->where($wheres)->where('is_deleted',0)->groupBy('user_id')->pluck('user_id')->toArray(); $users=User::where('level',3)->pluck('id')->toArray(); $money=User::where('level',3) ->where(function ($q)use($search_name){ $q->where('users.nickname','like','%'.$search_name.'%') ->where('users.name','like','%'.$search_name.'%') ->orwhere('users.mobile','like','%'.$search_name.'%') ->orwhere('users.realname','like','%'.$search_name.'%'); }) ->sum('money'); $user_ids=array_unique(array_merge($order_user_ids,$users)); $user_total=User::select(DB::raw('SUM(order.money) as account'), DB::raw('SUM(order.pay_money) as pay_account'), DB::raw('SUM(order.no_pay_money) as no_pay_account'),'users.id') // ->whereNotIn('users.mobile',$this->phone_Test()) ->leftJoin('order', function($join) use ($start_time,$end_time,$where,$wheres){ $join->on('order.user_id', '=', 'users.id') ->where('order.is_deleted','=','0') ->where($where) ->where($wheres); }) ->whereIn('users.id',$user_ids) ->where(function ($q)use($search_name){ $q->where('users.nickname','like','%'.$search_name.'%') ->where('users.name','like','%'.$search_name.'%') ->orwhere('users.mobile','like','%'.$search_name.'%') ->orwhere('users.realname','like','%'.$search_name.'%'); }) ->get()->toArray(); // // $order_acc=Order::where('is_deleted',0) // ->where($where) // ->where($wheres) // ->whereIn('user_id',$user_idA) // ->select(DB::raw('SUM(order.money) as order_money')) // ->groupBy('user_id') // ->having(DB::raw('SUM(order.money)'),'>=',300000) // ->get(); // $acc_money=$order_acc->sum('order_money'); // $user_total[0]['acc_money']=round($acc_money*0.05,2); // $user_total[0]['pay_account']=round( $user_total[0]['pay_account'],2); // $user_total[0]['yf_money']=round($user_total[0]['account']-$acc_money*0.05,2); // $wf_money=round($user_total[0]['account']-$acc_money*0.05-$user_total[0]['pay_account'],2); // if ($wf_money<0){ // $wf_money=0; // } // $user_total[0]['wf_money']=$wf_money; $ll=[]; // $count=count($json_data); // if ($json_data){ // $dd=[ // 'list'=>$json_data, // 'all_money'=>$money, // 'total'=>$user_total, // ]; // return $this->success_list($dd,'获取数据成功',$count); // } $user=User::select('users.id','users.mobile','users.nickname','users.remark_name as name','users.money','users.realname', DB::raw('SUM(order.money) as account'), DB::raw('SUM(order.pay_money) as pay_account'), DB::raw('SUM(order.no_pay_money) as no_pay_account')) // ->whereNotIn('users.mobile',$this->phone_Test()) ->leftJoin('order', function($join) use ($start_time,$end_time,$where,$wheres){ $join->on('order.user_id', '=', 'users.id') ->where('order.is_deleted','=','0') ->where($where) ->where($wheres); }) ->whereIn('users.id',$user_ids) ->where(function ($q)use($search_name){ $q->where('users.nickname','like','%'.$search_name.'%') ->orwhere('users.mobile','like','%'.$search_name.'%') ->orwhere('users.realname','like','%'.$search_name.'%') ->orwhere('users.name','like','%'.$search_name.'%'); }) ->groupBy('users.id') ->orderBy('account','desc') ->orderBy('pay_account','desc') ->orderBy('users.id','desc'); $count=0; $list=$user->get(); $user_idA=[]; foreach ($list as $ke=>$vas){ $user_idA[]=$vas->id; } $order_acc=Order::where('is_deleted',0) ->where($where) ->where($wheres) ->select(DB::raw('SUM(order.money) as order_money')) ->whereIn('user_id',$user_idA) ->groupBy('order.user_id') ->having(DB::raw('SUM(order.money)'),'>=',300000) ->get(); $acc_money=$order_acc->sum('order_money'); $user_total[0]['acc_money']=round($acc_money*0.05,2); $user_total[0]['pay_account']=round($user_total[0]['pay_account'],2); $user_total[0]['yf_money']=round($user_total[0]['account']-$acc_money*0.05,2); // $wf_money=round($user_total[0]['account']-$acc_money*0.05-$user_total[0]['pay_account'],2); // if ($wf_money<0){ // $wf_money=0; // } $wf_money=0; foreach($list as $key=>$val){ $user_id=$val->id; $uu=User::select('users.id','users.nickname','users.remark_name as name','users.realname','gt.main_attr', DB::raw('SUM(od.num) as num')) // ->whereNotIn('users.mobile',$this->phone_Test()) ->leftJoin('order', function($join) use ($start_time,$end_time,$where,$wheres){ $join->on('order.user_id', '=', 'users.id') ->where('order.is_deleted','=','0') ->where($where) ->where($wheres); }) ->leftJoin('order_detail as od','od.order_id','=','order.id') ->leftjoin('goods_all as gt','gt.id','=','od.goods_id') ->where('users.id',$user_id) ->groupBy('gt.main_attr') ->orderBy('users.id','desc') ->get(); $ll[$key]['精装版']=0; $ll[$key]['高腰版']=0; $ll[$key]['简约版']=0; $ll[$key]['纯棉老人版']=0; foreach($uu as $k => $v){ if($v->main_attr=="大卫博士高腰版"){ $ll[$key]['高腰版']+=$v->num; }elseif($v->main_attr=="大卫博士精装版"){ $ll[$key]['精装版']+=$v->num; }elseif($v->main_attr=="精装版靓丽款灰色"){ $ll[$key]['精装版']+=$v->num; }elseif($v->main_attr=="精装版靓丽款粉色"){ $ll[$key]['精装版']+=$v->num; }elseif($v->main_attr=="大卫博士简约版"){ $ll[$key]['简约版']=$v->num; }elseif($v->main_attr=="抗菌袜"){ $ll[$key]['纯棉老人版']=$v->num; }elseif($v->main_attr=="大卫博士青春版"){ $ll[$key]['青春版']=$v->num; }elseif($v->main_attr=="红色贺岁款(精装版)"){ $ll[$key]['红色款']=$v->num; }elseif($v->main_attr=="精装版新款"){ $ll[$key]['精装版']+=$v->num; $ll[$key]['精装版xin']=$v->num; }elseif($v->main_attr=="精装版女款新款"){ $ll[$key]['精装版']+=$v->num; }elseif($v->main_attr=="高腰版新款"){ $ll[$key]['高腰版']+=$v->num; } } $ll[$key]['nickname']=$val->name; $ll[$key]['money']=$val->money; $ll[$key]['realname']=$val->realname; $ll[$key]['mobile']=$val->mobile; $ll[$key]['account']=$val->account?$val->account:0; $nn=$val->pay_account?$val->pay_account:0; $ll[$key]['pay_account']=round($nn,2); $n=$val->no_pay_account?$val->no_pay_account:0; $ll[$key]['no_pay_account']=round($n,2); if ($val->account>300000){ $ll[$key]['accountrebate']=round($val->account*0.95,2); $no_nn=round($ll[$key]['accountrebate']-$ll[$key]['pay_account'],2); if ($no_nn<0){ $no_nn=0; } $ll[$key]['no_pay_account']=$no_nn; $ll[$key]['acc_status']='0.95'; }else{ $ll[$key]['accountrebate']=$val->account; $ll[$key]['no_pay_account']=round($n,2); $ll[$key]['acc_status']='1'; } $wf_money+=$ll[$key]['no_pay_account'] ; } $user_total[0]['wf_money']=round($wf_money,2); $dd=[ 'list'=>$ll, 'all_money'=>$money, 'total'=>$user_total, ]; return $this->success_list($dd,'获取数据成功',$count); } //导出类大礼包 public function exportLikeBAgentGiftBag(Request $request){ $input=$request->all(); $search_name=$input['search_name']; $start_time=$input['start_time']; $end_time=$input['end_time']; $activity_id=$input['activity_id']; $where=[]; $wheres=[]; if($start_time && $end_time && empty($activity_id)){ $where=function ($query) use ($start_time,$end_time){ $query->whereBetween('order.created_at',[$start_time,$end_time]); }; } if($activity_id){ $actice=Activity::find($activity_id); $wheres=function($query) use ($actice){ $query->whereBetween('order.created_at',[$actice->start_time,$actice->end_time]); }; } $order_user_ids=Order::where($where)->where($wheres)->where('is_deleted',0)->groupBy('user_id')->pluck('user_id')->toArray(); $users=User::where('level',3) // ->whereNotIn('mobile',$this->phone_Tests()) ->pluck('id')->toArray(); $user_ids=array_unique(array_merge($order_user_ids,$users)); $user=User::select('users.id','users.nickname','users.uuid','users.remark_name as name','users.money','users.mobile','users.realname', DB::raw('SUM(order.money) as account'), DB::raw('SUM(order.pay_money) as pay_account')) // ->whereNotIn('users.mobile',$this->phone_Tests()) ->leftJoin('order', function($join) use ($start_time,$end_time,$where,$wheres){ $join->on('order.user_id', '=', 'users.id') ->where('order.is_deleted','=','0') ->where($where) ->where($wheres); }) // ->leftJoin('agent_operation_log', // function($join){ // $join->on('agent_operation_log.user_id', '=', 'users.id') // ->where('agent_operation_log.type','=','2') // ->where('agent_operation_log.log','=','(升级)变更前等级:经销商,变更后等级:批发商'); // }) // ->withTrashed() ->whereIn('users.id',$user_ids) ->where(function ($q)use($search_name){ $q->where('users.nickname','like','%'.$search_name.'%') ->orwhere('users.mobile','like','%'.$search_name.'%') ->orwhere('users.name','like','%'.$search_name.'%') ->orwhere('users.realname','like','%'.$search_name.'%'); }) ->groupBy('users.id') ->orderBy('account','desc') ->orderBy('pay_account','desc') ->orderBy('users.id','desc'); $count = $user->get()->count(); if($count<=0){ $this->error('450001', '暂无信息'); } $list=$user->get(); $ll=[]; foreach($list as $key=>$val){ $user_id=$val->id; $uu=User::select('users.id','users.nickname','users.remark_name as name','users.realname','gt.main_attr', DB::raw('SUM(od.num) as num')) // ->whereNotIn('users.mobile',$this->phone_Test()) ->leftJoin('order', function($join) use ($start_time,$end_time,$where,$wheres){ $join->on('order.user_id', '=', 'users.id') ->where('order.is_deleted','=','0') ->where($where) ->where($wheres); }) ->leftJoin('order_detail as od','od.order_id','=','order.id') ->leftjoin('goods_all as gt','gt.id','=','od.goods_id') ->where('users.id',$user_id) // ->withTrashed() ->where(function ($q)use($search_name){ $q->where('users.nickname','like','%'.$search_name.'%') ->orwhere('users.mobile','like','%'.$search_name.'%') ->orwhere('users.name','like','%'.$search_name.'%') ->orwhere('users.realname','like','%'.$search_name.'%'); }) ->groupBy('users.id','gt.main_attr') ->orderBy('users.id','desc') ->get(); $ll[$key]['备注昵称']=$val->name; $ll[$key]['客户姓名']=$val->realname; $ll[$key]['手机号']=$val->uuid; $ll[$key]['精装版']=0; $ll[$key]['简约版']=0; $ll[$key]['高腰版']=0; $ll[$key]['袜子']=0; $ll[$key]['青春版']=0; $ll[$key]['红色款']=0; // $ll[$key]['精装版新款']=0; foreach($uu as $k => $v){ if($v->main_attr=="大卫博士高腰版"){ $ll[$key]['高腰版']+=$v->num; }elseif($v->main_attr=="大卫博士精装版"){ $ll[$key]['精装版']+=$v->num; }elseif($v->main_attr=="大卫博士简约版"){ $ll[$key]['简约版']=$v->num; }elseif($v->main_attr=="抗菌袜"){ $ll[$key]['袜子']=$v->num; }elseif($v->main_attr=="大卫博士青春版"){ $ll[$key]['青春版']=$v->num; }elseif($v->main_attr=="红色贺岁款(精装版)"){ $ll[$key]['红色款']=$v->num; }elseif($v->main_attr=="精装版新款"){ $ll[$key]['精装版']+=$v->num; }elseif($v->main_attr=="高腰版新款"){ $ll[$key]['高腰版']+=$v->num; }elseif($v->main_attr=="精装版女款新款"){ $ll[$key]['精装版']+=$v->num; }elseif($v->main_attr=="精装版靓丽款粉色"){ $ll[$key]['精装版']+=$v->num; }elseif($v->main_attr=="精装版靓丽款灰色"){ $ll[$key]['精装版']+=$v->num; } } $ll[$key]['订货']=$val->account?$val->account:0; if ($val->account>=300000){ $ll[$key]['折扣']='0.95'; $ll[$key]['应付']=round($val->account*0.95,2); $ll[$key]['已付']=$val->pay_account?$val->pay_account:0; $wf=$ll[$key]['应付']-$ll[$key]['已付']; if ($wf<0){ $wf=0; } $ll[$key]['未付']=round($wf,2); }else{ $ll[$key]['折扣']='1'; $ll[$key]['应付']=$val->account; $ll[$key]['已付']=$val->pay_account?$val->pay_account:0; $n=round($ll[$key]['应付']-$ll[$key]['已付'],2); if ($n<0){ $n=0; } $ll[$key]['未付']=round($n,2); } // $no_pay_account=round($val->account-$val->pay_account,2); // if($no_pay_account>0){ // $ll[$key]['未支付']=$no_pay_account; // }else{ // $ll[$key]['未支付']=0; // } $ll[$key]['余额']=$val->money; } return $this->success($ll); } //需要批量退款客户信息 public function getManyBackMoneyUser(Request $request) { $input = $request->all(); $page_index = $input['page_index']; $page_size = $input['page_size']; $num = ($page_index - 1) * $page_size; $order = Order::where('pay_status', 3)->with(['get_user:id,nickname,mobile']); $count = $order->count(); if ($count <= 0) { $this->error('450001', '暂无信息'); } $list = $order->orderBy('id', 'desc')->skip($num)->take($page_size)->get(); return $this->success_list($list, '获取数据成功', $count); } //批量退款 public function manyBackMoney(Request $request) { $input = $request->all(); $data = $input['data']; $remark = ''; DB::beginTransaction(); try { foreach ($data as $key => $val) { $order = Order::where('id', $val)->where('pay_status', 3)->first(); if (!$order) { return $this->error('450001', '第' . ($key + 1) . '个订单状态有误'); } $user_id = $order->user_id; if ($order->is_deleted == 1) { $pay_money = $order->pay_money; if ($order->pay_money > 0) { $order->pay_money = 0; $order->no_pay_money = $order->money; $order->wait_back_money = 0; $order->pay_status = 0; $order->save(); $user = User::where('id', $user_id)->first(); $user->money += $pay_money; $user->save(); Userpay::create([ 'user_id' => $user_id, 'pay_money' => $pay_money, 'op_name' => Auth::user()->name, 'type' => 2, 'remark' => $remark, 'order_num' => $order->order_num, 'pay_num' => $this->pay_num($user_id), 'user_money' => $user->money, ]); } else { return $this->error('450001', $order->order_num . '订单退款信息有误'); } } elseif ($order->is_deleted == 0) { $pay_money = $order->pay_money - $order->money; if (bccomp($order->pay_money - $order->money ,$order->wait_back_money,2)==0 && $order->wait_back_money > 0) { $order->pay_money = $order->money; $order->no_pay_money = 0; $order->wait_back_money = 0; $order->pay_status = 2; $order->save(); $user = User::where('id', $user_id)->first(); $user->money += $pay_money; $user->save(); Userpay::create([ 'user_id' => $user_id, 'pay_money' => $pay_money, 'op_name' => Auth::user()->name, 'type' => 2, 'remark' => $remark, 'order_num' => $order->order_num, 'pay_num' => $this->pay_num($user_id), 'user_money' => $user->money, ]); } else { return $this->error('450001', $order->order_num . '订单退款信息有误'); } }else{ return $this->error('450001','订单作废状态码有误'); } } DB::commit(); return $this->success([]); } catch (Exception $e) { DB::rollBack(); return $this->error('450001', '退款失败'); } } //支付单号 public function pay_num($user_id) { $num = date('Ymd', time()) . '100000' . str_pad($user_id, 6, 0, STR_PAD_LEFT) . rand(11111, 99999); $count = UserPay::where('pay_num', $num)->count(); if ($count > 0) { $num = $this->pay_num($user_id); return $num; } return $num; } //获取账户余额 public function getUserMoney(Request $request) { $input = $request->all(); $order_id = $input['order_id']; $order = Order::where('id', $order_id)->first(); $userMoney = 0; if ($order) { $userMoney = User::where('id', $order->user_id)->value('money'); } return $this->success($userMoney); } //添加收款记录 public function addIncomeLog(Request $request) { $input = $request->all(); $rules = [ 'order_id' => 'required', 'money' => 'required|regex:/^[0-9]+(.[0-9]{1,2})?$/', 'p_money' => 'required|regex:/^[0-9]+(.[0-9]{1,2})?$/' ]; $messages = [ 'order_id.required' => '无订单信息.', 'money.required' => '余额付款金额不能为空.', 'money.regex' => '余额付款金额格式有误.', 'p_money.required' => '线下付款金额不能为空.', 'p_money.regex' => '线下付款金额格式有误.' ]; $validator = Validator::make($input, $rules, $messages); if ($validator->fails()) { return $this->error('400013', $validator->errors()->first()); } $order_id = $input['order_id']; $money = $input['money']; $p_money = $input['p_money']; $remark = $input['remark']; $name = Auth::user()->name; $order = Order::where('id', $order_id)->first(); if ($money + $p_money <= 0 || $money < 0 || $p_money < 0) { return $this->error('450001', '支付金额必须大于0元'); } if ($money + $p_money > $order->no_pay_money) { return $this->error('450001', '支付金额超出订单未支付金额'); } $user_id = $order->user_id; $user = User::where('id', $user_id)->first(); $before_money = $user->money; if ($before_money < $money) { return $this->error('450001', '客户账户余额不足'); } DB::beginTransaction(); try { //余额支付 if ($money > 0) { $user->money = $before_money - $money; $user->save(); Userpay::create([ 'user_id' => $user_id, 'pay_money' => $money, 'op_name' => $name, 'type' => 1, 'remark' => $remark, 'order_num' => $order->order_num, 'pay_num' => $this->pay_num($user_id), 'user_money' => $user->money, ]); } if ($p_money > 0) { //后台充值 Userpay::create([ 'user_id' => $user_id, 'pay_money' => $p_money, 'op_name' => $name, 'type' => 0, 'remark' => $remark, 'order_num' => '', 'pay_num' => $this->pay_num($user_id), 'user_money' => $user->money + $p_money, ]); //后台支付 Userpay::create([ 'user_id' => $user_id, 'pay_money' => $p_money, 'op_name' => $name, 'type' => 1, 'remark' => $remark, 'order_num' => $order->order_num, 'pay_num' => $this->pay_num($user_id), 'user_money' => $user->money ]); } $order->pay_money = $order->pay_money + $money + $p_money; $order->no_pay_money = $order->money - $order->pay_money; if ($order->pay_money == $order->money) { $order->pay_status = '2';//全部支付 } elseif ($order->pay_money > 0 && $order->pay_money < $order->money) { $order->pay_status = '1';//部分支付 } elseif ($order->pay_money == 0) { $order->pay_status = '0';//未支付 } elseif ($order->pay_money > $order->money) { $order->pay_status = '3';//需部分退款 $order->wait_back_money = $order->pay_money - $order->money; } $order->save(); DB::commit(); return $this->success([]); } catch (Exception $e) { DB::rollBack(); return $this->error(); } } //部分退款 public function partBackMoney(Request $request) { $input = $request->all(); $rules = [ 'order_id' => 'required', 'money' => 'required|regex:/^[0-9]+(.[0-9]{1,2})?$/' ]; $messages = [ 'order_id.required' => '无订单信息.', 'money.required' => '退款金额不能为空.', 'money.regex' => '退款金额格式有误.' ]; $validator = Validator::make($input, $rules, $messages); if ($validator->fails()) { return $this->error('400013', $validator->errors()->first()); } $order_id = $input['order_id']; $money = $input['money']; $remark = $input['remark']; $order = Order::where('id', $order_id)->first(); $user_id = $order->user_id; $user = User::where('id', $user_id)->first(); if (!$order) { return $this->error('450001', '订单不存在'); } if ($money <= 0) { return $this->error('450001', '退款金额必须大于0元'); } if ($order->is_deleted == 1) { if ($order->pay_status != 3) { return $this->error('450001', '订单信息有误不能退款'); } if ($order->pay_money < $money) { return $this->error('450001', '退款金额不能大于已支付金额'); } } else { if ($order->pay_status != 3 || $order->pay_money <= $order->money) { return $this->error('450001', '订单信息有误不能退款'); } if (bccomp($order->pay_money - $order->money , $money,2)<0) { return $this->error('450001', '退款金额不能大于待退款金额'); } } DB::beginTransaction(); try { $order->pay_money -= $money; if ($order->is_deleted == 1) { $order->wait_back_money = $order->pay_money; } else { $order->wait_back_money = $order->pay_money - $order->money; } if ($order->pay_money == 0 && $order->money > 0) { $order->no_pay_money = $order->money; } elseif ($order->money > $order->pay_money && $order->pay_money > 0) { $order->no_pay_money = $order->money - $order->pay_money; } elseif ($order->pay_money >= $order->money) { $order->no_pay_money = 0; } if ($order->wait_back_money > 0) { $order->pay_status = 3; } elseif ($order->wait_back_money == 0) { if ($order->pay_money == 0 && $order->money > 0) { $order->pay_status = 0; } elseif ($order->money > $order->pay_money) { $order->pay_status = 1; } elseif ($order->pay_money == $order->money) { $order->pay_status = 2; } } else { throw new Exception("订单信息有误不能退款"); } $order->save(); $user->money += $money; $user->save(); Userpay::create([ 'user_id' => $order->user_id, 'pay_money' => $money, 'op_name' => Auth::user()->name, 'type' => 2, 'remark' => $remark, 'order_num' => $order->order_num, 'pay_num' => $this->pay_num($user_id), 'user_money' => $user->money, ]); DB::commit(); return $this->success([]); } catch (Exception $e) { DB::rollBack(); return $this->error(); } } public function getCollectMoneyLog(Request $request) { $input = $request->all(); $order_num = $input['order_num']; $list = UserPay::where('order_num', $order_num)->orderby('id', 'desc')->get(); if ($list) { return $this->success($list); } else { return $this->error(); } } /*获取体验店*/ public function get_storename(){ return $this->success_list(Store::where('type',2)->get()); } /**标记为专车**/ public function IsCar(Request $request){ Order::where('id',$request->input('id'))->update(['is_car'=>$request->input('status')]); return $this->success([]); } //审核订单 public function audit_order(Request $request) { $input = $request->all(); $order_id = $input['order_id'];//订单id $type = $input['type'];//通过|回退 1通过 2回退 $status = $input['status'];//订单状态 0待订单审核 1财务待审核 2代发货审核 3待收货(dingshi)4完成 $order = Order::where('id', $order_id)->first(); if ($status != $order->status) { return $this->error('450001', '订单状态已变更,请重试!'); } $activity=Activity::where('is_ing',1)->first(); $name = Auth::user()->name; $remark = $input['remark']; DB::beginTransaction(); try { Log::info($order_id . '***' . $order . '***' . $name); if ($type == 1) {//通过 if ($status == 0) {//订单审核 Order::order_audit($order_id, $order, $name); } elseif ($status == 1) {//财务审核 Order::financial_audit($order_id, $order, $name); } elseif ($status == 2) {//发货审核 Order::send_audit($order_id, $order, $name); // if ($order->created_at>=$activity->start_time&&$order->created_at<=$activity->end_time){ // $re=Studio::where('user_id',$order->user_id)->where('status',0)->first(); // if ($re){ // $res=StudioUser::where('user_id',$order->user_id)->where('studio_id',$re->id)->where('activity_id',$activity->id)->first(); // if ($res){ // $res->order_money+=$order->money; // }else{ // $res=new StudioUser(); // $res->studio_id=$re->id; // $res->user_id=$order->user_id; // $res->activity_id=$activity->id; // $res->order_money=$order->money; // } // $money=$res->order_money; // $data=System::whereIn('keys',['studio_first_reward','studio_second_reward','studio_third_reward'])->get(); // $reward=[]; // foreach ($data as $k=>$v){ // $re=$v->values; // $arr=explode('/',$re); // $reward[$v->keys]=$arr; // } // if ($money<$reward['studio_first_reward'][0]*10000){ // $bonus=0; // }elseif ($money>=$reward['studio_first_reward'][0]*10000&&$money<=$reward['studio_second_reward'][0]*10000){ // $bonus=$money*$reward['studio_second_reward'][1]*0.01; // }elseif ($money>$reward['studio_third_reward'][0]*10000){ // $bonus=$money*$reward['studio_third_reward'][1]*0.01; // } // $res->bonus=$bonus; // if (!$res->save()){ // throw new \Exception('1'); // } // } // } } else { throw new Exception("订单状态有误!"); } } else {//回退 if ($status == 0) {//订单回退 throw new Exception("订单审核不能回退!"); } elseif ($status == 1) {//财务回退 Order::financial_back($order_id, $order, $name, $remark); } elseif ($status == 2) {//发货回退 Order::send_back($order_id, $order, $name, $remark); } elseif ($status == 3) {//发货后回退 Order::receive_back($order_id, $order, $name, $remark); // if ($order->created_at>=$activity->start_time&&$order->created_at<=$activity->end_time){ // $re=Studio::where('user_id',$order->user_id)->where('status',0)->first(); // if ($re){ // $res=StudioUser::where('user_id',$order->user_id)->where('studio_id',$re->id)->where('activity_id',$activity->id)->first(); // if ($res){ // $res->order_money-=$order->money; // $money=$res->order_money; // $data=System::whereIn('keys',['studio_first_reward','studio_second_reward','studio_third_reward'])->get(); // $reward=[]; // foreach ($data as $k=>$v){ // $re=$v->values; // $arr=explode('/',$re); // $reward[$v->keys]=$arr; // } // if ($money<$reward['studio_first_reward'][0]*10000){ // $bonus=0; // }elseif ($money>=$reward['studio_first_reward'][0]*10000&&$money<=$reward['studio_second_reward'][0]*10000){ // $bonus=$money*$reward['studio_second_reward'][1]*0.01; // }elseif ($money>$reward['studio_third_reward'][0]*10000){ // $bonus=$money*$reward['studio_third_reward'][1]*0.01; // } // $res->bonus=$bonus; // if (!$res->save()){ // throw new \Exception('1'); // } // } // } // } } else { throw new Exception("订单状态有误!"); } } DB::commit(); return $this->success([]); } catch (Exception $e) { DB::rollBack(); return $this->error('450001', $e->getMessage()); } } //校验审核 public function checkOrderStatus(Request $request) { $input = $request->all(); $status = $input['status'];//订单状态 0待订单审核 1财务待审核 2代发货审核 3待收货(dingshi)4完成 $data = $input['data']; $count = Order::whereIn('id', $data)->where('status', $status)->count(); return $count; } //批量审核 public function many_audit_order(Request $request) { $input = $request->all(); $status = $input['status'];//订单状态 0待订单审核 1财务待审核 2代发货审核 3待收货(dingshi)4完成 $data = $input['data']; $name = Auth::user()->name; $activity=Activity::where('is_ing',1)->first(); DB::beginTransaction(); try { if ($status == 0) { foreach ($data as $key => $val) { $order = Order::where('id', $val)->first(); if ($order->status == 0) { Order::order_audit($val, $order, $name); } } TongBuStatusJob::dispatch($data); } elseif ($status == 1) { foreach ($data as $key => $val) { $order = Order::where('id', $val)->first(); if ($order->status == 1) { Order::financial_audit($val, $order, $name); } } } elseif ($status == 2) { foreach ($data as $key => $val) { $order = Order::where('id', $val)->first(); if ($order->status == 2) { Order::send_audit($val, $order, $name); } } } else { throw new Exception("订单状态有误!"); } DB::commit(); return $this->success([]); } catch (Exception $e) { DB::rollback(); return $this->error('450001', $e->getMessage()); } } //订单拆分快递单 public function orderBreakUpCourier(Request $request) { ini_set('memory_limit', '4096M'); $input = $request->all(); if ($request->has('provice')) { $order_no = $input['order_no']; $start_time = $input['start_time']; $end_time = $input['end_time']; $activity_id = $input['activity_id']; $user_name = $input['user_name']; $receive_info = $input['receive_info']; $goods_info = $input['goods_info']; $province = $input['provice']; $city = $input['city']; $town = $input['area']; if ($request->has('order_status')) { $order_status = $input['order_status']; } else { $order_status = []; } if ($request->has('pay_status')) { $pay_status = $input['pay_status']; } else { $pay_status = []; } $order_type = $input['order_type']; $data = Order::leftJoin('order_detail', 'order.id', '=', 'order_detail.order_id') ->leftJoin('users', 'order.user_id', '=', 'users.id') // ->join('warea','warea.id','=','users.warea_id') ->leftJoin('goods_all', 'goods_all.id', '=', 'order_detail.goods_id') ->leftJoin('address', 'address.id', '=', 'order.address_id') ->select('order.order_num','users.uuid as u_uuid', 'address.address_code', 'address.mobile_code','order.is_car','order.status','order.pay_status','order.is_deleted','order.store_id','order.created_at', 'order.good_user_id','users.warea_id','order.id', 'order.remark', 'users.nickname as u_nickname','users.remark_name as u_name', 'users.mobile as u_mobile','users.auth_code', 'users.realname as u_realname', 'address.username', 'address.mobile', 'address.address', 'address.province', 'address.city', 'address.town', 'goods_all.main_attr', 'goods_all.sec_attr', 'goods_all.size', DB::raw('SUM(order_detail.num) as total'),'goods_all.attr_id as rank','goods_all.id as sorts'); $admin = Auth::user(); if ($admin->role_id == 23) { $warea_ids = Warea::where('admin_id', $admin->id)->pluck('id'); $data->whereIn('users.warea_id', $warea_ids); } if ($order_no) { $data->where('order.order_num', $order_no); } if ($start_time && $end_time && empty($activity_id)) { $data->whereBetween('order.created_at', [$start_time, $end_time]); } if ($activity_id) { // $data->where('order.activity_id', $activity_id); $actice=Activity::find($activity_id); $data->whereBetween('order.created_at',[$actice->start_time,$actice->end_time]); } if ($user_name) { $user_id = $this->getUserNameIds($user_name); $data->whereIn('order.user_id', $user_id); } if ($receive_info) { $address_ids = $this->getReceiveAddressIds($receive_info); $data->whereIn('order.address_id', $address_ids); } if ($province && $province != '省') { $province_ids = $this->getProvinceIds($province); $data->whereIn('order.address_id', $province_ids); } if ($city && $city != '市') { $city_ids = $this->getCityIds($city); $data->whereIn('order.address_id', $city_ids); } if ($town && $town != '区') { $town_ids = $this->getAreaIds($town); $data->whereIn('order.address_id', $town_ids); } //商品信息 if ($goods_info) { $order_ids = $this->getGoodsOrderIds($goods_info); $data->whereIn('order.id', $order_ids); } if ($order_status) { if (!in_array('-1', $order_status)) { if (!in_array('5', $order_status)) { $data->whereIn('order.status', $order_status)->where('order.is_deleted', 0); } else { $data->where('order.is_deleted', 1) ->orWhere(function ($query) use ($order_status) { $query->where('order.is_deleted', 0) ->whereIn('order.status', $order_status); }); } } } if ($pay_status) { if (!in_array('-1', $pay_status)) { $data->whereIn('order.pay_status', $pay_status); } } if (in_array($order_type, [0, 1])) { $data->where('order.order_type', $order_type); } $list = $data->groupBy('order_detail.order_id', 'goods_all.main_attr', 'goods_all.sec_attr', 'goods_all.size') ->orderBy('order.id') // ->orderBy('order.id', 'order_detail.id') ->get()->toArray(); } else { if ($request->has('id')) { $id_arr=[]; $o_arrs=['Q2024110580830600207', 'F2024110537941900265', 'C2024110575343700199', 'F2024110580916300267', 'P2024110508273600242', 'P2024110585825300243', 'I2024110519834300490', 'E2024110517479000282', 'J2024110527723200329', 'E2024110578994000283', 'O2024110532889600202', 'I2024110536970000493', 'G2024110546426200354', 'D2024110597118900333', 'J2024110541373500330', 'M2024110533844700234', 'P2024110503314700244', 'P2024110514118400245', 'L2024110527450500352', 'P2024110556540600246', 'N2024110504751300095', 'G2024110541720400355', 'D2024110543977400335', 'C2024110547237600200', 'L2024110593608600353', 'G2024110590684900356', 'I2024110534786800495', 'I2024110531606100496', 'G2024110511435700357', 'I2024110543949400497', 'J2024110544920400332', 'H2024110535071900282', 'L2024110561608300354', 'I2024110509132300498', 'R2024110550236900203', 'J2024110575769100334', 'O2024110561970400204', 'S2024110544323700193', 'K2024110558834000359', 'I2024110567301100500', 'L2024110533012500355', 'K2024110531014000360', 'O2024110505431700205', 'P2024110514029800250', 'E2024110515622400285', 'F2024110547434000271', 'C2024110561187200202', 'F2024110510773700272', 'J2024110545561100336', 'I2024110561666300503', 'H2024110545125800283', 'H2024110515971500284', 'I2024110578619600504', 'C2024110503098500203', 'J2024110514054300337', 'R2024110521335600204', 'J2024110523591000339', 'I2024110578108400505', 'K2024110594730100364', 'G2024110508413300359', 'H2024110575734600285', 'L2024110503668000359', 'K2024110558028200365', 'O2024110542887500207', 'E2024110591602200286', 'G2024110500458800360', 'N2024110533768000098', 'R2024110563666100205', 'M2024110528797600237', 'L2024110576897400361', 'R2024110511178200206', 'G2024110595065300361', 'Q2024110534257200217', 'O2024110529220000209', 'K2024110597400800366', 'O2024110598386200210', 'K2024110586364400367', 'S2024110520075800195', 'D2024110532828500338', 'L2024110533334800362', 'G2024110523725800362', 'D2024110553985600339', 'D2024110511879900340', 'Q2024110577151000219', 'C2024110564964500204', 'P2024110590289300251', 'G2024110553563500363', 'D2024110543966600341', 'G2024110555787000364', 'E2024110527700400287', 'H2024110546844700287', 'J2024110553976100343', 'P2024110538620900252', 'K2024110579319300368', 'L2024110528980400363', 'G2024110538294700366', 'D2024110514270400342', 'S2024110552146600196', 'J2024110559156900344', 'I2024110500351600508', 'K2024110580918100369', 'H2024110553205400288', 'O2024110526579300211', 'H2024110509122800291', 'P2024110598098900254', 'H2024110548702700289', 'P2024110528889600256', 'H2024110594384900290', 'F2024110561127600277', 'I2024110582498100509', 'R2024110582230400208', 'J2024110551483900346', 'R2024110508765500209', 'P2024110591609700257', 'S2024110587547100197', 'G2024110591875500370', 'J2024110546742800349', 'R2024110588484900210', 'G2024110565345400371', 'P2024110511037000258', 'O2024110563952700212', 'F2024110540006600281', 'H2024110562453100292', 'I2024110575155100512', 'K2024110591776500373', 'G2024110524449500372', 'Q2024110522919600222', 'G2024110539640800373', 'F2024110574883500283', 'G2024110586274300375', 'G2024110584647900376', 'P2024110572134200260', 'K2024110521681800375', 'Q2024110583392100223', 'J2024110539255000351', 'P2024110588162900261', 'G2024110556582300377', 'E2024110563925100288', 'O2024110542869600213', 'K2024110539294300376', 'O2024110561369700214', 'L2024110540781700365', 'G2024110508036400379', 'H2024110597603700293', 'D2024110509135200348', 'N2024110503964100099', 'G2024110547082700380', 'P2024110589949100262', 'K2024110550844900377', 'F2024110581606100286', 'J2024110558740700353', 'D2024110575085900349', 'R2024110545063200213', 'Q2024110560449600225', 'K2024110509967000378', 'L2024110535399500366', 'L2024110566058800367', 'J2024110538445700354', 'G2024110528412100382', 'F2024110512081100288', 'L2024110597953400368', 'K2024110546252300379', 'H2024110510056300294', 'A2024110551129800174', 'B2024110535902400172', 'J2024110516540500355', 'M2024110581433200240', 'N2024110543649300100', 'J2024110529279300356', 'R2024110528498000215', 'D2024110513678600351', 'H2024110522121900295', 'K2024110518640300381', 'H2024110590312700297', 'O2024110586374100215', 'C2024110596834500206', 'L2024110568728400369', 'E2024110563269400289', 'L2024110561236000370', 'S2024110520964000198', 'J2024110502998800358', 'G2024110590202900386', 'N2024110555320400101', 'K2024110510144500383', 'M2024110574638200241', 'O2024110547172900217', 'D2024110574908700353', 'K2024110538568400384', 'O2024110568493300220', 'G2024110514519500388', 'P2024110590471900266', 'G2024110530774200389', 'G2024110502560600390', 'I2024110531836500522', 'P2024110531300300267', 'R2024110555229700216', 'N2024110507475400102', 'H2024110586856800298', 'P2024110595849000268', 'K2024110503863100385', 'G2024110555574100391', 'K2024110589324500386', 'N2024110559624600103', 'L2024110584844000372', 'S2024110598199800200', 'F2024110563331600295', 'I2024110515423700524', 'E2024110545253500290', 'P2024110536546300269', 'L2024110595770400374', 'J2024110537797200360', 'F2024110555151700296', 'R2024110586808900217', 'G2024110595324000392', 'H2024110506831400299', 'R2024110546490100218', 'G2024110515758100393', 'M2024110575886900243', 'L2024110560811800375', 'G2024110591643300394', 'L2024110529749600377', 'L2024110539060400378', 'P2024110593248600270', 'E2024110553480600291', 'R2024110505336300219', 'G2024110554738900395', 'L2024110583821300379', 'H2024110512309800300', 'J2024110536432800362', 'P2024110546640700271', 'R2024110522233900220', 'G2024110578885700396', 'Q2024110577390300227', 'O2024110548030200222', 'G2024110545196400397', 'P2024110529384100272', 'M2024110545419600244', 'L2024110504511600381', 'S2024110545281400201', 'E2024110585808400292', 'G2024110547060700398', 'E2024110560347500293', 'Q2024110561106200229', 'J2024110570570100363', 'R2024110536695600221', 'F2024110539150000300', 'G2024110525523400399', 'G2024110597684900400', 'K2024110551296800389', 'I2024110592787500529', 'F2024110574121900301', 'P2024110531088900274', 'K2024110557064200390', 'K2024110559192900391', 'J2024110514769700364', 'K2024110524595200392', 'R2024110528939700222', 'G2024110527011900402', 'F2024110561349900302', 'G2024110581850100404', 'E2024110527648300295', 'S2024110521284100202', 'G2024110561758500405', 'G2024110551960700407', 'P2024110564177300275', 'F2024110540495900303', 'J2024110543895300365', 'P2024110547037100277', 'E2024110518442100296', 'B2024110532220400176', 'S2024110595084800203', 'H2024110548760600301', 'H2024110597247600302', 'F2024110599466900305', 'G2024110553795100409', 'R2024110573107800223', 'P2024110518155300278', 'E2024110535244000297', 'K2024110526569900394', 'E2024110562809500298', 'P2024110510131100279', 'I2024110506263100532', 'E2024110522929000299', 'G2024110544410400411', 'P2024110593120100280', 'C2024110597431100213', 'P2024110538794700281', 'H2024110571224600303', 'Q2024110533117800230', 'G2024110524366900412', 'S2024110585709400205', 'R2024110504639900224', 'G2024110590201400413', 'R2024110554461600225', 'P2024110518581400282', 'P2024110553473500283', 'R2024110572899900226', 'P2024110517420900284', 'N2024110579547400104', 'F2024110520919600307', 'G2024110573029200414', 'E2024110544497200301', 'G2024110590784100415', 'G2024110520259200416', 'I2024110545207100536', 'Q2024110574845400231', 'R2024110514747100227', 'P2024110506506500286', 'G2024110559519500419', 'G2024110578885800420', 'K2024110545899600396', 'R2024110588550100228', 'J2024110508956100369', 'R2024110505405100229', 'I2024110576190000538', 'J2024110524458800370', 'F2024110570408600309', 'Q2024110501976800232', 'P2024110533847300288', 'E2024110534366300302', 'C2024110575325400219', 'L2024110597460400387', 'P2024110589015700291', 'J2024110524175300372',]; // foreach ($o_arrs as $k=>$v){ // $id_arr[]=Order::where('order_num',$v)->value('id'); // } $list = Order::leftJoin('order_detail', 'order.id', '=', 'order_detail.order_id') ->leftJoin('users', 'order.user_id', '=', 'users.id') // ->join('warea','warea.id','=','users.warea_id') ->leftJoin('goods_all', 'goods_all.id', '=', 'order_detail.goods_id') ->leftJoin('address', 'address.id', '=', 'order.address_id') ->select('order.order_num','users.uuid as u_uuid', 'address.address_code', 'address.mobile_code','order.is_car','order.status','order.pay_status','order.is_deleted','order.store_id','order.created_at','order.good_user_id','order.id', 'order.remark', 'users.nickname as u_nickname', 'users.mobile as u_mobile','users.auth_code','users.warea_id','users.remark_name as u_name', 'users.name as u_realname', 'address.username', 'address.mobile', 'address.address', 'address.province', 'address.city', 'address.town', 'goods_all.main_attr', 'goods_all.sec_attr', 'goods_all.size', DB::raw('SUM(order_detail.num) as total'),'goods_all.attr_id as rank','goods_all.id as sorts') // ->whereIn('order.id', $id_arr) ->whereIn('order.id', $request->id) ->groupBy('order_detail.order_id', 'goods_all.sec_attr', 'goods_all.size', 'goods_all.main_attr') ->orderBy('order.id') // ->orderBy('order.id', 'order_detail.id') ->get()->toArray(); } else { if ($request->has('order_no')) { $order_no = $input['order_no']; } else { $order_no = ''; } $start_time = $input['start_time'] ?? ''; $end_time = $input['end_time'] ?? ''; $activity_id = $input['activity_id'] ?? ''; $search_name = $input['search_name'] ?? ''; if ($request->has('order_status')) { $order_status = $input['order_status']; } else { $order_status = []; } $data = Order::leftJoin('order_detail', 'order.id', '=', 'order_detail.order_id') ->leftJoin('users', 'order.user_id', '=', 'users.id') // ->join('warea','warea.id','=','users.warea_id') ->leftJoin('goods_all', 'goods_all.id', '=', 'order_detail.goods_id') ->leftJoin('address', 'address.id', '=', 'order.address_id') ->select('order.order_num','users.uuid as u_uuid', 'address.address_code', 'address.mobile_code','order.is_car','order.status','order.pay_status','order.is_deleted','order.store_id','order.created_at', 'order.good_user_id','order.id','users.warea_id', 'order.remark', 'users.nickname as u_nickname', 'users.mobile as u_mobile','users.auth_code','users.remark_name as u_name', 'users.name as u_realname', 'address.username', 'address.mobile', 'address.address', 'address.province', 'address.city', 'address.town', 'goods_all.main_attr', 'goods_all.sec_attr', 'goods_all.size', DB::raw('SUM(order_detail.num) as total'),'goods_all.attr_id as rank','goods_all.id as sorts'); $admin = Auth::user(); if ($admin->role_id == 23) { $warea_ids = Warea::where('admin_id', $admin->id)->pluck('id'); $data->whereIn('users.warea_id', $warea_ids); } if ($order_status || $order_status == 0) { if ('-1' == $order_status) { $data->whereIn('order.is_deleted', [0, 1]); } elseif ($order_status == 5) { $data->where('order.is_deleted', 1); } elseif ($order_status == 0) { $data->where('order.status', $order_status)->where('order.is_deleted', 0); } elseif ($order_status == 1) { $data->where('order.status', $order_status)->where('order.is_deleted', 0); } elseif ($order_status == 2) { $data->where('order.status', $order_status)->where('order.is_deleted', 0); } elseif ($order_status == 3) { $data->where('order.status', $order_status)->where('order.is_deleted', 0); } elseif ($order_status == 4) { $data->where('order.status', $order_status)->where('order.is_deleted', 0); } elseif ($order_status == 6) { $data->whereIn('order.pay_status', [0, 1])->where('order.is_deleted', 0); } } if ($order_no) { $data->where('order.order_num', $order_no); } if ($search_name) { // $s=substr(trim($search_name),0,4); // if($s=='DWBS'){ // $data->where('order.order_num',trim($search_name)); // }else{ $ids = $this->getUserIds($search_name); $data->whereIn('order.user_id', $ids); // } } if ($start_time && $end_time && empty($activity_id)) { $data->whereBetween('order.created_at', [$start_time, $end_time]); } if ($activity_id) { $actice = Activity::find($activity_id); $data->whereBetween('order.created_at', [$actice->start_time, $actice->end_time]); } // $list = $data->groupBy('order_detail.order_id', 'goods_all.sec_attr', 'goods_all.size', 'goods_all.main_attr') $list = $data->groupBy('order_detail.order_id', 'goods_all.main_attr', 'goods_all.sec_attr', 'goods_all.size') ->orderBy('order.id') // ->orderBy('order.id', 'order_detail.id') ->get()->toArray(); } } $re=collect($list) ->groupBy('order_num') ->map(function ($item) { return $item->toArray(); }); $dd=[]; $zhongl=[ '精装'=>[ '男款-L'=>0.67, '男款-XL'=>0.68, '男款-XXL'=>0.7, '男款-3XL'=>0.71,'男款-4XL'=>0.75,'男款-5XL'=>0.75, '女款-M'=>0.59, '女款-L'=>0.6, '女款-XL'=>0.6, '女款-XXL'=>0.61,'女款-3XL'=>0.66,'女款-4XL'=>0.67 ], '高腰'=>[ '男款-L'=>2.1, '男款-XL'=>2.1, '男款-XXL'=>2.12, '男款-3XL'=>2.2, '女款-M'=>1.8, '女款-L'=>1.8, '女款-XL'=>1.82, '女款-XXL'=>1.83,'女款-3XL'=>1.88 ], '袜子'=>[ '短款'=>2.1,'长款'=>2.4 ], '精装小箱子'=>[0.5,0.02], '精装大箱子'=>[0.74,0.04], '高腰小箱子'=>[0.74,0.034], '高腰大箱子'=>[1,0.065], '袜子小箱子'=>[0.78,0.04], '袜子大箱子'=>[1.1,0.077], ]; foreach ($re as $k=>$v){ $last_names = array_column($v,'rank'); $last_namess = array_column($v,'sorts'); array_multisort($last_names,SORT_ASC,$last_namess,SORT_ASC,$v); $dd[$k]=$v; } // return $this->success($arrs); // $newArr = []; // $arr=[]; // foreach ($list as $k => $val) { //数据根据日期分组 // $newArr[$val['order_num']][] = $val; // } // return $this->success_list($newArr,'','',$arr); // $dd = $this->dataGroup($list, 'order_num'); $d = []; foreach ($dd as $key => $val) { $info['gift'] = OrderGift::leftJoin('gifts', 'order_gift.gift_id', '=', 'gifts.id') ->where('order_gift.order_id', $val[0]['id']) ->where('order_gift.num', '>', '0') ->select('gifts.name', 'order_gift.num')->get(); $auth_code=User::where('id',$val[0]['good_user_id'])->value('auth_code'); if ($auth_code){ $info['auth_code']= $auth_code; }else{ $info['auth_code']= $val[0]['auth_code']; } $info['u_nickname'] = $val[0]['u_name']; $info['u_name'] = $val[0]['u_realname']; $info['u_mobile'] =$val[0]['u_uuid']; $info['mobile'] = $val[0]['mobile']; $info['address'] = $val[0]['address']; $info['username'] = $val[0]['username']; $info['province'] = $val[0]['province']; $info['city'] = $val[0]['city']; $info['town'] = $val[0]['town']; $info['pay_status'] = $val[0]['pay_status']; $info['status'] = $val[0]['status']; $info['is_deleted'] = $val[0]['is_deleted']; if ($val[0]['is_deleted']==1){ $info['status'] = $this->judge_status(5); }else{ $info['status'] = $this->judge_status($val[0]['status']); } $info['pay_status'] = $this->judge_pay_status($val[0]['pay_status']); $info['store']=''; if ( $val[0]['store_id']){ $info['store'] ='体验店订单'; }else{ if ( $val[0]['is_car']){ $info['store'] ='专车'; } }; $pei_info=$this->DelNum($val[0]['id']); $info['peijian']=$pei_info[0]; $info['peijian_w']=$pei_info[1]; // if ($val[0]['good_user_id']){ // $gooduser=User::where('id',$val[0]['good_user_id'])->select('mobile','realname')->first(); // if ($gooduser){ // $info['belong']='('.$gooduser->realname.mb_substr($gooduser->mobile,7,4).')'; // }else{ // $info['belong']=''; // } // // }else{ $info['belong']=''; // } $admin_name=Warea::where('id',$val[0]['warea_id'])->value('admin_name'); $info['admin_name'] =$admin_name; $info['created_at'] = $val[0]['created_at']; // $info['remark'] = (string)$val[0]['remark']; $info['remark'] = $this->getOrderRemark($val[0]['id']); $d[$key]['data']=$info; $d[$key]['精装'] = []; $d[$key]['靓丽粉色'] = []; $d[$key]['靓丽灰色'] = []; $d[$key]['新款'] = []; $d[$key]['新女款'] = []; $d[$key]['红色'] = []; $d[$key]['普通'] = []; $d[$key]['精装混合'] = []; $d[$key]['精装新混合'] = []; $d[$key]['新款混合'] = []; $d[$key]['新女款混合'] = []; $d[$key]['红色混合'] = []; $d[$key]['普通混合'] = []; $d[$key]['抗菌袜'] = []; $d[$key]['抗菌袜混合'] = []; $x1 = 0; $y1 = [];//精装 $x2 = 0; $y2 = [];//红色 $x3 = 0;//新款 $y3 = []; $x4 = 0;//新女款 $y4 = []; $x = 0; $y = [];//普通 $sel_arr=[]; $six_arr=[]; $three_Arr=[]; $all_arr=[]; $all_arr_h=[]; $all_arr_jz=[]; foreach ($val as $k => $v) { if ($v['main_attr'] == '大卫博士精装版') { $jz=[]; $main_attr = '精装版'; $n = floor($v['total'] / 12); for ($i = 0; $i < $n; $i++) { $cc = []; $cc['main_attr'] = $main_attr; $cc['sec_attr'] = $v['sec_attr']; $cc['size'] = $v['size']; $cc['num'] = 12; $cc['zhongl'] = round($zhongl['精装'][$v['size']]*12+$zhongl['精装大箱子'][0],2); $cc['tiji'] = $zhongl['精装大箱子'][1]; array_push($d[$key]['精装'], $cc); } if (mb_substr($v['size'],0,1)=='男'){ $color='精灰'; }else{ $color='精紫'; } $jz=[ 'main_attr'=>$main_attr, 'sec_attr'=>$v['sec_attr'], 'size'=>$v['size'], 'num'=>$v['total']%12, 'zhongl'=> round($zhongl['精装'][$v['size']]*($v['total']%12),2), 'zhongls'=> $zhongl['精装'][$v['size']], 'color'=>$color ]; $all_arr_jz[]=$jz; if ($v['total'] % 12 > 0) { $t1 = $v['total'] % 12; if ($x1 + $t1 >= 12) { $x1 = $x1 + $t1 - 12; $z1['main_attr'] = $main_attr; $z1['sec_attr'] = $v['sec_attr']; $z1['size'] = $v['size']; $z1['num'] = $t1 - $x1; $z1['zhongl'] = round($zhongl['精装'][$v['size']]*$z1['num'],2); $z1['zhongls'] = $zhongl['精装'][$v['size']]; if ($y1) { array_pop($d[$key]['精装混合']); } array_push($y1, $z1); $z1 = []; array_push($d[$key]['精装混合'], $y1); $y1 = []; if ($x1 > 0) { $z1['main_attr'] = $main_attr; $z1['sec_attr'] = $v['sec_attr']; $z1['size'] = $v['size']; $z1['num'] = $x1; $z1['zhongl'] = round($zhongl['精装'][$v['size']]*$z1['num'],2); $z1['zhongls'] = $zhongl['精装'][$v['size']]; array_push($y1, $z1); array_push($d[$key]['精装混合'], $y1); } } else { $x1 += $t1; $z1['main_attr'] = $main_attr; $z1['sec_attr'] = $v['sec_attr']; $z1['size'] = $v['size']; $z1['num'] = $v['total'] % 12; $z1['zhongl'] = round($zhongl['精装'][$v['size']]*$z1['num'],2); $z1['zhongls'] = $zhongl['精装'][$v['size']]; if ($y1) { array_pop($d[$key]['精装混合']); } array_push($y1, $z1); array_push($d[$key]['精装混合'], $y1); } } } elseif ($v['main_attr'] == '红色贺岁款(精装版)') { $main_attr = '红色款'; $n = floor($v['total'] / 12); for ($i = 0; $i < $n; $i++) { $cc = []; $cc['main_attr'] = $main_attr; $cc['sec_attr'] = $v['sec_attr']; $cc['size'] = $v['size']; $cc['num'] = 12; $cc['zhongl'] = $zhongl['精装'][$v['size']]*12+$zhongl['精装大箱子'][0]; $cc['tiji'] = $zhongl['精装大箱子'][1]; array_push($d[$key]['红色'], $cc); } if ($v['total'] % 12 > 0) { $t2 = $v['total'] % 12; if ($x2 + $t2 >= 12) { $x2 = $x2 + $t2 - 12; $z2['main_attr'] = $main_attr; $z2['sec_attr'] = $v['sec_attr']; $z2['size'] = $v['size']; $z2['num'] = $t2- $x2; $z2['zhongl'] = $zhongl['精装'][$v['size']]*$z2['num']; if ($y2) { array_pop($d[$key]['红色混合']); } array_push($y2, $z2); $z2 = []; array_push($d[$key]['红色混合'], $y2); $y2 = []; if ($x2 > 0) { $z2['main_attr'] = $main_attr; $z2['sec_attr'] = $v['sec_attr']; $z2['size'] = $v['size']; $z2['num'] = $x2; $z2['zhongl'] = $zhongl['精装'][$v['size']]*$z2['num']; array_push($y2, $z2); array_push($d[$key]['红色混合'], $y2); } } else { $x2 += $t2; $z2['main_attr'] = $main_attr; $z2['sec_attr'] = $v['sec_attr']; $z2['size'] = $v['size']; $z2['num'] = $v['total'] % 12; $z2['zhongl'] = $zhongl['精装'][$v['size']]*$z2['num']; if ($y2) { array_pop($d[$key]['红色混合']); } array_push($y2, $z2); array_push($d[$key]['红色混合'], $y2); } } } elseif ($v['main_attr'] == '精装版新款') { $main_attr = '新款'; $n = floor($v['total'] / 12); for ($i = 0; $i < $n; $i++) { $cc = []; $cc['main_attr'] = $main_attr; $cc['sec_attr'] = $v['sec_attr']; $cc['size'] = $v['size']; $cc['num'] = 12; $cc['zhongl'] = round($zhongl['精装'][$v['size']]*12+$zhongl['精装大箱子'][0],2); $cc['tiji'] = $zhongl['精装大箱子'][1]; array_push($d[$key]['新款'], $cc); } if (mb_substr($v['size'],0,1)=='男'){ $color='精黑'; }else{ $color='精肤'; } $jz=[ 'main_attr'=>$main_attr, 'sec_attr'=>$v['sec_attr'], 'size'=>$v['size'], 'num'=>$v['total']%12, 'zhongl'=> round($zhongl['精装'][$v['size']]*($v['total']%12),2), 'zhongls'=> $zhongl['精装'][$v['size']], 'color'=>$color ]; $all_arr_jz[]=$jz; if ($v['total'] % 12 > 0) { $t3 = $v['total'] % 12; if ($x3 + $t3 >= 12) { $x3 = $x3 + $t3 - 12; $z3['main_attr'] = $main_attr; $z3['sec_attr'] = $v['sec_attr']; $z3['size'] = $v['size']; $z3['num'] = $t3- $x3; $z3['zhongl'] = round($zhongl['精装'][$v['size']]*$z3['num'],2); $z3['zhongls'] = $zhongl['精装'][$v['size']]; if ($y3) { array_pop($d[$key]['新款混合']); } array_push($y3, $z3); $z3 = []; array_push($d[$key]['新款混合'], $y3); $y3 = []; if ($x3 > 0) { $z3['main_attr'] = $main_attr; $z3['sec_attr'] = $v['sec_attr']; $z3['size'] = $v['size']; $z3['num'] = $x3; $z3['zhongl'] = round($zhongl['精装'][$v['size']]*$z3['num'],2); $z3['zhongls'] = $zhongl['精装'][$v['size']]; array_push($y3, $z3); array_push($d[$key]['新款混合'], $y3); } } else { $x3 += $t3; $z3['main_attr'] = $main_attr; $z3['sec_attr'] = $v['sec_attr']; $z3['size'] = $v['size']; $z3['num'] = $v['total'] % 12; $z3['zhongl'] = round($zhongl['精装'][$v['size']]*$z3['num'],2); $z3['zhongls'] = $zhongl['精装'][$v['size']]; if ($y3) { array_pop($d[$key]['新款混合']); } array_push($y3, $z3); array_push($d[$key]['新款混合'], $y3); } } } elseif ($v['main_attr'] == '精装版靓丽款粉色') { $main_attr = '靓丽款粉色'; $n = floor($v['total'] / 12); for ($i = 0; $i < $n; $i++) { $cc = []; $cc['main_attr'] = $main_attr; $cc['sec_attr'] = $v['sec_attr']; $cc['size'] = $v['size']; $cc['num'] = 12; $cc['zhongl'] = round($zhongl['精装'][$v['size']]*12+$zhongl['精装大箱子'][0],2); $cc['tiji'] = $zhongl['精装大箱子'][1]; array_push($d[$key]['靓丽粉色'], $cc); } $jz=[ 'main_attr'=>$main_attr, 'sec_attr'=>$v['sec_attr'], 'size'=>$v['size'], 'num'=>$v['total']%12, 'zhongl'=> round($zhongl['精装'][$v['size']]*($v['total']%12),2), 'zhongls'=> $zhongl['精装'][$v['size']], 'color'=>'靓丽粉' ]; $all_arr_jz[]=$jz; } elseif ($v['main_attr'] == '精装版靓丽款灰色') { $main_attr = '靓丽款灰色'; $n = floor($v['total'] / 12); for ($i = 0; $i < $n; $i++) { $cc = []; $cc['main_attr'] = $main_attr; $cc['sec_attr'] = $v['sec_attr']; $cc['size'] = $v['size']; $cc['num'] = 12; $cc['zhongl'] = round($zhongl['精装'][$v['size']]*12+$zhongl['精装大箱子'][0],2); $cc['tiji'] = $zhongl['精装大箱子'][1]; array_push($d[$key]['靓丽灰色'], $cc); } $jz=[ 'main_attr'=>$main_attr, 'sec_attr'=>$v['sec_attr'], 'size'=>$v['size'], 'num'=>$v['total']%12, 'zhongl'=> round($zhongl['精装'][$v['size']]*($v['total']%12),2), 'zhongls'=> $zhongl['精装'][$v['size']], 'color'=>'靓丽灰' ]; $all_arr_jz[]=$jz; } elseif ($v['main_attr'] == '精装版女款新款') { $main_attr = '新女款'; $n = floor($v['total'] / 12); for ($i = 0; $i < $n; $i++) { $cc = []; $cc['main_attr'] = $main_attr; $cc['sec_attr'] = $v['sec_attr']; $cc['size'] = $v['size']; $cc['num'] = 12; $cc['zhongl'] = round($zhongl['精装'][$v['size']]*12+$zhongl['精装大箱子'][0],2); $cc['tiji'] = $zhongl['精装大箱子'][1]; array_push($d[$key]['新女款'], $cc); } $jz=[ 'main_attr'=>$main_attr, 'sec_attr'=>$v['sec_attr'], 'size'=>$v['size'], 'num'=>$v['total']%12, 'zhongl'=> round($zhongl['精装'][$v['size']]*($v['total']%12),2), 'zhongls'=> $zhongl['精装'][$v['size']], 'color'=>'精黑' ]; $all_arr_jz[]=$jz; if ($v['total'] % 12 > 0) { $t4 = $v['total'] % 12; if ($x4 + $t4 >= 12) { $x4 = $x4 + $t4 - 12; $z4['main_attr'] = $main_attr; $z4['sec_attr'] = $v['sec_attr']; $z4['size'] = $v['size']; $z4['num'] = $t4- $x4; $z4['zhongl'] = round($zhongl['精装'][$v['size']]*$z4['num'],2); $z4['zhongls'] = $zhongl['精装'][$v['size']]; if ($y4) { array_pop($d[$key]['新女款混合']); } array_push($y4, $z4); $z4 = []; array_push($d[$key]['新女款混合'], $y4); $y4 = []; if ($x4 > 0) { $z4['main_attr'] = $main_attr; $z4['sec_attr'] = $v['sec_attr']; $z4['size'] = $v['size']; $z4['num'] = $x4; $z4['zhongl'] = round($zhongl['精装'][$v['size']]*$z4['num']); $z4['zhongls'] = $zhongl['精装'][$v['size']]; array_push($y4, $z4); array_push($d[$key]['新女款混合'], $y4); } } else { $x4 += $t4; $z4['main_attr'] = $main_attr; $z4['sec_attr'] = $v['sec_attr']; $z4['size'] = $v['size']; $z4['num'] = $v['total'] % 12; $z4['zhongl'] = round($zhongl['精装'][$v['size']]*$z4['num'],2); $z4['zhongls'] = $zhongl['精装'][$v['size']]; if ($y4) { array_pop($d[$key]['新女款混合']); } array_push($y4, $z4); array_push($d[$key]['新女款混合'], $y4); } } } elseif ($v['main_attr'] == '抗菌袜') { $main_attr = '抗菌袜'; $n = floor($v['total'] / 6); for ($i = 0; $i < $n; $i++) { $six_arr[]=[ 'main_attr'=>$main_attr, 'sec_attr'=>$v['sec_attr'], 'size'=> $v['size'], 'num'=>6, 'tiji'=>$zhongl['袜子大箱子'][1], 'zhongl'=>round($zhongl['袜子'][mb_substr($v['size'],0,2)]*6+$zhongl['袜子大箱子'][0],2) ]; } $yu=$v['total']%6; $sel_arr[]=[ 'main_attr'=>$main_attr, 'sec_attr'=>$v['sec_attr'], 'size'=> $v['size'], 'num'=>$yu, 'zhongl'=>round($zhongl['袜子'][mb_substr($v['size'],0,2)]*$yu,2), ]; // if ($yu==3){ // $six_arr[]=[ // 'main_attr'=>$main_attr, // 'sec_attr'=>$v['sec_attr'], // 'size'=> $v['size'], // 'num'=>3, // ]; // } // elseif ($yu<3 && $yu>0){ // $sel_arr[]=[ // 'main_attr'=>$main_attr, // 'sec_attr'=>$v['sec_attr'], // 'size'=> $v['size'], // 'num'=>$yu, // ]; // } // elseif($yu>3){ // $six_arr[]=[ // 'main_attr'=>$main_attr, // 'sec_attr'=>$v['sec_attr'], // 'size'=> $v['size'], // 'num'=>3, // ]; // $sel_arr[]=[ // 'main_attr'=>$main_attr, // 'sec_attr'=>$v['sec_attr'], // 'size'=> $v['size'], // 'num'=>$yu-3, // ]; // } $d[$key]['抗菌袜'] = $six_arr; // if ($sel_arr){ // $d[$key]['抗菌袜混合'] = [$sel_arr]; // }else{ // $d[$key]['抗菌袜混合'] = []; // } } else { $n = floor($v['total'] / 6); if ($v['main_attr'] == '大卫博士高腰版') { $main_attr = '高腰版'; } elseif ($v['main_attr'] == '大卫博士简约版') { $main_attr = '简'; } elseif ($v['main_attr'] == '高腰版新款') { $main_attr = '新高'; } elseif($v['main_attr']=='大卫博士纯棉老人版') { $main_attr = '棉'; }else{ $main_attr='青'; } for ($i = 0; $i < $n; $i++) { $cc = []; $cc['main_attr'] = $main_attr; $cc['sec_attr'] = $v['sec_attr']; $cc['size'] = $v['size']; $cc['num'] = 6; $cc['zhongl'] =round($zhongl['高腰'][$v['size']]*6+$zhongl['高腰大箱子'][0],2) ; $cc['tiji'] = $zhongl['高腰大箱子'][1]; array_push($d[$key]['普通'], $cc); } $z = []; if ($v['total'] % 6 > 0) { // if ($v['total']%6==3){ // $cc = []; // $cc['main_attr'] = $main_attr; // $cc['sec_attr'] = $v['sec_attr']; // $cc['size'] = $v['size']; // $cc['num'] = 3; // $three_Arr[]=$cc; //// array_push($d[$key]['普通'], $cc); // }elseif($v['total']%6>3){ // $cc = []; // $cc['main_attr'] = $main_attr; // $cc['sec_attr'] = $v['sec_attr']; // $cc['size'] = $v['size']; // $cc['num'] = 3; //// array_push($d[$key]['普通'], $cc); // $three_Arr[]=$cc; // $z['main_attr'] = $main_attr; // $z['sec_attr'] = $v['sec_attr']; // $z['size'] = $v['size']; // $z['num'] = $v['total']%6-3; // $all_arr_h[]=$z; // }else{ // $z['main_attr'] = $main_attr; // $z['sec_attr'] = $v['sec_attr']; // $z['size'] = $v['size']; // $z['num'] = $v['total']%6; // $all_arr_h[]=$z; // } $z['main_attr'] = $main_attr; $z['sec_attr'] = $v['sec_attr']; $z['size'] = $v['size']; $z['num'] = $v['total']%6; $z['zhongl'] = round($zhongl['高腰'][$v['size']]*$z['num'],2); $all_arr_h[]=$z; } } } $result = []; $current = []; $currentSum = 0; foreach ($all_arr_h as $item) { $remaining = $item['num']; while ($remaining > 0) { if ($currentSum + $remaining <= 6) { $currentSum += $remaining; $current[] = array_merge($item, ['num' => $remaining]); $remaining = 0; } else { $canAdd = 6 - $currentSum; $currentSum += $canAdd; $current[] = array_merge($item, ['num' => $canAdd]); $remaining -= $canAdd; } if ($currentSum == 6) { $result[] = $current; $current = []; $currentSum = 0; } } } if ($currentSum > 0) { $result[] = $current; } foreach ($result as $k=>$v){ foreach ($v as $ke=>$va){ $result[$k][$ke]['zhongl']=round($zhongl['高腰'][$va['size']]*$va['num'],2); } } $d[$key]['普通混合']=$result; $result = []; $current = []; $currentSum = 0; foreach ($all_arr_jz as $item) { $remaining = $item['num']; while ($remaining > 0) { if ($currentSum + $remaining <= 12) { $currentSum += $remaining; $current[] = array_merge($item, ['num' => $remaining]); $remaining = 0; } else { $canAdd = 12 - $currentSum; $currentSum += $canAdd; $current[] = array_merge($item, ['num' => $canAdd]); $remaining -= $canAdd; } if ($currentSum == 12) { $result[] = $current; $current = []; $currentSum = 0; } } } if ($currentSum > 0) { $result[] = $current; } foreach ($result as $k=>$v){ foreach ($v as $ke=>$va){ $result[$k][$ke]['zhongl']=round($zhongl['精装'][$va['size']]*$va['num'],2); } } $d[$key]['精装新混合']=$result; $result = []; $current = []; $currentSum = 0; foreach ($sel_arr as $item) { $remaining = $item['num']; while ($remaining > 0) { if ($currentSum + $remaining <= 6) { $currentSum += $remaining; $current[] = array_merge($item, ['num' => $remaining]); $remaining = 0; } else { $canAdd = 6 - $currentSum; $currentSum += $canAdd; $current[] = array_merge($item, ['num' => $canAdd]); $remaining -= $canAdd; } if ($currentSum == 6) { $result[] = $current; $current = []; $currentSum = 0; } } } if ($currentSum > 0) { $result[] = $current; } foreach ($result as $k=>$v){ foreach ($v as $ke=>$va){ $result[$k][$ke]['zhongl']=round($zhongl['袜子'][mb_substr($va['size'],0,2)]*$va['num'],2); } } $d[$key]['抗菌袜混合']=$result; } return $this->success($d); } public function TongBuOrder(){ return $this->error(40012,'暂停使用'); $re=new TongBuList(); $re->status=0; $re->save(); return $this->success([]); } public function TongBuList(){ $re=TongBuList::limit(10)->orderByDesc('id')->get(); return $this->success_list($re,'',count($re)); } public function GetActivityLimit(Request $request){ $input=$request->all(); $activity_id=$input['activity_id']; $re=ActivityLimit::where('activity_id',$activity_id)->where('title','like','%大礼包%')->get(); $data=[]; foreach ($re as $k=>$v){ $data[$k]['account']=$v->account; $data[$k]['title']=$v->title; } return $this->success($data); } public function mergeOrderDetail(Request $request) { $input=$request->all(); $master_num=$input['master_num']; $slave_num=$input['slave_num']; $activity=Activity::where('is_ing',1)->where('disabled',0)->first(); $start_time=$activity->start_time; $end_time=$activity->end_time; $master_order=Order::where('order_num',$master_num)->whereBetween('created_at',[$start_time,$end_time])->where('is_deleted',0)->first(); $slave_order=Order::where('order_num',$slave_num)->whereBetween('created_at',[$start_time,$end_time])->where('is_deleted',0)->first(); if (empty($master_order) && empty($slave_order)){ $master_orders=Order::where('order_num',$master_num)->where('is_deleted',0)->first(); $slave_orders=Order::where('order_num',$slave_num)->where('is_deleted',0)->first(); if(!in_array($master_orders->status,[0,1,2])){ return $this->error('450001','订单1状态不符,不能合并'); } if(!in_array($slave_orders->status,[0,1,2])){ return $this->error('450001','订单2状态不符,不能合并'); } if($master_orders->user_id!=$slave_orders->user_id){ return $this->error('450001','下单人信息不一致,不能合并'); } $order_num1 = $master_num; $order_num2 = $slave_num; $order1 = Order::where('order_num', $order_num1) ->with(['get_address','get_user'])->first()->toArray(); $order_detail1 = Orderdetail::where('order_id', $order1['id'])->get(); $data1 = []; foreach ($order_detail1 as $k => $v) { $good1 = Goods::find($v->goods_id); $data1['goods_detail'][$k]['name'] = $good1->name; $data1['goods_detail'][$k]['main_img'] = $good1->main_img; $data1['goods_detail'][$k]['size'] = $good1->size; $data1['goods_detail'][$k]['unit'] = $good1->unit; $data1['goods_detail'][$k]['money'] = $v->money; $data1['goods_detail'][$k]['num'] = $v->num; $data1['goods_detail'][$k]['id'] = $v->goods_id; $data1['goods_detail'][$k]['detail_id'] = $v->id; $data1['goods_detail'][$k]['goods_price'] = $v->goods_price; $data1['goods_detail'][$k]['remark'] = $v->remark == null ? '' : $v->remark; } $order2 = Order::where('order_num', $order_num2) ->with(['get_address','get_user'])->first()->toArray(); $order_detail2 = Orderdetail::where('order_id', $order2['id'])->get(); $data2 = []; foreach ($order_detail2 as $k => $v) { $good2 = Goods::find($v->goods_id); $data2['goods_detail'][$k]['name'] = $good2->name; $data2['goods_detail'][$k]['main_img'] = $good2->main_img; $data2['goods_detail'][$k]['size'] = $good2->size; $data2['goods_detail'][$k]['unit'] = $good2->unit; $data2['goods_detail'][$k]['money'] = $v->money; $data2['goods_detail'][$k]['num'] = $v->num; $data2['goods_detail'][$k]['id'] = $v->goods_id; $data2['goods_detail'][$k]['detail_id'] = $v->id; $data2['goods_detail'][$k]['goods_price'] = $v->goods_price; $data2['goods_detail'][$k]['remark'] = $v->remark == null ? '' : $v->remark; } $all['order_master'] = array_merge($order1, $data1); $all['order_slave'] = array_merge($order2, $data2); return $this->success($all); } if(empty($master_order)){ return $this->error('450001','订单1信息有误,请核对后再合并'); } if(!in_array($master_order->status,[0,1,2])){ return $this->error('450001','订单1状态不符,不能合并'); } if(empty($slave_order)){ return $this->error('450001','订单2信息有误,请核对后再合并'); } if(!in_array($slave_order->status,[0,1,2])){ return $this->error('450001','订单2状态不符,不能合并'); } if($master_order->user_id!=$slave_order->user_id){ return $this->error('450001','下单人信息不一致,不能合并'); } $order_num1 = $master_num; $order_num2 = $slave_num; $order1 = Order::where('order_num', $order_num1) ->with(['get_address','get_user'])->first()->toArray(); $order_detail1 = Orderdetail::where('order_id', $order1['id'])->get(); $data1 = []; foreach ($order_detail1 as $k => $v) { $good1 = Goods::find($v->goods_id); $data1['goods_detail'][$k]['name'] = $good1->name; $data1['goods_detail'][$k]['main_img'] = $good1->main_img; $data1['goods_detail'][$k]['size'] = $good1->size; $data1['goods_detail'][$k]['unit'] = $good1->unit; $data1['goods_detail'][$k]['money'] = $v->money; $data1['goods_detail'][$k]['num'] = $v->num; $data1['goods_detail'][$k]['id'] = $v->goods_id; $data1['goods_detail'][$k]['detail_id'] = $v->id; $data1['goods_detail'][$k]['goods_price'] = $v->goods_price; $data1['goods_detail'][$k]['remark'] = $v->remark == null ? '' : $v->remark; } $order2 = Order::where('order_num', $order_num2) ->with(['get_address','get_user'])->first()->toArray(); $order_detail2 = Orderdetail::where('order_id', $order2['id'])->get(); $data2 = []; foreach ($order_detail2 as $k => $v) { $good2 = Goods::find($v->goods_id); $data2['goods_detail'][$k]['name'] = $good2->name; $data2['goods_detail'][$k]['main_img'] = $good2->main_img; $data2['goods_detail'][$k]['size'] = $good2->size; $data2['goods_detail'][$k]['unit'] = $good2->unit; $data2['goods_detail'][$k]['money'] = $v->money; $data2['goods_detail'][$k]['num'] = $v->num; $data2['goods_detail'][$k]['id'] = $v->goods_id; $data2['goods_detail'][$k]['detail_id'] = $v->id; $data2['goods_detail'][$k]['goods_price'] = $v->goods_price; $data2['goods_detail'][$k]['remark'] = $v->remark == null ? '' : $v->remark; } $all['order_master'] = array_merge($order1, $data1); $all['order_slave'] = array_merge($order2, $data2); return $this->success($all); } //手动合并订单 public function mergeOrder(Request $request){ $input=$request->all(); if($input['master_num']==$input['main']){ $master_num=$input['master_num']; $slave_num=$input['slave_num']; }else{ $master_num=$input['slave_num']; $slave_num=$input['master_num']; } $activity=Activity::where('is_ing',1)->where('disabled',0)->first(); $activity_id=$activity->id; $start_time=$activity->start_time; $end_time=$activity->end_time; $master_order=Order::where('order_num',$master_num)->whereBetween('created_at',[$start_time,$end_time])->where('is_deleted',0)->first(); $slave_order=Order::where('order_num',$slave_num)->whereBetween('created_at',[$start_time,$end_time])->where('is_deleted',0)->first(); /**非活动期间订单合并*/ if (empty($master_order) && empty($slave_order)){ $master_orders=Order::where('order_num',$master_num)->where('is_deleted',0)->first(); $slave_orders=Order::where('order_num',$slave_num)->where('is_deleted',0)->first(); if ($slave_orders->url!=$master_orders->url){ return $this->error('450001','订单不是同一个区域,不能合并!'); } if ($slave_orders->good_user_id!=$master_orders->good_user_id){ return $this->error('450001','订单所属者不适合同一个人,不能合并!'); } if(!in_array($master_orders->status,[0,1,2])){ return $this->error('450001','主订单状态不符,不能合并'); } if(!in_array($slave_orders->status,[0,1,2])){ return $this->error('450001','非主订单状态不符,不能合并'); } if($master_orders->user_id!=$slave_orders->user_id){ return $this->error('450001','下单人信息不一致,不能合并'); } //原订单金额和数量 $origin_money=$master_orders->money; $origin_total=$master_orders->total; $master_orders->total+=$slave_orders->total; $master_orders->money+=$slave_orders->money; $master_orders->pay_money+=$slave_orders->pay_money; $master_orders->no_pay_money+=$slave_orders->no_pay_money; $master_orders->wait_back_money+=$slave_orders->wait_back_money; if($master_orders->money==$master_orders->pay_money){ $master_orders->pay_status=2; }elseif($master_orders->money>$master_orders->pay_money){ if($master_orders->pay_money==0){ $master_orders->pay_status=0; }else{ $master_orders->pay_status=1; } }elseif($master_orders->money<$master_orders->pay_money){ $master_orders->pay_status=3; } $master_orders->is_merge=1; $master_orders->status=0; //合并订单2详情 $slave_detail=OrderDetail::where('order_id',$slave_orders->id)->get(); DB::beginTransaction(); try{ $goods_log=''; foreach($slave_detail as $key=>$val){ if(empty($goods_log)){ $goods_log='商品'.$val->goods_name.'('.$val->goods_size.'),数量为'.$val->num; }else{ $goods_log.=',商品'.$val->goods_name.'('.$val->goods_size.'),数量为'.$val->num; } $master_detail=OrderDetail::where('order_id',$master_orders->id) ->where('goods_id',$val->goods_id) ->where('goods_size',$val->goods_size)->first(); if($master_detail){ $master_detail->num+=$val->num; $master_detail->money+=$val->money; $master_detail->save(); }else{ OrderDetail::create([ 'order_id'=>$master_orders->id, 'goods_id'=>$val->goods_id, 'num'=>$val->num, 'money'=>$val->money, 'remark'=>$val->remark, 'goods_name'=>$val->goods_name, 'goods_size'=>$val->goods_size, 'goods_price'=>$val->goods_price, 'goods_unit'=>$val->goods_unit ]); } } $master_detail_after=OrderDetail::where('order_id',$master_orders->id)->get(); $master_orders->type=count($master_detail_after); $master_orders->save(); //支付记录转移到主订单 Userpay::where('order_num',$slave_num)->update([ 'order_num'=>$master_num ]); if($master_orders->address_id!=$slave_orders->address_id){ Address::where('id',$slave_orders->address_id)->update(['is_deleted'=>1]); } // Order::where('order_num',$slave_num)->delete(); Order::where('order_num',$slave_num)->update(['is_deleted'=>1]); $log_text='后台合并了订单,原订单总金额为'.$origin_money.',商品数量为'.$origin_total.'。合并后订单金额为'.$master_orders->money.',合并后商品数量为'.$master_orders->total.',添加订单包含:'.$goods_log; OrderLog::create([ 'order_id'=>$master_orders->id, 'user_id'=>$master_orders->user_id, 'log_name'=>Auth::user()->name, 'log_title'=>'合并订单', 'log_text'=>$log_text ]); if (!empty($input['remark'])){ OrderRemark::create([ 'order_id' => $master_orders->id, 'name' =>Auth::user()->name, // 'level' => null, 'type' => 0, 'remark' => $input['remark'] ]); } $num_gift=0; foreach($master_detail_after as $key=>$val){ if($val->goods_unit=='盒'){ $num_gift+=$val['num']; } if($val->goods_unit=='件'){ $num_gift+=$val['num']*2; } } $user=User::where('id',$master_orders->user_id)->first(); /* * 处理订单 * **/ $arr=OrderDetail::where('order_id',$slave_orders->id)->pluck('num','goods_id')->toArray(); $sizes_arr=array_keys($arr); $nums_arr=array_values($arr); $arr_one=''; /* * 处理订单 * **/ $mas_arr=OrderDetail::where('order_id',$master_orders->id)->pluck('num','goods_id')->toArray(); $mas_size_arr=array_keys($mas_arr); $mas_nums_arr=array_values($mas_arr); // $arr_two=$this->DealOrder($mas_size_arr,$mas_nums_arr); $order=Order::find($master_orders->id); if (!$order->save()){ throw new \Exception('1'); } $this->Send($master_orders->ZDL_id,$slave_orders->ZDL_id,$master_orders->url); DB::commit(); return $this->success([]); }catch(\Exception $e){ DB::rollBack(); return $this->error($e->getMessage()); } } return $this->error(45001,'活动期间不能合并 '); if(empty($master_order)){ return $this->error('450001','主订单信息有误,请核对后再合并'); } if(!in_array($master_order->status,[0,1,2])){ return $this->error('450001','主订单状态不符,不能合并'); } if(empty($slave_order)){ return $this->error('450001','非主订单信息有误,请核对后再合并'); } if(!in_array($slave_order->status,[0,1,2])){ return $this->error('450001','非主订单状态不符,不能合并'); } if($master_order->user_id!=$slave_order->user_id){ return $this->error('450001','下单人信息不一致,不能合并'); } //原订单金额和数量 $origin_money=$master_order->money; $origin_total=$master_order->total; $master_order->total+=$slave_order->total; $master_order->money+=$slave_order->money; $master_order->pay_money+=$slave_order->pay_money; $master_order->no_pay_money+=$slave_order->no_pay_money; $master_order->wait_back_money+=$slave_order->wait_back_money; if($master_order->money==$master_order->pay_money){ $master_order->pay_status=2; }elseif($master_order->money>$master_order->pay_money){ if($master_order->pay_money==0){ $master_order->pay_status=0; }else{ $master_order->pay_status=1; } }elseif($master_order->money<$master_order->pay_money){ $master_order->pay_status=3; } $master_order->is_merge=1; $master_order->status=0; //合并订单2详情 $slave_detail=OrderDetail::where('order_id',$slave_order->id)->get(); DB::beginTransaction(); try{ $goods_log=''; foreach($slave_detail as $key=>$val){ if(empty($goods_log)){ $goods_log='商品'.$val->goods_name.'('.$val->goods_size.'),数量为'.$val->num; }else{ $goods_log.=',商品'.$val->goods_name.'('.$val->goods_size.'),数量为'.$val->num; } $master_detail=OrderDetail::where('order_id',$master_order->id) ->where('goods_id',$val->goods_id) ->where('goods_size',$val->goods_size)->first(); if($master_detail){ $master_detail->num+=$val->num; $master_detail->money+=$val->money; $master_detail->save(); }else{ OrderDetail::create([ 'order_id'=>$master_order->id, 'goods_id'=>$val->goods_id, 'num'=>$val->num, 'money'=>$val->money, 'remark'=>$val->remark, 'goods_name'=>$val->goods_name, 'goods_size'=>$val->goods_size, 'goods_price'=>$val->goods_price, 'goods_unit'=>$val->goods_unit ]); } } $master_detail_after=OrderDetail::where('order_id',$master_order->id)->get(); $master_order->type=count($master_detail_after); $master_order->save(); //支付记录转移到主订单 Userpay::where('order_num',$slave_num)->update([ 'order_num'=>$master_num ]); if($master_order->address_id!=$slave_order->address_id){ Address::where('id',$slave_order->address_id)->update(['is_deleted'=>1]); } // Order::where('order_num',$slave_num)->delete(); Order::where('order_num',$slave_num)->update(['is_deleted'=>1]); $log_text='后台合并了订单,原订单总金额为'.$origin_money.',商品数量为'.$origin_total.'。合并后订单金额为'.$master_order->money.',合并后商品数量为'.$master_order->total.',添加订单包含:'.$goods_log; OrderLog::create([ 'order_id'=>$master_order->id, 'user_id'=>$master_order->user_id, 'log_name'=>Auth::user()->name, 'log_title'=>'合并订单', 'log_text'=>$log_text ]); if (!empty($input['remark'])){ OrderRemark::create([ 'order_id' => $master_order->id, 'name' =>Auth::user()->name, // 'level' => null, 'type' => 0, 'remark' => $input['remark'] ]); } $num_gift=0; foreach($master_detail_after as $key=>$val){ if($val->goods_unit=='盒'){ $num_gift+=$val['num']; } if($val->goods_unit=='件'){ $num_gift+=$val['num']*2; } } $order_gift=OrderGift::where('order_id',$master_order->id)->first(); if($order_gift){ $gifts = Gifts::where('activity_id',$activity_id)->get(); foreach($gifts as $key=>$val){ $og=OrderGift::where('gift_id',$val->id)->where('order_id',$master_order->id)->first(); if($og){ if($num_gift >= $val->limit_num){ $og->num=floor($num_gift/$val->num); $og->save(); }else{ $og->delete(); } }else{ if($num_gift >= $val->limit_num) { OrderGift::create([ 'gift_id' => $val->id, 'order_id' => $master_order->id, 'activity_id' => $activity_id, 'num' => floor($num_gift / $val->num) ]); } } } }else{ $gifts = Gifts::where('activity_id',$activity_id)->get(); foreach($gifts as $key=>$val) { OrderGift::create([ 'gift_id' => $val->id, 'order_id' => $master_order->id, 'activity_id' => $activity_id, 'num' => floor($num_gift / $val->num) ]); } } $user=User::where('id',$master_order->user_id)->first(); /* * 处理订单 * **/ $arr=OrderDetail::where('order_id',$slave_order->id)->pluck('num','goods_id')->toArray(); $sizes_arr=array_keys($arr); $nums_arr=array_values($arr); $arr_one=''; /* * 处理订单 * **/ $mas_arr=Orderdetail::where('order_id',$master_order->id)->pluck('num','goods_id')->toArray(); $mas_size_arr=array_keys($mas_arr); $mas_nums_arr=array_values($mas_arr); // $arr_two=$this->DealOrder($mas_size_arr,$mas_nums_arr); $order=Order::find($master_order->id); if (!$order->save()){ throw new \Exception('1'); } DB::commit(); // event(new ChangeBigGiftBagEvent(['order_id'=>$master_order->id,'type'=>'edit','n'=>'1'])); // event(new ChangeBigGiftBagEvent(['order_id'=>$slave_order->id,'type'=>'cancel'])); return $this->success([]); }catch(\Exception $e){ DB::rollBack(); return $this->error($e->getMessage()); } } public function Send($master_id,$id,$url){ $url_info=UrlList::where('url',$url)->first(); if ($url_info->time<(time()+30)){ $token=$this->getToekn($url,$url_info->id); }else{ $token=$url_info->token; } $url=$url.'/api/Admin/DZCompanyCustomerOrderSubmit/CustomerOrderMerge'; $client=new Client(); $data=[ 'MainCustomerOrderID'=>$master_id, 'CustomerOrderIDs'=>[$id] ]; $re=$client->post($url,[ 'headers' => [ 'Content-Type' => 'application/json', // 设置请求头 'Auth-AdminToken' => $token, // 如果需要身份验证令牌 ], 'json'=>$data ]); Log::error($re->getBody()->getContents()); } protected function getToekn($url,$id){ $client=new Client(); $re=$client->post($url.'/api/Admin/System/MainSubLogin',[ 'headers' => [ 'Content-Type' => 'application/json', // 设置请求头 // 'Auth-AdminToken' => 'SjI5Ym5US0xZVzZjSVd4V1FheHg4VG5hL1dpWDJwVi82RDdMY09WU3NTeENIdmJUdmxxTEFVOHZSZkRiaXM1c3RuYUlZTGVIcmI2NGlUdXJ4MXZ6dkREWmRoY283UG5TclQ2RnI5amV3UGYzYjBjNkZ0RTFzUElzRzRhV2F1d0M=', // 如果需要身份验证令牌 ], 'json'=>['UserName'=>'dwadmin','Password'=>'zS76UMV9'] // 'json'=>['UserName'=>'dwadmin','Password'=>'4qNOShj4'] ]); $res=$re->getBody()->getContents(); $info=json_decode($res,true); $urlinfo=UrlList::find($id); // Log::error($res); // Log::error($info); if (!$info['errcode']){ $token=$info['data']['accessToken']; $urlinfo->token=$token; $urlinfo->time=time()+9*60; $urlinfo->save(); return $token; }else{ Log::error($urlinfo->name.'生成token出错===='.$info['errcode']); return 0; } } public function add_order_log(Request $request) { $orderlog = new OrderRemark(); $orderlog->order_id = $request->order_id; $orderlog->remark = $request->remark; $orderlog->name = Auth::user()->name; $orderlog->type = 2; $orderlog->save(); return $this->success([]); } public function getCancelWhy() { return $this->success(OrderCancelWhy::get()); } public function addCancelWhy(Request $request) { $input=$request->all(); $res= OrderCancelWhy::create([ 'content'=>$input['content'] ]); if($res){ return $this->success([]); }else{ return $this->error(); } } /** *notes:订单作废 *author:kele *time:times */ public function destory_order(Request $request) { $rules = [ 'order_num' => 'required', 'remark' => 'required' ]; $message = [ 'order_num.required' => '订单id是必填项', 'remark.required' => '订单备注是必填项' ]; $vali = Validator::make($request->all(), $rules, $message); if ($vali->fails()) { return $this->error(40016, '', $vali->errors()->first()); } $order = Order::where('order_num', $request->order_num)->first(); if (!$order) { return $this->error(300, '', '查无此订单,请重试'); } DB::beginTransaction(); try { $order->is_deleted = 1; if ($order->pay_money == 0) { $order->pay_status = 0; } else { $order->pay_status = 3; $order->wait_back_money = $order->pay_money; } if (!$order->save()) { throw new \Exception('1'); } $this->destroy_send($order->ZDL_id,$order->url,$request->remark); //作废备注 OrderRemark::create([ 'order_id' => $order->id, 'name' => Auth::user()->name, // 'level' => '', 'type' => '0', 'remark' => $request->remark ]); DB::commit(); return $this->success([]); } catch (\Exception $exception) { DB::rollBack(); Log::info('订单作废错误信息' . $exception); return $this->error('40018', '', '订单作废失败,请重试'); } } public function destroy_send($id,$url,$remark){ $url_info=UrlList::where('url',$url)->first(); if ($url_info->time<(time()+30)){ $token=$this->getToekn($url,$url_info->id); }else{ $token=$url_info->token; } $url=$url.'/api/Admin/CompanyCustomerOrderSubmit/OrderReviewFail'; $client=new Client(); $data=[ 'ReviewRemark'=>$remark, 'ID'=>$id ]; $re=$client->post($url,[ 'headers' => [ 'Content-Type' => 'application/json', // 设置请求头 'Auth-AdminToken' => $token, // 如果需要身份验证令牌 ], 'json'=>$data ]); Log::error('订单作废:'.$re->getBody()->getContents()); } }