Search.php 4.19 KB
<?php

class YHMApi_App_V1_search extends YHMApi_App_V1_Base {

    public static function search(array $params, $fields = "*") {
        //进行搜索参数转换
        if (!empty($params['max_price'])) {
            $params['price'] = floatval($params['min_price']) . ',' . floatval($params['max_price']);
        }
        if (!empty($params['category'])) {
            $params['msort'] = $params['category'];
        }
        if (empty($params['keyword']) || $params['keyword'] == '' || $params['keyword'] == ' ') {
            unset($params['keyword']);
        }
        $params['viewNum'] = $params['num'];
        $params['page'] = floor($params['offset'] / $params['num']) + 1;
        $params['stocknumber'] = 1;
        $params['order_type'] = !empty($params['order_by_type']) && $params['order_by_type'] == 'hot' ? 'hot_number:desc' : 'create_time:desc';
        if ($params['gender'] == 1) {
            $params['gender'] = '1,3';
        } else if ($params['gender'] == 2) {
            $params['gender'] = '2,3';
        } else if ($params['gender'] == 3) {
            unset($params['gender']);
        }
        if (isset($params['quality_level']) && intval($params['quality_level']) != -1) {
            $params['quality'] = $params['quality_level'];
        }
        if (!empty($params['brand_id']) && intval($params['brand_id']) > 0) {
            $params['brand'] = intval($params['brand_id']);
        }
        if (!empty($params['uid'])) {
            $params['searchuid'] = $params['uid'];
        }
        if (!empty($params['store_type'])) {
            $params['storetype'] = $params['store_type'];
        }
        $resultList = array();
        try {
            $searchObj = new YHMSearch_Goods();
            $skcList = $searchObj->getList($params);
            foreach ($skcList as $skc => $goodsName) {
                $resultList[] = self::_getGoodsForList($skc);
            }
        } catch (Exception $ex) {
            return self::result(500, $ex->getMessage());
        }
        return self::result(200, '搜索列表', $resultList);
    }

    /**
     * 搜索卖家
     * @param array $params
     * @param type $fields
     * @return array
     */
    public static function seller(array $params, $fields = "*") {
        $offset = !empty($params['offset']) ? (int) $params['offset'] : '0';
        $num = !empty($params['num']) ? (int) $params['num'] : "10";
        $keyword = empty($params['keyword']) ? '' : $params['keyword'];
        $selectParams = array(
            'keyword' => $keyword,
            'viewNum' => $num,
            'page' => floor($offset / $num) + 1,
            'order_type' => 'star:desc'
        );
        if (!empty($params['uid'])) {
            $selectParams['searchuid'] = $params['uid'];
        }
        if (!empty($params['store_type'])) {
            $selectParams['storetype'] = $params['store_type'];
        }
        if (empty($params['keyword'])) {
            $selectParams['hasstock'] = 1;
            $selectParams['hasgoods'] = 1;
        }

        $storeList = array();
        try {
            $storeSearch = new YHMSearch_Store();
            $storeIdList = $storeSearch->getList($selectParams);
            foreach ($storeIdList as $storeId) {
                $storeData = self::_getStoreForList($storeId);
                $storeList[] = $storeData;
            }
        } catch (Exception $ex) {
            return self::result(500, '搜索服务异常');
        }
        return self::result(200, "搜索卖家列表", $storeList);
    }

    public static function prompt(array $params, $fields = "*") {
        if (empty($params['keyword'])) {
            return self::result(501, '关键词不能为空');
        }
        $keyword = $params['keyword'];
        $retData = array();
        try {
            $suggestObj = new YHMSearch_Suggest();
            $itemList = $suggestObj->getSuggest($keyword);
            if (!empty($itemList)) {
                foreach ($itemList as $itemData) {
                    $retData[] = array('keyword' => $itemData['item']);
                }
            }
        } catch (Exception $ex) {
            return self::result(500, '搜索服务异常');
        }
        return self::result(200, "提示列表", $retData);
    }

}