order
parent
a197f7254d
commit
8bc63ce9c7
13
README.md
13
README.md
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
## 权限
|
||||
|
||||
````php
|
||||
```php
|
||||
$permissions = [
|
||||
'orders' => ['name' => '订单列表', 'curd' => ['index', 'show', 'destroy'], 'children' => [
|
||||
'pay' => '支付订单',
|
||||
|
|
@ -30,8 +30,17 @@ $permissions = [
|
|||
'price' => '订单改价',
|
||||
]],
|
||||
];
|
||||
```
|
||||
|
||||
````
|
||||
## 菜单
|
||||
|
||||
```php
|
||||
$menus = [
|
||||
['title' => '订单模块', 'icon' => 'feather icon-book', 'uri' => '', 'permission' => ['orders'], 'children' => [
|
||||
['title' => '订单管理', 'icon' => '', 'uri' => '/orders', 'permission' => 'orders.index'],
|
||||
]],
|
||||
];
|
||||
```
|
||||
|
||||
## 配置
|
||||
|
||||
|
|
|
|||
|
|
@ -64,7 +64,6 @@ class OrderController extends AdminController
|
|||
});
|
||||
|
||||
$grid->column('sn')->copyable();
|
||||
$grid->column('merchant.name');
|
||||
$grid->column('user.phone');
|
||||
$grid->column('total_money');
|
||||
$grid->column('order_status')->display(fn() => $this->status()->dot());
|
||||
|
|
@ -101,6 +100,12 @@ class OrderController extends AdminController
|
|||
$show->width(6)->field('score_discount_money');
|
||||
$show->width(6)->field('score_discount_amount');
|
||||
});
|
||||
if ($info->coupon_money > 0) {
|
||||
$show->row(function (Show\Row $show) {
|
||||
$show->width(6)->field('coupon_money')->as(fn ($v) => '<span class="text-danger">-'.floatval($v).'</span>')->unescape();
|
||||
$show->width(6)->field('coupon.name', '优惠券');
|
||||
});
|
||||
}
|
||||
$show->row(function (Show\Row $show) use ($info) {
|
||||
$show->width(6)->field('pay_money')->as(function ($value) {
|
||||
return '<span>'.$value.'</span>' . ($this->discount_price > 0 ? '(<span class="text-danger">-'.$this->discount_price.'</span>)' : '');
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@ use App\Http\Controllers\Controller;
|
|||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Validation\Rule;
|
||||
use Peidikeji\Coupon\CouponService;
|
||||
use Peidikeji\Coupon\Http\Resources\UserCouponResource;
|
||||
use Peidikeji\Order\Enums\PayStatus;
|
||||
use Peidikeji\Order\Enums\PayWay;
|
||||
use Peidikeji\Order\Enums\ShipStatus;
|
||||
|
|
@ -14,10 +16,13 @@ use Peidikeji\Order\Events\OrderCanceled;
|
|||
use Peidikeji\Order\Events\OrderCreated;
|
||||
use Peidikeji\Order\Events\OrderPaid;
|
||||
use Peidikeji\Order\Events\OrderReceived;
|
||||
use Peidikeji\Order\Exceptions\OrderException;
|
||||
use Peidikeji\Order\Http\Resources\OrderResource;
|
||||
use Peidikeji\Order\Http\Resources\OrderShipResouce;
|
||||
use Peidikeji\Order\OrderService;
|
||||
use Peidikeji\Order\OrderStore;
|
||||
use Peidikeji\Region\Models\Region;
|
||||
use Peidikeji\User\Models\UserAddress;
|
||||
|
||||
class OrderController extends Controller
|
||||
{
|
||||
|
|
@ -51,12 +56,19 @@ class OrderController extends Controller
|
|||
$service->goods($goods);
|
||||
|
||||
// 收货地址
|
||||
$address = $request->input('address');
|
||||
$address = $this->getAddress();
|
||||
$service->ship(ShipWay::Express->value, $address);
|
||||
|
||||
// 优惠券
|
||||
// $coupons = UserCoupon::where('user_id', $user->id)->effective()->get();
|
||||
|
||||
$service->ship(ShipWay::Express->value, $this->formatAddress($address));
|
||||
$couponList = $user->coupons()->effective()->get();
|
||||
$coupons = CouponService::make()->availableList($couponList, $service->orderGoodsList);
|
||||
if ($request->filled('coupon_id')) {
|
||||
$coupon = $couponList->firstWhere('id', $request->input('coupon_id'));
|
||||
if (!$coupon) {
|
||||
throw new OrderException('优惠券不存在或已过期');
|
||||
}
|
||||
$service->coupon($coupon);
|
||||
}
|
||||
|
||||
$score = $request->input('score');
|
||||
$userScore = $user->balance;
|
||||
|
|
@ -81,11 +93,11 @@ class OrderController extends Controller
|
|||
'price' => [
|
||||
'goods' => floatval($goodsList->sum('money')),
|
||||
'ship' => $service->ship['money'],
|
||||
'coupon' => 0,
|
||||
'coupon' => $service->coupon['money'],
|
||||
'score' => $service->score['money'],
|
||||
'total' => $payMoney,
|
||||
],
|
||||
'coupons' => []
|
||||
'coupons' => UserCouponResource::collection($coupons),
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
@ -106,18 +118,8 @@ class OrderController extends Controller
|
|||
}
|
||||
$store->goods($goods);
|
||||
|
||||
$address = null;
|
||||
if ($request->filled('address_id')) {
|
||||
$address = $user->addresses()->find($request->input('address_id'));
|
||||
if (!$address) {
|
||||
return $this->error('收货地址不存在');
|
||||
}
|
||||
}
|
||||
if (!$address) {
|
||||
$address = $request->input('address');
|
||||
}
|
||||
|
||||
$store->ship($request->input('ship_way', ShipWay::None->value), $this->formatAddress($address));
|
||||
$address = $this->getAddress();
|
||||
$store->ship($request->input('ship_way', ShipWay::None->value), $address);
|
||||
|
||||
$store->score($request->input('score', 0));
|
||||
|
||||
|
|
@ -260,8 +262,35 @@ class OrderController extends Controller
|
|||
return $goods;
|
||||
}
|
||||
|
||||
protected function formatAddress($userAddress)
|
||||
protected function getAddress()
|
||||
{
|
||||
return $userAddress;
|
||||
$address = [];
|
||||
$request = request();
|
||||
if ($request->filled('address_id')) {
|
||||
$user = auth('api')->user();
|
||||
$userAddress = $user->addresses()->find($request->input('address_id'));
|
||||
if (!$address) {
|
||||
throw new OrderException('收货地址不存在');
|
||||
}
|
||||
$address = [
|
||||
'name' => $userAddress->contact_name,
|
||||
'phone' => $userAddress->phone,
|
||||
'region' => [$userAddress->province?->name, $userAddress->city?->name, $userAddress->area?->name],
|
||||
'zone' => [$userAddress->province_id, $userAddress->city_id, $userAddress->area_id],
|
||||
'address' => $userAddress->address,
|
||||
'address_id' => $userAddress->id,
|
||||
];
|
||||
} else {
|
||||
$address = $request->input('address');
|
||||
$region = data_get($address, 'region');
|
||||
if (! $region || count($region) === 0) {
|
||||
throw new OrderException('收货地址格式不正确');
|
||||
}
|
||||
$area = Region::where('name', $region[2])->where('level', 3)->firstOrFail();
|
||||
$city = Region::findOrFail($area->parent_id);
|
||||
$address['zone'] = [$city->parent_id, $area->parent_id, $area->id];
|
||||
}
|
||||
|
||||
return $address;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,6 +11,8 @@ use Peidikeji\Order\Events\OrderCreated;
|
|||
use Peidikeji\Order\Listeners\OrderUseScore;
|
||||
use Peidikeji\Order\Listeners\UpdateGoodsSoldCount;
|
||||
use Peidikeji\Order\Listeners\UpdateGoodsStock;
|
||||
use Dcat\Admin\Admin;
|
||||
use Dcat\Admin\Layout\Menu;
|
||||
|
||||
class OrderServiceProvider extends ServiceProvider
|
||||
{
|
||||
|
|
@ -43,5 +45,15 @@ class OrderServiceProvider extends ServiceProvider
|
|||
$this->loadMigrationsFrom(__DIR__.'/../database/');
|
||||
|
||||
$this->loadTranslationsFrom(__DIR__.'/../lang', 'dcat-admin-order');
|
||||
|
||||
Admin::menu(function (Menu $menu) {
|
||||
// ['title' => '订单模块', 'icon' => 'feather icon-book', 'uri' => '', 'permission' => ['orders'], 'children' => [
|
||||
// ['title' => '订单管理', 'icon' => '', 'uri' => '/orders', 'permission' => 'orders.index'],
|
||||
// ]],
|
||||
$menu->add([
|
||||
['id' => 1, 'parent_id' => 0, 'title' => '订单模块', 'icon' => 'feather icon-book', 'uri' => '', 'permission' => ['orders']],
|
||||
['id' => 2, 'parent_id' => 1, 'title' => '订单管理', 'icon' => '', 'uri' => '/orders', 'permission' => 'orders.index']
|
||||
]);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue