鲜花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);
$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;
}

View File

@ -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,12 +17,12 @@ 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)
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]);
}
}
}
}

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
public function createPriceExceptionMessage(string $businessOrderId, string $productName, string $skuName
, string $goodsPrice, string $cost)
public function createPriceExceptionMessage(string $businessOrderId, string $productName, string $skuName, string $goodsPrice, string $cost)
{
$roleIds = $this->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;

View File

@ -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()]);
}
}
}

View File

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