2024-03-15 18:15:17 +08:00
< ? php
namespace app\app\controller ;
use think\Db ;
2024-04-20 17:38:31 +08:00
use app\app\controller\Calculatebody ;
2024-05-24 10:10:28 +08:00
use app\app\controller\Cardparts ;
2024-03-15 18:15:17 +08:00
2024-04-22 17:29:33 +08:00
class Card extends Base {
2024-03-15 18:15:17 +08:00
2024-04-20 17:38:31 +08:00
protected $color = [ '#FF5656' , '#FFAB00' , '#5AD06D' , '#6492F6' , '#3967D6' ];
2024-11-23 16:46:38 +08:00
protected $card_use_db_name = [
'1' => 'app_card_body_data' ,
'2' => 'app_user_data' ,
'3' => 'pc_bmistand' ,
'4' => 'pc_heightstand' ,
'5' => 'pc_weightstand' ,
'6' => 'pc_childrenprescription' ,
'7' => 'pc_childprescriptionbyage' ,
'8' => 'pc_heightstand' ,
'9' => 'pc_weightstand' ,
'10' => 'pc_bmistand' ,
];
2024-04-20 17:38:31 +08:00
protected $age_limit = 16 ;
2024-05-23 18:49:55 +08:00
protected $unit_symbol = [ 'score' => '分' , 'height' => 'CM' , 'weight' => '公斤' , 'bmi' => '' , 'fat_r' => '%' , 'fat_w' => 'kg' , 'muscle' => '%' , 'muscleval' => 'kg' , 'water' => 'kg' , 'bone' => 'kg' , 'protein' => '%' , 'proteinval' => 'kg' , 'kcal' => 'kcal' , 'visceral' => '' , 'sfr' => '%' ,];
2024-04-20 17:38:31 +08:00
protected $unit_name = [ 'score' => '身体得分' , 'height' => '身高' , 'weight' => '体重' , 'bmi' => 'BMI' , 'fat_r' => '脂肪率' , 'fat_w' => '脂肪量' , 'muscle' => '肌肉率' , 'muscleval' => '肌肉量' , 'water' => '水分' , 'bone' => '骨重' , 'protein' => '蛋白率' , 'proteinval' => '蛋白量' , 'kcal' => '基础代谢' , 'visceral' => '内脏指数' , 'sfr' => '皮下脂肪' , 'body_level' => '肥胖等级' , 'body_type' => '身体类型' ];
protected $bhw_list = [
'bmi' => [
2024-08-23 17:54:14 +08:00
[ 'min_val' => '0' , 'max_val' => '' , 'text' => '消瘦' , 'color' => '#FDDA6B' ],
[ 'min_val' => '' , 'max_val' => '' , 'text' => '正常' , 'color' => '#59D06A' ],
[ 'min_val' => '' , 'max_val' => '' , 'text' => '偏重' , 'color' => '#FDAA02' ],
[ 'min_val' => '' , 'max_val' => '50' , 'text' => '肥胖' , 'color' => '#FB5755' ],
2024-04-20 17:38:31 +08:00
],
'height' => [
2024-08-23 17:54:14 +08:00
[ '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' ],
2024-04-20 17:38:31 +08:00
],
'weight' => [
2024-08-23 17:54:14 +08:00
[ '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' ],
2024-04-20 17:38:31 +08:00
]
];
protected $standard_color = [
2024-08-23 17:54:14 +08:00
'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' ],
2024-11-23 16:46:38 +08:00
'kcal' => [ '偏低' => '#FF5656' , '优' => '#3A68D4' ],
2024-08-23 17:54:14 +08:00
'visceral' => [ '标准' => '#55CF6C' , '警惕' => '#FEAC00' , '危险' => '#FB5A52' ],
'sfr' => [ '不足' => '#FCDB68' , '标准' => '#59D16F' , '偏高' => '#FEAB03' ],
2024-04-20 17:38:31 +08:00
];
protected $result_end_data_mould = [
'name' => '' ,
'value' => '' ,
'unit' => '' ,
'standard' => '' ,
'color' => '' ,
'list' => []
];
2024-08-23 17:54:14 +08:00
// 曲线参数
2024-07-26 18:34:47 +08:00
protected $card_body_curve_arr = [ 'height' , 'weight' , 'bmi' , 'fat_r' ];
protected $card_body_curve_arr2 = [ '身高' , '体重' , 'BMI' , '脂肪率' ,];
protected $card_body_curve_arr3 = [ '#f7b03e' , '#fb7b92' , '#ff9f40' , '#3fcba7' ,];
2024-05-23 18:49:55 +08:00
2024-07-26 18:34:47 +08:00
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 ]],
];
2024-11-23 16:46:38 +08:00
protected $unit_data = [
'height' => [ 'cm' , 'inch' , 'ft-in' ],
'weight' => [ 'kg' , '斤' , 'st:lb' , 'lb' ],
];
2024-03-29 18:34:01 +08:00
################################################################接口################################################################
################################################################接口################################################################
################################################################接口################################################################
2024-03-15 18:15:17 +08:00
2024-04-20 17:38:31 +08:00
// 详细卡片信息
// $data = ['id'=>'2']
2024-12-18 09:19:51 +08:00
public function card_data_detailed ( $data = [ 'aud_id' => '38' ]){
2024-11-23 16:46:38 +08:00
try {
// 你的业务逻辑
if ( count ( input ( 'post.' )) > 0 ){
$data = input ( 'post.' );
}
if ( ! array_key_exists ( 'aud_id' , $data )){
return $this -> msg ( 10001 );
}
if ( ! $this -> verify_data_is_ok ( $data [ 'aud_id' ], 'intnum' )){
return $this -> msg ( 10005 );
}
$return_data = $this -> get_user_body_data ( $data );
// 成功
$this -> record_api_log ( $data , null , $return_data );
return $return_data ;
} catch ( \Exception $e ) {
// 捕获异常
$logContent [ " flie " ] = $e -> getFile ();
$logContent [ " line " ] = $e -> getLine ();
$logContent [ 'all_content' ] = " 异常信息: \n " ;
$logContent [ 'all_content' ] .= " 消息: " . $e -> getMessage () . " \n " ;
$logContent [ 'all_content' ] .= " 代码: " . $e -> getCode () . " \n " ;
$logContent [ 'all_content' ] .= " 文件: " . $e -> getFile () . " \n " ;
$logContent [ 'all_content' ] .= " 行号: " . $e -> getLine () . " \n " ;
$logContent [ 'all_content' ] .= " 跟踪信息: \n " . $e -> getTraceAsString () . " \n " ;
$this -> record_api_log ( $data , $logContent , null );
return $this -> msg ( 99999 );
2024-05-20 18:49:27 +08:00
}
2024-05-24 18:45:12 +08:00
2024-04-20 17:38:31 +08:00
}
2024-05-21 18:43:56 +08:00
// 曲线页面-曲线接口
2024-12-18 09:19:51 +08:00
public function card_curve_chart ( $data = [ 'aud_id' => '11' , 's_time' => '2024-04-01' , 'e_time' => '2024-12-25' , 'token' => 'caadd1be045a65f30b92aa805f1de54a' ]){
2024-11-23 16:46:38 +08:00
try {
// 你的业务逻辑
if ( count ( input ( 'post.' )) > 0 ){
$data = input ( 'post.' );
}
if ( ! array_key_exists ( 'aud_id' , $data ) || ! array_key_exists ( 's_time' , $data ) || ! array_key_exists ( 'e_time' , $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 );
}
if ( ! $this -> verify_data_is_ok ( $data [ 's_time' ], 'datetime' )){
return $this -> msg ( 10005 );
}
if ( ! $this -> verify_data_is_ok ( $data [ 'e_time' ], 'datetime' )){
return $this -> msg ( 10005 );
}
$return_data = $this -> curve_chart_action ( $data );
// 成功
$this -> record_api_log ( $data , null , $return_data );
return $return_data ;
} catch ( \Exception $e ) {
// 捕获异常
$logContent [ " flie " ] = $e -> getFile ();
$logContent [ " line " ] = $e -> getLine ();
$logContent [ 'all_content' ] = " 异常信息: \n " ;
$logContent [ 'all_content' ] .= " 消息: " . $e -> getMessage () . " \n " ;
$logContent [ 'all_content' ] .= " 代码: " . $e -> getCode () . " \n " ;
$logContent [ 'all_content' ] .= " 文件: " . $e -> getFile () . " \n " ;
$logContent [ 'all_content' ] .= " 行号: " . $e -> getLine () . " \n " ;
$logContent [ 'all_content' ] .= " 跟踪信息: \n " . $e -> getTraceAsString () . " \n " ;
$this -> record_api_log ( $data , $logContent , null );
return $this -> msg ( 99999 );
2024-05-21 18:43:56 +08:00
}
2024-11-23 16:46:38 +08:00
2024-05-21 18:43:56 +08:00
}
2024-05-22 18:36:27 +08:00
2024-04-20 17:38:31 +08:00
// 手动记录
// $data = ['id'=>'2','time'=>'1991-04-20 10:10:10','height'=>'15.1','weight'=>'75.1']
2024-11-23 16:46:38 +08:00
// public function card_manual_recording($data = ['aud_id'=>'37','time'=>'2024-10-12','height'=>'144.7,cm','weight'=>'36.8,kg','token'=>'caadd1be045a65f30b92aa805f1de54a']){
2024-12-18 09:19:51 +08:00
public function card_manual_recording ( $data = [ 'aud_id' => '38' , 'time' => '2024-10-12' , 'height' => '88.5' , 'weight' => '10' , 'token' => 'caadd1be045a65f30b92aa805f1de54a' ]){
2024-11-23 16:46:38 +08:00
try {
// 你的业务逻辑
if ( count ( input ( 'post.' )) > 0 ){
$data = input ( 'post.' );
} else {
$data [ 'time' ] = date ( 'Y-m-d H:i:s' );
}
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 );
}
if ( ! $this -> verify_data_is_ok ( $data [ 'time' ], 'datetime' )){
return $this -> msg ( 10005 );
}
2024-12-18 09:19:51 +08:00
$temporary_data = $this -> convertHeightAndWeight ( $data [ 'height' ], $data [ 'weight' ]);
if ( $temporary_data [ 'height_in_cm' ] == false ){
return $this -> msg ( 10005 , '身高单位错误' );
2024-11-23 16:46:38 +08:00
}
2024-12-18 09:19:51 +08:00
if ( $temporary_data [ 'weight_in_kg' ] == false ){
return $this -> msg ( 10005 , '体重单位错误' );
2024-11-23 16:46:38 +08:00
}
2024-12-18 09:19:51 +08:00
$data [ 'height' ] = $temporary_data [ 'height_in_cm' ];
$data [ 'weight' ] = $temporary_data [ 'weight_in_kg' ];
// if(!$this->verify_data_is_ok($data['height'],'num')){
// return $this->msg(10005);
// }
// if(!$this->verify_data_is_ok($data['weight'],'num')){
// return $this->msg(10005);
// }
2024-11-23 16:46:38 +08:00
// $data['height'] = explode(',',$data['height']);
// if(count($data['height']) < 2){
// return $this->msg(10005);
// }
// if(!$this->verify_data_is_ok($data['height'][0],'num')){
// return $this->msg(10005);
// }
// if(!in_array($data['height'][1],$this->unit_data['height'])){
// return $this->msg(10005);
// }
// $data['weight'] = explode(',',$data['weight']);
// if(count($data['height']) < 2){
// return $this->msg(10005);
// }
// if(!$this->verify_data_is_ok($data['weight'][0],'num')){
// return $this->msg(10005);
// }
// if(!in_array($data['weight'][1],$this->unit_data['weight'])){
// return $this->msg(10005);
// }
2024-12-18 09:19:51 +08:00
// $data['head_data'] = '48';
2024-11-23 16:46:38 +08:00
$data [ 'acd_id' ] = '2' ;
$return_data = $this -> set_user_body_data ( $data , 'by_hand_means' );
// 成功
$this -> record_api_log ( $data , null , $return_data );
return $return_data ;
} catch ( \Exception $e ) {
// 捕获异常
$logContent [ " flie " ] = $e -> getFile ();
$logContent [ " line " ] = $e -> getLine ();
$logContent [ 'all_content' ] = " 异常信息: \n " ;
$logContent [ 'all_content' ] .= " 消息: " . $e -> getMessage () . " \n " ;
$logContent [ 'all_content' ] .= " 代码: " . $e -> getCode () . " \n " ;
$logContent [ 'all_content' ] .= " 文件: " . $e -> getFile () . " \n " ;
$logContent [ 'all_content' ] .= " 行号: " . $e -> getLine () . " \n " ;
$logContent [ 'all_content' ] .= " 跟踪信息: \n " . $e -> getTraceAsString () . " \n " ;
$this -> record_api_log ( $data , $logContent , null );
return $this -> msg ( 99999 );
2024-04-20 17:38:31 +08:00
}
2024-11-23 16:46:38 +08:00
2024-04-03 18:15:07 +08:00
}
2024-06-17 18:03:41 +08:00
// 设备记录
// $data = ['id'=>'2','time'=>'1991-04-20 10:10:10','height'=>'15.1','weight'=>'75.1']
2024-11-23 16:46:38 +08:00
// public function card_manual_recording_device($data = ['aud_id'=>'37','height'=>'169.60,inch','weight'=>'52.45,lb','adc'=>'520.3','token'=>'591b70e0d80b5fa6d77e6e1384453ab9']){
2024-12-18 09:19:51 +08:00
public function card_manual_recording_device ( $data = [ 'aud_id' => '37' , 'height' => '169.60斤' , 'weight' => '52.45斤' , 'adc' => '520.3' , 'token' => '591b70e0d80b5fa6d77e6e1384453ab9' ]){
2024-11-23 16:46:38 +08:00
try {
// 你的业务逻辑
if ( count ( input ( 'post.' )) > 0 ){
$data = input ( 'post.' );
} else {
$data [ 'time' ] = date ( 'Y-m-d H:i:s' );
}
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 );
}
2024-12-18 09:19:51 +08:00
if ( ! $this -> verify_data_is_ok ( $data [ 'adc' ], 'num' )){
2024-11-23 16:46:38 +08:00
return $this -> msg ( 10005 );
}
2024-12-18 09:19:51 +08:00
$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 , '体重单位错误' );
2024-11-23 16:46:38 +08:00
}
2024-12-18 09:19:51 +08:00
$data [ 'height' ] = $temporary_data [ 'height_in_cm' ];
$data [ 'weight' ] = $temporary_data [ 'weight_in_kg' ];
// if(!$this->verify_data_is_ok($data['height'],'num')){
// return $this->msg(10005);
// }
// if(!$this->verify_data_is_ok($data['weight'],'num')){
// return $this->msg(10005);
// }
2024-11-23 16:46:38 +08:00
// $data['height'] = explode(',',$data['height']);
// if(count($data['height']) < 2){
// return $this->msg(10005);
// }
// if(!$this->verify_data_is_ok($data['height'][0],'num')){
// return $this->msg(10005);
// }
// if(!in_array($data['height'][1],$this->unit_data['height'])){
// return $this->msg(10005);
// }
// $data['weight'] = explode(',',$data['weight']);
// if(count($data['height']) < 2){
// return $this->msg(10005);
// }
// if(!$this->verify_data_is_ok($data['weight'][0],'num')){
// return $this->msg(10005);
// }
// if(!in_array($data['weight'][1],$this->unit_data['weight'])){
// return $this->msg(10005);
// }
2024-12-18 09:19:51 +08:00
2024-06-17 18:03:41 +08:00
$data [ 'time' ] = date ( 'Y-m-d H:i:s' );
2024-11-23 16:46:38 +08:00
$data [ 'acd_id' ] = '2' ;
$return_data = $this -> set_user_body_data ( $data , 'by_device' );
// 成功
$this -> record_api_log ( $data , null , $return_data );
return $return_data ;
} catch ( \Exception $e ) {
// 捕获异常
$logContent [ " flie " ] = $e -> getFile ();
$logContent [ " line " ] = $e -> getLine ();
$logContent [ 'all_content' ] = " 异常信息: \n " ;
$logContent [ 'all_content' ] .= " 消息: " . $e -> getMessage () . " \n " ;
$logContent [ 'all_content' ] .= " 代码: " . $e -> getCode () . " \n " ;
$logContent [ 'all_content' ] .= " 文件: " . $e -> getFile () . " \n " ;
$logContent [ 'all_content' ] .= " 行号: " . $e -> getLine () . " \n " ;
$logContent [ 'all_content' ] .= " 跟踪信息: \n " . $e -> getTraceAsString () . " \n " ;
$this -> record_api_log ( $data , $logContent , null );
return $this -> msg ( 99999 );
2024-06-17 18:03:41 +08:00
}
2024-11-23 16:46:38 +08:00
2024-06-17 18:03:41 +08:00
}
2024-04-03 18:15:07 +08:00
2024-05-22 21:37:39 +08:00
// 修改初始体重/目标体重
2024-11-23 16:46:38 +08:00
public function card_modify_weight ( $data = [ 'aud_id' => '11' , 'weight' => '50' , 'type' => 2 , 'time' => '2024-10-01' , 'token' => '0dafb98a10995c98b5a33b7d59d986ca' ]){
try {
// 你的业务逻辑
if ( count ( input ( 'post.' )) > 0 ){
$data = input ( 'post.' );
}
if ( ! is_array ( $data )){
return $this -> msg ( 10005 );
}
if ( ! array_key_exists ( 'aud_id' , $data ) || ! array_key_exists ( 'weight' , $data ) || ! array_key_exists ( 'type' , $data ) || ! array_key_exists ( 'time' , $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 );
}
if ( ! $this -> verify_data_is_ok ( $data [ 'weight' ], 'num' )){
return $this -> msg ( 10005 );
}
if ( ! $this -> verify_data_is_ok ( $data [ 'type' ], 'intnum' )){
return $this -> msg ( 10005 );
}
if ( $data [ 'type' ] != 1 ){
if ( ! $this -> verify_data_is_ok ( $data [ 'time' ], 'datetime' )){
return $this -> msg ( 10005 );
}
}
$return_data = $this -> modify_weight_action ( $data );
// 成功
$this -> record_api_log ( $data , null , $return_data );
return $return_data ;
} catch ( \Exception $e ) {
// 捕获异常
$logContent [ " flie " ] = $e -> getFile ();
$logContent [ " line " ] = $e -> getLine ();
$logContent [ 'all_content' ] = " 异常信息: \n " ;
$logContent [ 'all_content' ] .= " 消息: " . $e -> getMessage () . " \n " ;
$logContent [ 'all_content' ] .= " 代码: " . $e -> getCode () . " \n " ;
$logContent [ 'all_content' ] .= " 文件: " . $e -> getFile () . " \n " ;
$logContent [ 'all_content' ] .= " 行号: " . $e -> getLine () . " \n " ;
$logContent [ 'all_content' ] .= " 跟踪信息: \n " . $e -> getTraceAsString () . " \n " ;
$this -> record_api_log ( $data , $logContent , null );
return $this -> msg ( 99999 );
2024-05-23 18:49:55 +08:00
}
2024-11-23 16:46:38 +08:00
}
// 身高预测
public function card_height_prediction ( $data = [ 'dadHeight' => '199' , 'momHeight' => '160' , 'birthday' => '2014-07-24' , 'sex' => '1' ,]){
try {
// 你的业务逻辑
if ( count ( input ( 'post.' )) > 0 ){
$data = input ( 'post.' );
}
if ( ! is_array ( $data )){
return $this -> msg ( 10005 );
}
if ( ! array_key_exists ( 'dadHeight' , $data ) || ! array_key_exists ( 'momHeight' , $data ) || ! array_key_exists ( 'birthday' , $data ) || ! array_key_exists ( 'sex' , $data )){
return $this -> msg ( 10001 );
}
unset ( $data [ 'token' ]);
if ( ! $this -> verify_data_is_ok ( $data [ 'birthday' ], 'datetime' )){
return $this -> msg ( 10005 );
}
if ( ! $this -> verify_data_is_ok ( $data [ 'dadHeight' ], 'num' )){
return $this -> msg ( 10005 );
}
if ( ! $this -> verify_data_is_ok ( $data [ 'momHeight' ], 'num' )){
return $this -> msg ( 10005 );
}
if ( ! $this -> verify_data_is_ok ( $data [ 'sex' ], 'intnum' )){
return $this -> msg ( 10005 );
}
// 直接开始业务, 请求外部接口start
$url = 'https://ybapi.pcxbc.com/api/child/predictheight' ;
$temporary_parameter = [
'dadHeight' => $data [ 'dadHeight' ],
'momHeight' => $data [ 'momHeight' ],
'birthday' => $data [ 'birthday' ],
'sex' => $data [ 'sex' ],
];
$request_result = $this -> postRequest ( $url , $temporary_parameter , array ( 'Content-Type:application/json' , 'Origin:http://ybdevice.pcxbc.com' ));
// 直接开始业务, 请求外部接口end
$this -> record_api_log ( $data , null , $request_result );
return json ( $request_result );
} catch ( \Exception $e ) {
// 捕获异常
$logContent [ " flie " ] = $e -> getFile ();
$logContent [ " line " ] = $e -> getLine ();
$logContent [ 'all_content' ] = " 异常信息: \n " ;
$logContent [ 'all_content' ] .= " 消息: " . $e -> getMessage () . " \n " ;
$logContent [ 'all_content' ] .= " 代码: " . $e -> getCode () . " \n " ;
$logContent [ 'all_content' ] .= " 文件: " . $e -> getFile () . " \n " ;
$logContent [ 'all_content' ] .= " 行号: " . $e -> getLine () . " \n " ;
$logContent [ 'all_content' ] .= " 跟踪信息: \n " . $e -> getTraceAsString () . " \n " ;
$this -> record_api_log ( $data , $logContent , null );
return $this -> msg ( 99999 );
2024-05-22 21:37:39 +08:00
}
2024-11-23 16:46:38 +08:00
}
// BMI测评
public function card_bmi_evaluation ( $cbe_data = [ 'height' => '177' , 'weight' => '177' , 'birthday' => '2024-10-03' , 'sex' => '1' ], $type = false ){
try {
// 你的业务逻辑
if ( count ( input ( 'post.' )) > 0 && $type == false ){
$cbe_data = input ( 'post.' );
}
if ( ! is_array ( $cbe_data )){
return $this -> msg ( 10005 );
}
if ( ! array_key_exists ( 'height' , $cbe_data ) || ! array_key_exists ( 'weight' , $cbe_data ) || ! array_key_exists ( 'birthday' , $cbe_data ) || ! array_key_exists ( 'sex' , $cbe_data )){
return $this -> msg ( 10001 );
}
unset ( $cbe_data [ 'token' ]);
if ( ! $this -> verify_data_is_ok ( $cbe_data [ 'birthday' ], 'datetime' )){
return $this -> msg ( 10005 );
}
if ( ! $this -> verify_data_is_ok ( $cbe_data [ 'height' ], 'num' )){
return $this -> msg ( 10005 );
}
if ( ! $this -> verify_data_is_ok ( $cbe_data [ 'weight' ], 'num' )){
return $this -> msg ( 10005 );
}
if ( ! $this -> verify_data_is_ok ( $cbe_data [ 'sex' ], 'intnum' )){
return $this -> msg ( 10005 );
}
// 直接开始业务, 请求外部接口start
$url = 'http://ybdevice.pcxbc.com/api/result/calcbmi' ;
$temporary_parameter = [
'height' => $cbe_data [ 'height' ],
'weight' => $cbe_data [ 'weight' ],
'birthday' => $cbe_data [ 'birthday' ],
'sex' => $cbe_data [ 'sex' ],
];
$request_result = $this -> postRequest ( $url , $temporary_parameter , array ( 'Content-Type:application/json' , 'Origin:http://ybdevice.pcxbc.com' ));
// 直接开始业务, 请求外部接口end
// 处理进度点
$request_result = $this -> bmi_evaluation_action ( $request_result );
$this -> record_api_log ( $cbe_data , null , $request_result );
return $request_result ;
} catch ( \Exception $e ) {
// 捕获异常
$logContent [ " flie " ] = $e -> getFile ();
$logContent [ " line " ] = $e -> getLine ();
$logContent [ 'all_content' ] = " 异常信息: \n " ;
$logContent [ 'all_content' ] .= " 消息: " . $e -> getMessage () . " \n " ;
$logContent [ 'all_content' ] .= " 代码: " . $e -> getCode () . " \n " ;
$logContent [ 'all_content' ] .= " 文件: " . $e -> getFile () . " \n " ;
$logContent [ 'all_content' ] .= " 行号: " . $e -> getLine () . " \n " ;
$logContent [ 'all_content' ] .= " 跟踪信息: \n " . $e -> getTraceAsString () . " \n " ;
$this -> record_api_log ( $cbe_data , $logContent , null );
return $this -> msg ( 99999 );
2024-05-22 21:37:39 +08:00
}
}
2024-05-24 18:45:12 +08:00
2024-05-22 18:36:27 +08:00
################################################################业务接口################################################################
################################################################业务接口################################################################
2024-04-20 17:38:31 +08:00
2024-05-22 18:36:27 +08:00
################################################card_data_detailed
2024-04-20 17:38:31 +08:00
// 用户身体数据卡片获取
2024-05-22 18:36:27 +08:00
public function get_user_body_data ( $data ){
2024-05-23 18:49:55 +08:00
$result = Db :: query ( "
select
Top 1
2024-05-24 18:45:12 +08:00
acbd . id ,
acbd . acd_id ,
2024-11-23 16:46:38 +08:00
acbd . record_type ,
2024-05-24 18:45:12 +08:00
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 ,
2024-05-25 18:39:08 +08:00
acbd . height ,
2024-11-23 16:46:38 +08:00
acbd . height_val ,
2024-05-25 18:39:08 +08:00
acbd . weight ,
2024-11-23 16:46:38 +08:00
acbd . weight_val ,
2024-05-25 18:39:08 +08:00
acbd . bmi ,
2024-05-24 18:45:12 +08:00
acbd . body_age ,
2024-12-18 09:19:51 +08:00
acbd . head_circumference ,
2024-05-24 18:45:12 +08:00
aud . birthday , aud . gender , aud . target_weight , aud . initial_weight , aud . initial_date
2024-11-23 16:46:38 +08:00
from " . $this->card_use_db_name ['1']. " as acbd
left join " . $this->card_use_db_name ['2']. " as aud on acbd . aud_id = aud . id
where acbd . is_del = 0 and acbd . aud_id = '".$data[' aud_id ']."'
2024-05-23 18:49:55 +08:00
order by acbd . record_time desc
" );
2024-11-23 16:46:38 +08:00
if ( count ( $result ) <= 0 ){
$result_return = [
" score_name " => " " ,
" score_value " => " " ,
" score_unit " => " " ,
" body_type_name " => " " ,
" body_type_value " => " " ,
" body_type_unit " => " " ,
" record_time " => " " ,
'top_list' => [
[
" name " => " 体重 " ,
" value " => " 0 " ,
" unit " => " 公斤 " ,
" standard " => " " ,
" color " => " " ,
" list " => [],
" key_name " => " weight " ,
" desc " => " 反映和衡量一个人健康状况的重要标志之一 " ,
" offset " => " 0 "
],
[
" name " => " 身高 " ,
" value " => " 0 " ,
" unit " => " CM " ,
" standard " => " " ,
" color " => " " ,
" list " => [],
" key_name " => " height " ,
" desc " => " 人体纵向部分的长度,源于人体的纵向生长,受遗传因素的影响较大 " ,
" offset " => " 0 "
],
[
" name " => " BMI " ,
" value " => " 0 " ,
" unit " => " 公斤 " ,
" standard " => " " ,
" color " => " " ,
" list " => [],
" key_name " => " bmi " ,
" desc " => " BMI是身体质量指数,是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。 " ,
" offset " => " 0 "
],
],
'bottom_list' => [],
'cplist' => [
'nutritionlist' => [],
'sportlist' => [],
'sleeplist' => [],
'moodlist' => [],
],
'literature' => [],
'target_current' => [
'target_weight' => '0' ,
'initial_weight' => '0' ,
'cumulative_weight' => '0' ,
'cumulative_day' => '0'
],
];
return $this -> msg ( $result_return );
2024-04-20 17:38:31 +08:00
} else {
2024-12-18 09:19:51 +08:00
// 存储头围数据
$head_circumference = $result [ 0 ][ 'head_circumference' ] ? json_decode ( $result [ 0 ][ 'head_circumference' ], true ) : false ;
unset ( $result [ 0 ][ 'head_circumference' ]);
2024-11-23 16:46:38 +08:00
2024-12-18 09:19:51 +08:00
// 处理返回数据
2024-05-23 18:49:55 +08:00
$result_end = $this -> processing_return_data_new ( $result [ 0 ]);
2024-12-18 09:19:51 +08:00
2024-05-24 10:10:28 +08:00
$cardparts = new Cardparts ;
$result_end [ 'gender' ] = $result [ 0 ][ 'gender' ];
2024-05-25 18:39:08 +08:00
$result_end [ 'record_time' ] = $result [ 0 ][ 'record_time' ];
$result_end [ 'score' ] = $result_end [ 'score' ];
$result_end [ 'body_type' ] = $result_end [ 'body_type' ];
2024-05-24 10:10:28 +08:00
$result_end = $cardparts -> conversion_interval ( $result_end );
2024-07-26 18:34:47 +08:00
$result_end [ 'cplist' ] = $this -> grow_up_recommendation ([
'birthday' => $result [ 0 ][ 'birthday' ],
'body' => [
'height' => $result [ 0 ][ 'height' ],
'weight' => $result [ 0 ][ 'weight' ],
'bmi' => $result [ 0 ][ 'bmi' ]
],
]);
2024-11-23 16:46:38 +08:00
// 只有含有阻抗的记录才有数据参考
if ( $result [ 0 ][ 'record_type' ] == 'by_device_adc' ){
if ( count ( $result_end [ 'cplist' ][ 'nutritionlist' ]) <= 0 ){
$result_end [ 'literature' ] = [];
} else {
$result_end [ 'literature' ] = [
'《中华人民共和国卫生行业标准WS 423-2013》' ,
'《中华人民共和国卫生行业标准WS/T 612-2018》' ,
'《中华人民共和国卫生行业标准WS/T1586-2018》' ,
'《WHO 5~19岁身高/体重判定标准》' ,
];
}
2024-09-06 18:21:33 +08:00
} else {
2024-11-23 16:46:38 +08:00
$result_end [ 'literature' ] = [];
}
// 加入曲线板块底部的减肥计划数据start
$result_end [ 'target_current' ] = $this -> base_target_initial_cumulative_weight ([
'weight' => $result [ 0 ][ 'weight' ] > 0 ? $result [ 0 ][ 'weight' ] : 0 ,
'target_weight' => $result [ 0 ][ 'target_weight' ] > 0 ? $result [ 0 ][ 'target_weight' ] : 0 ,
'initial_weight' => $result [ 0 ][ 'initial_weight' ] > 0 ? $result [ 0 ][ 'initial_weight' ] : 0 ,
'initial_date' => $result [ 0 ][ 'initial_date' ] != null ? $result [ 0 ][ 'initial_date' ] : 0 ,
]);
if ( count ( $result_end [ 'top_list' ][ 2 ][ 'list' ]) <= 0 ){
// 这是16岁以上人群
$data = [
'height' => $result [ 0 ][ 'height_val' ],
'weight' => $result [ 0 ][ 'weight_val' ],
'birthday' => $result [ 0 ][ 'birthday' ],
'sex' => $result [ 0 ][ 'gender' ]
2024-09-06 18:21:33 +08:00
];
2024-11-23 16:46:38 +08:00
$temporary_arr_bmi_list = $this -> card_bmi_evaluation ( $data , true );
$temporary_arr_bmi_list = $temporary_arr_bmi_list -> getData ();
if ( $temporary_arr_bmi_list [ 'code' ] == 0 ){
$result_end [ 'top_list' ][ 2 ][ 'standard' ] = $temporary_arr_bmi_list [ 'data' ][ 'bmilevel' ];
$result_end [ 'top_list' ][ 2 ][ 'color' ] = $temporary_arr_bmi_list [ 'data' ][ 'bmilevelcolor' ];
$result_end [ 'top_list' ][ 2 ][ 'list' ] = $temporary_arr_bmi_list [ 'data' ][ 'bmilevellist' ];
$result_end [ 'top_list' ][ 2 ][ 'offset' ] = $temporary_arr_bmi_list [ 'data' ][ 'offset' ];
}
2024-09-06 18:21:33 +08:00
}
2024-11-23 16:46:38 +08:00
// 加入曲线板块底部的减肥计划数据end
2024-12-18 09:19:51 +08:00
// 添加头围数据( 如果有的话) start
if ( $head_circumference !== false && $this -> calculate_age ( $result [ 0 ][ 'birthday' ]) < 3 ){
if ( $head_circumference [ 'level' ] == '异常' || $head_circumference [ 'value' ] == 0 ){
$offset = 0 ;
} else {
$offset = $cardparts -> calculate_landing_point ( $head_circumference [ 'list2' ], $head_circumference [ 'value' ], $head_circumference [ 'level' ]);
}
array_push ( $result_end [ 'top_list' ],[
'name' => '头围' ,
'value' => $head_circumference [ 'value' ],
'unit' => 'CM' ,
'standard' => $head_circumference [ 'level' ],
'color' => '' ,
'list' => $head_circumference [ 'list2' ],
'key_name' => 'head_circumference' ,
'desc' => '头围是指绕头部一周的最大长度,头围的大小与闹的发育密切相关' ,
'offset' => $offset
]);
}
// 添加头围数据( 如果有的话) end
2024-05-21 18:43:56 +08:00
return $this -> msg ( $result_end );
2024-04-20 17:38:31 +08:00
}
}
// 返回数据处理
2024-05-21 18:43:56 +08:00
public function processing_return_data_new ( $data ){
2024-04-20 17:38:31 +08:00
$result_end_data = [];
2024-08-23 17:54:14 +08:00
$month_num = $this -> calculateAgeInMonthsWithPrecision ( $data [ 'birthday' ]);
2024-04-20 17:38:31 +08:00
$gender_val = $data [ 'gender' ];
foreach ( $data as $key => $value ) {
if ( $key != 'aud_id' && $key != 'id' && $key != 'create_time' && $key != 'last_update_time' && $key != 'acd_id' && $key != 'ROW_NUMBER' && $key != 'record_time' && $key != 'gender' && $key != 'birthday' ){
2024-05-20 18:49:27 +08:00
// 设置单个数据格式
$result_end_data [ $key ] = $this -> result_end_data_mould ;
2024-11-23 16:46:38 +08:00
// 该项名
2024-05-20 18:49:27 +08:00
if ( array_key_exists ( $key , $this -> unit_name )){
$result_end_data [ $key ][ 'name' ] = $this -> unit_name [ $key ];
}
2024-11-23 16:46:38 +08:00
// 该项单位
2024-05-20 18:49:27 +08:00
if ( array_key_exists ( $key , $this -> unit_symbol )){
$result_end_data [ $key ][ 'unit' ] = $this -> unit_symbol [ $key ];
}
2024-11-23 16:46:38 +08:00
2024-05-20 18:49:27 +08:00
$result_end_data [ $key ][ 'value' ] = explode ( ',' , $value )[ 0 ];
2024-11-23 16:46:38 +08:00
2024-05-20 18:49:27 +08:00
if ( strpos ( $value , ',' )){
$result_end_data [ $key ][ 'standard' ] = explode ( ',' , $value )[ 1 ];
}
if ( array_key_exists ( $key , $this -> standard_color )){
2024-11-23 16:46:38 +08:00
if ( $result_end_data [ $key ][ 'standard' ] != '异常' && $result_end_data [ $key ][ 'standard' ] != '' ){
2024-09-06 18:21:33 +08:00
$result_end_data [ $key ][ 'color' ] = $this -> standard_color [ $key ][ $result_end_data [ $key ][ 'standard' ]];
}
2024-05-20 18:49:27 +08:00
}
2024-05-21 18:43:56 +08:00
// 如果小于16岁( 儿童)
2024-05-20 18:49:27 +08:00
if ( $data [ 'age' ] < $this -> age_limit ){
2024-04-20 17:38:31 +08:00
if ( array_key_exists ( $key , $this -> bhw_list )){
$result_end_data [ $key ][ 'list' ] = $this -> bhw_list [ $key ];
if ( $key == 'bmi' ){
2024-11-23 16:46:38 +08:00
$bhw_date = Db :: table ( $this -> card_use_db_name [ '3' ]) -> where ( " Month <= $month_num and Sex = ' $gender_val ' " ) -> order ( 'Month desc' ) -> limit ( 1 ) -> select ();
2024-04-20 17:38:31 +08:00
if ( $bhw_date ){
$result_end_data [ $key ][ 'list' ][ 0 ][ 'max_val' ] = $bhw_date [ 0 ][ 'f1sd' ];
$result_end_data [ $key ][ 'list' ][ 1 ][ 'min_val' ] = $bhw_date [ 0 ][ 'f1sd' ];
$result_end_data [ $key ][ 'list' ][ 1 ][ 'max_val' ] = $bhw_date [ 0 ][ 'z1sd' ];
$result_end_data [ $key ][ 'list' ][ 2 ][ 'min_val' ] = $bhw_date [ 0 ][ 'z1sd' ];
$result_end_data [ $key ][ 'list' ][ 2 ][ 'max_val' ] = $bhw_date [ 0 ][ 'z2sd' ];
$result_end_data [ $key ][ 'list' ][ 3 ][ 'min_val' ] = $bhw_date [ 0 ][ 'z2sd' ];
}
} else if ( $key == 'height' ){
2024-11-23 16:46:38 +08:00
$bhw_date = Db :: table ( $this -> card_use_db_name [ '4' ]) -> where ( " Month <= $month_num and Sex = ' $gender_val ' " ) -> order ( 'Month desc' ) -> limit ( 1 ) -> select ();
2024-04-20 17:38:31 +08:00
if ( $bhw_date ){
$result_end_data [ $key ][ 'list' ][ 0 ][ 'max_val' ] = $bhw_date [ 0 ][ 'f2sd' ];
$result_end_data [ $key ][ 'list' ][ 1 ][ 'min_val' ] = $bhw_date [ 0 ][ 'f2sd' ];
$result_end_data [ $key ][ 'list' ][ 1 ][ 'max_val' ] = $bhw_date [ 0 ][ 'f1sd' ];
$result_end_data [ $key ][ 'list' ][ 2 ][ 'min_val' ] = $bhw_date [ 0 ][ 'f1sd' ];
$result_end_data [ $key ][ 'list' ][ 2 ][ 'max_val' ] = $bhw_date [ 0 ][ 'z1sd' ];
$result_end_data [ $key ][ 'list' ][ 3 ][ 'min_val' ] = $bhw_date [ 0 ][ 'z1sd' ];
$result_end_data [ $key ][ 'list' ][ 3 ][ 'max_val' ] = $bhw_date [ 0 ][ 'z2sd' ];
$result_end_data [ $key ][ 'list' ][ 4 ][ 'min_val' ] = $bhw_date [ 0 ][ 'z2sd' ];
$result_end_data [ $key ][ 'list' ][ 4 ][ 'max_val' ] = $bhw_date [ 0 ][ 'z3sd' ];
}
} else if ( $key == 'weight' ){
2024-11-23 16:46:38 +08:00
$bhw_date = Db :: table ( $this -> card_use_db_name [ '5' ]) -> where ( " Month <= $month_num and Sex = ' $gender_val ' " ) -> order ( 'Month desc' ) -> limit ( 1 ) -> select ();
2024-04-20 17:38:31 +08:00
if ( $bhw_date ){
$result_end_data [ $key ][ 'list' ][ 0 ][ 'max_val' ] = $bhw_date [ 0 ][ 'f2sd' ];
$result_end_data [ $key ][ 'list' ][ 1 ][ 'min_val' ] = $bhw_date [ 0 ][ 'f2sd' ];
$result_end_data [ $key ][ 'list' ][ 1 ][ 'max_val' ] = $bhw_date [ 0 ][ 'f1sd' ];
$result_end_data [ $key ][ 'list' ][ 2 ][ 'min_val' ] = $bhw_date [ 0 ][ 'f1sd' ];
$result_end_data [ $key ][ 'list' ][ 2 ][ 'max_val' ] = $bhw_date [ 0 ][ 'z1sd' ];
$result_end_data [ $key ][ 'list' ][ 3 ][ 'min_val' ] = $bhw_date [ 0 ][ 'z1sd' ];
$result_end_data [ $key ][ 'list' ][ 3 ][ 'max_val' ] = $bhw_date [ 0 ][ 'z2sd' ];
$result_end_data [ $key ][ 'list' ][ 4 ][ 'min_val' ] = $bhw_date [ 0 ][ 'z2sd' ];
$result_end_data [ $key ][ 'list' ][ 4 ][ 'max_val' ] = $bhw_date [ 0 ][ 'z3sd' ];
}
}
}
}
}
}
return $result_end_data ;
}
2024-05-21 18:43:56 +08:00
2024-07-26 18:34:47 +08:00
public function grow_up_recommendation ( $data ){
// card_body_level
// die;
// $result = [
// ['name'=>'营养','key'=>'nutrition','content'=>''],
// ['name'=>'睡眠','key'=>'sleep','content'=>''],
// ['name'=>'运动','key'=>'motion','content'=>''],
// ['name'=>'情绪','key'=>'emotion','content'=>'']
// ];
$result = [
'nutritionlist' => [], //营养
'sportlist' => [], //运动
'sleeplist' => [], //睡眠
'moodlist' => [], //情绪
];
2024-09-06 18:21:33 +08:00
2024-07-26 18:34:47 +08:00
$temporary_arr = [];
foreach ( $data [ 'body' ] as $key => $value ) {
2024-09-06 18:21:33 +08:00
if ( explode ( ',' , $value )[ 1 ] == '无' ){
$result = [
'nutritionlist' => [], //营养
'sportlist' => [], //运动
'sleeplist' => [], //睡眠
'moodlist' => [], //情绪
];
return $result ;
}
2024-07-26 18:34:47 +08:00
$temporary_arr [ $key ] = $this -> card_body_level [ $key ][ 'list' ][ explode ( ',' , $value )[ 1 ]];
}
$min_value = min ( $temporary_arr );
$min_key = array_search ( $min_value , $temporary_arr );
$type_num = $this -> card_body_level [ $min_key ][ 'value' ];
2024-11-23 16:46:38 +08:00
$temporary_arr2 = Db :: table ( $this -> card_use_db_name [ '6' ]) -> where ([ 'Type' => $type_num , 'Level' => $min_value , 'IsDeleted' => 0 ]) -> field ( 'Nutrition,Sport' ) -> find ();
2024-07-26 18:34:47 +08:00
array_push ( $result [ 'nutritionlist' ], $temporary_arr2 [ 'Nutrition' ]);
array_push ( $result [ 'sportlist' ], $temporary_arr2 [ 'Sport' ]);
// $result['nutritionlist'] = $temporary_arr2['Nutrition'];
// $result['sportlist'] = $temporary_arr2['Sport'];
$month_num = $this -> calculateAgeInMonthsWithPrecision ( $data [ 'birthday' ]);
2024-11-23 16:46:38 +08:00
$temporary_arr2 = Db :: table ( $this -> card_use_db_name [ '7' ]) -> where ([ 'IsDeleted' => 0 ]) -> field ( 'MinAge,MaxAge,Type,Content' ) -> select ();
2024-07-26 18:34:47 +08:00
$default_sleep = '' ;
$default_emotion = '' ;
foreach ( $temporary_arr2 as $key => $value ) {
if ( $value [ 'MinAge' ] == - 1 && $value [ 'Type' ] == 2 ){
$default_sleep = $value [ 'Content' ];
}
if ( $value [ 'MinAge' ] == - 1 && $value [ 'Type' ] == 3 ){
$default_emotion = $value [ 'Content' ];
}
if ( $month_num >= $value [ 'MinAge' ] && $month_num <= $value [ 'MaxAge' ]){
if ( $value [ 'Type' ] == 1 ){
array_push ( $result [ 'sportlist' ], $value [ 'Content' ]);
// $result['sportlist'] = $result['sportlist'].$value['Content'];
} else if ( $value [ 'Type' ] == 2 ){
array_push ( $result [ 'sleeplist' ], $value [ 'Content' ]);
// $result['sleeplist'] = $result['sleeplist'].$value['Content'];
} else if ( $value [ 'Type' ] == 3 ){
array_push ( $result [ 'moodlist' ], $value [ 'Content' ]);
// $result['moodlist'] = $result['moodlist'].$value['Content'];
}
}
}
$result [ 'sleeplist' ] = count ( $result [ 'sleeplist' ]) <= 0 ? array_push ( $result [ 'sportlist' ], $default_sleep ) : $result [ 'sleeplist' ];
$result [ 'moodlist' ] = count ( $result [ 'moodlist' ]) <= 0 ? array_push ( $result [ 'moodlist' ], $default_sleep ) : $result [ 'moodlist' ];
return $result ;
}
2024-05-22 18:36:27 +08:00
########################################################card_curve_chart
// 曲线图动作函数
public function curve_chart_action ( $data ){
$card_body_curve_arr = implode ( ',' , $this -> card_body_curve_arr );
2024-07-26 18:34:47 +08:00
$data [ 's_time' ] = $data [ 's_time' ] . ' 00:00:00' ;
$data [ 'e_time' ] = $data [ 'e_time' ] . ' 23:59:59' ;
2024-11-23 16:46:38 +08:00
$user_data_list = Db :: table ( $this -> card_use_db_name [ '1' ])
2024-05-23 18:49:55 +08:00
-> where ( 'aud_id' , $data [ 'aud_id' ])
-> whereTime ( 'record_time' , 'between' , [ $data [ 's_time' ], $data [ 'e_time' ]])
2024-12-18 09:19:51 +08:00
-> field ( " record_type,record_time,REPLACE(CONVERT(varchar(10), record_time, 23), '-', '-') AS b_time, $card_body_curve_arr " )
2024-07-26 18:34:47 +08:00
// ->field("record_time,REPLACE(CONVERT(varchar(10), record_time, 23), '-', '/') AS b_time,$card_body_curve_arr")
2024-05-23 18:49:55 +08:00
-> order ( 'record_time desc' )
-> select ();
2024-05-25 18:39:08 +08:00
2024-07-26 18:34:47 +08:00
// 下面业务逻辑是取每天的,最近后一次记录成绩
2024-05-22 18:36:27 +08:00
$data_arr = [];
2024-05-23 18:49:55 +08:00
$record_arr1 = [];
$record_arr2 = [];
2024-05-25 18:39:08 +08:00
// 如果有数据
2024-05-22 18:36:27 +08:00
if ( count ( $user_data_list ) > 0 ){
2024-05-25 18:39:08 +08:00
// 循环数据
2024-05-23 18:49:55 +08:00
foreach ( $user_data_list as $key => $value ) {
2024-05-25 18:39:08 +08:00
// 如果数据中的时间不存在临时数组中
2024-05-23 18:49:55 +08:00
if ( ! in_array ( $value [ 'b_time' ], $record_arr1 )){
array_push ( $record_arr1 , $value [ 'b_time' ]);
2024-05-25 18:39:08 +08:00
foreach ( $this -> card_body_curve_arr as $k => $v ) {
$user_data_list [ $key ][ $v ] = explode ( ',' , $user_data_list [ $key ][ $v ])[ 0 ];
}
2024-05-23 18:49:55 +08:00
array_push ( $record_arr2 , $user_data_list [ $key ]);
}
}
2024-12-18 09:19:51 +08:00
2024-05-22 18:36:27 +08:00
foreach ( $this -> card_body_curve_arr as $key => $value ) {
$temporary_arr = [];
$temporary_arr [ 'title' ] = $this -> card_body_curve_arr2 [ $key ];
$temporary_arr [ 'key' ] = $value ;
$temporary_arr [ 'line' ][ 'categories' ] = [];
$temporary_arr [ 'line' ][ 'series' ][ 0 ][ 'color' ] = $this -> card_body_curve_arr3 [ $key ];
$temporary_arr [ 'line' ][ 'series' ][ 0 ][ 'data' ] = [];
2024-05-23 18:49:55 +08:00
foreach ( $record_arr2 as $k => $v ) {
2024-12-18 09:19:51 +08:00
if ( $value == 'fat_r' ){
if ( $v [ 'record_type' ] == 'by_device_adc' ){
array_push ( $temporary_arr [ 'line' ][ 'categories' ], $record_arr2 [ $k ][ 'b_time' ]);
array_push ( $temporary_arr [ 'line' ][ 'series' ][ 0 ][ 'data' ], $record_arr2 [ $k ][ $value ]);
}
} else {
array_push ( $temporary_arr [ 'line' ][ 'categories' ], $record_arr2 [ $k ][ 'b_time' ]);
array_push ( $temporary_arr [ 'line' ][ 'series' ][ 0 ][ 'data' ], $record_arr2 [ $k ][ $value ]);
}
2024-05-22 18:36:27 +08:00
}
array_push ( $data_arr , $temporary_arr );
}
}
return $this -> msg ( $data_arr );
}
################################################card_manual_recording
// 用户身体数据卡片记录
2024-11-23 16:46:38 +08:00
public function set_user_body_data ( $data , $type ){
// 加 bcadd(,,20)
// 减 bcsub(,,20)
// 乘 bcmul(,,20)
// 除 bcdiv(,,20)
// // 这里开始转换不同单位的身高体重为cm跟kg( start)
// if($data['height'][1] == 'kg'){
// $data['height'] = $data['height'][0];
// }else if($data['height'][1] == '斤'){
// // 斤数除以2就是公斤
// $data['height'] = bcdiv($data['height'][0],2,2);
// }else if($data['height'][1] == 'st:lb'){
// $data['height'] = $data['height'][0];
// }else if($data['height'][1] == 'lb'){
// $data['height'] = $data['height'][0];
// }
// // 这里开始转换不同单位的身高体重为cm跟kg( end)
// $adc_type = $type;
2024-12-18 09:19:51 +08:00
// $data['type'] = 1;
// 判断头围数据是否存在是否合理
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 ;
}
// 查询用户信息
2024-11-23 16:46:38 +08:00
$user_data = Db :: table ( $this -> card_use_db_name [ '2' ]) -> where ([ 'id' => $data [ 'aud_id' ]]) -> field ( 'birthday,gender,target_weight,initial_weight,initial_date' ) -> find ();
2024-12-18 09:19:51 +08:00
2024-05-22 18:36:27 +08:00
if ( ! $user_data ){
return $this -> msg ( 10003 );
}
2024-12-18 09:19:51 +08:00
// 如果最初体重设置为null
2024-05-22 21:37:39 +08:00
if ( $user_data [ 'initial_date' ] == null ){
2024-11-23 16:46:38 +08:00
Db :: table ( $this -> card_use_db_name [ '2' ]) -> where ([ 'id' => $data [ 'aud_id' ]]) -> update ([ 'initial_weight' => $data [ 'weight' ], 'initial_date' => $data [ 'time' ]]);
2024-05-22 21:37:39 +08:00
$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' ],
]);
}
2024-12-18 09:19:51 +08:00
// 设置身高、体重、年龄、性别、阶段称谓、头围、生日、阻抗
2024-05-22 18:36:27 +08:00
$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' ];
2024-12-18 09:19:51 +08:00
$result_data [ 'head_circumference' ] = $data [ 'head_circumference' ];
$result_data [ 'birthday' ] = $user_data [ 'birthday' ];
2024-06-17 18:03:41 +08:00
if ( array_key_exists ( 'adc' , $data )){
2024-11-23 16:46:38 +08:00
if ( $data [ 'adc' ] > 0 ){
$result_data [ 'adc' ] = $data [ 'adc' ];
$type = " by_device_adc " ;
} else {
$result_data [ 'adc' ] = 550 ;
$type = " by_device " ;
}
2024-06-17 18:03:41 +08:00
}
2024-05-22 18:36:27 +08:00
$calculate_body_formula = new Calculatebody ();
2024-11-23 16:46:38 +08:00
2024-08-03 17:56:26 +08:00
// 计算身体数据
2024-05-22 18:36:27 +08:00
$get_body_value = $calculate_body_formula -> calculate_body_data_result ( $result_data );
2024-12-18 09:19:51 +08:00
2024-11-23 16:46:38 +08:00
if ( $get_body_value === false ){
return $this -> msg ( 10005 );
}
2024-12-18 09:19:51 +08:00
// 如果年纪小于三岁, 处理头围数据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
2024-05-22 18:36:27 +08:00
$get_body_value [ 'gender' ] = $user_data [ 'gender' ];
$get_body_value [ 'birthday' ] = $user_data [ 'birthday' ];
2024-12-18 09:19:51 +08:00
// 添加身高、体重、bmi、头围( 如果有) 的标尺标准
2024-05-22 18:36:27 +08:00
$get_body_value = $this -> hwb_standard ( $get_body_value );
2024-07-26 18:34:47 +08:00
$set_data = [
2024-05-22 18:36:27 +08:00
'acd_id' => $data [ 'acd_id' ],
'aud_id' => $data [ 'aud_id' ],
2024-06-17 18:03:41 +08:00
'record_time' => array_key_exists ( 'time' , $data ) ? $data [ 'time' ] : date ( 'Y-m-d H:i:s' ),
2024-05-22 18:36:27 +08:00
'create_time' => date ( 'Y-m-d H:i:s' ),
'last_update_time' => date ( 'Y-m-d H:i:s' ),
'age' => $get_body_value [ 'age' ],
2024-05-25 18:39:08 +08:00
'height' => $get_body_value [ '身高2' ],
2024-06-07 16:49:19 +08:00
'height_val' => $get_body_value [ '身高' ],
2024-05-25 18:39:08 +08:00
'weight' => $get_body_value [ '体重2' ],
2024-06-07 16:49:19 +08:00
'weight_val' => $get_body_value [ '体重' ],
2024-05-25 18:39:08 +08:00
'bmi' => $get_body_value [ 'BMI2' ],
2024-06-07 16:49:19 +08:00
'bmi_val' => $get_body_value [ 'BMI' ],
2024-05-22 18:36:27 +08:00
'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 [ '肥胖等级' ],
2024-05-24 18:45:12 +08:00
'body_type' => $get_body_value [ '身体类型' ],
2024-11-23 16:46:38 +08:00
'body_age' => $get_body_value [ '身体年龄' ],
2024-12-18 09:19:51 +08:00
'record_type' => $type ,
'head_circumference' => $result_data [ 'age' ] < 3 ? json_encode ( $standardlist ) : " " ,
2024-07-26 18:34:47 +08:00
];
if ( strlen ( $set_data [ 'record_time' ]) <= 12 ){
2024-08-03 17:56:26 +08:00
// 时间日期转换,把'Y-m-d'转换成'Y-m-d H:i:s'格式
2024-07-26 18:34:47 +08:00
$set_data [ 'record_time' ] = $this -> addCurrentTimeToDateString ( $set_data [ 'record_time' ]);
}
2024-11-23 16:46:38 +08:00
// 启动事务
Db :: startTrans ();
try {
$set_user_data = Db :: table ( $this -> card_use_db_name [ '1' ]) -> insert ( $set_data );
2024-12-18 09:19:51 +08:00
$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 -> card_use_db_name [ '2' ]) -> where ([ 'id' => $data [ 'aud_id' ]]) -> update ( $update_arr );
2024-11-23 16:46:38 +08:00
// 提交事务
Db :: commit ();
return $this -> msg ([
'acd_id' => 2 ,
'height' => $get_body_value [ '身高' ] . ',CM' ,
'weight' => $get_body_value [ '体重' ] . ',公斤' ,
'bmi' => $get_body_value [ 'BMI' ],
// 'user_set_height'=>$get_body_value['身高'],
// 'user_set_weight'=>$get_body_value['体重'],
'target_current' => $target_current ,
]);
} catch ( \Exception $e ) {
// 回滚事务
Db :: rollback ();
2024-05-22 18:36:27 +08:00
return $this -> msg ( 10002 );
}
}
2024-05-21 18:43:56 +08:00
// 添加身高体重bmi的标准
public function hwb_standard ( $data ){
$linshi_data = [];
2024-08-23 17:54:14 +08:00
$month_num = $this -> calculateAgeInMonthsWithPrecision ( $data [ 'birthday' ]);
2024-05-21 18:43:56 +08:00
$gender_val = $data [ 'gender' ];
if ( $data [ 'age' ] < $this -> age_limit ){
foreach ( $data as $key => $value ) {
if ( $key == '身高' ){
$linshi_data [ '身高' ] = $this -> bhw_list [ 'height' ];
2024-11-23 16:46:38 +08:00
$bhw_date = Db :: table ( $this -> card_use_db_name [ '8' ]) -> where ( " Month <= $month_num and Sex = ' $gender_val ' " ) -> order ( 'Month desc' ) -> limit ( 1 ) -> select ();
2024-05-21 18:43:56 +08:00
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' ];
}
2024-11-23 16:46:38 +08:00
2024-05-21 18:43:56 +08:00
} else if ( $key == '体重' ){
$linshi_data [ '体重' ] = $this -> bhw_list [ 'weight' ];
2024-11-23 16:46:38 +08:00
$bhw_date = Db :: table ( $this -> card_use_db_name [ '9' ]) -> where ( " Month <= $month_num and Sex = ' $gender_val ' " ) -> order ( 'Month desc' ) -> limit ( 1 ) -> select ();
2024-05-21 18:43:56 +08:00
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 -> bhw_list [ 'bmi' ];
2024-11-23 16:46:38 +08:00
$bhw_date = Db :: table ( $this -> card_use_db_name [ '10' ]) -> where ( " Month <= $month_num and Sex = ' $gender_val ' " ) -> order ( 'Month desc' ) -> limit ( 1 ) -> select ();
2024-05-21 18:43:56 +08:00
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 ) {
2024-05-22 18:36:27 +08:00
if ( $data [ $key ] >= $v [ 'min_val' ] && $data [ $key ] < $v [ 'max_val' ]){
// 如果落在区间内
2024-05-21 18:43:56 +08:00
$data [ $key . '2' ] = $data [ $key ] . ',' . $v [ 'text' ] . ',' . $v [ 'color' ];
2024-12-18 09:19:51 +08:00
break ;
2024-05-21 18:43:56 +08:00
}
2024-05-22 18:36:27 +08:00
}
2024-12-18 09:19:51 +08:00
// 如果$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' ];
}
2024-05-21 18:43:56 +08:00
}
}
2024-05-22 18:36:27 +08:00
// die;
2024-05-21 18:43:56 +08:00
} else {
$data [ '身高2' ] = $data [ '身高' ] . ',无,无' ;
2024-07-26 18:34:47 +08:00
$data [ '体重2' ] = $data [ '体重' ] . ',无,无' ;
$data [ 'BMI2' ] = $data [ 'BMI' ] . ',无,无' ;
2024-05-21 18:43:56 +08:00
}
return $data ;
}
2024-05-22 21:37:39 +08:00
################################################card_modify_weight
public function modify_weight_action ( $data ){
2024-05-23 18:49:55 +08:00
// $data['aud_id'] = 26;
// $data['weight'] = 60;
2024-05-22 21:37:39 +08:00
$result = Db :: query ( "
select
TOP 1
2024-11-23 16:46:38 +08:00
acbd . weight_val as weight ,
2024-05-22 21:37:39 +08:00
aud . target_weight ,
aud . initial_weight ,
aud . initial_date
2024-11-23 16:46:38 +08:00
from " . $this->card_use_db_name ['1']. " as acbd
left join " . $this->card_use_db_name ['2']. " as aud on acbd . aud_id = aud . id
2024-05-22 21:37:39 +08:00
where acbd . aud_id = " . $data['aud_id'] . "
order by acbd . record_time desc
" );
if ( $data [ 'type' ] == 1 ){
// 修改目标体重
2024-05-23 18:49:55 +08:00
$bhw_date = [ 'target_weight' => $data [ 'weight' ]];
2024-05-22 21:37:39 +08:00
} else if ( $data [ 'type' ] == 2 ){
// 修改原始体重
2024-05-23 18:49:55 +08:00
$bhw_date = [ 'initial_weight' => $data [ 'weight' ], 'initial_date' => $data [ 'time' ]];
} else {
return $this -> msg ( 10005 );
2024-05-22 21:37:39 +08:00
}
2024-11-23 16:46:38 +08:00
$result_update = Db :: table ( $this -> card_use_db_name [ '2' ]) -> where ([ 'id' => $data [ 'aud_id' ]]) -> update ( $bhw_date );
2024-05-23 18:49:55 +08:00
2024-05-22 21:37:39 +08:00
if ( $result_update ){
$target_current = $this -> base_target_initial_cumulative_weight ([
2024-05-23 18:49:55 +08:00
'weight' => $result [ 0 ][ 'weight' ],
'target_weight' => $data [ 'type' ] == 1 ? $data [ 'weight' ] : $result [ 0 ][ 'target_weight' ],
'initial_weight' => $data [ 'type' ] == 1 ? $result [ 0 ][ 'initial_weight' ] : $data [ 'weight' ],
'initial_date' => $data [ 'type' ] == 1 ? $result [ 0 ][ 'initial_date' ] : $data [ 'time' ],
2024-05-22 21:37:39 +08:00
]);
2024-11-23 16:46:38 +08:00
2024-05-22 21:37:39 +08:00
return $this -> msg ( $target_current );
} else {
return $this -> msg ( 10002 );
}
}
2024-11-23 16:46:38 +08:00
################################################card_bmi_evaluation
public function bmi_evaluation_action ( $data ){
// 加 bcadd(,,20)
// 减 bcsub(,,20)
// 乘 bcmul(,,20)
// 除 bcdiv(,,20)
if ( ! array_key_exists ( 'code' , $data ) || ! array_key_exists ( 'data' , $data )){
return $this -> msg ( 99999 , '网络异常, 请稍后重试1' );
}
if ( $data [ 'code' ] != 0 ){
return $this -> msg ( 99999 , '网络异常, 请稍后重试2' );
}
if ( ! is_array ( $data [ 'data' ])){
return $this -> msg ( 99999 , '网络异常, 请稍后重试3' );
}
if ( ! array_key_exists ( 'bmi' , $data [ 'data' ]) || ! array_key_exists ( 'bmilevel' , $data [ 'data' ]) || ! array_key_exists ( 'bmilevelcolor' , $data [ 'data' ]) || ! array_key_exists ( 'bmilevellist' , $data [ 'data' ])){
return $this -> msg ( 99999 , '网络异常, 请稍后重试4' );
}
if ( ! is_array ( $data [ 'data' ][ 'bmilevellist' ])){
return $this -> msg ( 99999 , '网络异常, 请稍后重试5' );
}
$num = 0 ;
$subsection_val = 0 ;
$temporary_subsection_val = null ;
foreach ( $data [ 'data' ][ 'bmilevellist' ] as $key => $value ) {
if ( ! array_key_exists ( 'maxvalue' , $value ) || ! array_key_exists ( 'minvalue' , $value )){
return $this -> msg ( 99999 , '网络异常, 请稍后重试6' );
}
// 判断是否可以进行比较,规则是否正确
if ( is_numeric ( $value [ 'maxvalue' ]) && is_numeric ( $value [ 'minvalue' ])){
if ( $data [ 'data' ][ 'bmi' ] >= $value [ 'minvalue' ] && $data [ 'data' ][ 'bmi' ] < $value [ 'maxvalue' ]){
// 在落点内
$subsection_val = bcsub ( $value [ 'maxvalue' ], $value [ 'minvalue' ], 1 ); //获取最大最小值差
$temporary_subsection_val = bcsub ( $data [ 'data' ][ 'bmi' ], $value [ 'minvalue' ], 1 ); //获取当前值与最小值差
$temporary_subsection_val = bcdiv ( $temporary_subsection_val , $subsection_val , 1 ); //获取当前值与最小值差与最大最小值差之比
$subsection_val = bcdiv ( 100 , count ( $data [ 'data' ][ 'bmilevellist' ]), 1 ); //每段应该的百分比
$temporary_subsection_val = bcmul ( $subsection_val , $temporary_subsection_val , 1 ); //获取当前值与最小值差与最大最小值差之比与总段数之比
$temporary_subsection_val = bcadd ( $temporary_subsection_val , bcmul ( $subsection_val , $num , 1 ), 1 );
} else {
$num = $num + 1 ;
}
}
}
if ( $temporary_subsection_val === null ){
if ( $data [ 'data' ][ 'bmi' ] >= $data [ 'data' ][ 'bmilevellist' ][ count ( $data [ 'data' ][ 'bmilevellist' ]) - 1 ][ 'maxvalue' ]){
$temporary_subsection_val = 100 ;
} else {
return $this -> msg ( 99999 , '网络异常, 请稍后重试7' );
}
}
$data [ 'data' ][ 'offset' ] = $temporary_subsection_val ;
$data = $data [ 'data' ];
// 处理key名称一致start
foreach ( $data [ 'bmilevellist' ] as $key => $value ) {
$data [ 'bmilevellist' ][ $key ][ 'max_val' ] = $value [ 'maxvalue' ];
$data [ 'bmilevellist' ][ $key ][ 'min_val' ] = $value [ 'minvalue' ];
unset ( $data [ 'bmilevellist' ][ $key ][ 'minvalue' ]);
unset ( $data [ 'bmilevellist' ][ $key ][ 'maxvalue' ]);
}
// 处理key名称一致end
return $this -> msg ( $data );
}
2024-05-22 18:36:27 +08:00
2024-04-20 17:38:31 +08:00
2024-05-22 18:36:27 +08:00
################################################################其他接口################################################################
################################################################其他接口################################################################
2024-03-15 18:15:17 +08:00
2024-05-22 18:36:27 +08:00
2024-05-24 18:45:12 +08:00
2024-03-15 18:15:17 +08:00
2024-04-20 17:38:31 +08:00
2024-03-15 18:15:17 +08:00
}