重新建立0523

This commit is contained in:
tsf 2024-05-23 18:49:55 +08:00
parent 554e2c0a2c
commit 394eeaefb8
7 changed files with 592 additions and 213 deletions

View File

@ -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;
}

View File

@ -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'=>[
@ -68,6 +68,9 @@ class Card extends Base{
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){
// 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);
$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 ;
}
// 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);
}
}
}
$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'] = '女';
// 调整顺序
foreach ($result as $key => $value) {
if($value['id'] == $data2[0]){
$calculate_arr['before'] = $value;
}else{
$return_data['gender'] = '保密';
$calculate_arr['after'] = $value;
}
// 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($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'] = [];
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],
]);
}
}
// dump($return_data);
// die;
return $this->msg($return_data);

View File

@ -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);
}
}

View File

@ -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)){

View File

@ -0,0 +1,124 @@
<?php
namespace app\app\controller;
use think\Controller;
use think\Db;
use \think\Validate;
use app\app\controller\Calculatebody;
use app\app\controller\Skip;
class Pagingcontrast extends Base{
protected $color = ['#FF5656','#FFAB00','#5AD06D','#6492F6','#3967D6'];
protected $db_name = ['2'=>'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);
}
}

View File

@ -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');

View File

@ -1,80 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
// 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 Foundout';
// 或者你可以重定向到一个错误页面,或者进行其他处理
});