123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766 |
- <?php
- namespace App\Http\Controllers;
- use App\Events\CancelOrderEvent;
- use App\Events\TipSend;
- use App\Events\FinishAccount;
- use App\Handlers\ExpressHandler;
- use App\Models\AgentNo;
- use App\Models\GoodSku;
- use App\Models\Inventory;
- use App\Models\OrderCancel;
- use App\Models\OrderRefund;
- use App\Models\OrderDetail;
- use App\Models\OrderShare;
- use App\Models\OrderW;
- use App\Models\Scan;
- use App\Models\User;
- use App\Models\ShopCar;
- use App\Models\VipLog;
- use EasyWeChat\Factory;
- use Illuminate\Http\Request;
- use App\Models\Order;
- use App\Models\Goods;
- use App\Models\Store;
- use App\Models\Comment;
- use App\Models\Amount;
- use App\Models\DwbsUser;
- use Illuminate\Support\Facades\Auth;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Log;
- use Illuminate\Support\Facades\Validator;
- class OrderController extends Controller
- {
- //我的订单首页
- public function getOrderIndex()
- {
- $user=Auth::user();
- $order_num=Order::where('user_id',$user->id)->count();
- // if($order_num==0){
- // return $this->error('450100','未查询到订单信息,无法登陆');
- // }
- $total=Order::where('user_id',$user->id)
- ->whereIn('apply_cancel',[0,1,3])
- ->whereIn('is_refund',[0,1,2])
- ->select('status',DB::raw('count(status) as count'))
- ->groupBy('status')->get();
- // foreach($total as $key=>$val){
- // if($val->status==3){
- // $total[$key]->count=Order::where('user_id',$user->id)->where('status',3)->count();
- // }
- // }
- $order=Order::with(['cancel'=>function($query){$query->where('using',1);},'refund','store:id,name,img,phone'])
- ->whereIn('apply_cancel',[0,1,3])
- ->whereIn('is_refund',[0,1,2])
- ->where('user_id',$user->id)->orderByDesc('created_at')->first();
- if(!empty($order)){
- $goods_ids=OrderDetail::where('order_no',$order->order_no)->groupBy('goods_id')->pluck('goods_id');
- $goods=[];
- foreach($goods_ids as $key=>$val){
- $goods[$key]=Goods::where('id',$val)->first();
- $goods[$key]->sku=OrderDetail::where('order_no',$order->order_no)->where('goods_id',$val)->get();
- }
- $order->goods=$goods;
- }
- $data['user']=$user;
- $data['total']=$total;
- $data['order']=$order;
- $refund_total=OrderRefund::where('user_id',$user->id)->count();
- $cancel_total=Order::where('user_id',$user->id)
- ->whereIn('apply_cancel',[1,2,3])->count();
- $data['refund_total']=$refund_total+$cancel_total;
- $data['all_total']=Order::where('user_id',$user->id)
- ->whereIn('apply_cancel',[0,1,3])
- ->count();
- $data['order_num']=$order_num;
- return $this->success($data);
- }
- //获取订单状态数量
- public function getOrderStatusNum(){
- $where['user_id']=Auth::user()->id;
- $data=Order::where($where)->whereIn('apply_cancel',[0,1,3])->whereIn('is_refund',[0,1,2]);
- $data1=clone $data;
- $data2=clone $data;
- $data3=clone $data;
- $num['noPay']=$data->where('status',0)->count();
- $num['noSend']=$data1->where('status',1)->count();
- $num['noReceive']=$data2->where('status',2)->count();
- $num['Finish']=$data3->where('status',3)->count();
- return $this->success($num);
- }
- //获取用户订单列表
- public function getOrderList(Request $request)
- {
- $input=$request->all();
- $page_index=$input['page_index'];
- $page_size=$input['page_size'];
- $order_no=$input['order_no'];
- $num=$page_size*($page_index-1);
- $status=$input['status'];
- $where=$wheres=[];
- if($status!='all'){
- $where['status']=$status;
- }
- $where['user_id']=Auth::user()->id;
- if($order_no){
- $wheres=function($query)use($order_no){
- $query->where('order_no','like','%'.$order_no.'%');
- };
- }
- $orders=Order::with(['cancel'=>function($query){$query->where('using',1);},'refund','store:id,name,img,phone'])
- ->where($where)->where($wheres)->whereIn('apply_cancel',[0,1,3])->whereIn('is_refund',[0,1,2])
- ->orderByDesc('id')->skip($num)->take($page_size)->get();
- $count=Order::where($where)->where($wheres)->whereIn('apply_cancel',[0,1,3])->whereIn('is_refund',[0,1,2])->count();
- foreach($orders as $key=>$val){
- $goods_ids=OrderDetail::where('order_no',$val->order_no)->groupBy('goods_id')->pluck('goods_id');
- $goods=[];
- foreach($goods_ids as $k=>$v){
- $goods[$k]=Goods::where('id',$v)->first();
- $goods[$k]->sku=OrderDetail::where('order_no',$val->order_no)->where('goods_id',$v)->get();
- }
- $orders[$key]->goods=$goods;
- }
- return $this->success_list($orders,'成功',$count);
- }
- //获取退货订单详情
- public function getRefundOrderDetail(Request $request){
- $order_no=$request->input('order_no');
- $order_refund=OrderRefund::where('order_no',$order_no)->get();
- foreach($order_refund as $key => $val){
- $goods_ids = OrderDetail::where('order_no', $val->refund_no)->groupBy('goods_id')->pluck('goods_id');
- $goods = [];
- foreach ($goods_ids as $k => $v) {
- $goods[$k] = Goods::where('id', $v)->first();
- $goods[$k]->sku = OrderDetail::where('order_no', $val->refund_no)->where('goods_id', $v)->get();
- }
- $order_refund[$key]->goods=$goods;
- }
- return $this->success($order_refund);
- }
- //扫码后判断店铺信息
- // public function getUserStoreDiff(Request $request){
- // $user=User::where('id',Auth::user()->id)->first();
- // $order_no=$request->input('order_no');
- // $order=OrderShare::where('order_no',$order_no)->first();
- // $data['type']='noReplace';
- // if(empty($user->store_id)){
- // User::where('id',Auth::user()->id)->update(['store_id'=>$order->store_id]);
- // }else{
- // if($user->store_id!=$order->store_id){
- // $data['type']='replace';
- // $data['store_id']=$order->store_id;
- // $data['is_vip'] = $user->is_vip;
- // $data['before_store']=Store::where('id',$user->store_id)->value('name');
- // $data['after_store']=Store::where('id',$order->store_id)->value('name');
- // }
- // }
- // return $this->success($data);
- // }
- //替换店铺
- public function replaceStore(Request $request){
- $store_id=$request->input('store_id');
- $res=User::where('id',Auth::user()->id)->update(['store_id'=>$store_id,'is_vip'=>0]);
- if($res){
- return $this->success([]);
- }else{
- return $this->error();
- }
- }
- //扫码获取分享订单
- // public function getShareOrder(Request $request){
- // $user=User::where('id',Auth::user()->id)->first();
- // $order_no=$request->input('order_no');
- // Log::info($order_no);
- // $order=OrderShare::where('order_no',$order_no)->first();
- // $order->address=[];
- // if($order->user_id==$user->id){
- // if($order->address_id){
- // $order->address=Address::where('id',$order->address_id)->first();
- // }
- // }
- // $goods_ids=OrderDetail::where('order_no',$order_no)->groupBy('goods_id')->pluck('goods_id');
- // $goods=[];
- // foreach($goods_ids as $key=>$val){
- // $goods[$key]=Goods::where('id',$val)->first();
- // $goods[$key]->sku=OrderDetail::where('order_no',$order->order_no)->where('goods_id',$val)->get();
- // }
- // $order->goods=$goods;
- // $order->store=Store::where('id',$user->store_id)->select('id','name','img')->first();
- // $order->vip=$this->getOrderPrice($user->id,$order->total);
- // return $this->success($order);
- // }
- //判断订单价格
- protected function getOrderPrice($user_id,$store_id,$num){
- $vipLog=VipLog::where('user_id',$user_id)->where('store_id',$store_id)->first();
- if($vipLog){
- return 'vip_ed';//vip价格
- }else{
- if($num>=2){
- return 'vip_ing';//vip价格
- }else{
- return 'normal';//正常价
- }
- }
- }
- //记录下单时代理关系
- protected function saveAgentNoLog($user_id,$agent_id,$order_no){
- $one=$agent_id;
- $one_agent=DwbsUser::where('id',$one)->first();
- $data=[];
- $data[0]['order_no'] = $order_no;
- $data[0]['user_id'] = $user_id;
- // $data[0]['agent_id'] = $one;
- $data[0]['level'] = $one_agent->level;
- $data[0]['nickname'] = $one_agent->nickname;
- $data[0]['phone'] = $one_agent->mobile;
- $data[0]['created_at'] = date("Y-m-d H:i:s");
- $data[0]['updated_at'] = date("Y-m-d H:i:s");
- if($one_agent->level==2 || $one_agent->level==1){
- $two=DwbsUser::where('id',$one)->value('agent_id');
- $two_agent=DwbsUser::where('id',$two)->first();
- $data[1]['order_no'] = $order_no;
- $data[1]['user_id'] = $user_id;
- // $data[1]['agent_id'] = $two;
- $data[1]['level'] = $two_agent->level;
- $data[1]['nickname'] = $two_agent->nickname;
- $data[1]['phone'] = $two_agent->mobile;
- $data[1]['created_at'] = date("Y-m-d H:i:s");
- $data[1]['updated_at'] = date("Y-m-d H:i:s");
- if($two_agent->level==2){
- $three=DwbsUser::where('id',$two)->value('agent_id');
- $three_agent=DwbsUser::where('id',$three)->first();
- $data[2]['order_no'] = $order_no;
- $data[2]['user_id'] = $user_id;
- // $data[2]['agent_id'] = $three;
- $data[2]['level'] = $three_agent->level;
- $data[2]['nickname'] = $three_agent->nickname;
- $data[2]['phone'] = $three_agent->mobile;
- $data[2]['created_at'] = date("Y-m-d H:i:s");
- $data[2]['updated_at'] = date("Y-m-d H:i:s");
- }
- }
- return $data;
- }
- //提交订单
- public function submitOrderInfo(Request $request)
- {
- $user_id=Auth::user()->id;
- $user=User::where('id',$user_id)->first();
- $input=$request->all();
- $sku=$input['sku'];
- $is_car=$input['is_car'];
- $store_id=$input['store_id'];
- // $agent_id=Store::where('id',$store_id)->value('user_id');
- $store=Store::where('id',$store_id)->first();
- if(empty($store)){
- return $this->error('450001','代理店铺不存在或者已被删除');
- }
- if($store->status==1){
- return $this->error('450001','代理店铺已被禁用');
- }
- $agent_id=$store->user_id;
- $agent=DwbsUser::where('id',$agent_id)->first();
- if(empty($agent)){
- return $this->error('450001','代理不存在或已被删除');
- }
- if($agent->status==1){
- return $this->error('450001','代理已被禁用');
- }
- $remark=$input['remark'];
- $order_no=Order::order_no('dd');
- $account=$vip_account=$cost_account=$num=0;
- $list=$sku_ids=$snapshot=[];
- foreach($sku as $key=>$val){
- if($val[1] > 0){
- $num += $val[1];
- }
- }
- $vip=$this->getOrderPrice($user->id,$store_id,$num);
- $arr_test=Store::getTest();
- foreach($sku as $key=>$val){
- $sku_info=[];
- if($val[1] > 0){
- $goodSku=GoodSku::with(['goods'])->where('id',$val[0])->first();
- if(!array_key_exists($goodSku->goods_id,$snapshot)){
- $snapshot[$goodSku->goods_id]['name']=$goodSku->goods->name;
- $snapshot[$goodSku->goods_id]['main_attr']=$goodSku->goods->main_attr;
- $snapshot[$goodSku->goods_id]['img']=$goodSku->goods->img;
- $snapshot[$goodSku->goods_id]['price']=$goodSku->goods->price;
- $snapshot[$goodSku->goods_id]['sku']=[];
- }
- if(empty($goodSku)){
- return $this->error('450001','商品规格不存在,刷新页面重新下单');
- }
- if(in_array($store_id,$arr_test)){
- $storeInventory=Inventory::where(['store_id'=>$store_id,'goods_id'=>$goodSku->goods_id,'sku_id'=>$val[0]])->lockForUpdate()->first();
- $storeInve_num=!empty($storeInventory)?$storeInventory->num:0;
- if($val[1] > $storeInve_num){
- return $this->error('450001','【'.$goodSku->goods->main_attr.'-'.$goodSku->type.'-'.$goodSku->size.'】库存不足');
- }
- }
- if($vip=='vip_ed' || $vip=='vip_ing'){
- $list[$key]['price']=$goodSku->goods->vip_price;
- $sku_info['price']=$goodSku->goods->vip_price;
- $list[$key]['account']=$goodSku->goods->vip_price * $val[1];
- $account += $goodSku->goods->vip_price * $val[1];
- }else{
- $list[$key]['price']=$goodSku->goods->price;
- $sku_info['price']=$goodSku->goods->price;
- $list[$key]['account']=$goodSku->goods->price * $val[1];
- $account += $goodSku->goods->price * $val[1];
- }
- if($agent->level==1){
- $cost_account += $goodSku->goods->super_price * $val[1];
- $list[$key]['cost_price']=$goodSku->goods->super_price;
- $list[$key]['cost_account']=$goodSku->goods->super_price * $val[1];
- }
- if($agent->level==2){
- $cost_account += $goodSku->goods->top_price * $val[1];
- $list[$key]['cost_price']=$goodSku->goods->top_price;
- $list[$key]['cost_account']=$goodSku->goods->top_price * $val[1];
- }
- if($agent->level==3){
- $cost_account += $goodSku->goods->crown_price * $val[1];
- $list[$key]['cost_price']=$goodSku->goods->crown_price;
- $list[$key]['cost_account']=$goodSku->goods->crown_price * $val[1];
- }
- $list[$key]['origin_price']=$goodSku->goods->price;
- $list[$key]['order_no']=$order_no;
- $list[$key]['goods_id']=$goodSku->goods_id;
- $list[$key]['store_id']=$store_id;
- $list[$key]['user_id']=$user->id;
- $list[$key]['sku_id']=$goodSku->id;
- $list[$key]['num']=$val[1];
- $list[$key]['size']=$goodSku->size;
- $list[$key]['type']=$goodSku->type;
- $list[$key]['style']=1;
- $list[$key]['created_at']=date("Y-m-d H:i:s");
- $list[$key]['updated_at']=date("Y-m-d H:i:s");
- $sku_info['origin_price']=$goodSku->goods->price;
- $sku_info['sku_id']=$goodSku->id;
- $sku_info['num']=$val[1];
- $sku_info['size']=$goodSku->size;
- $sku_info['type']=$goodSku->type;
- array_push($snapshot[$goodSku->goods_id]['sku'],$sku_info);
- if ($is_car==1) {
- $sku_ids[] = $val[0];
- }
- }
- }
- $data=[
- 'order_no'=>$order_no,
- 'store_id'=>$store_id,
- 'user_id'=>$user->id,
- 'remark'=>$remark,
- 'status'=>0,
- 'is_help'=>0,
- 'is_pay'=>0,
- 'is_tip_send'=>0,
- 'is_comment'=>0,
- 'total'=>$num,
- 'account'=>$account,
- 'cost_account'=>$cost_account,
- 'snapshot'=>json_encode($snapshot)
- ];
- $agent_id=Store::where('id',$store_id)->value('user_id');
- $agent_data=$this->saveAgentNoLog($user->id,$agent_id,$order_no);
- DB::beginTransaction();
- try{
- $result=Order::create($data);
- foreach($list as $k=>$v){
- $list[$k]['order_id']=$result->id;
- }
- OrderDetail::insert($list);
- AgentNo::insert($agent_data);
- if ($is_car==1) {
- ShopCar::where('user_id', $data['user_id'])->whereIn('sku_id', $sku_ids)->delete();
- }
- DB::commit();
- return $this->success($order_no);
- }catch(\Exception $e){
- DB::rollBack();
- return $this->error('450001',$e->getMessage());
- }
- }
- //修改订单备注信息
- public function editOrderRemark(Request $request){
- $order_no=$request->input('order_no');
- $remark=$request->input('remark');
- $res=Order::where('order_no',$order_no)->update([
- 'remark'=>$remark
- ]);
- if($res){
- return $this->success([]);
- }else{
- return $this->error();
- }
- }
- //获取订单信息(id)
- public function getOrderInfo(Request $request)
- {
- $input=$request->all();
- $id=$input['id'];
- $order=Order::with(['address','cancel'=>function($query){$query->where('using',1);},'store:id,name,img,phone','refund'])
- ->where('id',$id)->first();
- $goods_ids=OrderDetail::where('order_no',$order->order_no)->groupBy('goods_id')->pluck('goods_id');
- $goods=[];
- foreach($goods_ids as $key=>$val){
- $goods[$key]=Goods::where('id',$val)->first();
- $goods[$key]->sku=OrderDetail::where('order_no',$order->order_no)->where('goods_id',$val)->get();
- }
- $order->goods=$goods;
- return $this->success($order);
- }
- //根据订单号查询订单
- public function getOrderNoInfo(Request $request)
- {
- $input=$request->all();
- $order_no=$input['order_no'];
- $data=Order::withTrashed()->with(['user:id,nickname,phone,avatar','address','cancel'=>function($query){$query->where('using',1);},'store:id,name,img,phone','refund']);
- $order=$data->where('order_no',$order_no)->first();
- $user_id=Auth::user()->id;
- if(empty($order)){
- return $this->error('450018','订单不存在');
- }
- if($user_id != $order->user_id){
- $user=User::where('id',$user_id)->first();
- $order_user=User::where('id',$order->user_id)->first();
- if(empty($user->phone) && empty($order_user->openId)){
- return $this->error('450005','是否与该订单所绑定手机账号:'.$order_user->phone.'进行合并');
- }
- return $this->error('450019','这是其他人的订单,你无法进入');
- }
- $goods_ids=OrderDetail::where('order_no',$order->order_no)->groupBy('goods_id')->pluck('goods_id');
- $goods=[];
- foreach($goods_ids as $key=>$val){
- $goods[$key]=Goods::where('id',$val)->first();
- $goods[$key]->sku=OrderDetail::where('order_no',$order->order_no)->where('goods_id',$val)->get();
- }
- $order->goods=$goods;
- return $this->success($order);
- }
- //扫码获取订单,并合并用户
- public function getScanOrder(Request $request){
- $order_no=$request->input('order_no');
- $data=Order::withTrashed()->with(['user:id,nickname,phone,avatar','address','cancel'=>function($query){$query->where('using',1);},'store:id,name,img,phone','refund']);
- $order=$data->where('order_no',$order_no)->first();
- $user_id=Auth::user()->id;
- // $user=User::where('id',$user_id)->first();
- if(empty($order)){
- return $this->error('450018','扫码订单不存在');
- }
- // $token=null;
- // if($user_id != $order->user_id){
- //
- // $order_user=User::where('id',$order->user_id)->first();
- // if(empty($user->phone) && empty($order_user->openId)){
- // DB::transaction(function()use($order_user,$user){
- // $order_user->openId=$user->openId;
- // $order_user->avatar=$user->avatar;
- // $order_user->nickname=$user->nickname;
- // $order_user->name=$user->name;
- // $order_user->save();
- // $user->delete();
- // },5);
- // $order->user->nickname=$user->nickname;
- // $token = Auth::guard('api')->fromUser($order_user);
- // }else{
- // return $this->error('450019','这是其他人的订单,你无法进入');
- // }
- // }
- $goods_ids=OrderDetail::where('order_no',$order->order_no)->groupBy('goods_id')->pluck('goods_id');
- $goods=[];
- foreach($goods_ids as $key=>$val){
- $goods[$key]=Goods::where('id',$val)->first();
- $goods[$key]->sku=OrderDetail::where('order_no',$order->order_no)->where('goods_id',$val)->get();
- }
- if($order_no){
- $scan=Scan::where('user_id',$user_id)->where('store_id',$order->store_id)->first();
- if(!$scan){
- Scan::create([
- 'user_id'=>$user_id,
- 'store_id'=>$order->store_id,
- 'goods_id'=>null,
- 'order_no'=>$order_no,
- 'is_store'=>3
- ]);
- }
- }
- $order->goods=$goods;
- $result['order']=$order;
- return $this->success($result);
- }
- //提醒发货
- public function tipSend(Request $request)
- {
- $input=$request->all();
- $order_id=$input['order_id'];
- $order=Order::with('store')->where('id',$order_id)->first();
- if($order->status != 1){
- return $this->error('450001','订单状态不符,请核对后再操作');
- }
- if($order->is_tip_send == 1 && time() < strtotime($order->tip_send_at."+1 day")){
- return $this->error('450001','近期已提醒,请稍后重试(24小时内不再提醒)');
- }
- $order->is_tip_send=1;
- $order->tip_send_at=date("Y-m-d H:i:s");
- $res=$order->save();
- if($res){
- $user=DwbsUser::where('id',$order->store->user_id)->first();
- if($user->openid){
- $data['openid']=$user->openid;
- $data['data']=[
- 'first' => '您有新的客户订单等待发货,请及时处理',
- 'keyword1' => $order->order_no,
- 'keyword2' => number_format($order->account, 2),
- 'keyword3' => Auth::user()->nickname,
- 'keyword4' => '已付款,待发货'
- ];
- event(new TipSend($data));
- }
- return $this->success([]);
- }else{
- return $this->error();
- }
- }
- //确认已自提
- public function sureOneSelfTake(Request $request){
- $order_no=$request->input('order_no');
- $order=Order::where('order_no',$order_no)->first();
- $order->status = 3;
- $order->order_status = 0;
- $res=$order->save();
- if($res){
- event(new FinishAccount($order->order_no));
- return $this->success([]);
- }else{
- return $this->error();
- }
- }
- //确认收货
- public function surePickUp(Request $request)
- {
- $input=$request->all();
- $order_id=$input['order_id'];
- $order=Order::with('address')->where('id',$order_id)->first();
- if(empty($order)){
- return $this->error('450001','该订单不存在');
- }
- if($order->status==3){
- return $this->error('450001','该订单已确认收货');
- }
- // if($order->status==2){
- // $CustomerName = null;
- // if($order->express_code=='SF'){
- // $CustomerName = substr($order->address->phone,-4);
- // }
- // $express=new ExpressHandler();
- // $express->getExpress($order->express_no, $order->express_code, $order->order_no, $CustomerName);
- // }
- $order->status=3;
- $order->order_status=0;//用户收货
- $res=$order->save();
- if($res){
- event(new FinishAccount($order->order_no));
- return $this->success([]);
- }else{
- return $this->error();
- }
- }
- //提交评价
- // public function addComment(Request $request){
- // $input=$request->all();
- // $rules=[
- // 'content'=>'required|max:255',
- // ];
- // $message=[
- // 'content.required'=>'评价内容不能为空.',
- // 'content.max'=>'评价内容不能大于255个字符.'
- // ];
- // $validator = Validator::make($input,$rules,$message);
- // if($validator->fails()){
- // return $this->error('400013',$validator->errors()->first());
- // }
- // try {
- // DB::transaction(function () use ($input) {
- // if (isset($input['order_id']) && !empty($input['order_id'])) {
- // $order_id = $input['order_id'];
- // Order::where('id', $order_id)->update(['is_comment' => 1]);
- // } else {
- // $order_id = null;
- // }
- // $user = Auth::user();
- // Comment::create([
- // 'star' => $input['star']??0,
- // 'content' => $input['content'],
- // 'comment_id' => 0,
- // 'user_id' => $user->id,
- // 'store_id' => $user->store_id,
- // 'order_id' => $order_id,
- // 'is_reply' => 1,
- // 'is_see' => 0
- // ]);
- // }, 5);
- // return $this->success([]);
- // }catch(\Exception $e){
- // return $this->error($e->getMessage());
- // }
- // }
- //我的评价
- public function getComment(Request $request){
- $input=$request->all();
- $page_index=$input['page_index'];
- $page_size=$input['page_size'];
- $num=$page_size*($page_index-1);
- $user=Auth::user();
- $count= Comment::where('user_id',$user->id)->where('comment_id',0)->count();
- $list= Comment::with(['comment','store:id,name,img','user:id,avatar,nickname,phone'])
- ->where('user_id',$user->id)->where('comment_id',0)
- ->orderByDesc('id')->skip($num)->take($page_size)->get();
- return $this->success_list($list,'成功',$count);
- }
- //查询订单物流信息
- public function getOrderExpress(Request $request){
- $order_no=$request->input('order_no');
- $order=Order::with('address')->where('order_no',$order_no)->first();
- if(empty($order)){
- return $this->error('450001','订单信息有误');
- }
- if($order->express_state==3){ //已签收
- $express=json_decode($order->express_info,true);
- }else{ //未签收
- $express=new ExpressHandler();
- $CustomerName = null;
- if($order->express_code=='SF'){
- $CustomerName = substr($order->express_phone,-4);
- }
- $express=$express->getExpress($order->express_no, $order->express_code, $order->order_no, $CustomerName);
- }
- $data['express']=$express;
- $data['express_state']=$order->express_state;
- $data['express_company']=$order->express_company;
- $data['express_no']=$order->express_no;
- $data['express_time']=$order->express_time;
- return $this->success($data);
- }
- //用户发起退款
- public function startRefundAmount(Request $request){
- $order_no=$request->input('order_no');
- $res=Order::where('order_no',$order_no)
- ->update(['status'=>4,'refund_status'=>'APPLY','refund_time'=>date("Y-m-d H:i:s")]);//申请退款
- if($res){
- return $this->success([]);
- }else{
- return $this->error();
- }
- }
- //获取支付成功提示页面信息
- public function getPayResult(Request $request){
- Log::info('0');
- $sub_mchid_id=$request->input('sub_mch_id');
- $out_trade_nos=$request->input('out_trade_no');
- $check_code=$request->input('check_code');
- $out_trade_no=explode('_',$out_trade_nos)[1];
- $order=Order::with('store:id,name,img')->where('order_no',$out_trade_no)
- ->select('id','order_no','wechat_pay_no','total','account','pay_money','is_help')->first();
- Log::info(json_encode($order));
- if(empty($order)){
- return $this->error('450001','获取商家小票信息失败1.0');
- }
- Log::info($check_code);
- $url='https://api.appadmin.woaidakele.cn/receipts.html?sub_mch_id='.$sub_mchid_id.'&out_trade_no='.$out_trade_nos.'&transaction_id='.$order->wechat_pay_no;
- Log::info($url);
- if($check_code==md5($url)){
- Log::info('1.2');
- return $this->success($order);
- }else{
- Log::info('1.0');
- return $this->error('450001','获取商家小票信息失败1.1');
- }
- }
- //取消订单
- public function cancelOrder(Request $request){
- $id=$request->input('id');
- if($request->has('reason')){
- $reason=$request->input('reason');
- }else{
- $reason=null;
- }
- $order=Order::where('id',$id)->first();
- if($order->apply_cancel==1){
- return $this->error('450001','该订单正在取消审核中,不能再次取消');
- }
- if($order->apply_cancel==2){
- return $this->error('450001','该订单已取消,不能再次取消');
- }
- DB::beginTransaction();
- if($order->status==0){
- $order->apply_cancel=2;
- $order->cancel_at=date("Y-m-d H:i:s");
- try {
- $order->save();
- OrderCancel::create([
- 'user_id' => $order->user_id,
- 'store_id' => $order->store_id,
- 'order_id' => $order->id,
- 'status' => 2,
- 'using' => 1,
- 'type' => 1, //客户自己取消
- 'reason' => $reason.'/用户取消'
- ]);
- DB::commit();
- return $this->success([]);
- }catch(\Exception $e){
- DB::rollBack();
- return $this->error($e->getMessage());
- }
- }elseif($order->status==1){
- try{
- $order->apply_cancel=1;
- $order->cancel_at=date("Y-m-d H:i:s");
- $order->save();
- OrderCancel::where('user_id',$order->user_id)
- ->where('store_id',$order->store_id)
- ->where('order_id',$order->id)->update(['using'=>0]);
- OrderCancel::create([
- 'user_id' =>$order->user_id,
- 'store_id'=>$order->store_id,
- 'order_id'=>$order->id,
- 'status' =>1,
- 'using' =>1,
- 'type' => 1, //客户自己取消
- 'reason' =>$reason.'/用户取消'
- ]);
- //取消订单通知
- $user=User::where('id',$order->user_id)->first();
- $store=Store::where('id',$order->store_id)->first();
- $agent=DwbsUser::withTrashed()->where('id',$store->user_id)->first();
- if($agent->openid){
- $data['openid']=$agent->openid;
- $data['data']=[
- 'first' => '您的客户【'.$user->nickname.'】提交了新的取消订单申请,请及时处理',
- 'keyword1' => $user->nickname,
- 'keyword2' => $order->order_no,
- 'keyword3' => '已支付',
- 'keyword4' => $order->cancel_at
- ];
- event(new CancelOrderEvent($data));
- }
- DB::commit();
- return $this->success([]);
- }catch(\Exception $e){
- DB::rollBack();
- return $this->error($e->getMessage());
- }
- }else{
- return $this->error('450001','该订单不能取消');
- }
- }
- }
|