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){ return $this->success([]); } /* * 处理每次订单数据 * **/ 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]; }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) { $rules = [ 'size_id' => 'required', 'total' => 'required', 'type' => 'required', 'num' => 'required', 'money'=>'required', 'address_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()); } // return $this->error(500214,'','当前时间不能下单'); Log::error(json_encode($request->all())); $user=Auth::user(); // if (!in_array($user->id,[123226,39516])){ // return $this->error(500214,'','当前时间不能下单'); // } $time=Carbon::now(); $input=$request->all(); $Numarr=[70,71,72,73,74,75,76,77]; $activity=Activity::where('is_ing',1)->first(); // if ($activity){ // if ($time <$activity->start_time || $time>$activity->end_time){ // return $this->error(500214,'','当前时间不能下单'); // } // if ($time>=$activity->start_time && $time<=$activity->end_time){ // if ($timeaddHours(9) || $time>Carbon::today()->addHours(21)){ // return $this->error(500214,'','当前时间不能下单'); // } // // } // } 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.'尺码数量不足,请重新选择数量'); } } $lock=Cache::lock('foo',4); $lock->block(3); foreach ($input['size_id'] as $k=>$v){ Cache::decrement('dwbs_good_num'.$v,$input['num'][$k]); } optional($lock)->release(); DB::beginTransaction(); try{ $users=User::where('id',$user->id)->first(); $address=Address::where('id',$request->input('address_id'))->select('id','province','city','town')->first(); $area=$address->province.$address->city.$address->town; if ($area=='山东省临沂市临沭县'){ $store_id = 17; }else{ $store_id = null; } // 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); 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'])); $arr=[]; $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->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); // if ($data->name=='红色贺岁款(精装版)'){ // $limit=LimitGood::where('user_id',$user->id)->where('size',$data->size)->first(); // $limit->num+=$input['num'][$k]; // $limit->save(); // } //判断是否订单详情是否存在相同商品的记录 $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-=$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-=$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_name','<>','爱丫丫抗菌袜')->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{//不合并 if (!isset($input['belong_id'])){ return $this->error(300,'','请重新填写地址!'); } $order=new Ordertest(); $order->user_id=$user->id; $order->store_id=$store_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->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->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); // if ($data->name=='红色贺岁款(精装版)'){ // $limit=LimitGood::where('user_id',$user->id)->where('size',$data->size)->first(); // $limit->num+=$input['num'][$k]; // $limit->save(); // } $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-=$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=='件'){ if ($data->name!='爱丫丫抗菌袜'){ $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->store_id=$store_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->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->type = 0; $orderremark->remark = $input['remark']; if (!$orderremark->save()) { throw new \Exception('2'); } } foreach ($input['size_id'] as $k=>$v){ $data=Goodtest::find($v); // if ($data->name=='红色贺岁款(精装版)'){ // $limit=LimitGood::where('user_id',$user->id)->where('size',$data->size)->first(); // $limit->num+=$input['num'][$k]; // $limit->save(); // } $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; } try { 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)); } }catch (\Exception $exception){ } } /*生成订单编号*/ public function order_num(){ $user=Auth::user(); $number='DWBS-'.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_nums(){ $user=Auth::user(); $number='DWBS-'.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:id,nickname'])->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; } $activity=Activity::where('is_ing',1)->first(); $time=Carbon::now(); $all_data=[ // 'order_num'=>$order->ordersn, // 'time'=>strtotime($order->created_at)*1000, // 'status'=>$order->status, 'address'=>[ 'city'=>$order->address->city, 'province'=>$order->address->province, 'area'=>$order->address->town, "address"=>Crypt::decryptString($order->address->address_code), "con_name"=>$order->address->username, "nickname"=>$order->address->username, "con_mobile"=>Crypt::decryptString($order->address->mobile_code), ], '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'=>['nickname'=>$order->belong_user->nickname], 'list'=>$re ]; return $this->success($all_data); } public function get_data(Request $request){ $data=Ordertest::where('order_num',$request->order_num)->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_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){ $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){ $res[$k]['address']=$v->address; $res[$k]['address']['level']=null; $res[$k]['address']['nickname']=$v->address->username; $res[$k]['address']["con_name"]=$v->address->username; $res[$k]['address']["mobile"]=Crypt::decryptString($v->address->mobile_code); $res[$k]['address']["address"]=Crypt::decryptString($v->address->address_code); } $res[$k]['created_at']=$v->created_at->toDateTimeString(); if ($v->is_deleted){ $res[$k]['deleted_time']=$v->updated_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){ // return $this->error(400214,'','暂时不能作废订单,请联系客服!'); $rules=[ 'order_num'=>'required', 'destroy_cause'=>'required', ]; $message=[ 'order_num.required'=>'订单id是必填项', 'destroy_cause.required'=>'作废原因是必填项', ]; $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)->lockForUpdate()->first(); if (!$order){ return $this->error(300,'','查无此订单,请重试'); } if ($order->is_deleted==1){ return $this->error(400214,'','该订单已作废,请刷新订单列表'); } DB::beginTransaction(); try{ $order->is_deleted=1; $order->destroy_cause=$request->input('destroy_cause',''); $order->wait_back_money=0; $order->pay_status=0; if (!$order->save()){ throw new \Exception('1'); } // if ($order->pay_status!=0){ // return $this->error(40013,'','该订单已支付,请联系客服修改'); // } if ($order->pay_money!=0){ $user=User::where('id',$order->user_id)->lockForUpdate()->first(); $user->money=$user->money+$order->pay_money; if (!$user->save()){ throw new \Exception('2'); } // $user_logs=UserPay::where('user_id',$order->user_id)->lockForUpdate()->orderByDesc('id')->limit(1)->first(); $user_log=new UserPay(); $user_log->user_id=$order->user_id; $user_log->pay_money=$order->pay_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='订单作废退回'; $user_log->user_money=$user->money; // $user_log->user_money=$user_logs->user_money+$order->pay_money; if (!$user_log->save()){ throw new \Exception('3'); } } $orderlog = new Orderlog(); $orderlog->order_id = $order->id; $orderlog->user_id = $order->user_id; $orderlog->log_name = '用户本人'; $orderlog->log_title = '作废订单'; $orderlog->log_text = '用户本人自动作废订单'; if (!$orderlog->save()){ throw new \Exception('3'); } $orderdetail=OrderDetail::where('order_id',$order->id)->get(); $gift_num=0; foreach ($orderdetail as $k=>$v){ $good=Goodtest::find($v->goods_id); // if ($good->unit=='套'){ // $gift_num+=$v->num; // }else{ // $gift_num+=$v->num*2; // } // if ($good->name=='红色贺岁款(精装版)'){ // $limit=LimitGood::where('user_id',$order->user_id)->where('size',$good->size)->first(); // $limit->num-=$v->num; // $limit->save(); // } // $good->storage=$good->storage+$v->num; // $good->sold_num=$good->sold_num-$v->num; Cache::increment('dwbs_good_num'.$v->goods_id,$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(); try { $user=User::find($order->user_id); if($user->openid){ $mes['openid']=$user->openid; $mes['data']=[ 'first' => '您的订单已主动作废', 'keyword1' => $order->order_num, 'keyword2' => $request->destroy_cause, 'remark' => '点击链接进入系统,查看详情', ]; event(new DestoryOrder($mes)); } }catch (\Exception $exception){ } return $this->success([]); }catch (\Exception $exception){ DB::rollBack(); Log::error($exception->getMessage()); 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 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_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(){ return $this->success([]); } public function get_activity_list(Request $request){ if ($request->has('page_index')){ $count=Activity::where('disabled',0)->count(); $data=Activity::where('disabled',0)->limit(1)->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)->limit(1)->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 GetOrderDetail(Request $request){ $order=Ordertest::where('id',$request->id)->first(); if (!$order){ return $this->error(50021); } $arrs=Cache::get('DLS_GOOD_ARRS'); 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; }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; }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_ARRS',Carbon::now()->addYears(1),function ()use($arrs){ return $arrs; }); return $arrs; } /**校验数量**/ public function CheckGoodNum(Request $request){ Log::error(json_encode($request->all())); // return $this->error('4001','','活动已结束!'); // $status=Cache::get('GiftWaZiStatus'); // if ($status){ // return $this->error('4001','','活动已结束!'); // } $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(); $time=Carbon::now(); $Numarr=[70,71,72,73,74,75,76,77]; $goods_id=[]; $activity=Activity::where('is_ing',1)->first(); if ($activity){ if ($time>=$activity->start_time && $time<=$activity->end_time){ if ($timeaddHours(9) || $time>Carbon::today()->addHours(21)){ return $this->error(500214,'','当前时间不能下单'); } if ($activity->set_company_buy_num){ foreach ($input['size_id'] as $k=>$v){ if (in_array($v,$Numarr)){ if ($input['num'][$k]%6!=0){ $data=Goodtest::find($v); return $this->error(300,'','商品'.$data->name.'的'.$data->size.'尺码不是六的倍数'); } }else{ if ($input['num'][$k]%3!=0){ $data=Goodtest::find($v); return $this->error(300,'','商品'.$data->name.'的'.$data->size.'尺码不是三的倍数'); } } } } } } foreach ($input['size_id'] as $k=>$v){ $data=Goodtest::find($v); if (!$data){ return $this->error(40013,'','购物车有未知商品,请清空购物车'); } if (in_array($v,$goods_id)){ return $this->error(40013,'','商品'.$data->name.'的'.$data->size.'尺码已经下架'); } $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([]); } 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 order_data(Request $request){ $user=Auth::user(); // $user=User::where('mobile',13509768818)->first(); $activity=Activity::where('is_ing',1)->first(); if (Carbon::now()->addDays(-3)>$activity->end_time){ $data=[ 'hard'=>0, 'simple'=>0, 'old'=>0, 'newold'=>0, 'youth'=>0, 'wazi'=>0, 'hard_money'=>0, 'simple_money'=>0, 'old_money'=>0, 'newold_money'=>0, 'youth_money'=>0, 'wazi_money'=>0, 'hard_all'=>0, 'simple_all'=>0, 'old_all'=>0, 'newold_all'=>0, 'youth_all'=>0, 'wazi_all'=>0, 'money'=>0, 'pay_money'=>0, 'no_pay_money'=>0, ]; return $this->success($data); } 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; $youth_all=0; $wazi_all=0; $hard_good=Goodtest::where('main_attr','大卫博士精装版')->pluck('id')->toArray(); $hard_goods=Goodtest::where('main_attr','精装版新款')->pluck('id')->toArray(); $hard_goodss=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(); $old_goods=Goodtest::where('main_attr','高腰版新款')->pluck('id')->toArray(); $newold_good=Goodtest::where('main_attr','大卫博士纯棉老人版')->pluck('id')->toArray(); $youth_good=Goodtest::where('main_attr','大卫博士青春版')->pluck('id')->toArray(); $wa_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; }elseif (in_array($va->goods_id,$youth_good)){ $youth_all+=$va->num; }elseif (in_array($va->goods_id,$hard_goods)){ $hard_all+=$va->num; }elseif (in_array($va->goods_id,$hard_goodss)){ $hard_all+=$va->num; }elseif (in_array($va->goods_id,$old_goods)){ $old_all+=$va->num; }elseif (in_array($va->goods_id,$wa_good)){ $wazi_all+=$va->num; } } } $start=date('Y-m-d H:i:s',strtotime($activity->start_time)-1); $end=date('Y-m-d H:i:s',strtotime($activity->end_time)+1); $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; $youth=0; $wazi=0; $old_money=0; $newold_money=0; $simple_money=0; $hard_money=0; $youth_money=0; $wazi_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; }elseif (in_array($va->goods_id,$youth_good)){ $youth+=$va->num; $youth_money+=$va->money; }elseif (in_array($va->goods_id,$hard_goods)){ $hard+=$va->num; $hard_money+=$va->money; }elseif (in_array($va->goods_id,$hard_goodss)){ $hard+=$va->num; $hard_money+=$va->money; }elseif (in_array($va->goods_id,$old_goods)){ $old+=$va->num; $old_money+=$va->money; }elseif (in_array($va->goods_id,$wa_good)){ $wazi+=$va->num; $wazi_money+=$va->money; } } $money+=$v->money; $pay_money+=$v->pay_money; $no_pay_money+=$v->no_pay_money; } $money_rebate='100%'; $real_money=$money; if ($money>=300000){ $money_rebate='95%'; $real_money=round($money*0.95,2); } $s=$real_money-$pay_money; if ($s<0){ $s=0; } $data=[ 'hard'=>$hard, 'simple'=>$simple, 'old'=>$old, 'newold'=>$newold, 'youth'=>$youth, 'wazi'=>$wazi, 'hard_money'=>$hard_money, 'simple_money'=>$simple_money, 'old_money'=>$old_money, 'newold_money'=>$newold_money, 'youth_money'=>$youth_money, 'wazi_money'=>$wazi_money, 'hard_all'=>$hard_all, 'simple_all'=>$simple_all, 'old_all'=>$old_all, 'newold_all'=>$newold_all, 'youth_all'=>$youth_all, 'wazi_all'=>$wazi_all, 'money'=>$money, 'pay_money'=>$pay_money, 'no_pay_money'=>round($s,2), 'real_money'=>$real_money, 'money_reabte'=>$money_rebate, ]; 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; $actity=Activity::where('is_ing',1)->first(); if (Carbon::now()->addDays(-3)>$actity->end_time){ return $this->success(['all'=>[],'list'=>[], 'size'=>15, 'total'=>0]); } $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(); $youth_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; $youth_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; }elseif (in_array($va->goods_id,$youth_good)){ $youth_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; $res[$i]['youth']=$youth_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+$youth_all; $i++; } return $this->success_list($res); } 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=[]; $type_4=[]; $type_5=[]; $type_6=[]; 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)=='老' || 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; } }elseif (mb_substr($arrs[1],-1)=='棉老'){ $num=mb_substr($arrs[1],0,-1); if (isset($type_4[$sex.$size])){ $type_4[$sex.$size]['num']+=$num; }else{ $type_4[$sex.$size]['num']=$num; $type_4[$sex.$size]['sex']=$sexs; $type_4[$sex.$size]['size']=$size; } }elseif (mb_substr($arrs[1],-1)=='青'){ $num=mb_substr($arrs[1],0,-1); if (isset($type_5[$sex.$size])){ $type_5[$sex.$size]['num']+=$num; }else{ $type_5[$sex.$size]['num']=$num; $type_5[$sex.$size]['sex']=$sexs; $type_5[$sex.$size]['size']=$size; } }elseif (mb_substr($arrs[1],-1)=='红'){ $num=mb_substr($arrs[1],0,-1); if (isset($type_6[$sex.$size])){ $type_6[$sex.$size]['num']+=$num; }else{ $type_6[$sex.$size]['num']=$num; $type_6[$sex.$size]['sex']=$sexs; $type_6[$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; } }elseif($vas['type']=='高' || $vas['type']=='老'){ 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; } }elseif($vas['type']=='青'){ if (isset($type_5[$sex.$size])){ $type_5[$sex.$size]['num']+=$vas['num']; }else{ $type_5[$sex.$size]['num']=$vas['num']; $type_5[$sex.$size]['sex']=$sexs; $type_5[$sex.$size]['size']=$size; } }elseif($vas['type']=='红'){ if (isset($type_6[$sex.$size])){ $type_6[$sex.$size]['num']+=$vas['num']; }else{ $type_6[$sex.$size]['num']=$vas['num']; $type_6[$sex.$size]['sex']=$sexs; $type_6[$sex.$size]['size']=$size; } }elseif($vas['type']=='棉老'){ if (isset($type_4[$sex.$size])){ $type_4[$sex.$size]['num']+=$vas['num']; }else{ $type_4[$sex.$size]['num']=$vas['num']; $type_4[$sex.$size]['sex']=$sexs; $type_4[$sex.$size]['size']=$size; } } } } } } $data=['hard'=>[],'simple'=>[],'old'=>[],'new_old'=>[],'youth'=>[],'right'=>[]]; $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, ]; } } $youth_de=OrderDetail::where('goods_name','大卫博士青春版')->where('order_id',$id)->get(); $good=Goodtest::where('is_deleted',0)->where('name','大卫博士青春版')->first(); $data['youth']['name']=$good->name; $data['youth']['imgurl']=$good->main_img; $data['youth']['spec']=[]; foreach ($youth_de as $k=>$v){ if (isset($type_5[$v->goods_size])){ $n=$v->num-$type_5[$v->goods_size]['num']; if ($n>0){ $data['youth']['spec'][]=[ 'num'=>$v->num-$type_5[$v->goods_size]['num'], 'sex'=>$type_5[$v->goods_size]['sex'], 'size'=>$type_5[$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['youth']['spec'][]=[ 'num'=>$v->num, 'sex'=>$sex, 'size'=>$size, ]; } } $simple_de=OrderDetail::where('goods_name','大卫博士简约版')->where('order_id',$id)->get(); $good=Goodtest::where('is_deleted',0)->where('name','大卫博士简约版')->first(); $data['simple']['name']=$good->name; $data['simple']['imgurl']=$good->main_img; $data['simple']['spec']=[]; foreach ($simple_de as $k=>$v){ if (isset($type_2[$v->goods_size])){ $n=$v->num-$type_2[$v->goods_size]['num']; if ($n>0){ $data['simple']['spec'][]=[ 'num'=>$v->num-$type_2[$v->goods_size]['num'], 'sex'=>$type_2[$v->goods_size]['sex'], 'size'=>$type_2[$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['simple']['spec'][]=[ 'num'=>$v->num, 'sex'=>$sex, 'size'=>$size, ]; } } $right_de=OrderDetail::where('goods_name','红色贺岁款(精装版)')->where('order_id',$id)->get(); $good=Goodtest::where('is_deleted',0)->where('name','红色贺岁款(精装版)')->first(); $data['right']['name']=$good->name; $data['right']['imgurl']=$good->main_img; $data['right']['spec']=[]; foreach ($right_de as $k=>$v){ if (isset($type_6[$v->goods_size])){ $n=$v->num-$type_6[$v->goods_size]['num']; if ($n>0){ $data['right']['spec'][]=[ 'num'=>$v->num-$type_6[$v->goods_size]['num'], 'sex'=>$type_6[$v->goods_size]['sex'], 'size'=>$type_6[$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['right']['spec'][]=[ 'num'=>$v->num, 'sex'=>$sex, 'size'=>$size, ]; } } $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); } }