app/Customize/Controller/SearchPopController.php line 74

Open in your IDE?
  1. <?php
  2. namespace Customize\Controller;
  3. use Customize\Controller\LM\LmAbstractController;
  4. use Customize\Service\CommonService;
  5. use Customize\Service\GoodsService;
  6. use Customize\Service\LmHelper;
  7. use Lm\Service\Db\SqlService;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. class SearchPopController extends LmAbstractController
  11. {
  12.     /**
  13.      * @var GoodsService $GoodsService
  14.      */
  15.     protected $GoodsService;
  16.     public function __construct(CommonService $commonService,
  17.                                 LmHelper      $lmHelper,
  18.                                 GoodsService  $goodsService)
  19.     {
  20.         //
  21.         parent::__construct($commonService$lmHelper);
  22.         //
  23.         $this->GoodsService $goodsService;
  24.     }
  25.     /**
  26.      * サーチPOP - 指定されたキーワードにて商品一覧を検索する
  27.      *
  28.      * @param Request $request
  29.      * @return array|null
  30.      * @Route("/search-pop/item-list", name="search-pop/item-list", methods={"POST"});
  31.      */
  32.     public function itemList(Request $request)
  33.     {
  34.         // 初期値設定
  35.         $data null;
  36.         $suffix = !empty($_REQUEST) ? hash('sha256'base64_encode(serialize($_REQUEST))) : '';
  37.         $dataCacheId "searchpop_searchlist__data__{$suffix}";
  38.         // キャッシュ可否判定
  39.         if ($this->lmHelper->useCache()) {
  40.             // キャッシュロード
  41.             $data $this->lmHelper->loadCache($dataCacheId$request);
  42.         }
  43.         if (!$data) {
  44.             // パラメータ
  45.             $params = array(
  46.                 'searchtext'      => $this->lmHelper->displayText($request->get('searchtext''')),
  47.                 'keywords'        => $this->lmHelper->getKeywords($request->get('searchtext''')),
  48.                 'max_display_cnt' => $request->get('display_max''5'),
  49.                 'start'           => $request->get('no''0'),
  50.                 'order_type'      => $request->get('order_type''2'),
  51.             );
  52.             // 商品検索
  53.             $data $this->GoodsService->searchItemListByKeyword($params);
  54.             // キャッシュに保存
  55.             $this->lmHelper->saveCache($dataCacheId$data);
  56.         }
  57.         return $this->jsonResponse(json_encode($data));
  58.     }
  59.     /**
  60.      * サーチPOP - 指定されたキーワードにてカテゴリ一覧を検索する
  61.      *
  62.      * @param Request $request
  63.      * @return array|null
  64.      * @Route("/search-pop/category-list", name="search-pop/category-list", methods={"POST"});
  65.      */
  66.     public function categoryList(Request $request)
  67.     {
  68.         // 初期値設定
  69.         $data null;
  70.         $suffix = !empty($_REQUEST) ? hash('sha256'base64_encode(serialize($_REQUEST))) : '';
  71.         $dataCacheId "searchpop_search_category__data__{$suffix}";
  72.         // キャッシュ可否判定
  73.         if ($this->lmHelper->useCache()) {
  74.             // キャッシュロード
  75.             $data $this->lmHelper->loadCache($dataCacheId$request);
  76.         }
  77.         if (!$data) {
  78.             // パラメータ
  79.             $params = array(
  80.                 'searchtext'      => $this->lmHelper->displayText($request->get('searchtext''')),
  81.                 'keywords'        => $this->lmHelper->getKeywords($request->get('searchtext'''), false),
  82.                 'category_type'   => $request->get('category_type''normal'),
  83.                 'max_display_cnt' => $request->get('display_max''5'),
  84.                 'start'           => $request->get('no''0'),
  85.             );
  86.             // カテゴリリスト
  87.             $data $this->GoodsService->searchCategoryListByKeyword($params);
  88.             // キャッシュに保存
  89.             $this->lmHelper->saveCache($dataCacheId$data);
  90.         }
  91.         return $this->jsonResponse(json_encode($data));
  92.     }
  93.     /**
  94.      * サーチPOP - 指定されたキーワードにてコラム一覧を検索する
  95.      *
  96.      * @param Request $request
  97.      * @return array|null
  98.      * @Route("/search-pop/column-list", name="search-pop/column-list", methods={"POST"});
  99.      */
  100.     public function columnList(Request $request)
  101.     {
  102.         // 初期値設定
  103.         $data null;
  104.         $suffix = !empty($_REQUEST) ? hash('sha256'base64_encode(serialize($_REQUEST))) : '';
  105.         $dataCacheId "searchpop_search_column__data__{$suffix}";
  106.         // キャッシュ可否判定
  107.         if ($this->lmHelper->useCache()) {
  108.             // キャッシュロード
  109.             $data $this->lmHelper->loadCache($dataCacheId$request);
  110.         }
  111.         if (!$data) {
  112.             // パラメータ
  113.             $params = array(
  114.                 'searchtext'      => $this->lmHelper->displayText($request->get('searchtext''')),
  115.                 'keywords'        => $this->lmHelper->getKeywords($request->get('searchtext'''), false),
  116.                 'max_display_cnt' => $request->get('display_max''5'),
  117.             );
  118.             // カラムリスト
  119.             $data $this->GoodsService->searchColumnListByKeyword($params);
  120.             // キャッシュに保存
  121.             $this->lmHelper->saveCache($dataCacheId$data);
  122.         }
  123.         return $this->jsonResponse(json_encode($data));
  124.     }
  125.     /**
  126.      * サーチPOP - 指定されたカテゴリに属する商品一覧の取得
  127.      *
  128.      * @param Request $request
  129.      * @return array|null
  130.      * @Route("/search-pop/item-list-by-category", name="search-pop/item-list-by-category", methods={"POST"});
  131.      */
  132.     public function categoryItemList(Request $request)
  133.     {
  134.         // 初期値設定
  135.         $data null;
  136.         $suffix = !empty($_REQUEST) ? hash('sha256'base64_encode(serialize($_REQUEST))) : '';
  137.         $dataCacheId "searchpop_searchlist_by_category__data__{$suffix}";
  138.         // キャッシュ可否判定
  139.         if ($this->lmHelper->useCache()) {
  140.             // キャッシュロード
  141.             $data $this->lmHelper->loadCache($dataCacheId$request);
  142.         }
  143.         if (!$data) {
  144.             // パラメータ
  145.             $params = array(
  146.                 'main_category_id'         => (int) $request->get('main_category_id'null),
  147.                 'category_id'              => (int) $request->get('category_id'null),
  148.                 'category_group_only_main' => $request->get('category_group_only_main'null),
  149.                 'max_display_cnt'          => $request->get('display_max'5),
  150.             );
  151.             // 商品リスト(カテゴリ検索)
  152.             $data $this->GoodsService->searchItemListByMainCategoryId($params);
  153.             // キャッシュに保存
  154.             $this->lmHelper->saveCache($dataCacheId$data);
  155.         }
  156.         return $this->jsonResponse(json_encode($data));
  157.     }
  158. }