123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785 |
- <?php
- namespace App\Http\Controllers;
- use App\Models\Goods;
- use App\Models\GoodsSpec;
- use App\Models\GoodsSku;
- use App\Models\GoodsSkuPrice;
- use App\Models\GoodsAgentTotal;
- use App\Models\User;
- use App\Models\Address;
- use App\Models\Order;
- use App\Models\OrderBreakup;
- use App\Models\Message;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Log;
- use Illuminate\Support\Facades\Auth;
- use Illuminate\Support\Facades\DB;
- use \Exception;
- class OrderController extends Controller
- {
- //获取订单信息列表
- public function getOrderList(Request $request){
- $input=$request->all();
- $page_size=$input['page_size'];
- $page_index=$input['page_index'];
- $num = ($page_index - 1) * $page_size;
- $search_name=$input['search_name'];
- if(empty($input['time'])){
- $input['time'][0]=date("Y-m-d 00:00:00",strtotime("-1 years"));
- $input['time'][1]=date("Y-m-d H:i:s");
- }
- $starttime=date("Y-m-d H:i:s",strtotime($input['time'][0]));
- $endtime= date("Y-m-d H:i:s",strtotime($input['time'][1]));
- $time = [$starttime, $endtime];
- if($input['status']=='all'){
- $where=[];
- }else{
- $where['status']=$input['status'];
- }
- $count=Order::where('ordersn', 'like', '%' . $search_name . '%')
- ->whereBetween('created_at', $time)
- ->where($where)
- ->count();
- if($count==0){
- $this->error('400001','没有数据');
- }
- $list=Order::where('ordersn', 'like', '%' . $search_name . '%')
- ->where($where)
- ->with(['address:id,username,address,mobile','user:id,realname,nickname,level','agent:id,realname,nickname',
- 'ordergoods'
- => function ($query) {
- $query->select('order_id','goods_id',DB::raw('group_concat(distinct sku_id,"|",price,"|",num) as sku'))
- ->groupBy('order_id','goods_id');
- }
- ])
- ->whereBetween('created_at', $time)
- ->orderBy('id','desc')
- ->skip($num)->take($page_size)
- ->get()->toArray();
- foreach($list as $keys => $value){
- $list[$keys]['num']=0;
- $list[$keys]['crown']=[];
- foreach($value['ordergoods'] as $key=>$val){
- $goods=Goods::find($val['goods_id']);
- if($goods){
- $list[$keys]['ordergoods'][$key]['goodsname']=$goods->name;
- $list[$keys]['ordergoods'][$key]['imgurl']=$goods->img_url;
- }
- if($val['sku']){
- foreach(explode(',',$val['sku']) as $k =>$v) {
- $sku=explode('|',$v);
- $list[$keys]['ordergoods'][$key]['goodssku'][$k] = $this->getSku($sku[0]);
- $list[$keys]['ordergoods'][$key]['goodssku'][$k]['price'] = $sku[1];
- $list[$keys]['ordergoods'][$key]['goodssku'][$k]['num'] = $sku[2];
- $list[$keys]['num'] += $sku[2];
- }
- }
- }
- $list[$keys]['crown']=$this->getAgentCrownInfo($value['user']['id']);
- }
- return $this->success_list($list,'SUCCESS',$count);
- }
- //导出订单信息列表
- public function exportOrderList(Request $request){
- $input=$request->all();
- $page_size=$input['page_size'];
- $page_index=$input['page_index'];
- $num = ($page_index - 1) * $page_size;
- $search_name=$input['search_name'];
- if(empty($input['time'])){
- $input['time'][0]=date("Y-m-d 00:00:00",strtotime("-1 years"));
- $input['time'][1]=date("Y-m-d 00:00:00");
- }
- $starttime=date("Y-m-d H:i:s",strtotime($input['time'][0]));
- $endtime= date("Y-m-d H:i:s",strtotime($input['time'][1]));
- $time = [$starttime, $endtime];
- if($input['status']=='all'){
- $where=[];
- }else{
- $where['status']=$input['status'];
- }
- $list=Order::where('ordersn', 'like', '%' . $search_name . '%')
- ->where($where)
- ->with(['address:id,username,address,mobile','user:id,realname,nickname','agent:id,realname,nickname',
- 'ordergoods'
- => function ($query) {
- $query->select('order_id','goods_id',DB::raw('group_concat(distinct sku_id,"|",price,"|",num) as sku'))
- ->groupBy('order_id','goods_id');
- }
- ])
- ->whereBetween('created_at', $time)
- ->orderBy('id','desc')
- ->skip($num)->take($page_size)
- ->get()->toArray();
- if(empty($list)){
- return $this->error('410004','没有订单信息');
- }
- foreach($list as $keys => $value){
- $list[$keys]['num']=0;
- $list[$keys]['crown']=[];
- foreach($value['ordergoods'] as $key=>$val){
- $goods=Goods::find($val['goods_id']);
- if($goods){
- $list[$keys]['ordergoods'][$key]['goodsname']=$goods->name;
- $list[$keys]['ordergoods'][$key]['imgurl']=$goods->img_url;
- }
- if($val['sku']){
- foreach(explode(',',$val['sku']) as $k =>$v) {
- $sku=explode('|',$v);
- $list[$keys]['ordergoods'][$key]['goodssku'][$k] = $this->getSku($sku[0]);
- $list[$keys]['ordergoods'][$key]['goodssku'][$k]['price'] = $sku[1];
- $list[$keys]['ordergoods'][$key]['goodssku'][$k]['num'] = $sku[2];
- $list[$keys]['num'] += $sku[2];
- }
- }
- }
- $list[$keys]['crown']=$this->getAgentCrownInfo($value['user']['id']);
- }
- if($list){
- return $this->success($list);
- }else{
- return $this->error();
- }
- }
- public function getOrderPrice($goodsinfo,$mobile){
- $level=User::where('mobile',$mobile)->value('level');
- $totalPrice=0;
- foreach($goodsinfo as $key =>$val){
- foreach($val['skuList'] as $k=>$v){
- $price=GoodsSkuPrice::withTrashed()->where('sku_id',$v['id'])->where('user_level',$level)->value('price');
- $totalPrice+=$v['num']*$price;
- }
- }
- return $totalPrice;
- }
- /*后台添加订单*/
- public function uploadOrder(Request $request){
- $input=$request->all();
- $ooo=new Order();
- $validator = $ooo->validator($input);
- if($validator->fails()){
- return $this->error('400013',$validator->errors()->first());
- }
- $user=User::where('mobile',$input['member'])->first();
- if(empty($user)){
- return $this->error('400135','代理信息不存在');
- }
- $totalPrice=$this->getOrderPrice($input['goods'],$input['member']);
- DB::beginTransaction();
- try {
- $addressId = $ooo->createAddressInfo($input);
- $manOrder = $ooo->createManualOrder($user, $addressId,$input['remark']);
- if ($user->level == '3') { //皇冠进货
- $crown['agent_id'] = '1';
- $crown['user_id'] = $user->id;
- $crown['address_id'] = $addressId;
- $crown['desc'] = $input['remark'];
- $crown['price'] = $totalPrice;
- $OrderId = $ooo->createOrder($manOrder, $user, $crown);
- foreach ($input['goods'] as $key => $val) {
- foreach ($val['skuList'] as $k => $v) {
- $ooo->createOrderGoods($val, $v, $user, $OrderId, $manOrder);
- }
- }
- } elseif($user->level == '2') { //顶级进货
- $crown1['agent_id'] = $user->agent_id;
- $crown1['user_id'] = $user->id;
- $crown1['address_id'] = $addressId;
- $crown1['desc'] = $input['remark'];
- $crown1['price'] = $totalPrice;
- $OrderId1 = $ooo->createOrder($manOrder, $user, $crown1);
- $crown2['agent_id'] = '1';
- $crown2['user_id'] = $user->agent_id;
- $crown2['address_id'] = $addressId;
- $crown2['desc'] = $input['remark'];
- $crown2['price'] = $totalPrice;
- $OrderId2 = $ooo->createOrder($manOrder, $user, $crown2);
- foreach ($input['goods'] as $key => $val) {
- foreach ($val['skuList'] as $k => $v) {
- $ooo->createOrderGoods($val, $v, $user, $OrderId1, $manOrder);
- }
- }
- foreach ($input['goods'] as $key => $val) {
- foreach ($val['skuList'] as $k => $v) {
- $ooo->createOrderGoods($val, $v, $user, $OrderId2, $manOrder);
- }
- }
- }elseif($user->level == '1') { //特级进货
- $upAgent=User::find($user->agent_id);//代理上级信息
- if($upAgent->level==3){
- $crown1['agent_id'] = $user->agent_id;
- $crown1['user_id'] = $user->id;
- $crown1['address_id'] = $addressId;
- $crown1['desc'] = $input['remark'];
- $crown1['price'] = $totalPrice;
- $OrderId1 = $ooo->createOrder($manOrder, $user, $crown1);
- $crown2['agent_id'] = '1';
- $crown2['user_id'] = $user->agent_id;
- $crown2['address_id'] = $addressId;
- $crown2['desc'] = $input['remark'];
- $crown2['price'] = $totalPrice;
- $OrderId2 = $ooo->createOrder($manOrder, $user, $crown2);
- foreach ($input['goods'] as $key => $val) {
- foreach ($val['skuList'] as $k => $v) {
- $ooo->createOrderGoods($val, $v, $user, $OrderId1, $manOrder);
- }
- }
- foreach ($input['goods'] as $key => $val) {
- foreach ($val['skuList'] as $k => $v) {
- $ooo->createOrderGoods($val, $v, $user, $OrderId2, $manOrder);
- }
- }
- }else{
- $crown1['agent_id'] = $user->agent_id;
- $crown1['user_id'] = $user->id;
- $crown1['address_id'] = $addressId;
- $crown1['desc'] = $input['remark'];
- $crown1['price'] = $totalPrice;
- $OrderId1 = $ooo->createOrder($manOrder, $user, $crown1);
- $crown2['agent_id'] = $upAgent->agent_id;
- $crown2['user_id'] = $user->agent_id;
- $crown2['address_id'] = $addressId;
- $crown2['desc'] = $input['remark'];
- $crown2['price'] = $totalPrice;
- $OrderId2 = $ooo->createOrder($manOrder, $user, $crown2);
- $crown3['agent_id'] = '1';
- $crown3['user_id'] = $upAgent->agent_id;
- $crown3['address_id'] = $addressId;
- $crown3['desc'] = $input['remark'];
- $crown3['price'] = $totalPrice;
- $OrderId3 = $ooo->createOrder($manOrder, $user, $crown3);
- foreach ($input['goods'] as $key => $val) {
- foreach ($val['skuList'] as $k => $v) {
- $ooo->createOrderGoods($val, $v, $user, $OrderId1, $manOrder);
- }
- }
- foreach ($input['goods'] as $key => $val) {
- foreach ($val['skuList'] as $k => $v) {
- $ooo->createOrderGoods($val, $v, $user, $OrderId2, $manOrder);
- }
- }
- foreach ($input['goods'] as $key => $val) {
- foreach ($val['skuList'] as $k => $v) {
- $ooo->createOrderGoods($val, $v, $user, $OrderId3, $manOrder);
- }
- }
- }
- }
- $this->goodsTotalChange($input['goods'],$user->id);
- foreach($input['goods'] as $key=>$val){
- $gi=Goods::find($val['goodId']);
- if($user->level==1){
- $arr[$key]['price']=$gi->tjprice;
- }elseif($user->level==2){
- $arr[$key]['price']=$gi->djprice;
- }elseif($user->level==3){
- $arr[$key]['price']=$gi->hgprice;
- }
- $arr[$key]['name']=$gi->name;
- $arr[$key]['img']=$gi->img_url;
- $arr[$key]['num']=0;
- foreach($val['skuList'] as $k=>$v){
- $arr[$key]['num']+=$v['num'];
- }
- $message['title']='订单通知';
- $message['type']='2';
- $message['status']='0';
- $message['data']=json_encode($arr);
- $message['user_id']=$user->id;
- $message['agent_id']='1';
- $message['nickname']=$user->nickname;
- Message::create($message);
- }
- DB::commit();
- Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')添加订单成功,'.'收货人:'.$input['name'].',代理手机号:'.$input['mobile']);
- return $this->success([]);
- }catch(Exception $e){
- // echo $e->getMessage();
- DB::rollBack();
- return $this->error();
- }
- }
- //库存管理
- public function goodsTotalChange($goodsInfo,$uid){
- foreach($goodsInfo as $key =>$val){
- foreach($val['skuList'] as $k=>$v){
- $info=GoodsAgentTotal::where('user_id',$uid)->where('goods_id',$val['goodId'])->where('sku_id',$v['id'])->first();
- if($info){
- GoodsAgentTotal::where('goods_id',$val['goodId'])
- ->where('user_id', $uid)
- ->where('sku_id',$v['id'])
- ->increment('total', $v['num']);
- }else{
- $data['user_id']=$uid;
- $data['goods_id']=$val['goodId'];
- $data['sku_id']=$v['id'];
- $data['total']=$v['num'];
- GoodsAgentTotal::create($data);
- }
- }
- }
- }
- //获取商品规格数据
- public function getSku($id){
- $Sku=GoodsSku::withTrashed()->find($id);
- $path=$Sku->sku_path;
- $arr=explode('/',$path);
- $goodsSku=[];
- foreach($arr as $k=>$v){
- $upSpec=GoodsSpec::withTrashed()->where('id',$v)->first();
- $upSpec['uptitle']=GoodsSpec::withTrashed()->where('id',$upSpec->pid)->value('title');
- $goodsSku[$upSpec['uptitle']]=$upSpec->title;
- }
- return $goodsSku;
- }
- //获取皇冠信息
- public function getAgentCrownInfo($id){
- $user=User::withTrashed()->find($id);
- $crown=[];
- if($user['level']==3){
- $crown=User::withTrashed()->where('id',$user->id)->select('id','realname','nickname','mobile')->first();
- }elseif($user['level']==2){
- $crown=User::withTrashed()->where('id',$user->agent_id)->select('id','realname','nickname','mobile')->first();
- }elseif($user['level']==1){
- $agent=User::withTrashed()->where('id',$user->agent_id)->value('id');
- $crown=User::withTrashed()->where('id',$agent)->select('id','realname','nickname','mobile')->first();
- }
- return $crown;
- }
- /*获取代理订单*/
- public function getAgentOrder(Request $request){
- $input=$request->all();
- $page_size=$input['page_size'];
- $page_index=$input['page_index'];
- $num = ($page_index - 1) * $page_size;
- $search_name=$input['search_name'];
- if(empty($input['time'])){
- $input['time'][0]=date("Y-m-d 00:00:00",strtotime("-1 years"));
- $input['time'][1]=date("Y-m-d 00:00:00");
- }
- $starttime=date("Y-m-d H:i:s",strtotime($input['time'][0]));
- $endtime= date("Y-m-d H:i:s",strtotime($input['time'][1]));
- $time = [$starttime, $endtime];
- $where['status']=1;
- $where['agent_id']=1;
- $count=Order::where('ordersn', 'like', '%' . $search_name . '%')
- ->whereBetween('created_at', $time)
- ->where($where)
- ->count();
- if($count==0){
- $this->error('400001','没有数据');
- }
- $list=Order::where('ordersn', 'like', '%' . $search_name . '%')
- ->whereBetween('created_at', $time)
- ->where($where)
- ->with(['address:id,username,address,mobile','user:id,realname,nickname','agent:id,realname,nickname',
- 'ordergoods'
- => function ($query) {
- $query->select('order_id','goods_id',DB::raw('group_concat(distinct sku_id,"|",price,"|",num) as sku'))
- ->groupBy('order_id','goods_id');
- }
- ])
- ->orderBy('id','desc')
- ->skip($num)->take($page_size)
- ->get()->toArray();
- foreach($list as $keys => $value){
- $list[$keys]['num']=0;
- $list[$keys]['crown']=[];
- foreach($value['ordergoods'] as $key=>$val){
- $goods=Goods::find($val['goods_id']);
- if($goods){
- $list[$keys]['ordergoods'][$key]['goodsname']=$goods->name;
- $list[$keys]['ordergoods'][$key]['imgurl']=$goods->img_url;
- }
- foreach(explode(',',$val['sku']) as $k =>$v) {
- $sku=explode('|',$v);
- $list[$keys]['ordergoods'][$key]['goodssku'][$k] = $this->getSku($sku[0]);
- $list[$keys]['ordergoods'][$key]['goodssku'][$k]['price'] = $sku[1];
- $list[$keys]['ordergoods'][$key]['goodssku'][$k]['num'] = $sku[2];
- $list[$keys]['num'] += $sku[2];
- }
- }
- $list[$keys]['crown']=$this->getAgentCrownInfo($value['user']['id']);
- }
- return $this->success_list($list,'SUCCESS',$count);
- }
- /*导出代理订单*/
- public function exportAgentOrder(Request $request){
- $input=$request->all();
- $page_size=$input['page_size'];
- $page_index=$input['page_index'];
- $num = ($page_index - 1) * $page_size;
- $search_name=$input['search_name'];
- if(empty($input['time'])){
- $input['time'][0]=date("Y-m-d 00:00:00",strtotime("-1 years"));
- $input['time'][1]=date("Y-m-d 00:00:00");
- }
- $starttime=date("Y-m-d H:i:s",strtotime($input['time'][0]));
- $endtime= date("Y-m-d H:i:s",strtotime($input['time'][1]));
- $time = [$starttime, $endtime];
- $where['status']=1;
- $where['agent_id']=1;
- $list=Order::where('ordersn', 'like', '%' . $search_name . '%')
- ->whereBetween('created_at', $time)
- ->where($where)
- ->with(['address:id,username,address,mobile','user:id,realname,nickname','agent:id,realname,nickname',
- 'ordergoods'
- => function ($query) {
- $query->select('order_id','goods_id',DB::raw('group_concat(distinct sku_id,"|",price,"|",num) as sku'))
- ->groupBy('order_id','goods_id');
- }
- ])
- ->orderBy('id','desc')
- ->skip($num)->take($page_size)
- ->get()->toArray();
- if(empty($list)){
- return $this->error('410004','没有订单信息');
- }
- foreach($list as $keys => $value){
- $list[$keys]['num']=0;
- $list[$keys]['crown']=[];
- foreach($value['ordergoods'] as $key=>$val){
- $goods=Goods::find($val['goods_id']);
- if($goods){
- $list[$keys]['ordergoods'][$key]['goodsname']=$goods->name;
- $list[$keys]['ordergoods'][$key]['imgurl']=$goods->img_url;
- }
- foreach(explode(',',$val['sku']) as $k =>$v) {
- $sku=explode('|',$v);
- $list[$keys]['ordergoods'][$key]['goodssku'][$k] = $this->getSku($sku[0]);
- $list[$keys]['ordergoods'][$key]['goodssku'][$k]['price'] = $sku[1];
- $list[$keys]['ordergoods'][$key]['goodssku'][$k]['num'] = $sku[2];
- $list[$keys]['num'] += $sku[2];
- }
- }
- $list[$keys]['crown']=$this->getAgentCrownInfo($value['user']['id']);
- }
- return $this->success($list);
- }
- /*获取转单订单*/
- public function getIsturnOrder(Request $request){
- $input=$request->all();
- $page_size=$input['page_size'];
- $page_index=$input['page_index'];
- $num = ($page_index - 1) * $page_size;
- $search_name=$input['search_name'];
- if(empty($input['time'])){
- $input['time'][0]=date("Y-m-d 00:00:00",strtotime("-1 years"));
- $input['time'][1]=date("Y-m-d 00:00:00");
- }
- $starttime=date("Y-m-d H:i:s",strtotime($input['time'][0]));
- $endtime= date("Y-m-d H:i:s",strtotime($input['time'][1]));
- $time = [$starttime, $endtime];
- // if($input['status']=='all'){
- $where=[];
- // }else{
- // $where['status']=$input['status'];
- // }
- // $where['status']<3;
- // $where['is_turn']=1;
- $count=Order::where('ordersn', 'like', '%' . $search_name . '%')
- ->where($where)
- ->whereBetween('created_at', $time)
- ->whereIn('is_turn',[1,2])
- ->with(['address:id,username,address,mobile','user:id,realname,nickname','agent:id,realname,nickname',
- 'ordergoods'
- => function ($query) {
- $query->select('order_id','goods_id',DB::raw('group_concat(distinct sku_id,"|",price,"|",num) as sku'))
- ->groupBy('order_id','goods_id');
- }
- ])
- ->count();
- if($count==0){
- $this->error('400001','没有数据');
- }
- $list=Order::where('ordersn', 'like', '%' . $search_name . '%')
- ->where($where)
- ->whereBetween('created_at', $time)
- ->whereIn('is_turn',[1,2])
- ->with(['address:id,username,address,mobile','user:id,realname,nickname','agent:id,realname,nickname',
- 'ordergoods'
- => function ($query) {
- $query->select('order_id','goods_id',DB::raw('group_concat(distinct sku_id,"|",price,"|",num) as sku'))
- ->groupBy('order_id','goods_id');
- }
- ])
- ->orderBy('id','desc')
- ->skip($num)->take($page_size)
- ->get()->toArray();
- foreach($list as $keys => $value){
- $list[$keys]['num']=0;
- $list[$keys]['crown']=[];
- foreach($value['ordergoods'] as $key=>$val){
- $goods=Goods::find($val['goods_id']);
- if($goods){
- $list[$keys]['ordergoods'][$key]['goodsname']=$goods->name;
- $list[$keys]['ordergoods'][$key]['imgurl']=$goods->img_url;
- }
- foreach(explode(',',$val['sku']) as $k =>$v) {
- $sku=explode('|',$v);
- $list[$keys]['ordergoods'][$key]['goodssku'][$k] = $this->getSku($sku[0]);
- $list[$keys]['ordergoods'][$key]['goodssku'][$k]['price'] = $sku[1];
- $list[$keys]['ordergoods'][$key]['goodssku'][$k]['num'] = $sku[2];
- $list[$keys]['num'] += $sku[2];
- }
- }
- $list[$keys]['crown']=$this->getAgentCrownInfo($value['user']['id']);
- }
- return $this->success_list($list,'SUCCESS',$count);
- }
- /*导出转单订单*/
- public function exportIsturnOrder(Request $request){
- $input=$request->all();
- $page_size=$input['page_size'];
- $page_index=$input['page_index'];
- $num = ($page_index - 1) * $page_size;
- $search_name=$input['search_name'];
- if(empty($input['time'])){
- $input['time'][0]=date("Y-m-d 00:00:00",strtotime("-1 years"));
- $input['time'][1]=date("Y-m-d 00:00:00");
- }
- $starttime=date("Y-m-d H:i:s",strtotime($input['time'][0]));
- $endtime= date("Y-m-d H:i:s",strtotime($input['time'][1]));
- $time = [$starttime, $endtime];
- $where=[];
- $list=Order::where('ordersn', 'like', '%' . $search_name . '%')
- ->where($where)
- ->whereBetween('created_at', $time)
- ->whereIn('is_turn',[1,2])
- ->with(['address:id,username,address,mobile','user:id,realname,nickname','agent:id,realname,nickname',
- 'ordergoods'
- => function ($query) {
- $query->select('order_id','goods_id',DB::raw('group_concat(distinct sku_id,"|",price,"|",num) as sku'))
- ->groupBy('order_id','goods_id');
- }
- ])
- ->orderBy('id','desc')
- ->skip($num)->take($page_size)
- ->get()->toArray();
- if(empty($list)){
- return $this->error('410004','没有订单信息');
- }
- foreach($list as $keys => $value){
- $list[$keys]['num']=0;
- $list[$keys]['crown']=[];
- foreach($value['ordergoods'] as $key=>$val){
- $goods=Goods::find($val['goods_id']);
- if($goods){
- $list[$keys]['ordergoods'][$key]['goodsname']=$goods->name;
- $list[$keys]['ordergoods'][$key]['imgurl']=$goods->img_url;
- }
- foreach(explode(',',$val['sku']) as $k =>$v) {
- $sku=explode('|',$v);
- $list[$keys]['ordergoods'][$key]['goodssku'][$k] = $this->getSku($sku[0]);
- $list[$keys]['ordergoods'][$key]['goodssku'][$k]['price'] = $sku[1];
- $list[$keys]['ordergoods'][$key]['goodssku'][$k]['num'] = $sku[2];
- $list[$keys]['num'] += $sku[2];
- }
- }
- $list[$keys]['crown']=$this->getAgentCrownInfo($value['user']['id']);
- }
- return $this->success($list);
- }
- //确认 发货
- public function confirmSendGoods(Request $request){
- $input=$request->all();
- $order=Order::find($input['id']);//当前订单信息
- if($order->is_turn<>'0' && $order->turn_is=='1'){
- return $this->error('411003','订单状态有误');
- }
- DB::beginTransaction();
- try {
- if ($order->is_turn == 0 && $order->turn_is == 0) { //既没有转单,也没有被转单
- $order->status = '2';//当前订单 发货
- $order->save();
- } elseif ($order->is_turn == 0 && $order->turn_is == 1) { //转单后生成的订单
- $count = OrderBreakup::where('ordersn', $order->original_ordersn)->count();//原订单拆单数量 全部转单、部分转单
- if ($count == 1) {//全部转单
- OrderBreakup::where('ordersn', $order->original_ordersn)->update(['status' => 1]);//当前订单转单数据 发货
- Order::where('ordersn', $order->ordersn)->where('is_turn', '1')->where('status', '1')->update(['status' => 2]);//原始订单 发货
- Order::where('id', $input['id'])->update(['status' => 2]);//当前订单 发货
- } elseif ($count == 2) {//部分转单
- $orderbreakup_To = OrderBreakup::where('ordersn', $order->original_ordersn)->where('id', '<>', $order->breakup_id)->first();//另一个订单转单数据
- if ($orderbreakup_To->status == 1) {//另一个转单数据已发货
- OrderBreakup::where('ordersn', $order->original_ordersn)->where('id', '=', $order->breakup_id)->update(['status' => 1]);///当前订单转单数据 发货
- Order::where('ordersn', $order->original_ordersn)->where('is_turn', '2')->where('status', '1')->update(['status' => 2]);//原始订单 发货
- Order::where('id', $input['id'])->update(['status' => 2]);//当前订单发货
- } else {//另一个转单数据未发货
- OrderBreakup::where('ordersn', $order->original_ordersn)->where('id', '=', $order->breakup_id)->update(['status' => 1]);//当前订单的转单 发货
- Order::where('id', $input['id'])->update(['status' => 2]);//当前订单发货
- }
- // }else{
- // $order_cc=Order::where('original_ordersn',$order->ordersn)->first(); //当前订单为原始订单,的转单信息
- // $orderbreakup=OrderBreakup::where('ordersn',$order->ordersn)->where('id','=',$order_cc->breakup_id)->first();//转单生成订单
- // if($orderbreakup->status==1){
- // OrderBreakup::where('ordersn',$order->ordersn)->where('id','<>',$order->breakup_id)->update(['status'=>1]);
- // Order::where('ordersn',$order->ordersn)->where('is_turn','1')->where('status','1')->update(['status'=>2]);
- // Order::where('original_ordersn',$order->ordersn)->where('breakup_id',$order->breakup_id)->where('turn_is','1')->where('status','1')->update(['status'=>2]);
- // }else{
- // OrderBreakup::where('ordersn',$order->ordersn)->where('id','<>',$order->breakup_id)->update(['status'=>1]);
- // Order::where('ordersn',$order->ordersn)->where('is_turn','1')->where('status','1')->update(['status'=>2]);
- // }
- // }
- }
- }
- Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')确认发货成功,订单号:'.$order->ordersn);
- DB::commit();
- return $this->success([]);
- }catch(Exception $e){
- DB::rollBack();
- return $this->error();
- }
- }
- /*取消订单*/
- public function shelvedOrder(Request $request){
- $input=$request->all();
- $order=Order::find($input['id']);
- if($order->status<>'0' || $order->status<>'1'){ // 代付款 或 待发货
- return $this->error('411057','订单状态有误');
- }
- $order->status='4'; //已取消
- $row=$order->save();
- if($row){
- Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')取消订单成功,订单号'.$order->ordersn);
- return $this->success([]);
- }
- return $this->error();
- }
- /*删除订单*/
- // public function destoryOrder(Request $request){
- // $input=$request->all();
- // $order=Order::find($input['id']);
- // if($order->status<>'3' || $order->status<>'4'){ // 已取消 或 已完成
- // return $this->error('411057','订单状态有误');
- // }
- // $row=$order->delete();
- // if($row){
- // return $this->success([]);
- // }
- // return $this->error();
- // }
- /*修改订单地址*/
- public function updateOrderAddress(Request $request){
- $input=$request->all();
- $ooo=new Order();
- $validator = $ooo->validator($input);
- if($validator->fails()){
- return $this->error('400013',$validator->errors()->first());
- }
- $address=Address::find($input['id']);
- $address->username=$input['name'];
- $address->mobile=$input['mobile'];
- $address->address=$input['address'];
- $row=$address->save();
- if($row){
- Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')修改订单地址成功,地址id:'.$address->id);
- return $this->success([]);
- }
- return $this->error();
- }
- /*确认收款*/
- public function confirmReceipt(Request $request){
- $input=$request->all();
- $row=Order::where('ordersn',$input['order'])->update(['status'=>'1']);
- if($row){
- Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')确认订单收款,订单号:'.$input['order']);
- return $this->success([]);
- }
- return $this->error();
- }
- /* 获取转单信息 */
- public function getBreakupOrder(Request $request){
- $input=$request->all();
- $list=OrderBreakup::with(['user:id,nickname','sender:id,nickname','agent:id,nickname','ordergoods'
- => function ($query) {
- $query->select('breakup_id','goods_id',DB::raw('group_concat(distinct sku_id,"|",price,"|",num) as sku'))
- ->groupBy('breakup_id','goods_id');
- }])
- ->where('ordersn',$input['ordersn'])->get()->toArray();
- foreach($list as $keys => $value){
- foreach($value['ordergoods'] as $key=>$val){
- $goods=Goods::find($val['goods_id']);
- if($goods){
- $list[$keys]['ordergoods'][$key]['goodsname']=$goods->name;
- $list[$keys]['ordergoods'][$key]['imgurl']=$goods->img_url;
- }
- foreach(explode(',',$val['sku']) as $k =>$v) {
- $sku=explode('|',$v);
- $list[$keys]['ordergoods'][$key]['goodssku'][$k] = $this->getSku($sku[0]);
- $list[$keys]['ordergoods'][$key]['goodssku'][$k]['price'] = $sku[1];
- $list[$keys]['ordergoods'][$key]['goodssku'][$k]['num'] = $sku[2];
- }
- }
- }
- if($list){
- return $this->success($list);
- }
- return $this->error();
- }
- /*获取流水账单*/
- public function getBillsRunningWater(Request $request){
- $input=$request->all();
- $page_size=$input['page_size'];
- $page_index=$input['page_index'];
- $num = ($page_index - 1) * $page_size;
- $search_name=$input['search_name'];
- $count=Order::where('ordersn', 'like', '%' . $search_name . '%')
- ->where(function ($query) {
- $query->where('status',1)
- ->orWhere('status',2)
- ->orWhere('status',3);
- })
- ->count();
- if($count==0){
- $this->error('400001','没有数据');
- }
- $list=Order::where('ordersn', 'like', '%' . $search_name . '%')
- ->where(function ($query) {
- $query->where('status',1)
- ->orWhere('status',2)
- ->orWhere('status',3);
- })
- ->with(['address:id,username,address,mobile','user:id,realname','agent:id,realname',
- 'ordergoods'
- => function ($query) {
- $query->select('order_id','goods_id',DB::raw('group_concat(distinct sku_id,"|",price,"|",num) as sku'))
- ->groupBy('order_id','goods_id');
- }
- ])
- ->orderBy('id','desc')
- ->skip($num)->take($page_size)
- ->get()->toArray();
- foreach($list as $keys => $value){
- $list[$keys]['total']=0;
- $list[$keys]['totalprice']=0;
- foreach($value['ordergoods'] as $key=>$val){
- $goods=Goods::find($val['goods_id']);
- if($goods){
- $list[$keys]['ordergoods'][$key]['goodsname']=$goods->name;
- $list[$keys]['ordergoods'][$key]['imgurl']=$goods->img_url;
- }
- foreach(explode(',',$val['sku']) as $k =>$v) {
- $sku=explode('|',$v);
- $list[$keys]['ordergoods'][$key]['goodssku'][$k] = $this->getSku($sku[0]);
- $list[$keys]['ordergoods'][$key]['goodssku'][$k]['price'] = $sku[1];
- $list[$keys]['ordergoods'][$key]['goodssku'][$k]['num'] = $sku[2];
- $list[$keys]['total']+=$sku[2];
- $list[$keys]['totalprice']+=$sku[1]*$sku[2];
- }
- }
- }
- return $this->success_list($list,'SUCCESS',$count);
- }
- }
|