From a92f86f55778714eb2b8320c54f46c6e4bc0d18e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E4=B8=96=E7=95=8C?= <642747453@qq.com> Date: Fri, 2 Sep 2022 18:42:57 +0800 Subject: [PATCH] =?UTF-8?q?#10000=20=E5=B9=B3=E5=8F=B0=E5=95=86=E5=93=81?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Filters/BusinessGoodsSkuFilter.php | 21 ++++++++++ .../Business/BusinessGoodsSkusController.php | 40 +++++++++++++++++++ .../Resources/BusinessGoodsSkuResource.php | 19 +++++++++ app/Listeners/StockUpdateListener.php | 4 +- app/Models/BusinessGoodsSku.php | 16 ++++++++ ..._fields_with_daily_stock_records_table.php | 5 ++- ..._fields_with_business_goods_skus_table.php | 32 +++++++++++++++ database/seeds/MenusTableSeeder.php | 23 ++++++----- resources/lang/zh-CN/permission.php | 18 ++++++++- routes/api.php | 5 +++ 10 files changed, 168 insertions(+), 15 deletions(-) create mode 100644 app/Filters/BusinessGoodsSkuFilter.php create mode 100644 app/Http/Controllers/Business/BusinessGoodsSkusController.php create mode 100644 app/Http/Resources/BusinessGoodsSkuResource.php create mode 100644 database/migrations/2022_09_02_181639_add_fields_with_business_goods_skus_table.php diff --git a/app/Filters/BusinessGoodsSkuFilter.php b/app/Filters/BusinessGoodsSkuFilter.php new file mode 100644 index 0000000..fc89660 --- /dev/null +++ b/app/Filters/BusinessGoodsSkuFilter.php @@ -0,0 +1,21 @@ +builder->where('external_sku_id', '=', trim($value)); + } + + protected function goodsName($value) + { + return $this->builder->where('goods_name', '=', trim($value)); + } + + protected function shipId($value) + { + return $this->builder->where('shop_id', '=', trim($value)); + } +} diff --git a/app/Http/Controllers/Business/BusinessGoodsSkusController.php b/app/Http/Controllers/Business/BusinessGoodsSkusController.php new file mode 100644 index 0000000..75418fb --- /dev/null +++ b/app/Http/Controllers/Business/BusinessGoodsSkusController.php @@ -0,0 +1,40 @@ +filter() + ->with(['shop:id,name']) + ->paginate($request->get('per_page')); + + return BusinessGoodsSkuResource::collection($businessGoodsSkus); + } + + public function update(Request $request, $id) + { + $validator = Validator::make($request->all(), [ + 'is_sync' => ['required', Rule::in([0, 1])] + ]); + if ($validator->fails()) { + $this->setValidatorFailResponse($validator->getMessageBag()->getMessages()); + + return response($this->res, $this->res['httpCode']); + } + $sku = BusinessGoodsSku::find($id); + $sku->is_sync = $request->input('is_sync'); + $sku->save(); + + return response($this->res, $this->res['httpCode']); + } +} diff --git a/app/Http/Resources/BusinessGoodsSkuResource.php b/app/Http/Resources/BusinessGoodsSkuResource.php new file mode 100644 index 0000000..1bbe77b --- /dev/null +++ b/app/Http/Resources/BusinessGoodsSkuResource.php @@ -0,0 +1,19 @@ +goodsSku) && '下架' !== $event->goodsSku->status) { $num = $event->goodsSku->stock; - $businessGoodsSkus = BusinessGoodsSku::query()->where('shop_id', $shop->id)->where('external_sku_id', $event->goodsSku->goods['goods_code'] . '_' . $event->goodsSku->sku_code)->get(); + $businessGoodsSkus = BusinessGoodsSku::query()->where('shop_id', $shop->id)->where('is_sync', 1)->where('external_sku_id', $event->goodsSku->goods['goods_code'] . '_' . $event->goodsSku->sku_code)->get(); foreach ($businessGoodsSkus as $businessGoodsSku) { BusinessGoodsSkuIncrQuantity::dispatch($shop, $businessGoodsSku->toArray(), $num, false); } @@ -47,7 +47,7 @@ class StockUpdateListener continue; } $num = $goodsSku->stock; - $businessGoodsSkus = BusinessGoodsSku::query()->where('shop_id', $shop->id)->where('external_sku_id', $goodsSku->goods['goods_code'] . '_' . $goodsSku->sku_code)->get(); + $businessGoodsSkus = BusinessGoodsSku::query()->where('shop_id', $shop->id)->where('is_sync', 1)->where('external_sku_id', $goodsSku->goods['goods_code'] . '_' . $goodsSku->sku_code)->get(); foreach ($businessGoodsSkus as $businessGoodsSku) { BusinessGoodsSkuIncrQuantity::dispatch($shop, $businessGoodsSku->toArray(), $num, false); } diff --git a/app/Models/BusinessGoodsSku.php b/app/Models/BusinessGoodsSku.php index a01e16d..6ebad84 100644 --- a/app/Models/BusinessGoodsSku.php +++ b/app/Models/BusinessGoodsSku.php @@ -2,8 +2,19 @@ namespace App\Models; +use App\Models\traits\Filter; + class BusinessGoodsSku extends Model { + use Filter; + + //查询字段 + public $fieldSearchable = [ + 'external_sku_id', + 'goods_name', + 'shop_id', + ]; + /** * @var mixed */ @@ -46,4 +57,9 @@ class BusinessGoodsSku extends Model 'thumb_url', 'verification_number', ]; + + public function shop() + { + return $this->hasOne(Shop::class, 'id', 'shop_id'); + } } diff --git a/database/migrations/2022_08_23_152332_add_fields_with_daily_stock_records_table.php b/database/migrations/2022_08_23_152332_add_fields_with_daily_stock_records_table.php index 006e4ec..6cfb130 100644 --- a/database/migrations/2022_08_23_152332_add_fields_with_daily_stock_records_table.php +++ b/database/migrations/2022_08_23_152332_add_fields_with_daily_stock_records_table.php @@ -26,6 +26,9 @@ class AddFieldsWithDailyStockRecordsTable extends Migration */ public function down() { - // + Schema::table('daily_stock_records', function (Blueprint $table) { + $table->dropColumn('order_goods_num'); + $table->dropColumn('inventory_time'); + }); } } diff --git a/database/migrations/2022_09_02_181639_add_fields_with_business_goods_skus_table.php b/database/migrations/2022_09_02_181639_add_fields_with_business_goods_skus_table.php new file mode 100644 index 0000000..2cfce77 --- /dev/null +++ b/database/migrations/2022_09_02_181639_add_fields_with_business_goods_skus_table.php @@ -0,0 +1,32 @@ +tinyInteger('is_sync')->default(1)->comment('是否同步'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('business_goods_skus', function (Blueprint $table) { + $table->dropColumn('is_sync'); + }); + } +} diff --git a/database/seeds/MenusTableSeeder.php b/database/seeds/MenusTableSeeder.php index c260c8e..6c864eb 100644 --- a/database/seeds/MenusTableSeeder.php +++ b/database/seeds/MenusTableSeeder.php @@ -13,23 +13,24 @@ class MenusTableSeeder extends Seeder public function run() { // 商品管理-(商品列表,商品种类,商品品牌) - $id = DB::table('menus')->insertGetId(['parent_id' => 0,'code' => 'GOODS_MANAGE', 'name' => '商品管理', 'seq' => 0]); + $id = DB::table('menus')->insertGetId(['parent_id' => 0, 'code' => 'GOODS_MANAGE', 'name' => '商品管理', 'seq' => 0]); DB::table('menus')->insert([ - ['parent_id' => $id,'code' => 'GOODS_LIST', 'name' => '商品列表', 'seq' => 0], - ['parent_id' => $id,'code' => 'GOODS_TYPE', 'name' => '商品种类', 'seq' => 1], - ['parent_id' => $id,'code' => 'GOODS_BRAND', 'name' => '商品品牌', 'seq' => 2], + ['parent_id' => $id, 'code' => 'GOODS_LIST', 'name' => '商品列表', 'seq' => 0], + ['parent_id' => $id, 'code' => 'GOODS_TYPE', 'name' => '商品种类', 'seq' => 1], + ['parent_id' => $id, 'code' => 'GOODS_BRAND', 'name' => '商品品牌', 'seq' => 2], ]); // 店铺管理 - DB::table('menus')->insertGetId(['parent_id' => 0,'code' => 'SHOP_MANAGE', 'name' => '店铺管理', 'seq' => 1]); + DB::table('menus')->insertGetId(['parent_id' => 0, 'code' => 'SHOP_MANAGE', 'name' => '店铺管理', 'seq' => 1]); // 用户管理 - DB::table('menus')->insertGetId(['parent_id' => 0,'code' => 'USER_MANAGE', 'name' => '用户管理', 'seq' => 2]); - // 系统管理-(角色管理,权限管理) - $id = DB::table('menus')->insertGetId(['parent_id' => 0,'code' => 'SYSTEM_MANAGE', 'name' => '系统管理', 'seq' => 3]); + DB::table('menus')->insertGetId(['parent_id' => 0, 'code' => 'USER_MANAGE', 'name' => '用户管理', 'seq' => 2]); + // 系统管理-(角色管理,权限管理,系统日志) + $id = DB::table('menus')->insertGetId(['parent_id' => 0, 'code' => 'SYSTEM_MANAGE', 'name' => '系统管理', 'seq' => 3]); DB::table('menus')->insert([ - ['parent_id' => $id,'code' => 'ROLE_MANAGE', 'name' => '角色管理', 'seq' => 0], + ['parent_id' => $id, 'code' => 'ROLE_MANAGE', 'name' => '角色管理', 'seq' => 0], // ['parent_id' => $id,'code' => 'PERMISSION_MANAGE', 'name' => '权限管理', 'seq' => 1], + ['parent_id' => $id, 'code' => 'SYSTEM_LOG', 'name' => '系统日志', 'seq' => 2], ]); - // 系统日志 - DB::table('menus')->insertGetId(['parent_id' => 0,'code' => 'SYSTEM_LOG', 'name' => '系统日志', 'seq' => 4]); + // 平台 + DB::table('menus')->insertGetId(['parent_id' => 0, 'code' => 'PLAT', 'name' => '平台', 'seq' => 4]); } } diff --git a/resources/lang/zh-CN/permission.php b/resources/lang/zh-CN/permission.php index 7cae14b..849034c 100644 --- a/resources/lang/zh-CN/permission.php +++ b/resources/lang/zh-CN/permission.php @@ -239,11 +239,27 @@ return [ 'SYSTEM_LOG' => [ 'id' => 10, 'name' => '系统日志', - 'parent_id' => 0, + 'parent_id' => 7, ], 'logs.index' => [ 'id' => 100, 'name' => '列表', 'parent_id' => 10, ], + // 平台 + 'PLAT' => [ + 'id' => 12, + 'name' => '平台', + 'parent_id' => 0, + ], + 'plat_goods.index' => [ + 'id' => 120, + 'name' => '货品列表', + 'parent_id' => 12, + ], + 'plat_goods.update' => [ + 'id' => 121, + 'name' => '同步更新设置', + 'parent_id' => 12, + ], ]; diff --git a/routes/api.php b/routes/api.php index fe003ca..312a9df 100644 --- a/routes/api.php +++ b/routes/api.php @@ -5,6 +5,7 @@ use App\Http\Controllers\Role\RolesController; use App\Http\Controllers\UploadController; use App\Http\Controllers\Shop\ShopsController; use App\Http\Controllers\Goods\GoodsSkusController; +use App\Http\Controllers\Business\BusinessGoodsSkusController; /* |-------------------------------------------------------------------------- @@ -55,3 +56,7 @@ Route::resource('menus', 'Menu\MenusController', ['only' => ['index', Route::get('shop_platforms', [ShopsController::class, 'getPlatList'])->name('plat.list')->middleware('auth:api'); Route::post('business', [ShopsController::class, 'business'])->name('shop.put.business'); + +// 平台 +Route::resource('plat_goods', 'Business\BusinessGoodsSkusController', ['only' => ['index', 'update']]); +Route::post('plat/sync/stock', [BusinessGoodsSkusController::class, 'syncStock'])->name('plat.sync.stock');