4
0
Fork 0
master
panliang 2022-10-08 15:42:37 +08:00
parent a197f7254d
commit 8bc63ce9c7
4 changed files with 78 additions and 23 deletions

View File

@ -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'],
]],
];
```
## 配置

View File

@ -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>)' : '');

View File

@ -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;
}
}

View File

@ -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']
]);
});
}
}