Ejemplo n.º 1
0
 public function index()
 {
     $ytop = $latitude_top = floatval($GLOBALS['request']['latitude_top']);
     //最上边纬线值 ypoint
     $ybottom = $latitude_bottom = floatval($GLOBALS['request']['latitude_bottom']);
     //最下边纬线值 ypoint
     $xleft = $longitude_left = floatval($GLOBALS['request']['longitude_left']);
     //最左边经度值  xpoint
     $xright = $longitude_right = floatval($GLOBALS['request']['longitude_right']);
     //最右边经度值 xpoint
     $ypoint = $m_latitude = doubleval($GLOBALS['request']['m_latitude']);
     //ypoint
     $xpoint = $m_longitude = doubleval($GLOBALS['request']['m_longitude']);
     //xpoint
     $type = intval($GLOBALS['request']['type']);
     //-1:全部,0:优惠券;1:活动;2:团购;3:代金券;4:商家
     $pi = 3.14159265;
     //圆周率
     $r = 6378137;
     //地球平均半径(米)
     $field_append = ", (ACOS(SIN(({$ypoint} * {$pi}) / 180 ) *SIN((ypoint * {$pi}) / 180 ) +COS(({$ypoint} * {$pi}) / 180 ) * COS((ypoint * {$pi}) / 180 ) *COS(({$xpoint} * {$pi}) / 180 - (xpoint * {$pi}) / 180 ) ) * {$r}) as distance ";
     $condition = "  ypoint > {$ybottom} and ypoint < {$ytop} and xpoint > {$xleft} and xpoint < {$xright} ";
     $limit = 10;
     if ($type == -1 || $type == 0) {
         //查优惠
         $now = get_gmtime();
         $sql = "select id,name,icon,xpoint,ypoint {$field_append} from " . DB_PREFIX . "youhui";
         $where = " where is_effect = 1 and begin_time<" . $now . " and (end_time = 0 or end_time > " . $now . ") ";
         $where .= " and " . $condition;
         $sql .= $where;
         $sql .= " limit {$limit} ";
         $list = $GLOBALS['db']->getAll($sql);
         $youhui_list = array();
         foreach ($list as $item) {
             $item['icon'] = get_abs_img_root($item['icon']);
             $item['type'] = 0;
             $item['distance'] = round($item['distance']);
             $youhui_list[] = $item;
         }
     }
     if ($type == -1 || $type == 1) {
         //查活动
         $res = m_search_event_list($limit, 0, 0, $condition, " distance asc ", $field_append);
         $event_list = array();
         foreach ($res['list'] as $item) {
             $item['icon'] = get_abs_img_root($item['icon']);
             $item['type'] = 1;
             $item['distance'] = round($item['distance']);
             $event_list[] = $item;
         }
     }
     if ($type == -1 || $type == 2) {
         //查团购
         $res = m_get_deal_list($limit, 0, 0, array(DEAL_ONLINE), $condition, "distance asc", 0, $field_append);
         $tuan_list = array();
         foreach ($res['list'] as $item) {
             $item['icon'] = get_abs_img_root($item['icon']);
             $item['type'] = 2;
             $item['distance'] = round($item['distance']);
             $tuan_list[] = $item;
         }
     }
     if ($type == -1 || $type == 3) {
         //查代金
         $res = m_search_youhui_list($limit, 0, $condition, " distance asc ", 0, $field_append);
         $dianjin_list = array();
         foreach ($res['list'] as $item) {
             $item['icon'] = get_abs_img_root($item['icon']);
             $item['type'] = 3;
             $item['distance'] = round($item['distance']);
             $dianjin_list[] = $item;
         }
     }
     if ($type == -1 || $type == 4) {
         //查商家
         $sql = "select id,supplier_id,name,address,preview as icon,xpoint,ypoint {$field_append} from   " . DB_PREFIX . "supplier_location  ";
         $sql .= " where " . $condition;
         $sql .= " order by distance asc limit " . $limit;
         $list = $GLOBALS['db']->getAll($sql);
         $merchant_list = array();
         foreach ($list as $item) {
             $item['icon'] = get_abs_img_root($item['icon']);
             $item['type'] = 4;
             $item['id'] = $item['supplier_id'];
             $item['distance'] = round($item['distance']);
             $merchant_list[] = $item;
         }
     }
     if ($type == -1) {
         $result_list = array_merge($youhui_list, $event_list, $tuan_list, $dianjin_list, $merchant_list);
     } elseif ($type = 0) {
         $result_list = $youhui_list;
     } elseif ($type = 1) {
         $result_list = $event_list;
     } elseif ($type = 2) {
         $result_list = $tuan_list;
     } elseif ($type = 3) {
         $result_list = $dianjin_list;
     } elseif ($type = 4) {
         $result_list = $merchant_list;
     }
     if ($result_list) {
         $root['item'] = $result_list;
     } else {
         $root['item'] = array();
     }
     output($root);
 }
