From c2210845e7c97c02709c3c52ebb8a3a3f9a930d7 Mon Sep 17 00:00:00 2001 From: vine_liutk <961510893@qq.com> Date: Thu, 20 Jan 2022 15:39:43 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=BB=8F=E9=94=80=E5=95=86?= =?UTF-8?q?=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Admin/Controllers/DealerController.php | 32 ++++++++-- app/Admin/Controllers/OrderController.php | 2 +- .../Renderable/DealerEarningSimpleTable.php | 60 +++++++++++++++++++ .../DealerUserProductLogSimpleTable.php | 32 ++++++++++ .../DealerUserProductSimpleTable.php | 32 ++++++++++ app/Models/DealerUserProduct.php | 2 + database/seeders/AdminMenuSeeder.php | 2 +- 7 files changed, 155 insertions(+), 7 deletions(-) create mode 100644 app/Admin/Renderable/DealerEarningSimpleTable.php create mode 100644 app/Admin/Renderable/DealerUserProductLogSimpleTable.php create mode 100644 app/Admin/Renderable/DealerUserProductSimpleTable.php diff --git a/app/Admin/Controllers/DealerController.php b/app/Admin/Controllers/DealerController.php index 6b2f8a13..d8acf54a 100644 --- a/app/Admin/Controllers/DealerController.php +++ b/app/Admin/Controllers/DealerController.php @@ -4,8 +4,12 @@ namespace App\Admin\Controllers; use App\Admin\Actions\Grid\DealerBonds; use App\Admin\Actions\Grid\DealerEditLvl; +use App\Admin\Renderable\DealerEarningSimpleTable; +use App\Admin\Renderable\DealerUserProductLogSimpleTable; use App\Admin\Repositories\Dealer; use App\Enums\DealerLvl; +use App\Models\Dealer as DealerModel; +use App\Models\DealerUserProduct; use Dcat\Admin\Admin; use Dcat\Admin\Form; use Dcat\Admin\Grid; @@ -159,13 +163,31 @@ class DealerController extends AdminController })); }); $row->column(7, function ($column) use ($id) { + $dealer = DealerModel::findOrFail($id); $tab = Tab::make(); - // 预收益明细 - $tab->add('剩余库存', ''); - // 可提明细 - $tab->add('资金记录', ''); + // 资金记录 + $tab->add('资金记录', new DealerEarningSimpleTable(['id'=>$dealer->user_id])); + // 剩余库存 + $builder = DealerUserProduct::query(); + $builder->with(['product'])->where('user_id', $dealer->user_id); + $productGrid = Grid::make($builder, function (Grid $grid) { + $grid->column('product.name', '商品名称'); + $grid->column('product.cover', '商品封面')->image(80, 80); + $grid->column('stock', '剩余库存'); + $grid->column('created_at', '创建时间'); + $grid->column('logs', '库存记录')->display('查看')->modal(function ($modal) { + $modal->title('商品'); + return DealerUserProductLogSimpleTable::make(['product_id'=>$this->product_id, 'id'=> $this->user_id]); + }); + // $grid->withBorder(); + $grid->model()->orderBy('created_at', 'desc'); + $grid->disableRefreshButton(); + $grid->disableActions(); + $grid->disablePagination(); + }); + $tab->add('剩余库存', $productGrid); // 上级列表 - $tab->add('上级列表', ''); + // $tab->add('上级列表', ''); $column->row(Box::make('用户记录', $tab)); }); }; diff --git a/app/Admin/Controllers/OrderController.php b/app/Admin/Controllers/OrderController.php index f769b94d..7b15f7a6 100644 --- a/app/Admin/Controllers/OrderController.php +++ b/app/Admin/Controllers/OrderController.php @@ -294,7 +294,7 @@ class OrderController extends AdminController $grid->disablePagination(); $grid->disableRefreshButton(); }); - $packageBuilder = OrderPackage::with('packageProducts')->where('order_id', $id); + $packageBuilder = OrderPackage::where('order_id', $id); $packageGrid = Grid::make($packageBuilder, function (Grid $grid) { $grid->column('shipping_company', '物流公司'); $grid->column('shipping_number', '物流单号'); diff --git a/app/Admin/Renderable/DealerEarningSimpleTable.php b/app/Admin/Renderable/DealerEarningSimpleTable.php new file mode 100644 index 00000000..6a43dd4b --- /dev/null +++ b/app/Admin/Renderable/DealerEarningSimpleTable.php @@ -0,0 +1,60 @@ +payload['id']??0; + $builder = DealerEarning::query(); + // dd($userId); + $builder->with(['user', 'payer'])->where(function ($q) use ($userId) { + return $q->where('user_id', $userId)->orWhere('payer_id', $userId); + }); + return Grid::make($builder, function (Grid $grid) { + $grid->column('user.phone', '收款人'); + $grid->column('payer_id', '付款人')->display(function () { + return $this->payer_id ? $this->payer?->phone : '公司'; + }); + $grid->column('type_name', '资金类型')->display(function () { + return $this->type_name; + })->label(); + $grid->column('remark', '备注')->display('详情') // 设置按钮名称 + ->expand(function () { + // 这里返回 content 字段内容,并用 Card 包裹起来 + $card = new Card(null, $this->remark); + + return "
$card
"; + }); + $grid->column('lvl')->display(function () { + return $this->lvl->text(); + }); + // $grid->column('total_amount', '总金额')->prepend('¥'); + // $grid->column('fee_rate', '手续费率')->append('%'); + // $grid->column('fee', '手续费')->prepend('¥'); + $grid->column('total_earnings', '实际金额')->prepend('¥'); + $grid->column('status_format', '状态')->display(function ($value) { + return $this->status_format; + })->using([ + -1=> '待结算', + 0 => '待打款', + 1 => '待收款', + 2 => '已完成', + ])->dot(); + $grid->column('created_at', '创建时间'); + $grid->column('id', '操作')->display('查看')->link(function ($value) { + return admin_route('dealer_earnings.show', ['dealer_earning' => $this->id]); + }); + // $grid->withBorder(); + $grid->model()->orderBy('created_at', 'desc'); + $grid->disableRefreshButton(); + $grid->disableActions(); + }); + } +} diff --git a/app/Admin/Renderable/DealerUserProductLogSimpleTable.php b/app/Admin/Renderable/DealerUserProductLogSimpleTable.php new file mode 100644 index 00000000..9b3ca026 --- /dev/null +++ b/app/Admin/Renderable/DealerUserProductLogSimpleTable.php @@ -0,0 +1,32 @@ +payload['id'] ?? 0; + $productId = $this->payload['product_id'] ?? 0; + + $builder = DealerUserProductLog::query(); + $builder->with(['product'])->where(['user_id'=>$userId, 'product_id'=>$productId]); + return Grid::make($builder, function (Grid $grid) { + $grid->column('product.name', '商品名称'); + $grid->column('remark', '备注'); + $grid->column('qty', '变动数量')->display(function () { + return ($this->type == DealerUserProductLog::TYPE_ORDER_IN ? '+' : '-').$this->qty.$this->product?->unit; + }); + $grid->column('created_at', '创建时间'); + + // $grid->withBorder(); + $grid->model()->orderBy('created_at', 'desc'); + $grid->disableRefreshButton(); + $grid->disableActions(); + }); + } +} diff --git a/app/Admin/Renderable/DealerUserProductSimpleTable.php b/app/Admin/Renderable/DealerUserProductSimpleTable.php new file mode 100644 index 00000000..b04f216d --- /dev/null +++ b/app/Admin/Renderable/DealerUserProductSimpleTable.php @@ -0,0 +1,32 @@ +payload['id']??0; + $builder = DealerUserProduct::query(); + $builder->with(['product'])->where('user_id', $userId); + return Grid::make($builder, function (Grid $grid) { + $grid->column('product.name', '商品名称'); + $grid->column('product.cover', '商品封面')->image(80, 80); + $grid->column('stock', '剩余库存'); + $grid->column('created_at', '创建时间'); + $grid->column('logs', '库存记录')->display('查看')->modal(function ($modal) { + $modal->title('库存记录'); + return DealerUserProductLogSimpleTable::make(['product_id'=>$this->product_id, 'user_id'=> $this->user_id]); + }); + // $grid->withBorder(); + $grid->model()->orderBy('created_at', 'desc'); + $grid->disableRefreshButton(); + $grid->disableActions(); + $grid->disablePagination(); + }); + } +} diff --git a/app/Models/DealerUserProduct.php b/app/Models/DealerUserProduct.php index 8dc1f283..65d494a3 100644 --- a/app/Models/DealerUserProduct.php +++ b/app/Models/DealerUserProduct.php @@ -2,12 +2,14 @@ namespace App\Models; +use Dcat\Admin\Traits\HasDateTimeFormatter; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class DealerUserProduct extends Model { use HasFactory; + use HasDateTimeFormatter; protected $fillable = [ 'user_id', diff --git a/database/seeders/AdminMenuSeeder.php b/database/seeders/AdminMenuSeeder.php index 89132665..338b21a6 100644 --- a/database/seeders/AdminMenuSeeder.php +++ b/database/seeders/AdminMenuSeeder.php @@ -307,7 +307,7 @@ class AdminMenuSeeder extends Seeder [ 'title' =>'系统订单', 'icon' => '', - 'uri' => 'dealer-manager-orders?type=manager', + 'uri' => 'dealer-manager-orders?type=manager&filter-status[]=2&filter-status[]=3', ], // [ // 'title' =>'用户资金',