diff --git a/application/app/controller/Base.php b/application/app/controller/Base.php index 2c03f06..e31ae53 100644 --- a/application/app/controller/Base.php +++ b/application/app/controller/Base.php @@ -169,17 +169,19 @@ class Base extends Controller{ // 第一种:用户详情(所有数据都有) // 第二种:手动记录(只有最新体重) // 第三种:修改原始体重(只有原始体重) + // dump($data); if(count($data) > 0){ $result_data['target_weight'] = $data['target_weight']; $result_data['initial_weight'] = $data['initial_weight']; - $result_data['cumulative_weight'] = $data['weight'] - $data['initial_weight']; - $result_data['cumulative_day'] = $this->daysSince($user_data['initial_date']); + $result_data['cumulative_weight'] = bcsub($data['weight'],$data['initial_weight'],2); + $result_data['cumulative_day'] = $data['initial_date'] == 0?0:$this->daysSince($data['initial_date']); }else{ $result_data['target_weight'] = 0; $result_data['initial_weight'] = 0; $result_data['cumulative_weight'] = 0; $result_data['cumulative_day'] = 0; } + // dump($result_data); return $result_data; } diff --git a/application/app/controller/Card.php b/application/app/controller/Card.php index 640519e..c91209d 100644 --- a/application/app/controller/Card.php +++ b/application/app/controller/Card.php @@ -13,13 +13,13 @@ use app\app\controller\Skip; class Card extends Base{ protected $color = ['#FF5656','#FFAB00','#5AD06D','#6492F6','#3967D6']; - 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' - ]; + // 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' + // ]; 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_symbol = ['score'=>'分','height'=>'CM','weight'=>'公斤','bmi'=>'','fat_r'=>'%','fat_w'=>'kg','muscle'=>'%','muscleval'=>'kg','water'=>'kg','bone'=>'kg','protein'=>'%','proteinval'=>'kg','kcal'=>'kcal','visceral'=>'','sfr'=>'%',]; protected $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'=>[ @@ -67,6 +67,9 @@ class Card extends Base{ 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']; + + + ################################################################接口################################################################ ################################################################接口################################################################ @@ -75,7 +78,7 @@ class Card extends Base{ // 详细卡片信息 // $data = ['id'=>'2'] - public function card_data_detailed($data=['aud_id'=>'11','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){ + public function card_data_detailed($data=['aud_id'=>'25','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){ if(count(input('post.')) > 0){ $data = input('post.'); } @@ -127,11 +130,14 @@ class Card extends Base{ } // 修改初始体重/目标体重 - public function card_modify_weight($data = ['aud_id'=>'25','data'=>'25','type'=>1,'token'=>'0dafb98a10995c98b5a33b7d59d986ca']){ + public function card_modify_weight($data = ['aud_id'=>'25','weight'=>'25','type'=>1,'time'=>'','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){ if(count(input('post.')) > 0){ $data = input('post.'); } - if(!array_key_exists('aud_id', $data) || !array_key_exists('data', $data) || !array_key_exists('type', $data) || !array_key_exists('token', $data)){ + 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); } if($this->token_time_validate($data['token']) === false){ @@ -142,23 +148,39 @@ class Card extends Base{ return $this->modify_weight_action($data); } - // 获取记录信息列表 - public function get_card_record_data($data = ['aud_id'=>'25','s_time'=>'2024-04-01 10:10:10','e_time'=>'2024-06-12 10:10:10','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){ - if(count(input('post.')) > 0){ - $data = input('post.'); - } + // // 获取记录信息列表 + // public function get_card_record_data_group($data = ['aud_id'=>'25','s_time'=>'2024-04-01 10:10:10','e_time'=>'2024-06-12 10:10:10','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){ + // 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); + // } + // if($this->token_time_validate($data['token']) === false){ + // return $this->msg(20001); + // } + // unset($data['token']); + // $data['acd_id'] = '2'; + // return $this->get_all_record_data($data,'group'); - 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); - } - unset($data['token']); - $data['acd_id'] = '2'; - return $this->get_all_record_data($data); + // } + // // 获取记录信息列表 + // public function get_card_record_data_page($data = ['aud_id'=>'25','page'=>1,'token'=>'0dafb98a10995c98b5a33b7d59d986ca']){ + // if(count(input('post.')) > 0){ + // $data = input('post.'); + // } - } + // if(!array_key_exists('aud_id', $data) || !array_key_exists('page', $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']); + // $data['acd_id'] = '2'; + // return $this->get_all_record_data($data,'page'); + + // } // 删除历史数据 public function card_del_record_data($data = ['id'=>'16','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){ if(count(input('post.')) > 0){ @@ -180,11 +202,11 @@ class Card extends Base{ } // 数据对比 - public function card_data_contrast($data = ['id_arr'=>'24,25','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){ + public function card_data_contrast($data = ['before_id'=>'24','after_id'=>'25','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){ if(count(input('post.')) > 0){ $data = input('post.'); } - if(!array_key_exists('id_arr', $data) || !array_key_exists('token', $data)){ + if(!array_key_exists('before_id', $data) || !array_key_exists('after_id', $data) || !array_key_exists('token', $data)){ return $this->msg(10001); } if($this->token_time_validate($data['token']) === false){ @@ -202,18 +224,30 @@ class Card extends Base{ ################################################card_data_detailed // 用户身体数据卡片获取 public function get_user_body_data($data){ - $result = Db::table('app_card_body_data') - ->alias('acbd') - ->join('app_user_data aud','acbd.aud_id = aud.id','LEFT') - ->where(['acbd.aud_id'=>$data['aud_id']]) - ->order('acbd.record_time desc') - ->field('acbd.*,aud.birthday,aud.gender,aud.target_weight,aud.initial_weight,aud.initial_date') - ->find(); + // $result = Db::table('app_card_body_data') + // ->alias('acbd') + // ->join('app_user_data aud','acbd.aud_id = aud.id','LEFT') + // ->where(['acbd.aud_id'=>$data['aud_id']]) + // ->order('acbd.record_time desc') + // ->field('acbd.*,aud.birthday,aud.gender,aud.target_weight,aud.initial_weight,aud.initial_date') + // ->find(); + // dump($data); + $result = Db::query(" + select + Top 1 + acbd.*,aud.birthday,aud.gender,aud.target_weight,aud.initial_weight,aud.initial_date + from app_card_body_data as acbd + left join app_user_data as aud on acbd.aud_id=aud.id + where acbd.aud_id='".$data['aud_id']."' + order by acbd.record_time desc + "); + // dump($result); + // die; if(!$result){ return $this->msg(10004); }else{ // $curve_bottom = $this->card_curve_target_action($result); - $result_end = $this->processing_return_data_new($result); + $result_end = $this->processing_return_data_new($result[0]); return $this->msg($result_end); } } @@ -303,18 +337,35 @@ class Card extends Base{ // 曲线图动作函数 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 - "); + // $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 + // "); + $user_data_list = Db::table('app_card_body_data') + ->where('aud_id', $data['aud_id']) + ->whereTime('record_time', 'between', [$data['s_time'], $data['e_time']]) + ->field("record_time,REPLACE(CONVERT(varchar(10), record_time, 23), '-', '/') AS b_time,$card_body_curve_arr") + ->order('record_time desc') + ->select(); $data_arr = []; + $record_arr1 = []; + $record_arr2 = []; if(count($user_data_list)>0){ + foreach ($user_data_list as $key => $value) { + if(!in_array($value['b_time'],$record_arr1)){ + array_push($record_arr1,$value['b_time']); + $user_data_list[$key]['muscle'] = explode(',',$user_data_list[$key]['muscle'])[0]; + $user_data_list[$key]['fat_r'] = explode(',',$user_data_list[$key]['fat_r'])[0]; + array_push($record_arr2,$user_data_list[$key]); + } + } + foreach ($this->card_body_curve_arr as $key => $value) { $temporary_arr = []; $temporary_arr['title'] = $this->card_body_curve_arr2[$key]; @@ -322,9 +373,9 @@ class Card extends Base{ $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]); + foreach ($record_arr2 as $k => $v) { + array_push($temporary_arr['line']['categories'],$record_arr2[$k]['b_time']); + array_push($temporary_arr['line']['series'][0]['data'],$record_arr2[$k][$value]); } array_push($data_arr,$temporary_arr); } @@ -498,6 +549,10 @@ class Card extends Base{ ################################################card_modify_weight public function modify_weight_action($data){ + // $data['aud_id'] = 26; + // $data['weight'] = 60; + // dump($data); + // die; $result = Db::query(" select @@ -511,22 +566,29 @@ class Card extends Base{ where acbd.aud_id = ".$data['aud_id']." order by acbd.record_time desc "); - // $result = Db::table('app_card_body_data')->where(['id'=>$data['aud_id']])->order('record_time desc')->field('weight')->find(); if($data['type'] == 1){ // 修改目标体重 - $bhw_date = ['target_weight'=>$data['data']]; + $bhw_date = ['target_weight'=>$data['weight']]; }else if($data['type'] == 2){ // 修改原始体重 - $bhw_date = ['initial_weight'=>$data['data'],'initial_date' => $data['time']]; + $bhw_date = ['initial_weight'=>$data['weight'],'initial_date' => $data['time']]; + }else{ + return $this->msg(10005); } $result_update = Db::table('app_user_data')->where(['id'=>$data['aud_id']])->update($bhw_date); + // dump($result_update); + // dump($result[0]['weight']); + // dump($result); + if($result_update){ $target_current = $this->base_target_initial_cumulative_weight([ - 'weight'=>$result['weight'], - 'target_weight'=>$data['type'] == 1?$data['data']:$result[0]['target_weight'], - 'initial_weight'=>$data['type'] == 2?$data['data']:$result[0]['initial_weight'], - 'initial_date'=>$data['type'] == 2?$data['time']:$result[0]['initial_date'], + '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'], ]); + // die; + // dump($target_current); return $this->msg($target_current); }else{ return $this->msg(10002); @@ -536,35 +598,55 @@ class Card extends Base{ ################################################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 ; - } + // public function get_all_record_data($data,$type){ + // $return_result = []; + // if($type == 'group'){ + // $result = Db::query(" + // select + // id, + // CONVERT(varchar(10), record_time, 120) AS r_t, + // CONVERT(varchar(19), record_time, 120) AS record_time, + // height as v1, + // weight as v2, + // bmi as v3 + // from app_card_body_data + // 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"); + // foreach ($result as $key => $value) { + // 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']]; + // } + // } + // }else{ + // $result = Db::table('app_card_body_data')->where(['aud_id'=>$data['aud_id']])->field('id,record_time,height,weight,bmi')->order('record_time desc')->page($data['page'],$this->pagesize)->select(); + // $return_result['totalrows'] = Db::table('app_card_body_data')->where(['aud_id'=>$data['aud_id']])->count(); + // $return_result['rows'] = []; + // $return_result['pageno'] = $data['page']; + // $return_result['pagesize'] = $this->pagesize; + // $return_result['totalpage'] = ceil($return_result['totalrows']/$this->pagesize); + + + // foreach ($result as $key => $value) { + // array_push($return_result['rows'],[ + // 'id'=>$value['id'], + // 'v1_name'=>'身高', + // 'v1'=>$value['height'], + // 'v2_name'=>'体重', + // 'v2'=>$value['weight'], + // 'v3_name'=>'BMI', + // 'v3'=>$value['bmi'], + // ]); + // } + + + + // } + // return $this->msg($return_result); + // } ################################################################其他接口################################################################ @@ -578,56 +660,92 @@ class Card extends Base{ // 身体数据对比 public function body_data_contrast($data){ - - $data2 = explode(',',$data['id_arr']); + // dump($data); + $data2 = [$data['before_id'],$data['after_id']]; + $data3 = implode(',',$data2); // dump($data2); // die; $calculate_arr = []; $result = Db::query(" select acbd.id, - acbd.height, - acbd.weight, - acbd.bmi, + acbd.height_data as height, + acbd.weight_data as weight, + acbd.bmi_data as bmi, + 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.record_time, REPLACE(CONVERT(varchar(10), acbd.record_time, 23), '-', '/') AS b_time, aud.nickname, aud.gender, - aud.birthday + aud.birthday, + aud.head_pic from app_card_body_data as acbd left join app_user_data as aud on acbd.aud_id=aud.id - where acbd.id in (".$data['id_arr'].") + where acbd.id in ($data3) "); + // dump($result); + // die; if(!$result || count($result)<2){ return $this->msg(10004); } - foreach ($data2 as $key => $value) { - foreach ($result as $k => $v) { - if($value == $v['id']){ - array_push($calculate_arr, $v); - } + // 调整顺序 + foreach ($result as $key => $value) { + if($value['id'] == $data2[0]){ + $calculate_arr['before'] = $value; + }else{ + $calculate_arr['after'] = $value; } } + // dump($calculate_arr); + // die; + $return_data['time'] = $calculate_arr['before']['b_time'].'-'.$calculate_arr['after']['b_time']; + $return_data['headimg'] = $calculate_arr['before']['head_pic']; + $return_data['name'] = $calculate_arr['before']['nickname']; + $return_data['gender'] = $calculate_arr['before']['gender']; + $return_data['age'] = $this->calculate_age($calculate_arr['before']['birthday']); + $return_data['day'] = abs($this->daysSince($calculate_arr['before']['record_time'],$calculate_arr['after']['record_time'])); + + $return_data['list'] = []; - $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'] = '保密'; + foreach ($calculate_arr['before'] as $key => $value) { + if(in_array($key, ['height','weight','bmi','fat_r','fat_w','muscle','muscleval','water','proteinval','bone','protein','kcal','visceral','sfr'])){ + $before_arr = explode(',', $value); + $after_arr = explode(',', $calculate_arr['after'][$key]); + // $calculate_arr['before'][$key] = explode(',', $value); + + array_push($return_data['list'], [ + 'firstresult'=>[ + 'color'=>'', + 'level'=>$before_arr[1], + 'value'=>$before_arr[0], + 'title'=>$this->unit_name[$key], + 'unit'=>$this->unit_symbol[$key], + 'name'=>$key, + ], + 'secondresult'=>[ + 'color'=>'', + 'level'=>$after_arr[1], + 'value'=>$after_arr[0], + 'title'=>$this->unit_name[$key], + 'unit'=>$this->unit_symbol[$key], + 'name'=>$key, + ], + 'diffval'=>$before_arr[0]-$after_arr[0], + ]); + } } - // 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[0]['weight'],$calculate_arr[1]['weight'],1); - $return_data['reduce_fat'] = bcsub(explode(',',$calculate_arr[0]['fat_w'])[0],explode(',',$calculate_arr[1]['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[0]['height'],$calculate_arr[1]['height'],1),$calculate_arr[0]['height'],$calculate_arr[1]['height']]; - $return_data['execl_data']['weight'] = ['体重',bcsub($calculate_arr[0]['weight'],$calculate_arr[1]['weight'],1),$calculate_arr[0]['weight'],$calculate_arr[1]['weight']]; - $return_data['execl_data']['bmi'] = ['BMI',bcsub($calculate_arr[0]['bmi'],$calculate_arr[1]['bmi'],1),$calculate_arr[0]['bmi'],$calculate_arr[1]['bmi']]; + // dump($return_data); // die; return $this->msg($return_data); diff --git a/application/app/controller/Cardparts.php b/application/app/controller/Cardparts.php index a52186a..2b78726 100644 --- a/application/app/controller/Cardparts.php +++ b/application/app/controller/Cardparts.php @@ -12,14 +12,203 @@ use app\app\controller\Skip; class Cardparts extends Base{ - protected $color = ['#FF5656','#FFAB00','#5AD06D','#6492F6','#3967D6']; - protected $db_name = ['2'=>'app_card_body_data','6'=>'app_card_skip_data']; + protected $color = ['#FF5656','#FF5656','#5AD06D','#6492F6','#3967D6']; + // 脂肪率&脂肪量 + protected $fat_r_w = [ + 'man'=>[ + 'young'=>[ + ['min_val'=>'0','max_val'=>'10','text'=>'偏低','color'=>'#ff5656'], + ['min_val'=>'10','max_val'=>'21','text'=>'标准','color'=>'#ffab00'], + ['min_val'=>'21','max_val'=>'26','text'=>'偏高','color'=>'#5ad06d'], + ['min_val'=>'26','max_val'=>'50','text'=>'高','color'=>'#6492f6'], + ], + 'aging'=>[ + ['min_val'=>'0','max_val'=>'11','text'=>'偏低','color'=>'#ff5656'], + ['min_val'=>'11','max_val'=>'22','text'=>'标准','color'=>'#ffab00'], + ['min_val'=>'22','max_val'=>'27','text'=>'偏高','color'=>'#5ad06d'], + ['min_val'=>'27','max_val'=>'50','text'=>'高','color'=>'#6492f6'], + ], + ], + 'woman'=>[ + 'young'=>[ + ['min_val'=>'0','max_val'=>'20','text'=>'偏低','color'=>'#ff5656'], + ['min_val'=>'20','max_val'=>'31','text'=>'标准','color'=>'#ffab00'], + ['min_val'=>'31','max_val'=>'38','text'=>'偏高','color'=>'#5ad06d'], + ['min_val'=>'38','max_val'=>'80','text'=>'高','color'=>'#6492f6'], + ], + 'aging'=>[ + ['min_val'=>'0','max_val'=>'21','text'=>'偏低','color'=>'#ff5656'], + ['min_val'=>'21','max_val'=>'32','text'=>'标准','color'=>'#ffab00'], + ['min_val'=>'32','max_val'=>'39','text'=>'偏高','color'=>'#5ad06d'], + ['min_val'=>'39','max_val'=>'80','text'=>'高','color'=>'#6492f6'], + ] + ] + ]; + // 肌肉率&肌肉量 + protected $muscle_muscleval = [ + 'man'=>[ + ['min_val'=>'0','max_val'=>'40','text'=>'不足','color'=>'#ff5656'], + ['min_val'=>'40','max_val'=>'60','text'=>'标准','color'=>'#ffab00'], + ['min_val'=>'60','max_val'=>'100','text'=>'优','color'=>'#5ad06d'], + ], + 'woman'=>[ + ['min_val'=>'0','max_val'=>'30','text'=>'不足','color'=>'#ff5656'], + ['min_val'=>'30','max_val'=>'50','text'=>'标准','color'=>'#ffab00'], + ['min_val'=>'50','max_val'=>'100','text'=>'优','color'=>'#5ad06d'], + ] + ]; + // 水分 + protected $water = [ + 'man'=>[ + ['min_val'=>'0','max_val'=>'55','text'=>'不足','color'=>'#ff5656'], + ['min_val'=>'55','max_val'=>'65','text'=>'标准','color'=>'#ffab00'], + ['min_val'=>'65','max_val'=>'100','text'=>'优','color'=>'#5ad06d'], + ], + 'woman'=>[ + ['min_val'=>'0','max_val'=>'45','text'=>'不足','color'=>'#ff5656'], + ['min_val'=>'45','max_val'=>'60','text'=>'标准','color'=>'#ffab00'], + ['min_val'=>'60','max_val'=>'100','text'=>'优','color'=>'#5ad06d'], + ] + ]; + // 蛋白量&蛋白率 + protected $proteinval_protein = [ + 'man'=>[ + ['min_val'=>'0','max_val'=>'16','text'=>'不足','color'=>'#ff5656'], + ['min_val'=>'16','max_val'=>'18','text'=>'标准','color'=>'#ffab00'], + ['min_val'=>'18','max_val'=>'50','text'=>'优','color'=>'#5ad06d'], + ], + 'woman'=>[ + ['min_val'=>'0','max_val'=>'14','text'=>'不足','color'=>'#ff5656'], + ['min_val'=>'14','max_val'=>'16','text'=>'标准','color'=>'#ffab00'], + ['min_val'=>'16','max_val'=>'50','text'=>'优','color'=>'#5ad06d'], + ] + ]; + // 骨重 + protected $bone = [ + 'man'=>[ + '60'=>[ + ['min_val'=>'0','max_val'=>'2.4','text'=>'不足','color'=>'#ff5656'], + ['min_val'=>'2.4','max_val'=>'2.6','text'=>'标准','color'=>'#ffab00'], + ['min_val'=>'2.6','max_val'=>'6','text'=>'优','color'=>'#5ad06d'], + ], + '60_75'=>[ + ['min_val'=>'0','max_val'=>'2.8','text'=>'不足','color'=>'#ff5656'], + ['min_val'=>'2.8','max_val'=>'3','text'=>'标准','color'=>'#ffab00'], + ['min_val'=>'3','max_val'=>'6','text'=>'优','color'=>'#5ad06d'], + ], + '75'=>[ + ['min_val'=>'0','max_val'=>'3.1','text'=>'不足','color'=>'#ff5656'], + ['min_val'=>'3.1','max_val'=>'3.3','text'=>'标准','color'=>'#ffab00'], + ['min_val'=>'3.3','max_val'=>'7','text'=>'优','color'=>'#5ad06d'], + ], + ], + 'woman'=>[ + '45'=>[ + ['min_val'=>'0','max_val'=>'1.7','text'=>'不足','color'=>'#ff5656'], + ['min_val'=>'1.7','max_val'=>'1.9','text'=>'标准','color'=>'#ffab00'], + ['min_val'=>'1.9','max_val'=>'5','text'=>'优','color'=>'#5ad06d'], + ], + '45_60'=>[ + ['min_val'=>'0','max_val'=>'2.1','text'=>'不足','color'=>'#ff5656'], + ['min_val'=>'2.1','max_val'=>'2.3','text'=>'标准','color'=>'#ffab00'], + ['min_val'=>'2.3','max_val'=>'5','text'=>'优','color'=>'#5ad06d'], + ], + '60'=>[ + ['min_val'=>'0','max_val'=>'2.4','text'=>'不足','color'=>'#ff5656'], + ['min_val'=>'2.4','max_val'=>'2.6','text'=>'标准','color'=>'#ffab00'], + ['min_val'=>'2.6','max_val'=>'5','text'=>'优','color'=>'#5ad06d'], + ], + ] + ]; + + // 基础代谢 + protected $kcal = [ + 'man'=>[ + '3'=>[ + ['min_val'=>'0','max_val'=>'','text'=>'偏低','color'=>'#ff5656'], + ['min_val'=>'','max_val'=>'9999','text'=>'优','color'=>'#5ad06d'], + ], + '3_10'=>[ + ['min_val'=>'0','max_val'=>'','text'=>'偏低','color'=>'#ff5656'], + ['min_val'=>'','max_val'=>'9999','text'=>'优','color'=>'#5ad06d'], + ], + '10_18'=>[ + ['min_val'=>'0','max_val'=>'','text'=>'偏低','color'=>'#ff5656'], + ['min_val'=>'','max_val'=>'9999','text'=>'优','color'=>'#5ad06d'], + ], + '18_30'=>[ + ['min_val'=>'0','max_val'=>'','text'=>'偏低','color'=>'#ff5656'], + ['min_val'=>'','max_val'=>'9999','text'=>'优','color'=>'#5ad06d'], + ], + '30'=>[ + ['min_val'=>'0','max_val'=>'','text'=>'偏低','color'=>'#ff5656'], + ['min_val'=>'','max_val'=>'9999','text'=>'优','color'=>'#5ad06d'], + ], + ], + 'woman'=>[ + '3'=>[ + ['min_val'=>'0','max_val'=>'','text'=>'偏低','color'=>'#ff5656'], + ['min_val'=>'','max_val'=>'9999','text'=>'优','color'=>'#5ad06d'], + ], + '3_10'=>[ + ['min_val'=>'0','max_val'=>'','text'=>'偏低','color'=>'#ff5656'], + ['min_val'=>'','max_val'=>'9999','text'=>'优','color'=>'#5ad06d'], + ], + '10_18'=>[ + ['min_val'=>'0','max_val'=>'','text'=>'偏低','color'=>'#ff5656'], + ['min_val'=>'','max_val'=>'9999','text'=>'优','color'=>'#5ad06d'], + ], + '18_30'=>[ + ['min_val'=>'0','max_val'=>'','text'=>'偏低','color'=>'#ff5656'], + ['min_val'=>'','max_val'=>'9999','text'=>'优','color'=>'#5ad06d'], + ], + '30'=>[ + ['min_val'=>'0','max_val'=>'','text'=>'偏低','color'=>'#ff5656'], + ['min_val'=>'','max_val'=>'9999','text'=>'优','color'=>'#5ad06d'], + ], + ] + ]; + + // 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 + + + // 内脏指数 + protected $visceral = [ + 'man'=>[ + ['min_val'=>'0','max_val'=>'9','text'=>'标准','color'=>'#ff5656'], + ['min_val'=>'9','max_val'=>'14','text'=>'警惕','color'=>'#ffab00'], + ['min_val'=>'14','max_val'=>'50','text'=>'危险','color'=>'#5ad06d'], + ], + 'woman'=>[ + ['min_val'=>'0','max_val'=>'9','text'=>'标准','color'=>'#ff5656'], + ['min_val'=>'9','max_val'=>'14','text'=>'警惕','color'=>'#ffab00'], + ['min_val'=>'14','max_val'=>'50','text'=>'危险','color'=>'#5ad06d'], + ] + ]; + // 皮下脂肪 + protected $sfr = [ + 'man'=>[ + ['min_val'=>'0','max_val'=>'7','text'=>'标准','color'=>'#ff5656'], + ['min_val'=>'7','max_val'=>'15','text'=>'警惕','color'=>'#ffab00'], + ['min_val'=>'15','max_val'=>'50','text'=>'危险','color'=>'#5ad06d'], + ], + 'woman'=>[ + ['min_val'=>'0','max_val'=>'11','text'=>'标准','color'=>'#ff5656'], + ['min_val'=>'11','max_val'=>'17','text'=>'警惕','color'=>'#ffab00'], + ['min_val'=>'17','max_val'=>'50','text'=>'危险','color'=>'#5ad06d'], + ] + ]; + // 计算部分内容的横线标准以及说明文字 - public function hwb_standard($data){ + public function conversion_interval($data){ - // dump($data); } } \ No newline at end of file diff --git a/application/app/controller/Index.php b/application/app/controller/Index.php index 33da4a5..92e0533 100644 --- a/application/app/controller/Index.php +++ b/application/app/controller/Index.php @@ -13,9 +13,9 @@ class Index extends Base{ protected $db_name = ['2'=>'app_card_body_data','6'=>'app_card_skip_data','8'=>'app_card_vitalcapacity_data']; // protected $card_key = ['2'=>'body','6'=>'skip','8'=>'vitalcapacity']; protected $card_data = [ - '2'=>['身体数据','body_data',['height'=>['身高','cm'],'weight'=>['体重','公斤'],'bmi'=>['BMI','无']]], + '2'=>['身体数据','body',['height'=>['身高','cm'],'weight'=>['体重','公斤'],'bmi'=>['BMI','无']]], // 'skip'=>['跳绳数据',['height,weight,bmi,record_time']], - '8'=>['肺活量','vitalcapacity_data',['average'=>['本次数据','ml']]], + '8'=>['肺活量','vitalcapacity',['average'=>['本次数据','ml']]], ]; protected $data_name_unit = [ @@ -110,6 +110,10 @@ class Index extends Base{ if(count(input('post.')) > 0){ $data = input('post.'); } + // dump(input('post.')); + // dump(input('get.')); + // // dump($data); + // die; if(!array_key_exists('token', $data) || !array_key_exists('aud_id', $data)){ return $this->msg(10001); } @@ -127,14 +131,17 @@ class Index extends Base{ $result['card_order'] = []; $result['card_data_list'] = []; $result['target_current'] = $this->base_target_initial_cumulative_weight([]); + }else{ $result['card_order'] = explode(',',$result['card_order']); $calculation_results = $this->get_user_card_data_list($result,$result['id']); + // dump($calculation_results); $result['card_data_list'] = $calculation_results[0]; $result['target_current'] = $calculation_results[1]; } // base_target_initial_cumulative_weight - + // dump($result); + // die; $result['birthday'] = str_replace('-', '/', $result['birthday']); foreach ($result['card_data_list'] as $key => $value) { $result['card_data_list'][$key]['record_time'] = str_replace('-', '/', $result['card_data_list'][$key]['record_time']); @@ -233,18 +240,28 @@ class Index extends Base{ unset($db_arr[$value]); } } - // 添加目标体重于当前体重差数据 - if($data['initial_date'] == null){ - $target_current = $this->base_target_initial_cumulative_weight([]); - }else{ - $target_current = $this->base_target_initial_cumulative_weight([ - 'weight'=>$db_arr['2']['weight'], - 'target_weight'=>$data['target_weight'], - 'initial_weight'=>$data['initial_weight'], - 'initial_date'=>$data['initial_date'], - ]); - } + + // 添加目标体重于当前体重差数据 + $target_current = $this->base_target_initial_cumulative_weight([ + 'weight'=>$db_arr['2']['weight']>0?$db_arr['2']['weight']:0, + 'target_weight'=>$data['target_weight']>0?$data['target_weight']:0, + 'initial_weight'=>$data['initial_weight']>0?$data['initial_weight']:0, + 'initial_date'=>$data['initial_date']!=null?$data['initial_date']:0, + ]); + + // if($data['initial_date'] == null){ + // $target_current = $this->base_target_initial_cumulative_weight([]); + // }else{ + // $target_current = $this->base_target_initial_cumulative_weight([ + // 'weight'=>$db_arr['2']['weight'], + // 'target_weight'=>$data['target_weight'], + // 'initial_weight'=>$data['initial_weight'], + // 'initial_date'=>$data['initial_date'], + // ]); + // } + // dump($target_current); + // die; if(count($db_arr) <= 0){ // 没有数据,传递一个空的卡片 return [ @@ -291,6 +308,7 @@ class Index extends Base{ $temporary_arr['record_time'] = $value['record_time']; // $temporary_arr['value'] = $value['record_time']; $temporary_arr['card_name'] = $this->card_data[$value['acd_id']][0]; + $temporary_arr['card_key'] = $this->card_data[$value['acd_id']][1]; $temporary_arr['inside_data'] = []; if(array_key_exists($value['acd_id'],$this->card_data)){ diff --git a/application/app/controller/Pagingcontrast.php b/application/app/controller/Pagingcontrast.php new file mode 100644 index 0000000..33b58ef --- /dev/null +++ b/application/app/controller/Pagingcontrast.php @@ -0,0 +1,124 @@ +'app_card_body_data','6'=>'app_card_skip_data','8'=>'app_card_vitalcapacity_data']; + protected $request_name = ['2'=>'get_body_record_data','6'=>'app_card_skip_data','8'=>'app_card_vitalcapacity_data']; + protected $pagesize = 10; + + ################################################请求接口################################################ + ################################################请求接口################################################ + ################################################请求接口################################################ + // 获取记录信息(分组)(包含身体、跳绳、肺活量) + public function get_all_record_data_group($data = ['aud_id'=>'25','s_time'=>'2024-04-01 10:10:10','e_time'=>'2024-06-12 10:10:10','token'=>'0dafb98a10995c98b5a33b7d59d986ca','type'=>'2']){ + 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) || !array_key_exists('type', $data)){ + return $this->msg(10001); + } + if($this->token_time_validate($data['token']) === false){ + return $this->msg(20001); + } + unset($data['token']); + if(array_key_exists($data['type'],$this->request_name)){ + return $this->jump_transfer_interface($data,'group'); + }else{ + return $this->msg(10005); + } + } + // 获取记录信息(分页)(包含身体、跳绳、肺活量) + public function get_all_record_data_page($data = ['aud_id'=>'25','page'=>1,'token'=>'0dafb98a10995c98b5a33b7d59d986ca','type'=>'2']){ + if(count(input('post.')) > 0){ + $data = input('post.'); + } + if(!array_key_exists('aud_id', $data) || !array_key_exists('page', $data) || !array_key_exists('token', $data) || !array_key_exists('type', $data)){ + return $this->msg(10001); + } + if($this->token_time_validate($data['token']) === false){ + return $this->msg(20001); + } + unset($data['token']); + if(array_key_exists($data['type'],$this->request_name)){ + return $this->jump_transfer_interface($data,'page'); + }else{ + return $this->msg(10005); + } + } + + + + + ################################################请求接口################################################ + ################################################请求接口################################################ + ################################################请求接口################################################ + + public function jump_transfer_interface($data,$str){ + if($data['type'] == '2'){ + return $this->get_body_record_data($data,$str); + }else if($data['type'] == '6'){ + return $this->get_body_record_data($data,$str); + }else if($data['type'] == '8'){ + return $this->get_body_record_data($data,$str); + } + } + + ################################################业务部分################################################ + + // 获取记录信息列表(分组)-身体 + // 获取记录信息列表(分页)-身体 + public function get_body_record_data($data,$type){ + $return_result = []; + if($type == 'group'){ + $result = Db::query(" + select + id, + CONVERT(varchar(10), record_time, 120) AS r_t, + CONVERT(varchar(19), record_time, 120) AS record_time, + height as v1, + weight as v2, + bmi as v3 + from app_card_body_data + 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"); + foreach ($result as $key => $value) { + 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']]; + } + } + }else{ + $result = Db::table('app_card_body_data')->where(['aud_id'=>$data['aud_id']])->field('id,record_time,height,weight,bmi')->order('record_time desc')->page($data['page'],$this->pagesize)->select(); + $return_result['totalrows'] = Db::table('app_card_body_data')->where(['aud_id'=>$data['aud_id']])->count(); + $return_result['rows'] = []; + $return_result['pageno'] = $data['page']; + $return_result['pagesize'] = $this->pagesize; + $return_result['totalpage'] = ceil($return_result['totalrows']/$this->pagesize); + foreach ($result as $key => $value) { + array_push($return_result['rows'],[ + 'id'=>$value['id'], + 'v1_name'=>'身高', + 'v1'=>$value['height'], + 'v2_name'=>'体重', + 'v2'=>$value['weight'], + 'v3_name'=>'BMI', + 'v3'=>$value['bmi'], + ]); + } + } + return $this->msg($return_result); + } + +} \ No newline at end of file diff --git a/application/route.php b/application/route.php index 820f89d..257e2a3 100644 --- a/application/route.php +++ b/application/route.php @@ -36,6 +36,12 @@ Route::any('/admin/index', 'admin/index/index'); // // ################################################################APP接口################################################################ // // ################################################################APP接口################################################################ +// ################################公共接口################################ +// 注册接口12 +Route::any('/get_all_record_data_group', 'app/pagingcontrast/get_all_record_data_group'); +// 注册接口12 +Route::any('/get_all_record_data_page', 'app/pagingcontrast/get_all_record_data_page'); + // ################################登录接口################################ // 注册接口12 Route::any('/register_action', 'app/login/register_action'); @@ -67,8 +73,10 @@ Route::any('/card_manual_recording', 'app/card/card_manual_recording'); // 修改初始体重/目标体重 Route::any('/card_modify_weight', 'app/card/card_modify_weight'); -// 获取所有记录接口 -Route::any('/get_card_record_data', 'app/card/get_card_record_data'); +// 获取所有记录接口(分组) +Route::any('/get_card_record_data_group', 'app/card/get_card_record_data_group'); +// 获取所有记录接口(分页) +Route::any('/get_card_record_data_page', 'app/card/get_card_record_data_page'); // 删除某个历史数据 Route::any('/card_del_record_data', 'app/card/card_del_record_data'); diff --git a/route.php b/route.php deleted file mode 100644 index 3c460df..0000000 --- a/route.php +++ /dev/null @@ -1,80 +0,0 @@ - -// +---------------------------------------------------------------------- - -// var_dump(10); -use think\Route; -// // ################################################################下载################################################################ -// // ################################################################下载################################################################ - -//下载页 -Route::get('/download', 'app/download/demo'); -// // ################################################################管理后台################################################################ -// // ################################################################管理后台################################################################ - -// // // 管理后台登录 -// // Route::get('/admin/login', 'admin/login/login'); -// // Route::post('/admin/login_action', 'admin/login/login_action'); -// // // 管理后台首页 -// // Route::get('/admin/index', 'admin/index/index'); -// // Route::get('/admin/welcome', 'admin/index/welcome'); -// // // APP账号角色管理 -// // // APP账号数据列表 -// // Route::get('/admin/member_list', 'admin/member/member_list'); -// // Route::get('/admin/user_list', 'admin/member/user_list'); - - - -// // ################################################################APP接口################################################################ -// // ################################################################APP接口################################################################ -// ################################身体接口################################ -// 查找设备 -Route::any('/get_card_record_data', 'app/card/get_card_record_data'); -// // 今日数据 -// Route::any('/skip_today_data', 'app/skip/skip_today_data'); -// // 数据记录 -// Route::any('/skip_record_data', 'app/skip/skip_record_data'); -// // 运动曲线 -// Route::any('/skip_motion_curve', 'app/skip/skip_motion_curve'); -// Route::any('/generateRandomJumpData', 'app/skip/generateRandomJumpData'); -// ################################跳绳接口################################ -// 查找设备 -Route::any('/skip_device_check', 'app/skip/skip_device_check'); -// 今日数据 -Route::any('/skip_today_data', 'app/skip/skip_today_data'); -// 数据记录 -Route::any('/skip_record_data', 'app/skip/skip_record_data'); -// 运动曲线 -Route::any('/skip_motion_curve', 'app/skip/skip_motion_curve'); -Route::any('/generateRandomJumpData', 'app/skip/generateRandomJumpData'); - - -// Route::any('/skip_device_check', 'app/skip/skip_device_check'); -// Route::any('/skip_device_check', 'app/skip/skip_device_check'); -// Route::any('/skip_device_check', 'app/skip/skip_device_check'); -// Route::any('/skip_device_check', 'app/skip/skip_device_check'); -// Route::any('/skip_device_check', 'app/skip/skip_device_check'); -// Route::any('/skip_device_check', 'app/skip/skip_device_check'); -// Route::any('/skip_device_check', 'app/skip/skip_device_check'); -// Route::any('/skip_device_check', 'app/skip/skip_device_check'); -// Route::any('/skip_device_check', 'app/skip/skip_device_check'); -// Route::any('/skip_device_check', 'app/skip/skip_device_check'); -// Route::any('/skip_device_check', 'app/skip/skip_device_check'); - -// // ################################################################其它测试################################################################ -// // ################################################################其它测试################################################################ -Route::any('/generateRandomJumpData', 'app/skip/generateRandomJumpData'); -Route::any('/setdb', 'app/skip/setdb'); - -// 处理404错误 z -Route::miss(function(){ - return '404 Not Found(out)'; - // 或者你可以重定向到一个错误页面,或者进行其他处理 -});