Admin Store ExportProductSku
parent
d12c76d0aa
commit
644be10419
|
|
@ -0,0 +1,50 @@
|
|||
<?php
|
||||
|
||||
namespace App\Admin\Actions\Store;
|
||||
|
||||
use App\Models\ProductSku;
|
||||
use App\Models\Store\ProductSku as StoreProductSku;
|
||||
use App\Models\Store\Store;
|
||||
use Dcat\Admin\Show\AbstractTool;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class ExportGoodsSpu extends AbstractTool
|
||||
{
|
||||
protected $title = '导入全站商品';
|
||||
|
||||
protected $style = 'btn btn-sm btn-primary mr-1';
|
||||
|
||||
protected $amount = 10000;
|
||||
|
||||
public function handle()
|
||||
{
|
||||
$id = $this->getKey();
|
||||
$store = Store::findOrFail($id);
|
||||
|
||||
try {
|
||||
DB::beginTransaction();
|
||||
$skuIds = StoreProductSku::where('store_id', $store->id)->pluck('product_sku_id');
|
||||
$skus = ProductSku::online()->whereNotIn('id', $skuIds)->get();
|
||||
foreach($skus as $sku) {
|
||||
StoreProductSku::create([
|
||||
'store_id' => $store->id,
|
||||
'product_sku_id' => $sku->id,
|
||||
'status' => 1,
|
||||
'amount' => $this->amount,
|
||||
]);
|
||||
}
|
||||
|
||||
DB::commit();
|
||||
return $this->response()->success('导入 '.$skus->count().' 个商品')->refresh();
|
||||
} catch (\Exception $e) {
|
||||
DB::rollBack();
|
||||
report($e);
|
||||
return $this->response()->error($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function confirm()
|
||||
{
|
||||
return ['是否确定?', '导入全部上架的商品, 库存为 ' . $this->amount . ', 店铺已经存在的商品会被忽略'];
|
||||
}
|
||||
}
|
||||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace App\Admin\Controllers\Store;
|
||||
|
||||
use App\Admin\Actions\Store\ExportGoodsSpu;
|
||||
use App\Models\Store\{Store, ProductSku, Administrator as StoreAdministrator, StockLog};
|
||||
use Dcat\Admin\{Form, Grid, Show, Admin};
|
||||
use Dcat\Admin\Http\Controllers\AdminController;
|
||||
|
|
@ -11,6 +12,7 @@ use App\Models\Admin\Administrator;
|
|||
use Dcat\Admin\Widgets\{Box, Tab, Card};
|
||||
use Dcat\Admin\Layout\{Content, Row};
|
||||
use App\Admin\Metrics\Store\{TotalStore, TotalUser, TotalOrder, TotalMoney};
|
||||
use Dcat\Admin\Show\Tools;
|
||||
|
||||
class StoreController extends AdminController
|
||||
{
|
||||
|
|
@ -42,16 +44,16 @@ class StoreController extends AdminController
|
|||
}
|
||||
|
||||
protected function grid()
|
||||
{
|
||||
{
|
||||
$grid = Grid::make(new Store());
|
||||
|
||||
|
||||
$user = Admin::user();
|
||||
$canAdmin = $this->canAdmin();
|
||||
if (!$canAdmin) {
|
||||
$stores = $user->stores;
|
||||
$grid->model()->whereIn('id', $stores->pluck('id'));
|
||||
}
|
||||
|
||||
|
||||
$grid->model()->sort();
|
||||
|
||||
$grid->column('id');
|
||||
|
|
@ -65,18 +67,18 @@ class StoreController extends AdminController
|
|||
$grid->enableDialogCreate();
|
||||
|
||||
$grid->showViewButton($user->can('dcat.admin.store.list.show'));
|
||||
|
||||
|
||||
$grid->showQuickEditButton($user->can('dcat.admin.store.list.edit'));
|
||||
|
||||
|
||||
$grid->showDeleteButton($canAdmin);
|
||||
|
||||
|
||||
$grid->filter(function (Grid\Filter $filter) {
|
||||
$filter->panel();
|
||||
$filter->like('title')->width(3);
|
||||
});
|
||||
|
||||
return $grid;
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -88,19 +90,23 @@ class StoreController extends AdminController
|
|||
*/
|
||||
protected function detail($id)
|
||||
{
|
||||
if (!$this->canAdmin()) {
|
||||
if ($this->canAdmin()) {
|
||||
$info = Store::findOrFail($id);
|
||||
} else {
|
||||
$user = Admin::user();
|
||||
$user->stores()->findOrFail($id);
|
||||
$info = $user->stores()->findOrFail($id);
|
||||
}
|
||||
$show = Show::make($id, new Store(), function (Show $show) {
|
||||
|
||||
$show->field('id');
|
||||
$show->field('title');
|
||||
$show->field('image')->image();
|
||||
$show->field('sort');
|
||||
$show->field('status')->using([ 0 => '关闭', 1 => '开启' ]);
|
||||
$show->field('remarks');
|
||||
$show->field('created_at');
|
||||
$show = Show::make($id, $info);
|
||||
$show->field('id');
|
||||
$show->field('title');
|
||||
$show->field('image')->image();
|
||||
$show->field('sort');
|
||||
$show->field('status')->using([ 0 => '关闭', 1 => '开启' ]);
|
||||
$show->field('remarks');
|
||||
$show->field('created_at');
|
||||
|
||||
$show->tools(function (Tools $tools) {
|
||||
$tools->append(new ExportGoodsSpu());
|
||||
});
|
||||
return $show;
|
||||
}
|
||||
|
|
@ -136,7 +142,7 @@ class StoreController extends AdminController
|
|||
$form->text('remarks');
|
||||
$form->switch('status')->default(1);
|
||||
$form->number('sort')->min(1)->default(1);
|
||||
|
||||
|
||||
$form->disableDeleteButton();
|
||||
$form->footer(function ($footer) {
|
||||
$footer->disableEditingCheck();
|
||||
|
|
@ -153,14 +159,14 @@ class StoreController extends AdminController
|
|||
{
|
||||
$grid = Grid::make(StoreAdministrator::with(['administrator']));
|
||||
$grid->model()->where('store_id', $id);
|
||||
|
||||
|
||||
$grid->setResource('store/' . $id . '/admin');
|
||||
|
||||
$grid->column('administrator.id', 'ID');
|
||||
$grid->column('administrator.username', '登录名');
|
||||
$grid->column('administrator.name', '姓名');
|
||||
$grid->paginate(10);
|
||||
|
||||
|
||||
$grid->showCreateButton();
|
||||
$grid->enableDialogCreate();
|
||||
|
||||
|
|
@ -176,14 +182,14 @@ class StoreController extends AdminController
|
|||
$grid->model()->where('store_id', $id)->orderBy('id', 'desc');
|
||||
|
||||
$grid->setResource('store/'.$id.'/product');
|
||||
|
||||
|
||||
$grid->column('productSku.id', 'ID');
|
||||
$grid->column('productSku.name', '名称');
|
||||
$grid->column('amount', '库存');
|
||||
$grid->column('productSku.specs', '规格')->label();
|
||||
$grid->column('status', '状态')->switch();
|
||||
$grid->paginate(10);
|
||||
|
||||
|
||||
$grid->showCreateButton();
|
||||
$grid->enableDialogCreate();
|
||||
|
||||
|
|
@ -195,7 +201,7 @@ class StoreController extends AdminController
|
|||
protected function gridStock($id)
|
||||
{
|
||||
$grid = new Grid(StockLog::with(['productSku', 'operator', 'source', 'tag']));
|
||||
|
||||
|
||||
$grid->model()->where('store_id', $id)->orderBy('created_at', 'desc');
|
||||
|
||||
$grid->setResource('store/'.$id.'/stock');
|
||||
|
|
@ -209,7 +215,7 @@ class StoreController extends AdminController
|
|||
} else if ($v instanceof \App\Models\User) {
|
||||
return $v->phone . '<span class="label bg-primary">用户</span>';
|
||||
}
|
||||
|
||||
|
||||
return '未知身份';
|
||||
});
|
||||
$grid->column('remarks', '备注');
|
||||
|
|
|
|||
|
|
@ -2,13 +2,12 @@
|
|||
|
||||
namespace App\Models\Store;
|
||||
|
||||
use Illuminate\Database\Eloquent\Relations\Pivot;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class ProductSku extends Model
|
||||
{
|
||||
protected $table = 'store_product_skus';
|
||||
|
||||
|
||||
protected $fillable = ['amount', 'product_sku_id', 'status', 'store_id'];
|
||||
|
||||
protected $attributes = [
|
||||
|
|
|
|||
Loading…
Reference in New Issue