2023-10-24 16:58:53 +08:00
< ? php
namespace app\api\controller ;
use think\facade\Db ;
use think\response\Json ;
class AnimalBreedController extends BaseApiController
{
public array $notNeedLogin = [
'addAnimal' , 'animalInfo' , 'animalList' , 'animalStatus' ,
'addAnimalPic' , 'animalPicList' ,
'addAnimalRecord' , 'delAnimalRecord' , 'ediAnimalRecord' , 'animalRecordInfo' , 'animalRecordList' ,
'animalEnvData'
];
//添加饲养动物
public function addAnimal () : Json
{
$params = $this -> request -> post ([ 'user_id' , 'kind' , 'breed' , 'gender' , 'age' , 'status' , 'weight' , 'pic' ]);
2023-10-25 11:01:17 +08:00
if ( empty ( $params [ 'user_id' ]) || empty ( $params [ 'kind' ]) || empty ( $params [ 'breed' ]) || empty ( $params [ 'gender' ]) || ! in_array ( $params [ 'gender' ],[ 1 , 2 ]) || empty ( $params [ 'age' ]) || empty ( $params [ 'status' ]) || ! in_array ( $params [ 'status' ],[ 1 , 2 , 3 , 4 ]) || empty ( $params [ 'weight' ])){
2023-10-24 16:58:53 +08:00
return $this -> fail ( '参数错误' );
}
//写入数据
Db :: transaction ( function () use ( $params ) {
$animalId = Db :: name ( 'farmer_animal_breed' ) -> insertGetId ([
'user_id' => $params [ 'user_id' ],
'animal_code' => '' ,
'animal_kind' => $params [ 'kind' ],
'animal_breed' => $params [ 'breed' ],
'animal_gender' => $params [ 'gender' ],
'animal_age' => $params [ 'age' ],
'animal_status' => $params [ 'status' ],
'animal_weight' => $params [ 'weight' ],
'create_time' => time ()
]);
if ( ! empty ( $params [ 'pic' ])){
Db :: name ( 'farmer_animal_pic' ) -> insert ([
'animal_id' => $animalId ,
'pic' => $params [ 'pic' ],
'create_time' => time ()
]);
}
});
//返回信息
return $this -> success ( '添加成功' );
}
//获取饲养动物详情
public function animalInfo () : Json
{
$params = $this -> request -> get ([ 'animal_id' ]);
if ( empty ( $params [ 'animal_id' ])){
return $this -> fail ( '参数错误' );
}
$data = Db :: name ( 'farmer_animal_breed' ) -> where ( 'id' , $params [ 'animal_id' ]) -> findOrEmpty ();
2023-10-25 11:01:17 +08:00
if ( empty ( $data )){
return $this -> fail ( '数据不存在' );
}
2023-10-24 16:58:53 +08:00
$data [ 'pic_detail' ] = Db :: name ( 'farmer_animal_pic' ) -> field ( 'pic,create_time' ) -> where ( 'animal_id' , $params [ 'animal_id' ]) -> order ( 'id desc' ) -> findOrEmpty ();
$data [ 'create_time' ] = date ( 'Y-m-d H:i:s' , $data [ 'create_time' ]);
2023-10-25 11:01:17 +08:00
if ( ! empty ( $data [ 'pic_detail' ])){
$data [ 'pic_detail' ][ 'create_time' ] = date ( 'Y-m-d H:i:s' , $data [ 'pic_detail' ][ 'create_time' ]);
}
2023-10-24 16:58:53 +08:00
return $this -> success ( '请求成功' , $data );
}
//饲养动物列表
public function animalList () : Json
{
$params = $this -> request -> get ([ 'user_id' , 'page_no' , 'page_size' , 'keyword' ]);
if ( empty ( $params [ 'user_id' ])){
return $this -> fail ( '参数错误' );
}
//设置分页参数
$pageNo = empty ( $params [ 'page_no' ]) || $params [ 'page_no' ] < 0 ? 1 : $params [ 'page_no' ];
$pageSize = empty ( $params [ 'page_size' ]) || $params [ 'page_size' ] < 0 ? 10 : $params [ 'page_size' ];
//设置搜素条件
$query = 'user_id = ' . $params [ 'user_id' ];
if ( ! empty ( $params [ 'keyword' ])){
$query .= ' and (animal_code LIKE "%' . $params [ 'keyword' ] . '%" or animal_kind LIKE "%' . $params [ 'keyword' ] . '%" or animal_breed LIKE "%' . $params [ 'keyword' ] . '%")' ;
}
//获取数据
$data = Db :: name ( 'farmer_animal_breed' ) -> whereRaw ( $query ) -> page ( $pageNo , $pageSize ) -> order ( 'id desc' ) -> select () -> toArray ();
//返回数据
return $this -> success ( '请求成功' , $data );
}
//更新饲养动物状态
public function animalStatus () : Json
{
$params = $this -> request -> post ([ 'animal_id' , 'status' ]);
if ( empty ( $params [ 'animal_id' ]) || empty ( $params [ 'status' ]) || ! in_array ( $params [ 'status' ],[ 1 , 2 , 3 , 4 ])){
return $this -> fail ( '参数错误' );
}
$result = Db :: name ( 'farmer_animal_breed' ) -> where ( 'id' , $params [ 'animal_id' ]) -> update ([ 'animal_status' => $params [ 'status' ]]);
return $result ? $this -> success ( '更新成功' ) : $this -> fail ( '更新失败' );
}
//上传动物养殖情况图片
public function addAnimalPic () : Json
{
$params = $this -> request -> post ([ 'animal_id' , 'pic' ]);
if ( empty ( $params [ 'animal_id' ]) || empty ( $params [ 'pic' ])){
return $this -> fail ( '参数错误' );
}
//写入数据
$params [ 'create_time' ] = time ();
$result = Db :: name ( 'farmer_animal_pic' ) -> insert ( $params );
//返回
return $result ? $this -> success ( '添加成功' ) : $this -> fail ( '添加失败' );
}
//动物养殖情况图片列表
public function animalPicList () : Json
{
//获取参数
$params = $this -> request -> get ([ 'animal_id' ]);
if ( empty ( $params [ 'animal_id' ])){
return $this -> fail ( '参数错误' );
}
$data = Db :: name ( 'farmer_animal_pic' ) -> where ( 'animal_id' , $params [ 'animal_id' ]) -> order ( 'id desc' ) -> select () -> each ( function ( $item ){
$item [ 'create_time' ] = date ( 'Y-m-d H:i:s' , $item [ 'create_time' ]);
return $item ;
}) -> toArray ();
return $this -> success ( '请求成功' , $data );
}
//添加饲养动物操作记录
public function addAnimalRecord () : Json
{
$params = $this -> request -> post ([ 'user_id' , 'action_id' , 'action_content' ]);
if ( empty ( $params [ 'user_id' ]) || empty ( $params [ 'action_id' ]) || empty ( $params [ 'action_content' ])){
return $this -> fail ( '参数错误' );
}
if ( empty ( json_decode ( $params [ 'action_content' ]))) {
return $this -> fail ( '参数错误' );
}
//写入数据
$params [ 'create_time' ] = time ();
$result = Db :: name ( 'farmer_animal_record' ) -> insert ( $params );
//返回
return $result ? $this -> success ( '添加成功' ) : $this -> fail ( '添加失败' );
}
//删除饲养动物操作记录
public function delAnimalRecord () : Json
{
$params = $this -> request -> post ([ 'record_id' ]);
if ( empty ( $params [ 'record_id' ])){
return $this -> fail ( '参数错误' );
}
$result = Db :: name ( 'farmer_animal_record' ) -> where ( 'id' , $params [ 'record_id' ]) -> delete ();
return $result ? $this -> success ( '删除成功' ) : $this -> fail ( '删除失败' );
}
//编辑饲养动物操作记录
public function ediAnimalRecord () : Json
{
$params = $this -> request -> post ([ 'record_id' , 'action_content' ]);
if ( empty ( $params [ 'record_id' ]) || empty ( $params [ 'action_content' ])){
return $this -> fail ( '参数错误' );
}
if ( empty ( json_decode ( $params [ 'action_content' ]))) {
return $this -> fail ( '参数错误' );
}
//修改数据
$result = Db :: name ( 'farmer_animal_record' ) -> where ( 'id' , $params [ 'record_id' ]) -> update ([ 'action_content' => $params [ 'action_content' ]]);
//返回
return $result ? $this -> success ( '修改成功' ) : $this -> fail ( '修改失败' );
}
//获取饲养动物操作记录详情
public function animalRecordInfo () : Json
{
$params = $this -> request -> get ([ 'record_id' ]);
if ( empty ( $params [ 'record_id' ])){
return $this -> fail ( '参数错误' );
}
$data = Db :: name ( 'farmer_animal_record' ) -> where ( 'id' , $params [ 'record_id' ]) -> findOrEmpty ();
if ( empty ( $data )){
return $this -> fail ( '数据不存在' );
}
$data [ 'action_content' ] = json_decode ( $data [ 'action_content' ], true );
$data [ 'action_detail' ] = Db :: name ( 'farmer_action_detail' ) -> where ( 'action_id' , 'in' , $data [ 'action_id' ]) -> select () -> toArray ();
return $this -> success ( '请求成功' , $data );
}
//获取饲养动物操作记录列表
public function animalRecordList () : Json
{
$params = $this -> request -> get ([ 'user_id' , 'action_type_id' , 'page_no' , 'page_size' ]);
if ( empty ( $params [ 'user_id' ]) || empty ( $params [ 'action_type_id' ])){
return $this -> fail ( '参数错误' );
}
//设置分页条件
$pageNo = empty ( $params [ 'page_no' ]) || $params [ 'page_no' ] < 0 ? 1 : $params [ 'page_no' ];
$pageSize = empty ( $params [ 'page_size' ]) || $params [ 'page_size' ] < 0 ? 10 : $params [ 'page_size' ];
//获取操作分类下的操作id
$actions = Db :: name ( 'farmer_action' ) -> where ( 'type_id' , $params [ 'action_type_id' ]) -> select () -> toArray ();
$actionIds = array_column ( $actions , 'id' );
//获取数据
$data = Db :: name ( 'farmer_animal_record' ) -> where ( 'user_id' , $params [ 'user_id' ]) -> where ( 'action_id' , 'in' , $actionIds ) -> page ( $pageNo , $pageSize ) -> order ( 'create_time desc' ) -> select () -> each ( function ( $item ){
$item [ 'action_name' ] = Db :: name ( 'farmer_action' ) -> where ( 'id' , $item [ 'action_id' ]) -> findOrEmpty ()[ 'name' ];
$item [ 'action_content' ] = json_decode ( $item [ 'action_content' ], true );
$item [ 'create_time' ] = date ( 'Y-m-d H:i:s' , $item [ 'create_time' ]);
return $item ;
}) -> toArray ();
return $this -> success ( '请求成功' , $data );
}
//获取农户动物饲养环境监测数据
public function animalEnvData () : Json
{
$params = $this -> request -> get ([ 'user_id' ]);
if ( empty ( $params [ 'user_id' ])){
return $this -> fail ( '参数错误' );
}
$data = Db :: name ( 'farmer_animal_env_data' ) -> where ( 'user_id' , $params [ 'user_id' ]) -> whereDay ( 'create_time' , date ( 'Y-m-d' , time ())) -> findOrEmpty ();
2023-10-25 11:01:17 +08:00
if ( ! empty ( $data )){
$data [ 'create_time' ] = date ( 'Y-m-d H:i:s' , $data [ 'create_time' ]);
}
2023-10-24 16:58:53 +08:00
return $this -> success ( '请求成功' , $data );
}
}