Ejemplo n.º 2
0
 public function index()
 {
     require_once APP_ROOT_PATH . 'app/Lib/youhui_lib.php';
     $catalog_id = intval($GLOBALS['request']['catalog_id']);
     //商品分类ID
     $city_id = intval($GLOBALS['request']['city_id']);
     //城市分类ID
     $page = intval($GLOBALS['request']['page']);
     //分页
     $keyword = strim($GLOBALS['request']['keyword']);
     $page = $page == 0 ? 1 : $page;
     $ytop = $latitude_top = floatval($GLOBALS['request']['latitude_top']);
     //最上边纬线值 ypoint
     $ybottom = $latitude_bottom = floatval($GLOBALS['request']['latitude_bottom']);
     //最下边纬线值 ypoint
     $xleft = $longitude_left = floatval($GLOBALS['request']['longitude_left']);
     //最左边经度值  xpoint
     $xright = $longitude_right = floatval($GLOBALS['request']['longitude_right']);
     //最右边经度值 xpoint
     $ypoint = $m_latitude = doubleval($GLOBALS['request']['m_latitude']);
     //ypoint
     $xpoint = $m_longitude = doubleval($GLOBALS['request']['m_longitude']);
     //xpoint
     $page_size = PAGE_SIZE;
     $limit = ($page - 1) * $page_size . "," . $page_size;
     if ($keyword) {
         $kws_div = div_str($keyword);
         foreach ($kws_div as $k => $item) {
             $kws[$k] = str_to_unicode_string($item);
         }
         $ukeyword = implode(" ", $kws);
         $condition = "  (match(tag_match,name_match,locate_match,deal_cate_match) against('" . $ukeyword . "' IN BOOLEAN MODE) or name like '%" . $keyword . "%') ";
     }
     if ($xpoint > 0) {
         $pi = 3.14159265;
         //圆周率
         $r = 6378137;
         //地球平均半径(米)
         $field_append = ", (ACOS(SIN(({$ypoint} * {$pi}) / 180 ) *SIN((ypoint * {$pi}) / 180 ) +COS(({$ypoint} * {$pi}) / 180 ) * COS((ypoint * {$pi}) / 180 ) *COS(({$xpoint} * {$pi}) / 180 - (xpoint * {$pi}) / 180 ) ) * {$r}) as distance ";
         if ($ybottom != 0 && $ytop != 0 && $xleft != 0 && $xright != 0) {
             if ($condition != "") {
                 $condition .= " and ";
             }
             $condition .= "  ypoint > {$ybottom} and ypoint < {$ytop} and xpoint > {$xleft} and xpoint < {$xright} ";
         }
         $order = " distance asc ";
     } else {
         $field_append = "";
         $order = " sort desc ";
     }
     $deals = m_search_youhui_list($limit, intval($catalog_id), $condition, $order, $city_id, $field_append);
     //		$deals = get_goods_list($limit,$catalog_id,"","sort desc",false,$city_id);
     $list = $deals['list'];
     $count = $deals['count'];
     $page_total = ceil($count / $page_size);
     $root = array();
     $root['return'] = 1;
     $goodses = array();
     foreach ($list as $item) {
         //$goods = array();
         $goods = getGoodsArray($item);
         $goods['distance'] = round($goods['distance']);
         $goodses[] = $goods;
     }
     $root['item'] = $goodses;
     $root['page'] = array("page" => $page, "page_total" => $page_total);
     output($root);
 }