From ec7ef4969e391453b80d4e9f23f9bcd5dbf855f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E4=B8=96=E7=95=8C?= <642747453@qq.com> Date: Tue, 2 Aug 2022 11:43:46 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20#20220802=20=E5=BA=97=E9=93=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Goods/GoodsSkusController.php | 104 ++++++++++++++++++ app/Http/Controllers/Shop/ShopsController.php | 45 ++++++++ app/Http/Resources/ShopsResource.php | 19 ++++ app/Models/Shop.php | 42 +++++++ .../2014_10_12_000000_create_users_table.php | 1 + .../2022_08_02_022448_create_shops_table.php | 45 ++++++++ database/seeds/MenusTableSeeder.php | 2 +- 7 files changed, 257 insertions(+), 1 deletion(-) create mode 100644 app/Http/Controllers/Shop/ShopsController.php create mode 100644 app/Http/Resources/ShopsResource.php create mode 100644 app/Models/Shop.php create mode 100644 database/migrations/2022_08_02_022448_create_shops_table.php diff --git a/app/Http/Controllers/Goods/GoodsSkusController.php b/app/Http/Controllers/Goods/GoodsSkusController.php index edf81ce..cf40820 100644 --- a/app/Http/Controllers/Goods/GoodsSkusController.php +++ b/app/Http/Controllers/Goods/GoodsSkusController.php @@ -8,6 +8,8 @@ use Illuminate\Http\Request; use App\Models\GoodsSku; use App\Http\Resources\GoodsSkuResource; use App\Imports\GoodsSkusImport; +use Illuminate\Support\Facades\Validator; +use Illuminate\Validation\Rule; use Illuminate\Validation\ValidationException; use Maatwebsite\Excel\Facades\Excel; @@ -35,7 +37,109 @@ class GoodsSkusController extends Controller public function update($id, Request $request) { + $data = $request->all(); + $this->validateUpdate($data); + $sku = GoodsSku::query()->find($id); + $this->setBeforeUpdate($sku->toArray()); + $sku->save($data); + $this->setAfterUpdate($sku->toArray()); + $this->addLog($id, 'update'); + return new GoodsSkuResource($sku); + } + + public function batchUpdate(Request $request) + { + $appendRules = [ + '*.id' => [ + 'required', + Rule::exists('goods_skus', 'id'), + ], + ]; + } + + public function updateField($id, Request $request) + { + $appendRules = [ + 'updateField' => [ + 'required', + Rule::in(['reference_price', 'reserve', 'loss_num', 'status']) + ], + ]; + if ($request->has('loss_num')) { + $appendRules['reason'] = ['required', 'string']; + } + $this->validateUpdate($request->all(), $appendRules); + $updateField = \request('updateField'); + $sku = GoodsSku::query()->find($id); + $this->setBeforeUpdate($sku->$updateField); + $sku->$updateField = $request->$updateField; + $sku->save(); + $this->setAfterUpdate($sku->$updateField); + $this->addLog($id, $updateField); + + return new GoodsSkuResource($sku); + } + + public function updateStock($id, Request $request) + { + $this->validateUpdate($request->all()); + $sku = GoodsSku::query()->where('id', $id)->get(['id', 'two_days_ago_num', 'yesterday_num']); + if ($sku->two_days_ago_num != \request('t wo_days_ago_num') || $sku->yesterday_num != \request('yesterday_num')) { + $this->setBeforeUpdate($sku->toArray()); + } + + } + + private function validateUpdate($data, $appendRules = []) + { + $rules = [ + '*.two_days_ago_num' => [ + 'sometimes', + 'integer', + ], + '*.yesterday_num' => [ + 'sometimes', + 'integer', + ], + '*.arrived_today_num' => [ + 'sometimes', + 'integer', + ], + '*.cost' => [ + 'sometimes', + 'numeric', + 'gt:0' + ], + '*.reference_price' => [ + 'sometimes', + 'numeric', + 'gt:0' + ], + '*.reserve' => [ + 'sometimes', + 'integer', + ], + '*.loss_num' => [ + 'sometimes', + 'integer', + ], + '*.inventory' => [ + 'sometimes', + 'integer', + ], + '*.status' => [ + 'sometimes', + 'integer', + Rule::in([0, 1, 2]) + ], + ]; + $validator = Validator::make($data, array_merge($rules, $appendRules)); + if ($validator->fails()) { + $this->setValidatorFailResponse($validator->getMessageBag()->getMessages()); + + return response($this->res, $this->res['httpCode']); + } } public function store(Request $request) diff --git a/app/Http/Controllers/Shop/ShopsController.php b/app/Http/Controllers/Shop/ShopsController.php new file mode 100644 index 0000000..f4fd384 --- /dev/null +++ b/app/Http/Controllers/Shop/ShopsController.php @@ -0,0 +1,45 @@ +paginate(); + + return ShopsResource::collection($shops); + } + + public function getPlatList() + { + $shop = new Shop(); + + return new ShopsResource($shop->getPlatList()); + } + + public function store(Request $request) + { + $validator = Validator::make($request->all(), [ + 'name' => 'required|string|max:255|unique:shops,name', + 'plat_id' => 'required|integer', + ]); + if ($validator->fails()) { + $this->setValidatorFailResponse($validator->getMessageBag()->getMessages()); + + return response($this->res, $this->res['httpCode']); + } + $shop = new Shop(); + $shop->name = $request->name; + $shop->plat_id = $request->plat_id; + $shop->save(); + + return response($this->res, $this->res['httpCode']); + } +} diff --git a/app/Http/Resources/ShopsResource.php b/app/Http/Resources/ShopsResource.php new file mode 100644 index 0000000..33fdcbf --- /dev/null +++ b/app/Http/Resources/ShopsResource.php @@ -0,0 +1,19 @@ + '未授权', + 1 => '已授权', + 2 => '无需授权', + 3 => '停用', + ]; + + return $map[$value]; + } + + public function getPlatList() + { + return ['妙选', '快团团']; + } + + public function getPlatIdAttribute($value) + { + $map = $this->getPlatList(); + + return $map[$value]; + } +} diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php index fc36207..03b4dc9 100644 --- a/database/migrations/2014_10_12_000000_create_users_table.php +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -20,6 +20,7 @@ class CreateUsersTable extends Migration $table->timestamp('email_verified_at')->nullable(); $table->string('password'); $table->string('api_token', 80)->unique()->nullable(false); + $table->softDeletes(); $table->rememberToken(); $table->timestamps(); }); diff --git a/database/migrations/2022_08_02_022448_create_shops_table.php b/database/migrations/2022_08_02_022448_create_shops_table.php new file mode 100644 index 0000000..7fddb77 --- /dev/null +++ b/database/migrations/2022_08_02_022448_create_shops_table.php @@ -0,0 +1,45 @@ +bigIncrements('id'); + $table->string('name')->unique(); + $table->unsignedTinyInteger('plat_id')->comment('平台id'); + $table->string('access_token')->nullable(); + $table->unsignedMediumInteger('expires_at')->nullable()->comment('access_token过期时间点'); + $table->unsignedInteger('expires_in')->nullable()->comment('access_token过期时间段,10(表示10秒后过期)'); + $table->string('owner_id')->nullable()->comment('商家店铺id'); + $table->string('owner_name')->nullable()->comment('商家账号名称'); + $table->string('refresh_token')->nullable()->comment('refresh token,可用来刷新access_token'); + $table->unsignedMediumInteger('refresh_token_expires_at')->nullable()->comment('Refresh token过期时间点'); + $table->unsignedInteger('refresh_token_expires_in')->nullable()->comment('refresh_token过期时间段,10表示10秒后过期'); + $table->text('scope')->nullable()->comment('接口列表'); + $table->text('pop_auth_token_create_response')->nullable()->comment('授权认证信息'); + $table->string('status')->default(0)->comment('状态'); + $table->softDeletes(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('shops'); + } +} diff --git a/database/seeds/MenusTableSeeder.php b/database/seeds/MenusTableSeeder.php index 3aff505..d968742 100644 --- a/database/seeds/MenusTableSeeder.php +++ b/database/seeds/MenusTableSeeder.php @@ -30,6 +30,6 @@ class MenusTableSeeder extends Seeder ['parent_id' => $id,'code' => 'PERMISSION_MANAGE', 'name' => '权限管理', 'seq' => 1], ]); // 系统日志 - DB::table('menus')->insertGetId(['parent_id' => 0,'code' => 'SYSTEM_LOG', 'name' => '系统管理', 'seq' => 4]); + DB::table('menus')->insertGetId(['parent_id' => 0,'code' => 'SYSTEM_LOG', 'name' => '系统日志', 'seq' => 4]); } }