<?php
namespace app\station\controller\v1;
use app\station\model\BaseStationModel;
use app\station\model\DepartpermissionModel;
use think\Controller;
use think\Request;
use think\db;
/**
 * 基站数据API接口控制器
 * 负责基站数据的增删改查
 * Class BaseStation
 * @package app\station\controller
 */
class BaseStation extends Controller
{
    /**
 * 基站数据数据列表
 */
    public function baseStation_list(Request $request)
    {
       if($request->isGet()){
          $model=new BaseStationModel;
          $user_id = $this->request->get('user_id');
         if($user_id){
          $map=[];
          $permission=db::name('permission_data')->field('permission_ids')->where(['s_id'=>$user_id])->find();
              $arr= json_decode($permission['permission_ids'],true);
              if($arr['department_id']){
                    $department_ids=strpos($arr['department_id'],',');
                    if($department_ids===false){
                        $map[]=['department_id','=', $arr['department_id']];
                    }else{
                        $map[]=['department_id','in',$arr['department_id']];
                    }
                }
                if($arr['region_id']){
                    $area_ids=strpos($arr['region_id'],',');
                    if($area_ids===false){
                        $map[]=['area_id','=', $arr['region_id']];
                    }else{
                        $map[]=['area_id','in',$arr['region_id']];
                    }
                }
                if($arr['business_id']){
                    $business_ids=strpos($arr['business_id'],',');
                    if($business_ids===false){
                        $map[]=['business_line_id','=', $arr['business_id']];
                     }else{
                        $map[]=['business_line_id','in',$arr['business_id']];
                     }
                }
                 //如果数据规则表不存在数据信息 ,默认返回此用户的部门id
                if(!$map){
                 $staff = db::name('staff')->field('d_id')->where(['id'=>$user_id])->find();

                 if($staff && $staff['d_id']!==0){

                    $map[]=['department_id','=',$staff['d_id']];

                 }
                }
        }
          $original_sp_id = $this->request->get('original_sp_id');
          if($original_sp_id){
               $map[]=['original_sp_id','=',$original_sp_id];
          }
          $area_id = $this->request->get('area_id');
          if($area_id){
             $map[]=['area_id','=',$area_id];
          }
          $base_station_state = $this->request->get('base_station_state');
          if($base_station_state){
             $map[]=['base_station_state','=',$base_station_state];
          }
           $station_name = $this->request->get('station_name');
          if($station_name){
             $map[]=['station_name','like',"%$station_name%"];
          }
             $station_sp_code = $this->request->get('station_sp_code');
          if($station_sp_code){
             $map[]=['station_sp_code','like',"%$station_sp_code%"];
          }
             $proj_number = $this->request->get('proj_number');
          if($proj_number){
             $map[]=['proj_number','like',"%$proj_number%"];
          }
          $map[] = ['status','=',1];
          $page =  $this->request->get('page') ?  $this->request->get('page'):1;
          $page_size =  $this->request->get('page_size')? $this->request->get('page_size'):10;
          if($page_size>100){
              return jsonSucc('20065','page_size超出范围限制');
          }
          $sort = $this->request->get('sort')? $this->request->get('sort'): 'desc';


          $data=$model->selectBaseStationList($map,$page,$page_size,$sort);
          if($data['code']==200){
             if($data['data']){
               return jsonSucc('','suceeess',$data['data'],$data['total_count'],$data['total_page'],$data['current_page']);
             }else{
               return jsonSucc('20065','Business line data does not exist');
             }
          }else{
               return jsonSucc('20063','not data');
          }
        }else{
            return jsonSucc('20064','not GET');
        }
    }
/**
 * 添加基站数据
 */
      public function baseStation_add(Request $request)
    {   
        $parem=$this->request->post();
        if($parem){
         $model=new BaseStationModel;
         $result=$model->insertBaseStation($parem);
         if($result['code']==200){
           return jsonSucc('200','suceess');
         }else{
           return jsonSucc('200001','error');
         }
        }else{
            return jsonSucc('1000001','error');
        }
    }
/**
 * 修改基站数据
 */
     public function baseStation_edit(Request $request)
    {    
          // $file =$this->request->file('essential_factor_url');
          // $route_image =$this->request->file('route_image');
          // if($file){
          //   $info = $file->move('../public/uploads/base');
          //   $getSaveName=str_replace("\\","/",$info->getSaveName());
          //   $parem['essential_factor_url']='/uploads/base/'.$getSaveName;
          // }
          // if($route_image){
          //   $info = $file->move('../public/uploads/base');
          //   $getSaveName=str_replace("\\","/",$info->getSaveName());
          //   $parem['route_image']='/uploads/base/'.$getSaveName;
          // }
         $parem=$this->request->post();

        if($parem){
         if(empty($parem['station_id'])){
            return jsonSucc('200001','参数不合法,无法修改');
         }
         $model=new BaseStationModel;
         $result=$model->updBaseStation($parem);
         if($result['code']==10001){
            return jsonSucc('200001','station_id不存在');
         }
         if($result['code']==200){
           return jsonSucc('200','suceess');
         }else{
           return jsonSucc('200001','error');
         }
        }else{
            return jsonSucc('1000001','error');
        }
    }
/**
 * 获取修改基站数据数据
 */
    public function getOneBaseStation()
    {
        $parem=$this->request->post();
         $model=new BaseStationModel;
         $result=$model->getOneBaseStation($parem);
            
          if($result['code']==10001){
            return jsonSucc('200001','暂无找到id');
          }else{
             return jsonSucc('','suceess',$result['data']);
          }
         
    }
//获取地图
       public function getbaseMap(Request $request)
    {
        $parem=$this->request->post();
         $model=new BaseStationModel;
         $result=$model->getMapBaseStation($parem);

          if($result['code']==10001){
            return jsonSucc('200001','暂无找到id');
          }else{
             return jsonSucc('','suceess',$result['data']);
          }
         
    }
    //获取地图
       public function getbaseMapList(Request $request)
    {
          $model=new BaseStationModel;
          $user_id = $this->request->get('user_id');
           if($user_id){
          $permission=db::name('permission_data')->field('permission_ids')->where(['s_id'=>$user_id])->find();
              $arr= json_decode($permission['permission_ids'],true);
              if($arr['department_id']){
                    $department_ids=strpos($arr['department_id'],',');
                    if($department_ids===false){
                        $map[]=['department_id','=', $arr['department_id']];
                    }else{
                        $map[]=['department_id','in',$arr['department_id']];
                    }
                }
                if($arr['region_id']){
                    $area_ids=strpos($arr['region_id'],',');
                    if($area_ids===false){
                        $map[]=['area_id','=', $arr['region_id']];
                    }else{
                        $map[]=['area_id','in',$arr['region_id']];
                    }
                }
                if($arr['business_id']){
                    $business_ids=strpos($arr['business_id'],',');
                    if($business_ids===false){
                        $map[]=['business_line_id','=', $arr['business_id']];
                     }else{
                        $map[]=['business_line_id','in',$arr['business_id']];
                     }
                }
                 //如果数据规则表不存在数据信息 ,默认返回此用户的部门id
                if(!$map){
                 $staff = db::name('staff')->field('d_id')->where(['id'=>$user_id])->find();
                 if($staff && $staff['d_id']!==0){
                    $map[]=['department_id','=',$staff['d_id']];
                 }
                }
        }
          $original_sp_id = $this->request->get('original_sp_id');
          if($original_sp_id){
               $map[]=['original_sp_id','=',$original_sp_id];
          }
          $area_id = $this->request->get('area_id');
          if($area_id){
             $map[]=['area_id','=',$area_id];
          }
          $base_station_state = $this->request->get('base_station_state');
          if($base_station_state){
             $map[]=['base_station_state','=',$base_station_state];
          }
           $station_name = $this->request->get('station_name');
          if($station_name){
             $map[]=['station_name','like',"%$station_name%"];
          }
             $station_sp_code = $this->request->get('station_sp_code');
          if($station_sp_code){
             $map[]=['station_sp_code','like',"%$station_sp_code%"];
          }
             $proj_number = $this->request->get('proj_number');
          if($proj_number){
             $map[]=['proj_number','like',"%$proj_number%"];
          }

          $map[] = ['status','=',1];
          $data=$model->getAllMapList($map);
                  $lats = $lons = array();
                  foreach ($data['data'] as $key => $value) {
                    if($value['latitude']){
                  array_push($lats, $value['latitude']);
                  array_push($lons, $value['longitude']);
                  }
                   }
                  $minlat = min($lats);
                  $maxlat = max($lats);
                  $minlon = min($lons);
                  $maxlon = max($lons);

                  $zpoint = [
                  'minLat'=>$minlat,
                  'maxLat'=>$maxlat,
                  'minLng'=>$minlon,
                  'maxLng'=>$maxlon
                  ];
                  $lat = $maxlat - (($maxlat - $minlat) / 2);
                  $lng = $maxlon - (($maxlon - $minlon) / 2);

                  $oPoint=array("latitude" => $lat, "longitude" => $lng);
                  $data['data']['datacount'] = $data['datacount'];
                  $data['data']['counts'] = $data['counts'];
                  $data['data']['oPoint'] = $oPoint;
                  $data['data']['zPoint'] = $zpoint;
          if($data['code']==200){
             if($data['data']){
               return jsonSucc('','suceeess',$data['data']);
             }else{
               return jsonSucc('20065','Business line data does not exist');
             }
          }else{
               return jsonSucc('20063','not data');
          }
         
    }
    public function base_export(Request $request)
    {
       if($request->isGet()){
          $model=new BaseStationModel;
          $user_id = $this->request->get('user_id');
          if($user_id){
          $permission=db::name('permission_data')->field('permission_ids')->where(['s_id'=>$user_id])->find();
              $arr= json_decode($permission['permission_ids'],true);
              if($arr['department_id']){
                    $department_ids=strpos($arr['department_id'],',');
                    if($department_ids===false){
                        $map[]=['department_id','=', $arr['department_id']];
                    }else{
                        $map[]=['department_id','in',$arr['department_id']];
                    }
                }
                if($arr['region_id']){
                    $area_ids=strpos($arr['region_id'],',');
                    if($area_ids===false){
                        $map[]=['area_id','=', $arr['region_id']];
                    }else{
                        $map[]=['area_id','in',$arr['region_id']];
                    }
                }
                if($arr['business_id']){
                    $business_ids=strpos($arr['business_id'],',');
                    if($business_ids===false){
                        $map[]=['business_line_id','=', $arr['business_id']];
                     }else{
                        $map[]=['business_line_id','in',$arr['business_id']];
                     }
                }
                 //如果数据规则表不存在数据信息 ,默认返回此用户的部门id
                if(!$map){
                 $staff = db::name('staff')->field('d_id')->where(['id'=>$user_id])->find();
                 if($staff && $staff['d_id']!==0){
                    $map[]=['department_id','=',$staff['d_id']];
                 }
                }
        }
          $original_sp_id = $this->request->get('original_sp_id');
          if($original_sp_id){
               $map[]=['original_sp_id','=',$original_sp_id];
          }
          $area_id = $this->request->get('area_id');
          if($area_id){
             $map[]=['area_id','=',$area_id];
          }
          $base_station_state = $this->request->get('base_station_state');
          if($base_station_state){
             $map[]=['base_station_state','=',$base_station_state];
          }
           $station_name = $this->request->get('station_name');
          if($station_name){
             $map[]=['station_name','like',"%$station_name%"];
          }
             $station_sp_code = $this->request->get('station_sp_code');
          if($station_sp_code){
             $map[]=['station_sp_code','like',"%$station_sp_code%"];
          }
             $proj_number = $this->request->get('proj_number');
          if($proj_number){
             $map[]=['proj_number','like',"%$proj_number%"];
          }
          $map[] = ['status','=',1];
          $data=$model->getAllBaseStation($map);
          if($data['code']==200){
             if($data['data']){
               return jsonSucc('','suceeess',$data['data']);
             }else{
               return jsonSucc('20065','Business line data does not exist');
             }
          }else{
               return jsonSucc('20063','not data');
          }
        }else{
            return jsonSucc('20064','not GET');
        }
    }
/**
 * 删除基站数据数据(软删除)
 */
     public function baseStation_del()
    { 
      $parem=$this->request->post();
        if($parem){
         $model=new BaseStationModel;
         $result=$model->baseStation_del($parem);
         switch ($result['code']) {
            case '10001':
                 return jsonSucc('200001','暂无找到id');
                break;
            
            case '200':
                 return jsonSucc('200','suceess');
                break;

            default:
                return jsonSucc('1000001','error');
                break;
         }
        }else{
            return jsonSucc('1000001','error');
        }
    }
}