tz(env('APP_TIMEZONE'))->toDateTimeString()) ->where('end_time','>=',Carbon::now()->tz(env('APP_TIMEZONE'))->toDateTimeString())->first(); //如果处于活动期间 if ($active){ //判断活动期间是否有相同地址的订单 $or=Ordertest::where('user_id',$user->id)->where('address_id',$request->address_id) ->whereBetween('created_at',[$active->start_time,$active->end_time]) ->where('is_deleted',0)->where('apply_status',0)->whereIn('status',[0,1])->first(); if ($or){//如果存在 return $this->error(4600,'','系统检测,该订单和订单编号为'.$or->order_num.'的收货信息一致,将会和它合并成一个订单'); } } return $this->success([]); } /**查找代理**/ public function get_user(Request $request){ $input=$request->all(); $id=Auth::user()->id; $ids=[$id]; $user_id=User::where('agent_id',$id)->whereIn('cert_status',[3,6])->pluck('id')->toArray(); $user_ids=User::whereIn('agent_id',$user_id)->whereIn('cert_status',[3,6])->pluck('id')->toArray(); $all_ids=array_merge($ids,array_merge($user_id,$user_ids)); $search_name=$input['search_name']; $where=[]; if ($search_name){ $where=function ($q)use($search_name){ $q->where('mobile','like','%'.$search_name.'%')->orwhere('nickname','like','%'.$search_name.'%'); }; } $user=User::whereIn('id',$all_ids)->where($where)->select('id','mobile','level','nickname','realname','headimgurl'); $count=$user->get()->count(); $re=$user->take(30)->skip(($request->page-1)*30)->get(); return $this->success_list($re,'',$count); } /* * 处理每次订单数据 * **/ public function DealOrder($size=[],$num=[]){ $nums=[]; $sizes=[]; foreach ($size as $k=>$v){ $re=Goodtest::find($v); $s=strpos($re->main_attr,'精'); if (is_numeric($s)){ $sizes[]='精-'.$re->size; $nums[]=$num[$k]; }else{ $s=strpos($re->main_attr,'简'); if (is_numeric($s)){ $sizes[]='简-'.$re->size; $nums[]=$num[$k]; }else{ $s=strpos($re->main_attr,'纯棉'); if (is_numeric($s)){ $sizes[]='纯棉-'.$re->size; $nums[]=$num[$k]; }else{ $s=strpos($re->main_attr,'老'); if (is_numeric($s)){ $sizes[]='老-'.$re->size; $nums[]=$num[$k]; } } } } } return [$sizes,$nums]; } /* * 提交订单 * */ public function submit_order(Request $request) { $user=Auth::user(); if ($user->level!=3){ return $this->error('4001','','当前用户不是代理公司'); } $rules = [ 'size_id' => 'required', 'total' => 'required', 'type' => 'required', 'num' => 'required', 'money'=>'required', 'address_id'=>'required', 'belong_id'=>'required' ]; $message = [ 'required' => ':attribute不能为空', ]; $attributes = [ 'size_id' => 'size_id', 'total' => '商品总数量', 'type' => '商品中总类型', 'num' => '单类商品商量', 'money'=>'商品金额', 'address_id'=>'地址', ]; $vali = Validator::make($request->all(), $rules, $message,$attributes); if ($vali->fails()) { Log::error('{-------提交订单的参数错误--------}'.$vali->errors()->first()); return $this->error('40010', '',$vali->errors()->first()); } $input=$request->all(); foreach ($input['size_id'] as $k=>$v){ $data=Goodtest::find($v); if (!$data){ return $this->error(40013,'','购物车有未知商品,请清空购物车'); } $now=Carbon::now()->timestamp; if ($data->off_time!=null){ if (strtotime($data->off_time)<$now){ return $this->error(300,'','商品'.$data->name.'的'.$data->size.'尺码已经下架'); } } if($data->is_show==4){ return $this->error(300,'','商品'.$data->name.'的'.$data->size.'尺码已经下架'); } if($data->is_show==1){ return $this->error(300,'','商品'.$data->name.'的'.$data->size.'尺码未下架'); } } foreach ($input['size_id'] as $k=>$v){ if (Cache::get('dwbs_good_num'.$v)<$input['num'][$k]){ $data=Goodtest::find($v); return $this->error(300,'',$data->name.'的'.$data->size.'尺码数量不足,请重新选择数量'); } } foreach ($input['size_id'] as $k=>$v){ Cache::decrement('dwbs_good_num'.$v,$input['num'][$k]); } DB::beginTransaction(); try{ $users=User::where('id',$user->id)->first(); // if ($users->deleted_at){ // return $this->error(50024,'','您已退出!不能参与下单'); // } /* * 判断当前订单是处于什么状态 * **/ // if ($users->money==0){ // $no_pay_money=$input['money']; // $pay_money=0; // $pay_status=0; // $money=0; // }else{ // if ($users->money>=$input['money']){ // $no_pay_money=0; // $pay_money=$input['money']; // $pay_status=2; // $money=$users->money-$input['money']; // }else{ // $no_pay_money=$input['money']-$users->money; // $pay_money=$users->money; // $pay_status=1; // $money=0; // } // } $no_pay_money=$input['money'];//订单金额,也是未支付金额 $pay_money=0; /* * 判断当前时间是否处于活动期间 * ***/ $active=Activity::where('start_time','<=',Carbon::now()->tz(env('APP_TIMEZONE'))->toDateTimeString()) ->where('end_time','>=',Carbon::now()->tz(env('APP_TIMEZONE'))->toDateTimeString())->first(); $address=Address::find($request->address_id); $address->belong_id=$request->belong_id; if (!$address->save()){ throw new \Exception('1'); } //如果处于活动期间 if ($active){ //判断活动期间是否有相同地址的订单 $or=Ordertest::where('user_id',$user->id)->where('address_id',$input['address_id']) ->whereBetween('created_at',[$active->start_time,$active->end_time]) ->where('is_deleted',0)->whereIn('status',[0,1])->where('apply_status',0)->first(); if ($or){//如果存在 /* * 合并订单 * **/ $money_old=$or->money; $total_old=$or->total; $or->total+=$input['total'];//合并总量 $or->money+=$input['money'];//合并订单金额 // $or->pay_money+=$pay_money;//合并支付金额 $or->is_merge=1; $money_now=$or->money;//记录当前订单的金额 $total_now=$or->total;//记录当前订单的金额 $orderlog = new Orderlog(); $orderlog->order_id = $or->id; $orderlog->user_id = $or->user_id; $orderlog->log_name = $user->nickname; $orderlog->log_title = '合并订单'; if ($or->pay_status==3){ if ($or->wait_back_money>$no_pay_money){ $or->no_pay_money=0; $or->wait_back_money-=$no_pay_money; }elseif ($or->wait_back_money==$no_pay_money){ $or->no_pay_money=0; $or->wait_back_money-=$no_pay_money; $or->pay_status=2; }else{ $or->no_pay_money=$no_pay_money-$or->wait_back_money; $or->wait_back_money=0; $or->pay_status=1; } }else{ $or->no_pay_money+=$no_pay_money; } //订单金额等于支付金额 if ($or->money==$or->pay_money){ $or->no_pay_money=0;//未支付变为0 $or->pay_status=2;//支付状态2,为全部支付 $or->wait_back_money=0;//待退回金额为0 }elseif ($or->money<$or->pay_money){//订单金额小于支付金额 $or->no_pay_money=0;//未支付金额变为0 $or->pay_status=3;//支付状态3,待退款状态 $or->wait_back_money=$or->pay_money-$or->money;//待退款金额为支付金额减去订单金额 }elseif ($or->money>$or->pay_money){//订单金额大于支付金额 if ($or->pay_money==0){//如果支付金额为0 $or->pay_status=0;//则支付状态0,未支付 }else{ $or->pay_status=1;//否则支付状态1,部分支付 } $or->no_pay_money=$or->money-$or->pay_money;//未支付金额等于订单金额减去支付金额 $or->wait_back_money=0;//待退款为0 } $ar=json_decode($or->arr_json); $arr=array_merge($ar,$this->DealOrder($input['size_id'],$input['num'])); $or->arr_json=json_encode($arr); // $users->money=$money; // if (!$users->save()){ // throw new \Exception(1); // } //存在备注信息则添加新区 if (!empty($input['remark'])){ $orderremark = new OrderRemark(); $orderremark->order_id = $or->id; $orderremark->name=Auth::user()->nickname; $orderremark->level = $user->level; $orderremark->type = 0; $orderremark->remark = $input['remark']; if (!$orderremark->save()) { throw new \Exception('2'); } } $hard=0; $simple=0; $log=''; foreach ($input['size_id'] as $k=>$v){ $data=Goodtest::find($v); //判断是否订单详情是否存在相同商品的记录 $or_de=OrderDetail::where('order_id',$or->id)->where('goods_id',$data->id)->first(); if ($or_de){//存在 $log.='商品'.$data->name.'('.$data->size.')'.',数量为'.$input['num'][$k].','; $or_de->num+=$input['num'][$k];//合并数量 $or_de->money+=$input['num'][$k]*$data->money;//合并订单中此商品的总金额 if (!$or_de->save()){ throw new \Exception('1'); } $data->sold_num=$data->sold_num+$input['num'][$k];//记录商品新卖数量 $data->storage=Cache::get('dwbs_good_num'.$data->id);;//减少商品的库存 if (!$data->save()){ throw new \Exception('3'); } }else{//订单详情中不存在此商品的记录 $order_detail=new OrderDetail(); $order_detail->order_id=$or->id; $order_detail->goods_id=$data->id; $log.='商品'.$data->name.'('.$data->size.')'.',数量为'.$input['num'][$k].','; $order_detail->num=$input['num'][$k]; $order_detail->money=$input['num'][$k]*$data->money; $order_detail->goods_name=$data->name; $order_detail->goods_size=$data->size; $order_detail->goods_price=$data->money; $order_detail->goods_unit=$data->unit; if (!$order_detail->save()){ Log::error('{-----订单详情保存出错-----}'.$user->id); throw new \Exception('订单详情出错'); } $data->sold_num=$data->sold_num+$input['num'][$k]; $data->storage=Cache::get('dwbs_good_num'.$data->id); if (!$data->save()){ throw new \Exception('3'); } } } $nums=OrderDetail::where('order_id',$or->id)->count();//判断商品的种类 $hard=OrderDetail::where('order_id',$or->id)->where('goods_unit','=','套')->sum('num');//判断商品的种类 $simple=OrderDetail::where('order_id',$or->id)->where('goods_unit','=','件')->sum('num');//判断商品的种类 $or->type=$nums; if (!$or->save()){ throw new \Exception('1'); } $orderlog->log_text = '用户合并了订单,原订单总金额为' . $money_old . ',商品数量为' . $total_old . '。合并后订单金额为' . $money_now . ',合并后商品数量为' . $total_now.',添加订单包含:'.$log ; if (!$orderlog->save()) { throw new \Exception('1'); } $order_ids=$or->id;//记录下订单的ID $order_nums=$or->order_num;//记录下订单的ID if($users->openid){ $goodsInfo=''; foreach($input['size_id'] as $key => $val){ $goods=Goodtest::find($val); if($key<=5){ if(empty($goodsInfo)){ $goodsInfo=$goods->name.'-'.$goods->size.'*'.$input['num'][$key]; }else{ $goodsInfo.=','.PHP_EOL.$goods->name.'-'.$goods->size.'*'.$input['num'][$key]; } }elseif($key==6){ $goodsInfo.=',...'; } } $mes['openid']=$users->openid; $mes['data']=[ 'first' => '您的订单已提交成功,该订单将与订单号:'.$order_nums.' 进行合并', 'keyword1' => $goodsInfo, 'keyword2' => $order_nums, 'keyword3' => number_format($input['money'], 2), 'remark' => '点击链接进入系统,查看详情', ]; event(new SubmitOrdersInfoEvent($mes)); $this->nopaymessage(); // if ($pay_money!=0){ // $user_pay=new UserPay(); // $user_pay->user_id=$users->id; // $user_pay->pay_money=$pay_money; // $user_pay->type=1; // $user_pay->op_name='系统自动支付'; // $user_pay->order_num=$or->order_num; // $user_pay->pay_num=$this->pay_num(); // $user_pay->user_money=$money; // $user_pay->remark='订单编号为'.$or->order_num.'合并订单时系统自动支付'; // if (!$user_pay->save()){ // throw new \Exception(1); // } // if ($user_pay->pay_money!=0){ // if($users->openid){ // $mes['openid']=$users->openid; // $mes['data']=[ // 'first' => '您的订单:'.$or->order_num.'合并订单时,自动款成功', // 'keyword1' => '-'.number_format($pay_money, 2), // 'keyword2' => number_format($money, 2), // 'keyword3' => date("Y-m-d H:i"), // 'keyword4' => '合并订单自动支付', // 'remark' => '点击链接进入系统,查看详情', // ]; // event(new OrderPayEvent($mes)); // } // } // // } } } else{//不合并 $order=new Ordertest(); $order->user_id=$user->id; $order->order_num=$this->order_num(); $order->total=$input['total']; $order->type=$input['type']; $order->money=$input['money']; $order->no_pay_money=$no_pay_money; $order->pay_money=$pay_money; $order->pay_status=0; $order->address_id=$input['address_id']; $order->good_user_id=$input['belong_id']; $order->relation=json_encode($this->GetRelation($input['belong_id'])); $order->arr_json=json_encode($this->DealOrder($input['size_id'],$input['num'])); if (!empty($input['remark'])){ $order->remark=$input['remark']; } if (!$order->save()){ Log::error('{-----订单保存出错-----}'.$user->id); throw new \Exception('订单保存出错'); } // $users->money=$money; // if (!$users->save()){ // throw new \Exception('1'); // } // if ($pay_money!=0){ // $user_pay=new UserPay(); // $user_pay->user_id=$users->id; // $user_pay->pay_money=$pay_money; // $user_pay->type=1; // $user_pay->op_name='系统自动支付'; // $user_pay->order_num=$order->order_num; // $user_pay->pay_num=$this->pay_num(); // $user_pay->user_money=$users->money; // $user_pay->remark='订单编号为'.$order->order_num.'是提交订单时系统自动支付'; // if (!$user_pay->save()){ // Log::error('3333333'); // throw new \Exception('3'); // } // } if (!empty($input['remark'])){ $orderremark = new OrderRemark(); $orderremark->order_id = $order->id; $orderremark->name=Auth::user()->nickname; $orderremark->level = $user->level; $orderremark->type = 0; $orderremark->remark = $input['remark']; if (!$orderremark->save()) { throw new \Exception('2'); } } $hard=0; $simple=0; $old=0; $new_old=0; foreach ($input['size_id'] as $k=>$v){ $data=Goodtest::find($v); $order_detail=new OrderDetail(); $order_detail->order_id=$order->id; $order_detail->goods_id=$data->id; $order_detail->num=$input['num'][$k]; $order_detail->money=$input['num'][$k]*$data->money; $order_detail->goods_name=$data->name; $order_detail->goods_size=$data->size; $order_detail->goods_price=$data->money; $order_detail->goods_unit=$data->unit; if (!$order_detail->save()){ Log::error('{-----订单详情保存出错-----}'.$user->id); throw new \Exception('订单详情出错'); } $data->sold_num=$data->sold_num+$input['num'][$k]; $data->storage=Cache::get('dwbs_good_num'.$data->id); if (!$data->save()){ throw new \Exception('3'); } if ($data->unit=='套'){ $hard+=$input['num'][$k]; }elseif ($data->unit=='件'){ $simple+=$input['num'][$k]; } } $order_ids=$order->id; $order_nums=$order->order_num;//记录下订单的ID $goodsInfo=''; $goodsInfos=''; foreach($input['size_id'] as $key => $val){ $goods=Goodtest::find($val); if(empty($goodsInfo)){ $goodsInfos=$goods->name.'-'.$goods->size.'*'.$input['num'][$key]; }else{ $goodsInfos.=','.PHP_EOL.$goods->name.'-'.$goods->size.'*'.$input['num'][$key]; } if($key<=5){ if(empty($goodsInfo)){ $goodsInfo=$goods->name.'-'.$goods->size.'*'.$input['num'][$key]; }else{ $goodsInfo.=','.PHP_EOL.$goods->name.'-'.$goods->size.'*'.$input['num'][$key]; } }elseif($key==6){ $goodsInfo.=',...'; } } $orderlog=new Orderlog(); $orderlog->order_id = $order->id; $orderlog->user_id = $order->user_id; $orderlog->log_name = $user->nickname; $orderlog->log_title = '初始订单数据'; $orderlog->log_text = $goodsInfos; if (!$orderlog->save()){ throw new \Exception(1); } if($users->openid){ $goodsInfo=''; foreach($input['size_id'] as $key => $val){ $goods=Goodtest::find($val); if($key<=5){ if(empty($goodsInfo)){ $goodsInfo=$goods->name.'-'.$goods->size.'*'.$input['num'][$key]; }else{ $goodsInfo.=','.PHP_EOL.$goods->name.'-'.$goods->size.'*'.$input['num'][$key]; } }elseif($key==6){ $goodsInfo.=',...'; } } $mes['openid']=$users->openid; $mes['data']=[ 'first' => '您的订单已提交成功', 'keyword1' => $goodsInfo, 'keyword2' => $order_nums, 'keyword3' => number_format($input['money'], 2), 'remark' => '点击链接进入系统,查看详情', ]; event(new SubmitOrdersInfoEvent($mes)); $this->nopaymessage(); // if ($pay_money!=0){ // if($users->openid){ // $mes['openid']=$users->openid; // $mes['data']=[ // 'first' => '您的订单:'.$order->order_num.'已扣款成功', // 'keyword1' => '-'.number_format($pay_money, 2), // 'keyword2' => number_format($users->money, 2), // 'keyword3' => date("Y-m-d H:i"), // 'keyword4' => '提交订单自动支付', // 'remark' => '点击链接进入系统,查看详情', // ]; // event(new OrderPayEvent($mes)); // } // } } } $gifts=Gift::where('activity_id',$active->id)->get(); if ($gifts){ $total=$hard+$simple*2; foreach ($gifts as $k=>$v){ if ($total>=$v->limit_num){ $num=floor($total/$v->num); }else{ $num=0; } $ordergift=OrderGift::where('order_id',$order_ids)->where('gift_id',$v->id)->first(); if ($ordergift){ $ordergift->activity_id=$active->id; $ordergift->gift_id=$v->id; $ordergift->num=$num; $ordergift->order_id=$order_ids; if (!$ordergift->save()){ throw new \Exception('1'); } }else{ $ordergifts=new OrderGift(); $ordergifts->activity_id=$active->id; $ordergifts->gift_id=$v->id; $ordergifts->num=$num; $ordergifts->order_id=$order_ids; if (!$ordergifts->save()){ throw new \Exception('1'); } } } } }else{ $order=new Ordertest(); $order->user_id=$user->id; $order->order_num=$this->order_num(); $order->total=$input['total']; $order->type=$input['type']; $order->money=$input['money']; $order->no_pay_money=$no_pay_money; $order->pay_money=$pay_money; $order->pay_status=0; $order->address_id=$input['address_id']; $order->good_user_id=$input['belong_id']; $order->relation=json_encode($this->GetRelation($input['belong_id'])); $order->arr_json=json_encode($this->DealOrder($input['size_id'],$input['num'])); if (!empty($input['remark'])){ $order->remark=$input['remark']; } if (!$order->save()){ Log::error('{-----订单保存出错-----}'.$user->id); throw new \Exception('订单保存出错'); } // $users->money=$money; // if (!$users->save()){ // throw new \Exception('1'); // } // if ($pay_money!=0){ // $user_pay=new UserPay(); // $user_pay->user_id=$users->id; // $user_pay->pay_money=$pay_money; // $user_pay->type=1; // $user_pay->op_name='系统自动支付'; // $user_pay->order_num=$order->order_num; // $user_pay->pay_num=$this->pay_num(); // $user_pay->user_money=$users->money; // $user_pay->remark='订单编号为'.$order->order_num.'是提交订单时系统自动支付'; // if (!$user_pay->save()){ // Log::error('3333333'); // throw new \Exception('3'); // } // } if (!empty($input['remark'])){ $orderremark = new OrderRemark(); $orderremark->order_id = $order->id; $orderremark->name=Auth::user()->nickname; $orderremark->level = $user->level; $orderremark->type = 0; $orderremark->remark = $input['remark']; if (!$orderremark->save()) { throw new \Exception('2'); } } foreach ($input['size_id'] as $k=>$v){ $data=Goodtest::find($v); $order_detail=new OrderDetail(); $order_detail->order_id=$order->id; $order_detail->goods_id=$data->id; $order_detail->num=$input['num'][$k]; $order_detail->money=$input['num'][$k]*$data->money; $order_detail->goods_name=$data->name; $order_detail->goods_size=$data->size; $order_detail->goods_price=$data->money; $order_detail->goods_unit=$data->unit; if (!$order_detail->save()){ Log::error('{-----订单详情保存出错-----}'.$user->id); throw new \Exception('订单详情出错'); } $data->sold_num=$data->sold_num+$input['num'][$k]; $data->storage=Cache::get('dwbs_good_num'.$data->id); if (!$data->save()){ throw new \Exception('3'); } } $order_ids=$order->id; $order_nums=$order->order_num;//记录下订单的ID $goodsInfo=''; $goodsInfos=''; foreach($input['size_id'] as $key => $val){ $goods=Goodtest::find($val); if(empty($goodsInfos)){ $goodsInfos=$goods->name.'-'.$goods->size.'*'.$input['num'][$key]; }else{ $goodsInfos.=','.PHP_EOL.$goods->name.'-'.$goods->size.'*'.$input['num'][$key]; } if($key<=5){ if(empty($goodsInfo)){ $goodsInfo=$goods->name.'-'.$goods->size.'*'.$input['num'][$key]; }else{ $goodsInfo.=','.PHP_EOL.$goods->name.'-'.$goods->size.'*'.$input['num'][$key]; } }elseif($key==6){ $goodsInfo.=',...'; } } $orderlog=new Orderlog(); $orderlog->order_id = $order->id; $orderlog->user_id = $order->user_id; $orderlog->log_name = $user->nickname; $orderlog->log_title = '初始订单数据'; $orderlog->log_text = $goodsInfos; if (!$orderlog->save()){ throw new \Exception(1); } if($users->openid){ $mes['openid']=$users->openid; $mes['data']=[ 'first' => '您的订单已提交成功', 'keyword1' => $goodsInfo, 'keyword2' => $order_nums, 'keyword3' => number_format($input['money'], 2), 'remark' => '点击链接进入系统,查看详情', ]; event(new SubmitOrdersInfoEvent($mes)); // if ($pay_money!=0){ // if($users->openid){ // $mes['openid']=$users->openid; // $mes['data']=[ // 'first' => '您的订单:'.$order->order_num.'已扣款成功', // 'keyword1' => '-'.number_format($pay_money, 2), // 'keyword2' => number_format($users->money, 2), // 'keyword3' => date("Y-m-d H:i"), // 'keyword4' => '提交订单自动支付', // 'remark' => '点击链接进入系统,查看详情', // ]; // event(new OrderPayEvent($mes)); // } // } } } DB::commit(); return $this->success(['order_id'=>$order_ids,'order_num'=>$order_nums]); }catch (\Exception $exception){ Log::error('------------提交订单出错,出错信息为------:'.$exception); DB::rollBack(); return $this->error('40011','','订单出错'); } } /**订单结算通知**/ public function nopaymessage(){ $id=Auth::user()->id; $user=User::find($id); $activity=Activity::where('is_ing',1)->first(); $orders=Ordertest::where('user_id',$id)->whereBetween('created_at',[$activity->start_time,$activity->end_time])->where('is_deleted',0)->get(); $money=0; $pay_money=0; $no_pay_money=0; $wait_back_money=0; foreach ($orders as $k=>$v){ $money+=$v->money; $pay_money+=$v->pay_money; $no_pay_money+=$v->no_pay_money; $wait_back_money+=$v->wait_back_money; } if($user->openid){ if ($wait_back_money==0){ $remark='点击链接进入系统,查看详情'; }else{ $remark='其中包含需要退款的金额共'.$wait_back_money.'元。点击链接进入系统,查看详情'; } $mes['openid']=$user->openid; $mes['data']=[ 'first' => '您在'.$activity->title.'活动中下的订单支付情况如下:', 'keyword1' => number_format($money,2), 'keyword2' => number_format($pay_money,2), 'keyword3' => number_format($no_pay_money,2), 'keyword4' => date("Y-m-d H:i"), 'remark' => $remark, ]; event(new OrderPayInfoEvent($mes)); } } /*生成订单编号*/ public function order_num(){ $user=Auth::user(); $number=mb_substr($user->auth_code,0,4).'-'.date('Ymd',time()).mb_substr(time(),7,10).'-'.rand(1111,9999); $num=Ordertest::where('order_num',$number)->count(); if ($num>0){ $number=$this->order_num(); return $number; } return $number; } /* * 订单详情 * */ public function order_detail(Request $request){ $rules=[ 'order_num'=>'required', ]; $message=[ 'order_num.message'=>'订单id是必填项', ]; $vali=Validator::make($request->all(),$rules,$message); if ($vali->fails()){ return $this->error('40012','',$vali->errors()->first()); } // DB::enableQueryLog(); $order=Ordertest::where('order_num',$request->order_num)->with(['belong_user'])->first(); $detail=OrderDetail::where('order_id',$order->id)->groupBy('goods_name')->get(); foreach ($detail as $k=>$v){ $order_detail=OrderDetail::where('order_id',$v->order_id)->where('goods_name',$v->goods_name)->with(['get_good'])->get(); $size=[]; $size_id=[]; $num=[]; foreach ($order_detail as $ke=>$va){ $size[$ke]=$va->get_good->size; $size_id[$ke]=$va->goods_id; $num[$ke]=$va->num; } $re[$k]['name']=$v->goods_name; $re[$k]['size']=$size; $re[$k]['size_id']=$size_id; $re[$k]['attr_id']=$v->get_good->attr_id; $re[$k]['num']=$num; $re[$k]['money']=$v->money/$v->num; $re[$k]['unit']=$v->get_good->unit; $re[$k]['main_img']=$v->get_good->main_img; // $re[$k]['remark']=$v->remark; $re[$k]['banner_img']=$v->get_good->banner_img; $re[$k]['sec_attr']=$v->get_good->sec_attr; } // $datas=[] // $re=array_merge($re,$res); $all_data=[ // 'order_num'=>$order->ordersn, // 'time'=>strtotime($order->created_at)*1000, // 'status'=>$order->status, 'address'=>[ 'city'=>$order->address->city, 'provice'=>$order->address->province, 'area'=>$order->address->town, "address"=>$order->address->address, "con_name"=>$order->address->username, "con_mobile"=>$order->address->mobile, ], 'remark'=>$order->remark, 'track_number'=>$order->track_number==null?'':$order->track_number, 'track_time'=>$order->track_time==null?'':$order->track_time, 'track_remark'=>$order->track_remark==null?'':$order->track_remark, 'track_company'=>$order->track_company==null?'':$order->track_company, 'track_status'=>$order->track_status, 'belong_user'=>$order->belong_user, 'list'=>$re ]; return $this->success($all_data); } /* *订单日志 */ public function get_log(Request $request){ $rules=[ 'order_num'=>'required', ]; $message=[ 'order_num.required'=>'订单id是必填项', ]; $vali=Validator::make($request->all(),$rules,$message); if ($vali->fails()){ return $this->error('40012','',$vali->errors()->first()); } $order_id=Ordertest::where('order_num',$request->order_num)->value('id'); $data=Orderlog::where('order_id',$order_id)->get(); return $this->success_list($data); } /* * 支付订单 * */ public function pay_order(Request $request){ // Log::error(json_encode($request->all())); return $this->error(40014,'','活动期间不能支付,活动后统一支付'); $rules=[ 'order_id'=>'required', ]; $message=[ 'order_id.required'=>'订单id是必填项', ]; $vali=Validator::make($request->all(),$rules,$message); if ($vali->fails()){ return $this->error('40012','',$vali->errors()->first()); } $users=Auth::user(); $order=Ordertest::find($request->order_id); if ($order->pay_status!=0){ return $this->error(40014,'','订单已经支付,请勿重复支付'); } $user=User::find($users->id); if ($user->money<$order->money){ return $this->error(40015,'','所剩余额不足'); } DB::beginTransaction(); try{ $order->pay_status=2; $order->pay_money=$order->money; $order->no_pay_money=0; if (!$order->save()){ Log::error('11111'); throw new \Exception('1'); } $user->money=$user->money-$order->money; if (!$user->save()){ Log::error('222222'); throw new \Exception('2'); } $user_pay=new UserPay(); $user_pay->user_id=$user->id; $user_pay->pay_money=$order->money; $user_pay->type=1; $user_pay->op_name=$user->nickname; $user_pay->order_num=$order->order_num; $user_pay->pay_num=$this->pay_num(); $user_pay->user_money=$user->money; $user_pay->remark='订单编号为'.$order->order_num; if (!$user_pay->save()){ Log::error('3333333'); throw new \Exception('3'); } if($users->openid){ $mes['openid']=$users->openid; $mes['data']=[ 'first' => '您的订单:'.$order->order_num.'已扣款成功', 'keyword1' => '-'.number_format($order->money, 2), 'keyword2' => number_format($user->money, 2), 'keyword3' => date("Y-m-d H:i"), 'keyword4' => '用户支付', 'remark' => '点击链接进入系统,查看详情', ]; event(new OrderPayEvent($mes)); } DB::commit(); return $this->success([]); }catch (\Exception $exception){ DB::rollBack(); Log::error('支付订单出错'.$exception); return $this->error(40016,'','支付失败,请重试'); } } /* * 订单列表 * */ public function order_list(Request $request){ return $this->success('success'); $rules=[ 'status'=>'required', ]; $message=[ 'status.required'=>'订单id是必填项', ]; $vali=Validator::make($request->all(),$rules,$message); if ($vali->fails()){ return $this->error(40017,'',$vali->errors()->first()); } $user=Auth::user(); $user=User::find($user->id); $type=$request->status; if ($type==0){ $order_all=Ordertest::where('user_id','=',$user->id) ->with(['order_details'])->orderByDesc('created_at')->paginate(15); }elseif($type==1){ $order_all=Ordertest::where('user_id','=',$user->id) ->where('pay_status','=',0)->orderByDesc('created_at')->where('is_deleted',0)->paginate(15); }elseif ($type==2){ $order_all=Ordertest::where('user_id','=',$user->id) ->where(function ($q){ $q->where('pay_status','=',2)->whereIn('status',[0,1,2])->orwhere('apply_status',1); })->orderByDesc('created_at')->where('is_deleted',0)->paginate(15); }elseif ($type==3){ $order_all=Ordertest::where('user_id','=',$user->id) ->where('pay_status','=',2)->where('is_deleted',0)->where('status',3) ->orderByDesc('created_at')->paginate(15); }elseif ($type==4){ $order_all=Ordertest::where('user_id','=',$user->id) ->where('pay_status','=',2)->where('is_deleted',0)->where('status',4) ->orderByDesc('created_at')->paginate(15); } $res=[]; foreach ($order_all as $k=>$v){ // $detail=OrderDetail::where('order_id',$v->id)->with(['get_good'])->groupBy('goods_name')->get(); $re=[]; // $d=[]; foreach ($v->order_details as $key=>$value){ // $order_detail=OrderDetail::where('id',$value->id)->where('goods_name',$value->goods_name)->with(['get_good'])->get(); // $size=[]; // foreach ($order_detail as $ke=>$va){ // $size[$ke]=$va->get_good->size; // $size_id[$ke]=$va->goods_id; // } // $re[$key]['name']=$value->goods_name; // $re[$key]['size']=$size; // $re[$key]['size_id']=$size_id; // $re[$key]['num']=$value->num; // $re[$key]['money']=$value->money/$value->num; // $re[$key]['unit']=$value->get_good->unit; $re[$key]['main_img']=$value->main_img; // $re[$key]['banner_img']=$value->get_good->banner_img; // $re[$key]['sec_attr']=$value->get_good->sec_attr; } $res[$k]['id']=$v->id; $res[$k]['order_id']=$v->id; $res[$k]['order']=$re; $res[$k]['type']=$v->type; $res[$k]['order_type']=$v->order_type; $res[$k]['total']=$v->total; $res[$k]['is_deleted']=$v->is_deleted==0?false:true; $res[$k]['pay_status']=$v->pay_status==0?false:true; $res[$k]['status']=$v->status; $res[$k]['order_num']=$v->order_num; $res[$k]['money']=$v->money; $res[$k]['is_merge']=$v->is_merge; $res[$k]['order_type']=$v->order_type; $res[$k]['track_status']=$v->track_status; $res[$k]['apply_status']=$v->apply_status; $res[$k]['destroy_cause']=$v->destroy_cause; $res[$k]['destroy_status']=$v->destroy_status; $res[$k]['reject_cause']=$v->reject_cause; if ($v->address){ if ($v->get_address->isEmpty()){ $res[$k]['address']=$v->address; $res[$k]['address']['level']=null; $res[$k]['address']['nickname']=null; }else{ $address=$v->get_address[0]; $res[$k]['address']=$v->address; $res[$k]['address']['level']=$address->level; $res[$k]['address']['nickname']=$address->nickname; } } $res[$k]['created_at']=$v->created_at->toDateTimeString(); if ($v->status==3||$v->status==4){ if (!empty($v->track_number)){ $res[$k]['express']='https://m.kuaidi100.com/app/query/?com='.$v->track_company.'&nu='.$v->track_number.'&coname'; } } } // dd(DB::getQueryLog()); return $this->success_list($res,'',$order_all->total()); } /* *订单作废-----订单修改 */ public function destory(Request $request){ $rules=[ 'order_num'=>'required' ]; $message=[ 'order_num.required'=>'订单id是必填项' ]; $vali=Validator::make($request->all(),$rules,$message); if ($vali->fails()){ return $this->error(40016,'',$vali->errors()->first()); } $order=Ordertest::where('order_num',$request->order_num)->first(); if (!$order){ return $this->error(300,'','查无此订单,请重试'); } DB::beginTransaction(); try{ $order->is_deleted=1; if (!$order->save()){ throw new \Exception('1'); } if ($order->pay_status!=0){ return $this->error(40013,'','该订单已支付,请联系客服修改'); } // $user=User::find($order->user_id); // $user->money=$user->money+$order->pay_money; // if (!$user->save()){ // throw new \Exception('2'); // } // $user_log=new UserPay(); // $user_log->user_id=$order->user_id; // $user_log->pay_money=$order->money; // $user_log->op_name=$user->nickname; // $user_log->order_num=$order->order_num; // $user_log->pay_num=$this->pay_num(); // $user_log->type=2; // $user_log->remark='订单作废退回'; // if (!$user_log->save()){ // throw new \Exception('3'); // } $orderdetail=OrderDetail::where('order_id',$order->id)->get(); foreach ($orderdetail as $k=>$v){ $good=Goodtest::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'); } } $orders=Ordertest::where('order_num',$request->order_num)->first(); if ($orders->pay_money>0){ return $this->error(40013,'','该订单已由后台进行支付,暂时不能作废'); } if ($orders->pay_status!=0){ return $this->error(40013,'','该订单已由后台进行支付,暂时不能作废'); } DB::commit(); return $this->success([]); }catch (\Exception $exception){ DB::rollBack(); return $this->error('40018','','订单作废失败,请重试'); } } public function pay_num(){ $num=date('Ymd',time()).'100000'.str_pad(Auth::user()->id,6,0,STR_PAD_LEFT).rand(11111,99999); $count=UserPay::where('pay_num',$num)->count(); if ($count>0){ $num=$this->pay_num(); return $num; } return $num; } /*确认收货 * **/ public function sure_order(Request $request){ $rules=[ 'order_num'=>'required', ]; $message=[ 'order_num.required'=>'订单id是必填项', ]; $vali=Validator::make($request->all(),$rules,$message); if ($vali->fails()){ return $this->error(40017,'',$vali->errors()->first()); } $order=Ordertest::where('order_num',$request->order_num)->first(); $order->status=4; $order->save(); return $this->success([]); } /* * 订单统计 * */ public function order_data(Request $request){ $user=Auth::user(); // $user=User::where('mobile',13509768818)->first(); DB::enableQueryLog(); $wherebetween=[]; $where=function ($query){ $query->where('is_deleted',0); }; $order_all=Ordertest::where($where)->where('user_id',$user->id)->get(); $hard_all=0; $simple_all=0; $old_all=0; $newold_all=0; $hard_good=Goodtest::where('main_attr','大卫博士精装版')->pluck('id')->toArray(); $simple_good=Goodtest::where('main_attr','大卫博士简约版')->pluck('id')->toArray(); $old_good=Goodtest::where('main_attr','大卫博士老人版')->pluck('id')->toArray(); $newold_good=Goodtest::where('main_attr','大卫博士纯棉老人版')->pluck('id')->toArray(); foreach ($order_all as $k=>$v) { $order=Ordertest::where('id',$v->id)->with(['order_detail'])->first(); foreach ($order->order_detail as $ke=>$va){ if (in_array($va->goods_id,$hard_good)){ $hard_all+=$va->num; }elseif (in_array($va->goods_id,$simple_good)){ $simple_all+=$va->num; }elseif (in_array($va->goods_id,$old_good)){ $old_all+=$va->num; }elseif (in_array($va->goods_id,$newold_good)){ $newold_all+=$va->num; } } } if ($request->has('start')){ if ($request->start){ $start=date('Y-m-d H:i:s',strtotime($request->start)); $end=date('Y-m-d H:i:s',strtotime($request->end)); $wherebetween=function ($query)use($start,$end){ $query->whereBetween('created_at',[$start,$end]); }; } } $orders=Ordertest::where($where)->where('user_id',$user->id)->where($wherebetween)->get(); $hard=0; $simple=0; $old=0; $newold=0; $old_money=0; $newold_money=0; $simple_money=0; $hard_money=0; $money=0; $pay_money=0; $no_pay_money=0; foreach ($orders as $k=>$v) { $order=Ordertest::where('id',$v->id)->with(['order_detail'])->first(); foreach ($order->order_detail as $ke=>$va){ if (in_array($va->goods_id,$hard_good)){ $hard+=$va->num; $hard_money+=$va->money; }elseif (in_array($va->goods_id,$simple_good)){ $simple+=$va->num; $simple_money+=$va->money; }elseif (in_array($va->goods_id,$old_good)){ $old+=$va->num; $old_money+=$va->money; }elseif (in_array($va->goods_id,$newold_good)){ $newold+=$va->num; $newold_money+=$va->money; } } $money+=$v->money; $pay_money+=$v->pay_money; $no_pay_money+=$v->no_pay_money; } $data=[ 'hard'=>$hard, 'simple'=>$simple, 'old'=>$old, 'newold'=>$newold, 'hard_money'=>$hard_money, 'simple_money'=>$simple_money, 'old_money'=>$old_money, 'newold_money'=>$newold_money, 'hard_all'=>$hard_all, 'simple_all'=>$simple_all, 'old_all'=>$old_all, 'newold_all'=>$newold_all, 'money'=>$money, 'pay_money'=>$pay_money, 'no_pay_money'=>$no_pay_money, ]; return $this->success($data); } public function order_rank(Request $request){ $user_id=Auth::user()->id; // $user=User::where('mobile',13509768818)->first(); // $user_id=$user->id; $wherebetween=[]; if ($request->has('start')){ if ($request->start){ $start=date('Y-m-d H:i:s',strtotime($request->start)); $end=date('Y-m-d H:i:s',strtotime($request->end)); $wherebetween=function ($query)use($start,$end){ $query->whereBetween('order_test.created_at',[$start,$end]); }; } } $re=Ordertest::where('is_deleted',0)->with(['address','get_address'])->where('user_id',$user_id)->where($wherebetween)->get()->groupBy('address.mobile')->toArray(); $hard_good=Goodtest::where('main_attr','like','%精装%')->pluck('id')->toArray(); $simple_good=Goodtest::where('main_attr','大卫博士简约版')->pluck('id')->toArray(); $old_good=Goodtest::where('main_attr','大卫博士老人版')->pluck('id')->toArray(); $newold_good=Goodtest::where('main_attr','大卫博士纯棉老人版')->pluck('id')->toArray(); $i=0; $res=[]; foreach ($re as $k=>$v){ $ids=Address::where('mobile',$v[0]['address']['mobile'])->pluck('id'); $order_all=Ordertest::where('is_deleted',0)->where('user_id',$user_id)->where($wherebetween)->with(['order_detail'])->whereIn('address_id',$ids)->get(); $hard_all=0; $simple_all=0; $old_all=0; $newold_all=0; foreach ($order_all as $key=>$value){ foreach ($value->order_detail as $ke=>$va){ if (in_array($va->goods_id,$hard_good)){ $hard_all+=$va->num; }elseif (in_array($va->goods_id,$simple_good)){ $simple_all+=$va->num; }elseif (in_array($va->goods_id,$old_good)){ $old_all+=$va->num; }elseif (in_array($va->goods_id,$newold_good)){ $newold_all+=$va->num; } } } $res[$i]['username']=$v[0]['address']['username']; $res[$i]['mobile']=$v[0]['address']['mobile']; $res[$i]['hard']=$hard_all; $res[$i]['simple']=$simple_all; $res[$i]['old']=$old_all; $res[$i]['newold']=$newold_all; if (empty($v[0]['get_address'])){ $res[$i]['address']['nickname']=null; $res[$i]['address']['level']=null; }else{ $res[$i]['address']['nickname']=$v[0]['get_address'][0]['nickname']; $res[$i]['address']['level']=$v[0]['get_address'][0]['level']; } $res[$i]['all']=$old_all+$simple_all+$hard_all+$newold_all; $i++; } return $this->success_list($res); } /**-----T恤统计------**/ public function type_count(){ $user=Auth::user(); $data=DB::table('crown_count')->where('crown_mobile','=',$user->mobile)->orderBy('id')->get(); $re=[]; foreach ($data as $k=>$v){ $re[$k]['nickname']=$v->nickname; $re[$k]['id']=$v->id; $re[$k]['mobile']=$v->mobile; $re[$k]['province']=$v->province; $re[$k]['city']=$v->city; $re[$k]['area']=$v->area; $re[$k]['address']=$v->address; $re[$k]['total']=$v->total; $re[$k]['type_l']=$v->type_l; $re[$k]['type_xl']=$v->type_xl; $re[$k]['type_3xl']=$v->type_3xl; } return $this->success($re); } /**统计提交**/ public function type_submit(Request $request){ $time='2020-05-16 18:00:00'; $now=Carbon::now()->timestamp; if ($now>strtotime($time)){ return $this->error(40013,'','提交时间已过,请联系客服(政委)'); } $rule=[ 'id'=>'required', 'type_l'=>'required', 'type_xl'=>'required', 'type_3xl'=>'required', ]; $message=[ 'id.required'=>'id必填项', 'type_l.reuqired'=>'type_l必填项', 'type_xl.reuqired'=>'type_xl必填项', 'type_3xl.reuqired'=>'type_3xl必填项', ]; $input=$request->all(); $vali=Validator::make($request->all(),$rule,$message); if ($vali->fails()){ return $this->error(40013,'',$vali->errors()->first()); } DB::beginTransaction(); try{ foreach ($input['id'] as $k=>$v){ $user=CrownCount::find($v); $num=$input['type_l'][$k]+$input['type_xl'][$k]+$input['type_3xl'][$k]; if ($num>$user->total){ return $this->error(40013,'',$user->nickname.'的所填礼品总量超过规定数量,请重新选择'); } $user->type_l=$input['type_l'][$k]; $user->type_xl=$input['type_xl'][$k]; $user->type_3xl=$input['type_3xl'][$k]; $user->exchange=$input['type_l'][$k]+$input['type_xl'][$k]+$input['type_3xl'][$k]; if (!$user->save()){ throw new \Exception('1'); } } DB::commit(); return $this->success([]); }catch (\Exception $exception){ Log::error('{-------统计出错------}'.$exception); DB::rollBack(); return $this->error(40013,'','提交失败,请重新提交'); } } /**查看已获得赠品**/ public function get_data(Request $request){ $data=Ordertest::where('order_num',$request->order_num)->with(['get_gift_infos'])->first(); $i=0; $re=[]; if ($data->get_gift){ foreach ($data->get_gift_infos as $ke=>$va){ $re[$i]['name']=$va->name; $re[$i]['img']=$va->img; $re[$i]['num']=$va->pivot->num; $i++; } } return $this->success_list($re); } /**获取赠品信息**/ public function get_gift(Request $request){ $now=Carbon::now()->tz(env('APP_TIMEZONE'))->toDateTimeString(); $active=Activity::where('start_time','<=',$now) ->where('end_time','>=',$now)->where('is_ing',1)->first(); if ($active){ $gifts=Gift::where('activity_id',$active->id)->get(); if ($gifts){ return $this->success_list($gifts); }else{ return $this->error(600,'','此次活动没有赠品'); } }else{ return $this->error(600,'','活动时间已过'); } } /***获取订单的物流信息**/ public function get_order_expresses(Request $request){ $rule=[ 'order_num'=>'required' ]; $message=[ 'order_num.required'=>'订单编号没有填写' ]; $va=Validator::make($request->all(),$rule,$message); if ($va->fails()){ return $this->error(40012,'',$va->errors()->first()); } $data=Ordertest::where('order_num',$request->order_num)->with(['get_express','address'])->first(); $re=[]; if ($data->get_express){ foreach ($data->get_express as $k=>$v){ $re[$k]['id']=$v->id; $re[$k]['order_id']=$v->order_id; $re[$k]['express_com']=$v->express_com; $re[$k]['express_number']=$v->express_number; $re[$k]['status']=$v->status; $re[$k]['note']=$v->note; if ($v->created_at){ $re[$k]['created_at']=$v->created_at->toDateTimeString(); }else{ $re[$k]['created_at']=$v->created_at; } $re[$k]['city']=$data->address->city; $re[$k]['area']=$data->address->town; } } return $this->success($re); } /**获取物流轨迹**/ public function get_express(Request $request,ExpressHandler $expressHandler){ $express=Express::find($request->id); if (!$express){ return $this->error(40011,'','该物流订单不存在'); } if ($express->status==1){ return $this->success(json_decode($express->data)); }else{ $re=$expressHandler->search($express->express_number,$express->express_code); $re=(array)$re; if ($re['State']==3){ DB::beginTransaction(); try{ $express->data=json_encode($re); $express->status=1; $express->save(); DB::commit(); }catch (\Exception $exception){ Log::error('-------物流信息保存出错--------'.$exception); DB::rollBack(); } } return $this->success($re); } } public function get_activity(){ $re=Activity::where('is_ing',1)->first(); $data=[ 'start_time'=>strtotime($re->start_time)*1000, 'end_time'=>strtotime($re->end_time)*1000, ]; return $this->success($data); } public function get_activity_list(Request $request){ if ($request->has('page_index')){ $count=Activity::where('disabled',0)->count(); $data=Activity::where('disabled',0)->OrderByDesc('id')->skip(($request->page_index-1)*$request->page_size)->take($request->page_size)->get(); return $this->success_list($data,'',$count); }else{ $re=Activity::where('disabled',0)->orderByDesc('id')->get(); $data=[]; foreach ($re as $k=>$v){ $data[$k]['title']=$v->title; $data[$k]['id']=$v->id; $data[$k]['start_time']=$v->start_time; $data[$k]['end_time']=$v->end_time; } return $this->success($data); } } public function GetRelation($id){ $u=User::find($id); $da['belong_user']=$id; $da['belong_level']=$u->level; $da['agent_user']=''; $da['agent_level']=''; $da['top_user']=''; $da['time']=Carbon::now()->toDateTimeString(); if ($u->level==1){ $uu=User::find($u->agent_id); if ($uu->level==3){ $da['top_user']=$uu->id; $da['top_level']=3; }else{ $da['agent_user']=$uu->id; $da['agent_level']=$uu->level; $da['top_user']=$uu->agent_id; } }elseif ($u->level==2){ $da['top_user']=$u->agent_id; $da['top_level']=3; } return $da; } public function GetUserHonor(Request $request){ $data=$request->all(); $activity_id=$data['id']; $id=Auth::user()->id; $re=HonorInfo::where('activity_id',$activity_id)->where('user_id',$id)->first(); if (!$re){ $bid_gift=0; $honor_wal=0; $tour=0; $rank=0; $activity=Activity::find($activity_id); $money=Ordertest::whereBetween('created_at',[$activity->start_time,$activity->end_time])->where('user_id',$id)->where('is_deleted',0)->sum('money'); if ($money!=0){ $rank_arr=Ordertest::whereBetween('created_at',[$activity->start_time,$activity->end_time]) ->select(DB::raw('sum(money) as money_all')) ->where('is_deleted',0)->groupBy('user_id')->orderBy('money_all','desc')->get()->toArray(); $rank_arr=array_column($rank_arr,'money_all'); array_unique($rank_arr); $rank=array_search($money,$rank_arr); $res=DB::table('activity_limit')->Where('activity_id',$activity_id)->where('type',1)->get(); if ($res){ foreach ($res as $k=>$v){ if ($v->title=='大礼包B'){ if ($v->account<=$money){ $bid_gift=1; } }elseif ($v->title=='荣誉墙'){ if ($v->account<=$money){ $honor_wal=1; } }elseif ($v->title=='旅游'){ if ($v->account<=$money){ $tour=1; } } } } }else{ $ress=DB::table('gift_user_img')->where('activity_id',$activity->id)->where('user_id',$id)->first(); if ($ress){ $bid_gift=1; } $rank=Ordertest::whereBetween('created_at',[$activity->start_time,$activity->end_time]) ->where('is_deleted',0)->groupBy('user_id')->get(); $rank=count($rank); } $activity_id_now=Activity::where('is_ing',1)->value('id'); if ($activity_id==$activity_id_now){ $data['activity_id']=$activity_id; $data['user_id']=$id; $data['user_ids']=$id; $data['rank']=$rank+1; $data['big_gift']=$bid_gift; $data['tour']=$tour; $data['honor_wall']=$honor_wal; $giftA=DB::table('gift_user_img')->where('user_id',$id)->where('activity_id',$activity_id)->where('type',0)->where('img_type',1)->whereNotNull('url')->first(); $giftB=DB::table('gift_user_img')->where('user_id',$id)->where('activity_id',$activity_id)->where('type',1)->where('img_type',1)->whereNotNull('url')->first(); $data['giftA']=$giftA; $data['giftB']=$giftB; return $this->success($data); }else{ $hon_user=new HonorInfo(); $hon_user->activity_id=$activity_id; $hon_user->user_id=$id; $hon_user->rank=$rank+1; $hon_user->big_gift=$bid_gift; $hon_user->tour=$tour; $hon_user->honor_wall=$honor_wal; $hon_user->order_money=$money; $hon_user->save(); return $this->success($hon_user); } }else{ $giftA=DB::table('gift_user_img')->where('user_id',$id)->where('activity_id',$activity_id)->where('type',0)->where('img_type',1)->first(); $giftB=DB::table('gift_user_img')->where('user_id',$id)->where('activity_id',$activity_id)->where('type',1)->where('img_type',1)->first(); $re->giftA=$giftA; $re->giftB=$giftB; return $this->success($re); } } public function GetOrderDetail(Request $request){ $order=Ordertest::where('id',$request->id)->first(); if (!$order){ return $this->error(50021); } $arrs=Cache::get('DLS_GOOD_ARR'); if (!$arrs){ $arrs=$this->GetGoodArr(); } if ($order->arr_json){ $order_de=OrderDetail::where('order_id',$request->id)->get(); $arrss=[]; foreach ($order_de as $k=>$v){ $s=strpos($v->goods_name,'精'); if (is_numeric($s)){ $z='精-'.$v->goods_size; }else{ $s=strpos($v->goods_name,'简'); if (is_numeric($s)){ $z='简-'.$v->goods_size; }else{ $s=strpos($v->goods_name,'纯棉'); if (is_numeric($s)){ $z='纯棉-'.$v->goods_size; }else{ $s=strpos($v->goods_name,'老'); if (is_numeric($s)){ $z='老-'.$v->goods_size; } } } } $arrss[$z]=$v->num; } $re=json_decode($order->arr_json); $data=[]; foreach ($re as $k=>$v){ if ($k%2==0){ $data=array_merge($v,$data); } } $data=array_unique($data); $arr=[]; foreach ($re as $k=>$v){ if ($k%2==0){ $num=[]; foreach ($data as $ke=>$va){ $s=array_search($va,$v); if (is_numeric($s)){ $num[$va]=$re[$k+1][$s]; }else{ $num[$va]=0; } } $arr[]=$num; } } $key=array_keys($arr[0]); $arr=array_merge($arr,[$arrss]); $a=array_intersect($arrs,$key); $array=[$a]; foreach ($arr as $k=>$v){ $arrr=[]; foreach ($a as $ke=>$va){ if (isset($v[$va])){ $arrr[$ke]=$v[$va]; }else{ $arrr[$ke]=0; } } $array[]=$arrr; } return $this->success($array); }else{ return $this->error(50023,'','该订单不能查看合并信息'); } } public function GetGoodArr(){ $good=Goodtest::where('is_deleted',0)->orderBy('sort')->orderBy('id')->get(); $arrs=[]; foreach ($good as $k=>$v){ $s=strpos($v->main_attr,'精'); if (is_numeric($s)){ $z='精-'.$v->size; }else{ $s=strpos($v->main_attr,'简'); if (is_numeric($s)){ $z='简-'.$v->size; }else{ $s=strpos($v->main_attr,'纯棉'); if (is_numeric($s)){ $z='纯棉-'.$v->size; }else{ $s=strpos($v->main_attr,'老'); if (is_numeric($s)){ $z='老-'.$v->size; } } } } $arrs[$k]=$z; } $arrs=Cache::remember('DLS_GOOD_ARR',Carbon::now()->addYears(1),function ()use($arrs){ return $arrs; }); return $arrs; } public function GetExpresses(Request $request) { $order_ids = Ordertest::find($request->id); $data = Express::whereIn('order_id', $order_ids)->where('is_gift', 0)->get(); } /**申请作废订单**/ public function ApplyDestoryOrder(Request $request) { $id=$request->input('id',0); $cause=$request->input('destroy_cause',''); $activity=Activity::where('is_ing',1)->first(); $order=Ordertest::where('id','=',$id)->whereBetween('created_at',[$activity->start_time,$activity->end_time])->first(); if (empty($order)){ return $this->error(500216,'','该订单不是活动订单,如需作废请联系政委'); } if ($order->status!=0 && $order->status!=1){ return $this->error(500216,'','该订单状态不能作废,如需作废请联系政委'); } $count=Ordertest::where('id','<>',$id)->where('address_id',$order->address_id)->whereBetween('created_at',[$activity->start_time,$activity->end_time])->where('apply_status',1)->where('is_deleted',0)->count(); if ($count>=1){ return $this->error(500216,'','申请作废列表中包含一个和该订单相同地址的申请,请完成上一个申请'); } $order->apply_status=1; $order->destroy_cause=$cause; $order->destroy_status=0; $order->apply_time=Carbon::now()->toDateTimeString(); $order->save(); return $this->success([]); } /**取消作废订单**/ public function CancleDestoryOrder(Request $request) { $id=$request->input('id',0); // $cause=$request->input('destroy_cause',''); $order=Ordertest::find($id); $order->apply_status=0; $order->save(); return $this->success([]); } public function GetExpressInnage(Request $request){ $id=$request->input('id'); $data=Express::where('order_id',$request->id)->where('is_gift',0)->get(); $type_1=[]; $type_2=[]; $type_3=[]; foreach ($data as $k=>$v){ $arr=explode('+',$v->note); foreach ($arr as $ka=>$va){ $arrs=explode(':',$va); if (mb_substr($arrs[0],0,1)=='女'){ $sex='女款-'; $sexs=0; $str_count=substr_count(mb_substr($arrs[0],1),'X'); if ($str_count>=3){ $size=$str_count.'XL'; }else{ $size=mb_substr($arrs[0],1); } }else{ $sex='男款-'; $sexs=1; $str_count=substr_count($arrs[0],'X'); if ($str_count>=3){ $size=$str_count.'XL'; }else{ $size=$arrs[0]; } } if (mb_strlen($arrs[1])<4){ if (mb_substr($arrs[1],-1)=='精'){ $num=mb_substr($arrs[1],0,-1); if (isset($type_1[$sex.$size])){ $type_1[$sex.$size]['num']+=$num; }else{ $type_1[$sex.$size]['num']=$num; $type_1[$sex.$size]['sex']=$sexs; $type_1[$sex.$size]['size']=$size; } }elseif (mb_substr($arrs[1],-1)=='简'){ $num=mb_substr($arrs[1],0,-1); if (isset($type_2[$sex.$size])){ $type_2[$sex.$size]['num']+=$num; }else{ $type_2[$sex.$size]['num']=$num; $type_2[$sex.$size]['sex']=$sexs; $type_2[$sex.$size]['size']=$size; } }elseif (mb_substr($arrs[1],-1)=='老'){ $num=mb_substr($arrs[1],0,-1); if (isset($type_3[$sex.$size])){ $type_3[$sex.$size]['num']+=$num; }else{ $type_3[$sex.$size]['num']=$num; $type_3[$sex.$size]['sex']=$sexs; $type_3[$sex.$size]['size']=$size; } } }else{ $arrr=[ ['type'=>mb_substr($arrs[1],1,1),'num'=>mb_substr($arrs[1],0,1)], ['type'=>mb_substr($arrs[1],3,1),'num'=>mb_substr($arrs[1],2,1)] ]; foreach ($arrr as $kes=>$vas){ if ($vas['type']=='简'){ if (isset($type_2[$sex.$size])){ $type_2[$sex.$size]['num']+=$vas['num']; }else{ $type_2[$sex.$size]['num']=$vas['num']; $type_2[$sex.$size]['sex']=$sexs; $type_2[$sex.$size]['size']=$size; } }else{ if (isset($type_3[$sex.$size])){ $type_3[$sex.$size]['num']+=$vas['num']; }else{ $type_3[$sex.$size]['num']=$vas['num']; $type_3[$sex.$size]['sex']=$sexs; $type_3[$sex.$size]['size']=$size; } } } } } } $data=['hard'=>[],'simple'=>[],'old'=>[],'new_old'=>[]]; $hard_de=OrderDetail::where('goods_name','大卫博士精装版')->where('order_id',$id)->get(); $good=Goodtest::where('is_deleted',0)->where('name','大卫博士精装版')->first(); $data['hard']['name']=$good->name; $data['hard']['imgurl']=$good->main_img; $data['hard']['spec']=[]; foreach ($hard_de as $k=>$v){ if (isset($type_1[$v->goods_size])){ $n=$v->num-$type_1[$v->goods_size]['num']; if ($n>0){ $data['hard']['spec'][]=[ 'num'=>$v->num-$type_1[$v->goods_size]['num'], 'sex'=>$type_1[$v->goods_size]['sex'], 'size'=>$type_1[$v->goods_size]['size'], ]; } }else{ if (mb_substr($v->goods_size,0,1)=='女'){ $sex=0; }else{ $sex=1; } $size=mb_substr($v->goods_size,3); $data['hard']['spec'][]=[ 'num'=>$v->num, 'sex'=>$sex, 'size'=>$size, ]; } } $old_de=OrderDetail::where('goods_name','大卫博士老人版')->where('order_id',$id)->get(); $good=Goodtest::where('is_deleted',0)->where('name','大卫博士老人版')->first(); $data['old']['name']=$good->name; $data['old']['imgurl']=$good->main_img; $data['old']['spec']=[]; foreach ($old_de as $k=>$v){ if (isset($type_3[$v->goods_size])){ $n=$v->num-$type_3[$v->goods_size]['num']; if ($n>0){ $data['old']['spec'][]=[ 'num'=>$v->num-$type_3[$v->goods_size]['num'], 'sex'=>$type_3[$v->goods_size]['sex'], 'size'=>$type_3[$v->goods_size]['size'], ]; } }else{ if (mb_substr($v->goods_size,0,1)=='女'){ $sex=0; }else{ $sex=1; } $size=mb_substr($v->goods_size,3); $data['old']['spec'][]=[ 'num'=>$v->num, 'sex'=>$sex, 'size'=>$size, ]; } } $good=Goodtest::where('is_deleted',0)->where('name','大卫博士简约版')->first(); $data['simple']['name']=$good->name; $data['simple']['imgurl']=$good->main_img; $data['simple']['spec']=[]; $good=Goodtest::where('is_deleted',0)->where('name','大卫博士纯棉老人版')->first(); $data['new_old']['name']=$good->name; $data['new_old']['imgurl']=$good->main_img; $data['new_old']['spec']=[]; return $this->success($data); } public function Innage(Request $request){ $id=$request->input('id'); $data=Express::where('order_id',$request->id)->where('is_gift',0)->get(); $type_1=[]; $type_2=[]; $type_3=[]; foreach ($data as $k=>$v){ $arr=explode('+',$v->note); foreach ($arr as $ka=>$va){ $arrs=explode(':',$va); if (mb_substr($arrs[0],0,1)=='女'){ $sex='女款-'; $sexs=0; $str_count=substr_count(mb_substr($arrs[0],1),'X'); if ($str_count>=3){ $size=$str_count.'XL'; }else{ $size=mb_substr($arrs[0],1); } }else{ $sex='男款-'; $sexs=1; $str_count=substr_count($arrs[0],'X'); if ($str_count>=3){ $size=$str_count.'XL'; }else{ $size=$arrs[0]; } } if (mb_strlen($arrs[1])<4){ if (mb_substr($arrs[1],-1)=='精'){ $num=mb_substr($arrs[1],0,-1); if (isset($type_1[$sex.$size])){ $type_1[$sex.$size]['num']+=$num; }else{ $type_1[$sex.$size]['num']=$num; $type_1[$sex.$size]['sex']=$sexs; $type_1[$sex.$size]['size']=$size; } }elseif (mb_substr($arrs[1],-1)=='简'){ $num=mb_substr($arrs[1],0,-1); if (isset($type_2[$sex.$size])){ $type_2[$sex.$size]['num']+=$num; }else{ $type_2[$sex.$size]['num']=$num; $type_2[$sex.$size]['sex']=$sexs; $type_2[$sex.$size]['size']=$size; } }elseif (mb_substr($arrs[1],-1)=='老'){ $num=mb_substr($arrs[1],0,-1); if (isset($type_3[$sex.$size])){ $type_3[$sex.$size]['num']+=$num; }else{ $type_3[$sex.$size]['num']=$num; $type_3[$sex.$size]['sex']=$sexs; $type_3[$sex.$size]['size']=$size; } } }else{ $arrr=[ ['type'=>mb_substr($arrs[1],1,1),'num'=>mb_substr($arrs[1],0,1)], ['type'=>mb_substr($arrs[1],3,1),'num'=>mb_substr($arrs[1],2,1)] ]; foreach ($arrr as $kes=>$vas){ if ($vas['type']=='简'){ if (isset($type_2[$sex.$size])){ $type_2[$sex.$size]['num']+=$vas['num']; }else{ $type_2[$sex.$size]['num']=$vas['num']; $type_2[$sex.$size]['sex']=$sexs; $type_2[$sex.$size]['size']=$size; } }else{ if (isset($type_3[$sex.$size])){ $type_3[$sex.$size]['num']+=$vas['num']; }else{ $type_3[$sex.$size]['num']=$vas['num']; $type_3[$sex.$size]['sex']=$sexs; $type_3[$sex.$size]['size']=$size; } } } } } } $data=['hard'=>[],'simple'=>[],'old'=>[],'new_old'=>[]]; $hard_de=OrderDetail::where('goods_name','大卫博士精装版')->where('order_id',$id)->get(); $good=Goodtest::find($hard_de[0]->goods_id); $data['hard']['name']=$good->name; $data['hard']['imgurl']=$good->main_img; foreach ($hard_de as $k=>$v){ if (isset($type_1[$v->goods_size])){ $n=$v->num-$type_1[$v->goods_size]['num']; if ($n>0){ $data['hard']['spec'][]=[ 'num'=>$v->num-$type_1[$v->goods_size]['num'], 'sex'=>$type_1[$v->goods_size]['sex'], 'size'=>$type_1[$v->goods_size]['size'], ]; } }else{ if (mb_substr($v->goods_size,0,1)=='女'){ $sex=0; }else{ $sex=1; } $size=mb_substr($v->goods_size,3); $data['hard']['spec'][]=[ 'num'=>$v->num, 'sex'=>$sex, 'size'=>$size, ]; } } $old_de=OrderDetail::where('goods_name','大卫博士老人版')->where('order_id',$id)->get(); $good=Goodtest::find($old_de[0]->goods_id); $data['old']['name']=$good->name; $data['old']['imgurl']=$good->main_img; foreach ($old_de as $k=>$v){ if (isset($type_3[$v->goods_size])){ $n=$v->num-$type_3[$v->goods_size]['num']; if ($n>0){ $data['old']['spec'][]=[ 'num'=>$v->num-$type_3[$v->goods_size]['num'], 'sex'=>$type_3[$v->goods_size]['sex'], 'size'=>$type_3[$v->goods_size]['size'], ]; } }else{ if (mb_substr($v->goods_size,0,1)=='女'){ $sex=0; }else{ $sex=1; } $size=mb_substr($v->goods_size,3); $data['old']['spec'][]=[ 'num'=>$v->num, 'sex'=>$sex, 'size'=>$size, ]; } } return $this->success($data); } /**校验数量**/ public function CheckGoodNum(Request $request){ $user=Auth::user(); if ($user->level!=3){ return $this->error('4001','','当前用户不是代理公司'); } $rules = [ 'size_id' => 'required', 'total' => 'required', 'type' => 'required', 'num' => 'required', ]; $message = [ 'required' => ':attribute不能为空', ]; $attributes = [ 'size_id' => 'size_id', 'total' => '商品总数量', 'type' => '商品中总类型', 'num' => '单类商品商量', ]; $vali = Validator::make($request->all(), $rules, $message,$attributes); if ($vali->fails()) { Log::error('{-------提交订单的参数错误--------}'.$vali->errors()->first()); return $this->error('40010', '',$vali->errors()->first()); } $input=$request->all(); foreach ($input['size_id'] as $k=>$v){ $data=Goodtest::find($v); if (!$data){ return $this->error(40013,'','购物车有未知商品,请清空购物车'); } $now=Carbon::now()->timestamp; if ($data->off_time!=null){ if (strtotime($data->off_time)<$now){ return $this->error(300,'','商品'.$data->name.'的'.$data->size.'尺码已经下架'); } } if($data->is_show==4){ return $this->error(300,'','商品'.$data->name.'的'.$data->size.'尺码已经下架'); } if($data->is_show==1){ return $this->error(300,'','商品'.$data->name.'的'.$data->size.'尺码未下架'); } } foreach ($input['size_id'] as $k=>$v){ if (Cache::get('dwbs_good_num'.$v)<$input['num'][$k]){ $data=Goodtest::find($v); return $this->error(300,'',$data->name.'的'.$data->size.'尺码数量不足,请重新选择数量'); } } return $this->success([]); } }