SchoolPhysicalExamination/application/NewReedaw/controller/app/Body.php

667 lines
36 KiB
PHP
Raw Normal View History

2025-10-11 18:11:41 +08:00
<?php
namespace app\NewReedaw\controller\app;
use think\Controller;
use think\Db;
use think\Cache;
use think\Log;
use PHPMailer\PHPMailer\PHPMailer;
use app\NewReedaw\controller\app\Cardparts;
class Body extends Base{
protected $body_db_name = [
'zhanghao'=>'app_account_number',
'juese'=>'app_user_data',
'body_data'=>'app_card_body_data',
'bmi'=>'pc_bmistand',
'heigh'=>'pc_heightstand',
'weigh'=>'pc_weightstand',
'chufang1'=>'pc_childrenprescription',
'chufang2'=>'pc_childprescriptionbyage',
];
protected $result_end_data_mould = [
'name'=>'',
'value'=>'',
'unit'=>'',
'standard'=>'',
'color'=>'',
'list'=>[]
];
protected $age_limit = 16;
protected $unit_name = ['score'=>'身体得分','height'=>'身高','weight'=>'体重','bmi'=>'BMI','fat_r'=>'脂肪率','fat_w'=>'脂肪量','muscle'=>'肌肉率','muscleval'=>'肌肉量','water'=>'水分','bone'=>'骨重','protein'=>'蛋白率','proteinval'=>'蛋白量','kcal'=>'基础代谢','visceral'=>'内脏指数','sfr'=>'皮下脂肪','body_level'=>'肥胖等级','body_type'=>'身体类型'];
protected $unit_symbol = ['score'=>'分','height'=>'CM','weight'=>'公斤','bmi'=>'','fat_r'=>'%','fat_w'=>'kg','muscle'=>'%','muscleval'=>'kg','water'=>'kg','bone'=>'kg','protein'=>'%','proteinval'=>'kg','kcal'=>'kcal','visceral'=>'','sfr'=>'%',];
protected $standard_color = [
'fat_r'=>['偏低'=>'#FCDB67','标准'=>'#58D268','偏高'=>'#FCAA00','高'=>'#FD5752'],
'fat_w'=>['偏低'=>'#FCDB67','标准'=>'#58D268','偏高'=>'#FCAA00','高'=>'#FD5752'],
'muscle'=>['不足'=>'#FFDA68','标准'=>'#59CD6F','优'=>'#3C64D4'],
'muscleval'=>['不足'=>'#FFDA68','标准'=>'#59CD6F','优'=>'#3C64D4'],
'water'=>['不足'=>'#FED966','标准'=>'#58CF6B','优'=>'#3A68D7'],
'proteinval'=>['不足'=>'#FED966','标准'=>'#58CF6B','优'=>'#3A68D7'],
'bone'=>['不足'=>'#FED966','标准'=>'#58CF6B','优'=>'#3A68D7'],
'protein'=>['不足'=>'#FED966','标准'=>'#58CF6B','优'=>'#3A68D7'],
'kcal'=>['偏低'=>'#FF5656','优'=>'#3A68D4'],
'visceral'=>['标准'=>'#55CF6C','警惕'=>'#FEAC00','危险'=>'#FB5A52'],
'sfr'=>['不足'=>'#FCDB68','标准'=>'#59D16F','偏高'=>'#FEAB03'],
];
protected $bhw_list = [
'bmi'=>[
['min_val'=>'0','max_val'=>'','text'=>'消瘦','color'=>'#FDDA6B'],
['min_val'=>'','max_val'=>'','text'=>'正常','color'=>'#59D06A'],
['min_val'=>'','max_val'=>'','text'=>'偏重','color'=>'#FDAA02'],
['min_val'=>'','max_val'=>'50','text'=>'肥胖','color'=>'#FB5755'],
],
'height'=>[
['min_val'=>'0','max_val'=>'','text'=>'矮','color'=>'#FD5759'],
['min_val'=>'','max_val'=>'','text'=>'偏矮','color'=>'#FAAD01'],
['min_val'=>'','max_val'=>'','text'=>'标准','color'=>'#5BD068'],
['min_val'=>'','max_val'=>'','text'=>'偏高','color'=>'#6793F4'],
['min_val'=>'','max_val'=>'','text'=>'高','color'=>'#3D67D3'],
],
'weight'=>[
['min_val'=>'0','max_val'=>'','text'=>'低','color'=>'#F8595D'],
['min_val'=>'','max_val'=>'','text'=>'偏低','color'=>'#FFAF04'],
['min_val'=>'','max_val'=>'','text'=>'标准','color'=>'#59D168'],
['min_val'=>'','max_val'=>'','text'=>'偏高','color'=>'#FFAF04'],
['min_val'=>'','max_val'=>'','text'=>'高','color'=>'#F8595D'],
]
];
protected $card_body_level = [
'height'=>['value'=>1,'list'=>['矮'=>2,'偏矮'=>3,'标准'=>4,'偏高'=>5,'高'=>5]],
'weight'=>['value'=>3,'list'=>['低'=>1,'偏低'=>1,'标准'=>2,'偏高'=>3,'高'=>3]],
'bmi'=>['value'=>2,'list'=>['消瘦'=>1,'正常'=>2,'偏重'=>3,'肥胖'=>4]],
];
// 加 bcadd(,,20)
// 减 bcsub(,,20)
// 乘 bcmul(,,20)
// 除 bcdiv(,,20)
// 测试token=>'caadd1be045a65f30b92aa805f1de54a'
################################################################接口################################################################
################################################################接口################################################################
################################################################接口################################################################
// 获取角色报告
public function body_report(){
// phpinfo();
// die;
// try {
$data = input('post.');
if(!array_key_exists('token', $data) || !array_key_exists('aud_id', $data)){
return $this->msg(10001);
}
if(!$this->verify_data_is_ok($data['token'],'str')){
return $this->msg(10005,'token type error');
}
if(!$this->verify_data_is_ok($data['aud_id'],'intnum')){
return $this->msg(10005,'aud_id type error');
}
return $this->body_report_action_detailed($data);
// } catch (\Exception $e) {
// // 捕获异常
// $logContent["flie"] = $e->getFile();
// $logContent["line"] = $e->getLine();
// $logContent['all_content'] = "异常信息:\n";
// $logContent['all_content'] .= "消息: " . $e->getMessage() . "\n";
// $logContent['all_content'] .= "代码: " . $e->getCode() . "\n";
// $logContent['all_content'] .= "文件: " . $e->getFile() . "\n";
// $logContent['all_content'] .= "行号: " . $e->getLine() . "\n";
// $logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n";
// $this->record_api_log($data, $logContent, null);
// return $this->msg(99999);
// }
}
################################################################action################################################################
################################################################action################################################################
public function body_report_action_detailed($data){
$result_return = [
"score_name"=>"",
"score_value"=>"",
"score_unit"=>"",
"body_type_name"=>"",
"body_type_value"=>"",
"body_type_unit"=>"",
"record_time"=>"",
'top_list'=>[
[
"name"=>"体重",
"value"=>"0",
"unit"=>"公斤",
"standard"=>"",
"color"=>"",
"list"=>[],
"key_name"=>"weight",
"desc"=>"反映和衡量一个人健康状况的重要标志之一",
"offset"=>"0",
"standard_val"=>"",
"difference_val"=>"",
],
[
"name"=>"身高",
"value"=>"0",
"unit"=>"CM",
"standard"=>"",
"color"=>"",
"list"=>[],
"key_name"=>"height",
"desc"=>"人体纵向部分的长度,源于人体的纵向生长,受遗传因素的影响较大",
"offset"=>"0",
"standard_val"=>"",
"difference_val"=>"",
],
[
"name"=>"BMI",
"value"=>"0",
"unit"=>"公斤",
"standard"=>"",
"color"=>"",
"list"=>[],
"key_name"=>"bmi",
"desc"=>"BMI是身体质量指数,是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。",
"offset"=>"0",
"standard_val"=>"",
"difference_val"=>"",
],
],
'bottom_list' => [],
'cplist'=>[
'nutritionlist'=>[],
'sportlist'=>[],
'sleeplist'=>[],
'moodlist'=>[],
],
'target_current'=>[
'target_weight'=>'0',
'initial_weight'=>'0',
'cumulative_weight'=>'0',
'cumulative_day'=>'0'
],
];
$body_last_data = Db::query("
select
Top 1
acbd.id,
acbd.acd_id,
acbd.record_type,
acbd.create_time,
acbd.last_update_time,
acbd.score,
acbd.fat_r,
acbd.fat_w,
acbd.muscle,
acbd.muscleval,
acbd.water,
acbd.proteinval,
acbd.bone,
acbd.protein,
acbd.kcal,
acbd.visceral,
acbd.sfr,
acbd.body_level,
acbd.aud_id,
acbd.record_time,
acbd.body_type,
acbd.age,
acbd.is_del,
acbd.height,
acbd.height_val,
acbd.weight,
acbd.weight_val,
acbd.bmi,
acbd.body_age,
acbd.head_circumference,
aud.birthday,aud.gender,aud.target_weight,aud.initial_weight,aud.initial_date
from ".$this->body_db_name['body_data']." as acbd
left join ".$this->body_db_name['juese']." as aud on acbd.aud_id=aud.id
where acbd.is_del=0 and acbd.aud_id='".$data['aud_id']."'
order by acbd.record_time desc
");
// return $this->msg($body_last_data);
if(count($body_last_data) <= 0){
return $this->msg($result_return);
}
// 暂时存储头围数据
$head_circumference = $body_last_data[0]['head_circumference']?json_decode($body_last_data[0]['head_circumference'],true):false;
unset($body_last_data[0]['head_circumference']);
// 处理返回数据
$result_end = $this->processing_return_data_new($body_last_data[0]);
$cardparts = new Cardparts;
$result_end['gender'] = $body_last_data[0]['gender'];
$result_end['record_time'] = $body_last_data[0]['record_time'];
$result_end['score'] = $result_end['score'];
$result_end['body_type'] = $result_end['body_type'];
$result_end = $cardparts->conversion_interval($result_end);
$result_end['cplist'] = $this->grow_up_recommendation([
'birthday'=>$body_last_data[0]['birthday'],
'body'=>[
'height'=>$body_last_data[0]['height'],
'weight'=>$body_last_data[0]['weight'],
'bmi'=>$body_last_data[0]['bmi']
],
]);
// // 加入曲线板块底部的减肥计划数据start
// $result_end['target_current'] = $this->base_target_initial_cumulative_weight([
// 'weight'=>$body_last_data[0]['weight']>0?$body_last_data[0]['weight']:0,
// 'target_weight'=>$body_last_data[0]['target_weight']>0?$body_last_data[0]['target_weight']:0,
// 'initial_weight'=>$body_last_data[0]['initial_weight']>0?$body_last_data[0]['initial_weight']:0,
// 'initial_date'=>$body_last_data[0]['initial_date']!=null?$body_last_data[0]['initial_date']:0,
// ]);
// // dump($result_end);
// if(count($result_end['top_list'][2]['list']) <= 0){
// // 这是16岁以上人群
// $data = [
// 'height'=>$body_last_data[0]['height_val'],
// 'weight'=>$body_last_data[0]['weight_val'],
// 'birthday'=>$body_last_data[0]['birthday'],
// 'sex'=>$body_last_data[0]['gender']
// ];
// $temporary_arr_bmi_list = $this->card_bmi_evaluation($data,true);
// $temporary_arr_bmi_list = $temporary_arr_bmi_list->getData();
// if($temporary_arr_bmi_list['code'] == 0){
// $result_end['top_list'][2]['standard'] = $temporary_arr_bmi_list['data']['bmilevel'];
// $result_end['top_list'][2]['color'] = $temporary_arr_bmi_list['data']['bmilevelcolor'];
// $result_end['top_list'][2]['list'] = $temporary_arr_bmi_list['data']['bmilevellist'];
// $result_end['top_list'][2]['offset'] = $temporary_arr_bmi_list['data']['offset'];
// }
// // dump($result_end);
// // die;
// }
// 添加头围数据如果有的话start
if($head_circumference !== false && $this->calculate_age($body_last_data[0]['birthday']) < 3){
if($head_circumference['level'] == '异常' || $head_circumference['value'] == 0){
$offset = 0;
}else{
$offset = $cardparts->calculate_landing_point($head_circumference['list2'],$head_circumference['value'],$head_circumference['level']);
}
$touwei_array = [
'name'=>'头围',
'value'=>$head_circumference['value'],
'unit'=>'CM',
'standard'=>$head_circumference['level'],
'color'=>'',
'list'=>$head_circumference['list2'],
'key_name'=>'head_circumference',
'desc'=>'头围是指绕头部一周的最大长度,头围的大小与脑的发育密切相关',
'offset'=>$offset
];
$touwei_data = $this->touwei_temporary_use($body_last_data[0]['birthday'],$body_last_data[0]['gender']);
if(count($touwei_data)){
$touwei_array['standard_val'] = $touwei_data['middle'];
$touwei_array['difference_val'] = bcsub($touwei_array['value'],$touwei_data['middle'],2);
}else{
$touwei_array['standard_val'] = '';
$touwei_array['difference_val'] = '';
}
array_push($result_end['top_list'],$touwei_array);
}
// 添加头围数据如果有的话end
// 这段业务处理可以删除是做的临时的假的start
$biaozhun_val = $this->body_temporary_use($body_last_data[0]['birthday'],$body_last_data[0]['gender']);
// dump($biaozhun_val);
// $biaozhun_val_weight = 50;
// $biaozhun_val_height = 170;
// $biaozhun_val_bmi = 22;
foreach ($result_end['top_list'] as $key => $value) {
if($value['key_name'] == 'weight'){
if($biaozhun_val['weight'] == ''){
$result_end['top_list'][$key]['standard_val'] = '';
$result_end['top_list'][$key]['difference_val'] = '';
}else{
$result_end['top_list'][$key]['standard_val'] = $biaozhun_val['weight'];
$result_end['top_list'][$key]['difference_val'] = bcsub($value['value'],$biaozhun_val['weight'],2);
}
}else if($value['key_name'] == 'height'){
if($biaozhun_val['height'] == ''){
$result_end['top_list'][$key]['standard_val'] = '';
$result_end['top_list'][$key]['difference_val'] = '';
}else{
$result_end['top_list'][$key]['standard_val'] = $biaozhun_val['height'];
$result_end['top_list'][$key]['difference_val'] = bcsub($value['value'],$biaozhun_val['height'],2);
}
}else if($value['key_name'] == 'bmi'){
if($biaozhun_val['bmi'] == ''){
$result_end['top_list'][$key]['standard_val'] = '';
$result_end['top_list'][$key]['difference_val'] = '';
}else{
$result_end['top_list'][$key]['standard_val'] = $biaozhun_val['bmi'];
$result_end['top_list'][$key]['difference_val'] = bcsub($value['value'],$biaozhun_val['bmi'],2);
}
}
}
// 这段业务处理可以删除是做的临时的假的end
return $this->msg($result_end);
// dump($result_end);
}
public function processing_return_data_new($data){
$result_end_data = [];
$month_num = $this->calculateAgeInMonthsWithPrecision($data['birthday']);
$gender_val = $data['gender'];
foreach ($data as $key => $value) {
if($key != 'aud_id' && $key != 'id' && $key != 'create_time' && $key != 'last_update_time' && $key != 'acd_id' && $key != 'ROW_NUMBER' && $key != 'record_time' && $key != 'gender' && $key != 'birthday'){
// 设置单个数据格式
$result_end_data[$key] = $this->result_end_data_mould;
// 该项名
if(array_key_exists($key, $this->unit_name)){
$result_end_data[$key]['name'] = $this->unit_name[$key];
}
// 该项单位
if(array_key_exists($key, $this->unit_symbol)){
$result_end_data[$key]['unit'] = $this->unit_symbol[$key];
}
$result_end_data[$key]['value'] = explode(',',$value)[0];
if(strpos($value, ',')){
$result_end_data[$key]['standard'] = explode(',',$value)[1];
}
if(array_key_exists($key, $this->standard_color)){
if($result_end_data[$key]['standard'] != '异常' && $result_end_data[$key]['standard'] != ''){
$result_end_data[$key]['color'] = $this->standard_color[$key][$result_end_data[$key]['standard']];
}
}
// 如果小于16岁儿童
if($data['age'] < $this->age_limit){
if(array_key_exists($key, $this->bhw_list)){
$result_end_data[$key]['list'] = $this->bhw_list[$key];
if($key == 'bmi'){
$bhw_date = Db::table($this->body_db_name['bmi'])->where("Month <= $month_num and Sex = '$gender_val'")->order('Month desc')->limit(1)->select();
if($bhw_date){
$result_end_data[$key]['list'][0]['max_val'] = $bhw_date[0]['f1sd'];
$result_end_data[$key]['list'][1]['min_val'] = $bhw_date[0]['f1sd'];
$result_end_data[$key]['list'][1]['max_val'] = $bhw_date[0]['z1sd'];
$result_end_data[$key]['list'][2]['min_val'] = $bhw_date[0]['z1sd'];
$result_end_data[$key]['list'][2]['max_val'] = $bhw_date[0]['z2sd'];
$result_end_data[$key]['list'][3]['min_val'] = $bhw_date[0]['z2sd'];
}
}else if($key == 'height'){
$bhw_date = Db::table($this->body_db_name['heigh'])->where("Month <= $month_num and Sex = '$gender_val'")->order('Month desc')->limit(1)->select();
if($bhw_date){
$result_end_data[$key]['list'][0]['max_val'] = $bhw_date[0]['f2sd'];
$result_end_data[$key]['list'][1]['min_val'] = $bhw_date[0]['f2sd'];
$result_end_data[$key]['list'][1]['max_val'] = $bhw_date[0]['f1sd'];
$result_end_data[$key]['list'][2]['min_val'] = $bhw_date[0]['f1sd'];
$result_end_data[$key]['list'][2]['max_val'] = $bhw_date[0]['z1sd'];
$result_end_data[$key]['list'][3]['min_val'] = $bhw_date[0]['z1sd'];
$result_end_data[$key]['list'][3]['max_val'] = $bhw_date[0]['z2sd'];
$result_end_data[$key]['list'][4]['min_val'] = $bhw_date[0]['z2sd'];
$result_end_data[$key]['list'][4]['max_val'] = $bhw_date[0]['z3sd'];
}
}else if($key == 'weight'){
$bhw_date = Db::table($this->body_db_name['weigh'])->where("Month <= $month_num and Sex = '$gender_val'")->order('Month desc')->limit(1)->select();
if($bhw_date){
$result_end_data[$key]['list'][0]['max_val'] = $bhw_date[0]['f2sd'];
$result_end_data[$key]['list'][1]['min_val'] = $bhw_date[0]['f2sd'];
$result_end_data[$key]['list'][1]['max_val'] = $bhw_date[0]['f1sd'];
$result_end_data[$key]['list'][2]['min_val'] = $bhw_date[0]['f1sd'];
$result_end_data[$key]['list'][2]['max_val'] = $bhw_date[0]['z1sd'];
$result_end_data[$key]['list'][3]['min_val'] = $bhw_date[0]['z1sd'];
$result_end_data[$key]['list'][3]['max_val'] = $bhw_date[0]['z2sd'];
$result_end_data[$key]['list'][4]['min_val'] = $bhw_date[0]['z2sd'];
$result_end_data[$key]['list'][4]['max_val'] = $bhw_date[0]['z3sd'];
}
}
}
}
}
}
return $result_end_data;
}
public function grow_up_recommendation($data){
// card_body_level
// die;
// $result = [
// ['name'=>'营养','key'=>'nutrition','content'=>''],
// ['name'=>'睡眠','key'=>'sleep','content'=>''],
// ['name'=>'运动','key'=>'motion','content'=>''],
// ['name'=>'情绪','key'=>'emotion','content'=>'']
// ];
$result = [
'nutritionlist'=>[],//营养
'sportlist'=>[],//运动
'sleeplist'=>[],//睡眠
'moodlist'=>[],//情绪
];
$temporary_arr = [];
foreach ($data['body'] as $key => $value) {
if(explode(',',$value)[1] == '无'){
$result = [
'nutritionlist'=>[],//营养
'sportlist'=>[],//运动
'sleeplist'=>[],//睡眠
'moodlist'=>[],//情绪
];
return $result;
}
$temporary_arr[$key] = $this->card_body_level[$key]['list'][explode(',',$value)[1]];
}
$min_value = min($temporary_arr);
$min_key = array_search($min_value,$temporary_arr);
$type_num = $this->card_body_level[$min_key]['value'];
$temporary_arr2 = Db::table($this->body_db_name['chufang1'])->where(['Type'=>$type_num,'Level'=>$min_value,'IsDeleted'=>0])->field('Nutrition,Sport')->find();
// dump($temporary_arr2);
array_push($result['nutritionlist'],$temporary_arr2['Nutrition']);
array_push($result['sportlist'],$temporary_arr2['Sport']);
// $result['nutritionlist'] = $temporary_arr2['Nutrition'];
// $result['sportlist'] = $temporary_arr2['Sport'];
$month_num = $this->calculateAgeInMonthsWithPrecision($data['birthday']);
$temporary_arr2 = Db::table($this->body_db_name['chufang2'])->where(['IsDeleted'=>0])->field('MinAge,MaxAge,Type,Content')->select();
$default_sleep = '';
$default_emotion = '';
foreach ($temporary_arr2 as $key => $value) {
if($value['MinAge'] == -1 && $value['Type'] == 2){
$default_sleep = $value['Content'];
}
if($value['MinAge'] == -1 && $value['Type'] == 3){
$default_emotion = $value['Content'];
}
if($month_num>=$value['MinAge'] && $month_num<=$value['MaxAge']){
if($value['Type'] == 1){
array_push($result['sportlist'],$value['Content']);
// $result['sportlist'] = $result['sportlist'].$value['Content'];
}else if($value['Type'] == 2){
array_push($result['sleeplist'],$value['Content']);
// $result['sleeplist'] = $result['sleeplist'].$value['Content'];
}else if($value['Type'] == 3){
array_push($result['moodlist'],$value['Content']);
// $result['moodlist'] = $result['moodlist'].$value['Content'];
}
}
}
$result['sleeplist'] = count($result['sleeplist']) <= 0?array_push($result['sportlist'],$default_sleep):$result['sleeplist'];
$result['moodlist'] = count($result['moodlist']) <= 0?array_push($result['moodlist'],$default_sleep):$result['moodlist'];
return $result;
}
public function touwei_temporary_use($age,$gender){
$return_data = [
];
if(!in_array($gender,['1','2'])){
return $return_data;
}
$age_m = $this->calculateAgeInMonthsWithPrecision($age);
if($age_m <= 36){
// $touwei_date = Db::table('ws_touwei')->where("age <= $age_m and gender = '$gender'")->order('age desc')->limit(1)->field('middle')->fetchSql(true)->select();
$touwei_date = Db::query("select * from ws_touwei where age <= $age_m and gender = '$gender' order by age desc");
$return_data = $touwei_date[0];
}
return $return_data;
}
public function body_temporary_use($age,$gender){
$return_data = [
'height'=>'',
'weight'=>'',
'bmi'=>'',
];
if(!in_array($gender,['1','2'])){
return $return_data;
}
$age_m = $this->calculateAgeInMonthsWithPrecision($age);
if($age_m < 228){//月龄小于19岁
// dump($age_m);
// $height_date = Db::table('ws_height')->where("age <= $age_m and gender = '$gender'")->order('age desc')->limit(1)->field('middle')->select();
$height_date = Db::query("select * from ws_height where age <= $age_m and gender = '$gender' order by age desc");
// $weight_date = Db::table('ws_weight')->where("age <= $month_num and Sex = '$gender'")->order('age desc')->limit(1)->field('middle')->select();
$weight_date = Db::query("select * from ws_weight where age <= $age_m and gender = '$gender' order by age desc");
// $bmi_date = Db::table('ws_bmi')->where("age <= $month_num and Sex = '$gender'")->order('age desc')->limit(1)->field('middle')->select();
$bmi_date = Db::query("select * from ws_bmi where age <= $age_m and gender = '$gender' order by age desc");
$return_data = array(
'height' => $height_date[0]['middle'],
'weight' => $weight_date[0]['middle'],
'bmi' => $bmi_date[0]['middle'],
);
}else{
$bmi_data = [
'1' => [ // 男性
[
'age' => ['min' => 216, 'max' => 299], // 18-24岁216-299月龄
'list'=>[
['min_val' => '0', 'max_val' => '18.5', 'text' => '低体重', 'color' => '#8BC8FB'],
['min_val' => '18.5', 'max_val' => '20.4', 'text' => '偏瘦', 'color' => '#B4E3FD'],
['min_val' => '20.5', 'max_val' => '23.9', 'text' => '正常', 'color' => '#6CD86F'],
['min_val' => '24.0', 'max_val' => '27.9', 'text' => '超重', 'color' => '#FFD166'],
['min_val' => '28.0', 'max_val' => '31.9', 'text' => '肥胖', 'color' => '#FF9A5A'],
['min_val' => '32.0', 'max_val' => '99999', 'text' => '重度肥胖', 'color' => '#FF6B6B']
]
],
[
'age' => ['min' => 300, 'max' => 419], // 25-34岁300-419月龄
'list'=>[
['min_val' => '0', 'max_val' => '18.5', 'text' => '低体重', 'color' => '#8BC8FB'],
['min_val' => '18.5', 'max_val' => '20.9', 'text' => '偏瘦', 'color' => '#B4E3FD'],
['min_val' => '21.0', 'max_val' => '24.4', 'text' => '正常', 'color' => '#6CD86F'],
['min_val' => '24.5', 'max_val' => '28.4', 'text' => '超重', 'color' => '#FFD166'],
['min_val' => '28.5', 'max_val' => '32.4', 'text' => '肥胖', 'color' => '#FF9A5A'],
['min_val' => '32.5', 'max_val' => '99999', 'text' => '重度肥胖', 'color' => '#FF6B6B']
]
],
[
'age' => ['min' => 420, 'max' => 539], // 35-44岁420-539月龄
'list'=>[
['min_val' => '0', 'max_val' => '18.5', 'text' => '低体重', 'color' => '#8BC8FB'],
['min_val' => '18.5', 'max_val' => '21.4', 'text' => '偏瘦', 'color' => '#B4E3FD'],
['min_val' => '21.5', 'max_val' => '25.0', 'text' => '正常', 'color' => '#6CD86F'],
['min_val' => '25.1', 'max_val' => '29.0', 'text' => '超重', 'color' => '#FFD166'],
['min_val' => '29.1', 'max_val' => '33.0', 'text' => '肥胖', 'color' => '#FF9A5A'],
['min_val' => '33.1', 'max_val' => '99999', 'text' => '重度肥胖', 'color' => '#FF6B6B']
]
],
[
'age' => ['min' => 540, 'max' => 719], // 45-59岁540-719月龄
'list'=>[
['min_val' => '0', 'max_val' => '18.5', 'text' => '低体重', 'color' => '#8BC8FB'],
['min_val' => '18.5', 'max_val' => '21.9', 'text' => '偏瘦', 'color' => '#B4E3FD'],
['min_val' => '22.0', 'max_val' => '25.5', 'text' => '正常', 'color' => '#6CD86F'],
['min_val' => '25.6', 'max_val' => '29.5', 'text' => '超重', 'color' => '#FFD166'],
['min_val' => '29.6', 'max_val' => '33.5', 'text' => '肥胖', 'color' => '#FF9A5A'],
['min_val' => '33.6', 'max_val' => '99999', 'text' => '重度肥胖', 'color' => '#FF6B6B']
]
],
[
'age' => ['min' => 720, 'max' => '99999'], // ≥60岁720+月龄)
'list'=>[
['min_val' => '0', 'max_val' => '18.5', 'text' => '低体重', 'color' => '#8BC8FB'],
['min_val' => '18.5', 'max_val' => '22.4', 'text' => '偏瘦', 'color' => '#B4E3FD'],
['min_val' => '22.5', 'max_val' => '26.0', 'text' => '正常', 'color' => '#6CD86F'],
['min_val' => '26.1', 'max_val' => '29.0', 'text' => '超重', 'color' => '#FFD166'],
['min_val' => '29.1', 'max_val' => '33.0', 'text' => '肥胖', 'color' => '#FF9A5A'],
['min_val' => '33.1', 'max_val' => '99999', 'text' => '重度肥胖', 'color' => '#FF6B6B']
]
]
],
'2' => [ // 女性
[
'age' => ['min' => 216, 'max' => 299], // 18-24岁
'list'=>[
['min_val' => '0', 'max_val' => '18.0', 'text' => '低体重', 'color' => '#8BC8FB'],
['min_val' => '18.0', 'max_val' => '19.9', 'text' => '偏瘦', 'color' => '#B4E3FD'],
['min_val' => '20.0', 'max_val' => '22.9', 'text' => '正常', 'color' => '#6CD86F'],
['min_val' => '23.0', 'max_val' => '26.9', 'text' => '超重', 'color' => '#FFD166'],
['min_val' => '27.0', 'max_val' => '30.9', 'text' => '肥胖', 'color' => '#FF9A5A'],
['min_val' => '31.0', 'max_val' => '99999', 'text' => '重度肥胖', 'color' => '#FF6B6B']
]
],
[
'age' => ['min' => 300, 'max' => 419], // 25-34岁
'list'=>[
['min_val' => '0', 'max_val' => '18.0', 'text' => '低体重', 'color' => '#8BC8FB'],
['min_val' => '18.0', 'max_val' => '20.4', 'text' => '偏瘦', 'color' => '#B4E3FD'],
['min_val' => '20.5', 'max_val' => '23.4', 'text' => '正常', 'color' => '#6CD86F'],
['min_val' => '23.5', 'max_val' => '27.4', 'text' => '超重', 'color' => '#FFD166'],
['min_val' => '27.5', 'max_val' => '31.4', 'text' => '肥胖', 'color' => '#FF9A5A'],
['min_val' => '31.5', 'max_val' => '99999', 'text' => '重度肥胖', 'color' => '#FF6B6B']
]
],
[
'age' => ['min' => 420, 'max' => 539], // 35-44岁
'list'=>[
['min_val' => '0', 'max_val' => '18.0', 'text' => '低体重', 'color' => '#8BC8FB'],
['min_val' => '18.0', 'max_val' => '20.9', 'text' => '偏瘦', 'color' => '#B4E3FD'],
['min_val' => '21.0', 'max_val' => '24.0', 'text' => '正常', 'color' => '#6CD86F'],
['min_val' => '24.1', 'max_val' => '28.0', 'text' => '超重', 'color' => '#FFD166'],
['min_val' => '28.1', 'max_val' => '32.0', 'text' => '肥胖', 'color' => '#FF9A5A'],
['min_val' => '32.1', 'max_val' => '99999', 'text' => '重度肥胖', 'color' => '#FF6B6B']
]
],
[
'age' => ['min' => 540, 'max' => 719], // 45-59岁
'list'=>[
['min_val' => '0', 'max_val' => '18.0', 'text' => '低体重', 'color' => '#8BC8FB'],
['min_val' => '18.0', 'max_val' => '21.4', 'text' => '偏瘦', 'color' => '#B4E3FD'],
['min_val' => '21.5', 'max_val' => '24.5', 'text' => '正常', 'color' => '#6CD86F'],
['min_val' => '24.6', 'max_val' => '28.5', 'text' => '超重', 'color' => '#FFD166'],
['min_val' => '28.6', 'max_val' => '32.5', 'text' => '肥胖', 'color' => '#FF9A5A'],
['min_val' => '32.6', 'max_val' => '99999', 'text' => '重度肥胖', 'color' => '#FF6B6B']
]
],
[
'age' => ['min' => 720, 'max' => 99999], // ≥60岁
'list'=>[
['min_val' => '0', 'max_val' => '18.0', 'text' => '低体重', 'color' => '#8BC8FB'],
['min_val' => '18.0', 'max_val' => '21.9', 'text' => '偏瘦', 'color' => '#B4E3FD'],
['min_val' => '22.0', 'max_val' => '25.0', 'text' => '正常', 'color' => '#6CD86F'],
['min_val' => '25.1', 'max_val' => '28.0', 'text' => '超重', 'color' => '#FFD166'],
['min_val' => '28.1', 'max_val' => '32.0', 'text' => '肥胖', 'color' => '#FF9A5A'],
['min_val' => '32.1', 'max_val' => '99999', 'text' => '重度肥胖', 'color' => '#FF6B6B']
]
]
]
];
foreach ($bmi_data[$gender] as $group) {
if ($age_m >= $group['age']['min'] && $age_m <= $group['age']['max']) {
$return_data['bmi'] = bcdiv(bcadd($group['list'][2]['min_val'],$group['list'][2]['max_val'],20),2,1);
}
}
}
return $return_data;
}
// public function body_report_action_detailed($data){
// }
}