1576 lines
70 KiB
PHP
1576 lines
70 KiB
PHP
<?php
|
||
|
||
namespace app\NewReedaw\controller\app;
|
||
|
||
use think\Db;
|
||
use app\NewReedaw\controller\app\Cardparts;
|
||
use app\NewReedaw\controller\app\Calculatebody;
|
||
|
||
class Userbody 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 $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"=>"身体得分指综合评估身体健康状况的指标。",
|
||
'list' => [
|
||
'偏低' => '#C2831C',
|
||
'标准' => '#F5A623',
|
||
'偏高' => '#14CBAD',
|
||
'高' => '#0F9982'
|
||
],
|
||
'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'],
|
||
]
|
||
],
|
||
'height' => [
|
||
'name' => '身高',
|
||
'unit' => 'cm',
|
||
"description"=>"人体纵向部分的长度,源于人体的纵向生长,受遗传因素的影响较大",
|
||
'list' => [
|
||
'矮'=>'#FD5759',
|
||
'偏矮'=>'#FAAD01',
|
||
'标准'=>'#5BD068',
|
||
'偏高'=>'#6793F4',
|
||
'高'=>'#3D67D3',
|
||
],
|
||
'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'],
|
||
]
|
||
],
|
||
'weight' => [
|
||
'name' => '体重',
|
||
'unit' => 'kg',
|
||
"description"=>"体重指人体的重量,通常用斤、公斤或磅作为单位来衡量。体重是人体健康的重要指标,但需要结合身高、体型和体脂率等因素来综合评估。",
|
||
'list' => [
|
||
'低'=>'#FD5759',
|
||
'偏低'=>'#FAAD01',
|
||
'标准'=>'#5BD068',
|
||
'偏高'=>'#FAAD01',
|
||
'高'=>'#FD5759',
|
||
],
|
||
'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'=>'#FAAD01'],
|
||
['min_val'=>'','max_val'=>'','text'=>'高','color'=>'#FD5759'],
|
||
]
|
||
],
|
||
'bmi' => [
|
||
'name' => 'BMI',
|
||
'unit' => '',
|
||
"description"=>"BMI是身体质量指数(BodyMassIndex)的缩写,是一种常用的衡量人体肥胖程度的指标",
|
||
'list' => [
|
||
'消瘦'=>'#FDDA6B',
|
||
'正常'=>'#5BD068',
|
||
'偏重'=>'#FAAD01',
|
||
'肥胖'=>'#FD5759',
|
||
],
|
||
'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'],
|
||
]
|
||
],
|
||
'fat_r' => [
|
||
'name' => '脂肪率',
|
||
'unit' => '%',
|
||
"description"=>"",
|
||
'list' => [
|
||
'偏低' => '#FCDB67',
|
||
'标准' => '#58D268',
|
||
'偏高' => '#FCAA00',
|
||
'高' => '#FD5752'
|
||
],
|
||
'standard_list' => [
|
||
'man'=>[
|
||
'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'],
|
||
],
|
||
],
|
||
'woman'=>[
|
||
'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'],
|
||
]
|
||
]
|
||
]
|
||
],
|
||
'fat_w' => [
|
||
'name' => '脂肪量',
|
||
'unit' => 'kg',
|
||
"description"=>"",
|
||
'list' => [
|
||
'偏低' => '#FCDB67',
|
||
'标准' => '#58D268',
|
||
'偏高' => '#FCAA00',
|
||
'高' => '#FD5752'
|
||
],
|
||
'standard_list' => [
|
||
'man'=>[
|
||
'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'],
|
||
],
|
||
],
|
||
'woman'=>[
|
||
'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'],
|
||
]
|
||
]
|
||
]
|
||
],
|
||
'muscle' => [
|
||
'name' => '肌肉率',
|
||
'unit' => '%',
|
||
"description"=>"",
|
||
'list' => [
|
||
'不足' => '#FFDA68',
|
||
'标准' => '#59CD6F',
|
||
'优' => '#3C64D4'
|
||
],
|
||
'standard_list' => [
|
||
'man'=>[
|
||
['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'],
|
||
],
|
||
'woman'=>[
|
||
['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'],
|
||
]
|
||
]
|
||
],
|
||
'muscleval' => [
|
||
'name' => '肌肉量',
|
||
'unit' => 'kg',
|
||
"description"=>"",
|
||
'list' => [
|
||
'不足' => '#FFDA68',
|
||
'标准' => '#59CD6F',
|
||
'优' => '#3C64D4'
|
||
],
|
||
'standard_list' => [
|
||
'man'=>[
|
||
['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'],
|
||
],
|
||
'woman'=>[
|
||
['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'],
|
||
]
|
||
]
|
||
],
|
||
'water' => [
|
||
'name' => '水分',
|
||
'unit' => 'kg',
|
||
"description"=>"",
|
||
'list' => [
|
||
'不足' => '#FED966',
|
||
'标准' => '#58CF6B',
|
||
'优' => '#3A68D7'
|
||
],
|
||
'standard_list' => [
|
||
'man'=>[
|
||
['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'],
|
||
],
|
||
'woman'=>[
|
||
['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'],
|
||
]
|
||
]
|
||
],
|
||
'bone' => [
|
||
'name' => '骨重',
|
||
'unit' => 'kg',
|
||
"description"=>"",
|
||
'list' => [
|
||
'不足' => '#FED966',
|
||
'标准' => '#58CF6F',
|
||
'优' => '#3A68D7'
|
||
],
|
||
'standard_list' => [
|
||
'man'=>[
|
||
'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'],
|
||
],
|
||
],
|
||
'woman'=>[
|
||
'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'],
|
||
],
|
||
]
|
||
]
|
||
],
|
||
'protein' => [
|
||
'name' => '蛋白率',
|
||
'unit' => '%',
|
||
"description"=>"",
|
||
'list' => [
|
||
'不足' => '#FED966',
|
||
'标准' => '#58CF6F',
|
||
'优' => '#3A68D7'
|
||
],
|
||
'standard_list' => [
|
||
'man'=>[
|
||
['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'], //蓝
|
||
],
|
||
'woman'=>[
|
||
['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'],
|
||
]
|
||
]
|
||
],
|
||
'proteinval' => [
|
||
'name' => '蛋白量',
|
||
'unit' => 'kg',
|
||
"description"=>"",
|
||
'list' => [
|
||
'不足' => '#FED966',
|
||
'标准' => '#58CF6F',
|
||
'优' => '#3A68D7'
|
||
],
|
||
'standard_list' => [
|
||
'man'=>[
|
||
['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'], //蓝
|
||
],
|
||
'woman'=>[
|
||
['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'],
|
||
]
|
||
]
|
||
],
|
||
'kcal' => [
|
||
'name' => '基础代谢',
|
||
'unit' => 'kcal',
|
||
"description"=>"",
|
||
'list' => [
|
||
'偏低' => '#FF5656',
|
||
'优' => '#3A68D4'
|
||
],
|
||
'standard_list' => [
|
||
['min_val'=>'0','max_val'=>'','text'=>'偏低','color'=>'#ff5656'],
|
||
['min_val'=>'','max_val'=>'9999','text'=>'优','color'=>'#3C66D2'],
|
||
]
|
||
],
|
||
'visceral' => [
|
||
'name' => '内脏指数',
|
||
'unit' => '',
|
||
"description"=>"",
|
||
'list' => [
|
||
'标准' => '#55CF6C',
|
||
'警惕' => '#FEAC00',
|
||
'危险' => '#FB5A52'
|
||
],
|
||
'standard_list' => [
|
||
'man'=>[
|
||
['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'], //红
|
||
],
|
||
'woman'=>[
|
||
['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'], //红
|
||
]
|
||
]
|
||
],
|
||
'sfr' => [
|
||
'name' => '皮下脂肪',
|
||
'unit' => '%',
|
||
"description"=>"",
|
||
'list' => [
|
||
'不足' => '#FCDB68',
|
||
'标准' => '#59D16F',
|
||
'偏高' => '#FEAB03'
|
||
],
|
||
'standard_list' => [
|
||
'man'=>[
|
||
['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'], //橙
|
||
],
|
||
'woman'=>[
|
||
['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'],
|
||
]
|
||
]
|
||
],
|
||
'body_level' => [
|
||
'name' => '肥胖等级',
|
||
'unit' => '',
|
||
"description"=>"肥胖等级指根据个体BMI来评估一个人是否超重或肥胖的指标。",
|
||
'list' => [],
|
||
'standard_list' => []
|
||
],
|
||
'body_type' => [
|
||
'name' => '身体类型',
|
||
'unit' => '',
|
||
"description"=>"身体类型是对人体外形的总体描述和评定",
|
||
'list' => [],
|
||
'standard_list' => []
|
||
],
|
||
'body_age' => [
|
||
'name' => '身体年龄',
|
||
'unit' => '岁',
|
||
"description"=>"身体年龄指衡量身体健康状况的指标,它反映了一个人的生理状态相对于实际年龄的健康程度。相关模型主要与BMI有关。",
|
||
'list' => [],
|
||
'standard_list' => []
|
||
]
|
||
|
||
];
|
||
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 $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_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 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 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 body_report_brief_action($data){
|
||
$result_return = [
|
||
'top_list'=>[
|
||
[
|
||
"name"=>"体重",
|
||
'time'=>'',
|
||
"value"=>"0",
|
||
"unit"=>"kg",
|
||
"standard"=>"",
|
||
"standard_color"=>"#77E46C",
|
||
'target_weight'=>'0',
|
||
'target_weight_unit'=>'kg'
|
||
],
|
||
[
|
||
"name"=>"身高",
|
||
'time'=>'',
|
||
"value"=>"0",
|
||
"unit"=>"cm",
|
||
"standard"=>"",
|
||
"standard_color"=>"#FEA63D",
|
||
],
|
||
[
|
||
"name"=>"BMI",
|
||
'time'=>'',
|
||
"value"=>"0",
|
||
"unit"=>"",
|
||
"standard"=>"",
|
||
"standard_color"=>"#FF8072",
|
||
],
|
||
],
|
||
// 'weight'=>
|
||
// 'height'=>
|
||
// 'bmi'=>
|
||
'card_list'=>[
|
||
|
||
],
|
||
];
|
||
|
||
$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
|
||
");
|
||
if(count($body_last_data) <= 0){
|
||
return $this->msg($result_return);
|
||
}
|
||
|
||
// return $this->msg($body_last_data);
|
||
|
||
|
||
$record_time = substr($body_last_data[0]['record_time'], 11, 5);
|
||
// 处理体重
|
||
$temporary_weight = explode(',',$body_last_data[0]['weight']);
|
||
$result_return['top_list'][0]['time'] = $record_time;
|
||
$result_return['top_list'][0]['value'] = $temporary_weight[0];
|
||
$result_return['top_list'][0]['standard'] = $temporary_weight[1] == '无'?'':$temporary_weight[1];
|
||
$result_return['top_list'][0]['standard_color'] = $temporary_weight[2] == '无'?'':$temporary_weight[2];
|
||
$result_return['top_list'][0]['target_weight'] = $body_last_data[0]['target_weight'];
|
||
$result_return['top_list'][0]['key_name'] = 'weight';
|
||
|
||
// 处理身高
|
||
$temporary_height = explode(',',$body_last_data[0]['height']);
|
||
$result_return['top_list'][1]['time'] = $record_time;
|
||
$result_return['top_list'][1]['value'] = $temporary_height[0];
|
||
$result_return['top_list'][1]['standard'] = $temporary_height[1] == '无'?'':$temporary_height[1];
|
||
$result_return['top_list'][1]['standard_color'] = $temporary_height[2] == '无'?'':$temporary_height[2];
|
||
$result_return['top_list'][1]['key_name'] = 'height';
|
||
|
||
// 处理BMI
|
||
$temporary_bmi = explode(',',$body_last_data[0]['bmi']);
|
||
$result_return['top_list'][2]['time'] = $record_time;
|
||
$result_return['top_list'][2]['value'] = $temporary_bmi[0];
|
||
$result_return['top_list'][2]['standard'] = $temporary_bmi[1] == '无'?'':$temporary_bmi[1];
|
||
$result_return['top_list'][2]['standard_color'] = $temporary_bmi[2] == '无'?'':$temporary_bmi[2];
|
||
$result_return['top_list'][2]['key_name'] = 'bmi';
|
||
|
||
// 如果有心率
|
||
|
||
// 如果有头围
|
||
|
||
// 处理卡片数据
|
||
if($body_last_data[0]['record_type'] == 'by_hand_means'){
|
||
return $this->msg($result_return);
|
||
}else{
|
||
// 设置卡片顺序
|
||
$set_order = [
|
||
'fat_r', //体脂率
|
||
'fat_w', //脂肪量
|
||
'muscle', //肌肉率
|
||
'muscleval', //肌肉量
|
||
'protein', //蛋白率
|
||
'proteinval', //蛋白量
|
||
'water', //水分
|
||
'sfr', //皮下脂肪
|
||
'body_level', //肥胖等级☆
|
||
'visceral', //内脏指数
|
||
'bone', //骨重
|
||
'body_type', //身体类型☆
|
||
'score', //身体得分☆
|
||
'body_age', //身体年龄☆
|
||
];
|
||
foreach ($set_order as $key => $value) {
|
||
if($value == 'body_level' || $value == 'body_type' || $value == 'body_age' || $value == 'score'){
|
||
// 如果是特殊数据
|
||
$result_return['card_list'][] = [
|
||
'name'=>$this->merged_data[$value]['name'],
|
||
'icon'=>'',
|
||
'value'=>$body_last_data[0][$value],
|
||
'unit'=>$this->merged_data[$value]['unit'],
|
||
'standard'=>'',
|
||
'standard_color'=>'',
|
||
'key_name'=>$value,
|
||
];
|
||
}else{
|
||
// 分割数据
|
||
$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 = [];
|
||
|
||
$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
|
||
");
|
||
if(count($body_last_data) <= 0){
|
||
return $this->msg($result_return);
|
||
}
|
||
// return $this->msg($body_last_data);
|
||
// 设置卡片顺序
|
||
$set_order = [
|
||
'weight', //体重
|
||
'height', //身高
|
||
// '', //心率
|
||
// 'bmr', //BMR 静态基础代谢
|
||
'bmi', //BMI
|
||
'fat_r', //体脂率
|
||
'fat_w', //脂肪量
|
||
'muscle', //肌肉率
|
||
'muscleval', //肌肉量
|
||
'protein', //蛋白率
|
||
'proteinval', //蛋白量
|
||
'water', //水分
|
||
'sfr', //皮下脂肪
|
||
'visceral', //内脏指数
|
||
'bone', //骨重
|
||
'body_type', //身体类型☆
|
||
'body_level', //肥胖等级☆
|
||
'body_age', //身体年龄☆
|
||
'score', //身体得分☆
|
||
];
|
||
|
||
$temporary_model = [];
|
||
foreach ($set_order as $key => $value) {
|
||
$temporary_model = [];
|
||
|
||
if($value == 'body_type' || $value == 'body_level'){
|
||
$temporary_model = $this->detailed_model_1;
|
||
$temporary_model['name'] = $this->merged_data[$value]['name'];
|
||
$temporary_model['value'] = '';
|
||
$temporary_model['unit'] = '';
|
||
$temporary_model['desc'] = $this->merged_data[$value]['description'];
|
||
$temporary_model['standard'] = $body_last_data[0][$value];
|
||
$temporary_model['key_name'] = $value;
|
||
$result_return[] = $temporary_model;
|
||
}else if($value == 'weight' || $value == 'height' || $value == 'bmi'){
|
||
$temporary_data_array = explode(',',$body_last_data[0][$value]);
|
||
$temporary_model = $this->detailed_model_1;
|
||
$temporary_model['name'] = $this->merged_data[$value]['name'];
|
||
$temporary_model['value'] = $temporary_data_array[0];
|
||
$temporary_model['unit'] = $this->merged_data[$value]['unit'];
|
||
$temporary_model['desc'] = $this->merged_data[$value]['description'];
|
||
$temporary_model['standard'] = $temporary_data_array[1];
|
||
$temporary_model['standard_color'] = $temporary_data_array[1] == '无'?'':$this->merged_data[$value]['list'][$temporary_data_array[1]];
|
||
$temporary_model['list'] = $this->process_hwb_standard_action($body_last_data[0]['birthday'],$value,$body_last_data[0]['age'],$body_last_data[0]['gender']);
|
||
$temporary_model['key_name'] = $value;
|
||
$temporary_model['offset'] = $this->process_offset_action($temporary_data_array[0],$temporary_model['list']);
|
||
$result_return[] = $temporary_model;
|
||
}else if($value == 'score' || $value == 'body_age'){
|
||
$temporary_model = $this->detailed_model_1;
|
||
$temporary_model['name'] = $this->merged_data[$value]['name'];
|
||
$temporary_model['value'] = $body_last_data[0][$value];
|
||
$temporary_model['unit'] = $this->merged_data[$value]['unit'];
|
||
$temporary_model['desc'] = $this->merged_data[$value]['description'];
|
||
$temporary_model['key_name'] = $value;
|
||
$temporary_model['list'] = $this->process_other_standard_action($body_last_data[0],$value);
|
||
$temporary_model['offset'] = $this->process_offset_action($temporary_model['value'],$temporary_model['list']);
|
||
$temporary_model['standard'] = $this->process_special_offset_action($temporary_model['value'],$temporary_model['list'])['standard'];
|
||
$temporary_model['standard_color'] = $this->process_special_offset_action($temporary_model['value'],$temporary_model['list'])['standard_color'];
|
||
$result_return[] = $temporary_model;
|
||
}else{
|
||
if($body_last_data[0]['record_type'] == 'by_device_adc'){
|
||
$temporary_data_array = explode(',',$body_last_data[0][$value]);
|
||
$temporary_model = $this->detailed_model_1;
|
||
$temporary_model['name'] = $this->merged_data[$value]['name'];
|
||
$temporary_model['value'] = $temporary_data_array[0];
|
||
$temporary_model['unit'] = $this->merged_data[$value]['unit'];
|
||
$temporary_model['desc'] = $this->merged_data[$value]['description'];
|
||
|
||
$temporary_model['standard'] = array_key_exists(1,$temporary_data_array)?$temporary_data_array[1]:'';
|
||
// dump($temporary_model['standard']);
|
||
if($temporary_model['standard'] == ''){
|
||
$temporary_model['standard_color'] = "#000000";
|
||
}else if($temporary_model['standard'] == '异常'){
|
||
$temporary_model['standard_color'] = "#FD5759";
|
||
}else{
|
||
$temporary_model['standard_color'] = $this->merged_data[$value]['list'][$temporary_data_array[1]];
|
||
}
|
||
$temporary_model['list'] = $temporary_model['standard'] == ''?[]:$this->process_other_standard_action($body_last_data[0],$value);
|
||
// dump($value);
|
||
// dump($temporary_model['list']);
|
||
$temporary_model['key_name'] = $value;
|
||
$temporary_model['offset'] = $temporary_model['standard'] == ''?0:$this->process_offset_action($temporary_data_array[0],$temporary_model['list']);
|
||
if($temporary_model['standard'] == '异常'){
|
||
$temporary_model = $this->handling_exceptions($temporary_model);
|
||
}
|
||
$result_return[] = $temporary_model;
|
||
}else{
|
||
continue;
|
||
}
|
||
}
|
||
}
|
||
|
||
return $this->msg($result_return);
|
||
|
||
}
|
||
// 用户身体数据卡片记录
|
||
public function set_user_body_data($data,$type){
|
||
// 加 bcadd(,,20)
|
||
// 减 bcsub(,,20)
|
||
// 乘 bcmul(,,20)
|
||
// 除 bcdiv(,,20)
|
||
|
||
// 判断头围数据是否存在是否合理
|
||
if(array_key_exists('head_data', $data)){
|
||
if(!$this->verify_data_is_ok($data['head_data'],'num')){
|
||
return $this->msg(10005);
|
||
}
|
||
$data['head_circumference'] = $data['head_data'];
|
||
}else{
|
||
$data['head_circumference'] = 0;
|
||
}
|
||
// 查询用户信息
|
||
$user_data = Db::table($this->body_db_name['juese'])->where(['id'=>$data['aud_id']])->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']]);
|
||
// $target_current = $this->base_target_initial_cumulative_weight([
|
||
// 'weight'=>$data['weight'],
|
||
// 'target_weight'=>$user_data['target_weight'],
|
||
// 'initial_weight'=>$data['weight'],
|
||
// 'initial_date'=>$data['time'],
|
||
// ]);
|
||
}else{
|
||
// $target_current = $this->base_target_initial_cumulative_weight([
|
||
// 'weight'=>$data['weight'],
|
||
// 'target_weight'=>$user_data['target_weight'],
|
||
// 'initial_weight'=>$user_data['initial_weight'],
|
||
// 'initial_date'=>$user_data['initial_date'],
|
||
// ]);
|
||
}
|
||
|
||
// 设置身高、体重、年龄、性别、阶段称谓、头围、生日、阻抗
|
||
$result_data['height'] = $data['height'];
|
||
$result_data['weight'] = $data['weight'];
|
||
$result_data['age'] = $this->calculate_age($user_data['birthday']);
|
||
$result_data['gender'] = $user_data['gender'];
|
||
$result_data['head_circumference'] = $data['head_circumference'];
|
||
$result_data['birthday'] = $user_data['birthday'];
|
||
|
||
// 如果原始数据存在阻抗
|
||
if(array_key_exists('adc', $data)){
|
||
if($data['adc'] > 0){
|
||
// 如果阻抗大于0,那就使用传过来的阻抗
|
||
$result_data['adc'] = $data['adc'];
|
||
$type = "by_device_adc";
|
||
}else{
|
||
$result_data['adc'] = 550;
|
||
$type = "by_device";
|
||
}
|
||
}
|
||
$calculate_body_formula = new Calculatebody();
|
||
|
||
// 计算身体数据
|
||
$get_body_value = $calculate_body_formula->calculate_body_data_result($result_data);
|
||
|
||
if($get_body_value === false){
|
||
return $this->msg(10002);
|
||
}
|
||
|
||
// 如果年纪小于三岁,处理头围数据star
|
||
$standardlist = [];
|
||
if($result_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']);
|
||
}
|
||
}else{
|
||
if(array_key_exists('standardlist',$get_body_value)){
|
||
unset($get_body_value['standardlist']);
|
||
}
|
||
}
|
||
// 如果年纪小于三岁,处理头围数据end
|
||
$get_body_value['gender'] = $user_data['gender'];
|
||
$get_body_value['birthday'] = $user_data['birthday'];
|
||
// 添加身高、体重、bmi、头围(如果有)的标尺标准
|
||
$get_body_value = $this->hwb_standard($get_body_value);
|
||
|
||
|
||
$enumeration_data = [
|
||
'fat_r'=>'脂肪率',
|
||
'muscle'=>'肌肉率',
|
||
'kcal'=>'基础代谢',
|
||
'visceral'=>'内脏指数',
|
||
'sfr'=>'皮下脂肪',
|
||
'water'=>'水分',
|
||
'bone'=>'骨重',
|
||
'protein'=>'蛋白率',
|
||
'bodyage'=>'身体年龄'
|
||
];
|
||
|
||
|
||
// 根据秤传过来的数据,去处理要存的结果
|
||
if(array_key_exists('info', $data)){
|
||
|
||
|
||
foreach ($data['info'] as $key => $value) {
|
||
if($key == 'bmi'){
|
||
if($value > 0){
|
||
$get_body_value['BMI'] = $value;
|
||
$get_body_value['BMI2'] = explode(',',$get_body_value['BMI2']);
|
||
$get_body_value['BMI2'][0] = $value;
|
||
$get_body_value['BMI2'] = implode(',',$get_body_value['BMI2']);
|
||
}
|
||
}else if($key == 'bodyage'){
|
||
$get_body_value[$enumeration_data[$key]] = $value;
|
||
}else if($key == 'fatlevlval'){
|
||
continue;
|
||
}else{
|
||
if($value > 0){
|
||
$get_body_value[$enumeration_data[$key]][0] = $value;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
$set_data = [
|
||
'acd_id'=>2,
|
||
'aud_id'=>$data['aud_id'],
|
||
'record_time'=>array_key_exists('time', $data)?$data['time']:date('Y-m-d H:i:s'),
|
||
'create_time'=>date('Y-m-d H:i:s'),
|
||
'last_update_time'=>date('Y-m-d H:i:s'),
|
||
'age'=>$get_body_value['age'],
|
||
'height'=>$get_body_value['身高2'],
|
||
'height_val'=>$get_body_value['身高'],
|
||
'weight'=>$get_body_value['体重2'],
|
||
'weight_val'=>$get_body_value['体重'],
|
||
'bmi'=>$get_body_value['BMI2'],
|
||
'bmi_val'=>$get_body_value['BMI'],
|
||
'score'=>$get_body_value['身体得分'],
|
||
'fat_r'=> implode(',',$get_body_value['脂肪率']),
|
||
'fat_w'=>implode(',',$get_body_value['脂肪量']),
|
||
'muscle'=>implode(',',$get_body_value['肌肉率']),
|
||
'muscleval'=>implode(',',$get_body_value['肌肉量']),
|
||
'water'=>implode(',',$get_body_value['水分']),
|
||
'proteinval'=>implode(',',$get_body_value['蛋白量']),
|
||
'bone'=>implode(',',$get_body_value['骨重']),
|
||
'protein'=>implode(',',$get_body_value['蛋白率']),
|
||
'kcal'=>implode(',',$get_body_value['基础代谢']),
|
||
'visceral'=>implode(',',$get_body_value['内脏指数']),
|
||
'sfr'=>implode(',',$get_body_value['皮下脂肪']),
|
||
'body_level'=>$get_body_value['肥胖等级'],
|
||
'body_type'=>$get_body_value['身体类型'],
|
||
'body_age'=>$get_body_value['身体年龄'],
|
||
'record_type' => $type,
|
||
'head_circumference' => $result_data['age'] < 3?json_encode($standardlist):"",
|
||
];
|
||
if(strlen($set_data['record_time']) <= 12){
|
||
// 时间日期转换,把'Y-m-d'转换成'Y-m-d H:i:s'格式
|
||
$set_data['record_time'] = $this->addCurrentTimeToDateString($set_data['record_time']);
|
||
}
|
||
|
||
// 启动事务
|
||
Db::startTrans();
|
||
try{
|
||
$set_user_data = Db::table($this->body_db_name['body_data'])->insert($set_data);
|
||
$update_arr = [
|
||
'height'=>$get_body_value['身高'],
|
||
'weight'=>$get_body_value['体重']
|
||
];
|
||
if($data['head_circumference']>0){
|
||
$update_arr['head_data'] = $data['head_circumference'];
|
||
}
|
||
$update_user_data = Db::table($this->body_db_name['juese'])->where(['id'=>$data['aud_id']])->update($update_arr);
|
||
// 提交事务
|
||
Db::commit();
|
||
return $this->msg([]);
|
||
// return $this->msg([
|
||
// 'acd_id'=>2,
|
||
// 'height'=>$get_body_value['身高'].',CM',
|
||
// 'weight'=>$get_body_value['体重'].',公斤',
|
||
// 'bmi'=>$get_body_value['BMI'],
|
||
// 'target_current'=>$target_current,
|
||
// ]);
|
||
} catch (\Exception $e) {
|
||
// 回滚事务
|
||
Db::rollback();
|
||
return $this->msg(10002);
|
||
}
|
||
}
|
||
// 用户身体数据卡片记录
|
||
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_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 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;
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
} |