<?php
namespace Customize\Controller;
use Customize\Controller\LM\LmAbstractController;
use Customize\Service\CommonService;
use Customize\Service\GoodsService;
use Customize\Service\LmHelper;
use Lm\Service\Db\SqlService;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
class SearchPopController extends LmAbstractController
{
/**
* @var GoodsService $GoodsService
*/
protected $GoodsService;
public function __construct(CommonService $commonService,
LmHelper $lmHelper,
GoodsService $goodsService)
{
//
parent::__construct($commonService, $lmHelper);
//
$this->GoodsService = $goodsService;
}
/**
* サーチPOP - 指定されたキーワードにて商品一覧を検索する
*
* @param Request $request
* @return array|null
* @Route("/search-pop/item-list", name="search-pop/item-list", methods={"POST"});
*/
public function itemList(Request $request)
{
// 初期値設定
$data = null;
$suffix = !empty($_REQUEST) ? hash('sha256', base64_encode(serialize($_REQUEST))) : '';
$dataCacheId = "searchpop_searchlist__data__{$suffix}";
// キャッシュ可否判定
if ($this->lmHelper->useCache()) {
// キャッシュロード
$data = $this->lmHelper->loadCache($dataCacheId, $request);
}
if (!$data) {
// パラメータ
$params = array(
'searchtext' => $this->lmHelper->displayText($request->get('searchtext', '')),
'keywords' => $this->lmHelper->getKeywords($request->get('searchtext', '')),
'max_display_cnt' => $request->get('display_max', '5'),
'start' => $request->get('no', '0'),
'order_type' => $request->get('order_type', '2'),
);
// 商品検索
$data = $this->GoodsService->searchItemListByKeyword($params);
// キャッシュに保存
$this->lmHelper->saveCache($dataCacheId, $data);
}
return $this->jsonResponse(json_encode($data));
}
/**
* サーチPOP - 指定されたキーワードにてカテゴリ一覧を検索する
*
* @param Request $request
* @return array|null
* @Route("/search-pop/category-list", name="search-pop/category-list", methods={"POST"});
*/
public function categoryList(Request $request)
{
// 初期値設定
$data = null;
$suffix = !empty($_REQUEST) ? hash('sha256', base64_encode(serialize($_REQUEST))) : '';
$dataCacheId = "searchpop_search_category__data__{$suffix}";
// キャッシュ可否判定
if ($this->lmHelper->useCache()) {
// キャッシュロード
$data = $this->lmHelper->loadCache($dataCacheId, $request);
}
if (!$data) {
// パラメータ
$params = array(
'searchtext' => $this->lmHelper->displayText($request->get('searchtext', '')),
'keywords' => $this->lmHelper->getKeywords($request->get('searchtext', ''), false),
'category_type' => $request->get('category_type', 'normal'),
'max_display_cnt' => $request->get('display_max', '5'),
'start' => $request->get('no', '0'),
);
// カテゴリリスト
$data = $this->GoodsService->searchCategoryListByKeyword($params);
// キャッシュに保存
$this->lmHelper->saveCache($dataCacheId, $data);
}
return $this->jsonResponse(json_encode($data));
}
/**
* サーチPOP - 指定されたキーワードにてコラム一覧を検索する
*
* @param Request $request
* @return array|null
* @Route("/search-pop/column-list", name="search-pop/column-list", methods={"POST"});
*/
public function columnList(Request $request)
{
// 初期値設定
$data = null;
$suffix = !empty($_REQUEST) ? hash('sha256', base64_encode(serialize($_REQUEST))) : '';
$dataCacheId = "searchpop_search_column__data__{$suffix}";
// キャッシュ可否判定
if ($this->lmHelper->useCache()) {
// キャッシュロード
$data = $this->lmHelper->loadCache($dataCacheId, $request);
}
if (!$data) {
// パラメータ
$params = array(
'searchtext' => $this->lmHelper->displayText($request->get('searchtext', '')),
'keywords' => $this->lmHelper->getKeywords($request->get('searchtext', ''), false),
'max_display_cnt' => $request->get('display_max', '5'),
);
// カラムリスト
$data = $this->GoodsService->searchColumnListByKeyword($params);
// キャッシュに保存
$this->lmHelper->saveCache($dataCacheId, $data);
}
return $this->jsonResponse(json_encode($data));
}
/**
* サーチPOP - 指定されたカテゴリに属する商品一覧の取得
*
* @param Request $request
* @return array|null
* @Route("/search-pop/item-list-by-category", name="search-pop/item-list-by-category", methods={"POST"});
*/
public function categoryItemList(Request $request)
{
// 初期値設定
$data = null;
$suffix = !empty($_REQUEST) ? hash('sha256', base64_encode(serialize($_REQUEST))) : '';
$dataCacheId = "searchpop_searchlist_by_category__data__{$suffix}";
// キャッシュ可否判定
if ($this->lmHelper->useCache()) {
// キャッシュロード
$data = $this->lmHelper->loadCache($dataCacheId, $request);
}
if (!$data) {
// パラメータ
$params = array(
'main_category_id' => (int) $request->get('main_category_id', null),
'category_id' => (int) $request->get('category_id', null),
'category_group_only_main' => $request->get('category_group_only_main', null),
'max_display_cnt' => $request->get('display_max', 5),
);
// 商品リスト(カテゴリ検索)
$data = $this->GoodsService->searchItemListByMainCategoryId($params);
// キャッシュに保存
$this->lmHelper->saveCache($dataCacheId, $data);
}
return $this->jsonResponse(json_encode($data));
}
}