From 9c76c92b050bf7f113a62bf3aea79e3cce2a3208 Mon Sep 17 00:00:00 2001 From: ctexthuang Date: Wed, 26 Mar 2025 10:23:08 +0800 Subject: [PATCH] feat : spu --- app/Constants/Common/CategoryCode.php | 6 ++-- app/Service/Admin/Order/RefundService.php | 31 ++++++++++++++++++- app/Service/Api/Good/MealListService.php | 17 ++++++++++ app/Service/Api/Good/OptionalListService.php | 17 ++++++++++ .../Common/OrderChangeStatusTrait.php | 14 ++++++--- 5 files changed, 77 insertions(+), 8 deletions(-) diff --git a/app/Constants/Common/CategoryCode.php b/app/Constants/Common/CategoryCode.php index af99409..aa40828 100644 --- a/app/Constants/Common/CategoryCode.php +++ b/app/Constants/Common/CategoryCode.php @@ -7,7 +7,7 @@ class CategoryCode /** * 商品分类 1=菜品 2=主食 3=加饭 */ - CONST DISH = 1; - CONST STAPLE = 2; - CONST EXTRA_STAPLE = 3; + CONST int DISH = 1; + CONST int STAPLE = 2; + CONST int EXTRA_STAPLE = 3; } \ No newline at end of file diff --git a/app/Service/Admin/Order/RefundService.php b/app/Service/Admin/Order/RefundService.php index b7754a3..abafcdd 100644 --- a/app/Service/Admin/Order/RefundService.php +++ b/app/Service/Admin/Order/RefundService.php @@ -10,12 +10,17 @@ declare(strict_types=1); namespace App\Service\Admin\Order; +use App\Constants\Common\OrderCode; use App\Constants\Common\RefundCode; use App\Exception\ErrException; +use App\Model\Order; use App\Service\Admin\BaseService; use App\Service\Amqp\Refund\FullRefundOrderService; use App\Service\Amqp\Refund\PartialRefundOrderService; +use App\Service\ServiceTrait\Common\OrderChangeStatusTrait; use Exception; +use Hyperf\Amqp\Producer; +use Hyperf\Di\Annotation\Inject; use Psr\Container\ContainerExceptionInterface; use Psr\Container\NotFoundExceptionInterface; @@ -70,13 +75,37 @@ class RefundService extends BaseService } } + use OrderChangeStatusTrait; + + /** + * @var Order + */ + #[Inject] + protected Order $orderModel; + /** * @return array + * @throws ContainerExceptionInterface + * @throws NotFoundExceptionInterface */ public function refundBatch(): array { - $siteId = $this->request->input('site_id'); + $kitchenId = $this->request->input('kitchen_id'); $cycleId = (int)$this->request->input('cycle_id'); + $reason = $this->request->input('reason'); + + $orderIds = $this->orderModel + ->where('kitchen_id', $kitchenId) + ->where('cycle_id', $cycleId) + ->where('status', OrderCode::FINISH) + ->pluck('id') + ->toArray(); + + if (empty($orderIds)) throw new ErrException('暂无数据'); + + foreach ($orderIds as $orderId) { + $this->joinRefundQueue($orderId,RefundCode::FULL_GOOD_REFUND,$reason); + } return $this->return->success(); } diff --git a/app/Service/Api/Good/MealListService.php b/app/Service/Api/Good/MealListService.php index 90667bb..10c1834 100644 --- a/app/Service/Api/Good/MealListService.php +++ b/app/Service/Api/Good/MealListService.php @@ -10,8 +10,10 @@ declare(strict_types=1); namespace App\Service\Api\Good; +use App\Cache\Redis\Api\ApiRedisKey; use App\Cache\Redis\Api\GoodCache; use App\Cache\Redis\Api\SiteCache; +use App\Cache\Redis\RedisCache; use App\Service\Api\BaseService; use App\Service\ServiceTrait\Common\CycleTrait; use Hyperf\Di\Annotation\Inject; @@ -34,6 +36,12 @@ class MealListService extends BaseService #[Inject] protected SiteCache $siteCache; + /** + * @var RedisCache + */ + #[Inject] + protected RedisCache $redisCache; + /** * @return array|array[] @@ -54,6 +62,15 @@ class MealListService extends BaseService $this->goodCache->kitchenId = (int)$siteInfo['kitchen_id']; $data = $this->goodCache->getMealGoodList(); + if (empty($data)) return $this->return->success('success', ['list' => []]); + + $stockKey = ApiRedisKey::goodStockKey($cycleId,(int)$siteInfo['kitchen_id']); + foreach ($data as &$item) { + foreach ($item['sku_list'] as &$v) { + $v['surplus_stock'] = $this->redisCache->zScore($stockKey,$v['id']) ?? 0; + } + } + return $this->return->success('success', ['list' => $data]); } } \ No newline at end of file diff --git a/app/Service/Api/Good/OptionalListService.php b/app/Service/Api/Good/OptionalListService.php index e16dd59..743ab2c 100644 --- a/app/Service/Api/Good/OptionalListService.php +++ b/app/Service/Api/Good/OptionalListService.php @@ -10,8 +10,10 @@ declare(strict_types=1); namespace App\Service\Api\Good; +use App\Cache\Redis\Api\ApiRedisKey; use App\Cache\Redis\Api\GoodCache; use App\Cache\Redis\Api\SiteCache; +use App\Cache\Redis\RedisCache; use App\Service\Api\BaseService; use App\Service\ServiceTrait\Common\CycleTrait; use Hyperf\Di\Annotation\Inject; @@ -34,6 +36,12 @@ class OptionalListService extends BaseService #[Inject] protected SiteCache $siteCache; + /** + * @var RedisCache + */ + #[Inject] + protected RedisCache $redisCache; + /** * @return array * @throws ContainerExceptionInterface @@ -53,6 +61,15 @@ class OptionalListService extends BaseService $this->goodCache->kitchenId = (int)$siteInfo['kitchen_id']; $data = $this->goodCache->getOptionalGoodList(); + if (empty($data)) return $this->return->success('success', ['list' => []]); + + $stockKey = ApiRedisKey::goodStockKey($cycleId,(int)$siteInfo['kitchen_id']); + foreach ($data as &$item) { + foreach ($item['sku_list'] as &$v) { + $v['surplus_stock'] = $this->redisCache->zScore($stockKey,$v['id']) ?? 0; + } + } + return $this->return->success('success', ['list' => $data]); } } \ No newline at end of file diff --git a/app/Service/ServiceTrait/Common/OrderChangeStatusTrait.php b/app/Service/ServiceTrait/Common/OrderChangeStatusTrait.php index 42d3e62..1e40ae5 100644 --- a/app/Service/ServiceTrait/Common/OrderChangeStatusTrait.php +++ b/app/Service/ServiceTrait/Common/OrderChangeStatusTrait.php @@ -22,6 +22,12 @@ trait OrderChangeStatusTrait #[Inject] protected ConfigCache $configCache; + /** + * @var Producer + */ + #[Inject] + protected Producer $producer; + /** * 加入取消队列 * @param int $orderId @@ -38,8 +44,8 @@ trait OrderChangeStatusTrait 'type' => $type ]); $message->setDelayMs($millisecond); - $producer = ApplicationContext::getContainer()->get(Producer::class); - $producer->produce($message); +// $producer = ApplicationContext::getContainer()->get(Producer::class); + $this->producer->produce($message); } /** @@ -57,7 +63,7 @@ trait OrderChangeStatusTrait 'type' => $type, 'reason' => $reason ]); - $producer = ApplicationContext::getContainer()->get(Producer::class); - $producer->produce($message); +// $producer = ApplicationContext::getContainer()->get(Producer::class); + $this->producer->produce($message); } } \ No newline at end of file