Shopnearby.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <?php
  2. namespace app\home\controller;
  3. use think\facade\View;
  4. use think\facade\Lang;
  5. use think\facade\Db;
  6. /**
  7. * ============================================================================
  8. *
  9. * ============================================================================
  10. *
  11. * ----------------------------------------------------------------------------
  12. *
  13. * ============================================================================
  14. * 控制器
  15. */
  16. class Shopnearby extends BaseMall
  17. {
  18. public function initialize()
  19. {
  20. parent::initialize();
  21. Lang::load(base_path() . 'home/lang/' . config('lang.default_lang') . '/shopnearby.lang.php');
  22. }
  23. /*
  24. * 首页显示
  25. */
  26. public function index()
  27. {
  28. $storeclass_list = model('storeclass')->getStoreclassList();
  29. View::assign('storeclass_list', $storeclass_list);
  30. $area_mod = model('area');
  31. $city_list = $area_mod->getAreaList(array('area_parent_id' => '0'));
  32. $sort_city_list = array();
  33. foreach ($city_list as $k => $v) {
  34. if (!isset($sort_city_list[$v['area_region']])) {
  35. $sort_city_list[$v['area_region']] = array(
  36. 'region' => $v['area_region'],
  37. 'child' => array()
  38. );
  39. }
  40. $sort_city_list[$v['area_region']]['child'][] = $v;
  41. }
  42. View::assign('city_list', $sort_city_list);
  43. View::assign('baidu_ak', config('ds_config.baidu_ak'));
  44. return View::fetch($this->template_dir . 'index');
  45. }
  46. public function get_Own_Store_List()
  47. {
  48. $store_list = array();
  49. //查询条件
  50. $condition = array(array('store_state', '=', 1));
  51. if (!empty(input('get.keyword'))) {
  52. $condition[] = array('store_name', 'like', '%' . input('get.keyword') . '%');
  53. }
  54. $storeclass_id = intval(input('get.storeclass_id'));
  55. if ($storeclass_id) {
  56. $condition[] = array('storeclass_id', '=', $storeclass_id);
  57. }
  58. $lat = input('get.latitude');
  59. $lng = input('get.longitude');
  60. if (!is_numeric($lat) || !is_numeric($lng)) {
  61. ds_json_encode(10001, lang('param_error'));
  62. }
  63. if ($lat && $lng) {
  64. $page = intval(input('get.page'));
  65. $store_list = Db::name('store')->where($condition)->where('(2 * 6378.137* ASIN(SQRT(POW(SIN(PI()*(' . $lat . '-store_latitude)/360),2)+COS(PI()*' . $lat . '/180)* COS(store_latitude * PI()/180)*POW(SIN(PI()*(' . $lng . '-store_longitude)/360),2)))) < 100000')->field('store_phone,store_latitude,store_longitude,store_id,is_platform_store,store_name,area_info,store_address,store_logo,store_avatar,store_banner,(2 * 6378.137* ASIN(SQRT(POW(SIN(PI()*(' . $lat . '-store_latitude)/360),2)+COS(PI()*' . $lat . '/180)* COS(store_latitude * PI()/180)*POW(SIN(PI()*(' . $lng . '-store_longitude)/360),2)))) as distance')->order('distance asc')->page($page, 30)->select()->toArray();
  66. foreach ($store_list as $key => $value) {
  67. $goods_conditions = array();
  68. $goods_conditions[] = array('goods_verify', '=', 1);
  69. $goods_conditions[] = array('goods_state', '=', 1);
  70. $store_list[$key]['store_banner'] && $store_list[$key]['store_banner'] = ds_get_pic(ATTACH_STORE . '/' . $value['store_id'], $value['store_banner']);
  71. $store_list[$key]['distance'] = round($value['distance'], 2);
  72. $store_list[$key]['store_logo'] = get_store_logo($value['store_logo'], 'store_logo');
  73. $store_list[$key]['store_avatar'] = get_store_logo($value['store_avatar'], 'store_avatar');
  74. $goods_conditions[] = array('store_id', '=', $value['store_id']);
  75. $store_list[$key]['goods_list'] = Db::name('goods')->where($goods_conditions)->field('goods_name,goods_id,goods_image,goods_price')->order('goods_addtime desc')->page($page, 4)->select()->toArray();
  76. if (empty($value['area_info'])) {
  77. $store_list[$key]['area_info'] = lang('store_doesn_fill_area');
  78. }
  79. if (empty($value['store_address'])) {
  80. $store_list[$key]['store_address'] = lang('store_not_filled_detailed_address');
  81. }
  82. foreach ($store_list[$key]['goods_list'] as $key2 => $goods) {
  83. $store_list[$key]['goods_list'][$key2]['goods_image'] = goods_cthumb($goods['goods_image']);
  84. }
  85. }
  86. }
  87. if ($store_list) {
  88. echo json_encode($store_list);
  89. exit;
  90. } else {
  91. echo json_encode(false);
  92. exit;
  93. }
  94. }
  95. }