6
0
Fork 0

Admin Store ExportProductSku

base
panliang 2022-07-13 17:51:03 +08:00
parent d12c76d0aa
commit 644be10419
3 changed files with 82 additions and 27 deletions

View File

@ -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 . ', 店铺已经存在的商品会被忽略'];
}
}

View File

@ -2,6 +2,7 @@
namespace App\Admin\Controllers\Store; namespace App\Admin\Controllers\Store;
use App\Admin\Actions\Store\ExportGoodsSpu;
use App\Models\Store\{Store, ProductSku, Administrator as StoreAdministrator, StockLog}; use App\Models\Store\{Store, ProductSku, Administrator as StoreAdministrator, StockLog};
use Dcat\Admin\{Form, Grid, Show, Admin}; use Dcat\Admin\{Form, Grid, Show, Admin};
use Dcat\Admin\Http\Controllers\AdminController; 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\Widgets\{Box, Tab, Card};
use Dcat\Admin\Layout\{Content, Row}; use Dcat\Admin\Layout\{Content, Row};
use App\Admin\Metrics\Store\{TotalStore, TotalUser, TotalOrder, TotalMoney}; use App\Admin\Metrics\Store\{TotalStore, TotalUser, TotalOrder, TotalMoney};
use Dcat\Admin\Show\Tools;
class StoreController extends AdminController class StoreController extends AdminController
{ {
@ -88,19 +90,23 @@ class StoreController extends AdminController
*/ */
protected function detail($id) protected function detail($id)
{ {
if (!$this->canAdmin()) { if ($this->canAdmin()) {
$info = Store::findOrFail($id);
} else {
$user = Admin::user(); $user = Admin::user();
$user->stores()->findOrFail($id); $info = $user->stores()->findOrFail($id);
} }
$show = Show::make($id, new Store(), function (Show $show) { $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->field('id'); $show->tools(function (Tools $tools) {
$show->field('title'); $tools->append(new ExportGoodsSpu());
$show->field('image')->image();
$show->field('sort');
$show->field('status')->using([ 0 => '关闭', 1 => '开启' ]);
$show->field('remarks');
$show->field('created_at');
}); });
return $show; return $show;
} }

View File

@ -2,7 +2,6 @@
namespace App\Models\Store; namespace App\Models\Store;
use Illuminate\Database\Eloquent\Relations\Pivot;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
class ProductSku extends Model class ProductSku extends Model