public function get_merchants_by_long_lat($lat, $long, $around_range = 2000)
 {
     import('@.ORG.longlat');
     $longlat_class = new longlat();
     $location2 = $longlat_class->gpsToBaidu($lat, $long);
     //转换腾讯坐标到百度坐标
     $lat = $location2['lat'];
     $long = $location2['lng'];
     $Model = new Model();
     $sql = "SELECT s.lat, s.long, s.mer_id, s.name as sname, s.store_id, m.name, m.phone, s.adress, m.pic_info, ROUND(6378.138 * 2 * ASIN(SQRT(POW(SIN(({$lat}*PI()/180-`s`.`lat`*PI()/180)/2),2)+COS({$lat}*PI()/180)*COS(`s`.`lat`*PI()/180)*POW(SIN(({$long}*PI()/180-`s`.`long`*PI()/180)/2),2)))*1000) as juli FROM " . C('DB_PREFIX') . "merchant_store AS s INNER JOIN " . C('DB_PREFIX') . "merchant AS m ON s.mer_id=m.mer_id WHERE `s`.`status`=1 AND ROUND(6378.138 * 2 * ASIN(SQRT(POW(SIN(({$lat}*PI()/180-`s`.`lat`*PI()/180)/2),2)+COS({$lat}*PI()/180)*COS(`s`.`lat`*PI()/180)*POW(SIN(({$long}*PI()/180-`s`.`long`*PI()/180)/2),2)))*1000) < '{$around_range}'";
     $result = $Model->query($sql);
     $merchant_image_class = new merchant_image();
     foreach ($result as &$r) {
         $images = explode(";", $r['pic_info']);
         $images = explode(";", $images[0]);
         $r['img'] = $merchant_image_class->get_image_by_path($images[0]);
         $r['url'] = C('config.site_url') . '/wap.php?c=Index&a=index&token=' . $r['mer_id'];
     }
     return $result;
 }
 private function special_keyword($key, $data)
 {
     $return = array();
     if ($key == "附近团购" || $key == "附近订餐") {
         $dateline = time() - 3600 * 2;
         if ($long_lat = D("User_long_lat")->field(true)->where("`open_id`='{$data["FromUserName"]}' AND `dateline`>'{$dateline}'")->find()) {
             import("@.ORG.longlat");
             $longlat_class = new longlat();
             $location2 = $longlat_class->gpsToBaidu($long_lat["lat"], $long_lat["long"]);
             $x = $location2["lat"];
             $y = $location2["lng"];
             if ($key == "附近订餐") {
                 $meals = D("Merchant_store")->field("*, ROUND(6378.138 * 2 * ASIN(SQRT(POW(SIN(({$x}*PI()/180-`lat`*PI()/180)/2),2)+COS({$x}*PI()/180)*COS(`lat`*PI()/180)*POW(SIN(({$y}*PI()/180-`long`*PI()/180)/2),2)))*1000) AS juli")->where("`have_meal`=1")->order("juli ASC")->limit("0, 10")->select();
                 $store_image_class = new store_image();
                 foreach ($meals as $meal) {
                     $images = $store_image_class->get_allImage_by_path($meal["pic_info"]);
                     $meal["image"] = $images ? array_shift($images) : "";
                     $len = 1000 <= $meal["juli"] ? number_format($meal["juli"] / 1000, 1) . "千米" : $meal["juli"] . "米";
                     $return[] = array($meal["name"] . "[" . $meal["adress"] . "]约{$len}", $meal["txt_info"], $meal["image"], $this->config["site_url"] . "/wap.php?g=Wap&c=Meal&a=menu&mer_id=" . $meal["mer_id"] . "&store_id=" . $meal["store_id"] . "");
                 }
             } else {
                 $meals = D("Merchant_store")->field("*, ROUND(6378.138 * 2 * ASIN(SQRT(POW(SIN(({$x}*PI()/180-`lat`*PI()/180)/2),2)+COS({$x}*PI()/180)*COS(`lat`*PI()/180)*POW(SIN(({$y}*PI()/180-`long`*PI()/180)/2),2)))*1000) AS juli")->where("`have_group`=1")->order("juli ASC")->limit("0, 10")->select();
                 $store_image_class = new store_image();
                 foreach ($meals as $meal) {
                     $images = $store_image_class->get_allImage_by_path($meal["pic_info"]);
                     $meal["image"] = $images ? array_shift($images) : "";
                     $len = 1000 <= $meal["juli"] ? number_format($meal["juli"] / 1000, 1) . "千米" : $meal["juli"] . "米";
                     $return[] = array($meal["name"] . "[" . $meal["adress"] . "]约{$len}", $meal["txt_info"], $meal["image"], $this->config["site_url"] . "/wap.php?g=Wap&c=Group&a=shop&store_id=" . $meal["store_id"] . "");
                 }
             }
         }
         if ($return) {
             return array($return, "news");
         } else {
             return array("主人【微赢】已经接收到你的指令请发送您的地理位置(对话框右下角点击+号,然后点击“位置”)给我哈", "text");
         }
     }
     if ($key == "交友") {
         $return[] = array("交友约会", "结交一些朋友吃喝玩乐", $this->config["site_url"] . "/static/images/jiaoyou.jpg", $this->config["site_url"] . "/wap.php?c=Invitation&a=datelist");
         return array($return, "news");
     }
     $platform = D("Platform")->field(true)->where(array("key" => $key))->find();
     if ($platform) {
         $return[] = array($platform["title"], $platform["info"], $this->config["site_url"] . $platform["pic"], $platform["url"]);
     } else {
         $keys = D("Keywords")->field(true)->where(array("keyword" => $key))->order("id DESC")->limit("0,9")->select();
         $lotteryids = $mealids = $groupids = array();
         foreach ($keys as $k) {
             if ($k["third_type"] == "group") {
                 $groupids[] = $k["third_id"];
             } else {
                 if ($k["third_type"] == "Merchant_store") {
                     $mealids[] = $k["third_id"];
                 } else {
                     if ($k["third_type"] == "lottery") {
                         $lotteryids[] = $k["third_id"];
                     }
                 }
             }
         }
         if ($groupids) {
             $list = D("Group")->field(true)->where(array("group_id" => array("in", $groupids)))->select();
             $group_image_class = new group_image();
             foreach ($list as $li) {
                 $image = $group_image_class->get_image_by_path($li["pic"], "s");
                 $return[] = array($li["s_name"], $li["name"], $image, $this->config["site_url"] . "/wap.php?g=Wap&c=Group&a=detail&group_id=" . $li["group_id"] . "");
             }
         }
         if ($mealids) {
             $list = D("Merchant_store")->field(true)->where(array("store_id" => array("in", $mealids)))->select();
             $store_image_class = new store_image();
             foreach ($list as $now_store) {
                 $images = $store_image_class->get_allImage_by_path($now_store["pic_info"]);
                 $now_store["image"] = $images ? array_shift($images) : "";
                 if ($now_store["have_meal"]) {
                     $return[] = array($now_store["name"], $now_store["txt_info"], $now_store["image"], $this->config["site_url"] . "/wap.php?g=Wap&c=Meal&a=menu&mer_id=" . $now_store["mer_id"] . "&store_id=" . $now_store["store_id"] . "");
                 } else {
                     $return[] = array($now_store["name"], $now_store["txt_info"], $now_store["image"], $this->config["site_url"] . "/wap.php?g=Wap&c=Group&a=shop&store_id=" . $now_store["store_id"] . "");
                 }
             }
         }
         if ($lotteryids) {
             $lotterys = D("Lottery")->field(true)->where(array("id" => array("in", $lotteryids), "statdate" => array("lt", time()), "enddate" => array("gt", time())))->select();
             foreach ($lotterys as $lottery) {
                 switch ($lottery["type"]) {
                     case 1:
                         $return[] = array("[活动]" . $lottery["title"], $lottery["info"], $this->config["site_url"] . $lottery["starpicurl"], $this->config["site_url"] . "/wap.php?c=Lottery&a=index&token=" . $lottery["token"] . "&id=" . $lottery["id"] . "");
                         break;
                     case 2:
                         $return[] = array("[活动]" . $lottery["title"], $lottery["info"], $this->config["site_url"] . $lottery["starpicurl"], $this->config["site_url"] . "/wap.php?c=Guajiang&a=index&token=" . $lottery["token"] . "&id=" . $lottery["id"] . "");
                         break;
                     case 3:
                         $return[] = array("[活动]" . $lottery["title"], $lottery["info"], $this->config["site_url"] . $lottery["starpicurl"], $this->config["site_url"] . "/wap.php?c=Coupon&a=index&token=" . $lottery["token"] / "&id=" . $lottery["id"] . "");
                         break;
                     case 4:
                         $return[] = array("[活动]" . $lottery["title"], $lottery["info"], $this->config["site_url"] . $lottery["starpicurl"], $this->config["site_url"] . "/wap.php?c=LuckyFruit&a=index&token=" . $lottery["token"] . "&id=" . $lottery["id"] . "");
                         break;
                     case 5:
                         $return[] = array("[活动]" . $lottery["title"], $lottery["info"], $this->config["site_url"] . $lottery["starpicurl"], $this->config["site_url"] . "/wap.php?c=GoldenEgg&a=index&token=" . $lottery["token"] . "&id=" . $lottery["id"] . "");
                         break;
                 }
             }
         }
     }
     if ($return) {
         return array($return, "news");
     }
     return array("亲,暂时没有找到与“" . $key . "”相关的内容!请更换内容。", "text");
 }
 public function index()
 {
     $area_url = $_GET["area_url"] && $_GET["area_url"] ? htmlspecialchars($_GET["area_url"]) : "all";
     $cat_url = $_GET["cat_url"] && $_GET["cat_url"] ? htmlspecialchars($_GET["cat_url"]) : "all";
     $all_area_list = D("Area")->get_all_area_list();
     $this->assign("all_area_list", $all_area_list);
     $this->assign("now_area_url", $area_url);
     $this->assign("now_category_url", $cat_url);
     $circle_id = 0;
     if ($area_url != "all") {
         $tmp_area = D("Area")->get_area_by_areaUrl($area_url);
         if (empty($tmp_area)) {
             $this->error("当前区域不存在!");
         }
         $this->assign("now_area", $tmp_area);
         if ($tmp_area["area_type"] == 3) {
             $now_area = $tmp_area;
         } else {
             $now_circle = $tmp_area;
             $this->assign("now_circle", $now_circle);
             $now_area = D("Area")->get_area_by_areaId($tmp_area["area_pid"], true, $cat_url);
             if (empty($tmp_area)) {
                 $this->error("当前区域不存在!");
             }
             $circle_url = $now_circle["area_url"];
             $circle_id = $now_circle["area_id"];
             $area_url = $now_area["area_url"];
         }
         $this->assign("top_area", $now_area);
         $area_id = $now_area["area_id"];
     } else {
         $area_id = 0;
     }
     $sort_id = isset($_GET["sort_id"]) ? $_GET["sort_id"] : "juli";
     $long_lat = array("lat" => 0, "long" => 0);
     $_SESSION["openid"] && ($long_lat = D("User_long_lat")->field("long,lat")->where(array("open_id" => $_SESSION["openid"]))->find());
     if (0 == $long_lat["long"] || 0 == $long_lat["lat"]) {
         $sort_id = $sort_id == "juli" ? "store_id" : $sort_id;
         $sort_array = array(array("sort_id" => "store_id", "sort_value" => "默认排序"), array("sort_id" => "hot", "sort_value" => "人气最高"), array("sort_id" => "price-asc", "sort_value" => "价格最低"), array("sort_id" => "price-desc", "sort_value" => "价格最高"), array("sort_id" => "time", "sort_value" => "最近开业"));
     } else {
         import("@.ORG.longlat");
         $longlat_class = new longlat();
         $location2 = $longlat_class->gpsToBaidu($long_lat["lat"], $long_lat["long"]);
         $long_lat["lat"] = $location2["lat"];
         $long_lat["long"] = $location2["lng"];
         $sort_array = array(array("sort_id" => "juli", "sort_value" => "离我最近"), array("sort_id" => "hot", "sort_value" => "人气最高"), array("sort_id" => "price-asc", "sort_value" => "价格最低"), array("sort_id" => "price-desc", "sort_value" => "价格最高"), array("sort_id" => "time", "sort_value" => "最近开业"));
     }
     foreach ($sort_array as $key => $value) {
         if ($sort_id == $value["sort_id"]) {
             $now_sort_array = $value;
             break;
         }
     }
     $this->assign("sort_array", $sort_array);
     $this->assign("now_sort_array", $now_sort_array);
     $cat_id = 0;
     if ($cat_url != "all") {
         $now_category = D("Meal_store_category")->get_category_by_catUrl($cat_url);
         if (empty($now_category)) {
             $this->error("此分类不存在!");
         }
         $this->assign("now_category", $now_category);
         $cat_id = $now_category["cat_id"];
     }
     $arr = D("Merchant_store")->get_list_by_option($area_id, $circle_id, $sort_id, true, $long_lat["lat"], $long_lat["long"], $cat_id);
     $category_list = D("Meal_store_category")->where("cat_status = '1'")->order('cat_sort DESC')->select();
     $this->assign("category_list", $category_list);
     $this->assign($arr);
     //- daiding
     $this->display();
 }
