feat: init project codebase
This commit is contained in:
@@ -0,0 +1,229 @@
|
||||
<?php
|
||||
defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
class Breeding extends ApiController
|
||||
{
|
||||
function __construct()
|
||||
{
|
||||
header('Access-Control-Allow-Credentials: true');
|
||||
parent::__construct();
|
||||
//跨域
|
||||
$this->load->library('session');
|
||||
$this->load->model('customer_model');
|
||||
//$this->session->{Customer_model::SESSION_KEY} = 1;
|
||||
$this->checkUser();
|
||||
}
|
||||
|
||||
//获取繁育人信息
|
||||
public function info_get(){
|
||||
$row = $this->customer_model->get($this->_user_id);
|
||||
//统计数量
|
||||
$this->load->model('sample_model');
|
||||
$this->load->model('breeding_plan_model');
|
||||
$row['total_sample'] = $this->sample_model->getUserTotal($this->_user_id);
|
||||
$row['total_breeding_plan'] = $this->breeding_plan_model->getUserTotal($this->_user_id);
|
||||
$this->success($row);
|
||||
}
|
||||
|
||||
//获取种猫/犬
|
||||
public function candidate_post(){
|
||||
$this->load->model('sample_model');
|
||||
$this->load->model('report_model');
|
||||
$data = $this->json_input();
|
||||
$ids = [];
|
||||
if(!empty($data['tree']) && is_array($data['tree'])){
|
||||
$ids = $this->_getTreeSampleIds($data['tree']);
|
||||
}
|
||||
$pet_sex = empty($data['pet_sex'])?0:(int)$data['pet_sex'];
|
||||
$pet_species = empty($data['pet_species'])?0:(int)$data['pet_species'];
|
||||
|
||||
$list = $this->sample_model->getBreeding($this->_user_id,$ids,$pet_species,$pet_sex,100);
|
||||
$ret = [];
|
||||
foreach ($list as $val) {
|
||||
$reportJson = $this->report_model->get_report_json($val['device_id'],$val['pet_species']);
|
||||
$ret[] = $this->_getCandidateItem($val,$reportJson);
|
||||
}
|
||||
$this->success($ret);
|
||||
}
|
||||
|
||||
//繁育计划保存
|
||||
public function plan_save_post()
|
||||
{
|
||||
$data = $this->json_input();
|
||||
if(empty($data['tree'])){
|
||||
$this->error('参数不完整');
|
||||
}
|
||||
$tree = $data['tree'];
|
||||
//保存孩子的样本id
|
||||
$children_ids = [];
|
||||
foreach ($tree['children'] as $item) {
|
||||
if(!empty($item['id'])){
|
||||
$children_ids[] = $item['id'];
|
||||
}
|
||||
}
|
||||
//雌性
|
||||
$female_id = !empty($tree['female']['self']['id'])?(int)$tree['female']['self']['id']:0;
|
||||
$female_father_id = !empty($tree['female']['father']['id'])?(int)$tree['female']['father']['id']:0;
|
||||
$female_mother_id = !empty($tree['female']['mother']['id'])?(int)$tree['female']['mother']['id']:0;
|
||||
|
||||
//雄性
|
||||
$male_id = !empty($tree['male']['self']['id'])?(int)$tree['male']['self']['id']:0;
|
||||
$male_father_id = !empty($tree['male']['father']['id'])?(int)$tree['male']['father']['id']:0;
|
||||
$male_mother_id = !empty($tree['male']['mother']['id'])?(int)$tree['male']['mother']['id']:0;
|
||||
|
||||
if(empty($female_id) || empty($male_id)){
|
||||
$this->error('关系不完整');
|
||||
}
|
||||
$this->load->model('breeding_plan_model');
|
||||
$entity = [
|
||||
'children_ids' => implode(',',$children_ids),
|
||||
'user_id' => $this->_user_id,
|
||||
'female_id' => $female_id,
|
||||
'female_father_id' => $female_father_id,
|
||||
'female_mother_id' => $female_mother_id,
|
||||
'male_id' => $male_id,
|
||||
'male_father_id' => $male_father_id,
|
||||
'male_mother_id' => $male_mother_id,
|
||||
];
|
||||
if(empty($data['id'])){
|
||||
$this->breeding_plan_model->add($entity);
|
||||
}else{
|
||||
$this->breeding_plan_model->update($entity,[
|
||||
'id'=>$data['id']
|
||||
]);
|
||||
}
|
||||
$this->success('保存成功');
|
||||
}
|
||||
|
||||
|
||||
//繁育计划列表
|
||||
public function list_get()
|
||||
{
|
||||
$this->load->model('breeding_plan_model');
|
||||
$ret = $this->breeding_plan_model->get($this->_user_id,'user_id',true);
|
||||
$list = [];
|
||||
if($ret){
|
||||
//获取所有相关样品
|
||||
$sample_ids = [];
|
||||
foreach ($ret as $item) {
|
||||
$sample_ids[] = $item['male_id'];
|
||||
$sample_ids[] = $item['female_id'];
|
||||
}
|
||||
|
||||
$this->load->model('sample_model');
|
||||
//根据id获取样本信息
|
||||
$samples = $this->sample_model->getByUserIds($sample_ids);
|
||||
$sample_map = [];
|
||||
foreach ($samples as $item) {
|
||||
$this->sample_model->format($item);
|
||||
$sample_map[$item['id']] = $item;
|
||||
}
|
||||
|
||||
//格式化信息
|
||||
foreach ($ret as $item) {
|
||||
$male = [
|
||||
'name'=>$sample_map[$item['male_id']]['pet_name'],
|
||||
'pet_img'=>$sample_map[$item['male_id']]['pet_img'],
|
||||
'device_id'=>$sample_map[$item['male_id']]['device_id'],
|
||||
];
|
||||
$female = [
|
||||
'name'=>$sample_map[$item['female_id']]['pet_name'],
|
||||
'pet_img'=>$sample_map[$item['female_id']]['pet_img'],
|
||||
'device_id'=>$sample_map[$item['female_id']]['device_id'],
|
||||
];
|
||||
$tmp = [
|
||||
'id'=>$item['id'],
|
||||
'male'=>$male,
|
||||
'female'=>$female,
|
||||
];
|
||||
$list[] = $tmp;
|
||||
}
|
||||
}
|
||||
|
||||
$this->success($list);
|
||||
}
|
||||
|
||||
//繁育计划列表
|
||||
public function detail_get()
|
||||
{
|
||||
$id = $this->input->get('id');
|
||||
if(empty($id)){
|
||||
$this->error('参数错误');
|
||||
}
|
||||
$this->load->model('breeding_plan_model');
|
||||
$plan = $this->breeding_plan_model->get($id);
|
||||
if(!$plan){
|
||||
$this->error('计划不存在');
|
||||
}
|
||||
$tree = [
|
||||
'male'=>[
|
||||
'father'=>$this->_getNode($plan['male_father_id']),
|
||||
'mother'=>$this->_getNode($plan['male_mother_id']),
|
||||
'self'=>$this->_getNode($plan['male_id']),
|
||||
],
|
||||
'female'=>[
|
||||
'father'=>$this->_getNode($plan['female_father_id']),
|
||||
'mother'=>$this->_getNode($plan['female_mother_id']),
|
||||
'self'=>$this->_getNode($plan['female_id']),
|
||||
],
|
||||
'children'=>[]
|
||||
];
|
||||
if(!empty($plan['children_ids'])){
|
||||
$plan['children_ids'] = explode(',',$plan['children_ids']);
|
||||
foreach ($plan['children_ids'] as $val) {
|
||||
$tree['children'][] = $this->_getNode($val);
|
||||
}
|
||||
}
|
||||
//如果没有children,补一个
|
||||
if(empty($tree['children'])){
|
||||
$tree['children'][] = [
|
||||
'id'=>0,
|
||||
'pet_name'=>'',
|
||||
'pet_img'=>'',
|
||||
];
|
||||
}
|
||||
|
||||
$this->success($tree);
|
||||
}
|
||||
|
||||
|
||||
//繁育计划节点
|
||||
protected function _getNode($sample_id)
|
||||
{
|
||||
$this->load->model('sample_model');
|
||||
$sample = $this->sample_model->get($sample_id);
|
||||
if(!$sample){
|
||||
return [
|
||||
'id'=>0
|
||||
];
|
||||
}
|
||||
return $sample;
|
||||
}
|
||||
|
||||
//繁育计划候选列表项目
|
||||
protected function _getCandidateItem($sample,$reportJson)
|
||||
{
|
||||
$lineage = !empty($reportJson['血统分析']['body']['品系纯度'])?$reportJson['血统分析']['body']['品系纯度']:[];
|
||||
$lineage = implode(',',array_keys($lineage));
|
||||
|
||||
$item = [
|
||||
'id'=>$sample['id'],
|
||||
'pet_name'=>$sample['pet_name'],
|
||||
'pet_img'=>$sample['pet_img'],
|
||||
'pet_sex'=>$sample['pet_sex'],
|
||||
'lineage'=>$lineage,
|
||||
];
|
||||
return $item;
|
||||
}
|
||||
|
||||
//繁育计划树的所有id
|
||||
protected function _getTreeSampleIds($tree)
|
||||
{
|
||||
$ids = [];
|
||||
foreach ($tree as $key=>$val) {
|
||||
foreach ($val as $v) {
|
||||
$ids[] = $v['id'];
|
||||
}
|
||||
}
|
||||
return array_filter(array_unique($ids));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user