diff --git a/app/Http/Controllers/Goods/GoodsSkusController.php b/app/Http/Controllers/Goods/GoodsSkusController.php index 303e7df..b239588 100644 --- a/app/Http/Controllers/Goods/GoodsSkusController.php +++ b/app/Http/Controllers/Goods/GoodsSkusController.php @@ -7,6 +7,7 @@ use App\Events\StockUpdateEvent; use App\Exports\GoodsSkusExport; use App\Exports\WeekDataExport; use App\Http\Controllers\Controller; +use App\Http\Enum\ExcelKeyEnum; use App\Http\Requests\GoodsRequest; use App\Http\Requests\GoodsSkuRequest; use App\Imports\InventoryImport; @@ -140,7 +141,7 @@ class GoodsSkusController extends Controller $sku['sale_ratio'] = 0; } } - $data = ["manage"=>["is_admin"=>in_array($rolesName[0],["运营","超级管理员","管理员","系统管理员","店铺运营"])?1:0]]; + $data = ["manage" => ["is_admin" => in_array($rolesName[0], ["运营", "超级管理员", "管理员", "系统管理员", "店铺运营"]) ? 1 : 0]]; return GoodsSkuResource::collection($goodsSkus)->additional($data); } @@ -269,6 +270,12 @@ class GoodsSkusController extends Controller $costLog['target_field'] = 'sale_stock'; $costLog['before_update'] = $goodsSku->sale_stock; $goodsSku->sale_stock = $sku['sale_stock']; + if (0 >= $goodsSku->sale_stock) { + $status = GoodsSku::$STATUS_DOWN; + } else { + $status = GoodsSku::$STATUS_ON_SALE; + } + $goodsSku->status = $status; $goodsSku->save(); $costLog['after_update'] = $goodsSku->sale_stock; $logs[] = $costLog; @@ -713,4 +720,25 @@ class GoodsSkusController extends Controller return $data; } + + public function saleStockImport(Request $request) + { + if (!$request->hasFile(ExcelKeyEnum::SALE_STOCK_FILE)) { + $this->res = [ + 'httpCode' => 404, + 'errorCode' => 404404, + 'errorMessage' => 'not found inventory file', + ]; + } + try { + $import = new InventoryImport(); + $path = $request->file(ExcelKeyEnum::SALE_STOCK_FILE); + Excel::import($import, $path); + $this->addLog(0, 'import', ExcelKeyEnum::SALE_STOCK_FILE); + } catch (ValidationException $exception) { + $this->setValidatorFailResponse($exception->validator->getMessageBag()->getMessages()); + } + + return response($this->res, $this->res['httpCode']); + } } diff --git a/app/Http/Controllers/Supplier/PurchaseRecordController.php b/app/Http/Controllers/Supplier/PurchaseRecordController.php index 46ccf30..2c8fc6c 100644 --- a/app/Http/Controllers/Supplier/PurchaseRecordController.php +++ b/app/Http/Controllers/Supplier/PurchaseRecordController.php @@ -142,6 +142,10 @@ class PurchaseRecordController extends Controller $purchaseRecords->buyer_name = $allParams['buyer_name'] ?? ''; $purchaseRecords->supplier_name = $allParams['supplier_name'] ?? ''; $purchaseRecords->supplier_id = $allParams['supplier_id'] ?? 0; + if ($purchaseRecords->status == PurchaseStatusEnum::WAIT_CHECK) { + $purchaseRecords->cost = $allParams['cost'] ?? 0; + $purchaseRecords->num = $allParams['num'] ?? 0; + } if (!empty($allParams['expire_time'])) { $purchaseRecords->expire_time = Carbon::parse($allParams['expire_time'])->toDateTimeString(); } @@ -264,7 +268,9 @@ class PurchaseRecordController extends Controller $params = $request->validate([ 'purchaseOrders' => 'required|array', 'purchaseOrders.*.id' => 'required|integer', - 'purchaseOrders.*.status' => 'required|in:1,2']); + 'purchaseOrders.*.status' => 'required|in:1,2', + 'purchaseOrders.*.num' => 'sometimes|integer', + ]); $allUpdateIds = []; $now = Carbon::now()->toDateTimeString(); foreach ($params['purchaseOrders'] as $v) { @@ -279,6 +285,11 @@ class PurchaseRecordController extends Controller if ($purchaseRecords['status'] == $v['status']) { continue; } + if (!empty($v['num'])) { + $purchaseRecordBuilder->num = $v['num']; + $purchaseRecords['num'] = $purchaseRecords; + } + DB::beginTransaction(); try { if (PurchaseStatusEnum::CHECK_SUCCESS == $v['status']) { diff --git a/app/Http/Enum/ExcelKeyEnum.php b/app/Http/Enum/ExcelKeyEnum.php index d6d1eeb..2b40344 100644 --- a/app/Http/Enum/ExcelKeyEnum.php +++ b/app/Http/Enum/ExcelKeyEnum.php @@ -9,4 +9,6 @@ class ExcelKeyEnum const LOSS_KEY = "lossFile"; + const SALE_STOCK_FILE = "saleStockFile"; + } \ No newline at end of file diff --git a/app/Http/Middleware/CheckPermissions.php b/app/Http/Middleware/CheckPermissions.php index 0973abd..4c2092c 100644 --- a/app/Http/Middleware/CheckPermissions.php +++ b/app/Http/Middleware/CheckPermissions.php @@ -16,6 +16,9 @@ class CheckPermissions */ public function handle($request, Closure $next) { + //目前permission仅菜单权限和接口权限耦合 这里先放开 + $permissions = $request->user()->getPermissionsViaRoles()->toArray(); + return $next($request); // 获取当前路由名称 $currentRouteName = Route::currentRouteName(); // 引入当前守卫的权限文件 diff --git a/app/Imports/SaleStockImport.php b/app/Imports/SaleStockImport.php new file mode 100644 index 0000000..7f3d97b --- /dev/null +++ b/app/Imports/SaleStockImport.php @@ -0,0 +1,80 @@ +where('external_sku_id', $externalSkuId)->first(['id', 'cost', 'sale_stock']); + if (empty($goodsSku)) { + continue; + } + $costLog = [ + 'module' => 'goods', + 'action' => "SaleStockImport", + 'target_type' => 'goods_sku', + 'target_id' => $goodsSku['id'], + 'user_id' => Auth::id() ?? 999 + ]; + $costLog['target_field'] = 'sale_stock'; + $costLog['before_update'] = $goodsSku->sale_stock; + $goodsSku->sale_stock = $inventoryKeyByExternalSkuIdMap[$externalSkuId] ?? 0; + if (0 >= $goodsSku->sale_stock) { + $status = GoodsSku::$STATUS_DOWN; + } else { + $status = GoodsSku::$STATUS_ON_SALE; + } + $goodsSku->status = $status; + $goodsSku->save(); + $costLog['after_update'] = $goodsSku->sale_stock; + $logs[] = $costLog; + $updateIds[] = $goodsSku['id']; + } + $log = new LogModel(); + $log->batchInsert($logs); + DB::commit(); + if (!empty($updateIds)) { + event(new BatchStockUpdateEvent($updateIds)); + } + } catch (\Exception $exception) { + DB::rollBack(); + throw new Exception($exception->getMessage()); + } + } + } +}