search.php 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727
  1. <?php
  2. //use Shopnc\Tpl;
  3. defined('InShopNC') or exit('Access Invalid!');
  4. require_once (BASE_ROOT_PATH . '/helper/category_helper.php');
  5. require_once (BASE_ROOT_PATH . '/helper/history_helper.php');
  6. require_once (BASE_ROOT_PATH . '/helper/special_helper.php');
  7. require_once (BASE_ROOT_PATH . '/helper/goods_helper.php');
  8. require_once (BASE_ROOT_PATH . '/helper/search/tcp_client.php');
  9. define('MOBILE_SERVER',true);
  10. class search_param
  11. {
  12. private $mKeyWord;
  13. private $mBrandId;
  14. private $mHotId;
  15. public function __construct($param)
  16. {
  17. $this->mKeyWord = '';
  18. $this->mBrandId = 0;
  19. $this->mHotId = 0;
  20. if (!empty(trim($param['keyword']))) {
  21. $this->mKeyWord = trim(urldecode($param['keyword']));
  22. $helper = new history_helper();
  23. $helper->add_word($this->mKeyWord);
  24. }
  25. if (intval($param['brand_id']) > 0) {
  26. $this->mBrandId = intval($param['brand_id']);
  27. }
  28. if (!empty(trim($param['hot_id']))) {
  29. $this->mHotId = intval($param['hot_id']);
  30. }
  31. }
  32. public function format()
  33. {
  34. if(empty($this->mKeyWord || $this->mBrandId == 0 || $this->mHotId == 0)) {
  35. return false;
  36. }
  37. else {
  38. $result = [];
  39. $result['keyword'] = $this->mKeyWord;
  40. $result['brand_id'] = $this->mBrandId;
  41. $result['hot_id'] = $this->mHotId;
  42. return $result;
  43. }
  44. }
  45. public function brand_id() {
  46. return $this->mBrandId;
  47. }
  48. }
  49. class searchControl extends mobileHomeControl
  50. {
  51. public function __construct()
  52. {
  53. parent::__construct();
  54. }
  55. public function indexOp()
  56. {
  57. $param = new search_param($_GET);
  58. $params = $param->format();
  59. if($params == false) {
  60. return self::outerr(errcode::ErrParamter);
  61. } else {
  62. $result = search\tcp_client::instance()->get_result($params);
  63. }
  64. if(empty($result))
  65. {
  66. self::outsuccess(array('special_list' => array(),
  67. 'summary' => array(),
  68. 'groupbuy' => array(),
  69. 'limitime' => array(),
  70. 'bundling' => array(),
  71. 'mobile_page' => mobile_page(0)));
  72. }
  73. $cids = $result['cids'];
  74. $order = $this->order($_GET['sort'], $_GET['order']);
  75. $model_goods = Model('goods');
  76. $goods_list = $model_goods->getGoodsListByColorDistinct(array('goods_commonid' => array('in',$cids)),
  77. goods_helper::fieldstr, $order, $this->page_size());
  78. $page_count = $model_goods->gettotalpage();
  79. $model_goods->cls();
  80. if(empty($goods_list))
  81. {
  82. $goods_ids = array();
  83. self::outsuccess(array('special_list' => $goods_ids,
  84. 'summary' => array(),
  85. 'groupbuy' => array(),
  86. 'limitime' => array(),
  87. 'bundling' => array(),
  88. 'mobile_page' => mobile_page($page_count)));
  89. }
  90. else
  91. {
  92. $blocks = [];
  93. if($this->page_no() == 1)
  94. {
  95. if($param->brand_id() != 0)
  96. {
  97. $block = special_helper::format_brand_sale($param->brand_id(),false);
  98. if(!empty($block)) {
  99. $blocks[] = $block;
  100. }
  101. } else {
  102. $block = special_helper::format_brand($result['brands']);
  103. if(!empty($block)) {
  104. $blocks[] = $block;
  105. }
  106. }
  107. $block = special_helper::format_category($result['hots']);
  108. if(!empty($block)) {
  109. $blocks[] = $block;
  110. }
  111. }
  112. foreach ($goods_list as $goods) {
  113. $goods_id = intval($goods['goods_id']);
  114. $goods_ids[] = $goods_id;
  115. }
  116. $block = special_helper::format_goods($goods_ids,"");
  117. $blocks[] = $block;
  118. $helper = new goods_helper();
  119. $ret = $helper->get_summaryex($goods_list,$related_goods);
  120. self::outsuccess(array('special_list' => $blocks,
  121. 'summary' => $ret['summary'],
  122. 'groupbuy' => $ret['groupbuy'],
  123. 'limitime' => $ret['limitime'],
  124. 'bundling' => $ret['bundling'],
  125. 'mobile_page' => mobile_page($page_count)));
  126. }
  127. }
  128. private function order($field, $order)
  129. {
  130. if(empty($field)) {
  131. return 'is_own_shop desc,goods_click desc';
  132. }
  133. else
  134. {
  135. if(empty($order) || $order == 'desc') {
  136. $order = 'desc';
  137. } else {
  138. $order = 'asc';
  139. }
  140. if ($field == 'salenum') {
  141. return 'goods_salenum ' . $order;
  142. } elseif($field == 'price') {
  143. return 'goods_price ' . $order;
  144. } else {
  145. return 'goods_click ' . $order;
  146. }
  147. }
  148. }
  149. public function suggest_wordsOp()
  150. {
  151. $keyword = $_GET['keyword'];
  152. if(empty($keyword)) {
  153. return self::outerr(errcode::ErrParamter);
  154. }
  155. else
  156. {
  157. $result = search\tcp_client::instance()->get_words($keyword);
  158. if($result == false) {
  159. $result = null;
  160. $pages = 0;
  161. } else {
  162. $result = $this->separate_page($result,$pages);
  163. }
  164. return self::outsuccess(array('words' => $result,'mobile_page' => mobile_page($pages)));
  165. }
  166. }
  167. public function historyOp()
  168. {
  169. $helper = new history_helper();
  170. $history = $helper->histories();
  171. $hot_search = @explode(',',C('hot_search'));
  172. $blocks = [];
  173. if(!empty($history)) {
  174. $blocks[] = special_helper::format_keyword($history,'历史搜索');
  175. }
  176. if(!empty($hot_search)) {
  177. $blocks[] = special_helper::format_keyword($hot_search,'热门搜索');
  178. }
  179. $guslike = $this->guesslike();
  180. if($guslike == false)
  181. {
  182. return self::outsuccess(array('special_list' => $blocks,
  183. 'mobile_page' => mobile_page(1)));
  184. }
  185. else
  186. {
  187. $blocks = array_merge($blocks,$guslike['special_list']);
  188. $guslike['special_list'] = $blocks;
  189. $guslike['mobile_page'] = mobile_page(1);
  190. return self::outsuccess($guslike);
  191. }
  192. }
  193. public function guesslike()
  194. {
  195. $goodslist = Model('goods_browse')->getGuessLikeGoods($_SESSION['member_id'],10);
  196. if(empty($goodslist)) {
  197. return false;
  198. }
  199. else
  200. {
  201. $goods_ids = [];
  202. foreach ($goodslist as $value) {
  203. $goods_ids[] = intval($value);
  204. }
  205. $model_goods = Model('goods');
  206. $goods_list = $model_goods->getGoodsListByColorDistinct(array('goods_id' => array('in',$goods_ids)),
  207. goods_helper::fieldstr);
  208. $blocks = [];
  209. $block = special_helper::format_goods($goods_ids,"~猜你喜欢~");
  210. $blocks[] = $block;
  211. $helper = new goods_helper();
  212. $ret = $helper->get_summaryex($goods_list,$related_goods);
  213. return array('special_list' => $blocks,
  214. 'summary' => $ret['summary'],
  215. 'groupbuy' => $ret['groupbuy'],
  216. 'limitime' => $ret['limitime'],
  217. 'bundling' => $ret['bundling']);
  218. }
  219. }
  220. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  221. /**
  222. * @return array
  223. */
  224. private function condition()
  225. {
  226. $condition = array();
  227. //分类查询
  228. if (!empty(trim($_GET['gc_id']))) {
  229. $condition['gc_id'] = intval($_GET['gc_id']);
  230. }
  231. // 关键字
  232. if (!empty(trim($_GET['keyword']))) {
  233. $word = trim(urldecode($_GET['keyword']));
  234. $helper = new history_helper();
  235. $helper->add_word($word);
  236. $condition['goods_name|goods_jingle'] = array('like', '%' . urldecode($_GET['keyword']) . '%');
  237. }
  238. // 品牌查询
  239. if (!empty(trim($_GET['brand_id']))) {
  240. $condition['brand_id'] = intval($_GET['brand_id']);
  241. }
  242. // 功效查询
  243. if (!empty(trim($_GET['efficacy_id']))) {
  244. $condition['efficacy_id'] = intval($_GET['efficacy_id']);
  245. }
  246. //重新组合后的分类查询
  247. if (!empty(trim($_GET['hot_id']))) {
  248. $id = intval($_GET['hot_id']);
  249. $cids = category_helper::instance()->cids($id);
  250. $condition['gc_id'] = array('in', $cids);
  251. }
  252. return $condition;
  253. }
  254. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  255. public function goods_listOp()
  256. {
  257. $model_goods = Model('goods');
  258. $condition = $this->condition();
  259. //排序方式
  260. $order = $this->get_order($_GET['key'], $_GET['order']);
  261. $goods_list = $model_goods->getGoodsListByColorDistinct($condition, goods_helper::fieldstr, $order, $this->page_size());
  262. $page_count = $model_goods->gettotalpage();
  263. $model_goods->cls();
  264. $goods_ids = array();
  265. foreach($goods_list as $val) {
  266. array_push($goods_ids,$val['goods_id']);
  267. }
  268. $helper = new goods_helper();
  269. $goods_list = $helper->get_infos($goods_ids);
  270. self::outsuccess(array('goods_list' => $goods_list, 'mobile_page' => mobile_page($page_count)));
  271. }
  272. /**
  273. * 商品列表排序方式
  274. */
  275. private function get_order($key, $order)
  276. {
  277. $result = 'is_own_shop desc,goods_commonid desc';
  278. if (!empty($key))
  279. {
  280. $sequence = 'desc';
  281. if ($order == 1) {
  282. $sequence = 'asc';
  283. }
  284. switch ($key)
  285. {
  286. case '1' : //销量
  287. $result = 'goods_salenum' . ' ' . $sequence;
  288. break;
  289. case '2' : //浏览量
  290. $result = 'goods_click' . ' ' . $sequence;
  291. break;
  292. case '3' : //价格
  293. $result = 'goods_price' . ' ' . $sequence;
  294. break;
  295. }
  296. }
  297. return $result;
  298. }
  299. /**
  300. * 商品详细页扩展
  301. *
  302. * 输入参数:
  303. * goods_id:商品id
  304. *
  305. */
  306. public function goods_commonOp()
  307. {
  308. $goods_id = intval($_GET ['goods_id']);
  309. if (empty($_GET ['goods_id']) || $goods_id < 0) {
  310. return joutput_error(errcode::ErrParamter, "goods_id = {$goods_id} must be > 0.");
  311. }
  312. // 商品详细信息
  313. $model_goods = Model('goods')->cls();
  314. $goods_detail = $model_goods->getGoodsSku($goods_id);
  315. if (empty($goods_detail)) {
  316. return joutput_error(errcode::ErrGoodsNotExist);
  317. }
  318. //推荐商品
  319. $model_store = Model('store')->cls();
  320. $store_info = $model_store->getStoreInfoByID($goods_detail['goods_info']['store_id']);
  321. $goods_detail['store_info']['store_id'] = $store_info['store_id'];
  322. $goods_detail['store_info']['store_name'] = $store_info['store_name'];
  323. $goods_detail['store_info']['member_id'] = $store_info['member_id'];
  324. //显示QQ及旺旺 好商城V3
  325. $goods_detail['store_info']['store_qq'] = $store_info['store_qq'];
  326. $goods_detail['store_info']['store_ww'] = $store_info['store_ww'];
  327. $goods_detail['store_info']['store_phone'] = $store_info['store_phone'];
  328. $goods_detail['store_info']['member_name'] = $store_info['member_name'];
  329. $goods_detail['store_info']['avatar'] = getMemberAvatarForID($store_info['member_id']);
  330. //商品详细信息处理
  331. $goods_detail = $this->_goods_common_extend($goods_detail);
  332. joutput_data($goods_detail);
  333. }
  334. /**
  335. * 商品详细信息处理
  336. */
  337. private function _goods_common_extend($goods_detail)
  338. {
  339. //商品链接
  340. $goods_detail['goods_info']['goods_url'] = urlShop('goods', 'index', array('goods_id' => $goods_detail['request_goods_id']));
  341. //整理数据
  342. unset($goods_detail['goods_info']['goods_commonid']);
  343. unset($goods_detail['goods_info']['gc_id']);
  344. unset($goods_detail['goods_info']['gc_name']);
  345. unset($goods_detail['goods_info']['store_name']);
  346. unset($goods_detail['goods_info']['brand_id']);
  347. unset($goods_detail['goods_info']['brand_name']);
  348. unset($goods_detail['goods_info']['type_id']);
  349. unset($goods_detail['goods_info']['goods_image']);
  350. //unset($goods_detail['goods_info']['goods_body']);
  351. unset($goods_detail['goods_info']['mobile_body']);
  352. unset($goods_detail['goods_info']['goods_state']);
  353. unset($goods_detail['goods_info']['goods_stateremark']);
  354. unset($goods_detail['goods_info']['goods_verify']);
  355. unset($goods_detail['goods_info']['goods_verifyremark']);
  356. unset($goods_detail['goods_info']['goods_lock']);
  357. unset($goods_detail['goods_info']['goods_addtime']);
  358. unset($goods_detail['goods_info']['goods_edittime']);
  359. unset($goods_detail['goods_info']['goods_selltime']);
  360. unset($goods_detail['goods_info']['goods_show']);
  361. unset($goods_detail['goods_info']['goods_commend']);
  362. unset($goods_detail['goods_info']['explain']);
  363. unset($goods_detail['goods_info']['cart']);
  364. unset($goods_detail['goods_info']['buynow_text']);
  365. unset($goods_detail['goods_info']['spec_value']);
  366. unset($goods_detail['goods_info']['spec_name']);
  367. unset($goods_detail['goods_info']['goods_spec']);
  368. //unset($goods_detail['goods_info']['goods_attr']);
  369. unset($goods_detail['groupbuy_info']);
  370. unset($goods_detail['xianshi_info']);
  371. return $goods_detail;
  372. }
  373. /**
  374. * 商品详细页
  375. *
  376. * 输入参数:
  377. * goods_id: 商品id
  378. * from:目前说明是来自app还是h5
  379. */
  380. public function goods_detailOp()
  381. {
  382. $goods_id = intval($_GET ['goods_id']);
  383. $from = $_GET['from'];
  384. // 商品详细信息
  385. $model_goods = Model('goods');
  386. $goods_detail = $model_goods->getGoodsDetail($goods_id);
  387. if (empty($goods_detail)) {
  388. return joutput_error(errcode::ErrGoodsNotExist);
  389. }
  390. // 推荐商品
  391. $model_store = Model('store');
  392. $hot_sales = $model_store->getHotSalesList($goods_detail['goods_info']['store_id'], 6);
  393. $goods_commend_list = array();
  394. foreach ($hot_sales as $value) {
  395. $goods_commend = array();
  396. $goods_commend['goods_id'] = $value['goods_id'];
  397. $goods_commend['goods_name'] = $value['goods_name'];
  398. $goods_commend['goods_price'] = $value['goods_price'];
  399. $goods_commend['goods_image_url'] = cthumb($value['goods_image'], 240);
  400. $goods_commend_list[] = $goods_commend;
  401. }
  402. $goods_detail['goods_commend_list'] = $goods_commend_list;
  403. $store_info = $model_store->getStoreInfoByID($goods_detail['goods_info']['store_id']);
  404. $goods_detail['store_info']['store_id'] = $store_info['store_id'];
  405. $goods_detail['store_info']['store_name'] = $store_info['store_name'];
  406. $goods_detail['store_info']['member_id'] = $store_info['member_id'];
  407. //显示QQ及旺旺 好商城V3
  408. $goods_detail['store_info']['store_qq'] = $store_info['store_qq'];
  409. $goods_detail['store_info']['store_ww'] = $store_info['store_ww'];
  410. $goods_detail['store_info']['store_phone'] = $store_info['store_phone'];
  411. $goods_detail['store_info']['member_name'] = $store_info['member_name'];
  412. $goods_detail['store_info']['avatar'] = getMemberAvatarForID($store_info['member_id']);
  413. //商品详细信息处理
  414. $goods_detail = $this->_goods_detail_extend($goods_detail);
  415. if ($from === 'app') {
  416. $goods_detail['goods_info']['spec'] = $this->_parse_spec($goods_detail['goods_info']['spec_name'], $goods_detail['goods_info']['spec_value'], $goods_detail['spec_image'], $goods_detail['spec_list']);
  417. $goods_detail['goods_info']['attributes'] = $this->_parse_attributes($goods_detail['goods_info']['goods_attr']);
  418. $goods_detail['goods_info']['goods_spec_obj'] = $this->_parse_goods_spec($goods_detail['goods_info']['goods_spec']);
  419. $goods_detail['UPLOAD_SITE_URL'] = $GLOBALS['setting_config']['upload_site_url'];
  420. }
  421. //v3-b11 抢购商品是否开始
  422. $goods_info = $goods_detail['goods_info'];
  423. //print_r($goods_info);
  424. $IsHaveBuy = 0;
  425. if (!empty($_COOKIE['username'])) {
  426. $model_member = Model('member');
  427. $member_info = $model_member->getMemberInfo(array('member_name' => $_COOKIE['username']));
  428. $buyer_id = $member_info['member_id'];
  429. $promotion_type = $goods_info["promotion_type"];
  430. if ($promotion_type == 'groupbuy') {
  431. //检测是否限购数量
  432. $upper_limit = $goods_info["upper_limit"];
  433. if ($upper_limit > 0) {
  434. //查询些会员的订单中,是否已买过了
  435. $model_order = Model('order');
  436. //取商品列表
  437. $order_goods_list = $model_order->getOrderGoodsList(array('goods_id' => $goods_id, 'buyer_id' => $buyer_id, 'goods_type' => 2));
  438. if ($order_goods_list) {
  439. //取得上次购买的活动编号(防一个商品参加多次团购活动的问题)
  440. $promotions_id = $order_goods_list[0]["promotions_id"];
  441. //用此编号取数据,检测是否这次活动的订单商品。
  442. $model_groupbuy = Model('groupbuy');
  443. $groupbuy_info = $model_groupbuy->getGroupbuyInfo(array('groupbuy_id' => $promotions_id));
  444. if ($groupbuy_info) {
  445. $IsHaveBuy = 1;
  446. } else {
  447. $IsHaveBuy = 0;
  448. }
  449. }
  450. }
  451. }
  452. }
  453. $goods_detail['IsHaveBuy'] = $IsHaveBuy;
  454. //v3-b11 end
  455. joutput_data($goods_detail);
  456. }
  457. /**
  458. * 商品详细信息处理
  459. */
  460. private function _goods_detail_extend($goods_detail)
  461. {
  462. //整理商品规格
  463. unset($goods_detail['spec_list']);
  464. $goods_detail['spec_list'] = $goods_detail['spec_list_mobile'];
  465. unset($goods_detail['spec_list_mobile']);
  466. //整理商品图片
  467. unset($goods_detail['goods_image']);
  468. $goods_detail['goods_image'] = implode(',', $goods_detail['goods_image_mobile']);
  469. unset($goods_detail['goods_image_mobile']);
  470. //商品链接
  471. $goods_detail['goods_info']['goods_url'] = urlShop('goods', 'index', array('goods_id' => $goods_detail['goods_info']['goods_id']));
  472. //整理数据
  473. unset($goods_detail['goods_info']['goods_commonid']);
  474. unset($goods_detail['goods_info']['gc_id']);
  475. unset($goods_detail['goods_info']['gc_name']);
  476. unset($goods_detail['goods_info']['store_name']);
  477. unset($goods_detail['goods_info']['brand_id']);
  478. unset($goods_detail['goods_info']['brand_name']);
  479. unset($goods_detail['goods_info']['type_id']);
  480. unset($goods_detail['goods_info']['goods_image']);
  481. unset($goods_detail['goods_info']['goods_body']);
  482. unset($goods_detail['goods_info']['mobile_body']);
  483. unset($goods_detail['goods_info']['goods_state']);
  484. unset($goods_detail['goods_info']['goods_stateremark']);
  485. unset($goods_detail['goods_info']['goods_verify']);
  486. unset($goods_detail['goods_info']['goods_verifyremark']);
  487. unset($goods_detail['goods_info']['goods_lock']);
  488. unset($goods_detail['goods_info']['goods_addtime']);
  489. unset($goods_detail['goods_info']['goods_edittime']);
  490. unset($goods_detail['goods_info']['goods_selltime']);
  491. unset($goods_detail['goods_info']['goods_show']);
  492. unset($goods_detail['goods_info']['goods_commend']);
  493. unset($goods_detail['goods_info']['explain']);
  494. unset($goods_detail['goods_info']['cart']);
  495. unset($goods_detail['goods_info']['buynow_text']);
  496. unset($goods_detail['groupbuy_info']);
  497. //unset($goods_detail['xianshi_info']);
  498. return $goods_detail;
  499. }
  500. /**
  501. * 解析spec字段
  502. *
  503. * @param $spec_name
  504. * @param $spec_value
  505. * @param array $spec_image
  506. * @param array $spec_list
  507. * @return array
  508. */
  509. private function _parse_spec($spec_name, $spec_value, $spec_image = [], $spec_list = [])
  510. {
  511. $spec = [];
  512. foreach ($spec_name as $key => $value) {
  513. $spec_item = [];
  514. $spec_item['spec_id'] = $key;
  515. $spec_item['spec_name'] = $value;
  516. if (!empty($spec_value[$key])) {
  517. $spec_item['value_list'] = [];
  518. foreach ($spec_value[$key] as $v_key => $v) {
  519. $value_item = [];
  520. $value_item['value_id'] = $v_key;
  521. $value_item['value_name'] = $v;
  522. $value_item['value_image'] = empty($spec_image[$v_key]) ? '' : $spec_image[$v_key];
  523. $value_item['value'] = empty($spec_list[$v_key]) ? '' : $spec_list[$v_key];
  524. array_push($spec_item['value_list'], $value_item);
  525. }
  526. }
  527. array_push($spec, $spec_item);
  528. }
  529. return $spec;
  530. }
  531. /**
  532. * 解析商品属性字段
  533. *
  534. * @param $goods_attr
  535. * @return array
  536. */
  537. private function _parse_attributes($goods_attr)
  538. {
  539. $attributes = [];
  540. foreach ($goods_attr as $key => $value) {
  541. $attribute_item = [];
  542. $attribute_item['goods_attr_id'] = $key;
  543. $attribute_item['goods_attr_value'] = [];
  544. if (!empty($value)) {
  545. foreach ($value as $v_key => $v) {
  546. $attribute_attr = [];
  547. if ($v_key === 'name') {
  548. $attribute_item['goods_attr_name'] = $v;
  549. } else {
  550. $attribute_attr['value_id'] = $v_key;
  551. $attribute_attr['value_name'] = $v;
  552. array_push($attribute_item['goods_attr_value'], $attribute_attr);
  553. }
  554. }
  555. }
  556. array_push($attributes, $attribute_item);
  557. }
  558. return $attributes;
  559. }
  560. /**
  561. * 解析功效
  562. *
  563. * @param $goods_attr
  564. * @return mixed
  565. */
  566. private function _parse_for_efficacy($goods_attr)
  567. {
  568. foreach ($goods_attr as $key => $val) {
  569. $attr_item['goods_attr_id'] = intval($key);
  570. $attr_item['goods_attr_name'] = $val['name'];
  571. if ($attr_item['goods_attr_name'] === '功效') {
  572. $goods_attr_value = array();
  573. foreach ($val as $id => $name) {
  574. if ($id !== 'name') {
  575. $val_item['value_id'] = intval($id);
  576. $val_item['value_name'] = $name;
  577. array_push($goods_attr_value, $val_item);
  578. }
  579. }
  580. $attr_item['goods_attr_value'] = $goods_attr_value;
  581. break;
  582. }
  583. }
  584. return $attr_item;
  585. }
  586. /**
  587. * 商品规格序列化解析
  588. *
  589. * @param $goods_spec
  590. * @return array
  591. */
  592. private function _parse_goods_spec($goods_spec)
  593. {
  594. $goods_spec_obj = [];
  595. foreach ($goods_spec as $key => $value) {
  596. $spec_item = [];
  597. $spec_item['spec_value'] = $key;
  598. $spec_item['spec_name'] = $value;
  599. array_push($goods_spec_obj, $spec_item);
  600. }
  601. return $goods_spec_obj;
  602. }
  603. /**
  604. * 商品详细页(未启用)
  605. */
  606. public function goods_bodyOp()
  607. {
  608. return joutput_error(errcode::ErrProtocolDisabled);
  609. $goods_id = intval($_GET ['goods_id']);
  610. $out_type = $_GET ['type'];
  611. $model_goods = Model('goods');
  612. if (empty($_GET ['goods_commonid'])) {
  613. $goods_info = $model_goods->getGoodsInfoByID($goods_id, 'goods_commonid');
  614. } else {
  615. $goods_info['goods_commonid'] = intval($_GET ['goods_commonid']);
  616. }
  617. $goods_common_info = $model_goods->getGoodeCommonInfoByID($goods_info['goods_commonid']);
  618. if ($out_type === 'json') {
  619. $goods_common_info['goods_attr'] = $this->_parse_attributes(unserialize($goods_common_info['goods_attr']));
  620. $goods_common_info['spec_name'] = unserialize($goods_common_info['spec_name']);
  621. $goods_common_info['spec_value'] = unserialize($goods_common_info['spec_value']);
  622. $goods_common_info['spec'] = $this->_parse_spec($goods_common_info['spec_name'], $goods_common_info['spec_value']);
  623. $goods_common_info['goods_body'] = ''; //base64_encode($goods_common_info['goods_body']);
  624. $goods_common_info['mobile_body'] = '';//base64_encode($goods_common_info['mobile_body']);
  625. joutput_data($goods_common_info);
  626. } else {
  627. Tpl::output('goods_common_info', $goods_common_info);
  628. Tpl::showpage('goods_body');
  629. }
  630. }
  631. /**
  632. * 获取detail(未启用)
  633. */
  634. public function detailOp()
  635. {
  636. $goods_id = intval($_GET['goods_id']);
  637. if (empty($_GET['goods_id']) || $goods_id <= 0) {
  638. if (!empty($_GET['goods_commonid'])) {
  639. $commonid = intval($_GET['goods_commonid']);
  640. }
  641. } else {
  642. $items = Model()->table('goods')->field('goods_commonid')->where(array('goods_id' => $goods_id))->limit(1)->select();
  643. if (!empty($items) && count($items) > 0) {
  644. $commonid = intval($items[0]['goods_commonid']);
  645. }
  646. }
  647. if (isset($commonid) && $commonid > 0) {
  648. $items = Model()->table('goods_common')->field('goods_body')->where(array('goods_commonid' => $commonid))->select();
  649. if (!empty($items) && count($items) > 0) {
  650. Tpl::output('goods_body', $items[0]['goods_body']);
  651. }
  652. }
  653. Tpl::showpage('goods_detail');
  654. }
  655. }