adminInfo = get_login_admin(); $this->url=[ '/admin/nk.vegetable/index', '/admin/nk.vegetable/add', '/admin/nk.vegetable/edit', '/admin/nk.vegetable/del', '/admin/nk.vegetable/read', ]; } /** * 数据列表 */ public function index() { if (request()->isAjax()) { $params= get_params(); $where[]= ['status','=',1]; if (isset($params['keywords']) && !empty($params['keywords'])){ $where[]= ['title','like','%'.$params['keywords'].'%']; } if($this->adminInfo['position_id'] != 1){ //不是超级管理员 $www['admin_id'] = $this->adminInfo['id']; $user_address = Db::table('fa_szxc_information_useraddress')->where($www)->find(); if ($user_address){ if($user_address['auth_range'] == 1){ $where[] = ['village_id','=',$user_address['village_id']]; }elseif ($user_address['auth_range'] == 2){ $where[] = ['street_id','=',$user_address['street_id']]; }elseif ($user_address['auth_range'] == 3){ $where[] = ['area_id','=',$user_address['area_id']]; }else{ $where[] = ['village_id','=',$user_address['village_id']]; } }else{ $where[] = ['village_id','=','']; } } $total = Db::table('cms_manufacturer') ->where($where) ->count(); $list = Db::table('cms_manufacturer') ->withAttr('area_id',function ($value,$data){ return Db::table('fa_geo_area')->where('area_code',$data['area_id'])->value('area_name'); }) ->withAttr('street_id',function ($value,$data){ return Db::table('fa_geo_street')->where('street_code',$data['street_id'])->value('street_name'); }) ->withAttr('village_id',function ($value,$data){ return Db::table('fa_geo_village')->where('village_id',$data['village_id'])->value('village_name'); }) ->withAttr('status',function ($value,$data){ if($value == 1){ return '正常'; }else{ return '禁用'; } }) ->where($where) ->page($params['page']) ->limit($params['limit']) ->order('id desc') ->select(); $result = ['total' => $total, 'data' => $list]; return table_assign(0, '', $result); } else{ return view('nk/vegetable/index',['url'=>$this->url]); } } public function add(){ if (request()->isAjax()) { $param= get_params(); $adds=Db::table('fa_szxc_information_useraddress')->where('admin_id',$this->adminInfo['id'])->find(); $param['area_id']=$adds['area_id']; $param['street_id']=$adds['street_id']; $param['village_id']=$adds['village_id']; $param['add_time']=date('Y-m-d H:i:s'); $res=Db::table('cms_manufacturer')->strict(false)->field(true)->insertGetId($param); if ($res){ return to_assign(0,'操作成功',['aid'=>$res]); } return to_assign(1, '操作失败,原因:'.$res); }else{ View::assign('editor', get_system_config('other','editor')); return view(); } } public function edit(){ $param= get_params(); if (request()->isAjax()) { $res=Db::table('cms_manufacturer')->where('id',$param['id'])->strict(false)->field(true)->update($param); if ($res){ return to_assign(); }else{ return to_assign(1, '操作失败,原因:'.$res); } }else{ $id = isset($param['id']) ? $param['id'] : 0; $detail = Db::table('cms_manufacturer')->where('id',$id)->find(); View::assign('editor', get_system_config('other','editor')); if (!empty($detail)) { View::assign('detail', $detail); return view(); } else{ throw new \think\exception\HttpException(404, '找不到页面'); } } } /** * 查看信息 */ public function read() { $param= get_params(); $id = isset($param['id']) ? $param['id'] : 0; $detail = Db::table('cms_manufacturer')->where('id',$id)->find(); if (!empty($detail)) { View::assign('detail', $detail); $farmers = Db::table('cms_farm_product_market')->where('status',1)->select()->toArray(); foreach ($farmers as $k =>$v){ $farmers[$k]['juli'] = $this->getDistance($detail['lng'],$detail['lat'],$v['lng'],$v['lat'],2); } View::assign('farmers', $farmers); return view(); } else{ throw new \think\exception\HttpException(404, '找不到页面'); } } /** * 计算两点地理坐标之间的距离 * @param Decimal $longitude1 起点经度 * @param Decimal $latitude1 起点纬度 * @param Decimal $longitude2 终点经度 * @param Decimal $latitude2 终点纬度 * @param Int $unit 单位 1:米 2:公里 * @param Int $decimal 精度 保留小数位数 * @return Decimal */ function getDistance($longitude1, $latitude1, $longitude2, $latitude2, $unit=2, $decimal=2){ $EARTH_RADIUS = 6370.996; // 地球半径系数 $PI = 3.1415926; $radLat1 = $latitude1 * $PI / 180.0; $radLat2 = $latitude2 * $PI / 180.0; $radLng1 = $longitude1 * $PI / 180.0; $radLng2 = $longitude2 * $PI /180.0; $a = $radLat1 - $radLat2; $b = $radLng1 - $radLng2; $distance = 2 * asin(sqrt(pow(sin($a/2),2) + cos($radLat1) * cos($radLat2) * pow(sin($b/2),2))); $distance = $distance * $EARTH_RADIUS * 1000; if($unit==2){ $distance = $distance / 1000; } return round($distance, $decimal); } /** * 删除 */ public function del() { $param= get_params(); $id = isset($param['id']) ? $param['id'] : 0; $type = isset($param['type']) ? $param['type'] : 0; $res = Db::table('cms_manufacturer')->where('id',$id)->delete(); if ($res){ return to_assign(); }else{ return to_assign(1, '操作失败,原因:'.$res); } } }