2024-03-15 18:15:17 +08:00
< ? php
namespace app\app\controller ;
use think\Controller ;
use think\Db ;
use app\bj\controller\Common ;
use think\Log ;
use \think\Validate ;
2024-04-20 17:38:31 +08:00
use app\app\controller\Calculatebody ;
2024-04-29 16:42:30 +08:00
use app\app\controller\Skip ;
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-04-29 16:42:30 +08:00
protected $db_name = [ '2' => 'app_card_body_data' , '6' => 'app_card_skip_data' ];
protected $db_content = [
'2' => 'height as v1,weight as v2,bmi as v3' ,
'6' => 'jump_num as v1,jump_time as v2,jump_kcal as v3'
];
2024-04-20 17:38:31 +08:00
protected $age_limit = 16 ;
protected $unit_symbol = [ 'score' => '分' , 'height' => 'CM' , 'weight' => '公斤' , 'fat_r' => '%' , 'fat_w' => 'kg' , 'muscle' => '%' , 'muscleval' => 'kg' , 'water' => 'kg' , 'bone' => 'kg' , 'protein' => '%' , 'proteinval' => 'kg' , 'kcal' => 'kcal' , 'sfr' => '%' ,];
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' => [
[ 'min_val' => '0' , 'max_val' => '' , 'text' => '消瘦' , 'color' => '#ffda69' ],
[ 'min_val' => '' , 'max_val' => '' , 'text' => '正常' , 'color' => '#5ad06d' ],
[ 'min_val' => '' , 'max_val' => '' , 'text' => '偏重' , 'color' => '#ffab00' ],
[ 'min_val' => '' , 'max_val' => '50' , 'text' => '肥胖' , 'color' => '#ff5656' ],
],
'height' => [
[ 'min_val' => '0' , 'max_val' => '' , 'text' => '矮' , 'color' => '#ff5656' ],
[ 'min_val' => '' , 'max_val' => '' , 'text' => '偏矮' , 'color' => '#ffab00' ],
[ 'min_val' => '' , 'max_val' => '' , 'text' => '标准' , 'color' => '#5ad06d' ],
[ 'min_val' => '' , 'max_val' => '' , 'text' => '偏高' , 'color' => '#6492f6' ],
[ 'min_val' => '' , 'max_val' => '' , 'text' => '高' , 'color' => '#3967d6' ],
],
'weight' => [
[ 'min_val' => '0' , 'max_val' => '' , 'text' => '低' , 'color' => '#ff5656' ],
[ 'min_val' => '' , 'max_val' => '' , 'text' => '偏低' , 'color' => '#ffab00' ],
[ 'min_val' => '' , 'max_val' => '' , 'text' => '标准' , 'color' => '#5ad06d' ],
[ 'min_val' => '' , 'max_val' => '' , 'text' => '偏高' , 'color' => '#ffab00' ],
[ 'min_val' => '' , 'max_val' => '' , 'text' => '高' , 'color' => '#ff5656' ],
]
];
protected $standard_color = [
'fat_r' => [ '偏低' => '#FFAB00' , '标准' => '#5AD06D' , '偏高' => '#6492F6' , '高' => '#3967D6' ],
'fat_w' => [ '偏低' => '#FFAB00' , '标准' => '#5AD06D' , '偏高' => '#6492F6' , '高' => '#3967D6' ],
'muscle' => [ '不足' => '#FF5656' , '标准' => '#5AD06D' , '优' => '#3967D6' ],
'muscleval' => [ '不足' => '#FF5656' , '标准' => '#5AD06D' , '优' => '#3967D6' ],
'water' => [ '不足' => '#FF5656' , '标准' => '#5AD06D' , '优' => '#3967D6' ],
'proteinval' => [ '不足' => '#FF5656' , '标准' => '#5AD06D' , '优' => '#3967D6' ],
'bone' => [ '不足' => '#FF5656' , '标准' => '#5AD06D' , '优' => '#3967D6' ],
'protein' => [ '不足' => '#FF5656' , '标准' => '#5AD06D' , '优' => '#3967D6' ],
'kcal' => [ '偏低' => '#FF5656' , '优' => '#3967D6' ],
'visceral' => [ '标准' => '#5AD06D' , '警惕' => '#FFAB00' , '危险' => '#FF5656' ],
'sfr' => [ '不足' => '#FF5656' , '标准' => '#5AD06D' , '偏高' => '#6492F6' ],
];
protected $result_end_data_mould = [
'name' => '' ,
'value' => '' ,
'unit' => '' ,
'standard' => '' ,
'color' => '' ,
'list' => []
];
2024-05-22 18:36:27 +08:00
protected $card_body_curve_arr = [ 'weight' , 'bmi' , 'muscle' , 'fat_r' ];
protected $card_body_curve_arr2 = [ '体重' , 'BMI' , '肌肉率' , '脂肪率' ];
protected $card_body_curve_arr3 = [ '#fb7b92' , '#6bb0fe' , '#ff9f40' , '#3fcba7' ];
2024-03-15 18:15:17 +08:00
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-05-20 18:49:27 +08:00
public function card_data_detailed ( $data = [ 'aud_id' => '11' , 'token' => '0dafb98a10995c98b5a33b7d59d986ca' ]){
if ( count ( input ()) > 0 ){
$data = input ();
}
2024-05-21 18:43:56 +08:00
if ( ! array_key_exists ( 'aud_id' , $data ) || ! array_key_exists ( 'token' , $data )){
return $this -> msg ( 10001 );
}
2024-05-20 18:49:27 +08:00
if ( $this -> token_time_validate ( $data [ 'token' ]) === false ){
2024-05-21 18:43:56 +08:00
return $this -> msg ( 20001 );
2024-05-20 18:49:27 +08:00
}
unset ( $data [ 'token' ]);
return $this -> get_user_body_data ( $data );
2024-04-03 18:15:07 +08:00
2024-04-20 17:38:31 +08:00
}
2024-05-21 18:43:56 +08:00
// 曲线页面-曲线接口
2024-05-22 18:36:27 +08:00
public function card_curve_chart ( $data = [ 'aud_id' => '25' , 's_time' => '2024-04-01 10:10:10' , 'e_time' => '2024-07-30 10:10:10' , 'token' => '0dafb98a10995c98b5a33b7d59d986ca' ]){
2024-05-21 18:43:56 +08:00
if ( count ( input ()) > 0 ){
$data = input ();
}
2024-05-22 18:36:27 +08:00
if ( ! array_key_exists ( 'aud_id' , $data ) || ! array_key_exists ( 's_time' , $data ) || ! array_key_exists ( 'e_time' , $data ) || ! array_key_exists ( 'token' , $data )){
2024-05-21 18:43:56 +08:00
return $this -> msg ( 10001 );
}
if ( $this -> token_time_validate ( $data [ 'token' ]) === false ){
return $this -> msg ( 20001 );
}
unset ( $data [ 'token' ]);
return $this -> curve_chart_action ( $data );
}
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-05-20 18:49:27 +08:00
// public function card_manual_recording($data = ['acd_id'=>'2','aud_id'=>'11','time'=>'2024-04-11 10:10:10','data'=>['height'=>'175.1','weight'=>'77.1']]){
2024-05-22 18:36:27 +08:00
public function card_manual_recording ( $data = [ 'aud_id' => '25' , 'time' => '2024-04-11 10:10:15' , 'height' => '165.3' , 'weight' => '66.1' , 'token' => '0dafb98a10995c98b5a33b7d59d986ca' ]){
2024-05-20 18:49:27 +08:00
if ( count ( input ()) > 0 ){
$data = input ();
2024-04-20 17:38:31 +08:00
}
2024-05-21 18:43:56 +08:00
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 );
}
2024-05-20 18:49:27 +08:00
if ( $this -> token_time_validate ( $data [ 'token' ]) === false ){
2024-05-21 18:43:56 +08:00
return $this -> msg ( 20001 );
2024-04-20 17:38:31 +08:00
}
2024-05-20 18:49:27 +08:00
unset ( $data [ 'token' ]);
$data [ 'acd_id' ] = '2' ;
return $this -> set_user_body_data ( $data );
2024-04-03 18:15:07 +08:00
}
2024-04-20 17:38:31 +08:00
// 获取记录信息列表
2024-05-22 18:36:27 +08:00
public function get_card_record_data ( $data = [ 'aud_id' => '11' , 's_time' => '2024-04-01 10:10:10' , 'e_time' => '2024-06-12 10:10:10' , 'token' => '0dafb98a10995c98b5a33b7d59d986ca' ]){
2024-05-21 18:43:56 +08:00
if ( count ( input ()) > 0 ){
$data = input ();
}
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 );
}
if ( $this -> token_time_validate ( $data [ 'token' ]) === false ){
return $this -> msg ( 20001 );
2024-04-20 17:38:31 +08:00
}
2024-05-21 18:43:56 +08:00
unset ( $data [ 'token' ]);
2024-05-20 18:49:27 +08:00
$data [ 'acd_id' ] = '2' ;
2024-04-29 16:42:30 +08:00
return $this -> get_all_record_data ( $data );
2024-05-20 18:49:27 +08:00
2024-04-20 17:38:31 +08:00
}
2024-05-21 18:43:56 +08:00
// 删除历史数据
public function card_del_record_data ( $data = [ 'id' => '16' , 'token' => '0dafb98a10995c98b5a33b7d59d986ca' ]){
if ( count ( input ()) > 0 ){
$data = input ();
}
if ( ! array_key_exists ( 'id' , $data ) || ! array_key_exists ( 'token' , $data )){
return $this -> msg ( 10001 );
}
if ( $this -> token_time_validate ( $data [ 'token' ]) === false ){
return $this -> msg ( 20001 );
}
unset ( $data [ 'token' ]);
$user_data = Db :: table ( 'app_card_body_data' ) -> where ([ 'id' => $data [ 'id' ]]) -> update ([ 'is_del' => 1 ]);
if ( $user_data ){
return $this -> msg ([]);
} else {
return $this -> msg ( 10002 );
}
}
2024-03-29 18:34:01 +08:00
2024-04-20 17:38:31 +08:00
// 数据对比
2024-05-21 18:43:56 +08:00
public function card_data_contrast ( $data = [ 'acd_id' => '2' , 'aud_id' => '11' , 's_time' => '2024-04-01 10:10:10' , 'e_time' => '2024-04-12 10:10:10' ]){
if ( count ( input ()) > 0 ){
$data = input ();
}
2024-04-20 17:38:31 +08:00
if ( ! array_key_exists ( 'acd_id' , $data ) || ! array_key_exists ( 'aud_id' , $data ) || ! array_key_exists ( 's_time' , $data ) || ! array_key_exists ( 'e_time' , $data )){
2024-05-21 18:43:56 +08:00
return $this -> msg ( 10001 );
}
if ( $this -> token_time_validate ( $data [ 'token' ]) === false ){
return $this -> msg ( 20001 );
2024-04-20 17:38:31 +08:00
}
2024-05-21 18:43:56 +08:00
unset ( $data [ 'token' ]);
2024-04-20 17:38:31 +08:00
if ( $data [ 'acd_id' ] == '2' ){
return $this -> body_data_contrast ( $data );
} else if ( $data [ 'acd_id' ] == '6' ){
}
}
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-04-20 17:38:31 +08:00
$result = Db :: table ( 'app_card_body_data' )
-> alias ( 'acbd' )
-> join ( 'app_user_data aud' , 'acbd.aud_id = aud.id' , 'LEFT' )
2024-05-20 18:49:27 +08:00
-> where ([ 'acbd.aud_id' => $data [ 'aud_id' ]])
-> order ( 'record_time desc' )
2024-05-22 18:36:27 +08:00
-> field ( 'acbd.*,aud.birthday,aud.gender,aud.target_weight,aud.initial_weight,aud.initial_date' )
2024-04-20 17:38:31 +08:00
-> find ();
if ( ! $result ){
2024-05-22 18:36:27 +08:00
return $this -> msg ( 10004 );
2024-04-20 17:38:31 +08:00
} else {
2024-05-22 18:36:27 +08:00
// $curve_bottom = $this->card_curve_target_action($result);
2024-05-20 18:49:27 +08:00
$result_end = $this -> processing_return_data_new ( $result );
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 ){
// dump($data);
2024-04-20 17:38:31 +08:00
$result_end_data = [];
$month_num = $this -> calculateAgeInMonthsWithPrecision ( $data [ 'birthday' ]) * 100 ;
$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 ;
if ( array_key_exists ( $key , $this -> unit_name )){
$result_end_data [ $key ][ 'name' ] = $this -> unit_name [ $key ];
}
if ( array_key_exists ( $key , $this -> unit_symbol )){
$result_end_data [ $key ][ 'unit' ] = $this -> unit_symbol [ $key ];
}
$result_end_data [ $key ][ 'value' ] = explode ( ',' , $value )[ 0 ];
if ( strpos ( $value , ',' )){
$result_end_data [ $key ][ 'standard' ] = explode ( ',' , $value )[ 1 ];
}
if ( array_key_exists ( $key , $this -> standard_color )){
$result_end_data [ $key ][ 'color' ] = $this -> standard_color [ $key ][ $result_end_data [ $key ][ 'standard' ]];
}
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' ){
// dump($month_num);
$bhw_date = Db :: table ( 'pc_bmistand2' ) -> where ( " month >= $month_num and sex = ' $gender_val ' " ) -> order ( 'month' ) -> limit ( 1 ) -> select ();
2024-05-20 18:49:27 +08:00
// dump($bhw_date);
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-05-21 18:43:56 +08:00
$bhw_date = Db :: table ( 'pc_heightstand2' ) -> where ( " month >= $month_num and sex = ' $gender_val ' " ) -> order ( 'month' ) -> 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-05-21 18:43:56 +08:00
$bhw_date = Db :: table ( 'pc_weightstand2' ) -> where ( " month >= $month_num and sex = ' $gender_val ' " ) -> order ( 'month' ) -> limit ( 1 ) -> select ();
2024-04-20 17:38:31 +08:00
// dump($value);
// dump($bhw_date);/
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' ];
}
}
}
}
}
}
2024-05-21 18:43:56 +08:00
// dump($data['age']);
// dump($result_end_data);
// die;
2024-04-20 17:38:31 +08:00
return $result_end_data ;
}
2024-05-21 18:43:56 +08:00
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 );
$user_data_list = Db :: query ( "
select
record_time ,
$card_body_curve_arr
from app_card_body_data
where aud_id = '".$data[' aud_id ']."'
and record_time between '".$data[' s_time ']."'
and '".$data[' e_time ']."'
order by record_time desc
" );
$data_arr = [];
if ( count ( $user_data_list ) > 0 ){
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' ] = [];
foreach ( $user_data_list as $k => $v ) {
array_push ( $temporary_arr [ 'line' ][ 'categories' ], $user_data_list [ $k ][ 'record_time' ]);
array_push ( $temporary_arr [ 'line' ][ 'series' ][ 0 ][ 'data' ], $user_data_list [ $k ][ $value ]);
}
array_push ( $data_arr , $temporary_arr );
}
}
return $this -> msg ( $data_arr );
}
################################################card_manual_recording
// 用户身体数据卡片记录
public function set_user_body_data ( $data ){
$data [ 'type' ] = 1 ;
$user_data = Db :: table ( 'app_user_data' ) -> where ([ 'id' => $data [ 'aud_id' ]]) -> field ( 'birthday,gender' ) -> find ();
if ( ! $user_data ){
return $this -> msg ( 10003 );
}
$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 [ 'adc' ] = array_key_exists ( 'impedance' , $data ) ? $data [ 'impedance' ] : 550 ;
$calculate_body_formula = new Calculatebody ();
$get_body_value = $calculate_body_formula -> calculate_body_data_result ( $result_data );
$get_body_value [ 'gender' ] = $user_data [ 'gender' ];
$get_body_value [ 'birthday' ] = $user_data [ 'birthday' ];
$get_body_value = $this -> hwb_standard ( $get_body_value );
// dump($get_body_value);
// dump($get_body_value['脂肪率']);
// dump(implode(',',$get_body_value['脂肪率']));
// die;
$set_user_data = Db :: table ( 'app_card_body_data' ) -> insert ([
'acd_id' => $data [ 'acd_id' ],
'aud_id' => $data [ 'aud_id' ],
'record_time' => $data [ 'time' ],
'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 [ '身高' ],
'height_data' => $get_body_value [ '身高2' ],
'weight' => $get_body_value [ '体重' ],
'weight_data' => $get_body_value [ '体重2' ],
'bmi' => $get_body_value [ 'BMI' ],
'bmi_data' => $get_body_value [ 'BMI2' ],
'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 [ '身体类型' ]
]);
if ( $set_user_data ){
// 返回简要数据
if ( $data [ 'type' ] == 1 ){
return $this -> msg ([ 'acd_id' => 2 , 'height' => $get_body_value [ '身高' ] . ',CM' , 'weight' => $get_body_value [ '体重' ] . ',公斤' , 'bmi' => $get_body_value [ 'BMI' ]]);
}
} else {
return $this -> msg ( 10002 );
}
}
2024-05-21 18:43:56 +08:00
// 添加身高体重bmi的标准
public function hwb_standard ( $data ){
$linshi_data = [];
$month_num = $this -> calculateAgeInMonthsWithPrecision ( $data [ 'birthday' ]) * 100 ;
$gender_val = $data [ 'gender' ];
if ( $data [ 'age' ] < $this -> age_limit ){
foreach ( $data as $key => $value ) {
if ( $key == '身高' ){
$linshi_data [ '身高' ] = $this -> bhw_list [ 'height' ];
$bhw_date = Db :: table ( 'pc_heightstand2' ) -> where ( " month >= $month_num and sex = ' $gender_val ' " ) -> order ( 'month' ) -> 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 -> bhw_list [ 'weight' ];
$bhw_date = Db :: table ( 'pc_weightstand2' ) -> where ( " month >= $month_num and sex = ' $gender_val ' " ) -> order ( 'month' ) -> 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 -> bhw_list [ 'bmi' ];
$bhw_date = Db :: table ( 'pc_bmistand2' ) -> where ( " month >= $month_num and sex = ' $gender_val ' " ) -> order ( 'month' ) -> limit ( 1 ) -> select ();
// dump($bhw_date);
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' ];
}
}
}
2024-05-22 18:36:27 +08:00
// dump($linshi_data);
// die;
2024-05-21 18:43:56 +08:00
foreach ( $linshi_data as $key => $value ) {
2024-05-22 18:36:27 +08:00
// dump($value);
2024-05-21 18:43:56 +08:00
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-05-22 18:36:27 +08:00
}
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 [ '身高' ] . ',无,无' ;
$data [ '体重2' ] = $data [ '身高' ] . ',无,无' ;
$data [ 'BMI2' ] = $data [ '身高' ] . ',无,无' ;
}
// dump($data);
return $data ;
// dump($data);
}
2024-05-22 18:36:27 +08:00
################################################get_card_record_data
// 获取历史数据记录信息列表
public function get_all_record_data ( $data ){
$result = Db :: query ( "
select
id ,
CONVERT ( varchar ( 10 ), record_time , 120 ) AS r_t ,
CONVERT ( varchar ( 19 ), record_time , 120 ) AS record_time ,
" . $this->db_content [ $data['acd_id'] ]. "
from " . $this->db_name [ $data['acd_id'] ]. "
where aud_id = '".$data[' aud_id ']."'
and record_time between '".$data[' s_time ']."' and '".$data[' e_time ']."'
and is_del = 0
order by record_time desc " );
// dump($result);
// die;
$return_result = [];
foreach ( $result as $key => $value ) {
$result [ $key ][ 'v1_name' ] = '身高' ;
$result [ $key ][ 'v2_name' ] = '体重' ;
$result [ $key ][ 'v3_name' ] = 'BMI' ;
if ( array_key_exists ( $value [ 'r_t' ], $return_result )){
array_push ( $return_result [ $value [ 'r_t' ]], [ 'id' => $value [ 'id' ], 'v1' => $value [ 'v1' ], 'v2' => $value [ 'v2' ], 'v3' => $value [ 'v3' ], 'v1_name' => '身高' , 'v2_name' => '体重' , 'v3_name' => 'BMI' ]);
} else {
$return_result [ $value [ 'r_t' ]] = [[ 'id' => $value [ 'id' ], 'v1' => $value [ 'v1' ], 'v2' => $value [ 'v2' ], 'v3' => $value [ 'v3' ], 'v1_name' => '身高' , 'v2_name' => '体重' , 'v3_name' => 'BMI' ]];
}
}
return $this -> msg ([ 'original' => $result , 'optimization' => $return_result ]);
// return ;
}
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
// 身体数据对比
public function body_data_contrast ( $data = [ 'acd_id' => '2' , 'data' => [ 1 , 10 ]]){
$between_num = implode ( ',' , $data [ 'data' ]);
$calculate_arr = [];
$result = Db :: query ( "
select
acbd . id ,
acbd . height ,
acbd . weight ,
acbd . bmi ,
acbd . fat_w ,
acbd . record_time ,
REPLACE ( CONVERT ( varchar ( 10 ), acbd . record_time , 23 ), '-' , '/' ) AS b_time ,
aud . nickname ,
aud . gender ,
aud . birthday
from app_card_body_data as acbd
left join app_user_data as aud on acbd . aud_id = aud . id
where acbd . id in ( " . $between_num . " )
" );
if ( ! $result || count ( $result ) < 2 ){
return $this -> msg ( 10003 );
}
foreach ( $data [ 'data' ] as $key => $value ) {
foreach ( $result as $k => $v ) {
if ( $value == $v [ 'id' ]){
array_push ( $calculate_arr , $v );
}
}
}
$return_data [ 'nickname' ] = $calculate_arr [ 0 ][ 'nickname' ];
if ( $calculate_arr [ 0 ][ 'gender' ] == 1 ){
$return_data [ 'gender' ] = '男' ;
} else if ( $calculate_arr [ 0 ][ 'gender' ] == 2 ) {
$return_data [ 'gender' ] = '女' ;
} else {
$return_data [ 'gender' ] = '保密' ;
}
// bcsub(,,20)
$return_data [ 'age' ] = $this -> calculate_age ( $calculate_arr [ 0 ][ 'birthday' ]);
$return_data [ 'time' ] = $this -> daysSince ( $calculate_arr [ 0 ][ 'record_time' ], $calculate_arr [ 1 ][ 'record_time' ]);
$return_data [ 'weight_loss' ] = bcsub ( $calculate_arr [ 1 ][ 'weight' ], $calculate_arr [ 0 ][ 'weight' ], 1 );
$return_data [ 'reduce_fat' ] = bcsub ( explode ( ',' , $calculate_arr [ 1 ][ 'fat_w' ])[ 0 ], explode ( ',' , $calculate_arr [ 0 ][ 'fat_w' ])[ 0 ], 2 );
$return_data [ 'between_time' ] = $calculate_arr [ 0 ][ 'b_time' ] . '-' . $calculate_arr [ 1 ][ 'b_time' ];
$return_data [ 'execl_data' ][ 'height' ] = [ '身高' , bcsub ( $calculate_arr [ 1 ][ 'height' ], $calculate_arr [ 0 ][ 'height' ], 1 ), $calculate_arr [ 0 ][ 'height' ], $calculate_arr [ 1 ][ 'height' ]];
$return_data [ 'execl_data' ][ 'weight' ] = [ '体重' , bcsub ( $calculate_arr [ 1 ][ 'weight' ], $calculate_arr [ 0 ][ 'weight' ], 1 ), $calculate_arr [ 0 ][ 'weight' ], $calculate_arr [ 1 ][ 'weight' ]];
$return_data [ 'execl_data' ][ 'bmi' ] = [ 'BMI' , bcsub ( $calculate_arr [ 1 ][ 'bmi' ], $calculate_arr [ 0 ][ 'bmi' ], 1 ), $calculate_arr [ 0 ][ 'bmi' ], $calculate_arr [ 1 ][ 'bmi' ]];
// dump($return_data);
// die;
return $this -> msg ( $return_data );
}
2024-03-15 18:15:17 +08:00
2024-04-20 17:38:31 +08:00
2024-03-15 18:15:17 +08:00
}