diff --git a/app/Constants/Common/CategoryCode.php b/app/Constants/Common/CategoryCode.php new file mode 100644 index 0000000..af99409 --- /dev/null +++ b/app/Constants/Common/CategoryCode.php @@ -0,0 +1,13 @@ +toArray(); } + + /** + * @param int $cycle_id + * @return array + */ + public function getCycleIdAddStapleFoodSkuIds(int $cycle_id): array + { + return $this + ->leftJoin('sku','sku.spu_id','=','spu.id') + ->where('spu.cycle_id',$cycle_id) + ->where('spu.category_id',CategoryCode::EXTRA_STAPLE)->pluck('sku.id') + ->toArray(); + } } diff --git a/app/Service/Api/Good/OptionalListService.php b/app/Service/Api/Good/OptionalListService.php index e16dd59..8c17b9a 100644 --- a/app/Service/Api/Good/OptionalListService.php +++ b/app/Service/Api/Good/OptionalListService.php @@ -53,6 +53,19 @@ class OptionalListService extends BaseService $this->goodCache->kitchenId = (int)$siteInfo['kitchen_id']; $data = $this->goodCache->getOptionalGoodList(); + $this->buildData(&$data); + return $this->return->success('success', ['list' => $data]); } + + /** + * @param $data + * @return void + */ + private function buildData(&$data): void + { + foreach ($data as &$spu) { + $spu['price'] = min(array_column($spu['sku_list'], 'price')); + } + } } \ No newline at end of file diff --git a/app/Service/ServiceTrait/Api/CateringTrait.php b/app/Service/ServiceTrait/Api/CateringTrait.php index bb04ad8..100db36 100644 --- a/app/Service/ServiceTrait/Api/CateringTrait.php +++ b/app/Service/ServiceTrait/Api/CateringTrait.php @@ -7,6 +7,8 @@ use App\Constants\Admin\CateringCode; use App\Constants\Common\OrderCode; use App\Model\OrderMealCateringLog; use App\Model\OrderOptionCateringLog; +use App\Model\Sku; +use App\Model\Spu; use Hyperf\Di\Annotation\Inject; use Psr\Container\ContainerExceptionInterface; use Psr\Container\NotFoundExceptionInterface; @@ -65,8 +67,15 @@ trait CateringTrait */ private function manageSubOptionCateringLog(): void { -// todo 减少可以不减少根据订单 cycle_id 获取加一碗米饭 的数量 减少查询压力 -// $addStapleFoodNum = 0; + $extraStapleArr = $this->spuModel->getCycleIdAddStapleFoodSkuIds($this->orderInfo->cycle_id); + $orderGoods = $this->orderGoodModel->where('order_id',$this->orderInfo->id)->pluck('copies','sku_id')->toArray(); + + $addStapleFoodNum = 0; + foreach ($orderGoods as $key => $copies) { + if (!in_array($key, $extraStapleArr)) continue; + + $addStapleFoodNum = $copies + $addStapleFoodNum; + } $siteInfo = $this->siteCache->getSiteInfo($this->orderInfo->site_id); @@ -83,8 +92,8 @@ trait CateringTrait return; } - $logInfo->quantity = $logInfo->quantity + $this->orderInfo->copies; -// $logInfo->add_staple_food_num = $this->orderInfo->add_staple_food_num - $addStapleFoodNum; + $logInfo->quantity = $logInfo->quantity - $this->orderInfo->copies; + $logInfo->add_staple_food_num = $this->orderInfo->add_staple_food_num - $addStapleFoodNum; if (!$logInfo->save()) { $this->log->error(__CLASS__.':Function:refundCallBackHandle:manageSubOptionCateringLog:修改配餐记录失败,订单信息:'.json_encode($this->orderInfo->toArray())); @@ -121,6 +130,12 @@ trait CateringTrait } } + /** + * @var Spu + */ + #[Inject] + protected Spu $spuModel; + /** * 添加自选配餐数据 * @return bool @@ -129,8 +144,16 @@ trait CateringTrait */ private function manageAddOptionCateringLog(): bool { - //todo 根据订单 cycle_id 获取加一碗米饭 的数量 + //根据订单 cycle_id 获取加一碗米饭 的数量 + $extraStapleArr = $this->spuModel->getCycleIdAddStapleFoodSkuIds($this->orderInfo->cycle_id); + $orderGoods = $this->orderGoodModel->where('order_id',$this->orderInfo->id)->pluck('copies','sku_id')->toArray(); + $addStapleFoodNum = 0; + foreach ($orderGoods as $key => $copies) { + if (!in_array($key, $extraStapleArr)) continue; + + $addStapleFoodNum = $copies + $addStapleFoodNum; + } $siteInfo = $this->siteCache->getSiteInfo($this->orderInfo->site_id); //需要绑定一个 kitchen_id