From 2468a9c7512450d1c206184e0bfd62a7daeb80de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E5=BB=BA=E7=82=8A?= <924182103@qq.com> Date: Tue, 20 Aug 2024 16:58:37 +0800 Subject: [PATCH] =?UTF-8?q?=E9=B2=9C=E8=8A=B12.0-=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E7=88=B6=E7=BA=A7=E5=88=86=E7=B1=BB=E7=9A=84=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E5=92=8C=E9=A2=84=E8=AD=A6=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E7=BB=B4=E6=8A=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Goods/GoodsSkusController.php | 6 ++- .../Message/WebsiteMessageController.php | 45 ++++++++++++++++--- app/Http/Enum/Goods/SkuStatusEnum.php | 15 +++++++ app/Http/Service/MessageService.php | 9 ++-- app/Listeners/BusinessOrderUpdateListener.php | 12 +++-- resources/lang/zh-CN/permission.php | 2 +- 6 files changed, 71 insertions(+), 18 deletions(-) create mode 100644 app/Http/Enum/Goods/SkuStatusEnum.php diff --git a/app/Http/Controllers/Goods/GoodsSkusController.php b/app/Http/Controllers/Goods/GoodsSkusController.php index 5a003f7..87f8816 100644 --- a/app/Http/Controllers/Goods/GoodsSkusController.php +++ b/app/Http/Controllers/Goods/GoodsSkusController.php @@ -106,7 +106,9 @@ class GoodsSkusController extends Controller $idField = implode(',', $finalIds); $goodsSkus = (clone $builder)->with(['goods' => function ($query) { - $query->with(['type:id,name', 'brand:id,name']); + $query->with(['type' => function ($query) { + $query->with("parentType:id,name")->select(["id","name","parent_id"]); + }]); }]) ->with(['daily' => function ($query) use ($day) { $query->where('day', $day); @@ -131,7 +133,7 @@ class GoodsSkusController extends Controller } if (!empty($sku['yesterday_num'])) { - $sku['sale_ratio'] = round($sku['stock'] / $sku['yesterday_num'], 2)*100; + $sku['sale_ratio'] = round($sku['stock'] / $sku['yesterday_num'], 2) * 100; } else { $sku['sale_ratio'] = 0; } diff --git a/app/Http/Controllers/Message/WebsiteMessageController.php b/app/Http/Controllers/Message/WebsiteMessageController.php index 33c5408..792949c 100644 --- a/app/Http/Controllers/Message/WebsiteMessageController.php +++ b/app/Http/Controllers/Message/WebsiteMessageController.php @@ -3,6 +3,9 @@ namespace App\Http\Controllers\Message; use App\Http\Controllers\Controller; +use App\Http\Enum\Goods\SkuStatusEnum; +use App\Http\Enum\Message\MessageTypeEnum; +use App\Models\GoodsSku; use App\Models\WebsiteMessages; use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Support\Facades\Log; @@ -14,13 +17,13 @@ class WebsiteMessageController extends Controller public function index(Request $request) { - $roleIds = collect($request->user()->roles)->pluck('id')->toArray()??[]; - $status = $request->input('status')?? 0; - $websiteMessage = WebsiteMessages::query()->where('status','=',$status); + $roleIds = collect($request->user()->roles)->pluck('id')->toArray() ?? []; + $status = $request->input('status') ?? 0; + $websiteMessage = WebsiteMessages::query()->where('status', '=', $status); - if(!empty($roleIds)){ - $websiteMessagePage = $websiteMessage->whereIn('role_id',$roleIds) - ->paginate($request->get('per_page')); + if (!empty($roleIds)) { + $websiteMessagePage = $websiteMessage->whereIn('role_id', $roleIds) + ->paginate($request->get('per_page')); return JsonResource::collection($websiteMessagePage); } @@ -38,9 +41,37 @@ class WebsiteMessageController extends Controller } //更新站內信狀態 $websiteMessages = WebsiteMessages::query()->find($id); + if (empty($websiteMessages)) { + $this->res = [ + 'httpCode' => 400, + 'errorCode' => 400404, + 'errorMessage' => "站内信数据不存在", + ]; + + return response($this->res, "400"); + } $websiteMessages->status = $request->status; - Log::info("管理員更新站內信",(array)$request->user()); + Log::info("管理員更新站內信", (array)$request->user()); $websiteMessages->save(); + + if ($request->status == 1) { + //标记已读触发 + $this->hook($websiteMessages); + } + return $websiteMessages; } + + public function hook($websiteMessages) + { + if ($websiteMessages->type == MessageTypeEnum::LOW_STOCK_NOTICE) { + $keyArray = explode("-", $websiteMessages->unique_key);//时间Ymd-对应id-角色id + $skuId = $keyArray[1] ?? 0; + if (!empty($skuId)) { + //变更回上架状态 + GoodsSku::query()->where("id", "=", $skuId)->update(["status" => SkuStatusEnum::UP]); + } + } + } + } diff --git a/app/Http/Enum/Goods/SkuStatusEnum.php b/app/Http/Enum/Goods/SkuStatusEnum.php new file mode 100644 index 0000000..f494d16 --- /dev/null +++ b/app/Http/Enum/Goods/SkuStatusEnum.php @@ -0,0 +1,15 @@ +roleIdsMapKeyByNoticeType[MessageTypeEnum::PRICE_EXCEPTION_NOTICE] ?? []; if (empty($roleIds)) { Log::error("消息配置异常", $this->roleIdsMapKeyByNoticeType); } - $date = Carbon::now()->format('Y-m-d'); + $date = Carbon::now()->format('Ymd'); foreach ($roleIds as $v) { $arr['title'] = "订单价格异常告警"; $arr['role_id'] = $v; @@ -62,7 +61,7 @@ class MessageService if (empty($roleIds)) { Log::error("消息配置异常", $this->roleIdsMapKeyByNoticeType); } - $date = Carbon::now()->format('Y-m-d'); + $date = Carbon::now()->format('Ymd'); foreach ($roleIds as $v) { $arr['title'] = "商品库存不足告警"; $arr['role_id'] = $v; @@ -84,7 +83,7 @@ class MessageService if (empty($roleIds)) { Log::error("消息配置异常", $this->roleIdsMapKeyByNoticeType); } - $date = Carbon::now()->format('Y-m-d'); + $date = Carbon::now()->format('Ymd'); foreach ($roleIds as $v) { $arr['title'] = "商品保质期告警"; $arr['role_id'] = $v; diff --git a/app/Listeners/BusinessOrderUpdateListener.php b/app/Listeners/BusinessOrderUpdateListener.php index 1dd2485..c78b7f5 100644 --- a/app/Listeners/BusinessOrderUpdateListener.php +++ b/app/Listeners/BusinessOrderUpdateListener.php @@ -6,10 +6,12 @@ use App\Events\BatchStockUpdateEvent; use App\Events\BusinessOrdersUpdate; use App\Http\Enum\CacheKeyEnum; use App\Http\Enum\DevConfigKeyEnum; +use App\Http\Enum\Goods\SkuStatusEnum; use App\Http\Service\MessageService; use App\Models\BusinessGoodsSku; use App\Models\DailyStockRecord; use App\Models\DeveloperConfig; +use App\Models\GoodsSku; use App\Models\Shop; use Carbon\Carbon; use Illuminate\Contracts\Queue\ShouldQueue; @@ -42,7 +44,7 @@ class BusinessOrderUpdateListener implements ShouldQueue public function handle(BusinessOrdersUpdate $event) { try { - if(!empty($event->goodsSku)){ + if (!empty($event->goodsSku)) { //查询库存是否满足告警规则 //查找昨日统计的库存数据 $inventory = $event->goodsSku['yesterday_num'] ?? 0; @@ -55,10 +57,14 @@ class BusinessOrderUpdateListener implements ShouldQueue if ($inventory > 10 && $inventory * $proportion > $event->goodsSku->stock) { $messageService = new MessageService(); $messageService->createLowerStockNoticeMessage($inventory, $event->goodsSku->toArray()); + //更新库存状态 + GoodsSku::query()->where("id", "=", $event->goodsSku->id)->update([ + "status" => SkuStatusEnum::NOTICE + ]); } } - }catch(\Exception $exception) { - Log::error("库存告警发生异常",["error"=>$exception->getMessage()]); + } catch (\Exception $exception) { + Log::error("库存告警发生异常", ["error" => $exception->getMessage()]); } } } diff --git a/resources/lang/zh-CN/permission.php b/resources/lang/zh-CN/permission.php index 7013729..4ea6183 100644 --- a/resources/lang/zh-CN/permission.php +++ b/resources/lang/zh-CN/permission.php @@ -78,7 +78,7 @@ return [ // 商品种类 'GOODS_TYPE' => [ 'id' => 3, - 'name' => '商品库管理', + 'name' => '品类管理', 'parent_id' => 1, 'show' => 1, ],