get('position'); if (is_string($advertisement_position)) { return $this->response->array([]); } $area_id = $request->get('area_id', 0); $ads = $advertisementRepository->byPositionIdGetActive($advertisement_position, $area_id)->toArray(); $data = []; $user_id = $this->user->id ?? ''; $childrenAd = []; $childrenAdSort = []; $footer_tag = 0; if (count($ads) !== 0) { foreach ($ads as $v) { switch ($v['advertisement_position_slug']) { case Advertisement::POSITION_HEADER: $data[Advertisement::POSITION_HEADER][] = $v; break; case Advertisement::POSITION_MID: // $key = 'advertisement_mid_times_' . $user_id . '_' . $v['id']; // if (!empty($user_id)) { // app()->redis->incr($key); // $expireat = Carbon::tomorrow()->timestamp; // // 设置固定过期时间 // app()->redis->EXPIREAT($key, $expireat); // } // // 如果有用户得id 每天只显示一次 // $aa = app()->redis->get($key) ?? 0; //// if ($aa < 100) { //// $data[Advertisement::POSITION_MID][] = $v; //// } $data[Advertisement::POSITION_MID][] = $v; break; case Advertisement::POSITION_FOOTER: if ($v['pid'] == 0) { // 找出底部广告 $data[Advertisement::POSITION_FOOTER][] = $v; } else { // 底部子广告 if ((int)$v['extra'] === 50) { $v['class'] = $footer_tag % 2 ? 'right' : 'left'; $footer_tag++; } $childrenAd[] = $v; } break; default; } } // 底部广告显示优先级高的 $resChildrenAd = []; if (!empty($data[Advertisement::POSITION_FOOTER]) && count($data[Advertisement::POSITION_FOOTER]) >= 1) { if (!empty($childrenAd)) { // 将子广告整理出来 foreach ($childrenAd as $v) { // 找出底部广告优先级最高的子广告 if ($v['pid'] == $data[Advertisement::POSITION_FOOTER][0]['id']) { $resChildrenAd[] = $v; $childrenAdSort[] = $v['sort']; $childrenAdId[] = $v['id']; } } // sort 排序 子广告排序 array_multisort($childrenAdSort, SORT_DESC, $childrenAdId, SORT_ASC, $resChildrenAd); // 给子广告赋值 $data[Advertisement::POSITION_FOOTER][0]['child'] = $resChildrenAd; } $data[Advertisement::POSITION_FOOTER] = $data[Advertisement::POSITION_FOOTER][0]; } } return $this->response->array($data); //return $this->response->collection($ads, AdvertisementsTransformer::class); } catch (\Exception $exception) { $this->errorNoValidation($exception->getMessage()); } } /** * 广告详情 * @param Request $request * @param AdvertisementRepository $advertisementRepository * @return \Dingo\Api\Http\Response * User: Mead */ public function show(AdvertisementRequest $request, AdvertisementRepository $advertisementRepository) { try { $id = $request->get('id'); $ads = $advertisementRepository->byIdGetModel($id); return $this->response->item($ads, AdvertisementTransformer::class); } catch (\Exception $exception) { $this->errorNoValidation($exception->getMessage()); } } }