鲜花2.0-新增父级分类的数据返回和预警状态维护

This commit is contained in:
杨建炊 2024-08-20 16:58:37 +08:00
parent 89a2df396e
commit 2468a9c751
6 changed files with 71 additions and 18 deletions

View File

@ -106,7 +106,9 @@ class GoodsSkusController extends Controller
$idField = implode(',', $finalIds); $idField = implode(',', $finalIds);
$goodsSkus = (clone $builder)->with(['goods' => function ($query) { $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) { ->with(['daily' => function ($query) use ($day) {
$query->where('day', $day); $query->where('day', $day);

View File

@ -3,6 +3,9 @@
namespace App\Http\Controllers\Message; namespace App\Http\Controllers\Message;
use App\Http\Controllers\Controller; 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 App\Models\WebsiteMessages;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
@ -38,9 +41,37 @@ class WebsiteMessageController extends Controller
} }
//更新站內信狀態 //更新站內信狀態
$websiteMessages = WebsiteMessages::query()->find($id); $websiteMessages = WebsiteMessages::query()->find($id);
if (empty($websiteMessages)) {
$this->res = [
'httpCode' => 400,
'errorCode' => 400404,
'errorMessage' => "站内信数据不存在",
];
return response($this->res, "400");
}
$websiteMessages->status = $request->status; $websiteMessages->status = $request->status;
Log::info("管理員更新站內信", (array)$request->user()); Log::info("管理員更新站內信", (array)$request->user());
$websiteMessages->save(); $websiteMessages->save();
if ($request->status == 1) {
//标记已读触发
$this->hook($websiteMessages);
}
return $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]);
}
}
}
} }

View File

@ -0,0 +1,15 @@
<?php
namespace App\Http\Enum\Goods;
class SkuStatusEnum
{
const DOWN = 0;
const UP = 1;
const NOTICE = 2;
}

View File

@ -30,14 +30,13 @@ class MessageService
//值为角色ids //值为角色ids
public function createPriceExceptionMessage(string $businessOrderId, string $productName, string $skuName public function createPriceExceptionMessage(string $businessOrderId, string $productName, string $skuName, string $goodsPrice, string $cost)
, string $goodsPrice, string $cost)
{ {
$roleIds = $this->roleIdsMapKeyByNoticeType[MessageTypeEnum::PRICE_EXCEPTION_NOTICE] ?? []; $roleIds = $this->roleIdsMapKeyByNoticeType[MessageTypeEnum::PRICE_EXCEPTION_NOTICE] ?? [];
if (empty($roleIds)) { if (empty($roleIds)) {
Log::error("消息配置异常", $this->roleIdsMapKeyByNoticeType); Log::error("消息配置异常", $this->roleIdsMapKeyByNoticeType);
} }
$date = Carbon::now()->format('Y-m-d'); $date = Carbon::now()->format('Ymd');
foreach ($roleIds as $v) { foreach ($roleIds as $v) {
$arr['title'] = "订单价格异常告警"; $arr['title'] = "订单价格异常告警";
$arr['role_id'] = $v; $arr['role_id'] = $v;
@ -62,7 +61,7 @@ class MessageService
if (empty($roleIds)) { if (empty($roleIds)) {
Log::error("消息配置异常", $this->roleIdsMapKeyByNoticeType); Log::error("消息配置异常", $this->roleIdsMapKeyByNoticeType);
} }
$date = Carbon::now()->format('Y-m-d'); $date = Carbon::now()->format('Ymd');
foreach ($roleIds as $v) { foreach ($roleIds as $v) {
$arr['title'] = "商品库存不足告警"; $arr['title'] = "商品库存不足告警";
$arr['role_id'] = $v; $arr['role_id'] = $v;
@ -84,7 +83,7 @@ class MessageService
if (empty($roleIds)) { if (empty($roleIds)) {
Log::error("消息配置异常", $this->roleIdsMapKeyByNoticeType); Log::error("消息配置异常", $this->roleIdsMapKeyByNoticeType);
} }
$date = Carbon::now()->format('Y-m-d'); $date = Carbon::now()->format('Ymd');
foreach ($roleIds as $v) { foreach ($roleIds as $v) {
$arr['title'] = "商品保质期告警"; $arr['title'] = "商品保质期告警";
$arr['role_id'] = $v; $arr['role_id'] = $v;

View File

@ -6,10 +6,12 @@ use App\Events\BatchStockUpdateEvent;
use App\Events\BusinessOrdersUpdate; use App\Events\BusinessOrdersUpdate;
use App\Http\Enum\CacheKeyEnum; use App\Http\Enum\CacheKeyEnum;
use App\Http\Enum\DevConfigKeyEnum; use App\Http\Enum\DevConfigKeyEnum;
use App\Http\Enum\Goods\SkuStatusEnum;
use App\Http\Service\MessageService; use App\Http\Service\MessageService;
use App\Models\BusinessGoodsSku; use App\Models\BusinessGoodsSku;
use App\Models\DailyStockRecord; use App\Models\DailyStockRecord;
use App\Models\DeveloperConfig; use App\Models\DeveloperConfig;
use App\Models\GoodsSku;
use App\Models\Shop; use App\Models\Shop;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Contracts\Queue\ShouldQueue;
@ -55,6 +57,10 @@ class BusinessOrderUpdateListener implements ShouldQueue
if ($inventory > 10 && $inventory * $proportion > $event->goodsSku->stock) { if ($inventory > 10 && $inventory * $proportion > $event->goodsSku->stock) {
$messageService = new MessageService(); $messageService = new MessageService();
$messageService->createLowerStockNoticeMessage($inventory, $event->goodsSku->toArray()); $messageService->createLowerStockNoticeMessage($inventory, $event->goodsSku->toArray());
//更新库存状态
GoodsSku::query()->where("id", "=", $event->goodsSku->id)->update([
"status" => SkuStatusEnum::NOTICE
]);
} }
} }
} catch (\Exception $exception) { } catch (\Exception $exception) {

View File

@ -78,7 +78,7 @@ return [
// 商品种类 // 商品种类
'GOODS_TYPE' => [ 'GOODS_TYPE' => [
'id' => 3, 'id' => 3,
'name' => '商品库管理', 'name' => '品类管理',
'parent_id' => 1, 'parent_id' => 1,
'show' => 1, 'show' => 1,
], ],