file('file'); // if ( !$file->isValid()) { //判断文件是否有效 // return redirect() // ->back() // ->withErrors('文件上传失败,请重新上传'); // } // $array = Excel::toArray(new ExpressImport, request()->file('file')); $input=$request->all(); $excel=$input['data']; DB::beginTransaction(); try{ foreach ($excel as $k=>$v){ $arr=(array)($v); $user=User::where('mobile',$arr['代理公司手机号'])->first(); if (!$user){ return $this->error(50028,'根据表格中第'.($k+2).'行的代理公司手机号查不到对应的代理'); } if ($user->level!=3){ return $this->error(50028,'根据表格中第'.($k+2).'行的代理公司手机号对应的代理不是代理公司'); } $re=Studio::where('user_id',$user->id)->first(); if ($re){ return $this->error(50028,'表格中第'.($k+2).'行的代理公司已存在'.$arr['代理公司手机号'],$re); } $studio_user=new Studio(); $studio_user->studio_name=$arr['工作室名称']; $studio_user->user_id=$user->id; $studio_user->status=0; $studio_user->province=$arr['省份']; $studio_user->city=$arr['城市']; $studio_user->area=$arr['地区']; $studio_user->address=$arr['详细地址']; if (!$studio_user->save()){ throw new \Exception('1'); } } DB::commit(); return $this->success([]); }catch (\Exception $exception){ DB::rollBack(); return $this->error(50023,$exception->getMessage()); } } public function get_studio(Request $request){ $input=$request->all(); $page_index=$input['page_index']; $page_size=$input['page_size']; $num=($page_index-1)*$page_size; $activity_id=$input['activity_id']; $studio=Studio::where('studios.status',$input['status'])->with(['get_user'=>function($q){ $q->select('users.level','users.id','users.nickname','users.mobile','users.realname'); },'get_bonus'=>function($q)use($activity_id){ $q->where('studio_user.activity_id',$activity_id); }]); if ($input['search_user']){ $user_ids=User::where('level',3)->where('mobile','like','%'.$input['search_user'].'%')->orwhere('nickname','like','%'.$input['search_user'].'%')->pluck('id'); $studio=$studio->whereIn('studios.user_id',$user_ids); } if ($input['search_content']){ $studio=$studio->where('studios.studio_name','like','%'.$input['search_content'].'%'); } if (isset($input['sort_type'])){ if ($input['sort_type']==0){ $studio=$studio->leftJoin('studio_user',function ($q)use ($activity_id){ $q->on('studio_user.studio_id','studios.id')->where('studio_user.activity_id',$activity_id); })->select('studios.studio_name','studios.province','studios.status','studios.user_id','studios.id','studios.city','studios.area','studios.address',DB::raw('ifnull(studio_user.order_money,0) as total')); }elseif ($input['sort_type']==1){ $studio=$studio->leftJoin('studio_user',function ($q)use ($activity_id){ $q->on('studio_user.studio_id','studios.id')->where('studio_user.activity_id',$activity_id); })->select('studios.studio_name','studios.province','studios.status','studios.user_id','studios.id','studios.city','studios.area','studios.address',DB::raw('ifnull(studio_user.bonus,0) as total')); }else{ $studio=$studio->leftJoin('studio_user',function ($q)use ($activity_id){ $q->on('studio_user.studio_id','studios.id')->where('studio_user.activity_id',$activity_id); })->select('studios.studio_name','studios.province','studios.status','studios.city','studios.user_id','studios.id','studios.area','studios.address',DB::raw('ifnull(studio_user.exchange_bonus,0) as total')); } if ($input['sort']==0){ $desc='asc'; }else{ $desc='desc'; } $studio=$studio->orderBy('total',$desc); } $count=$studio->count(); $data=$studio->orderBy('studios.id')->take($page_size)->skip($num)->get(); return $this->success_list($data,'',$count); } public function exportstudio(Request $request){ $input=$request->all(); $activity=Activity::find($input['activity_id']); $studio=Studio::where('status',$input['status']); if ($input['search_user']){ $user_ids=User::where('level',3)->where('mobile','like','%'.$input['search_user'].'%')->orwhere('nickname','like','%'.$input['search_user'].'%')->pluck('id'); $studio=$studio->whereIn('user_id',$user_ids); } if ($input['search_content']){ $studio=$studio->where('studio_name','like','%'.$input['search_content'].'%'); } $activity_id=$input['activity_id']; $data=$studio->with(['get_user'=>function($q){ $q->select('level','id','nickname','mobile','realname'); },'get_bonus'=>function($q)use($activity_id){ $q->where('activity_id',$activity_id); }])->get(); $arr=[]; foreach ($data as $k=>$v){ $arr[$k]['工作室名称']=$v->studio_name; $arr[$k]['负责人昵称']=$v->get_user->nickname; $arr[$k]['负责人姓名']=$v->get_user->realname; $arr[$k]['负责人电话']=$v->get_user->mobile; $arr[$k]['工作室地址']=$v->province.$v->city.$v->area.$v->address; if ($v->get_bonus){ $arr[$k]['订单金额']=$v->get_bonus->order_money??0; $arr[$k]['产品补助金']=$v->get_bonus->bonus??0; $arr[$k]['已兑换补助金']=$v->get_bonus->exchange_bonus??0; }else{ $arr[$k]['订单金额']=0; $arr[$k]['产品补助金']=0; $arr[$k]['已兑换补助金']=0; } $arr[$k]['订单奖励所属活动']=$activity->title; } return $this->success_list($arr); } /* *工作室兑换订单 * ***/ public function studio_order(Request $request){ $input=$request->all(); $page_index=$input['page_index']; $page_size=$input['page_size']; $num=($page_index-1)*$page_size; $order=StudioOrder::where('activity_id',$input['activity_id']); if ($input['search_content']){ $ids=User::where('level',3)->where('mobile','like','%'.$input['search_content'].'%')->orwhere('nickname','like','%'.$input['search_content'].'%')->pluck('id'); $order=$order->whereIn('user_id',$ids); } if ($input['search_number']){ $order=$order->where('order_num','like','%'.$input['search_number'].'%'); } $count=$order->count(); $data=$order->with(['get_user'=>function($q){ $q->select('id','nickname','mobile'); },'get_address'])->orderByDesc('created_at')->take($page_size)->skip($num)->get(); return $this->success_list($data,'',$count); } /* * 订单详情 * */ public function order_detail(Request $request) { $order_num = $request->id; $order = StudioOrder::where('id', $order_num)->with(['get_order_log', 'get_address', 'get_user'])->first()->toArray(); $order_detail = StudioOrderDetail::where('order_id', $order['id'])->get(); $data = []; foreach ($order_detail as $k => $v) { $good = StudioGood::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; } $all = array_merge($order, $data); // return $all; return $this->success($all); } /* * 订单的修改 * */ public function order_update(Request $request) { $rule = [ 'order_id' => 'required', 'size_id' => 'required', 'num' => 'required', 'total' => 'required', 'money' => 'required', 'type' => 'required', ]; $message = [ 'required' => ':attribute不能为空', ]; $attributes = [ 'order_id' => '订单id', 'size_id' => 'size_id', 'total' => '商品总数量', 'type' => '商品中总类型', 'num' => '单类商品商量', 'money' => '商品金额', ]; $vali = Validator::make($request->all(), $rule, $message, $attributes); if ($vali->fails()) { return $this->error('40010', '', $vali->errors()->first()); } $input = $request->all(); $activity_id=$input['activity_id']; DB::beginTransaction(); try { $order = StudioOrder::find($input['order_id']); $studio_user=StudioUser::where('user_id',$order->user_id)->where('activity_id',$order->activity_id)->first(); if (!$studio_user){ return $this->error(50021,'该用户没有奖励金'); } if ($studio_user->bonus+$order->money<$input['money']){ return $this->error(50021,'奖励金不足'); } $studio_user->exchange_bonus+=$input['money']-$order->money; if (!$studio_user->save()){ throw new \Exception('1'); } $num_gift=0;$mes_info=null; foreach ($input['size_id'] as $k => $v) { $orderdetail = StudioOrderDetail::where('order_id', $order->id)->where('goods_id', $v)->first(); $good = StudioGood::find($v); if ($orderdetail) { if ($orderdetail->num != $input['num'][$k]) { $orderlog = new StudioOrderLog(); $orderlog->order_id = $order->id; $orderlog->user_id = $order->user_id; $orderlog->log_name = Auth::user()->name; $orderlog->log_title = '修改订单商品数量'; $orderlog->log_text = '商品' . $orderdetail->goods_name . ' 的' . $orderdetail->goods_size . '款式原数量为' . $orderdetail->num . '更改后的数量为' . $input['num'][$k]; if(empty($mes_info)){ $mes_info='修改'.$orderdetail->goods_name.'-'. $orderdetail->goods_size .',原数量:'.$orderdetail->num. ',更改后的数量:'.$input['num'][$k]; }else{ if(mb_strlen($mes_info) < 100){ $mes_info.=';修改'.$orderdetail->goods_name.'-'. $orderdetail->goods_size .',原数量:'.$orderdetail->num. ',更改后的数量:'.$input['num'][$k]; } } if (!$orderlog->save()) { throw new \Exception('1'); } $count = $input['num'][$k] - $orderdetail->num; if ($count > $good->storage) { return $this->error(40013, '商品' . $good->name . '的' . $good->size . '型号数量不足'); } $goods = StudioGood::find($v); $goods->storage = $goods->storage - $input['num'][$k] + $orderdetail->num; $goods->sold_num = $goods->sold_num + $input['num'][$k] - $orderdetail->num; if (!$goods->save()) { throw new \Exception('1'); } $orderdetail->num = $input['num'][$k]; $orderdetail->money = $input['num'][$k] * $good->money; if (!$orderdetail->save()) { throw new \Exception('1'); } }else{ if($good->unit=='套'){ $num_gift+=$input['num'][$k]; } if($good->unit=='件'){ $num_gift+=$input['num'][$k]*2; } } } else { $orderlog = new StudioOrderLog(); $orderlog->order_id = $order->id; $orderlog->user_id = $order->user_id; $orderlog->log_name = Auth::user()->name; $orderlog->log_title = '修改订单'; $orderlog->log_text = '添加了商品' . $good->name . ' 的' . $good->size . '款式,数量为' . $input['num'][$k]; if(empty($mes_info)){ $mes_info='添加'.$good->name.'-'.$good->size.'数量:'.$input['num'][$k]; }else { if (mb_strlen($mes_info) < 100) { $mes_info .= ';添加' . $good->name . '-' . $good->size . '数量:' . $input['num'][$k]; } } if (!$orderlog->save()) { throw new \Exception('1'); } $goods = StudioGood::find($v); $goods->storage = $goods->storage - $input['num'][$k]; $goods->sold_num = $goods->sold_num + $input['num'][$k]; if (!$goods->save()) { throw new \Exception('1'); } $orderdetail = new StudioOrderDetail(); $orderdetail->goods_name = $good->name; $orderdetail->goods_size = $good->size; $orderdetail->goods_price= $good->money; $orderdetail->goods_unit= $good->unit; $orderdetail->order_id = $order->id; $orderdetail->goods_id = $v; $orderdetail->num = $input['num'][$k]; $orderdetail->money = $input['num'][$k] * $good->money; if (!$orderdetail->save()) { throw new \Exception('1'); } $count = $input['num'][$k]; if ($count > $good->storage) { return $this->error(40013, '商品' . $good->name . '的' . $good->size . '型号数量不足'); } } } foreach ($input['del_id'] as $k => $v) { $orderdetail = StudioOrderDetail::where('order_id', $order->id)->where('goods_id', $v)->first(); $good = StudioGood::find($v); $orderlog = new StudioOrderLog(); $orderlog->order_id = $order->id; $orderlog->user_id = $order->user_id; $orderlog->log_name = Auth::user()->name; $orderlog->log_title = '修改订单'; $orderlog->log_text = '删除了商品' . $good->name . ' 的' . $good->size . '款式,数量为' . $orderdetail->num; if(empty( $mes_info)){ $mes_info='删除'.$good->name.'-'.$good->size.'数量:'.$orderdetail->num; }else { if (mb_strlen($mes_info) < 100) { $mes_info .= ';删除' . $good->name . '-' . $good->size . '数量:' . $orderdetail->num; } } if (!$orderlog->save()) { throw new \Exception('1'); } $goods = StudioGood::find($v); $goods->storage = $goods->storage + $orderdetail->num; $goods->sold_num = $goods->sold_num - $orderdetail->num; if (!$goods->save()) { throw new \Exception('1'); } if (!$orderdetail->delete()) { throw new \Exception('1'); } } $money_old = $order->money; $total_old = $order->total; $type_old = $order->type; $total = $input['total']; $money = $input['money']; $type = $input['type']; $order->money = $money; $order->total = $total; $order->type = $type; if (!$order->save()) { throw new \Exception('s'); } $orderlog = new StudioOrderLog(); $orderlog->order_id = $order->id; $orderlog->user_id = $order->user_id; $orderlog->log_name = Auth::user()->name; $orderlog->log_title = '修改订单'; $orderlog->log_text = '原订单总金额为' . $money_old . ',商品数量为' . $total_old . ',商品种类为' . $type_old . '。新订单金额为' . $money . ',商品数量为' . $total . ',种类为' . $type; if (!$orderlog->save()) { throw new \Exception('1'); } DB::commit(); return $this->success([]); } catch (\Exception $exception) { DB::rollBack(); Log::info('订单修改的错误信息为' . $exception); return $this->error(40013, '订单修改出错'); } } /** *notes:订单作废 *author:kele *time:times */ public function destory_order(Request $request) { $rules = [ 'order_id' => 'required', 'remark' => 'required' ]; $message = [ 'order_id.required' => '订单id是必填项', 'remark.required' => '订单备注是必填项' ]; $vali = Validator::make($request->all(), $rules, $message); if ($vali->fails()) { return $this->error(40016, '', $vali->errors()->first()); } $order = StudioOrder::where('id', $request->order_id)->first(); if (!$order) { return $this->error(300, '', '查无此订单,请重试'); } DB::beginTransaction(); try { $order->is_deleted = 1; $orderdetail = StudioOrderDetail::where('order_id', $order->id)->get(); foreach ($orderdetail as $k => $v) { $good = StudioGood::find($v->goods_id); $good->storage = $good->storage + $v->num; $good->sold_num = $good->sold_num - $v->num; if (!$good->save()) { throw new \Exception('2'); } } $user=StudioUser::where('user_id',$order->user_id)->where('activity_id',$order->activity_id)->first(); $user->exchange_bonus-=$order->money; if (!$user->save()){ throw new \Exception('1'); } $log=new StudioOrderLog(); $log->user_id=$order->user_id; $log->order_id=$order->id; $log->log_name=Auth::user()->name; $log->log_title='作废订单'; $log->log_text=$request->remark; if (!$log->save()){ throw new \Exception(2); } DB::commit(); return $this->success([]); } catch (\Exception $exception) { DB::rollBack(); Log::info('订单作废错误信息' . $exception); return $this->error('40018', '', '订单作废失败,请重试'); } } /*地址管理---展示地址*/ public function show_address(Request $request) { $id = $request->user_id; $address = Address::where('user_id', $id)->where('belong_id',$id)->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; } return $this->success_list($data); } public function order_address(Request $request) { $order = StudioOrder::find($request->order_id); $order->address_id = $request->address_id; $order->save(); return $this->success([]); } public function orderBreakUpCourier(Request $request) { ini_set('memory_limit', '1024M'); $input = $request->all(); if ($request->has('id')) { $list = StudioOrder::leftJoin('studio_order_detail', 'studio_order.id', '=', 'studio_order_detail.order_id') ->leftJoin('users', 'studio_order.user_id', '=', 'users.id') // ->join('warea','warea.id','=','users.warea_id') ->leftJoin('studio_goods', 'studio_goods.id', '=', 'studio_order_detail.goods_id') ->leftJoin('address', 'address.id', '=', 'studio_order.address_id') ->select('studio_order.order_num','studio_order.created_at','studio_order.id', 'studio_order.remark', 'users.nickname as u_nickname', 'users.mobile as u_mobile','users.warea_id', 'users.realname as u_name', 'address.username', 'address.mobile', 'address.address', 'address.province', 'address.city', 'address.town', 'studio_goods.main_attr', 'studio_goods.sec_attr', 'studio_goods.size', DB::raw('SUM(studio_order_detail.num) as total')) ->whereIn('studio_order.id', $request->id) ->groupBy('studio_order_detail.order_id', 'studio_goods.sec_attr', 'studio_goods.size', 'studio_goods.main_attr') ->orderBy('studio_order.id', 'studio_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 = StudioOrder::leftJoin('studio_order_detail', 'studio_order.id', '=', 'studio_order_detail.order_id') ->leftJoin('users', 'studio_order.user_id', '=', 'users.id') // ->join('warea','warea.id','=','users.warea_id') ->leftJoin('studio_goods', 'studio_goods.id', '=', 'studio_order_detail.goods_id') ->leftJoin('address', 'address.id', '=', 'studio_order.address_id') ->select('studio_order.order_num','studio_order.created_at','studio_order.id', 'studio_order.remark', 'users.nickname as u_nickname', 'users.mobile as u_mobile','users.warea_id', 'users.realname as u_name', 'address.username', 'address.mobile', 'address.address', 'address.province', 'address.city', 'address.town', 'studio_goods.main_attr', 'studio_goods.sec_attr', 'studio_goods.size', DB::raw('SUM(studio_order_detail.num) as total')); $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('studio_order.order_num', $order_no); } if ($search_name) { // $s=substr(trim($search_name),0,4); // if($s=='DWBS'){ // $data->where('order_test.order_num',trim($search_name)); // }else{ $ids = $this->getUserIds($search_name); $data->whereIn('studio_order.user_id', $ids); // } } if ($start_time && $end_time && empty($activity_id)) { $data->whereBetween('studio_order.created_at', [$start_time, $end_time]); } if ($activity_id) { $actice = Activity::find($activity_id); $data->whereBetween('studio_order.created_at', [$actice->start_time, $actice->end_time]); } $list = $data->groupBy('studio_order_detail.order_id', 'studio_goods.sec_attr', 'studio_goods.size', 'studio_goods.main_attr') ->orderBy('studio_order.id', 'studio_order_detail.id') ->get()->toArray(); } $dd = $this->dataGroup($list, 'order_num'); $d = []; foreach ($dd as $key => $val) { $info['u_nickname'] = $val[0]['u_nickname']; $info['u_name'] = $val[0]['u_name']; $info['u_mobile'] = $val[0]['u_mobile']; $info['username'] = $val[0]['username']; $info['mobile'] = $val[0]['mobile']; $info['address'] = $val[0]['address']; $info['province'] = $val[0]['province']; $info['city'] = $val[0]['city']; $info['town'] = $val[0]['town']; $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'] = $val[0]['remark']; $d[$key]['data'] = $info; $d[$key]['精装'] = []; $d[$key]['普通'] = []; $d[$key]['精装混合'] = []; $d[$key]['普通混合'] = []; $x1 = 0; $y1 = [];//精装 $x = 0; $y = [];//普通 foreach ($val as $k => $v) { if ($v['main_attr'] == '大卫博士精装版') { $main_attr = '精'; $n = floor($v['total'] / 10); for ($i = 0; $i < $n; $i++) { $cc = []; $cc['main_attr'] = $main_attr; $cc['sec_attr'] = $v['sec_attr']; $cc['size'] = $v['size']; $cc['num'] = 10; array_push($d[$key]['精装'], $cc); } if ($v['total'] % 10 > 0) { $t1 = $v['total'] % 10; if ($x1 + $t1 >= 10) { $x1 = $x1 + $t1 - 10; $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'] % 10; if ($y1) { array_pop($d[$key]['精装混合']); } array_push($y1, $z1); array_push($d[$key]['精装混合'], $y1); } } } else { $n = floor($v['total'] / 6); if ($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); } protected function dataGroup(array $dataArr, string $keyStr): array { $newArr = []; foreach ($dataArr as $k => $val) { //数据根据日期分组 $newArr[$val[$keyStr]][] = $val; } return $newArr; } /* * 工作室兑换开启时间 * ***/ public function set_studio_time(Request $request){ $input=$request->all(); $activity_id=$request->activity_id; $start_time=$input['start_time']; $end_time=$input['end_time']; $re=Activity::where('id',$activity_id)->first(); $re->user_bonus_start=$start_time; $re->user_bonus_end=$end_time; $re->save(); return $this->success([]); } public function get_studio_time(Request $request){ $activity_id=$request->activity_id; $re=Activity::where('id',$activity_id)->first(); return $this->success(['start_time'=>$re->user_bonus_start,'end_time'=>$re->user_bonus_end]); } public function GetStudioSystem(){ $re=System::whereIn('keys',['studio_first_reward','studio_second_reward','studio_third_reward'])->select('values','keys')->get(); $arr=[]; foreach ($re as $k=>$v){ $res=explode('/',$v->values); $arr[$v->keys]['money']=$res[0]; $arr[$v->keys]['scale']=$res[1]; } return $this->success($arr); } public function SetStudioSystem(Request $request){ $input=$request->all(); $studio_first_reward_money=$input['studio_first_reward_money']; $studio_second_reward_money=$input['studio_second_reward_money']; $studio_third_reward_money=$input['studio_third_reward_money']; $studio_first_reward_scale=$input['studio_first_reward_scale']; $studio_second_reward_scale=$input['studio_second_reward_scale']; $studio_third_reward_scale=$input['studio_third_reward_scale']; System::where('keys','studio_first_reward')->update(['values'=>$studio_first_reward_money.'/'.$studio_first_reward_scale]); System::where('keys','studio_second_reward')->update(['values'=>$studio_second_reward_money.'/'.$studio_second_reward_scale]); System::where('keys','studio_third_reward')->update(['values'=>$studio_third_reward_money.'/'.$studio_third_reward_scale]); return $this->success([]); } /* * 上传物流单号 * */ public function send_order(Request $request) { $time=Carbon::now()->toDateTimeString(); $file = $request->file('file'); if ( !$file->isValid()) { //判断文件是否有效 return redirect() ->back() ->withErrors('文件上传失败,请重新上传'); } $array = Excel::toArray(new ExpressImport, request()->file('file')); if(count($array)>5001){ return $this->error('450001',"单次最多导入5000条数据"); } $newArr=[]; $one = array_shift($array[0]); $express_num_keys=array_search('快递单号',$one); if(!$express_num_keys){ return $this->error('450001',"表头无'快递单号'字段"); } $order_num_keys=array_search('订单编号',$one); if(!$express_num_keys){ return $this->error('450001',"表头无'订单编号'字段"); } $express_total=array_search('数据求和',$one); if(!$express_total){ return $this->error('450001',"表头无'数据求和'字段"); } $express_com_keys=array_search('快递公司',$one); if(!$express_num_keys){ return $this->error('450001',"表头无'快递公司'字段"); } $express_status_keys=array_search('发货状态',$one); if(!$express_status_keys){ return $this->error('450001',"表头无'发货状态'字段"); } $l_keys=array_search('L',$one); $xl_keys=array_search('XL',$one); $xxl_keys=array_search('XXL',$one); $xxxl_keys=array_search('XXXL',$one); $vm_keys=array_search('女M',$one); $vl_keys=array_search('女L',$one); $vxl_keys=array_search('女XL',$one); $vxxl_keys=array_search('女XXL',$one); $vxxxl_keys=array_search('女XXXL',$one); $wxl_keys=array_search('5XL',$one); $keys=[$l_keys,$xl_keys,$xxl_keys,$xxxl_keys,$vm_keys,$vl_keys,$vxl_keys,$vxxl_keys,$vxxxl_keys,$wxl_keys]; $express_code=['中通快递'=>'ZTO','中通快运'=>'ZTOKY','德邦快递'=>'DBL','德邦物流'=>'DBL','邮政EMS'=>'EMS']; $arres=[]; $o=0; foreach ($array[0] as $k=>$v){ if ($v[$express_com_keys]!='中通快运'){ $arres[$o]=$v; } } $express_nums=array_column($arres,$express_num_keys); $unique_express_nums=array_unique($express_nums); $que_express_nums=array_diff_assoc($express_nums,$unique_express_nums); if(count($que_express_nums)>0){ $que_express_str=implode(',',$que_express_nums); return $this->error('450001','快递单号'.$que_express_str.'重复出现'); } $statusArr=[];$arr=[]; $area_list=[]; $arr_order=[]; foreach ($array[0] as $key => $value) { $area_list[$value[0]][] = $value; } $is=0; foreach ($area_list as $k=>$v){ $arr_order[$is]['order_num']=$k; $arr_order[$is]['express_code']=$v[0][$express_num_keys]; $arr_order[$is]['express_com']=$v[0][$express_com_keys]; $is++; } DB::beginTransaction(); try { foreach ($array[0] as $key => $val) { $statusArr[$val[$order_num_keys]][] = $val[$express_status_keys]; $arr[$val[$order_num_keys]] = array_unique($statusArr[$val[$order_num_keys]]); if (count($arr[$val[$order_num_keys]]) > 1) { return $this->error('450001', '第' . ($key + 2) . '行附近,订单编号:' . $val[$order_num_keys] . '发货状态不一致'); } if (empty($val[$order_num_keys])) { return $this->error('450001', '第' . ($key + 2) . '行附近,订单编号为空'); } $order = StudioOrder::where('order_num', $val[$order_num_keys])->first(); if (empty($order)) { return $this->error('450001', '第' . ($key + 2) . '行附近,订单编号:' . $val[$order_num_keys] . '订单信息不存在'); } if (empty($val[$express_total])) { return $this->error('450001', '第' . ($key + 2) . '行附近,数据求和为空'); } if (empty($val[$express_num_keys])) { return $this->error('450001', '第' . ($key + 2) . '行附近,快递单号为空'); } if (empty($val[$express_com_keys])) { return $this->error('450001', '第' . ($key + 2) . '行附近,快递公司为空'); } if (empty($express_code[$val[$express_com_keys]])) { return $this->error('450001', '第' . ($key + 2) . '行附近,快递公司名称有误'); } if ($express_com_keys=='中通快运'){ $express = StudioExpress::where('express_number', $val[$express_num_keys])->where('created_at','<',$time)->first(); if ($express) { return $this->error('450001', '第' . ($key + 2) . '行附近,快递单号:' . $val[$express_num_keys] . '物流信息已存在'); } }else{ $express = StudioExpress::where('express_number', $val[$express_num_keys])->first(); if ($express) { return $this->error('450001', '第' . ($key + 2) . '行附近,快递单号:' . $val[$express_num_keys] . '物流信息已存在'); } } } $i=0; $ks=0; $d=[]; foreach ($area_list as $ke=>$va){ $order=StudioOrder::where('order_num',$ke)->first(); $number=StudioExpress::where('order_id',$order->id)->groupBy('number')->get()->count(); $count=StudioExpress::where('order_id',$order->id)->count(); $total=StudioExpress::where('order_id',$order->id)->sum('total'); foreach ($va as $key=>$val){ $exp=new StudioExpress(); if (!empty($newArr[$i]['note'])) { $exp->note = $newArr[$i]['note'] . ','; } else { $exp->note = ''; } $exp->order_id = $order->id; $exp->user_id=$order->user_id; if ($val[$express_com_keys]=='中通快递'){ $exp->express_number=$this->get_number($val[$express_num_keys]); }else{ $exp->express_number = $val[$express_num_keys]; } $exp->express_com = $val[$express_com_keys]; $exp->express_code = $express_code[$val[$express_com_keys]]; $data = ''; $datas=[]; $l=0; foreach ($keys as $k => $v) { if (!empty($val[$v])) { if (empty($data)) { $data .= $one[$v] . ':' . $val[$v]; } else { $data .= '+' . $one[$v] . ':' . $val[$v]; } $nums=mb_strlen($val[$v]); if ($nums==2){ $re=mb_strstr($val[$v],'精'); if ($re){ $n=mb_strlen($val[$v]); $num=mb_substr($val[$v],0,$n-1); $kuan='精装版'; $ku=0; }else{ $re=mb_strstr($val[$v],'简'); if ($re){ $n=mb_strlen($val[$v]); $num=mb_substr($val[$v],0,$n-1); $kuan='简约版'; $ku=1; }else{ $re=mb_strstr($val[$v],'棉'); if ($re){ $n=mb_strlen($val[$v]); $num=mb_substr($val[$v],0,$n-1); $kuan='棉老版'; $ku=3; }else{ $re=mb_strstr($val[$v],'老'); if ($re){ $n=mb_strlen($val[$v]); $num=mb_substr($val[$v],0,$n-1); $kuan='老人版'; $ku=2; }else{ return $this->error(50021,'尺码不对',''); } } } } if ($k<=3){ $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$num,'kuan'=>$kuan,'ku'=>$ku]; $total+=$num; }else{ $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$num,'kuna'=>$kuan,'ku'=>$ku]; $total+=$num; } $l++; $count++; }else{ if ($nums%2!=0){ $re_1=mb_strstr($val[$v],'精'); if ($re_1){ $numss=mb_strlen($re_1); $aa=mb_substr($val[$v],$nums-$numss-2,2); if (!is_numeric($aa)){ return $this->error(500024,'尺码对应的数量不对,请核对数量0'); } if ($k<=3){ $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$aa,'kuan'=>'精装版','ku'=>0]; $total+=$aa; }else{ $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$aa,'kuna'=>'精装版','ku'=>0]; $total+=$aa; } $l++; $count++; } }else{ $re_1=mb_strstr($val[$v],'精'); if ($re_1){ $numss=mb_strlen($re_1); $aa=mb_substr($val[$v],$nums-$numss-1,1); if (!is_numeric($aa)){ return $this->error(500024,'尺码对应的数量不对,请核对数量1'); } if ($k<=3){ $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$aa,'kuan'=>'精装版','ku'=>0]; $total+=$aa; }else{ $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$aa,'kuna'=>'精装版','ku'=>0]; $total+=$aa; } $l++; $count++; } } $re_2=mb_strstr($val[$v],'简'); if ($re_2){ $numss=mb_strlen($re_2); $aa=mb_substr($val[$v],$nums-$numss-1,1); if (!is_numeric($aa)){ return $this->error(500024,'尺码对应的数量不对,请核对数量2'); } if ($k<=3){ $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$aa,'kuan'=>'简约版','ku'=>1]; $total+=$aa; }else{ $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$aa,'kuna'=>'简约版','ku'=>1]; $total+=$aa; } $l++; $count++; } $re_3=mb_strstr($val[$v],'老'); if ($re_3){ $numss=mb_strlen($re_3); $aa=mb_substr($val[$v],$nums-$numss-1,1); if (!is_numeric($aa)){ return $this->error(500024,'尺码对应的数量不对,请核对数量3'); } if ($k<=3){ $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$aa,'kuan'=>'老人版','ku'=>2]; $total+=$aa; }else{ $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$aa,'kuna'=>'老人版','ku'=>2]; $total+=$aa; } $l++; $count++; } $re_4=mb_strstr($val[$v],'棉'); if ($re_4){ $numss=mb_strlen($re_4); $aa=mb_substr($val[$v],$nums-$numss-1,1); if (!is_numeric($aa)){ return $this->error(500024,'尺码对应的数量不对,请核对数量4'); } if ($k<=3){ $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$aa,'kuan'=>'棉老版','ku'=>3]; $total+=$aa; }else{ $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$aa,'kuna'=>'棉老版','ku'=>3]; $total+=$aa; } $l++; $count++; } if (!$re_1&&!$re_2&&!$re_3&&!$re_4){ return $this->error(522201,'尺码对应的数量信息不正确',''); } } } } $exp->note .= $data; $exp->notes = json_encode($datas); $exp->status = 0; $exp->number = $number+1; $exp->count = $key+1; $exp->total = $val[$express_total]; if (!$exp->save()){ throw new \Exception(1); } foreach ($datas as $kes=>$vals){ $es=new StudioExpressStorage(); $str_count=substr_count($vals['size'],'X'); if ($str_count>=2){ $vals['size']=$str_count.'XL'; } $es->user_id=$order->good_user_id; $es->express_id=$exp->id; $es->sex=$vals['sexs']; $es->size=$vals['size']; $es->num=$vals['num']; $es->type=$vals['ku']; if (!$es->save()){ throw new \Exception(1); } } } if ($total==$order->total){ $order->track_status=2; }elseif ($total<$order->total){ $order->track_status=1; }else{ return $this->error(52201,$ke.'数量出错了'); } $order->number+=$count; $order->save(); } StudioExpress::insert($newArr); DB::commit(); return $this->success([]); }catch(\Exception $e){ DB::rollBack(); Log::error($e); return $this->error(); } } public function AddStudio(Request $request){ $input=$request->all(); DB::beginTransaction(); try{ $user=User::where('mobile',$input['mobile'])->first(); if (!$user){ return $this->error(50028,'代理公司手机号查不到对应的代理'); } if ($user->level!=3){ return $this->error(50028,'代理公司手机号对应的代理不是代理公司'); } $re=Studio::where('user_id',$user->id)->first(); if ($re){ return $this->error(50028,'代理公司已存在'); } $studio_user=new Studio(); $studio_user->studio_name=$input['studio_name']; $studio_user->user_id=$user->id; $studio_user->status=$input['status']; $studio_user->province=$input['province']; $studio_user->city=$input['city']; $studio_user->area=$input['area']; $studio_user->address=$input['address']; if (!$studio_user->save()){ throw new \Exception('1'); } DB::commit(); return $this->success([]); }catch (\Exception $exception){ DB::rollBack(); return $this->error(50023,$exception->getMessage()); } } public function SetStatusStudio(Request $request){ $input=$request->all(); $studio=Studio::find($input['id']); if ($studio->status==0){ $studio->status=1; }else{ $studio->status=0; } $studio->save(); return $this->success([]); } public function UpdateStudio(Request $request){ $input=$request->all(); $id=$input['id']; DB::beginTransaction(); try{ $studio_user=Studio::find($id); $user=User::where('mobile',$input['mobile'])->first(); if (!$user){ return $this->error(50028,'代理公司手机号查不到对应的代理'); } if ($user->level!=3){ return $this->error(50028,'代理公司手机号对应的代理不是代理公司'); } if ($studio_user->user_id!=$user->id){ $re=Studio::where('user_id',$user->id)->first(); if ($re){ return $this->error(50028,'代理公司已存在'); } $studio_user->user_id=$user->id; } $studio_user->studio_name=$input['studio_name']; $studio_user->status=$input['status']; $studio_user->province=$input['province']; $studio_user->city=$input['city']; $studio_user->area=$input['area']; $studio_user->address=$input['address']; if (!$studio_user->save()){ throw new \Exception('1'); } DB::commit(); return $this->success([]); }catch (\Exception $exception){ DB::rollBack(); return $this->error(50023,$exception->getMessage()); } } }