123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549 |
- <?php
- namespace App\Http\Controllers;
- /*
- * 订单管理
- * */
- use App\Models\Goods;
- use App\Models\GoodSku;
- use App\Models\GoodSkuPrice;
- use App\Models\GoodSkuTotal;
- use App\Models\GoodSpec;
- use App\Models\IncomExpenses;
- use App\Models\Message;
- use App\Models\Order;
- use App\Models\OrderBreakup;
- use App\Models\OrderGoods;
- use Carbon\Carbon;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Auth;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Log;
- class OrderController extends Controller
- {
- public function show_index()
- {
- // $id = Auth::user()->id;
- // $date = Carbon::now()->format('m/d');
- $date1 = Carbon::now()->addDay('2')->toDateTimeString();
- return $date1;
- }
- /**
- * 提交订单
- **/
- public function submit_order(Request $request)
- {
- // try{
- Log::error('{---价格---}'.$request->total);
- $order = $this->order_save(0, $request->address_id, $request->total,$request->remark);
- Log::error('dsds------1');
- $this->order_goods_save($request->list,$order['order_id']);
- Log::error('dsds------2');
- $this->order_de($order['order_num']);
- Log::error('dsds------3');
- return $this->success(['order_num'=>$order['order_num']]);//保存消息
- // }catch (\Exception $exception){
- // Log::error('{------这里是提交订单---时间为----}'.Carbon::now()->toDateTimeString());
- // return $this->error(300);
- // }
- }
- /*
- * 订单保存的详情
- * */
- public function order_de($order_num){
- $user=Auth::user();
- $order=Order::where('ordersn',$order_num)->first();
- $order_goods=OrderGoods::where('order_id',$order->id)->get();
- foreach ($order_goods as $k=>$v){
- $data[$k]=$v->goods_id;
- }
- $data=array_unique($data);
- $datas=[];
- foreach ($data as $k=>$v){
- $good=Goods::where('id',$v)->first();
- $nums=OrderGoods::where('order_id',$order->id)->where('goods_id',$v)->sum('num');
- $price=OrderGoods::where('order_id',$order->id)->where('goods_id',$v)->value('price');
- $datas[$k]=[
- 'price'=>$price,
- 'name'=>$good->name,
- 'img'=>$good->img_url,
- 'num'=>(int)$nums
- ];
- }
- $datas=json_encode($datas);
- // $datas=json_encode($datas);
- // $down_order=[
- // 'order_num'=>$order_num,
- // 'time'=>time()*1000,
- // 'status'=>1,
- // 'goodList'=>$datas
- // ];
- // $r=['order_num'=>$order_num,'data'=>$datas,'user_id'=>$user->id,'agent_id'=>$user->agent_id,'price'=>$order->price,'type'=>2,'mobile'=>$user->mobile,'nickname'=>$user->nickname];
- $message=new Message();
- $message->order_num=$order_num;
- $message->data=$datas;
- $message->type=2;
- $message->user_id=$user->id;
- $message->agent_id=$user->agent_id;
- $message->price=$order->price;
- $message->mobile=$user->mobile;
- $message->nickname=$user->nickname;
- $message->save();
- // DB::table('message')->insert($r);
- return '';
- }
- /*
- * 下级订单,待付款
- * */
- public function order_lower(Request $request)
- {
- $user=Auth::user();
- $id=$user->id;
- if ($request->status==1){
- $order = Order::where('status', $request->status)
- ->where('agent_id', $id)->where('is_turn','<>',1)->paginate(15);
- }else{
- if ($request->status==2){
- $order = Order::where('status', $request->status)->where('agent_id', $id)->paginate(15);
- }else{
- $order = Order::where('status', $request->status)->where('agent_id', $id)->paginate(15);
- }
- }
- $data=$this->deal_order($order);
- return $this->success_list($data[0], '', $data[1]);
- }
- /**
- *notes:
- *订单详情
- *
- */
- public function order_detail(Request $request)
- {
- Log::error(json_encode($request->all()));
- if ($request->type=='turn'){
- $order_num=Order::where('original_ordersn',$request->order_num)->value('ordersn');
- }
- else{
- $order_num=$request->order_num;
- }
- $order = Order::where('ordersn', $order_num)->first();
- $order_goods_all = OrderGoods::where('order_id', $order->id)->groupBy('goods_id')->select('goods_id')->get();
- foreach ($order_goods_all as $k => $v) {
- $order_goods = OrderGoods::where('goods_id', $v->goods_id)->where('order_id', $order->id)->get();
- $s = [];
- foreach ($order_goods as $key => $val) {
- $sku = GoodSku::find($val->sku_id);
- $re = explode('/', $sku->sku_path);
- $goodspec_type = GoodSpec::find($re[1]);
- $goodspec_size = GoodSpec::find($re[0]);
- $data[$key]['name'] = $goodspec_type->title;
- $data[$key]['size'] = $goodspec_size->title;
- $data[$key]['num'] = $val->num;
- $data[$key]['size_id'] = $val->sku_id;
- $data[$key]['price'] = $val->price;
- }
- $data = array_merge($s, $data);
- $datas[$k]['goods'] = $data;
- $goods = Goods::find($v->goods_id);
- $datas[$k]['name'] = $goods->name;
- $datas[$k]['storage']=GoodSkuTotal::where('user_id',Auth::user()->id)->where('goods_id',$v->goods_id)->sum('total');
- $datas[$k]['id'] = $goods->id;
- $datas[$k]['imgurl'] = $goods->img_url;
- $datas[$k]['price'] = $data[0]['price'];//这地方
- }
- foreach ($datas as $k => $v) {
- $re = $this->deal_arr($v['goods']);
- $all[$k]['name'] = $v['name'];
- $all[$k]['id'] = $v['id'];
- $all[$k]['storage']=$v['storage'];
- $all[$k]['img'] = $v['imgurl'];
- $all[$k]['price'] = $v['price'];
- $all[$k]['typeList'] = $re;
- }
- $all_data=[
- 'order_num'=>$order->ordersn,
- 'time'=>strtotime($order->created_at)*1000,
- 'status'=>$order->status,
- 'address'=>[
- 'city'=>$order->address->city,
- 'provice'=>$order->address->provice,
- 'area'=>$order->address->town,
- "address"=>$order->address->address,
- "con_name"=>$order->address->username,
- "con_mobile"=>$order->address->mobile,
- ],
- 'remark'=>$order->desc,
- 'goodList'=>$all
- ];
- return $this->success($all_data);
- }
- /*
- * 处理订单格式
- * */
- public function deal_arr($data)
- {
- $result = array();
- foreach ($data as $key => $value) {
- $result[$value['name']][] = $value;
- }
- $i = 0;
- foreach ($result as $k => $v) {
- foreach ($v as $key => $val) {
- $dat[$key] = $val['size'];
- $dats[$key] = $val['num'];
- $datss[$key] = $val['size_id'];
- }
- $datas[$i]['name'] = $v[0]['name'];
- $datas[$i]['size'] = $dat;
- $datas[$i]['num'] = $dats;
- $datas[$i]['size_id'] = $datss;
- $i++;
- }
- return $datas;
- }
- /*
- *转单
- */
- public function turn_order(Request $request)
- {
- Log::error('{---zhuandan-----}'.json_encode($request->all()));
- $list=$request->list;
- $user = Auth::user();
- $order_num = $request->order_num;
- $order = Order::where('ordersn', $order_num)->first();
- if ($request->status==1){
- $order->is_turn=1;//是否为全部转单
- }elseif($request->status==2){
- $order->is_turn = 2;
- $order->status=2;
- }else{
- $order=Order::where('ordersn',$request->order_num)->first();
- if ($order->turn_is==1){
- $order_all=Order::where('ordersn',$order->original_ordersn)->first();
- $order_all->status=2;
- $order_all->save();
- }
- $order->status=2;
- $order->save();
- return $this->success([]);
- }
- $order->save();
- $break_id = $this->order_break(0, $order->ordersn, $user);
- $break_id_turn = $this->order_break(1, $order->ordersn, $user);
- $order_id=$this->order_save(1,$order->address_id,0,null,$order->ordersn,$break_id_turn);//订单ID
- $this->order_goods_save($list,$order_id['order_id'],1,$break_id_turn);
- $total=OrderGoods::where('order_id',$order_id['order_id'])->sum('totalprice');
- $orders=Order::find($order_id['order_id']);
- $orders->price=$total;
- if ($request->has('remark')){
- $orders->desc=$request->remark;
- }
- if ($request->status==1){
- $orders->is_turn=1;//是否为全部转单
- }else{
- $this->order_goods_surplus($order->id,$order_id['order_id'],$break_id);
- $orders->status=2;
- }
- $orders->save();
- return $this->success([]);
- }
- /**保存数据库*/
- public function order_break($type, $order_num, $user)
- {
- $order = Order::where('ordersn', $order_num)->first();
- $order_break = new OrderBreakup();
- if ($type == 1) {
- $order_break->sender_id = $user->agent_id;
- $order_break->status = 1;
- } else {
- $order_break->sender_id = $order->agent_id;
- $order_break->status = 0;
- }
- $order_break->agent_id = $order->agent_id;
- $order_break->user_id = $order->user_id;
- $order_break->ordersn = $order->ordersn;
- $order_break->address_id = $order->address_id;
- $order_break->save();
- return $order_break->id;
- }
- /*订单的保存*/
- public function order_save($type, $address_id, $total = 0,$remark=null,$ordersn = null, $id = 0)
- {
- $user = Auth::user();
- $code = time() . str_pad($user->id, 6, 0, STR_PAD_LEFT) . mt_rand(1000, 9999);
- $order = new Order();
- if ($type == 1) {
- $order->original_ordersn = $ordersn;
- $order->turn_is = 1;
- $order->breakup_id = $id;
- } else {
- $order->price = $total;
- }
- $order->ordersn = $code;
- $order->desc = $remark;
- $order->user_id = $user->id;
- $order->agent_id = $user->agent_id;
- $order->address_id = $address_id;
- $order->save();
- return ['order_num'=>$order->ordersn,'order_id'=>$order->id];
- }
- /*
- * order_goods数据库的保存
- * */
- public function order_goods_save($data,$order_id,$type=0,$break_id=0){
- foreach ($data as $k => $v) {
- $order_goods = new OrderGoods();
- $goods_sku_price = new GoodSkuPrice();
- $order_goods->order_id = $order_id;
- $order_goods->goods_id = $v['id'];
- $order_goods->sku_id = $v['size_id'];
- $order_goods->num = $v['num'];
- if ($type==1){
- $order_goods->breakup_id=$break_id;
- }
- $order_goods->price = $goods_sku_price
- ->where('goods_id', $v['id'])
- ->where('sku_id', $v['size_id'])
- ->where('user_level', Auth::user()->level)->value('price');
- $order_goods->totalprice = $order_goods->price * $order_goods->num;
- $order_goods->save();
- }
- // return $order_goods->id;
- }
- /*
- * 剩余订单量
- * */
- public function order_goods_surplus($order_id,$order_id_break,$break_id){
- $data=OrderGoods::where('order_id',$order_id)->get();
- foreach ($data as $k=>$v){
- $nums=OrderGoods::where('order_id',$order_id_break)
- ->where('goods_id',$v->goods_id)
- ->where('sku_id',$v->sku_id)->value('num');
- if ($nums<$v->num){
- $order_goods=new OrderGoods();
- $order_goods->breakup_id=$break_id;
- $order_goods->goods_id=$v->goods_id;
- $order_goods->sku_id=$v->sku_id;
- $order_goods->price=$v->price;
- $order_goods->num=$nums;
- $order_goods->totalprice=$v->price*($v->num-$nums);
- $order_goods->save();
- }elseif ($nums>$v->num){
- Log::error('------数量出错-----时间为-'.Carbon::now()->toDateTimeString());
- }else{
- $order_goods=new OrderGoods();
- $order_goods->breakup_id=$break_id;
- $order_goods->goods_id=$v->goods_id;
- $order_goods->sku_id=$v->sku_id;
- $order_goods->price=$v->price;
- $order_goods->totalprice=$v->price*($v->num-$nums);
- $order_goods->num=$nums;
- $order_goods->save();
- Log::error('--------全部转单--------');
- }
- }
- }
- /**
- *确认收款
- *
- */
- public function order_sure_pay(Request $request){
- $order=Order::where('ordersn',$request->order_num)->first();
- $order->status=1;
- $order->save();
- $incom=new IncomExpenses();
- $incom->user_id=Auth::user()->id;
- $incom->type=0;
- $incom->totalprice=$order->price;
- $incom->save();
- if ($order)
- return $this->success([]);
- }
- /*
- * 确认发货
- * */
- public function order_send(Request $request){
- $order=Order::where('ordersn',$request->order_num)->first();
- $order->status=2;
- $order->save();
- return $this->success([]);
- }
- /*
- * 删除订单
- * */
- public function order_del(Request $request){
- $order=Order::where('ordersn',$request->order_num)->first();
- $order->status=4;
- $order->save();
- return $this->success([]);
- }
- /*
- * 确认收货
- * */
- public function order_complete(Request $request){
- $order=Order::where('ordersn',$request->order_num)->first();
- $order->status=3;
- $order->payed_at=Carbon::now()->toDateTimeString();
- $order->save();
- $order_all=Order::where('original_ordersn',$request->order_num)->where('turn_is','=',1)->get();
- if ($order_all){
- foreach ($order_all as $k=>$v){
- $orders=Order::find($v->id);
- $orders->status=3;
- $orders->save();
- }
- }
- $order_data=OrderGoods::where('order_id',$order->id)->get();
- foreach ($order_data as $k=>$v){
- $good_total=GoodSkuTotal::where('user_id',Auth::user()->id)->where('sku_id',$v->sku_id)->where('goods_id',$v->goods_id)->first();
- if ($good_total){
- $good_total->total=$good_total->total+$v->num;
- $good_total->save();
- }else{
- $good_totals=new GoodSkuTotal();
- $good_totals->goods_id=$v->goods_id;
- $good_totals->sku_id=$v->sku_id;
- $good_totals->total=$v->num;
- $good_totals->user_id=Auth::user()->id;
- $good_totals->save();
- }
- }
- return $this->success([]);
- }
- /*
- * 我的订单
- */
- public function my_order(Request $request){
- $user=Auth::user();
- if ($request->status==2){
- $order=Order::where('user_id',$user->id)
- ->where('turn_is',0)->whereIn('status',[3,4])->paginate(15);
- }elseif($request->status==1){
- $order=Order::where('user_id',$user->id)
- ->where('turn_is',0)->whereIn('status',[1,2])->paginate(15);
- }else{
- $order=Order::where('user_id',$user->id)
- ->where('turn_is',0)->where('status',0)->paginate(15);
- }
- $data=$this->deal_order($order);
- return $this->success_list($data[0], '', $data[1]);
- }
- /**
- * 处理订单列表
- */
- public function deal_order($order,$type=0){
- if ($type==0){
- $orders = $order->toArray();
- $total=$orders['total'];
- }else{
- $total=0;
- }
- $data = [];
- $datas = [];
- foreach ($order as $k => $v) {
- Log::error('{-----处理订单----}');
- $order_goods_1 = OrderGoods::where('order_id', $v->id)->get();
- foreach ($order_goods_1 as $key => $val) {
- $order_goods = OrderGoods::find($val->id);
- $data[$key]['name'] = $order_goods->goods->name;
- $data[$key]['price'] = $val->price;
- $data[$key]['num'] = $order_goods->num;
- $data[$key]['imgurl'] = $order_goods->goods->img_url;
- }
- $datas[$k]['forward']=$v->turn_is==0?false:true;
- $datas[$k]['status']=$v->status;
- $datas[$k]['goodList'] = $data;
- $datas[$k]['order_num'] = $v->ordersn;
- $datas[$k]['price'] = $v->price;
- $datas[$k]['time'] = Carbon::parse($v->created_at)->toDateTimeString();
- }
- return [$datas,$total];
- }
- /*
- * 已转单部分
- * */
- public function order_turn(){
- $order=Order::where('user_id',Auth::user()->id)->where('turn_is','=',1)->paginate(15);
- // Log::error('{-----转单部分---是是是--}'.json_encode($order));
- $total=$order->toArray();
- // $data=[];
- // $datas=[];
- // foreach ($order as $key=>$val){
- // $orders=Order::where('original_ordersn',$val->ordersn)->get();
- // $data=$this->deal_order($orders,1);
- // $datas[$key]=$data[0];
- // }
- $data=$this->deal_order($order,1);
- // Log::error('{-----转单部分-----}'.json_encode($datas));
- return $this->success_list($data[0],'',$total['total']);
- }
- public function single_record(Request $request){
- $incom=new IncomExpenses();
- $incom->totalprice=$request->total;
- $incom->type=1;
- $incom->user_id=Auth::user()->id;
- $incom->save();
- $num=$request->total;
- $goods_spec=GoodSku::where('goods_id',$request->id)->where('sku_path','like',"%$request->type_id")->get();
- foreach ($goods_spec as $k=>$v){
- $goods=GoodSkuTotal::where('goods_id',$request->id)->where('sku_id',$v->id)->first();
- if ($goods){
- if ($goods->total>$num){
- $d=GoodSkuTotal::find($goods->id);
- $d->total=$goods->total-$num;
- $d->save;
- return $this->success([]);
- }else{
- $d=GoodSkuTotal::find($goods->id);
- $d->total=0;
- $d->save();
- // $num=$num-$goods->total;
- }
- }else{
- $d=new GoodSkuTotal();
- $d->total=0;
- $d->goods_id=$request->id;
- $d->sku_id=$v->id;
- $d->user_id=Auth::user()->id;
- $d->save();
- }
- }
- return $this->success([]);
- }
- }
|