'app_account_number', 'juese'=>'app_user_data', 'body_data'=>'app_card_body_data', 'body_data_new'=>'app_card_body_data_new', 'bmi'=>'pc_bmistand', 'height'=>'pc_heightstand', 'weight'=>'pc_weightstand', // 'chufang1'=>'pc_childrenprescription', // 'chufang2'=>'pc_childprescriptionbyage', ]; protected $age_limit = 16; protected $pagesize = 15; protected $detailed_model_1 = [ //详情里面的数据模板 "name"=>"", //名称 "value"=>"0", //值 "unit"=>"", // 单位 "desc"=>'',// 描述 "standard"=>"", //标准值 "standard_color"=>"#000000", //标准颜色 "list"=>[], //标准列表 "key_name"=>'', //标准列表 "offset"=>0, //标准列表 "tip"=>'', //小妙招 ]; protected $merged_data = [ 'score' => [ 'name' => '身体得分', 'unit' => '分', "description"=>"", "smart_tip_description"=>"", "icon"=>"http://tc.pcxbc.com/new_reedaw/icon/score.png", 'standard_list' => [ ['min_val'=>'0','max_val'=>'70','text'=>'较差','color'=>'#C2831C'], ['min_val'=>'71','max_val'=>'80','text'=>'一般','color'=>'#F5A623'], ['min_val'=>'81','max_val'=>'90','text'=>'良好','color'=>'#14CBAD'], ['min_val'=>'91','max_val'=>'100','text'=>'很棒','color'=>'#0F9982'], ], 'key_name'=>'score', ], 'height' => [ 'name' => '身高', 'unit' => 'cm', "description"=>"人体纵向部分的长度,源于人体的纵向生长,受遗传因素的影响较大", "smart_tip_description"=>"", 'standard_list' => [ ['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'], ], 'key_name'=>'height', ], 'weight' => [ 'name' => '体重', 'unit' => 'kg', "description"=>"体重指人体的重量,通常用斤、公斤或磅作为单位来衡量。体重是人体健康的重要指标,但需要结合身高、体型和体脂率等因素来综合评估。", "smart_tip_description"=>"保持均衡营养的饮食,摄入足够的碳水化合物、蛋白质、脂肪等。适度进行运动,保持良好的生活习惯。", 'standard_list' => [ ['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'], ], 'key_name'=>'weight', ], 'bmi' => [ 'name' => 'BMI', 'unit' => '', "description"=>"BMI是身体质量指数(BodyMassIndex)的缩写,是一种常用的衡量人体肥胖程度的指标", "smart_tip_description"=>"", 'standard_list' => [ ['min_val'=>'0','max_val'=>'','text'=>'消瘦','color'=>'#FDDA6B'], ['min_val'=>'','max_val'=>'','text'=>'正常','color'=>'#5BD068'], ['min_val'=>'','max_val'=>'','text'=>'偏重','color'=>'#FAAD01'], ['min_val'=>'','max_val'=>'50','text'=>'肥胖','color'=>'#FD5759'], ], 'key_name'=>'bmi', ], 'fat_r' => [ 'name' => '脂肪率', 'unit' => '%', "description"=>"", "smart_tip_description"=>"", "icon"=>"http://tc.pcxbc.com/new_reedaw/icon/fat_r.png", 'list' => [ '偏低' => '#FCDB67', '标准' => '#58D268', '偏高' => '#FCAA00', '高' => '#FD5752' ], 'standard_list' => [ '1'=>[ '29'=>[ ['min_val'=>'0','max_val'=>'10','text'=>'偏低','color'=>'#FCDB67'], ['min_val'=>'10','max_val'=>'21','text'=>'标准','color'=>'#59D16D'], ['min_val'=>'21','max_val'=>'26','text'=>'偏高','color'=>'#FAB000'], ['min_val'=>'26','max_val'=>'50','text'=>'高','color'=>'#FA5951'], ], '30'=>[ ['min_val'=>'0','max_val'=>'11','text'=>'偏低','color'=>'#FCDB67'], ['min_val'=>'11','max_val'=>'22','text'=>'标准','color'=>'#59D16D'], ['min_val'=>'22','max_val'=>'27','text'=>'偏高','color'=>'#FAB000'], ['min_val'=>'27','max_val'=>'50','text'=>'高','color'=>'#FA5951'], ], ], '2'=>[ '29'=>[ ['min_val'=>'0','max_val'=>'20','text'=>'偏低','color'=>'#FCDB67'], ['min_val'=>'20','max_val'=>'31','text'=>'标准','color'=>'#59D16D'], ['min_val'=>'31','max_val'=>'38','text'=>'偏高','color'=>'#FAB000'], ['min_val'=>'38','max_val'=>'80','text'=>'高','color'=>'#FA5951'], ], '30'=>[ ['min_val'=>'0','max_val'=>'21','text'=>'偏低','color'=>'#FCDB67'], ['min_val'=>'21','max_val'=>'32','text'=>'标准','color'=>'#59D16D'], ['min_val'=>'32','max_val'=>'39','text'=>'偏高','color'=>'#FAB000'], ['min_val'=>'39','max_val'=>'80','text'=>'高','color'=>'#FA5951'], ] ] ], 'key_name'=>'fat_r', ], 'fat_w' => [ 'name' => '脂肪量', 'unit' => 'kg', "description"=>"", "smart_tip_description"=>"", "icon"=>"http://tc.pcxbc.com/new_reedaw/icon/fat_w.png", 'list' => [ '偏低' => '#FCDB67', '标准' => '#58D268', '偏高' => '#FCAA00', '高' => '#FD5752' ], 'standard_list' => [ '1'=>[ '29'=>[ ['min_val'=>'0','max_val'=>'10','text'=>'偏低','color'=>'#FCDB67'], ['min_val'=>'10','max_val'=>'21','text'=>'标准','color'=>'#59D16D'], ['min_val'=>'21','max_val'=>'26','text'=>'偏高','color'=>'#FAB000'], ['min_val'=>'26','max_val'=>'50','text'=>'高','color'=>'#FA5951'], ], '30'=>[ ['min_val'=>'0','max_val'=>'11','text'=>'偏低','color'=>'#FCDB67'], ['min_val'=>'11','max_val'=>'22','text'=>'标准','color'=>'#59D16D'], ['min_val'=>'22','max_val'=>'27','text'=>'偏高','color'=>'#FAB000'], ['min_val'=>'27','max_val'=>'50','text'=>'高','color'=>'#FA5951'], ], ], '2'=>[ '29'=>[ ['min_val'=>'0','max_val'=>'20','text'=>'偏低','color'=>'#FCDB67'], ['min_val'=>'20','max_val'=>'31','text'=>'标准','color'=>'#59D16D'], ['min_val'=>'31','max_val'=>'38','text'=>'偏高','color'=>'#FAB000'], ['min_val'=>'38','max_val'=>'80','text'=>'高','color'=>'#FA5951'], ], '30'=>[ ['min_val'=>'0','max_val'=>'21','text'=>'偏低','color'=>'#FCDB67'], ['min_val'=>'21','max_val'=>'32','text'=>'标准','color'=>'#59D16D'], ['min_val'=>'32','max_val'=>'39','text'=>'偏高','color'=>'#FAB000'], ['min_val'=>'39','max_val'=>'80','text'=>'高','color'=>'#FA5951'], ] ] ], 'key_name'=>'fat_w', ], 'muscle' => [ 'name' => '肌肉率', 'unit' => '%', "description"=>"", "smart_tip_description"=>"", "icon"=>"http://tc.pcxbc.com/new_reedaw/icon/muscle.png", 'list' => [ '不足' => '#FFDA68', '标准' => '#59CD6F', '优' => '#3C64D4' ], 'standard_list' => [ '1'=>[ ['min_val'=>'0','max_val'=>'40','text'=>'不足','color'=>'#FCDB67'], ['min_val'=>'40','max_val'=>'60','text'=>'标准','color'=>'#59D16D'], ['min_val'=>'60','max_val'=>'100','text'=>'优','color'=>'#3C66D2'], ], '2'=>[ ['min_val'=>'0','max_val'=>'30','text'=>'不足','color'=>'#FCDB67'], ['min_val'=>'30','max_val'=>'50','text'=>'标准','color'=>'#59D16D'], ['min_val'=>'50','max_val'=>'100','text'=>'优','color'=>'#3C66D2'], ] ], 'key_name'=>'muscle', ], 'muscleval' => [ 'name' => '肌肉量', 'unit' => 'kg', "description"=>"", "smart_tip_description"=>"", "icon"=>"http://tc.pcxbc.com/new_reedaw/icon/muscleval.png", 'list' => [ '不足' => '#FFDA68', '标准' => '#59CD6F', '优' => '#3C64D4' ], 'standard_list' => [ '1'=>[ ['min_val'=>'0','max_val'=>'40','text'=>'不足','color'=>'#FCDB67'], ['min_val'=>'40','max_val'=>'60','text'=>'标准','color'=>'#59D16D'], ['min_val'=>'60','max_val'=>'100','text'=>'优','color'=>'#3C66D2'], ], '2'=>[ ['min_val'=>'0','max_val'=>'30','text'=>'不足','color'=>'#FCDB67'], ['min_val'=>'30','max_val'=>'50','text'=>'标准','color'=>'#59D16D'], ['min_val'=>'50','max_val'=>'100','text'=>'优','color'=>'#3C66D2'], ] ], 'key_name'=>'muscleval', ], 'water' => [ 'name' => '水分', 'unit' => 'kg', "description"=>"", "smart_tip_description"=>"", "icon"=>"http://tc.pcxbc.com/new_reedaw/icon/water.png", 'list' => [ '不足' => '#FED966', '标准' => '#58CF6B', '优' => '#3A68D7' ], 'standard_list' => [ '1'=>[ ['min_val'=>'0','max_val'=>'55','text'=>'不足','color'=>'#FCDB67'], ['min_val'=>'55','max_val'=>'65','text'=>'标准','color'=>'#59D16D'], ['min_val'=>'65','max_val'=>'100','text'=>'优','color'=>'#3C66D2'], ], '2'=>[ ['min_val'=>'0','max_val'=>'45','text'=>'不足','color'=>'#FCDB67'], ['min_val'=>'45','max_val'=>'60','text'=>'标准','color'=>'#59D16D'], ['min_val'=>'60','max_val'=>'100','text'=>'优','color'=>'#3C66D2'], ] ], 'key_name'=>'water', ], 'bone' => [ 'name' => '骨重', 'unit' => 'kg', "description"=>"", "smart_tip_description"=>"", "icon"=>"http://tc.pcxbc.com/new_reedaw/icon/bone.png", 'list' => [ '不足' => '#FED966', '标准' => '#58CF6F', '优' => '#3A68D7' ], 'standard_list' => [ '1'=>[ '60'=>[ ['min_val'=>'0','max_val'=>'2.4','text'=>'不足','color'=>'#FCDB67'], ['min_val'=>'2.4','max_val'=>'2.6','text'=>'标准','color'=>'#59D16D'], ['min_val'=>'2.6','max_val'=>'6','text'=>'优','color'=>'#3C66D2'], ], '60_75'=>[ ['min_val'=>'0','max_val'=>'2.8','text'=>'不足','color'=>'#FCDB67'], ['min_val'=>'2.8','max_val'=>'3','text'=>'标准','color'=>'#59D16D'], ['min_val'=>'3','max_val'=>'6','text'=>'优','color'=>'#3C66D2'], ], '75'=>[ ['min_val'=>'0','max_val'=>'3.1','text'=>'不足','color'=>'#FCDB67'], ['min_val'=>'3.1','max_val'=>'3.3','text'=>'标准','color'=>'#59D16D'], ['min_val'=>'3.3','max_val'=>'7','text'=>'优','color'=>'#3C66D2'], ], ], '2'=>[ '45'=>[ ['min_val'=>'0','max_val'=>'1.7','text'=>'不足','color'=>'#FCDB67'], ['min_val'=>'1.7','max_val'=>'1.9','text'=>'标准','color'=>'#59D16D'], ['min_val'=>'1.9','max_val'=>'5','text'=>'优','color'=>'#3C66D2'], ], '45_60'=>[ ['min_val'=>'0','max_val'=>'2.1','text'=>'不足','color'=>'#FCDB67'], ['min_val'=>'2.1','max_val'=>'2.3','text'=>'标准','color'=>'#59D16D'], ['min_val'=>'2.3','max_val'=>'5','text'=>'优','color'=>'#3C66D2'], ], '60'=>[ ['min_val'=>'0','max_val'=>'2.4','text'=>'不足','color'=>'#FCDB67'], ['min_val'=>'2.4','max_val'=>'2.6','text'=>'标准','color'=>'#59D16D'], ['min_val'=>'2.6','max_val'=>'5','text'=>'优','color'=>'#3C66D2'], ], ] ], 'key_name'=>'bone', ], 'protein' => [ 'name' => '蛋白率', 'unit' => '%', "description"=>"", "smart_tip_description"=>"", "icon"=>"http://tc.pcxbc.com/new_reedaw/icon/protein.png", 'list' => [ '不足' => '#FED966', '标准' => '#58CF6F', '优' => '#3A68D7' ], 'standard_list' => [ '1'=>[ ['min_val'=>'0','max_val'=>'16','text'=>'不足','color'=>'#FCDB67'], ['min_val'=>'16','max_val'=>'18','text'=>'标准','color'=>'#59D16D'], ['min_val'=>'18','max_val'=>'50','text'=>'优','color'=>'#3C66D2'], //蓝 ], '2'=>[ ['min_val'=>'0','max_val'=>'14','text'=>'不足','color'=>'#FCDB67'], ['min_val'=>'14','max_val'=>'16','text'=>'标准','color'=>'#59D16D'], ['min_val'=>'16','max_val'=>'50','text'=>'优','color'=>'#3C66D2'], ] ], 'key_name'=>'protein', ], 'proteinval' => [ 'name' => '蛋白量', 'unit' => 'kg', "description"=>"", "smart_tip_description"=>"", "icon"=>"http://tc.pcxbc.com/new_reedaw/icon/proteinval.png", 'list' => [ '不足' => '#FED966', '标准' => '#58CF6F', '优' => '#3A68D7' ], 'standard_list' => [ '1'=>[ ['min_val'=>'0','max_val'=>'16','text'=>'不足','color'=>'#FCDB67'], ['min_val'=>'16','max_val'=>'18','text'=>'标准','color'=>'#59D16D'], ['min_val'=>'18','max_val'=>'50','text'=>'优','color'=>'#3C66D2'], //蓝 ], '2'=>[ ['min_val'=>'0','max_val'=>'14','text'=>'不足','color'=>'#FCDB67'], ['min_val'=>'14','max_val'=>'16','text'=>'标准','color'=>'#59D16D'], ['min_val'=>'16','max_val'=>'50','text'=>'优','color'=>'#3C66D2'], ] ], 'key_name'=>'proteinval', ], 'visceral' => [ 'name' => '内脏指数', 'unit' => '', "description"=>"", "smart_tip_description"=>"", "icon"=>"http://tc.pcxbc.com/new_reedaw/icon/visceral.png", 'list' => [ '标准' => '#55CF6C', '警惕' => '#FEAC00', '危险' => '#FB5A52' ], 'standard_list' => [ '1'=>[ ['min_val'=>'0','max_val'=>'9','text'=>'标准','color'=>'#59D16D'], ['min_val'=>'9','max_val'=>'14','text'=>'警惕','color'=>'#FAB000'], ['min_val'=>'14','max_val'=>'50','text'=>'危险','color'=>'#FA5951'], //红 ], '2'=>[ ['min_val'=>'0','max_val'=>'9','text'=>'标准','color'=>'#59D16D'], ['min_val'=>'9','max_val'=>'14','text'=>'警惕','color'=>'#FAB000'], ['min_val'=>'14','max_val'=>'50','text'=>'危险','color'=>'#FA5951'], //红 ] ], 'key_name'=>'visceral', ], 'sfr' => [ 'name' => '皮下脂肪', 'unit' => '%', "description"=>"", "smart_tip_description"=>"", "icon"=>"http://tc.pcxbc.com/new_reedaw/icon/sfr.png", 'list' => [ '不足' => '#FCDB68', '标准' => '#59D16F', '偏高' => '#FEAB03' ], 'standard_list' => [ '1'=>[ ['min_val'=>'0','max_val'=>'7','text'=>'不足','color'=>'#FCDB67'], //淡黄 ['min_val'=>'7','max_val'=>'15','text'=>'标准','color'=>'#59D16D'], //绿 ['min_val'=>'15','max_val'=>'50','text'=>'偏高','color'=>'#FAB000'], //橙 ], '2'=>[ ['min_val'=>'0','max_val'=>'11','text'=>'不足','color'=>'#FCDB67'], ['min_val'=>'11','max_val'=>'17','text'=>'标准','color'=>'#59D16D'], ['min_val'=>'17','max_val'=>'50','text'=>'偏高','color'=>'#FAB000'], ] ], 'key_name'=>'sfr', ], 'body_level' => [ 'name' => '肥胖等级', 'unit' => '', "description"=>"肥胖等级指根据个体BMI来评估一个人是否超重或肥胖的指标。", "smart_tip_description"=>"", "icon"=>"http://tc.pcxbc.com/new_reedaw/icon/body_level.png", 'list' => [], 'standard_list' => [], 'key_name'=>'body_level', ], 'body_type' => [ 'name' => '身体类型', 'unit' => '', "description"=>"身体类型是对人体外形的总体描述和评定", "smart_tip_description"=>"", "icon"=>"http://tc.pcxbc.com/new_reedaw/icon/body_type.png", 'list' => [], 'standard_list' => [], 'key_name'=>'body_type', ], 'body_age' => [ 'name' => '身体年龄', 'unit' => '岁', "description"=>"身体年龄指衡量身体健康状况的指标,它反映了一个人的生理状态相对于实际年龄的健康程度。相关模型主要与BMI有关。", "smart_tip_description"=>"", "icon"=>"http://tc.pcxbc.com/new_reedaw/icon/body_age.png", 'list' => [], 'standard_list' => [], 'key_name'=>'body_age', ], 'head_circumference' => [ 'name' => '头围', 'unit' => 'cm', "description"=>"", "smart_tip_description"=>"", 'standard_list' => [], 'key_name'=>'head_circumference', ], 'heart_rate' => [ 'name' => '心率', 'unit' => '跳/分钟', "description"=>"保持均衡营养的饮食,摄入足够的碳水化合物、蛋白质、脂肪等。适度进行运动,保持良好的生活习惯。", "smart_tip_description"=>"注意减少压力和焦虑,适度锻炼,保持良好的睡眠质量,避免过度用力或剧烈运动。", 'standard_list' => [ ['min_val'=>'0','max_val'=>'','text'=>'偏低','color'=>'#FCDB67'], ['min_val'=>'','max_val'=>'','text'=>'标准','color'=>'#58D268'], ['min_val'=>'','max_val'=>'9999','text'=>'偏高','color'=>'#FD5752'], ], 'key_name'=>'heart_rate', ], 'ideal_weight' => [ 'name' => '理想体重', 'unit' => 'kg', "description"=>"", "smart_tip_description"=>"", "icon"=>"http://tc.pcxbc.com/new_reedaw/icon/ideal_weight.png", 'standard_list' => [], 'key_name'=>'ideal_weight', ], 'ideal_height' => [ 'name' => '理想身高', 'unit' => 'cm', "description"=>"", "smart_tip_description"=>"", "icon"=>"http://tc.pcxbc.com/new_reedaw/icon/ideal_height.png", 'standard_list' => [], 'key_name'=>'ideal_height', ], 'ideal_bmi' => [ 'name' => '理想BMI', 'unit' => '', "description"=>"", "smart_tip_description"=>"", "icon"=>"http://tc.pcxbc.com/new_reedaw/icon/ideal_bmi.png", 'standard_list' => [], 'key_name'=>'ideal_bmi', ], 'kcal' => [ 'name' => 'BMR', 'unit' => 'kcal', "description"=>"BMR是基础代谢率(BasalMetabolicRate)的缩写,指人体在安静状态下,维持基本生命活动所需的最低能量消耗率。", "smart_tip_description"=>"", "icon"=>"http://tc.pcxbc.com/new_reedaw/icon/ideal_bmi.png", 'list' => [ '偏低' => '#FF5656', '优' => '#3A68D4' ], 'standard_list' => [ ['min_val'=>'0','max_val'=>'','text'=>'偏低','color'=>'#ff5656'], ['min_val'=>'','max_val'=>'9999','text'=>'优','color'=>'#3C66D2'], ], 'key_name'=>'kcal', ], ]; protected $heart_rate = [ [ 'age' => ['min' => '0', 'max' => '1'], '1' => ['min' => '70', 'max' => '190'], '2' => ['min' => '70', 'max' => '190'] ], [ 'age' => ['min' => '1', 'max' => '12'], '1' => ['min' => '80', 'max' => '160'], '2' => ['min' => '80', 'max' => '160'] ], [ 'age' => ['min' => '12', 'max' => '36'], '1' => ['min' => '80', 'max' => '130'], '2' => ['min' => '80', 'max' => '130'] ], [ 'age' => ['min' => '36', 'max' => '60'], '1' => ['min' => '80', 'max' => '120'], '2' => ['min' => '80', 'max' => '120'] ], [ 'age' => ['min' => '60', 'max' => '120'], '1' => ['min' => '70', 'max' => '110'], '2' => ['min' => '70', 'max' => '110'] ], [ 'age' => ['min' => '120', 'max' => '204'], '1' => ['min' => '60', 'max' => '100'], '2' => ['min' => '60', 'max' => '100'] ], [ 'age' => ['min' => '204', 'max' => '480'], '1' => ['min' => '60', 'max' => '100'], '2' => ['min' => '60', 'max' => '100'] ], [ 'age' => ['min' => '480', 'max' => '720'], '1' => ['min' => '60', 'max' => '100'], '2' => ['min' => '60', 'max' => '100'] ], [ 'age' => ['min' => '720', 'max' => '9999'], // 61岁+,9999作为最大值占位 '1' => ['min' => '60', 'max' => '100'], '2' => ['min' => '60', 'max' => '100'] ] ]; // 加 bcadd(,,20) // 减 bcsub(,,20) // 乘 bcmul(,,20) // 除 bcdiv(,,20) // 测试token=>'caadd1be045a65f30b92aa805f1de54a' ################################################################接口################################################################ ################################################################接口################################################################ ################################################################接口################################################################ // 手动记录 public function manual_record(){ $data = input('post.'); try { if(!array_key_exists('aud_id', $data) || !array_key_exists('time', $data) || !array_key_exists('height', $data) || !array_key_exists('weight', $data) || !array_key_exists('token', $data)){ return $this->msg(10001); } unset($data['token']); if(!$this->verify_data_is_ok($data['aud_id'],'intnum')){ return $this->msg(10005,'aud_id type error'); } if(!$this->verify_data_is_ok($data['time'],'datetime')){ return $this->msg(10005,'time type error'); } $temporary_data = $this->convertHeightAndWeight($data['height'],$data['weight']); if($temporary_data['height_in_cm'] == false){ return $this->msg(10005,'身高单位错误'); } if($temporary_data['weight_in_kg'] == false){ return $this->msg(10005,'体重单位错误'); } $data['height'] = $temporary_data['height_in_cm']; $data['weight'] = $temporary_data['weight_in_kg']; if(strlen($data['time']) <= 12){ // 时间日期转换,把'Y-m-d'转换成'Y-m-d H:i:s'格式 $data['time'] = $this->addCurrentTimeToDateString($data['time']); } return $this->set_user_body_data($data,'by_hand_means'); } catch (\Exception $e) { // 捕获异常 $logContent["flie"] = $e->getFile(); $logContent["line"] = $e->getLine(); $logContent['all_content'] = "异常信息:\n"; $logContent['all_content'] .= "函数: manual_record" . "\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); } } // 设备记录 public function device_record(){ $data = input('post.'); // try { if(!array_key_exists('aud_id', $data) || !array_key_exists('height', $data) || !array_key_exists('weight', $data) || !array_key_exists('adc', $data) || !array_key_exists('token', $data)){ return $this->msg(10001); } if(!$this->verify_data_is_ok($data['aud_id'],'intnum')){ return $this->msg(10005,'aud_id type error'); } if(!$this->verify_data_is_ok($data['adc'],'num')){ return $this->msg(10005,'adc type error'); } $temporary_data = $this->convertHeightAndWeight($data['height'],$data['weight']); if($temporary_data['height_in_cm'] == false){ return $this->msg(10005,'身高单位错误'); } if($temporary_data['weight_in_kg'] == false){ return $this->msg(10005,'体重单位错误'); } // 检测设备传过来的info信息 if(array_key_exists('info', $data)){ if (!is_array($data['info'])) { return $this->msg(10005,'info参数格式错误'); }else{ $info_data_arr =['bodyage','fat_r','muscle','kcal','visceral','sfr','water','bone','fatlevlval','protein','bmi']; foreach ($data['info'] as $key => $value) { if (!in_array($key, $info_data_arr)) { return $this->msg(10005,'info参数格式错误-2'); } } } } $data['height'] = $temporary_data['height_in_cm']; $data['weight'] = $temporary_data['weight_in_kg']; $data['time'] = date('Y-m-d H:i:s'); return $this->set_user_body_data($data,'by_device'); // } catch (\Exception $e) { // // 捕获异常 // $logContent["flie"] = $e->getFile(); // $logContent["line"] = $e->getLine(); // $logContent['all_content'] = "异常信息:\n"; // $logContent['all_content'] .= "函数: device_record" . "\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); // } } // 获取角色报告(简要) public function body_report_brief(){ $data = input('post.'); try { 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_brief_action($data); } catch (\Exception $e) { // 捕获异常 $logContent["flie"] = $e->getFile(); $logContent["line"] = $e->getLine(); $logContent['all_content'] = "异常信息:\n"; $logContent['all_content'] .= "函数: body_report_brief" . "\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); } } // 获取角色报告(详细) public function body_report_detailed(){ $data = input('post.'); try { 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_detailed_action($data); } catch (\Exception $e) { // 捕获异常 $logContent["flie"] = $e->getFile(); $logContent["line"] = $e->getLine(); $logContent['all_content'] = "异常信息:\n"; $logContent['all_content'] .= "函数: body_report_detailed" . "\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); } } // 获取角色报告(深度) public function body_report_depth(){ $data = input('post.'); // try { 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_depth_action($data); // } catch (\Exception $e) { // // 捕获异常 // $logContent["flie"] = $e->getFile(); // $logContent["line"] = $e->getLine(); // $logContent['all_content'] = "异常信息:\n"; // $logContent['all_content'] .= "函数: body_report_detailed" . "\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); // } } // 修改目标体重 public function set_target_weight(){ $data = input('post.'); try { if(!array_key_exists('aud_id', $data) || !array_key_exists('weight', $data) || !array_key_exists('token', $data)){ return $this->msg(10001); } if(!$this->verify_data_is_ok($data['aud_id'],'intnum')){ return $this->msg(10005,'aud_id type error'); } if(!$this->verify_data_is_ok($data['weight'],'num')){ return $this->msg(10005,'weight type error'); } if(!$this->verify_data_is_ok($data['token'],'str')){ return $this->msg(10005,'token type error'); } $data['time'] = date('Y-m-d H:i:s'); return $this->set_target_weight_action($data); } catch (\Exception $e) { // 捕获异常 $logContent["flie"] = $e->getFile(); $logContent["line"] = $e->getLine(); $logContent['all_content'] = "异常信息:\n"; $logContent['all_content'] .= "函数: set_target_weight" . "\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 set_user_body_data($data,$type){ // 加 bcadd(,,20) // 减 bcsub(,,20) // 乘 bcmul(,,20) // 除 bcdiv(,,20) $db_data = []; $db_data['create_time'] = date('Y-m-d H:i:s'); $db_data['aud_id'] = $data['aud_id']; $db_data['record_time'] = $data['time']; $db_data['height'] = $data['height']; $db_data['weight'] = $data['weight']; $db_data['create_time'] = date('Y-m-d H:i:s'); // 查询用户信息 $user_data = Db::table($this->body_db_name['juese'])->where(['id'=>$data['aud_id'],'is_del'=>0])->field('birthday,gender,target_weight,initial_weight,initial_date')->find(); if(!$user_data){ return $this->msg(10003); } // 如果最初体重设置为null if($user_data['initial_date'] == null){ Db::table($this->body_db_name['juese'])->where(['id'=>$data['aud_id']])->update(['initial_weight'=>$data['weight'],'initial_date'=>$data['time']]); } $db_data['age'] = $this->calculate_age($user_data['birthday']); // 设置发送数据:身高、体重、年龄、性别、头围、生日、阻抗 $send_data['height'] = $data['height']; $send_data['weight'] = $data['weight']; $send_data['age'] = $db_data['age']; $send_data['gender'] = $user_data['gender']; $send_data['birthDay'] = $user_data['birthday']; // 1、手动记录还是设备记录 if($type == 'by_hand_means'){ $db_data['record_type'] = 'by_hand_means'; // 判断头围数据是否存在是否合理 if(array_key_exists('head_data', $data)){ if(!$this->verify_data_is_ok($data['head_data'],'num')){ return $this->msg(10005); } $db_data['head_circumference'] = $data['head_data']; } $send_data['adc'] = 550; $send_data['head'] = $data['head_data']; // 发送请求获取照良那边的身体数据 $get_body_value = $this->send_body_data($send_data,'4_electrode'); if($get_body_value === false){ return $this->msg(10002); } // 开始设置数据 $db_data['bmi'] = $get_body_value['bmi']; $db_data['score'] = $get_body_value['cmi']; $db_data['fat_r'] = $get_body_value['bfr']; $db_data['fat_w'] = $get_body_value['bfrval']; $db_data['muscle'] = $get_body_value['rom']; $db_data['muscleval'] = $get_body_value['romval']; $db_data['water'] = $get_body_value['vwc']; $db_data['protein'] = $get_body_value['pp']; $db_data['proteinval'] = $get_body_value['ppval']; $db_data['bone'] = $get_body_value['bm']; $db_data['kcal'] = $get_body_value['bmr']; $db_data['visceral'] = $get_body_value['uvi']; $db_data['sfr'] = $get_body_value['sfr']; $db_data['body_level'] = $get_body_value['fatlevelname'];//肥胖等级 $db_data['body_type'] = $get_body_value['body'];//身体类型 $db_data['body_age'] = $get_body_value['bodyage']; // 如果年纪小于三岁,处理头围数据star $standardlist = []; if($send_data['age'] < 3){ if(array_key_exists('standardlist',$get_body_value)){ $standardlist = $get_body_value['standardlist']; foreach ($standardlist as $key => $value) { if($value['name'] == 'head' && count($value['list'] ) > 0){ $standardlist = $value; } } $standardlist['list2'] = []; foreach ($standardlist['list'] as $key => $value) { array_push($standardlist['list2'],[ 'min_val'=>$value['minvalue'], 'max_val'=>$value['maxvalue'], 'text'=>$value['text'], 'color'=>$value['color'] ]); } unset($standardlist['list']); unset($get_body_value['standardlist']); $db_data['head_circumference'] = json_encode($standardlist); } }else{ if(array_key_exists('standardlist',$get_body_value)){ unset($get_body_value['standardlist']); } } // 如果年纪小于三岁,处理头围数据end }else{ // 如果原始数据存在阻抗 if(array_key_exists('adc', $data)){ if(!$this->verify_data_is_ok($data['adc'],'num')){ return $this->msg(10005); } if($data['adc'] > 0){ // 如果阻抗大于0,那就使用传过来的阻抗 $send_data['adc'] = $data['adc']; $db_data['record_type'] = 'by_device_adc'; }else{ $send_data['adc'] = 550; $db_data['record_type'] = 'by_device'; } } if(array_key_exists('lefthand', $data) && array_key_exists('righthand', $data) && array_key_exists('leftfoot', $data) && array_key_exists('rightfoot', $data)){ // 发送请求获取照良那边的身体数据 $send_data['lefthand'] = $data['lefthand']; $send_data['righthand'] = $data['righthand']; $send_data['leftfoot'] = $data['leftfoot']; $send_data['rightfoot'] = $data['rightfoot']; $get_body_value = $this->send_body_data($send_data,'8_electrode'); // 开始设置数据 $db_data['bmi'] = $get_body_value['bmi']; $db_data['score'] = $get_body_value['cmi']; $db_data['fat_r'] = $get_body_value['fat_r']; $db_data['fat_w'] = $get_body_value['fat_w']; $db_data['muscle'] = $get_body_value['muscle']; $db_data['muscleval'] = $get_body_value['muscleval']; $db_data['water'] = $get_body_value['water']; $db_data['protein'] = $get_body_value['protein']; $db_data['proteinval'] = $get_body_value['proteinval']; $db_data['bone'] = $get_body_value['bone']; $db_data['kcal'] = $get_body_value['kcal']; $db_data['visceral'] = $get_body_value['visceral']; $db_data['sfr'] = $get_body_value['sfr']; $db_data['body_level'] = $get_body_value['fatlevel'];//肥胖等级 $db_data['body_type'] = $get_body_value['body'];//身体类型 $db_data['body_age'] = $get_body_value['bodyage']; $db_data['8_electrode_data'] = json_encode($get_body_value); }else{ // 发送请求获取照良那边的身体数据 $get_body_value = $this->send_body_data($send_data,'4_electrode'); // 开始设置数据 $db_data['bmi'] = $get_body_value['bmi']; $db_data['score'] = $get_body_value['cmi']; $db_data['fat_r'] = $get_body_value['bfr']; $db_data['fat_w'] = $get_body_value['bfrval']; $db_data['muscle'] = $get_body_value['rom']; $db_data['muscleval'] = $get_body_value['romval']; $db_data['water'] = $get_body_value['vwc']; $db_data['protein'] = $get_body_value['pp']; $db_data['proteinval'] = $get_body_value['ppval']; $db_data['bone'] = $get_body_value['bm']; $db_data['kcal'] = $get_body_value['bmr']; $db_data['visceral'] = $get_body_value['uvi']; $db_data['sfr'] = $get_body_value['sfr']; $db_data['body_level'] = $get_body_value['fatlevelname'];//肥胖等级 $db_data['body_type'] = $get_body_value['body'];//身体类型 $db_data['body_age'] = $get_body_value['bodyage']; $db_data['4_electrode_data'] = json_encode($get_body_value); } if($get_body_value === false){ return $this->msg(10002); } // dump($get_body_value); // 处理心率start if(array_key_exists('heart_rate', $data)){ if(!$this->verify_data_is_ok($data['heart_rate'],'num')){ return $this->msg(10005,'心率数据格式错误'); } $db_data['heart_rate'] = $data['heart_rate']; } // 处理心率end } // 启动事务 Db::startTrans(); try{ Db::table($this->body_db_name['body_data_new'])->insert($db_data); $update_arr = [ 'height'=>$db_data['height'], 'weight'=>$db_data['weight'] ]; Db::table($this->body_db_name['juese'])->where(['id'=>$data['aud_id']])->update($update_arr); // 提交事务 Db::commit(); return $this->msg([]); } catch (\Exception $e) { // 回滚事务 Db::rollback(); return $this->msg(10002); } } public function body_report_brief_action($data){ $result_return = [ 'top_list'=>[ [ "name"=>$this->merged_data['weight']['name'], 'time'=>'', "value"=>"0", "unit"=>$this->merged_data['weight']['unit'], "standard"=>"", "standard_color"=>"#000000", 'target_weight'=>'0', 'target_weight_unit'=>'kg' ], [ "name"=>$this->merged_data['height']['name'], 'time'=>'', "value"=>"0", "unit"=>$this->merged_data['height']['unit'], "standard"=>"", "standard_color"=>"#000000", ], [ "name"=>$this->merged_data['bmi']['name'], 'time'=>'', "value"=>"0", "unit"=>$this->merged_data['bmi']['unit'], "standard"=>"", "standard_color"=>"#000000", ], ], 'card_list'=>[ ], ]; $user_data = Db::table($this->body_db_name['juese']) ->where(['id'=>$data['aud_id'],'is_del'=>0]) ->field('birthday,gender,target_weight,initial_weight,initial_date') ->find(); if(!$user_data){ return $this->msg(10003); } $body_last_data = Db::table($this->body_db_name['body_data_new']) ->where(['is_del'=>0,'aud_id'=>$data['aud_id']]) ->order('record_time desc,id desc') ->find(); if(!$body_last_data){ return $this->msg($result_return); } $record_time = substr($body_last_data['record_time'], 11, 5); // 处理体重 $result_return['top_list'][0]['time'] = $record_time; $result_return['top_list'][0]['value'] = floatval($body_last_data['weight']); $temporary_standard_color = $this->judgment_standard_color($result_return['top_list'][0]['value'],'weight',$user_data); $result_return['top_list'][0]['standard'] = $temporary_standard_color[1]; $result_return['top_list'][0]['standard_color'] = $temporary_standard_color[2]; $result_return['top_list'][0]['target_weight'] = $user_data['target_weight']; $result_return['top_list'][0]['key_name'] = 'weight'; $user_data['weight'] = $result_return['top_list'][0]['value']; // 处理身高 $result_return['top_list'][1]['time'] = $record_time; $result_return['top_list'][1]['value'] = floatval($body_last_data['height']); $temporary_standard_color = $this->judgment_standard_color($result_return['top_list'][0]['value'],'height',$user_data); $result_return['top_list'][1]['standard'] = $temporary_standard_color[1]; $result_return['top_list'][1]['standard_color'] = $temporary_standard_color[2]; $result_return['top_list'][1]['key_name'] = 'height'; // 处理BMI $result_return['top_list'][2]['time'] = $record_time; $result_return['top_list'][2]['value'] = floatval($body_last_data['bmi']); $temporary_standard_color = $this->judgment_standard_color($result_return['top_list'][0]['value'],'bmi',$user_data); $result_return['top_list'][2]['standard'] = $temporary_standard_color[1]; $result_return['top_list'][2]['standard_color'] = $temporary_standard_color[2]; $result_return['top_list'][2]['key_name'] = 'bmi'; // 如果有头围 if($body_last_data['head_circumference']){ $temporary_head_circumference = json_decode($body_last_data['head_circumference'],true); $result_return['top_list'][] = [ "name"=>$this->merged_data['head_circumference']['name'], 'time' => $record_time, 'value' => $temporary_head_circumference['value']?$temporary_head_circumference['value']:0, "unit"=>$this->merged_data['head_circumference']['unit'], 'standard' => $temporary_head_circumference['level']?$temporary_head_circumference['level']:0, 'standard_color' => $temporary_head_circumference['color']?$temporary_head_circumference['color']:0, 'key_name' => 'head_circumference', ]; } // 如果有心率 if($body_last_data['heart_rate']){ $temporary_standard_color = $this->judgment_standard_color(floatval($body_last_data['heart_rate']),'heart_rate',$user_data); $result_return['top_list'][] = [ "name"=>$this->merged_data['heart_rate']['name'], 'time' => $record_time, 'value' => floatval($body_last_data['heart_rate']), "unit"=>$this->merged_data['heart_rate']['unit'], 'standard' => $temporary_standard_color[1], 'standard_color' => $temporary_standard_color[2], 'key_name' => 'heart_rate', ]; } // 处理卡片数据 if($body_last_data['record_type'] == 'by_hand_means'){ return $this->msg($result_return); }else{ // 设置卡片顺序 $set_order = [ 'ideal_weight', //体脂率 'ideal_height', //体脂率 'ideal_bmi', //体脂率 'fat_r', //体脂率 'fat_w', //脂肪量 'muscle', //肌肉率 'muscleval', //肌肉量 'protein', //蛋白率 'proteinval', //蛋白量 'water', //水分 'sfr', //皮下脂肪 'body_level', //肥胖等级☆ 'visceral', //内脏指数 'bone', //骨重 'body_type', //身体类型☆ 'score', //身体得分☆ 'body_age', //身体年龄☆ ]; $temporary_three = []; foreach ($set_order as $key => $value) { if($value == 'body_level' || $value == 'body_type' || $value == 'body_age'){ // 如果是特殊数据 $result_return['card_list'][] = [ 'name'=>$this->merged_data[$value]['name'], 'icon'=>$this->merged_data[$value]['icon'], 'value'=>$value == 'body_age'?floatval($body_last_data[$value]):$body_last_data[$value], 'unit'=>$this->merged_data[$value]['unit'], 'standard'=>'', 'standard_color'=>'', 'key_name'=>$value, ]; }else{ if($value == 'ideal_weight' || $value == 'ideal_height' || $value == 'ideal_bmi'){ $temporary_standard_color = $this->judgment_standard_color('none',$value,$user_data); if($temporary_standard_color){ $result_return['card_list'][] = [ 'name'=>$this->merged_data[$value]['name'], 'icon'=>$this->merged_data[$value]['icon'], 'value'=>$temporary_standard_color, 'unit'=>$this->merged_data[$value]['unit'], 'standard'=>'', 'standard_color'=>'', 'key_name'=>$value, ]; } }else{ if($value == 'fat_w' || $value == 'muscleval' || $value == 'proteinval'){ $result_return['card_list'][] = [ 'name'=>$this->merged_data[$value]['name'], 'icon'=>$this->merged_data[$value]['icon'], 'value'=>floatval($body_last_data[$value]), 'unit'=>$this->merged_data[$value]['unit'], 'standard'=>$temporary_three[$value][0], 'standard_color'=>$temporary_three[$value][1], 'key_name'=>$value, ]; }else if($value == 'score'){ $temporary_standard_color = $this->judgment_standard_color($body_last_data[$value],$value,$user_data); $result_return['card_list'][] = [ 'name'=>$this->merged_data[$value]['name'], 'icon'=>$this->merged_data[$value]['icon'], 'value'=>floatval($temporary_standard_color[0]), 'unit'=>$this->merged_data[$value]['unit'], 'standard'=>$temporary_standard_color[1], 'standard_color'=>$temporary_standard_color[2], 'key_name'=>$value, ]; }else{ $temporary_standard_color = $this->judgment_standard_color($body_last_data[$value],$value,$user_data); if($temporary_standard_color){ $result_return['card_list'][] = [ 'name'=>$this->merged_data[$value]['name'], 'icon'=>$this->merged_data[$value]['icon'], 'value'=>floatval($temporary_standard_color[0]), 'unit'=>$this->merged_data[$value]['unit'], 'standard'=>$temporary_standard_color[1], 'standard_color'=>$this->merged_data[$value]['list'][$temporary_standard_color[1]], 'key_name'=>$value, ]; if($value == 'fat_r'){ $temporary_three['fat_w'] = [ $temporary_standard_color[1], $this->merged_data[$value]['list'][$temporary_standard_color[1]], ]; } if($value == 'muscle'){ $temporary_three['muscleval'] = [ $temporary_standard_color[1], $this->merged_data[$value]['list'][$temporary_standard_color[1]], ]; } if($value == 'protein'){ $temporary_three['proteinval'] = [ $temporary_standard_color[1], $this->merged_data[$value]['list'][$temporary_standard_color[1]], ]; } } } } // // 分割数据 // $temporary_data_1 = explode(',',$body_last_data[0][$value]); // // 设置默认标准颜色 // $standard_color = '#121212'; // // 处理标准颜色 // if(array_key_exists($temporary_data_1[1],$this->merged_data[$value]['list'])){ // $standard_color = $this->merged_data[$value]['list'][$temporary_data_1[1]]; // } // $result_return['card_list'][] = [ // 'name'=>$this->merged_data[$value]['name'], // 'icon'=>'', // 'value'=>$temporary_data_1[0], // 'unit'=>$this->merged_data[$value]['unit'], // 'standard'=>$temporary_data_1[1], // 'standard_color'=>$standard_color, // 'key_name'=>$value, // ]; } } } return $this->msg($result_return); } public function body_report_detailed_action($data){ $result_return = []; $user_data = Db::table($this->body_db_name['juese']) ->where(['id'=>$data['aud_id'],'is_del'=>0]) ->field('birthday,gender,target_weight,initial_weight,initial_date') ->find(); if(!$user_data){ return $this->msg(10003); } $body_last_data = Db::table($this->body_db_name['body_data_new']) ->where(['is_del'=>0,'aud_id'=>$data['aud_id']]) ->order('record_time desc,id desc') ->find(); if(!$body_last_data){ return $this->msg($result_return); } $user_data['weight'] = $body_last_data['weight']; $set_order = [ 'weight', //体重 'height', //身高 'heart_rate', //心率 'head_circumference', //头围 'kcal', //BMR 静态基础代谢 'bmi', //BMI 'fat_r', //体脂率 'fat_w', //脂肪量 'muscle', //肌肉率 'muscleval', //肌肉量 'protein', //蛋白率 'proteinval', //蛋白量 'water', //水分 'sfr', //皮下脂肪 // '', //骨骼肌率 // '', //骨路肌量 'visceral', //内脏指数 // '', //肌肉控制量 // '', //脂筋控制量 'ideal_weight', //理想体重 'ideal_height', //理想身高 'ideal_bmi', //理想bmi // '', //去脂体重 // '', //控制体量 'bone', //骨重 'body_type', //身体类型☆ 'body_level', //肥胖等级☆ // '', //健康评价 'body_age', //身体年龄☆ 'score', //身体得分☆ ]; foreach ($set_order as $key => $value) { if($body_last_data['record_type'] == 'by_hand_means'){ if($value == 'weight' || $value == 'height' || $value == 'bmi' || $value == 'head_circumference'){ $temporary_data_list = $this->judgment_standard_color_detailed($body_last_data[$value],$value,$user_data); if($temporary_data_list){ $result_return[] = $temporary_data_list; } }else{ continue; } }else{ if($value == 'ideal_weight' || $value == 'ideal_height' || $value == 'ideal_bmi'){ $temporary_data_list = $this->judgment_standard_color_detailed(null,$value,$user_data); if($temporary_data_list){ $result_return[] = $temporary_data_list; } }else{ $temporary_data_list = $this->judgment_standard_color_detailed($body_last_data[$value],$value,$user_data); if($temporary_data_list){ $result_return[] = $temporary_data_list; } } } } return $this->msg($result_return); } public function body_report_depth_action($data){ $result_return = []; $user_data = Db::table($this->body_db_name['juese']) ->where(['id'=>$data['aud_id'],'is_del'=>0]) ->field('nickname,head_pic,birthday,gender,target_weight,initial_weight,initial_date') ->find(); if(!$user_data){ return $this->msg(10003); } $body_last_data = Db::table($this->body_db_name['body_data_new']) ->where(['is_del'=>0,'aud_id'=>$data['aud_id']]) ->order('record_time desc,id desc') ->find(); if(!$body_last_data){ return $this->msg($result_return); } $user_data['weight'] = $body_last_data['weight']; $temporary_data_list = $this->judgment_standard_color_detailed($body_last_data['score'],'score',$user_data); $result_return[] = [ 'title_key'=>'user_data', 'title_name'=>'', 'nickname'=>$user_data['nickname'], 'head_pic'=>$user_data['head_pic'], 'gender'=>$user_data['gender'], 'record_time'=>$body_last_data['record_time'], 'age'=>$this->calculate_age($user_data['birthday']), 'height'=>$body_last_data['height'], 'score'=>$temporary_data_list?$temporary_data_list['value']:0, ]; // 如果有心率 if($body_last_data['heart_rate']){ $temporary_data_list = $this->judgment_standard_color_detailed($body_last_data['heart_rate'],'heart_rate',$user_data); $result_return[] = [ 'title_key'=>'heart_rate', 'title_name'=>'心脏健康', "icon"=>"http://tc.pcxbc.com/new_reedaw/icon/heart_rate.png", 'value'=>"心率 ".$temporary_data_list['value'], 'unit'=>$temporary_data_list['unit'], 'standard'=>$temporary_data_list['standard'], 'standard_color'=>$temporary_data_list['standard_color'], 'standard_list'=>$temporary_data_list['standard_list'], 'offset'=>$temporary_data_list['offset'], ]; } $temporary_data_list['weight'] = $this->judgment_standard_color_detailed($body_last_data['weight'],'weight',$user_data); $temporary_data_list['fat_w'] = $this->judgment_standard_color_detailed($body_last_data['fat_w'],'fat_w',$user_data); $temporary_data_list['muscleval'] = $this->judgment_standard_color_detailed($body_last_data['muscleval'],'muscleval',$user_data); $temporary_data_list['proteinval'] = $this->judgment_standard_color_detailed($body_last_data['proteinval'],'proteinval',$user_data); $temporary_data_list['water'] = $this->judgment_standard_color_detailed($body_last_data['water'],'water',$user_data); $temporary_data_list['bone'] = $this->judgment_standard_color_detailed($body_last_data['bone'],'bone',$user_data); // 体重 if(count($temporary_data_list['weight']['standard_list'])){ foreach ($temporary_data_list['weight']['standard_list'] as $key => $value) { if($value['text'] == $temporary_data_list['weight']['standard']){ $temporary_body_data['weight'][0] = "体重(".$value['min_val']."~".$value['max_val'].")"; $temporary_body_data['weight'][1] = ''; } } }else{ $temporary_body_data['weight'][0] = ''; $temporary_body_data['weight'][1] = ''; } // 脂肪量 if(count($temporary_data_list['fat_w']['standard_list'])){ foreach ($temporary_data_list['fat_w']['standard_list'] as $key => $value) { if($value['text'] == $temporary_data_list['fat_w']['standard']){ $temporary_body_data['fat_w'][0] = "(".$value['min_val']."~".$value['max_val'].")"; $temporary_body_data['fat_w'][1] = bcdiv($body_last_data['fat_w'],$body_last_data['weight'],2); } } }else{ $temporary_body_data['fat_w'][0] = ''; $temporary_body_data['fat_w'][1] = bcdiv($body_last_data['fat_w'],$body_last_data['weight'],2); } // 肌肉量 if(count($temporary_data_list['muscleval']['standard_list'])){ foreach ($temporary_data_list['muscleval']['standard_list'] as $key => $value) { if($value['text'] == $temporary_data_list['muscleval']['standard']){ $temporary_body_data['muscleval'][0] = "(".$value['min_val']."~".$value['max_val'].")"; $temporary_body_data['muscleval'][1] = bcdiv($body_last_data['muscleval'],$body_last_data['weight'],2); } } }else{ $temporary_body_data['muscleval'][0] = ''; $temporary_body_data['muscleval'][1] = bcdiv($body_last_data['muscleval'],$body_last_data['weight'],2); } // 蛋白量 if(count($temporary_data_list['proteinval']['standard_list'])){ foreach ($temporary_data_list['proteinval']['standard_list'] as $key => $value) { if($value['text'] == $temporary_data_list['proteinval']['standard']){ $temporary_body_data['proteinval'][0] = "(".$value['min_val']."~".$value['max_val'].")"; $temporary_body_data['proteinval'][1] = bcdiv($body_last_data['proteinval'],$body_last_data['weight'],2); } } }else{ $temporary_body_data['proteinval'][0] = ''; $temporary_body_data['proteinval'][1] = bcdiv($body_last_data['proteinval'],$body_last_data['weight'],2); } // 水分 if(count($temporary_data_list['water']['standard_list'])){ foreach ($temporary_data_list['water']['standard_list'] as $key => $value) { if($value['text'] == $temporary_data_list['water']['standard']){ $temporary_body_data['water'][0] = "(".$value['min_val']."~".$value['max_val'].")"; $temporary_body_data['water'][1] = bcdiv($body_last_data['water'],$body_last_data['weight'],2); } } }else{ $temporary_body_data['water'][0] = ''; $temporary_body_data['water'][1] = bcdiv($body_last_data['water'],$body_last_data['weight'],2); } // 骨重 if(count($temporary_data_list['bone']['standard_list'])){ foreach ($temporary_data_list['bone']['standard_list'] as $key => $value) { if($value['text'] == $temporary_data_list['bone']['standard']){ $temporary_body_data['bone'][0] = "(".$value['min_val']."~".$value['max_val'].")"; $temporary_body_data['bone'][1] = bcdiv($body_last_data['bone'],$body_last_data['weight'],2); } } }else{ $temporary_body_data['bone'][0] = ''; $temporary_body_data['bone'][1] = bcdiv($body_last_data['bone'],$body_last_data['weight'],2); } // 加 bcadd(,,20) // 减 bcsub(,,20) // 乘 bcmul(,,20) // 除 bcdiv(,,20) $result_return[] = [ 'title_key'=>'body_data', 'title_name'=>'身体成分分析', "icon"=>"http://tc.pcxbc.com/new_reedaw/icon/body_data.png", "title"=>$temporary_body_data['weight'][0], 'standard'=>$temporary_body_data == ''?'':$temporary_data_list['standard'], "description"=>"*总体重=体水分量+蛋白质量+脂肪量+肌肉量+骨重+其他", 'list'=>[ ['color'=>'#3E7AF6','name'=>'体水分量','scope'=>$temporary_body_data['water'][0],'value'=>$body_last_data['water'],'offset'=>$temporary_body_data['water'][1]], ['color'=>'#FFB119','name'=>'蛋白质量','scope'=>$temporary_body_data['proteinval'][0],'value'=>$body_last_data['proteinval'],'offset'=>$temporary_body_data['proteinval'][1]], ['color'=>'#31D4F5','name'=>'脂肪量','scope'=>$temporary_body_data['fat_w'][0],'value'=>$body_last_data['fat_w'],'offset'=>$temporary_body_data['fat_w'][1]], ['color'=>'#E749F5','name'=>'肌肉量','scope'=>$temporary_body_data['muscleval'][0],'value'=>$body_last_data['muscleval'],'offset'=>$temporary_body_data['muscleval'][1]], ['color'=>'#1EA04A','name'=>'骨重','scope'=>$temporary_body_data['bone'][0],'value'=>$body_last_data['bone'],'offset'=>$temporary_body_data['bone'][1]], [ 'color'=>'#999999', 'name'=>'其他', 'scope'=>"", 'value'=>'', 'offset'=>'', ], ], 'value'=>$body_last_data['weight'], 'unit'=>$temporary_data_list['unit'], ]; return $this->msg($result_return); $set_order = [ 'weight', //体重 'height', //身高 'heart_rate', //心率 'head_circumference', //头围 'kcal', //BMR 静态基础代谢 'bmi', //BMI 'fat_r', //体脂率 'fat_w', //脂肪量 'muscle', //肌肉率 'muscleval', //肌肉量 'protein', //蛋白率 'proteinval', //蛋白量 'water', //水分 'sfr', //皮下脂肪 // '', //骨骼肌率 // '', //骨路肌量 'visceral', //内脏指数 // '', //肌肉控制量 // '', //脂筋控制量 'ideal_weight', //理想体重 'ideal_height', //理想身高 'ideal_bmi', //理想bmi // '', //去脂体重 // '', //控制体量 'bone', //骨重 'body_type', //身体类型☆ 'body_level', //肥胖等级☆ // '', //健康评价 'body_age', //身体年龄☆ 'score', //身体得分☆ ]; foreach ($set_order as $key => $value) { if($body_last_data['record_type'] == 'by_hand_means'){ if($value == 'weight' || $value == 'height' || $value == 'bmi' || $value == 'head_circumference'){ $temporary_data_list = $this->judgment_standard_color_detailed($body_last_data[$value],$value,$user_data); if($temporary_data_list){ $result_return[] = $temporary_data_list; } }else{ continue; } }else{ if($value == 'ideal_weight' || $value == 'ideal_height' || $value == 'ideal_bmi'){ $temporary_data_list = $this->judgment_standard_color_detailed(null,$value,$user_data); if($temporary_data_list){ $result_return[] = $temporary_data_list; } }else{ $temporary_data_list = $this->judgment_standard_color_detailed($body_last_data[$value],$value,$user_data); if($temporary_data_list){ $result_return[] = $temporary_data_list; } } } } return $this->msg($result_return); } public function set_target_weight_action($data){ $user_data = Db::table($this->body_db_name['juese'])->where(['id'=>$data['aud_id']])->update(['target_weight'=>$data['weight']]); if($user_data){ return $this->msg([]); }else{ return $this->msg(10002); } } ################################################################工具################################################################ ################################################################工具################################################################ // 处理身高体重BMI的标准 public function process_hwb_standard_action($birthday,$key_name,$age,$gender_val){ $month_num = $this->calculateAgeInMonthsWithPrecision($birthday); if($age < $this->age_limit){ $result_data = $this->merged_data[$key_name]['standard_list']; if($key_name == '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_data[0]['max_val'] = $bhw_date[0]['f1sd']; $result_data[0]['max_val'] = $bhw_date[0]['f1sd']; $result_data[1]['min_val'] = $bhw_date[0]['f1sd']; $result_data[1]['max_val'] = $bhw_date[0]['z1sd']; $result_data[2]['min_val'] = $bhw_date[0]['z1sd']; $result_data[2]['max_val'] = $bhw_date[0]['z2sd']; $result_data[3]['min_val'] = $bhw_date[0]['z2sd']; } }else if($key_name == '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_data[0]['max_val'] = $bhw_date[0]['f2sd']; $result_data[1]['min_val'] = $bhw_date[0]['f2sd']; $result_data[1]['max_val'] = $bhw_date[0]['f1sd']; $result_data[2]['min_val'] = $bhw_date[0]['f1sd']; $result_data[2]['max_val'] = $bhw_date[0]['z1sd']; $result_data[3]['min_val'] = $bhw_date[0]['z1sd']; $result_data[3]['max_val'] = $bhw_date[0]['z2sd']; $result_data[4]['min_val'] = $bhw_date[0]['z2sd']; $result_data[4]['max_val'] = $bhw_date[0]['z3sd']; } }else if($key_name == 'weight'){ $bhw_date = Db::table($this->body_db_name['weigh'])->where("Month <= $month_num and Sex = '$gender_val'")->order('Month desc')->limit(1)->select(); // dump($bhw_date); if($bhw_date){ $result_data[0]['max_val'] = $bhw_date[0]['f2sd']; $result_data[1]['min_val'] = $bhw_date[0]['f2sd']; $result_data[1]['max_val'] = $bhw_date[0]['f1sd']; $result_data[2]['min_val'] = $bhw_date[0]['f1sd']; $result_data[2]['max_val'] = $bhw_date[0]['z1sd']; $result_data[3]['min_val'] = $bhw_date[0]['z1sd']; $result_data[3]['max_val'] = $bhw_date[0]['z2sd']; $result_data[4]['min_val'] = $bhw_date[0]['z2sd']; $result_data[4]['max_val'] = $bhw_date[0]['z3sd']; } } }else{ $result_data = []; } return $result_data; } // 处理其他的标注列表 public function process_other_standard_action($data,$key_name){ if($key_name == 'body_age'){ $result_data = [ ['min_val'=>'0','max_val'=>$data['age'],'text'=>'年轻','color'=>'#14CBAD'], //淡黄 ['min_val'=>$data['age'],'max_val'=>bcadd(bcsub($data['age'],0,2),$data['age'],2),'text'=>'偏大','color'=>'#F53F31'], //绿 ]; }else if($key_name == 'score'){ $result_data = $this->merged_data['score']['standard_list']; }else{ $gender_val = $data['gender'] == 2?'woman':'man'; if($key_name == 'fat_r'){ if($data['age'] < 30){ $result_data = $this->merged_data[$key_name]['standard_list'][$gender_val]['29']; }else{ $result_data = $this->merged_data[$key_name]['standard_list'][$gender_val]['30']; } }else if($key_name == 'fat_w'){ if($data['age'] < 30){ $result_data = $this->merged_data[$key_name]['standard_list'][$gender_val]['29']; }else{ $result_data = $this->merged_data[$key_name]['standard_list'][$gender_val]['30']; } $result_data = $this->calculate_new_standard($result_data,$data['weight_val'],$key_name,$data['age'],$gender_val); }else if($key_name == 'muscle' || $key_name == 'protein' || $key_name == 'water' || $key_name == 'sfr' || $key_name == 'visceral'){ $result_data = $this->merged_data[$key_name]['standard_list'][$gender_val]; }else if($key_name == 'muscleval' || $key_name == 'proteinval'){ $result_data = $this->merged_data[$key_name]['standard_list'][$gender_val]; $result_data = $this->calculate_new_standard($result_data,$data['weight_val'],$key_name,$data['age'],$gender_val); }else if($key_name == 'bone'){ if($gender_val == 'man'){ if($data['weight_val'] < 60){ $result_data = $this->merged_data[$key_name]['standard_list'][$gender_val]['60']; }else if($data['weight_val'] >= 60 && $data['weight_val'] < 75){ $result_data = $this->merged_data[$key_name]['standard_list'][$gender_val]['60_75']; }else{ $result_data = $this->merged_data[$key_name]['standard_list'][$gender_val]['75']; } }else{ if($data['weight_val'] < 45){ $result_data = $this->merged_data[$key_name]['standard_list'][$gender_val]['45']; }else if($data['weight_val'] >= 45 && $data['weight_val'] < 60){ $result_data = $this->merged_data[$key_name]['standard_list'][$gender_val]['45_60']; }else{ $result_data = $this->merged_data[$key_name]['standard_list'][$gender_val]['60']; } } } } return $result_data; } // 处理特殊落点下的标准值 public function process_special_offset_action($val, $list) { $return_data['standard'] = ''; $return_data['standard_color'] = '#000000'; if($val<$list[0]['min_val']){ $return_data['standard'] = $list[0]['text']; $return_data['standard_color'] = $list[0]['color']; return $return_data; } if($val>$list[count($list)-1]['max_val']){ $return_data['standard'] = $list[count($list)-1]['text']; $return_data['standard_color'] = $list[count($list)-1]['color']; return $return_data; } foreach ($list as $key => $value) { if($val >= $value['min_val'] && $val <= $value['max_val']){ $return_data['standard'] = $value['text']; $return_data['standard_color'] = $value['color']; break; } } return $return_data; } // 计算新标准 public function calculate_new_standard($data,$w,$k,$age=0,$gender='man'){ $temporary_arr = []; if($k != 'kcal'){ foreach ($data as $key => $value) { array_push($temporary_arr,[ 'min_val'=>bcmul($w,bcdiv($value['min_val'],100,2),2), 'max_val'=>bcmul($w,bcdiv($value['max_val'],100,2),2), 'text'=>$value['text'], 'color'=>$value['color'] ]); } }else{ // BMR标准值(男) BMR标准值(女) // 60.9*体重(kg)-54 61.0*体重(kg)-51 // 22.7*体重(kg)+495 22.5*体重(kg)+499 // 17.5*体重(kg)+651 12.2*体重(kg)+746 // 15.3*体重(kg)+679 14.7*体重(kg)+496 // 11.6*体重(kg)+879 8.7*体重(kg)+820 $vv_val = 0; if($age < 3){ if($gender == 'man'){ $vv_val = bcsub(bcmul(60.9,$w,2),54,2); }else{ $vv_val = bcsub(bcmul(61.0,$w,2),51,2); } }else if($age >= 3 && $age < 10){ if($gender == 'man'){ $vv_val = bcadd(bcmul(22.7,$w,2),495,2); }else{ $vv_val = bcadd(bcmul(22.5,$w,2),499,2); } }else if($age >= 10 && $age < 18){ if($gender == 'man'){ $vv_val = bcadd(bcmul(17.5,$w,2),651,2); }else{ $vv_val = bcadd(bcmul(12.2,$w,2),746,2); } }else if($age >= 18 && $age < 30){ if($gender == 'man'){ $vv_val = bcadd(bcmul(15.3,$w,2),679,2); }else{ $vv_val = bcadd(bcmul(14.7,$w,2),496,2); } }else{ if($gender == 'man'){ $vv_val = bcadd(bcmul(11.6,$w,2),879,2); }else{ $vv_val = bcadd(bcmul(8.7,$w,2),820,2); } } $data[0]['max_val'] = $vv_val; $data[1]['min_val'] = $vv_val; $temporary_arr = $data; } return $temporary_arr; } // public function hwb_standard($data){ $linshi_data = []; $month_num = $this->calculateAgeInMonthsWithPrecision($data['birthday']); $gender_val = $data['gender']; if($data['age'] < $this->age_limit){ foreach ($data as $key => $value) { if($key =='身高'){ $linshi_data['身高'] = $this->merged_data['height']['standard_list']; $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){ $linshi_data['身高'][0]['max_val'] = $bhw_date[0]['f2sd']; $linshi_data['身高'][1]['min_val'] = $bhw_date[0]['f2sd']; $linshi_data['身高'][1]['max_val'] = $bhw_date[0]['f1sd']; $linshi_data['身高'][2]['min_val'] = $bhw_date[0]['f1sd']; $linshi_data['身高'][2]['max_val'] = $bhw_date[0]['z1sd']; $linshi_data['身高'][3]['min_val'] = $bhw_date[0]['z1sd']; $linshi_data['身高'][3]['max_val'] = $bhw_date[0]['z2sd']; $linshi_data['身高'][4]['min_val'] = $bhw_date[0]['z2sd']; $linshi_data['身高'][4]['max_val'] = $bhw_date[0]['z3sd']; } }else if($key =='体重'){ $linshi_data['体重'] = $this->merged_data['weight']['standard_list']; $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){ $linshi_data['体重'][0]['max_val'] = $bhw_date[0]['f2sd']; $linshi_data['体重'][1]['min_val'] = $bhw_date[0]['f2sd']; $linshi_data['体重'][1]['max_val'] = $bhw_date[0]['f1sd']; $linshi_data['体重'][2]['min_val'] = $bhw_date[0]['f1sd']; $linshi_data['体重'][2]['max_val'] = $bhw_date[0]['z1sd']; $linshi_data['体重'][3]['min_val'] = $bhw_date[0]['z1sd']; $linshi_data['体重'][3]['max_val'] = $bhw_date[0]['z2sd']; $linshi_data['体重'][4]['min_val'] = $bhw_date[0]['z2sd']; $linshi_data['体重'][4]['max_val'] = $bhw_date[0]['z3sd']; } }else if($key =='BMI'){ $linshi_data['BMI'] = $this->merged_data['bmi']['standard_list']; $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){ $linshi_data['BMI'][0]['max_val'] = $bhw_date[0]['f1sd']; $linshi_data['BMI'][1]['min_val'] = $bhw_date[0]['f1sd']; $linshi_data['BMI'][1]['max_val'] = $bhw_date[0]['z1sd']; $linshi_data['BMI'][2]['min_val'] = $bhw_date[0]['z1sd']; $linshi_data['BMI'][2]['max_val'] = $bhw_date[0]['z2sd']; $linshi_data['BMI'][3]['min_val'] = $bhw_date[0]['z2sd']; } } } foreach ($linshi_data as $key => $value) { foreach ($value as $k => $v) { if($data[$key] >= $v['min_val'] && $data[$key] < $v['max_val']){ // 如果落在区间内 $data[$key.'2'] = $data[$key].','.$v['text'].','.$v['color']; break; } } // 如果$key.'2'没有被设置 if(!array_key_exists($key.'2', $data)){ if($data[$key] < $value[0]['min_val']){ // 如果小于最小值 $data[$key.'2'] = $data[$key].','.$value[0]['text'].','.$value[0]['color']; }else if($data[$key] >= $value[count($value)-1]['max_val']){ // 如果大于最大值 $data[$key.'2'] = $data[$key].','.$value[count($value)-1]['text'].','.$value[count($value)-1]['color']; } } } // die; }else{ $data['身高2'] = $data['身高'].',无,无'; $data['体重2'] = $data['体重'].',无,无'; $data['BMI2'] = $data['BMI'].',无,无'; } return $data; } // 处理异常 public function handling_exceptions($data){ for ($i=0; $i < count($data['list']); $i++) { if($data['value']>=$data['list'][$i]['min_val'] && $data['value']<$data['list'][$i]['max_val']){ $data['standard'] = $data['list'][$i]['text']; $data['color'] = $data['list'][$i]['color']; break; } } if($data['standard'] == '异常'){ if($data['value'] <= $data['list'][0]['min_val']){ $data['standard'] = $data['list'][0]['text']; $data['color'] = $data['list'][0]['color']; }else if($data['value'] >= $data['list'][count($data['list'])-1]['max_val']){ $data['standard'] = $data['list'][count($data['list'])-1]['text']; $data['color'] = $data['list'][count($data['list'])-1]['color']; } } return $data; } // 处理一般落点 public function process_offset_action($val, $list) { $count = count($list); if($count <= 0){ return 0; } // dump($val); // dump($list); // die; // 边界检查:小于最小值 $firstMin = floatval($list[0]['min_val']); if (floatval($val) < $firstMin) { return '0'; } // 边界检查:大于最大值 $lastMax = floatval($list[$count-1]['max_val']); if (floatval($val) > $lastMax) { return '100'; } // 找到数值所在的区间 for ($i = 0; $i < $count; $i++) { $item = $list[$i]; $valNum = floatval($val); $minNum = floatval($item['min_val']); $maxNum = floatval($item['max_val']); // 如果是第一个区间,包含最小值 if ($i == 0 && $valNum <= $maxNum) { $index = $i; break; } // 如果是最后一个区间,包含最大值 elseif ($i == $count - 1 && $valNum >= $minNum) { $index = $i; break; } // 中间区间 elseif ($valNum >= $minNum && $valNum < $maxNum) { $index = $i; break; } } if (!isset($index)) { return '0'; } // 计算基准值 $itemPercent = bcdiv('100', strval($count), 20); $basePercent = bcmul(strval($index), $itemPercent, 20); // 计算当前区间内的百分比 $item = $list[$index]; $minVal = $item['min_val']; $maxVal = $item['max_val']; $rangeWidth = bcsub($maxVal, $minVal, 20); // 如果范围宽度为0,直接返回基准百分比 if (floatval($rangeWidth) == 0) { $result = bcdiv($basePercent, '1', 1); return $result; } $offset = bcsub($val, $minVal, 20); $percentInRange = bcdiv($offset, $rangeWidth, 20); $currentPercent = bcmul($percentInRange, $itemPercent, 20); // 计算总百分比并格式化 $result = bcadd($basePercent, $currentPercent, 1); // $result = bcdiv($totalPercent, '1', 1); return $result; } // 发送信息获取身体数据 public function send_body_data($data,$type){ if($type == '4_electrode'){ // 使用接口调用照良那边的 进行计算start $url = 'https://klcz.pcxbc.com/open-api/calc/healthcalc/bodyfat3'; if($data['age'] < '3'){ $data['hasStandardList'] = true; }else{ unset($data['birthDay']); unset($data['head']); } $request_result = $this->postRequest($url,$data); }else{ // 使用接口调用照良那边的 进行计算start $url = 'https://ybapi.ybhdmob.com/api/third/body120'; $data['body'] = $data['adc']; $data['sex'] = $data['gender']; unset($data['adc']); unset($data['gender']); unset($data['birthDay']); $request_result = $this->postRequest($url,$data); } if($request_result['code'] != 0){ return false; }else{ return $request_result['data']; } } //简要身体数据标准和颜色 public function judgment_standard_color($data,$type,$user){ $linshi_data = []; $month_num = $this->calculateAgeInMonthsWithPrecision($user['birthday']); $age = $this->calculate_age($user['birthday']); $gender_val = $user['gender']; $return_data = [$data]; if($type == 'weight'){ $linshi_data = $this->merged_data['weight']; $bhw_date = Db::table($this->body_db_name['weight'])->where("Month >= $month_num and Sex = '$gender_val'")->order('Month')->limit(1)->cache(86400)->select(); if($bhw_date){ $linshi_data['standard_list'][0]['max_val'] = $bhw_date[0]['f2sd']; $linshi_data['standard_list'][1]['min_val'] = $bhw_date[0]['f2sd']; $linshi_data['standard_list'][1]['max_val'] = $bhw_date[0]['f1sd']; $linshi_data['standard_list'][2]['min_val'] = $bhw_date[0]['f1sd']; $linshi_data['standard_list'][2]['max_val'] = $bhw_date[0]['z1sd']; $linshi_data['standard_list'][3]['min_val'] = $bhw_date[0]['z1sd']; $linshi_data['standard_list'][3]['max_val'] = $bhw_date[0]['z2sd']; $linshi_data['standard_list'][4]['min_val'] = $bhw_date[0]['z2sd']; $linshi_data['standard_list'][4]['max_val'] = $bhw_date[0]['z3sd']; foreach ($linshi_data['standard_list'] as $k => $v) { if($data >= $v['min_val'] && $data < $v['max_val']){ // 如果落在区间内 $return_data[] = $v['text']; $return_data[] = $v['color']; } } // dump($return_data); if(count($return_data) <= 1){ $return_data[] = '异常'; $return_data[] = '#000000'; } return $return_data; }else{ $return_data[] = ''; $return_data[] = ''; return $return_data; } }else if($type == 'height'){ $linshi_data = $this->merged_data['height']; $bhw_date = Db::table($this->body_db_name['height'])->where("Month >= $month_num and Sex = '$gender_val'")->order('Month')->limit(1)->cache(86400)->select(); if($bhw_date){ $linshi_data['standard_list'][0]['max_val'] = $bhw_date[0]['f2sd']; $linshi_data['standard_list'][1]['min_val'] = $bhw_date[0]['f2sd']; $linshi_data['standard_list'][1]['max_val'] = $bhw_date[0]['f1sd']; $linshi_data['standard_list'][2]['min_val'] = $bhw_date[0]['f1sd']; $linshi_data['standard_list'][2]['max_val'] = $bhw_date[0]['z1sd']; $linshi_data['standard_list'][3]['min_val'] = $bhw_date[0]['z1sd']; $linshi_data['standard_list'][3]['max_val'] = $bhw_date[0]['z2sd']; $linshi_data['standard_list'][4]['min_val'] = $bhw_date[0]['z2sd']; $linshi_data['standard_list'][4]['max_val'] = $bhw_date[0]['z3sd']; foreach ($linshi_data['standard_list'] as $k => $v) { if($data >= $v['min_val'] && $data < $v['max_val']){ // 如果落在区间内 $return_data[] = $v['text']; $return_data[] = $v['color']; } } if(count($return_data) <= 1){ $return_data[] = '异常'; $return_data[] = '#000000'; } return $return_data; }else{ $return_data[] = ''; $return_data[] = ''; return $return_data; } }else if($type == 'bmi'){ $linshi_data = $this->merged_data['bmi']; $bhw_date = Db::table($this->body_db_name['bmi'])->where("Month >= $month_num and Sex = '$gender_val'")->order('Month')->limit(1)->cache(86400)->select(); if($bhw_date){ $linshi_data['standard_list'][0]['max_val'] = $bhw_date[0]['f1sd']; $linshi_data['standard_list'][1]['min_val'] = $bhw_date[0]['f1sd']; $linshi_data['standard_list'][1]['max_val'] = $bhw_date[0]['z1sd']; $linshi_data['standard_list'][2]['min_val'] = $bhw_date[0]['z1sd']; $linshi_data['standard_list'][2]['max_val'] = $bhw_date[0]['z2sd']; $linshi_data['standard_list'][3]['min_val'] = $bhw_date[0]['z2sd']; foreach ($linshi_data['standard_list'] as $k => $v) { if($data >= $v['min_val'] && $data < $v['max_val']){ // 如果落在区间内 $return_data[] = $v['text']; $return_data[] = $v['color']; } } if(count($return_data) <= 1){ $return_data[] = '异常'; $return_data[] = '#000000'; } return $return_data; }else{ $return_data[] = ''; $return_data[] = ''; return $return_data; } }else if($type == 'heart_rate'){ $linshi_data = $this->merged_data['heart_rate']; foreach ($this->heart_rate as $key => $value) { if($month_num > $value['age']['min'] && $month_num <= $value['age']['max']){ $linshi_data['standard_list'][0]['max_val'] = $value[$gender_val]['min']; $linshi_data['standard_list'][1]['min_val'] = $value[$gender_val]['min']; $linshi_data['standard_list'][1]['max_val'] = $value[$gender_val]['max']; $linshi_data['standard_list'][2]['min_val'] = $value[$gender_val]['max']; $linshi_data['standard_list'][2]['max_val'] = 300; break; } } foreach ($linshi_data['standard_list'] as $k => $v) { if($data >= $v['min_val'] && $data < $v['max_val']){ // 如果落在区间内 $return_data[] = $v['text']; $return_data[] = $v['color']; } } if(count($return_data) <= 1){ $return_data[] = '异常'; $return_data[] = '#000000'; } return $return_data; }else if($type == 'ideal_weight'){ $bhw_date = Db::table($this->body_db_name['weight'])->where("Month <= $month_num and Sex = '$gender_val'")->order('Month desc')->limit(1)->cache(86400)->select(); if($bhw_date){ return $bhw_date[0]['median']; }else{ return false; } }else if($type == 'ideal_height'){ $bhw_date = Db::table($this->body_db_name['height'])->where("Month <= $month_num and Sex = '$gender_val'")->order('Month desc')->limit(1)->cache(86400)->select(); if($bhw_date){ return $bhw_date[0]['median']; }else{ return false; } }else if($type == 'ideal_bmi'){ $bhw_date = Db::table($this->body_db_name['bmi'])->where("Month <= $month_num and Sex = '$gender_val'")->order('Month desc')->limit(1)->cache(86400)->select(); if($bhw_date){ return $bhw_date[0]['median']; }else{ return false; } }else if($type == 'fat_r'){//'fat_w'同一标准 if( ($gender_val==1 && $age<30 && $data<10) || ($gender_val==1 && $age>=30 && $data<11) || ($gender_val==2 && $age<30 && $data<20) || ($gender_val==2 && $age>=30 && $data<21)){ $return_data[] = '偏低'; $return_data[] = $this->merged_data[$type]['list']['偏低']; }else if( ($gender_val==1 && $age<30 && $data>=10 && $data<21) || ($gender_val==1 && $age>=30 && $data>=11 && $data<22) || ($gender_val==2 && $age<30 && $data>=20 && $data<31) || ($gender_val==2 && $age>=30 && $data>=21 && $data<32)){ $return_data[] = '标准'; $return_data[] = $this->merged_data[$type]['list']['标准']; }else if( ($gender_val==1 && $age<30 && $data>=21 && $data<26) || ($gender_val==1 && $age>=30 && $data>=22 && $data<27) || ($gender_val==2 && $age<30 && $data>=31 && $data<38) || ($gender_val==2 && $age>=30 && $data>=32 && $data<39)){ $return_data[] = '偏高'; $return_data[] = $this->merged_data[$type]['list']['偏高']; }else if( ($gender_val==1 && $age<30 && $data>=26) || ($gender_val==1 && $age>=30 && $data>=27) || ($gender_val==2 && $age<30 && $data<38) || ($gender_val==2 && $age>=30 && $data<39)){ $return_data[] = '高'; $return_data[] = $this->merged_data[$type]['list']['高']; }else{ $return_data[] = '异常'; $return_data[] = '#000000'; } return $return_data; }else if($type == 'muscle'){//'muscleval'同一标准 if( ($gender_val==1 && $type<40) || ($gender_val==2 && $type<30)){ $return_data[] = '不足'; $return_data[] = $this->merged_data[$type]['list']['不足']; }else if( ($gender_val==1 && $type>=40 && $type<60) || ($gender_val==2 && $type>=30 && $type<50)){ $return_data[] = '标准'; $return_data[] = $this->merged_data[$type]['list']['标准']; }else if( ($gender_val==1 && $type>=60) || ($gender_val==2 && $type>=50)){ $return_data[] = '优'; $return_data[] = $this->merged_data[$type]['list']['优']; }else{ $return_data[] = '异常'; $return_data[] = '#000000'; } return $return_data; }else if($type == 'protein'){//'proteinval'同一标准 if( ($gender_val==1 && $data<16) || ($gender_val==2 && $data<14)){ $return_data[] = '不足'; $return_data[] = $this->merged_data[$type]['list']['不足']; }else if( ($gender_val==1 && $data>=16 && $data<18) || ($gender_val==2 && $data>=14 && $data<16)){ $return_data[] = '标准'; $return_data[] = $this->merged_data[$type]['list']['标准']; }else if( ($gender_val==1 && $data>18) || ($gender_val==2 && $data>16)){ $return_data[] = '优'; $return_data[] = $this->merged_data[$type]['list']['优']; }else{ $return_data['蛋白量'][1] = '异常'; $return_data['蛋白率'][1] = '异常'; $return_data[] = '异常'; $return_data[] = '#000000'; } return $return_data; }else if($type == 'water'){ if( ($gender_val==1 && $data<55) || ($gender_val==2 && $data<45)){ $return_data[] = '不足'; $return_data[] = $this->merged_data[$type]['list']['不足']; }else if( ($gender_val==1 && $data>=55 && $data<65) || ($gender_val==2 && $data>=45 && $data<60)){ $return_data[] = '标准'; $return_data[] = $this->merged_data[$type]['list']['标准']; }else if( ($gender_val==1 && $data>65) || ($gender_val==2 && $data>60)){ $return_data[] = '优'; $return_data[] = $this->merged_data[$type]['list']['优']; }else{ $return_data[] = '异常'; $return_data[] = '#000000'; } return $return_data; }else if($type == 'sfr'){ if( ($gender_val==1 && $data<7) || ($gender_val==2 && $data<11)){ $return_data[] = '不足'; $return_data[] = $this->merged_data[$type]['list']['不足']; }else if( ($gender_val==1 && $data>=7 && $data<15) || ($gender_val==2 && $data>=11 && $data<17)){ $return_data[] = '标准'; $return_data[] = $this->merged_data[$type]['list']['标准']; }else if( ($gender_val==1 && $data>=15) || ($gender_val==2 && $data>=17)){ $return_data[] = '偏高'; $return_data[] = $this->merged_data[$type]['list']['偏高']; }else{ $return_data[] = '异常'; $return_data[] = '#000000'; } return $return_data; }else if($type == 'visceral'){ if($data<9){ $return_data[] = '标准'; $return_data[] = $this->merged_data[$type]['list']['标准']; }else if($data>=9 && $data<14){ $return_data[] = '警惕'; $return_data[] = $this->merged_data[$type]['list']['警惕']; }else if($data>=14){ $return_data[] = '危险'; $return_data[] = $this->merged_data[$type]['list']['危险']; }else{ $return_data[] = '异常'; $return_data[] = '#000000'; } return $return_data; }else if($type == 'bone'){ if( ($gender_val==1 && $user['weight']<60 && $data<2.4) || ($gender_val==1 && $user['weight']>=60 && $user['weight']<75 && $data<2.8) || ($gender_val==1 && $user['weight']>=75 && $data<3.1) || ($gender_val==2 && $user['weight']<45 && $data<1.7) || ($gender_val==2 && $user['weight']>=45 && $user['weight']<60 && $data<2.1) || ($gender_val==2 && $user['weight']>=60 && $data<2.4)){ $return_data[] = '不足'; $return_data[] = $this->merged_data[$type]['list']['不足']; }else if( ($gender_val==1 && $user['weight']<60 && $data>=2.4 && $data<=2.6) || ($gender_val==1 && $user['weight']>=60 && $user['weight']<75 && $data>=2.8 && $data<=3) || ($gender_val==1 && $user['weight']>=75 && $data>=3.1 && $data<=3.3) || ($gender_val==2 && $user['weight']<45 && $data>=1.7 && $data<=1.9) || ($gender_val==2 && $user['weight']>=45 && $user['weight']<60 && $data>=2.1 && $data<=2.3) || ($gender_val==2 && $user['weight']>=60 && $data>=2.4 && $data<=2.6)){ $return_data[] = '标准'; $return_data[] = $this->merged_data[$type]['list']['标准']; }else if( ($gender_val==1 && $user['weight']<60 && $data>2.6) || ($gender_val==1 && $user['weight']>=60 && $user['weight']<75 && $data>3) || ($gender_val==1 && $user['weight']>=75 && $data<3.3) || ($gender_val==2 && $user['weight']<45 && $data>1.9) || ($gender_val==2 && $user['weight']>=45 && $user['weight']<60 && $data>2.3) || ($gender_val==2 && $user['weight']>=60 && $data>2.6)){ $return_data[] = '优'; $return_data[] = $this->merged_data[$type]['list']['优']; }else{ $return_data[] = '异常'; $return_data[] = '#000000'; } return $return_data; }else if($type == 'score'){ $linshi_data = $this->merged_data['score']; foreach ($linshi_data['standard_list'] as $k => $v) { if($data >= $v['min_val'] && $data < $v['max_val']){ // 如果落在区间内 $return_data[] = $v['text']; $return_data[] = $v['color']; } } if(count($return_data) <= 1){ $return_data[] = '异常'; $return_data[] = '#000000'; } return $return_data; }else{ return false; } } //详细身体数据 public function judgment_standard_color_detailed($data,$type,$user){ $linshi_data = []; $month_num = $this->calculateAgeInMonthsWithPrecision($user['birthday']); $age = $this->calculate_age($user['birthday']); $gender_val = $user['gender']; $return_data = [$data]; if($type == 'weight'){ if($data){ $linshi_data = $this->merged_data['weight']; $linshi_data['value'] = floatval($data); $linshi_data['standard'] = ''; $linshi_data['standard_color'] = ''; $linshi_data['offset'] = 0; $bhw_date = Db::table($this->body_db_name['weight'])->where("Month >= $month_num and Sex = '$gender_val'")->order('Month')->limit(1)->cache(86400)->select(); if($bhw_date){ $linshi_data['standard_list'][0]['max_val'] = $bhw_date[0]['f2sd']; $linshi_data['standard_list'][1]['min_val'] = $bhw_date[0]['f2sd']; $linshi_data['standard_list'][1]['max_val'] = $bhw_date[0]['f1sd']; $linshi_data['standard_list'][2]['min_val'] = $bhw_date[0]['f1sd']; $linshi_data['standard_list'][2]['max_val'] = $bhw_date[0]['z1sd']; $linshi_data['standard_list'][3]['min_val'] = $bhw_date[0]['z1sd']; $linshi_data['standard_list'][3]['max_val'] = $bhw_date[0]['z2sd']; $linshi_data['standard_list'][4]['min_val'] = $bhw_date[0]['z2sd']; $linshi_data['standard_list'][4]['max_val'] = $bhw_date[0]['z3sd']; foreach ($linshi_data['standard_list'] as $k => $v) { if($data >= $v['min_val'] && $data < $v['max_val']){ // 如果落在区间内 $linshi_data['standard'] = $v['text']; $linshi_data['standard_color'] = $v['color']; } } if($linshi_data['standard'] == ''){ $linshi_data['standard'] = '异常'; $linshi_data['standard_color'] = '#000000'; } $linshi_data['offset'] = $this->process_offset_action($linshi_data['value'],$linshi_data['standard_list']); }else{ $linshi_data['standard_list'] = []; // $return_data[] = '异常'; // $return_data[] = '#000000'; // return $linshi_data; } return $linshi_data; }else{ return false; } } else if($type == 'height'){ if($data){ $linshi_data = $this->merged_data['height']; $linshi_data['value'] = floatval($data); $linshi_data['standard'] = ''; $linshi_data['standard_color'] = ''; $linshi_data['offset'] = 0; $bhw_date = Db::table($this->body_db_name['height'])->where("Month >= $month_num and Sex = '$gender_val'")->order('Month')->limit(1)->cache(86400)->select(); if($bhw_date){ $linshi_data['standard_list'][0]['max_val'] = $bhw_date[0]['f2sd']; $linshi_data['standard_list'][1]['min_val'] = $bhw_date[0]['f2sd']; $linshi_data['standard_list'][1]['max_val'] = $bhw_date[0]['f1sd']; $linshi_data['standard_list'][2]['min_val'] = $bhw_date[0]['f1sd']; $linshi_data['standard_list'][2]['max_val'] = $bhw_date[0]['z1sd']; $linshi_data['standard_list'][3]['min_val'] = $bhw_date[0]['z1sd']; $linshi_data['standard_list'][3]['max_val'] = $bhw_date[0]['z2sd']; $linshi_data['standard_list'][4]['min_val'] = $bhw_date[0]['z2sd']; $linshi_data['standard_list'][4]['max_val'] = $bhw_date[0]['z3sd']; foreach ($linshi_data['standard_list'] as $k => $v) { if($data >= $v['min_val'] && $data < $v['max_val']){ // 如果落在区间内 $linshi_data['standard'] = $v['text']; $linshi_data['standard_color'] = $v['color']; } } if($linshi_data['standard'] == ''){ $linshi_data['standard'] = '异常'; $linshi_data['standard_color'] = '#000000'; } $linshi_data['offset'] = $this->process_offset_action($linshi_data['value'],$linshi_data['standard_list']); }else{ $linshi_data['standard_list'] = []; // $return_data[] = '异常'; // $return_data[] = '#000000'; // return $return_data; } return $linshi_data; }else{ return false; } } else if($type == 'heart_rate'){ if($data){ $linshi_data = $this->merged_data['heart_rate']; $linshi_data['value'] = floatval($data); $linshi_data['standard'] = ''; $linshi_data['standard_color'] = ''; $linshi_data['offset'] = 0; foreach ($this->heart_rate as $key => $value) { if($month_num > $value['age']['min'] && $month_num <= $value['age']['max']){ $linshi_data['standard_list'][0]['max_val'] = $value[$gender_val]['min']; $linshi_data['standard_list'][1]['min_val'] = $value[$gender_val]['min']; $linshi_data['standard_list'][1]['max_val'] = $value[$gender_val]['max']; $linshi_data['standard_list'][2]['min_val'] = $value[$gender_val]['max']; $linshi_data['standard_list'][2]['max_val'] = 300; break; } } foreach ($linshi_data['standard_list'] as $k => $v) { if($data >= $v['min_val'] && $data < $v['max_val']){ // 如果落在区间内 $linshi_data['standard'] = $v['text']; $linshi_data['standard_color'] = $v['color']; } } if($linshi_data['standard'] == ''){ $linshi_data['standard'] = '异常'; $linshi_data['standard_color'] = '#000000'; } $linshi_data['offset'] = $this->process_offset_action($linshi_data['value'],$linshi_data['standard_list']); return $linshi_data; }else{ return false; } } else if($type == 'head_circumference'){ if($data){ $linshi_data = $this->merged_data['head_circumference']; $bhw_date =json_decode($data,true); $linshi_data['standard_list'] = $bhw_date['list2']; $linshi_data['value'] = $bhw_date['value']?$bhw_date['value']:0; $linshi_data['standard'] = $bhw_date['level']?$bhw_date['level']:''; $linshi_data['standard_color'] = $bhw_date['color']?$bhw_date['color']:'#000000'; $linshi_data['offset'] = $this->process_offset_action($linshi_data['value'],$linshi_data['standard_list']); return $linshi_data; }else{ return false; } } else if($type == 'kcal'){ if($data){ $linshi_data = $this->merged_data['kcal']; $linshi_data['value'] = floatval($data); $linshi_data['standard'] = ''; $linshi_data['standard_color'] = ''; $linshi_data['offset'] = 0; // BMR标准值(男) BMR标准值(女) // 60.9*体重(kg)-54 61.0*体重(kg)-51 // 22.7*体重(kg)+495 22.5*体重(kg)+499 // 17.5*体重(kg)+651 12.2*体重(kg)+746 // 15.3*体重(kg)+679 14.7*体重(kg)+496 // 11.6*体重(kg)+879 8.7*体重(kg)+820 $vv_val = 0; if($age < 3){ if($gender_val == '1'){ $vv_val = bcsub(bcmul(60.9,$user['weight'],2),54,2); }else{ $vv_val = bcsub(bcmul(61.0,$user['weight'],2),51,2); } }else if($age >= 3 && $age < 10){ if($gender_val == '1'){ $vv_val = bcadd(bcmul(22.7,$user['weight'],2),495,2); }else{ $vv_val = bcadd(bcmul(22.5,$user['weight'],2),499,2); } }else if($age >= 10 && $age < 18){ if($gender_val == '1'){ $vv_val = bcadd(bcmul(17.5,$user['weight'],2),651,2); }else{ $vv_val = bcadd(bcmul(12.2,$user['weight'],2),746,2); } }else if($age >= 18 && $age < 30){ if($gender_val == '1'){ $vv_val = bcadd(bcmul(15.3,$user['weight'],2),679,2); }else{ $vv_val = bcadd(bcmul(14.7,$user['weight'],2),496,2); } }else{ if($gender_val == '1'){ $vv_val = bcadd(bcmul(11.6,$user['weight'],2),879,2); }else{ $vv_val = bcadd(bcmul(8.7,$user['weight'],2),820,2); } } // dump($linshi_data['standard_list']); $linshi_data['standard_list'][0]['max_val'] = $vv_val; $linshi_data['standard_list'][1]['min_val'] = $vv_val; // dump($linshi_data['standard_list']); // dump($data); foreach ($linshi_data['standard_list'] as $k => $v) { if($data >= $v['min_val'] && $data < $v['max_val']){ // 如果落在区间内 $linshi_data['standard'] = $v['text']; $linshi_data['standard_color'] = $v['color']; } } if($linshi_data['standard'] == ''){ $linshi_data['standard'] = '异常'; $linshi_data['standard_color'] = '#000000'; } $linshi_data['offset'] = $this->process_offset_action($linshi_data['value'],$linshi_data['standard_list']); return $linshi_data; }else{ return false; } } else if($type == 'bmi'){ if($data){ $linshi_data = $this->merged_data['bmi']; $linshi_data['value'] = floatval($data); $linshi_data['standard'] = ''; $linshi_data['standard_color'] = ''; $linshi_data['offset'] = 0; $bhw_date = Db::table($this->body_db_name['bmi'])->where("Month >= $month_num and Sex = '$gender_val'")->order('Month')->limit(1)->cache(86400)->select(); // dump($month_num); // dump($bhw_date); if($bhw_date){ $linshi_data['standard_list'][0]['max_val'] = $bhw_date[0]['f1sd']; $linshi_data['standard_list'][1]['min_val'] = $bhw_date[0]['f1sd']; $linshi_data['standard_list'][1]['max_val'] = $bhw_date[0]['z1sd']; $linshi_data['standard_list'][2]['min_val'] = $bhw_date[0]['z1sd']; $linshi_data['standard_list'][2]['max_val'] = $bhw_date[0]['z2sd']; $linshi_data['standard_list'][3]['min_val'] = $bhw_date[0]['z2sd']; foreach ($linshi_data['standard_list'] as $k => $v) { if($data >= $v['min_val'] && $data < $v['max_val']){ // 如果落在区间内 $linshi_data['standard'] = $v['text']; $linshi_data['standard_color'] = $v['color']; } } if($linshi_data['standard'] == ''){ $linshi_data['standard'] = '异常'; $linshi_data['standard_color'] = '#000000'; } $linshi_data['offset'] = $this->process_offset_action($linshi_data['value'],$linshi_data['standard_list']); }else{ $linshi_data['standard_list'] = []; // $return_data[] = '异常'; // $return_data[] = '#000000'; // return $linshi_data; } return $linshi_data; }else{ return false; } } else if($type == 'fat_r' || $type == 'fat_w'){ if($data){ $linshi_data = $this->merged_data[$type]; $linshi_data['value'] = floatval($data); $linshi_data['standard'] = ''; $linshi_data['standard_color'] = ''; $linshi_data['offset'] = 0; if($age < 30){ $linshi_data['standard_list'] = $this->merged_data[$type]['standard_list'][$gender_val]['29']; }else{ $linshi_data['standard_list'] = $this->merged_data[$type]['standard_list'][$gender_val]['30']; } foreach ($linshi_data['standard_list'] as $k => $v) { if($data >= $v['min_val'] && $data < $v['max_val']){ // 如果落在区间内 $linshi_data['standard'] = $v['text']; $linshi_data['standard_color'] = $v['color']; } } if($linshi_data['standard'] == ''){ $linshi_data['standard'] = '异常'; $linshi_data['standard_color'] = '#000000'; } $linshi_data['offset'] = $this->process_offset_action($linshi_data['value'],$linshi_data['standard_list']); return $linshi_data; }else{ return false; } } else if($type == 'muscle' || $type == 'muscleval' || $type == 'protein' || $type == 'proteinval' || $type == 'water' || $type == 'sfr' || $type == 'visceral'){ if($data){ $linshi_data = $this->merged_data[$type]; $linshi_data['value'] = floatval($data); $linshi_data['standard'] = ''; $linshi_data['standard_color'] = ''; $linshi_data['offset'] = 0; $linshi_data['standard_list'] = $this->merged_data[$type]['standard_list'][$gender_val]; foreach ($linshi_data['standard_list'] as $k => $v) { if($data >= $v['min_val'] && $data < $v['max_val']){ // 如果落在区间内 $linshi_data['standard'] = $v['text']; $linshi_data['standard_color'] = $v['color']; } } if($linshi_data['standard'] == ''){ $linshi_data['standard'] = '异常'; $linshi_data['standard_color'] = '#000000'; } $linshi_data['offset'] = $this->process_offset_action($linshi_data['value'],$linshi_data['standard_list']); return $linshi_data; }else{ return false; } } else if($type == 'ideal_weight'){ if($data){ $linshi_data = $this->merged_data[$type]; $linshi_data['value'] = floatval($data); $linshi_data['standard'] = ''; $linshi_data['standard_color'] = ''; $linshi_data['offset'] = 0; $bhw_date = Db::table($this->body_db_name['weight'])->where("Month >= $month_num and Sex = '$gender_val'")->order('Month')->limit(1)->cache(86400)->select(); if($bhw_date){ $linshi_data['value'] = $bhw_date[0]['median']; return $linshi_data; }else{ return false; } }else{ return false; } } else if($type == 'ideal_height'){ if($data){ $linshi_data = $this->merged_data[$type]; $linshi_data['value'] = floatval($data); $linshi_data['standard'] = ''; $linshi_data['standard_color'] = ''; $linshi_data['offset'] = 0; $bhw_date = Db::table($this->body_db_name['height'])->where("Month >= $month_num and Sex = '$gender_val'")->order('Month')->limit(1)->cache(86400)->select(); if($bhw_date){ $linshi_data['value'] = $bhw_date[0]['median']; return $linshi_data; }else{ return false; } }else{ return false; } } else if($type == 'ideal_bmi'){ if($data){ $linshi_data = $this->merged_data[$type]; $linshi_data['value'] = floatval($data); $linshi_data['standard'] = ''; $linshi_data['standard_color'] = ''; $linshi_data['offset'] = 0; $bhw_date = Db::table($this->body_db_name['bmi'])->where("Month >= $month_num and Sex = '$gender_val'")->order('Month')->limit(1)->cache(86400)->select(); if($bhw_date){ $linshi_data['value'] = $bhw_date[0]['median']; return $linshi_data; }else{ return false; } }else{ return false; } } else if($type == 'bone'){ if($data){ $linshi_data = $this->merged_data[$type]; $linshi_data['value'] = floatval($data); $linshi_data['standard'] = ''; $linshi_data['standard_color'] = ''; $linshi_data['offset'] = 0; if($gender_val == '1'){ if($user['weight'] < 60){ $linshi_data['standard_list'] = $this->merged_data[$type]['standard_list'][$gender_val]['60']; }else if($user['weight'] >= 60 && $user['weight'] < 75){ $linshi_data['standard_list'] = $this->merged_data[$type]['standard_list'][$gender_val]['60_75']; }else{ $linshi_data['standard_list'] = $this->merged_data[$type]['standard_list'][$gender_val]['75']; } }else{ if($user['weight'] < 45){ $linshi_data['standard_list'] = $this->merged_data[$type]['standard_list'][$gender_val]['45']; }else if($user['weight'] >= 45 && $user['weight'] < 60){ $linshi_data['standard_list'] = $this->merged_data[$type]['standard_list'][$gender_val]['45_60']; }else{ $linshi_data['standard_list'] = $this->merged_data[$type]['standard_list'][$gender_val]['60']; } } foreach ($linshi_data['standard_list'] as $k => $v) { if($data >= $v['min_val'] && $data < $v['max_val']){ // 如果落在区间内 $linshi_data['standard'] = $v['text']; $linshi_data['standard_color'] = $v['color']; } } if($linshi_data['standard'] == ''){ $linshi_data['standard'] = '异常'; $linshi_data['standard_color'] = '#000000'; } $linshi_data['offset'] = $this->process_offset_action($linshi_data['value'],$linshi_data['standard_list']); return $linshi_data; }else{ return false; } } else if($type == 'body_type' || $type == 'body_level' || $type == 'body_age'){ if($data){ $linshi_data = $this->merged_data[$type]; $linshi_data['value'] = $data; $linshi_data['standard'] = ''; $linshi_data['standard_color'] = ''; $linshi_data['offset'] = 0; return $linshi_data; }else{ return false; } } else if($type == 'score'){ if($data){ $linshi_data = $this->merged_data[$type]; $linshi_data['value'] = floatval($data); $linshi_data['standard'] = ''; $linshi_data['standard_color'] = ''; $linshi_data['offset'] = 0; foreach ($linshi_data['standard_list'] as $k => $v) { if($data >= $v['min_val'] && $data < $v['max_val']){ // 如果落在区间内 $linshi_data['standard'] = $v['text']; $linshi_data['standard_color'] = $v['color']; } } if($linshi_data['standard'] == ''){ $linshi_data['standard'] = '异常'; $linshi_data['standard_color'] = '#000000'; } $linshi_data['offset'] = $this->process_offset_action($linshi_data['value'],$linshi_data['standard_list']); return $linshi_data; }else{ return false; } } else{ return false; } } }