input('page_index'); $page_size=$request->input('page_size'); $user_search=$request->input('user_search'); $store_search=$request->input('store_search'); $refund_no=$request->input('refund_no'); $order_no=$request->input('order_no'); $num=$page_size*($page_index-1); $status=$request->input('status'); $admin_id=Auth::user()->id; $admin=Admin::where('id',$admin_id)->first(); if($admin && in_array($admin->role_id,[22,24])){//超级管理员 $data=OrderRefund::with(['user:id,avatar,nickname,phone','store:id,name,phone','order:order_no,express_receive_time']); }else{ $warea_ids=DwbsWarea::where('admin_id',$admin_id)->pluck('id'); $agent_ids=DwbsUser::whereIn('warea_id',$warea_ids)->pluck('id'); $store_ids=Store::whereIn('user_id',$agent_ids)->pluck('id'); $data=OrderRefund::whereIn('store_id',$store_ids) ->with(['user:id,avatar,nickname,phone','store:id,name,phone','order:order_no,express_receive_time']); } if($status!='all'){ $data->where('status',$status); } if($refund_no){ $data->where('refund_no','like','%'.$refund_no.'%'); } if($order_no){ $data->where('order_no','like','%'.$order_no.'%'); } if($user_search){ $user_ids=User::where('phone','like','%'.$user_search.'%') ->orWhere('nickname','like','%'.$user_search.'%')->pluck('id'); $data->whereIn('user_id',$user_ids); } if($store_search){ $store_ids=Store::where('phone','like','%'.$store_search.'%') ->orWhere('name','like','%'.$store_search.'%')->pluck('id'); $data->whereIn('store_id',$store_ids); } $count=$data->count(); $list=$data->orderBy('id','desc')->skip($num)->take($page_size)->get(); $wareas=DwbsWarea::pluck('name','id'); $services=DwbsWarea::pluck('admin_name','id'); $user_ids=Store::pluck('user_id'); $store_user_ids=Store::pluck('user_id','id'); $warea_user_ids=DwbsUser::whereIn('id',$user_ids)->pluck('warea_id','id'); foreach($list as $key=>$val){ $user_id=$store_user_ids[$val->store_id]; $warea_id=$warea_user_ids[$user_id]; $list[$key]->warea=$wareas[$warea_id]; $list[$key]->service=$services[$warea_id]; } return $this->success_list($list,'成功',$count); } //判断是否穿过 public function isWear(Request $request){ $refund_id=$request->input('refund_id'); $is_wear=$request->input('is_wear'); $refund=OrderRefund::where('id',$refund_id)->first(); $refund->is_wear=$is_wear; $res=$refund->save(); if($res){ return $this->success([]); }else{ return $this->error(); } } //同意?退货:驳回 public function agreeRefund(Request $request) { $refund_id=$request->input('refund_id'); $refund=OrderRefund::where('id',$refund_id)->first(); if(empty($refund)){ return $this->error('450001','退货单不存在,刷新后重试'); } $order=Order::where('order_no',$refund->order_no)->first(); if(empty($order) || $order->status < 3){ return $this->error('450001','该订单未收货,不能进行退货审核'); } $is_agree=$request->input('is_agree'); try{ DB::transaction(function()use($request,$refund,$refund_id,$is_agree){ if($is_agree == 1){ OrderRefund::where('id',$refund_id)->update(['status'=>1,'auth_at'=>date("Y-m-d H:i:s")]); $order_refund=OrderRefund::where('id',$refund_id)->first(); $refund_total=OrderRefund::where('order_no',$order_refund->order_no)->where('status',1)->sum('total'); $order=Order::where('order_no',$order_refund->order_no)->first(); $order_total=$order->total; if($refund_total >= $order_total){//全部退货 Order::where('order_no',$order_refund->order_no)->update(['is_refund'=>3]); }else{//部分退货 Order::where('order_no',$order_refund->order_no)->update(['is_refund'=>2]); } // if($order_total - $refund_total < 2){ //判断是否剥夺vip // if($order->vip==1){ // $orders=Order::where('user_id',$order->user_id) // ->where('store_id',$order->store_id) // ->where('is_pay',1) // ->whereIn('apply_cancel',[0,1,3]) // ->whereIn('is_refund',[0,1]) // ->where('total','>=',2) // ->where('created_at','>',$order->created_at) // ->orderBy('created_at')->get(); // if(count($orders)>=1){ // Order::where('id',$orders[0]->id)->update([ // 'vip'=>1 // ]); // }else{ // User::where('id',$order->user_id)->update([ // 'is_vip'=>0 // ]); // } // } // } //同意退货通知用户 $user=User::where('id',$refund->user_id)->first(); if($user->openId){ $data['openid']=$user->openId; $data['data']=[ 'first' => '您的退货订单'.$refund->refund_no.'已审核通过', 'keyword1' => $refund->order_no, 'keyword2' => '退款金额:'.number_format($refund->account, 2) ]; event(new AuthRefundTip($data)); } //同意退货通知代理 $store=Store::where('id',$refund->store_id)->first(); $user=DwbsUser::where('id',$store->user_id)->first(); if($user->openid){ $data['openid']=$user->openid; $data['data']=[ 'first' => '您的用户【'.$user->nickname.'】的退货订单'.$refund->refund_no.'已由政委审核成功', 'keyword1' => $refund->order_no, 'keyword2' => '退款金额:'.number_format($refund->account, 2) ]; event(new AuthRefundTip($data)); } }else{ $remark=$request->input('remark'); Order::where('order_no',$refund->order_no)->update(['is_refund'=>0]);//被驳回 OrderRefund::where('id',$refund_id)->update(['status'=>2,'remark'=>$remark,'auth_at'=>date("Y-m-d H:i:s")]); //不同意退货通知用户 $user=User::where('id',$refund->user_id)->first(); if($user && $user->openId){ $data['openid']=$user->openId; $data['data']=[ 'first' => '您的退货订单'.$refund->refund_no.'审核被驳回', 'keyword1' => $refund->order_no, 'keyword2' => '退款金额:'.number_format($refund->account,2) ]; event(new AuthRefundTip($data)); } } },5); return $this->success([]); }catch(\Exception $e){ return $this->error('450001',$e->getMessage()); } } //获取退货订单详情 public function getRefundOrderDetail(Request $request){ $refund_no=$request->input('refund_no'); $refund_order = OrderRefund::with(['store:id,name,img,phone'])->where('refund_no', $refund_no)->first(); $goods_ids = OrderDetail::where('order_no', $refund_no)->groupBy('goods_id')->pluck('goods_id'); $goods = []; foreach ($goods_ids as $key => $val) { $goods[$key] = Goods::where('id', $val)->first(); $goods[$key]->sku = OrderDetail::where('order_no', $refund_no)->where('goods_id', $val)->get(); } $refund_order->goods = $goods; return $this->success($refund_order); } //设置政委收货地址 //添加政委收货地址 //获取原始订单代理关系图 public function getOrderAgentContact(Request $request) { $refund_no=$request->input('refund_no'); $refund=OrderRefund::where('refund_no',$refund_no)->first(); $agents=AgentNo::where('order_no',$refund->order_no)->orderByDesc('level')->get(); foreach($agents as $key=>$val){ $refund_details=OrderDetail::with('goods')->where('order_no',$refund_no)->get(); $order_refund=OrderRefundStatus::where('refund_no',$refund_no)->where('level',$val->level)->first(); if($order_refund){ $agents[$key]->is_finish=$order_refund->status; $agents[$key]->remark=$order_refund->remark; }else{ $agents[$key]->is_finish=0; } foreach($refund_details as $k=>$v){ if($val->level==3){ $agents[$key]->account += $v->num * $v->goods->crown_price; } if($val->level==2){ $agents[$key]->account += $v->num * $v->goods->top_price; } if($val->level==1){ $agents[$key]->account += $v->num * $v->goods->super_price; } } } $user=User::where('id',$agents[0]->user_id)->select('nickname','phone')->first(); Log::info($agents[0]->user_id); Log::info(json_encode($user)); Log::info($refund->account); $user->account=$refund->account; $data['order_no']=$refund->order_no; $data['list']=$agents; $data['user']=$user; return $this->success($data); } //修改代理关系昵称手机号信息 public function changeAgentContactInfo(Request $request) { $id=$request->input('id'); $nickname=$request->input('nickname'); $phone=$request->input('phone'); $rules=[ 'nickname'=>'required|max:32', 'phone'=>'required|regex:/^1[3456789][0-9]{9}$/', ]; $message=[ 'nickname.required'=>'代理昵称不能为空.', 'nickname.max'=>'代理昵称不能大于32个字符.', 'phone.required'=>'代理手机号不能为空.', 'phone.regex'=>'代理手机号格式有误.', ]; $validator = Validator::make($request->input(),$rules,$message); if($validator->fails()){ return $this->error('400013',$validator->errors()->first()); } $res=AgentNo::where('id',$id)->update([ 'nickname'=>$nickname, 'phone'=>$phone, ]); if($res){ return $this->success([]); }else{ return $this->error(); } } //删除代理关系 public function deleteAgentContact(Request $request) { $id=$request->input('id'); $refund_no=$request->input('refund_no'); $agentNo=AgentNo::where('id',$id)->first(); $count=AgentNo::where('order_no',$agentNo->order_no)->count(); if($count==1){ return $this->error('450001','该代理不能删除'); } try{ DB::transaction(function()use($agentNo,$refund_no){ $agentNo->delete(); OrderRefundStatus::where('refund_no',$refund_no)->where('level',$agentNo->level)->delete(); $count_agent=AgentNo::where('order_no',$agentNo->order_no)->count(); $count_refund_status=OrderRefundStatus::where('refund_no',$refund_no)->count(); if($count_agent==$count_refund_status){ $order_refund=OrderRefund::where('refund_no',$refund_no)->first(); if($order_refund->is_end!=1){ $order_refund->is_end=1; $order_refund->end_at=date("Y-m-d H:i:s"); $order_refund->save(); } }else{ $order_refund=OrderRefund::where('refund_no',$refund_no)->first(); if($order_refund->is_end==1){ $order_refund->is_end=0; $order_refund->end_at=date("Y-m-d H:i:s"); $order_refund->save(); } } },5); return $this->success([]); }catch(\Exception $e){ return $this->error('450001',$e->getMessage()); } } //获取代理信息 public function getAgentInfo(Request $request) { $phone=$request->input('phone'); $agent=DwbsUser::where('mobile',$phone)->select('id','nickname','mobile','level')->first(); if(!empty($agent)){ return $this->success($agent); }else{ return $this->error('450001','代理不存在'); } } //添加代理关系代理 public function addAgentContact(Request $request) { $order_no = $request->input('order_no'); $refund_no = $request->input('refund_no'); $nickname = $request->input('nickname'); $level = $request->input('level'); $phone = $request->input('phone'); $rules=[ 'nickname'=>'required|max:32', 'phone'=>'required|regex:/^1[3456789][0-9]{9}$/', ]; $message=[ 'nickname.required'=>'代理昵称不能为空.', 'nickname.max'=>'代理昵称不能大于32个字符.', 'phone.required'=>'代理手机号不能为空.', 'phone.regex'=>'代理手机号格式有误.', ]; $validator = Validator::make($request->input(),$rules,$message); if($validator->fails()){ return $this->error('400013',$validator->errors()->first()); } $count = AgentNo::where('order_no', $order_no)->count(); if ($count == 3) { return $this->error('450001', '代理关系已达上限,不能添加'); } $agent=AgentNo::where('order_no', $order_no)->where('level',$level)->first(); if($agent){ return $this->error('450001', '该等级代理已存在,不能添加'); } try{ DB::transaction(function()use($order_no,$nickname,$level,$phone,$refund_no){ $order = Order::where('order_no', $order_no)->first(); $data['order_no'] = $order_no; $data['user_id'] = $order->user_id; $data['nickname'] = $nickname; $data['level'] = $level; $data['phone'] = $phone; AgentNo::create($data); $count_agent=AgentNo::where('order_no',$order_no)->count(); $count_refund_status=OrderRefundStatus::where('refund_no',$refund_no)->count(); if($count_agent==$count_refund_status){ $order_refund=OrderRefund::where('refund_no',$refund_no)->first(); if($order_refund->is_end!=1){ $order_refund->is_end=1; $order_refund->end_at=date("Y-m-d H:i:s"); $order_refund->save(); } }else{ $order_refund=OrderRefund::where('refund_no',$refund_no)->first(); if($order_refund->is_end==1){ $order_refund->is_end=0; $order_refund->end_at=date("Y-m-d H:i:s"); $order_refund->save(); } } },5); return $this->success([]); }catch(\Exception $e){ return $this->error($e->getMessage()); } } //全部完成 public function allFinish(Request $request){ $refund_no=$request->input('refund_no'); $refund=OrderRefund::where('refund_no',$refund_no)->first(); try{ DB::transaction(function()use($refund,$refund_no){ $refund->is_end=1; $refund->end_at=date("Y-m-d H:i:s"); $refund->save(); $levels=AgentNo::where('order_no',$refund->order_no)->pluck('level'); foreach($levels as $v){ $refund_status=OrderRefundStatus::where('refund_no',$refund_no)->where('level',$v)->first(); if(!$refund_status){ OrderRefundStatus::create([ 'refund_no'=>$refund_no, 'level'=>$v, 'status'=>1, 'remark'=>null, ]); } } },5); return $this->success([]); }catch(\Exception $e){ return $this->error('450001',$e->getMessage()); } } public function changeFinish(Request $request){ $id=$request->input('id'); if($request->input('status')==1){ $status=1; }else{ $status=2; } $remark=$request->input('remark'); $refund_no=$request->input('refund_no'); $agentNo=AgentNo::where('id',$id)->first(); $refund_status=OrderRefundStatus::where('refund_no',$refund_no)->where('level',$agentNo->level)->first(); try{ DB::transaction(function()use($refund_status,$status,$remark,$refund_no,$agentNo){ if($refund_status){ $refund_status->status=$status; $refund_status->remark=$remark; $refund_status->save(); }else{ OrderRefundStatus::create([ 'refund_no'=>$refund_no, 'level'=>$agentNo->level, 'account'=>null, 'status'=>$status, 'remark'=>$remark ]); } $count_agent=AgentNo::where('order_no',$agentNo->order_no)->count(); $count_refund_status=OrderRefundStatus::where('refund_no',$refund_no)->count(); if($count_agent==$count_refund_status){ $order_refund=OrderRefund::where('refund_no',$refund_no)->first(); if($order_refund->is_end!=1){ $order_refund->is_end=1; $order_refund->end_at=date("Y-m-d H:i:s"); $order_refund->save(); } }else{ $order_refund=OrderRefund::where('refund_no',$refund_no)->first(); if($order_refund->is_end==1){ $order_refund->is_end=0; $order_refund->end_at=date("Y-m-d H:i:s"); $order_refund->save(); } } },5); return $this->success([]); }catch(\Exception $e){ return $this->error($e->getMessage()); } } }