提交代码
This commit is contained in:
213
app/Http/Controllers/PickController.php
Normal file
213
app/Http/Controllers/PickController.php
Normal file
@@ -0,0 +1,213 @@
|
||||
<?php
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\Advert;
|
||||
use App\Models\Card;
|
||||
use App\Models\Goods;
|
||||
use App\Models\Mobile;
|
||||
use Auth;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use RuLong\Order\Models\OrderDetail;
|
||||
|
||||
/**
|
||||
* 提货商城
|
||||
*/
|
||||
class PickController extends Controller
|
||||
{
|
||||
|
||||
public $orderid;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
view()->share('nav', 2);
|
||||
view()->share('app_title', '提货商城');
|
||||
}
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$area = $this->getDefault('area');
|
||||
|
||||
$this->setSearchValue($request);
|
||||
$pick_search = session('pick_search');
|
||||
$number = $pick_search['number'];
|
||||
$operator = $pick_search['operator'];
|
||||
$begin = $pick_search['begin'];
|
||||
$type = $pick_search['type'];
|
||||
$adverts = Advert::where('channel', 'pick')->orderBy('sort', 'asc')->take(5)->get(); //banner
|
||||
|
||||
$lists = Mobile::where('status', 1)
|
||||
->when($number, function ($q) use ($number) {
|
||||
$q->where('number', 'like', "%{$number}");
|
||||
})
|
||||
->when($operator, function ($q) use ($operator) {
|
||||
$q->where('operator', $operator);
|
||||
})
|
||||
->when($area->sn, function ($q) use ($area) {
|
||||
$q->where('city_sn', $area->sn);
|
||||
})
|
||||
->when($begin, function ($q) use ($begin) {
|
||||
$q->where('begin', $begin);
|
||||
})
|
||||
->when($type, function ($q) use ($type) {
|
||||
$q->where('type', $type);
|
||||
})
|
||||
->inRandomOrder()
|
||||
->take(6)
|
||||
->get();
|
||||
|
||||
if ($request->isMethod('POST')) {
|
||||
if ($lists->isNotEmpty()) {
|
||||
$html = response(view('pick.mobile', compact('lists')))->getContent();
|
||||
return $this->success($html);
|
||||
} else {
|
||||
return $this->error('没有数据了');
|
||||
}
|
||||
} else {
|
||||
view()->share('user', Auth::user());
|
||||
return view('pick.index', compact('lists', 'adverts', 'area', 'number'));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function setSearchValue($request)
|
||||
{
|
||||
$pick_search = [
|
||||
'number' => '',
|
||||
'operator' => [],
|
||||
'begin' => [],
|
||||
'type' => [],
|
||||
];
|
||||
foreach ($request->all() as $key => $value) {
|
||||
$pick_search[$key] = $value;
|
||||
}
|
||||
|
||||
session(['pick_search' => $pick_search]);
|
||||
}
|
||||
|
||||
//更多
|
||||
public function lists(Request $request)
|
||||
{
|
||||
$adverts = Advert::where('channel', 'pick')->orderBy('sort', 'asc')->take(5)->get(); //banner
|
||||
$area = $this->getDefault('area');
|
||||
$this->setSearchValue($request);
|
||||
$pick_search = session('pick_search');
|
||||
|
||||
$number = $pick_search['number'];
|
||||
$operator = $pick_search['operator'];
|
||||
$begin = $pick_search['begin'];
|
||||
$type = $pick_search['type'];
|
||||
|
||||
$lists = Mobile::where('status', 1)
|
||||
->when($number, function ($q) use ($number) {
|
||||
$q->where('number', 'like', "%{$number}");
|
||||
})
|
||||
->when($area->sn, function ($q) use ($area) {
|
||||
$q->where('city_sn', $area->sn);
|
||||
})
|
||||
->when($operator, function ($q) use ($operator) {
|
||||
$q->whereIn('operator', $operator);
|
||||
})
|
||||
->when($begin, function ($q) use ($begin) {
|
||||
$q->whereIn('begin', $begin);
|
||||
})
|
||||
->when($type, function ($q) use ($type) {
|
||||
$q->whereIn('type', $type);
|
||||
})
|
||||
->paginate();
|
||||
|
||||
if ($request->isMethod('AJAX')) {
|
||||
$html = response(view('pick.mobile', compact('lists')))->getContent();
|
||||
return $this->success($html);
|
||||
} else {
|
||||
return view('pick.lists', compact('lists', 'adverts', 'number', 'area'));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//领取手机号
|
||||
public function receiveMobile(Request $request)
|
||||
{
|
||||
$id = $request->mobile_id;
|
||||
$mobile = Mobile::find($id);
|
||||
$res = $this->checkCard($request);
|
||||
if ($res['status'] != 'ERROR') {
|
||||
$card = $res['card'];
|
||||
} else {
|
||||
$url = $res['redirect'] ?? '';
|
||||
return $this->error($res['message'], $url);
|
||||
}
|
||||
|
||||
try {
|
||||
DB::transaction(function () use ($mobile, $card) {
|
||||
$data = new OrderDetail(['goods' => $mobile, 'number' => 1]);
|
||||
$this->orderid = \Orders::create(Auth::id(), 0, 'PICK', [0 => $data], 0, null, '', null, 0, 0, $card->id);
|
||||
});
|
||||
return $this->success('订单创建成功', route('pay.order', $this->orderid));
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('订单创建失败' . $e->getmessage());
|
||||
}
|
||||
}
|
||||
|
||||
//领取商品
|
||||
public function receiveGoods(Request $request)
|
||||
{
|
||||
$params_id = $request->params_id;
|
||||
$params = Mobile::find($params_id);
|
||||
$res = $this->checkCard($request);
|
||||
|
||||
if ($res['status'] != 'ERROR') {
|
||||
$card = $res['card'];
|
||||
} else {
|
||||
return $this->error($res['message'], $res['redirect']);
|
||||
}
|
||||
|
||||
$data['details'][0][1]['params_id'] = $params_id;
|
||||
$data['details'][0][1]['number'] = 1;
|
||||
|
||||
$data['item']['id'] = 0;
|
||||
$data['item']['type'] = 'PICK';
|
||||
$data['item']['card_id'] = $card->id;
|
||||
return $this->success('领取成功', route('orders.create', $data));
|
||||
}
|
||||
|
||||
//校验提货卡
|
||||
public function checkCard($request)
|
||||
{
|
||||
if (!Auth::user()) {
|
||||
return $this->error('请登录后进行此操作', route('login', ['callback' => url()->current()]));
|
||||
}
|
||||
|
||||
if (count(array_filter($request->pass)) != 4) {
|
||||
return $this->error('卡密必须输入完整');
|
||||
}
|
||||
|
||||
$pass = implode('-', $request->pass);
|
||||
|
||||
$card = Card::where('pass', $pass)->first();
|
||||
if (!$card) {
|
||||
return ['status' => 'ERROR', 'message' => '卡密不正确'];
|
||||
} elseif ($card->status == 5 || empty($card->user_id)) {
|
||||
return ['status' => 'ERROR', 'message' => '卡号状态不对'];
|
||||
}
|
||||
|
||||
return ['status' => 'SUCCESS', 'card' => $card];
|
||||
|
||||
}
|
||||
|
||||
//提货商品详情
|
||||
public function detail(Goods $good)
|
||||
{
|
||||
$params = $good->params()->where('stock', '>', 0)->orderBy('price', 'asc')->get();
|
||||
$first = $good->params()->orderBy('original', 'asc')->first();
|
||||
$user = Auth::user();
|
||||
return view('pick.detail', compact('good', 'params', 'user', 'first'));
|
||||
}
|
||||
|
||||
public function search()
|
||||
{
|
||||
$pick_search = session('pick_search');
|
||||
return view('pick.search', compact('pick_search'));
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user