Exemple #4
0
 public function near_info()
 {
     $condition_where = "`status`='1'";
     switch ($_POST['type']) {
         case 'merchant':
             //                 $condition_where  = '';
             break;
         case 'meal':
             $condition_where .= " AND `have_meal`='1'";
             break;
         case 'group':
             $condition_where .= " AND `have_group`='1'";
             break;
         default:
             $this->error('非法访问!');
     }
     $x = $_POST['lat'];
     $y = $_POST['long'];
     import('@.ORG.longlat');
     $longlat_class = new longlat();
     $location = $longlat_class->gpsToBaidu($x, $y);
     //转换腾讯坐标到百度坐标
     $x = $location['lat'];
     $y = $location['lng'];
     if ($this->is_wexin_browser && !empty($_SESSION['openid'])) {
         $condition_user_long_lat['open_id'] = $_SESSION['openid'];
         $data_user_long_lat['lat'] = $x;
         $data_user_long_lat['long'] = $y;
         $data_user_long_lat['dateline'] = $_SERVER['REQUEST_TIME'];
         $database_user_long_lat = D('User_long_lat');
         if ($database_user_long_lat->field('`open_id`')->where($condition_user_long_lat)->find()) {
             $database_user_long_lat->where($condition_user_long_lat)->data($data_user_long_lat)->save();
         } else {
             $data_user_long_lat['open_id'] = $_SESSION['openid'];
             $database_user_long_lat->data($data_user_long_lat)->add();
         }
     }
     $store_list = D("Merchant_store")->field("*, ROUND(6378.138 * 2 * ASIN(SQRT(POW(SIN(({$x}*PI()/180-`lat`*PI()/180)/2),2)+COS({$x}*PI()/180)*COS(`lat`*PI()/180)*POW(SIN(({$y}*PI()/180-`long`*PI()/180)/2),2)))*1000) AS juli")->where($condition_where)->order('`juli` ASC')->limit('0,6')->select();
     if (!empty($store_list)) {
         $store_image_class = new store_image();
         foreach ($store_list as &$store) {
             $images = $store_image_class->get_allImage_by_path($store['pic_info']);
             $store['image'] = $images ? array_shift($images) : '';
             if ($store['juli'] > 1000) {
                 $store['juli'] = ' ' . floatval(round($store['juli'] / 1000, 1)) . ' 千米';
             } else {
                 $store['juli'] = ' ' . $store['juli'] . ' 米';
             }
             switch ($_POST['type']) {
                 case 'merchant':
                     $store['url'] = U('Index/index', array('token' => $store['mer_id']));
                     break;
                 case 'meal':
                     $store['url'] = U('Meal/menu', array('mer_id' => $store['mer_id'], 'store_id' => $store['store_id']));
                     break;
                 case 'group':
                     $store['url'] = U('Group/shop', array('store_id' => $store['store_id']));
                     break;
                 default:
                     $this->error('非法访问!');
             }
         }
         echo json_encode(array('error' => 0, 'store_list' => $store_list));
     } else {
         echo json_encode(array('error' => 1));
     }
 }
 public function index()
 {
     //判断分类信息
     $cat_url = !empty($_GET['cat_url']) ? $_GET['cat_url'] : '';
     $this->assign('now_cat_url', $cat_url);
     //判断地区信息
     $area_url = !empty($_GET['area_url']) ? $_GET['area_url'] : '';
     $this->assign('now_area_url', $area_url);
     $circle_id = 0;
     if (!empty($area_url)) {
         $tmp_area = D('Area')->get_area_by_areaUrl($area_url);
         if (empty($tmp_area)) {
             $this->error('当前区域不存在!');
         }
         $this->assign('now_area', $tmp_area);
         if ($tmp_area['area_type'] == 3) {
             $now_area = $tmp_area;
         } else {
             $now_circle = $tmp_area;
             $this->assign('now_circle', $now_circle);
             $now_area = D('Area')->get_area_by_areaId($tmp_area['area_pid'], true, $cat_url);
             if (empty($tmp_area)) {
                 $this->error('当前区域不存在!');
             }
             $circle_url = $now_circle['area_url'];
             $circle_id = $now_circle['area_id'];
             $area_url = $now_area['area_url'];
         }
         $this->assign('top_area', $now_area);
         $area_id = $now_area['area_id'];
     } else {
         $area_id = 0;
     }
     //判断排序信息
     $sort_id = !empty($_GET['sort_id']) ? $_GET['sort_id'] : 'juli';
     $long_lat = array('lat' => 0, 'long' => 0);
     $_SESSION['openid'] && ($long_lat = D('User_long_lat')->field('long,lat')->where(array('open_id' => $_SESSION['openid']))->find());
     if (empty($long_lat['long']) || empty($long_lat['lat'])) {
         $sort_id = $sort_id == 'juli' ? 'defaults' : $sort_id;
         $sort_array = array(array('sort_id' => 'defaults', 'sort_value' => '默认排序'), array('sort_id' => 'rating', 'sort_value' => '评价最高'), array('sort_id' => 'start', 'sort_value' => '最新发布'), array('sort_id' => 'solds', 'sort_value' => '人气最高'), array('sort_id' => 'price', 'sort_value' => '价格最低'), array('sort_id' => 'priceDesc', 'sort_value' => '价格最高'));
     } else {
         import('@.ORG.longlat');
         $longlat_class = new longlat();
         $location2 = $longlat_class->gpsToBaidu($long_lat['lat'], $long_lat['long']);
         //转换腾讯坐标到百度坐标
         $long_lat['lat'] = $location2['lat'];
         $long_lat['long'] = $location2['lng'];
         $sort_array = array(array('sort_id' => 'juli', 'sort_value' => '离我最近'), array('sort_id' => 'rating', 'sort_value' => '评价最高'), array('sort_id' => 'start', 'sort_value' => '最新发布'), array('sort_id' => 'solds', 'sort_value' => '人气最高'), array('sort_id' => 'price', 'sort_value' => '价格最低'), array('sort_id' => 'priceDesc', 'sort_value' => '价格最高'));
     }
     foreach ($sort_array as $key => $value) {
         if ($sort_id == $value['sort_id']) {
             $now_sort_array = $value;
             break;
         }
     }
     $this->assign('sort_array', $sort_array);
     $this->assign('now_sort_array', $now_sort_array);
     //所有分类 包含2级分类
     $all_category_list = D('Group_category')->get_all_category();
     $this->assign('all_category_list', $all_category_list);
     //根据分类信息获取分类
     if (!empty($cat_url)) {
         $now_category = D('Group_category')->get_category_by_catUrl($cat_url);
         if (empty($now_category)) {
             $this->error_tips('此分类不存在!');
         }
         $this->assign('now_category', $now_category);
         if (!empty($now_category['cat_fid'])) {
             $f_category = D('Group_category')->get_category_by_id($now_category['cat_fid']);
             $all_category_url = $f_category['cat_url'];
             $category_cat_field = $f_category['cat_field'];
             $top_category = $f_category;
             $this->assign('top_category', $f_category);
             $get_grouplist_catfid = 0;
             $get_grouplist_catid = $now_category['cat_id'];
         } else {
             $all_category_url = $now_category['cat_url'];
             $category_cat_field = $now_category['cat_field'];
             $top_category = $now_category;
             $this->assign('top_category', $now_category);
             $get_grouplist_catfid = $now_category['cat_id'];
             $get_grouplist_catid = 0;
         }
         // 			if(!empty($category_cat_field)){
         // 				$cat_field = unserialize($category_cat_field);
         // 				foreach($cat_field as $key=>$value){
         //包含区域
         // 					if($value['use_field'] && $value['use_field'] == 'area'){
         // 						$all_area_list = D('Area')->get_area_list();
         // 						$this->assign('all_area_list',$all_area_list);
         // 					}
         // 				}
         // 			}
     } else {
         //所有区域
         // 			$all_area_list = D('Area')->get_all_area_list();
         // 			$this->assign('all_area_list',$all_area_list);
     }
     $all_area_list = D('Area')->get_all_area_list();
     $this->assign('all_area_list', $all_area_list);
     //$long_lat['lat'] = 31.823263;
     //$long_lat['long'] = 117.235268;
     $this->assign(D('Group')->wap_get_group_list_by_catid($get_grouplist_catid, $get_grouplist_catfid, $area_id, $sort_id, $long_lat['lat'], $long_lat['long'], $circle_id));
     /* 粉丝行为分析 */
     $this->behavior(array('model' => 'Group_index'));
     $this->display();
 }