From 06b6672f470837ea9aad9f16d6e8884a9bd2798c Mon Sep 17 00:00:00 2001 From: tsf <460834639@qq.com> Date: Tue, 28 May 2024 18:43:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=950528?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/app/controller/Index.php | 87 ++++++++++++++++- application/app/controller/Login.php | 26 ++++- application/app/controller/Pagingcontrast.php | 89 +++++++++++++++-- application/app/controller/Vitalcapacity.php | 95 ++++++++++++++++++- application/route.php | 11 +++ 5 files changed, 295 insertions(+), 13 deletions(-) diff --git a/application/app/controller/Index.php b/application/app/controller/Index.php index ed3bc91..6f453aa 100644 --- a/application/app/controller/Index.php +++ b/application/app/controller/Index.php @@ -78,6 +78,52 @@ class Index extends Base{ return $this->msg(10002); } } + // 修改用户 + public function update_user_data($data = ['id'=>66,'nickname'=>'王小二','birthday'=>'2019-01-01','gender'=>1,'grade'=>'二年级','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){ + if(count(input('post.')) > 0){ + $data = input('post.'); + } + if(!array_key_exists('token', $data)){ + return $this->msg(10001); + } + if($this->token_time_validate($data['token']) === false){ + return $this->msg(20001); + } + unset($data['token']); + $verify_result = $this->verify_parameters2($data,'update'); + if(!is_array($verify_result)){ + return $this->msg(10001,$verify_result); + } + $id_val = $verify_result['id']; + unset($verify_result['id']); + $result = Db::table('app_user_data')->where(['id'=>$id_val])->update($verify_result); + if($result){ + return $this->msg([]); + }else{ + return $this->msg(10002); + } + } + + // 删除用户 + public function del_user_data($data = ['id'=>'26','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){ + if(count(input('post.')) > 0){ + $data = input('post.'); + } + 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']); + $result = Db::table('app_user_data')->where(['id'=>$data['id']])->update(['is_del'=>1]); + if($result){ + return $this->msg([]); + }else{ + return $this->msg(10002); + } + } + // 获取账号下用户列表 // $type 1获取列表,2获取详细信息 @@ -93,7 +139,7 @@ class Index extends Base{ return $this->msg(20001); } unset($data['token']); - $result = Db::table('app_user_data')->where(['aan_id'=>$data['aan_id']])->select(); + $result = Db::table('app_user_data')->where(['aan_id'=>$data['aan_id'],'is_del'=>0])->select(); // $result = Db::table('app_user_data')->where(['aan_id'=>$aan_id])->field('id,nickname')->select(); $temporary_data = []; if($data['type'] == 1){ @@ -217,6 +263,7 @@ class Index extends Base{ } + // 获取年级key列表 public function get_grade_list(){ $data = input('post.'); if(!array_key_exists('token', $data)){ @@ -227,8 +274,6 @@ class Index extends Base{ } return $this->msg($this->grade_list); } - - ################################获取账号下信息操作################################ // 获取账号下首页卡片的基础数据 @@ -415,6 +460,42 @@ class Index extends Base{ return $parameter; } + public function verify_parameters2($data,$type){ + // 设置验证 + $rule = [ + 'id' => 'require|number', + 'nickname' => 'require|chsAlpha', + 'birthday' => 'require|date', + 'gender' => 'require|number|in:0,1,2', + 'grade' => 'require', + ]; + $msg = [ + 'id.require' => '用户信息缺失', + 'nickname.require' => '昵称缺失', + 'birthday.require' => '生日缺失', + 'gender.require' => '性别缺失', + 'grade.require' => '年级缺失', + + 'id.number' => '用户信息格式错误', + 'nickname.chsAlpha' => '昵称只能是只能是汉字、字母', + 'birthday.date' => '生日信息格式错误', + 'gender.number' => '性别格式错误', + 'gender.in' => '性别信息错误', + ]; + $validate = new Validate($rule,$msg); + $result = $validate->check($data); + if(!$result){ + return $validate->getError(); + } + + $parameter['id'] = $data['id']; + $parameter['nickname'] = $data['nickname']; + $parameter['birthday'] = $data['birthday']; + $parameter['gender'] = $data['gender']; + $parameter['grade'] = $data['grade']; + $parameter['last_update_time'] = date('Y-m-d H:i:s'); + return $parameter; + } diff --git a/application/app/controller/Login.php b/application/app/controller/Login.php index 5825cec..07c8441 100644 --- a/application/app/controller/Login.php +++ b/application/app/controller/Login.php @@ -11,9 +11,9 @@ use PHPMailer\PHPMailer\PHPMailer; class Login extends Base{ protected $code_time = 3600; - ################################################################个人资料卡################################################################ - ################################################################个人资料卡################################################################ - ################################################################个人资料卡################################################################ + ################################################################接口################################################################ + ################################################################接口################################################################ + ################################################################接口################################################################ // 注册 public function register_action($data = ['data'=>18530934717,'password'=>'ceshi','code'=>'746119']){ @@ -122,6 +122,26 @@ class Login extends Base{ } } + // 退出登录操作 + public function user_quit_account($data=['token'=>'0dafb98a10995c98b5a33b7d59d986ca']){ + if(count(input('post.')) > 0){ + $data = input('post.'); + } + if(!array_key_exists('token', $data)){ + return $this->msg(10001); + } + if($this->token_time_validate($data['token']) === false){ + return $this->msg(20001); + } + cache($data['token'], NULL); + return $this->msg([]); + } + + ################################################################接口################################################################ + ################################################################接口################################################################ + ################################################################接口################################################################ + + // 发送验证码 手机/邮箱 /* 接口说明(发邮件) diff --git a/application/app/controller/Pagingcontrast.php b/application/app/controller/Pagingcontrast.php index 404da05..7574851 100644 --- a/application/app/controller/Pagingcontrast.php +++ b/application/app/controller/Pagingcontrast.php @@ -75,7 +75,7 @@ class Pagingcontrast extends Base{ return $this->jump_transfer_interface_detailed($data); } // 数据对比(包含身体、跳绳、肺活量) - public function get_all_card_data_contrast($data = ['before_id'=>'692','after_id'=>'691','type'=>'6','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){ + public function get_all_card_data_contrast($data = ['before_id'=>'11','after_id'=>'10','type'=>'8','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){ if(count(input('post.')) > 0){ $data = input('post.'); } @@ -141,7 +141,7 @@ class Pagingcontrast extends Base{ }else if($data['type'] == '6'){ return $this->get_skip_data_contrast($data); }else if($data['type'] == '8'){ - // return $this->get_body_record_data($data,$str); + return $this->get_vitalcapacity_data_contrast($data); } } @@ -266,8 +266,8 @@ class Pagingcontrast extends Base{ CONVERT(varchar(19), record_time, 120) AS record_time, one_val as v1, two_val as v2, - three_val as v3 - average_val as v4 + three_val as v3, + average_val as v4, score as v5 from app_card_vitalcapacity_data where aud_id='".$data['aud_id']."' @@ -282,7 +282,7 @@ class Pagingcontrast extends Base{ 'v2'=>$value['v2'], 'v3'=>$value['v3'], 'v4'=>$value['v4'], - 'v5'=>explode(',',$value['v5']), + 'v5'=>explode(',',$value['v5'])[0], 'v1_name'=>'第一次', 'v2_name'=>'第二次', 'v3_name'=>'第三次', @@ -306,7 +306,7 @@ class Pagingcontrast extends Base{ 'v2'=>$value['two_val'], 'v3'=>$value['three_val'], 'v4'=>$value['average_val'], - 'v5'=>explode(',',$value['score']), + 'v5'=>explode(',',$value['score'])[0], 'v1_name'=>'第一次', 'v2_name'=>'第二次', 'v3_name'=>'第三次', @@ -511,6 +511,83 @@ class Pagingcontrast extends Base{ } return $this->msg($return_data); } + // 数据对比 + public function get_vitalcapacity_data_contrast($data){ + // dump($data); + $data2 = [$data['before_id'],$data['after_id']]; + $data3 = implode(',',$data2); + $calculate_arr = []; + $result = Db::query(" + select + acsd.id, + acsd.one_val, + acsd.two_val, + acsd.three_val, + acsd.average_val, + acsd.score_val as score, + acsd.record_time, + REPLACE(CONVERT(varchar(10), acsd.record_time, 23), '-', '/') AS b_time, + aud.nickname, + aud.gender, + aud.birthday, + aud.head_pic + from app_card_vitalcapacity_data as acsd + left join app_user_data as aud on acsd.aud_id=aud.id + where acsd.id in ($data3) + and acsd.is_del = 0 + "); + + if(!$result || count($result)<2){ + return $this->msg(10004); + } + // 调整顺序 + foreach ($result as $key => $value) { + if($value['id'] == $data2[0]){ + $calculate_arr['before'] = $value; + }else{ + $calculate_arr['after'] = $value; + } + } + $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'] = []; + // dump($calculate_arr); + // die; + foreach ($calculate_arr['before'] as $key => $value) { + if(in_array($key, ['one_val','two_val','three_val','average_val','score_val'])){ + $before_arr = $value; + $after_arr = $calculate_arr['after'][$key]; + $temporary_arr = [ + 'firstresult'=>[ + 'color'=>'', + 'level'=>'', + 'value'=>$before_arr, + 'title'=>$this->request_result['8'][$key][0], + 'unit'=>$this->request_result['8'][$key][1], + 'name'=>$key, + ], + 'secondresult'=>[ + 'color'=>'', + 'level'=>'', + 'value'=>$after_arr, + 'title'=>$this->request_result['8'][$key][0], + 'unit'=>$this->request_result['8'][$key][1], + 'name'=>$key, + ], + 'diffval'=>bcsub($after_arr,$before_arr,2) + ]; + array_push($return_data['list'], $temporary_arr); + + } + + } + return $this->msg($return_data); + } diff --git a/application/app/controller/Vitalcapacity.php b/application/app/controller/Vitalcapacity.php index affc2be..a05c756 100644 --- a/application/app/controller/Vitalcapacity.php +++ b/application/app/controller/Vitalcapacity.php @@ -8,6 +8,7 @@ use think\Db; class Vitalcapacity extends Base{ protected $color = ['无效'=>'#FF5656','不及格'=>'#FF5656','及格'=>'#FFAB00','良好'=>'#5AD06D','优秀'=>'#6492F6','牛逼'=>'#3967D6']; + protected $curve_data_format = ['one_val'=>['第一次','容积/ml','#009DFF'],'two_val'=>['第二次','容积/ml','#009DFF'],'three_val'=>['第三次','容积/ml','#009DFF'],'average_val'=>['平均','容积/ml','#009DFF'],'score_val'=>['分数','分/分','#009DFF'],]; protected $standard0 = ['优秀','良好','及格','不及格','无效']; protected $standard = [ ['min_val'=>'90','max_val'=>'100','text'=>'优秀','color'=>'#6492F6'], @@ -65,6 +66,20 @@ class Vitalcapacity extends Base{ unset($data['token']); return $this->vitalcapacity_data_report_action($data); } + // 曲线 + public function vitalcapacity_curve_chart($data = ['aud_id'=>'25','time'=>'2024-05-25','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){ + if(count(input('post.')) > 0){ + $data = input('post.'); + } + if(!array_key_exists('aud_id', $data) || !array_key_exists('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']); + return $this->vitalcapacity_curve_chart_action($data); + } ################################################################业务################################################################ @@ -115,7 +130,85 @@ class Vitalcapacity extends Base{ } } - + + ################################################################vitalcapacity_save_record_data + public function vitalcapacity_curve_chart_action($data){ + $audid = $data['aud_id']; + $timeData = explode('-', $data['time']); + + // 根据$timeData的长度构建不同的查询条件 + $map = ['aud_id' => $audid]; + switch (count($timeData)) { + case 3: // 年月日 + $map['record_time'] = ['between', [date('Y-m-d 00:00:00', strtotime($timeData[0] . '-' . $timeData[1] . '-' . $timeData[2])), date('Y-m-d 23:59:59', strtotime($timeData[0] . '-' . $timeData[1] . '-' . $timeData[2]))]]; + break; + case 2: // 年月 + $map['record_time'] = ['between', [date('Y-m-01 00:00:00', strtotime($timeData[0] . '-' . $timeData[1])), date('Y-m-t 23:59:59', strtotime($timeData[0] . '-' . $timeData[1]))]]; + break; + case 1: // 年 + $map['record_time'] = ['between', [date('Y-01-01 00:00:00', strtotime($timeData[0])), date('Y-12-31 23:59:59', strtotime($timeData[0]))]]; + break; + default: + return $this->msg(10005); // 无效的时间数据格式 + } + + // 使用查询构造器进行查询 + $result = Db::name('app_card_vitalcapacity_data')->where($map)->field('one_val,two_val,three_val,average_val,score_val,aud_id,record_time,DATEPART(hour, record_time) AS hour,DATEPART(day, record_time) AS day,DATEPART(month, record_time) AS month')->order('record_time')->select(); + + $return_data = []; + if(count($timeData) == 3){ + $key_condition = 'hour'; + }else if(count($timeData) == 2){ + $key_condition = 'day'; + }else if(count($timeData) == 1){ + $key_condition = 'month'; + } + // dump($map); + // dump($result); + // die; + foreach ($this->curve_data_format as $key => $value) { + $temporary_arr['title'] = $value[0]; + $temporary_arr['key'] = $key; + $temporary_arr['line']['categories'] = []; + $temporary_arr['line']['series'][0]['color'] = $value[2]; + $temporary_arr['line']['series'][0]['name'] = $value[0]; + $temporary_arr['line']['series'][0]['data'] = []; + foreach ($result as $k => $v) { + if($key_condition == 'hour'){ + if(in_array($result[$k][$key_condition].'时',$temporary_arr['line']['categories'])){ + $num = array_search($result[$k][$key_condition].'时', $temporary_arr['line']['categories']); + $temporary_arr['line']['series'][0]['data'][$num] = bcadd($temporary_arr['line']['series'][0]['data'][$num],$result[$k][$key],2); + }else{ + array_push($temporary_arr['line']['categories'],$result[$k][$key_condition].'时'); + array_push($temporary_arr['line']['series'][0]['data'],$result[$k][$key]); + } + }else if($key_condition = 'day'){ + if(in_array($result[$k]['month'].'/'.$result[$k][$key_condition],$temporary_arr['line']['categories'])){ + $num = array_search($result[$k]['month'].'/'.$result[$k][$key_condition], $temporary_arr['line']['categories']); + $temporary_arr['line']['series'][0]['data'][$num] = bcadd($temporary_arr['line']['series'][0]['data'][$num],$result[$k][$key],2); + }else{ + array_push($temporary_arr['line']['categories'],$result[$k]['month'].'/'.$result[$k][$key_condition]); + array_push($temporary_arr['line']['series'][0]['data'],$result[$k][$key]); + } + + }else{ + if(in_array($result[$k]['month'].'月',$temporary_arr['line']['categories'])){ + $num = array_search($result[$k]['month'].'月', $temporary_arr['line']['categories']); + $temporary_arr['line']['series'][0]['data'][$num] = bcadd($temporary_arr['line']['series'][0]['data'][$num],$result[$k][$key],2); + }else{ + array_push($temporary_arr['line']['categories'],$result[$k]['month'].'月'); + array_push($temporary_arr['line']['series'][0]['data'],$result[$k][$key]); + } + } + } + // dump($temporary_arr); + array_push($return_data,$temporary_arr); + } + foreach ($return_data[1]['line']['series'][0]['data'] as $key => $value) { + $return_data[1]['line']['series'][0]['data'][$key] = bcdiv($return_data[1]['line']['series'][0]['data'][$key],60,2); + } + return $this->msg($return_data); + } diff --git a/application/route.php b/application/route.php index 4c081c9..fa14ddc 100644 --- a/application/route.php +++ b/application/route.php @@ -57,9 +57,16 @@ Route::any('/reset_password', 'app/login/reset_password'); Route::any('/login_action', 'app/login/login_action'); // 手机或者邮箱验证码接口接口 Route::any('/send_phone_email_code', 'app/login/send_phone_email_code'); +// 退出登录操作 +Route::any('/user_quit_account', 'app/login/user_quit_account'); + // ################################APP首页接口################################ // 创建用户 Route::any('/create_user_data', 'app/index/create_user_data'); +// 删除用户 +Route::any('/del_user_data', 'app/index/del_user_data'); +// 修改用户 +Route::any('/update_user_data', 'app/index/update_user_data'); // 获取账号下用户列表 Route::any('/get_user_card_list', 'app/index/get_user_card_list'); // 获取指定用户详细信息 @@ -70,6 +77,8 @@ Route::any('/get_card_all_list', 'app/index/get_card_all_list'); Route::any('/save_user_card_order', 'app/index/save_user_card_order'); // 获取年级列表 Route::any('/get_grade_list', 'app/index/get_grade_list'); + + // ################################身体数据卡片接口################################ // 报告页详情 Route::any('/card_data_detailed', 'app/card/card_data_detailed'); @@ -95,6 +104,8 @@ Route::any('/skip_del_record_data', 'app/skip/skip_del_record_data'); Route::any('/vitalcapacity_save_record_data', 'app/vitalcapacity/vitalcapacity_save_record_data'); // 报告数据(上次数据) Route::any('/vitalcapacity_data_report', 'app/vitalcapacity/vitalcapacity_data_report'); +// 曲线 +Route::any('/vitalcapacity_curve_chart', 'app/vitalcapacity/vitalcapacity_curve_chart'); // Route::any('/skip_device_check', 'app/skip/skip_device_check'); // Route::any('/skip_device_check', 'app/skip/skip_device_check');