214 lines
6.7 KiB
PHP
214 lines
6.7 KiB
PHP
<?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'));
|
|
}
|
|
|
|
}
|