1
0

提交代码

This commit is contained in:
2020-08-06 14:45:56 +08:00
commit 9d0d5f4be9
361 changed files with 36445 additions and 0 deletions

View File

@@ -0,0 +1,215 @@
<?php
namespace App\Http\Controllers;
use App\Models\Cart;
use App\Models\GoodsParams;
use Auth;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Session;
use RuLong\Area\Models\UserAddress;
use RuLong\Order\Models\Order;
use RuLong\Order\Models\OrderDetail;
class OrderController extends Controller
{
public $orderid;
public function __construct(Request $request)
{
view()->share('nav', 4);
$this->middleware('auth');
}
public function index()
{
$orders = Order::where('user_id', Auth::id())
->where('state', '<>', Order::ORDER_CLOSED)
->orderBy('id', 'desc')
->get();
return view('orders.index', compact('orders'));
}
public function unpay()
{
$orders = Order::Unpaid()
->where('user_id', Auth::id())
->orderBy('id', 'desc')
->get();
return view('orders.index', compact('orders'));
}
public function paid()
{
$orders = Order::UnDeliver()
->where('user_id', Auth::id())
->orderBy('id', 'desc')
->get();
return view('orders.index', compact('orders'));
}
public function delivered()
{
$orders = Order::Delivered()
->where('user_id', Auth::id())
->orderBy('id', 'desc')
->get();
return view('orders.index', compact('orders'));
}
public function signed()
{
$orders = Order::Signed()
->where('user_id', Auth::id())
->orderBy('id', 'desc')
->get();
return view('orders.index', compact('orders'));
}
public function show($orderid)
{
$order = Order::where('orderid', $orderid)->firstOrFail();
return view('orders.show', compact('order'));
}
//确认订单
public function create(Request $request)
{
$user = Auth::user();
$address_id = $request->get('address', '');
$address = $address_id ? UserAddress::find($address_id) : UserAddress::where('user_id', Auth::id())->orderBy('is_default', 'desc')->first() ?? '';
if (!($request->has('details'))) {
$items = Session::get('items_store');
} else {
$items = $request->details;
Session::put(['items_store' => $items]);
}
//为存储到order表中区分普通商品or套餐商品item_id>0套餐商品
if (!($request->has('item'))) {
$item = Session::get('item');
} else {
$item = $request->item;
Session::put(['item' => $item]);
}
if (empty($items)) {
return redirect()->route('user.index');
}
$sellers_score = 0;
$sellers_total = 0;
$sellers_freight = 0;
$sellers_count = 0;
//按照商户分单,一个商户一个订单,一个订单可多个商品
foreach ($items as $key => $seller_item) {
$detail[$key]['seller_id'] = $key;
$detail[$key]['amount'] = 0;
$detail[$key]['freight'] = 0;
$detail[$key]['heavy'] = 0;
$detail[$key]['score'] = 0;
foreach ($seller_item as $kk => $value) {
$params = GoodsParams::find($value['params_id']);
if ($params) {
if ($item['type'] == 'MEMBER') {
$price = $user->identity_id > 0 ? $params->price : $params->original;
} else {
$price = $params->price;
}
$detail[$key]['items'][] = [
'params_id' => $params->id,
'params_cover' => $params->storage,
'params_title' => $params->getTitle(),
'params_price' => $price,
'params_score' => $params->score,
'number' => $value['number'],
'cart_id' => isset($value['cart_id']) ? $value['cart_id'] : 0, //是否从购物车下单的商品
];
}
$detail[$key]['amount'] += $value['number'] * $price;
$detail[$key]['score'] += $value['number'] * $params->score;
}
$sellers_score += $detail[$key]['score'];
$sellers_total += $detail[$key]['amount'];
$detail[$key]['freight'] = 0; //包邮
$detail[$key]['item']['id'] = $item['id']; //0普通商品订单一单支持多商品
$detail[$key]['item']['type'] = $item['type']; //0普通商品订单一单支持多商品
$card_id = $item['card_id'] ?? 0;
$sellers_total += $detail[$key]['freight'];
$sellers_freight += $detail[$key]['freight'];
$sellers_count += 1;
}
return view('orders.create', compact('detail', 'address', 'sellers_total', 'sellers_score', 'sellers_freight', 'sellers_count', 'card_id'));
}
public function store(Request $request)
{
$user = Auth::user();
try {
DB::transaction(function () use ($request, $user) {
$address = UserAddress::find($request->address_id);
$card_id = $request->card_id ?? 0;
foreach ($request->details as $kk => $seller_detail) {
$items[$kk] = array();
$score[$kk] = 0;
$score_order[$kk] = 0;
foreach ($seller_detail['items'] as $key => $value) {
if ($value['cart_id'] != 0 && $cart = Cart::find($value['cart_id'])) {
$cart->delete();
}
$params = GoodsParams::find($value['params_id']);
if ($seller_detail['type'] == 'MEMBER' && $user->identity_id < 1) {
$params->price = $params->original;
}
array_push($items[$kk], new OrderDetail(['goods' => $params, 'number' => $value['number']]));
}
$express_type[$kk] = isset($seller_detail['express_type']) ? $seller_detail['express_type'] : 1;
$seller_detail['freight'] = 0;
$this->orderid = \Orders::create(Auth::id(), $seller_detail['seller_id'], $seller_detail['type'], $items[$kk], $express_type[$kk], $address, $request->remark, null, $score_order[$kk], $seller_detail['freight'], $card_id);
}
});
Session::forget('items_store');
Session::forget('item');
return $this->success('订单创建成功', route('pay.order', $this->orderid));
} catch (\Exception $e) {
return $this->error('订单创建失败' . $e->getmessage());
}
}
public function sign($orderid)
{
$order = Order::where('orderid', $orderid)->firstOrFail();
try {
$order->signin();
return $this->success('签收成功', route('orders.signed'));
} catch (\Exception $e) {
return $this->error('签收失败' . $e->getmessage());
}
}
public function delete($orderid)
{
$order = Order::where('orderid', $orderid)->firstOrFail();
try {
$order->close();
return $this->success('取消订单成功');
} catch (\Exception $e) {
return $this->error('取消订单失败' . $e->getmessage());
}
}
}