新增农户家畜养殖模块接口

This commit is contained in:
weiz 2023-10-24 16:58:53 +08:00
parent 2c2b68a790
commit 119d1dde61
3 changed files with 249 additions and 1 deletions

View File

@ -0,0 +1,217 @@
<?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']);
if(empty($params['user_id']) || empty($params['name']) || empty($params['breed']) || empty($params['type']) || !in_array($params['type'],[1,2]) || empty($params['age']) || empty($params['status']) || !in_array($params['status'],[1,2,3,4]) || empty($params['weight'])){
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();
$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']);
$data['pic_detail']['create_time'] = date('Y-m-d H:i:s',$data['pic_detail']['create_time']);
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();
return $this->success('请求成功',$data);
}
}

View File

@ -179,6 +179,9 @@
return $this->fail('参数错误');
}
$data = Db::name('farmer_land_crop_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);
@ -196,6 +199,7 @@
$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'];
$data = Db::name('farmer_land_crop_record')->where('crop_id',$params['crop_id'])->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;

View File

@ -46,6 +46,26 @@ class UserController extends BaseApiController
}
$curl_result['data']['land_detail'] = $lands;
}
//判断是否是家畜养殖户
if($curl_result['data']['is_dw_user']){
//获取家畜养殖数量
$animalCount = Db::name('farmer_animal_breed')->where('user_id',$params['user_id'])->count();
//获取家畜是公的数量
$maleCount = Db::name('farmer_animal_breed')->where('user_id',$params['user_id'])->where('animal_gender',1)->count();
//获取家畜是母的数量
$maternalCount = Db::name('farmer_animal_breed')->where('user_id',$params['user_id'])->where('animal_gender',2)->count();
//获取家畜养殖种类
$animalKind = Db::name('farmer_animal_breed')->distinct(true)->where('user_id',$params['user_id'])->limit(4)->column('animal_kind');
//获取家畜养殖具体品种
$animalBreed = Db::name('farmer_animal_breed')->distinct(true)->where('user_id',$params['user_id'])->limit(4)->column('animal_breed');
$curl_result['data']['animal_detail'] = [
'total_count' => $animalCount,
'male_count' => $maleCount,
'maternal_count' => $maternalCount,
'kind' => $animalKind,
'breed' => $animalBreed
];
}
//返回数据
return json($curl_result);
}
@ -72,9 +92,16 @@ class UserController extends BaseApiController
$ar2[]=$val;
}
}
$arr1[$value['type_name']] = $ar2;
$arr1[$value['type_name']]['type_id'] = $value['type_id'];
$arr1[$value['type_name']]['actions'] = $ar2;
$ar2 =[];
}
if($params['type'] == 3){
foreach($arr1 as $k=>$v) {
$actionIds = array_column($v['actions'],'id');
$arr1[$k]['action_record'] = Db::name('farmer_animal_record')->where('action_id','in',$actionIds)->order('id desc')->limit(5)->select();
}
}
return $this->success('请求成功',$arr1);
}