From edd3efe5e08fc0b928e8560dc0d23cf83d9da177 Mon Sep 17 00:00:00 2001 From: panliang <1163816051@qq.com> Date: Wed, 10 Aug 2022 10:43:58 +0800 Subject: [PATCH] goods --- packages/goods/README.md | 8 +++++++- packages/goods/resources/lang/zh_CN/goods-sku.php | 1 + packages/goods/resources/lang/zh_CN/goods.php | 1 + packages/goods/src/GoodsService.php | 3 +++ packages/goods/src/GoodsServiceProvider.php | 14 +++++++------- .../Controllers/Admin/GoodsBrandController.php | 6 ------ .../src/Http/Controllers/Admin/GoodsController.php | 2 ++ .../Http/Controllers/Admin/GoodsSkuController.php | 13 +++---------- packages/goods/src/Models/Goods.php | 2 +- packages/goods/src/Models/GoodsSku.php | 2 +- packages/goods/updates/CreateGoodsTable.php | 2 ++ packages/goods/updates/GoodsTableSeeder.php | 2 ++ 12 files changed, 30 insertions(+), 26 deletions(-) diff --git a/packages/goods/README.md b/packages/goods/README.md index 838df4c..5603d4a 100644 --- a/packages/goods/README.md +++ b/packages/goods/README.md @@ -1,3 +1,9 @@ -# Dcat Admin Extension +# Dcat Admin Extension Goods +Dcat-admin 基础商品管理 +## 安装 + +- 先安装 [dcat-admin](git@gitee.com:paddy_technology/dcat-admin.git) +- `composer config repositories.peidikeji/dcat-admin-extension-goods git git@gitee.com:paddy_technology/dcat-admin-extension-goods.git` +- `composer require peidikeji/dcat-admin-extension-goods` diff --git a/packages/goods/resources/lang/zh_CN/goods-sku.php b/packages/goods/resources/lang/zh_CN/goods-sku.php index 2373eb6..3a49554 100644 --- a/packages/goods/resources/lang/zh_CN/goods-sku.php +++ b/packages/goods/resources/lang/zh_CN/goods-sku.php @@ -14,5 +14,6 @@ return [ 'stock' => '库存', 'spec' => '规格', 'origin_price' => '原价', + 'discount_price' => '折扣价', ] ]; diff --git a/packages/goods/resources/lang/zh_CN/goods.php b/packages/goods/resources/lang/zh_CN/goods.php index 47a8f70..e230a6d 100644 --- a/packages/goods/resources/lang/zh_CN/goods.php +++ b/packages/goods/resources/lang/zh_CN/goods.php @@ -27,6 +27,7 @@ return [ 'goods_sn' => '编号', 'cover_image' => '封面图', 'price' => '售价', + 'discount_price' => '折扣价', 'spec' => '规格', 'attr' => '属性', 'part' => '配件', diff --git a/packages/goods/src/GoodsService.php b/packages/goods/src/GoodsService.php index e2ca33e..c54b0e3 100644 --- a/packages/goods/src/GoodsService.php +++ b/packages/goods/src/GoodsService.php @@ -32,6 +32,7 @@ class GoodsService { $spec = data_get($options, 'spec', $goods->spec); $price = data_get($options, 'price', $goods->price); + $discountPrice = data_get($options, 'discount_price', $goods->discount_price); $name = data_get($options, 'name', $goods->name); $stock = data_get($options, 'stock', $goods->stock); $nameAdd = !!data_get($options, 'name_add', false); @@ -53,11 +54,13 @@ class GoodsService $cartesianList = $this->cartesianProduct($specList); foreach($cartesianList as $items) { $specPrice = $priceAdd ? $price + array_sum(array_column($items, 'price')) : $price; + $specDiscountPrice = $priceAdd ? $discountPrice + array_sum(array_column($items, 'price')) : $discountPrice; $specName = $nameAdd ? $name . ' ' . implode(' ', array_column($items, 'value')) : $name; $exists = $goods->skus()->jsonArray($items)->exists(); $attributes = [ 'name' => $specName, 'price' => $specPrice, + 'discount_price' => $specDiscountPrice, 'stock' => $stock, 'spec' => $items, ]; diff --git a/packages/goods/src/GoodsServiceProvider.php b/packages/goods/src/GoodsServiceProvider.php index 42525c7..eb401b0 100644 --- a/packages/goods/src/GoodsServiceProvider.php +++ b/packages/goods/src/GoodsServiceProvider.php @@ -13,13 +13,13 @@ class GoodsServiceProvider extends ServiceProvider protected $css = [ 'goods.css' ]; - protected $menu = [ - ['title' => '商品管理', 'uri' => '', 'icon' => ''], - ['title' => '商品分类', 'uri' => 'goods/category', 'icon' => '', 'parent' => '商品管理'], - ['title' => '品牌管理', 'uri' => 'goods/brand', 'icon' => '', 'parent' => '商品管理'], - ['title' => '商品类别', 'uri' => 'goods/type', 'icon' => '', 'parent' => '商品管理'], - ['title' => '商品信息', 'uri' => 'goods', 'icon' => '', 'parent' => '商品管理'], - ]; + // protected $menu = [ + // ['title' => '商品管理', 'uri' => '', 'icon' => ''], + // ['title' => '商品分类', 'uri' => 'goods/category', 'icon' => '', 'parent' => '商品管理'], + // ['title' => '品牌管理', 'uri' => 'goods/brand', 'icon' => '', 'parent' => '商品管理'], + // ['title' => '商品类别', 'uri' => 'goods/type', 'icon' => '', 'parent' => '商品管理'], + // ['title' => '商品信息', 'uri' => 'goods', 'icon' => '', 'parent' => '商品管理'], + // ]; public function init() { diff --git a/packages/goods/src/Http/Controllers/Admin/GoodsBrandController.php b/packages/goods/src/Http/Controllers/Admin/GoodsBrandController.php index 79618c6..04c7674 100644 --- a/packages/goods/src/Http/Controllers/Admin/GoodsBrandController.php +++ b/packages/goods/src/Http/Controllers/Admin/GoodsBrandController.php @@ -32,12 +32,6 @@ class GoodsBrandController extends AdminController ->autoUpload() ->saveFullUrl() ->move('goods/brand'); - // $form->oss('file')->config([ - // 'accessId' => 'LTAI5tFMaynxgZ9aDMNLxpU9', - // 'accessKey' => 'pecJA3LX2sQyWxWDMUUb5NhsMe4Czu', - // 'host' => 'https://zcs-test.oss-cn-chengdu.aliyuncs.com', - // 'dir' => 'mv', - // ]); $form->disableResetButton(); $form->disableCreatingCheck(); diff --git a/packages/goods/src/Http/Controllers/Admin/GoodsController.php b/packages/goods/src/Http/Controllers/Admin/GoodsController.php index 155a1d5..f670b13 100644 --- a/packages/goods/src/Http/Controllers/Admin/GoodsController.php +++ b/packages/goods/src/Http/Controllers/Admin/GoodsController.php @@ -125,6 +125,7 @@ class GoodsController extends AdminController $show->field('type.name'); $show->field('name'); $show->field('price'); + $show->field('discount_price'); $show->field('cover_image')->image('', 100); $show->field('images')->image('', 100); $show->field('content')->image(''); @@ -174,6 +175,7 @@ class GoodsController extends AdminController ->move('goods/content'); $form->number('price')->min(0)->attribute('step', 0.01); + $form->number('discount_price')->min(0)->attribute('step', 0.01); $form->switch('on_sale'); $form->disableResetButton(); diff --git a/packages/goods/src/Http/Controllers/Admin/GoodsSkuController.php b/packages/goods/src/Http/Controllers/Admin/GoodsSkuController.php index 77db092..e85c009 100644 --- a/packages/goods/src/Http/Controllers/Admin/GoodsSkuController.php +++ b/packages/goods/src/Http/Controllers/Admin/GoodsSkuController.php @@ -73,17 +73,9 @@ class GoodsSkuController extends Controller $show->field('sn'); $show->field('name'); $show->field('price'); + $show->field('discount_price'); $show->field('stock'); $show->field('spec')->view('peidikeji.dcat-admin-extension-goods::grid.spec'); - // $goods = $show->model()->goods; - // foreach($goods->spec as $key => $item) { - // $show->field('spec_' . $key, $item['name'])->as(function () use ($item) { - // $filtered = current(array_filter($this->spec, fn($subItem) => $subItem['name'] === $item['name'])); - // $value = data_get($filtered, 'value'); - // $price = data_get($filtered, 'price'); - // return ''.$value.''; - // })->unescape(); - // } }); return $content ->translation($this->translation) @@ -98,7 +90,8 @@ class GoodsSkuController extends Controller $unqiue = Rule::unique('goods_sku', 'sn')->ignore($form->model()->id); $form->text('sn')->rules([$unqiue], ['unique' => '货号已经存在'])->required(); $form->text('name')->default($goods->name); - $form->number('price')->min(0)->default($goods->price); + $form->number('price')->min(0)->attribute('step', 0.01)->default($goods->price); + $form->number('discount_price')->min(0)->attribute('step', 0.01)->default($goods->discount_price); $form->number('stock')->min(0)->default($goods->stock); $form->hidden('spec')->customFormat(fn($v) => json_encode($v)); $form->hidden('goods_id')->default($goods->id); diff --git a/packages/goods/src/Models/Goods.php b/packages/goods/src/Models/Goods.php index 7f4014e..1c8524b 100644 --- a/packages/goods/src/Models/Goods.php +++ b/packages/goods/src/Models/Goods.php @@ -14,7 +14,7 @@ class Goods extends Model protected $table = 'goods'; - protected $fillable = ['attr', 'category_id', 'type_id', 'brand_id', 'content', 'cover_image', 'deleted_at', 'description', 'goods_sn', 'images', 'name', 'on_sale', 'part', 'price', 'sold_count', 'spec', 'stock']; + protected $fillable = ['attr', 'category_id', 'type_id', 'brand_id', 'content', 'cover_image', 'deleted_at', 'description', 'goods_sn', 'images', 'name', 'on_sale', 'part', 'price', 'discount_price', 'sold_count', 'spec', 'stock']; protected $casts = [ 'attr' => 'array', diff --git a/packages/goods/src/Models/GoodsSku.php b/packages/goods/src/Models/GoodsSku.php index 2468221..1da2918 100644 --- a/packages/goods/src/Models/GoodsSku.php +++ b/packages/goods/src/Models/GoodsSku.php @@ -9,7 +9,7 @@ class GoodsSku extends Model { protected $table = 'goods_sku'; - protected $fillable = ['sn', 'goods_id', 'name', 'price', 'stock', 'spec']; + protected $fillable = ['sn', 'goods_id', 'name', 'price', 'discount_price', 'stock', 'spec']; protected $casts = [ 'spec' => 'array', diff --git a/packages/goods/updates/CreateGoodsTable.php b/packages/goods/updates/CreateGoodsTable.php index d33ad1a..aa987f2 100644 --- a/packages/goods/updates/CreateGoodsTable.php +++ b/packages/goods/updates/CreateGoodsTable.php @@ -60,6 +60,7 @@ class CreateGoodsTable extends Migration $table->unsignedInteger('stock')->default(0)->comment('库存'); $table->unsignedInteger('sold_count')->default(0)->comment('销量'); $table->decimal('price', 12, 2)->comment('售价'); + $table->decimal('discount_price', 12, 2)->comment('折扣价'); $table->json('attr')->nullable()->comment('属性[{name, values: [{name, value}]}]'); $table->json('spec')->nullable()->comment('规格[{name, values: [{name, value}]}]'); $table->json('part')->nullable()->comment('配件[{name, values: [{name, value}]}]'); @@ -79,6 +80,7 @@ class CreateGoodsTable extends Migration $table->unsignedBigInteger('goods_id')->comment('所属商品, 关联 goods.id'); $table->string('name')->comment('名称'); $table->decimal('price', 12, 2)->comment('价格'); + $table->decimal('discount_price', 12, 2)->comment('折扣价'); $table->unsignedInteger('stock')->comment('库存'); $table->json('spec')->nullable()->comment('规格[{name, value, price}]'); diff --git a/packages/goods/updates/GoodsTableSeeder.php b/packages/goods/updates/GoodsTableSeeder.php index ed9b9d3..028abc5 100644 --- a/packages/goods/updates/GoodsTableSeeder.php +++ b/packages/goods/updates/GoodsTableSeeder.php @@ -89,6 +89,7 @@ class GoodsTableSeeder extends Seeder ], 'stock' => 100, 'price' => 6499.00, + 'discount_price' => 6499, 'attr' => [ ['name' => '主体', 'values' => [ ['name' => '入网型号', 'value' => '5G'], @@ -132,6 +133,7 @@ class GoodsTableSeeder extends Seeder ], 'stock' => 150, 'price' => 17999.00, + 'discount_price' => 17999, 'attr' => [ ['name' => '显示器', 'values' => [ ['name' => '屏幕类型', 'value' => 'LED 背光显示屏'],