Merge branch 'preview'
# Conflicts: # app/api/controller/IndexController.php
This commit is contained in:
commit
ddc10275a5
|
@ -1,172 +1,175 @@
|
|||
<?php
|
||||
namespace app\api\controller;
|
||||
|
||||
use app\common\enum\notice\NoticeEnum;
|
||||
use app\common\model\action\Action;
|
||||
use app\common\model\device\Device;
|
||||
use app\common\model\device\MonitorThreshold;
|
||||
use app\common\model\land\Land;
|
||||
use app\common\model\land\LandProduct;
|
||||
use app\common\model\LandCollection;
|
||||
use app\common\model\monitor\MonitorData;
|
||||
use app\common\model\plant\Plant;
|
||||
use app\common\model\product\ProductDevice;
|
||||
use think\facade\Log;
|
||||
use think\response\Json;
|
||||
|
||||
|
||||
/**
|
||||
* index
|
||||
* Class IndexController
|
||||
* @package app\api\controller
|
||||
*/
|
||||
class IndexController extends BaseApiController
|
||||
{
|
||||
|
||||
public array $notNeedLogin = ['code','suYuan'];
|
||||
|
||||
//溯源首页
|
||||
public function index(): Json
|
||||
{
|
||||
$params = $this->request->get(['land_id']);
|
||||
//获取土地信息
|
||||
if(isset($params['land_id']) && $params['land_id'] !=''){
|
||||
$data = Land::where('user_id',$this->userId)->where('id',$params['land_id'])->order('id desc')->findOrEmpty()->toArray();
|
||||
}else{
|
||||
$data = Land::where('user_id',$this->userId)->order('id desc')->findOrEmpty()->toArray();
|
||||
}
|
||||
if(empty($data)){
|
||||
return $this->success('请求成功',[]);
|
||||
}
|
||||
$data['pic'] = json_decode($data['pic'],true);
|
||||
//获取绑定产品
|
||||
$landProduct = LandProduct::where('land_id',$data['id'])->findOrEmpty();
|
||||
if($landProduct->isEmpty()){
|
||||
$data['monitor'] = [];
|
||||
}else{
|
||||
$landCollection = LandCollection::where('land_id',$params['land_id'])->order('id desc')->findOrEmpty();
|
||||
if($landCollection->isEmpty()){
|
||||
$data['monitor'] = [];
|
||||
}else{
|
||||
$data['monitor']['soil_monitor_data'] = [
|
||||
'soil_temperature'=>$landCollection['soil_temperature'],
|
||||
'soil_moisture'=>$landCollection['soil_moisture'],
|
||||
'conductivity'=>$landCollection['soil_conductivity'],
|
||||
'ph'=>$landCollection['soil_PH'],
|
||||
'n_content'=>$landCollection['soil_potassium_phosphate_nitrogen'],
|
||||
'p_content'=>$landCollection['soil_potassium_phosphate_phosphorus'],
|
||||
'k_content'=>$landCollection['soil_potassium_phosphate_potassium'],
|
||||
'create_time' => $landCollection['create_time']
|
||||
];
|
||||
$data['monitor']['air_monitor_data'] = [
|
||||
'wind_direction'=>$landCollection['wind_direction'],
|
||||
'wind_speed'=>$landCollection['wind_speed'],
|
||||
'air_temperature'=>$landCollection['ambient_temperature'],
|
||||
'air_moisture'=>$landCollection['ambient_humidity'],
|
||||
'co2_content'=>$landCollection['carbon_dioxide'],
|
||||
'pressure'=>$landCollection['ambient_air_pressure'],
|
||||
'rainfall'=>$landCollection['rainfall'],
|
||||
'light_intensity'=>$landCollection['ambient_lighting'],
|
||||
'create_time' => $landCollection['create_time']
|
||||
];
|
||||
$monitorThreshold = MonitorThreshold::select();
|
||||
if($monitorThreshold->toArray()!=null){
|
||||
$monitorThreshold=$monitorThreshold[0];
|
||||
}else{
|
||||
$monitorThreshold=[];
|
||||
}
|
||||
$monitorThreshold['ambient_air_pressure_max'] = 120;
|
||||
$monitorThreshold['ambient_air_pressure_min'] = 10;
|
||||
$data['monitor']['threshold'] = $monitorThreshold;
|
||||
}
|
||||
}
|
||||
return $this->success('请求成功',$data);
|
||||
}
|
||||
|
||||
//视频监控
|
||||
public function video(): Json
|
||||
{
|
||||
$params = $this->request->get(['land_id']);
|
||||
if(empty($params['land_id'])){
|
||||
return $this->fail('参数错误');
|
||||
}
|
||||
//获取土地绑定的产品
|
||||
$landProduct = LandProduct::where('land_id',$params['land_id'])->findOrEmpty();
|
||||
if($landProduct->isEmpty()){
|
||||
return $this->fail('当前土地未绑定设备产品');
|
||||
}
|
||||
//获取监控设备
|
||||
$productDevice = ProductDevice::where('product_id',$landProduct['product_id'])->where('device_type',3)->column('device_id');
|
||||
if(empty($productDevice)){
|
||||
return $this->fail('当前土地未绑定监控设备');
|
||||
}
|
||||
//获取设备编号
|
||||
$device = Device::where('id','in',$productDevice)->select();
|
||||
return $this->success('请求成功',$device->toArray());
|
||||
}
|
||||
|
||||
// 获取短信验证码
|
||||
public function code(): Json
|
||||
{
|
||||
//验证请求方式
|
||||
if(!$this->request->isPost()){
|
||||
return $this->fail('请求方式错误');
|
||||
}
|
||||
//获取参数
|
||||
$params = $this->request->post(['phone','scene']);
|
||||
if(empty($params['phone']) || empty($params['scene'])){
|
||||
return $this->fail('缺少必要参数');
|
||||
}
|
||||
if(!in_array($params['scene'],[NoticeEnum::LOGIN_CAPTCHA,NoticeEnum::BIND_MOBILE_CAPTCHA,NoticeEnum::CHANGE_MOBILE_CAPTCHA,NoticeEnum::FIND_LOGIN_PASSWORD_CAPTCHA])){
|
||||
return $this->fail('短信场景错误');
|
||||
}
|
||||
//发送短信
|
||||
try {
|
||||
$result = event('Notice', [
|
||||
'scene_id' => $params['scene'],
|
||||
'params' => [
|
||||
'mobile' => $params['phone'],
|
||||
'code' => mt_rand(100000, 999999),
|
||||
]
|
||||
]);
|
||||
return $this->success($result[0]);
|
||||
}catch(\Exception $e){
|
||||
//记录日志
|
||||
Log::error($e->getMessage());
|
||||
return $this->fail($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function suYuan(): Json
|
||||
{
|
||||
$params = $this->request->get(['plant_id']);
|
||||
if(empty($params['plant_id'])){
|
||||
return $this->fail('参数错误');
|
||||
}
|
||||
$plantInfo = Plant::where('id',$params['plant_id'])->findOrEmpty();
|
||||
if($plantInfo->isEmpty()){
|
||||
return $this->fail('种植信息错误');
|
||||
}
|
||||
if($plantInfo['status'] != 2){
|
||||
return $this->fail('种植信息状态错误');
|
||||
}
|
||||
$landInfo = Land::where('id',$plantInfo['land_id'])->findOrEmpty();
|
||||
if($landInfo->isEmpty()){
|
||||
return $this->fail('土地信息错误');
|
||||
}
|
||||
$plantInfo['pic'] = json_decode($plantInfo['pic'],true);
|
||||
$plantInfo['group_day'] = floor(($plantInfo['harvest_date'] - $plantInfo['plant_date']) / 86400);
|
||||
$plantInfo['plant_date'] = date('Y-m-d',$plantInfo['plant_date']);
|
||||
$plantInfo['harvest_date'] = date('Y-m-d',$plantInfo['harvest_date']);
|
||||
$plantInfo['land_name'] = $landInfo['title'];
|
||||
$plantInfo['land_area'] = $landInfo['total_area'];
|
||||
$plantInfo['land_address'] = $landInfo['province_name'].$landInfo['city_name'].$landInfo['county_name'].$landInfo['town_name'].$landInfo['village_name'].$landInfo['group_name'];
|
||||
//获取操作
|
||||
$action = Action::field('type,type_text,detail,create_time')->where('plant_id',$params['plant_id'])->select()->each(function($item){
|
||||
$item['detail'] = json_decode($item['detail'],true);
|
||||
return $item;
|
||||
})->toArray();
|
||||
$plantInfo['actions'] = $action;
|
||||
return $this->success('请求成功',$plantInfo->toArray());
|
||||
}
|
||||
<?php
|
||||
namespace app\api\controller;
|
||||
|
||||
use app\common\enum\notice\NoticeEnum;
|
||||
use app\common\model\action\Action;
|
||||
use app\common\model\device\Device;
|
||||
use app\common\model\device\MonitorThreshold;
|
||||
use app\common\model\land\Land;
|
||||
use app\common\model\land\LandProduct;
|
||||
use app\common\model\LandCollection;
|
||||
use app\common\model\monitor\MonitorData;
|
||||
use app\common\model\plant\Plant;
|
||||
use app\common\model\product\ProductDevice;
|
||||
use think\facade\Log;
|
||||
use think\response\Json;
|
||||
|
||||
|
||||
/**
|
||||
* index
|
||||
* Class IndexController
|
||||
* @package app\api\controller
|
||||
*/
|
||||
class IndexController extends BaseApiController
|
||||
{
|
||||
|
||||
public array $notNeedLogin = ['code','suYuan'];
|
||||
|
||||
//溯源首页
|
||||
public function index(): Json
|
||||
{
|
||||
$params = $this->request->get(['land_id']);
|
||||
//获取土地信息
|
||||
if(isset($params['land_id']) && $params['land_id'] !=''){
|
||||
$data = Land::where('user_id',$this->userId)->where('id',$params['land_id'])->order('id desc')->findOrEmpty()->toArray();
|
||||
}else{
|
||||
$data = Land::where('user_id',$this->userId)->order('id desc')->findOrEmpty()->toArray();
|
||||
}
|
||||
if(empty($data)){
|
||||
return $this->success('请求成功',[]);
|
||||
}
|
||||
$data['pic'] = json_decode($data['pic'],true);
|
||||
//获取绑定产品
|
||||
$landProduct = LandProduct::where('land_id',$data['id'])->findOrEmpty();
|
||||
if($landProduct->isEmpty()){
|
||||
$data['monitor'] = [];
|
||||
}else{
|
||||
$productDevice = ProductDevice::where('product_id',$landProduct['product_id'])->findOrEmpty();
|
||||
$device = Device::where('id', $productDevice['device_id'])->findOrEmpty();
|
||||
$data['video_url'] = $device['video_url'];
|
||||
$landCollection = LandCollection::where('land_id',$params['land_id'])->order('id desc')->findOrEmpty();
|
||||
if($landCollection->isEmpty()){
|
||||
$data['monitor'] = [];
|
||||
}else{
|
||||
$data['monitor']['soil_monitor_data'] = [
|
||||
'soil_temperature'=>$landCollection['soil_temperature'],
|
||||
'soil_moisture'=>$landCollection['soil_moisture'],
|
||||
'conductivity'=>$landCollection['soil_conductivity'],
|
||||
'ph'=>$landCollection['soil_PH'],
|
||||
'n_content'=>$landCollection['soil_potassium_phosphate_nitrogen'],
|
||||
'p_content'=>$landCollection['soil_potassium_phosphate_phosphorus'],
|
||||
'k_content'=>$landCollection['soil_potassium_phosphate_potassium'],
|
||||
'create_time' => $landCollection['create_time']
|
||||
];
|
||||
$data['monitor']['air_monitor_data'] = [
|
||||
'wind_direction'=>$landCollection['wind_direction'],
|
||||
'wind_speed'=>$landCollection['wind_speed'],
|
||||
'air_temperature'=>$landCollection['ambient_temperature'],
|
||||
'air_moisture'=>$landCollection['ambient_humidity'],
|
||||
'co2_content'=>$landCollection['carbon_dioxide'],
|
||||
'pressure'=>$landCollection['ambient_air_pressure'],
|
||||
'rainfall'=>$landCollection['rainfall'],
|
||||
'light_intensity'=>$landCollection['ambient_lighting'],
|
||||
'create_time' => $landCollection['create_time']
|
||||
];
|
||||
$monitorThreshold = MonitorThreshold::select();
|
||||
if($monitorThreshold->toArray()!=null){
|
||||
$monitorThreshold=$monitorThreshold[0];
|
||||
}else{
|
||||
$monitorThreshold=[];
|
||||
}
|
||||
$monitorThreshold['ambient_air_pressure_max'] = 120;
|
||||
$monitorThreshold['ambient_air_pressure_min'] = 10;
|
||||
$data['monitor']['threshold'] = $monitorThreshold;
|
||||
}
|
||||
}
|
||||
return $this->success('请求成功',$data);
|
||||
}
|
||||
|
||||
//视频监控
|
||||
public function video(): Json
|
||||
{
|
||||
$params = $this->request->get(['land_id']);
|
||||
if(empty($params['land_id'])){
|
||||
return $this->fail('参数错误');
|
||||
}
|
||||
//获取土地绑定的产品
|
||||
$landProduct = LandProduct::where('land_id',$params['land_id'])->findOrEmpty();
|
||||
if($landProduct->isEmpty()){
|
||||
return $this->fail('当前土地未绑定设备产品');
|
||||
}
|
||||
//获取监控设备
|
||||
$productDevice = ProductDevice::where('product_id',$landProduct['product_id'])->where('device_type',3)->column('device_id');
|
||||
if(empty($productDevice)){
|
||||
return $this->fail('当前土地未绑定监控设备');
|
||||
}
|
||||
//获取设备编号
|
||||
$device = Device::where('id','in',$productDevice)->select();
|
||||
return $this->success('请求成功',$device->toArray());
|
||||
}
|
||||
|
||||
// 获取短信验证码
|
||||
public function code(): Json
|
||||
{
|
||||
//验证请求方式
|
||||
if(!$this->request->isPost()){
|
||||
return $this->fail('请求方式错误');
|
||||
}
|
||||
//获取参数
|
||||
$params = $this->request->post(['phone','scene']);
|
||||
if(empty($params['phone']) || empty($params['scene'])){
|
||||
return $this->fail('缺少必要参数');
|
||||
}
|
||||
if(!in_array($params['scene'],[NoticeEnum::LOGIN_CAPTCHA,NoticeEnum::BIND_MOBILE_CAPTCHA,NoticeEnum::CHANGE_MOBILE_CAPTCHA,NoticeEnum::FIND_LOGIN_PASSWORD_CAPTCHA])){
|
||||
return $this->fail('短信场景错误');
|
||||
}
|
||||
//发送短信
|
||||
try {
|
||||
$result = event('Notice', [
|
||||
'scene_id' => $params['scene'],
|
||||
'params' => [
|
||||
'mobile' => $params['phone'],
|
||||
'code' => mt_rand(100000, 999999),
|
||||
]
|
||||
]);
|
||||
return $this->success($result[0]);
|
||||
}catch(\Exception $e){
|
||||
//记录日志
|
||||
Log::error($e->getMessage());
|
||||
return $this->fail($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function suYuan(): Json
|
||||
{
|
||||
$params = $this->request->get(['plant_id']);
|
||||
if(empty($params['plant_id'])){
|
||||
return $this->fail('参数错误');
|
||||
}
|
||||
$plantInfo = Plant::where('id',$params['plant_id'])->findOrEmpty();
|
||||
if($plantInfo->isEmpty()){
|
||||
return $this->fail('种植信息错误');
|
||||
}
|
||||
if($plantInfo['status'] != 2){
|
||||
return $this->fail('种植信息状态错误');
|
||||
}
|
||||
$landInfo = Land::where('id',$plantInfo['land_id'])->findOrEmpty();
|
||||
if($landInfo->isEmpty()){
|
||||
return $this->fail('土地信息错误');
|
||||
}
|
||||
$plantInfo['pic'] = json_decode($plantInfo['pic'],true);
|
||||
$plantInfo['group_day'] = floor(($plantInfo['harvest_date'] - $plantInfo['plant_date']) / 86400);
|
||||
$plantInfo['plant_date'] = date('Y-m-d',$plantInfo['plant_date']);
|
||||
$plantInfo['harvest_date'] = date('Y-m-d',$plantInfo['harvest_date']);
|
||||
$plantInfo['land_name'] = $landInfo['title'];
|
||||
$plantInfo['land_area'] = $landInfo['total_area'];
|
||||
$plantInfo['land_address'] = $landInfo['province_name'].$landInfo['city_name'].$landInfo['county_name'].$landInfo['town_name'].$landInfo['village_name'].$landInfo['group_name'];
|
||||
//获取操作
|
||||
$action = Action::field('type,type_text,detail,create_time')->where('plant_id',$params['plant_id'])->select()->each(function($item){
|
||||
$item['detail'] = json_decode($item['detail'],true);
|
||||
return $item;
|
||||
})->toArray();
|
||||
$plantInfo['actions'] = $action;
|
||||
return $this->success('请求成功',$plantInfo->toArray());
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue