This commit is contained in:
tsf 2024-04-29 16:42:30 +08:00
parent 375ca6797c
commit 9a8c7713e5
5 changed files with 153 additions and 42 deletions

View File

@ -8,10 +8,16 @@ use app\bj\controller\Common;
use think\Log; use think\Log;
use \think\Validate; use \think\Validate;
use app\app\controller\Calculatebody; use app\app\controller\Calculatebody;
use app\app\controller\Skip;
class Card extends Base{ class Card extends Base{
protected $color = ['#FF5656','#FFAB00','#5AD06D','#6492F6','#3967D6']; 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 $age_limit = 16; 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'=>'公斤','fat_r'=>'%','fat_w'=>'kg','muscle'=>'%','muscleval'=>'kg','water'=>'kg','bone'=>'kg','protein'=>'%','proteinval'=>'kg','kcal'=>'kcal','sfr'=>'%',];
protected $unit_name = ['score'=>'身体得分','height'=>'身高','weight'=>'体重','bmi'=>'BMI','fat_r'=>'脂肪率','fat_w'=>'脂肪量','muscle'=>'肌肉率','muscleval'=>'肌肉量','water'=>'水分','bone'=>'骨重','protein'=>'蛋白率','proteinval'=>'蛋白量','kcal'=>'基础代谢','visceral'=>'内脏指数','sfr'=>'皮下脂肪','body_level'=>'肥胖等级','body_type'=>'身体类型']; protected $unit_name = ['score'=>'身体得分','height'=>'身高','weight'=>'体重','bmi'=>'BMI','fat_r'=>'脂肪率','fat_w'=>'脂肪量','muscle'=>'肌肉率','muscleval'=>'肌肉量','water'=>'水分','bone'=>'骨重','protein'=>'蛋白率','proteinval'=>'蛋白量','kcal'=>'基础代谢','visceral'=>'内脏指数','sfr'=>'皮下脂肪','body_level'=>'肥胖等级','body_type'=>'身体类型'];
@ -157,16 +163,18 @@ class Card extends Base{
} }
// 获取记录信息列表 // 获取记录信息列表
function get_card_record_data($data = ['acd_id'=>'2','aud_id'=>'11','s_time'=>'2024-04-01 10:10:10','e_time'=>'2024-04-12 10:10:10']){ function get_card_record_data($data = ['acd_id'=>'6','aud_id'=>'11','s_time'=>'2024-04-01 10:10:10','e_time'=>'2024-04-12 10:10:10']){
if(!array_key_exists('acd_id', $data) || !array_key_exists('aud_id', $data) || !array_key_exists('s_time', $data) || !array_key_exists('e_time', $data)){ if(!array_key_exists('acd_id', $data) || !array_key_exists('aud_id', $data) || !array_key_exists('s_time', $data) || !array_key_exists('e_time', $data)){
return $this->msg(10001,'关键参数缺失'); return $this->msg(10001,'关键参数缺失');
} }
if($data['acd_id'] == '2'){ return $this->get_all_record_data($data);
return $this->get_body_record_data($data); // if($data['acd_id'] == '2'){
}else if($data['acd_id'] == '6'){
} // }else if($data['acd_id'] == '6'){
// $skip = new Skip();
// return $skip->get_skip_record_data($data);
// }
} }
// 数据对比 // 数据对比
@ -232,26 +240,25 @@ class Card extends Base{
return $this->msg(0,'success',$result_data); return $this->msg(0,'success',$result_data);
} }
// 获取身体数据记录信息列表 // 获取各类历史数据记录信息列表
function get_body_record_data($data){ function get_all_record_data($data){
$result = Db::query(" $result = Db::query("
select select
id, id,
CONVERT(varchar(10), record_time, 120) AS r_t, CONVERT(varchar(10), record_time, 120) AS r_t,
CONVERT(varchar(19), record_time, 120) AS record_time, CONVERT(varchar(19), record_time, 120) AS record_time,
height, ".$this->db_content[$data['acd_id']]."
weight, from ".$this->db_name[$data['acd_id']]."
bmi
from app_card_body_data
where aud_id='".$data['aud_id']."' where aud_id='".$data['aud_id']."'
and record_time between '".$data['s_time']."' and '".$data['e_time']."' and record_time between '".$data['s_time']."' and '".$data['e_time']."'
order by record_time desc"); order by record_time desc");
$return_result = []; $return_result = [];
foreach ($result as $key => $value) { foreach ($result as $key => $value) {
if(array_key_exists($value['r_t'], $return_result)){ if(array_key_exists($value['r_t'], $return_result)){
array_push($return_result[$value['r_t']], ['id'=>$value['id'],'height'=>$value['height'],'weight'=>$value['weight'],'bmi'=>$value['bmi']]); array_push($return_result[$value['r_t']], ['id'=>$value['id'],'v1'=>$value['v1'],'v2'=>$value['v2'],'v3'=>$value['v3']]);
}else{ }else{
$return_result[$value['r_t']] = [['id'=>$value['id'],'height'=>$value['height'],'weight'=>$value['weight'],'bmi'=>$value['bmi']]]; $return_result[$value['r_t']] = [['id'=>$value['id'],'v1'=>$value['v1'],'v2'=>$value['v2'],'v3'=>$value['v3']]];
} }
} }
dump(['original'=>$result,'optimization'=>$return_result]); dump(['original'=>$result,'optimization'=>$return_result]);

View File

@ -7,6 +7,6 @@ use think\Controller;
class Download extends Controller{ class Download extends Controller{
public function demo(){ public function demo(){
echo '你好'; echo '你好,这里就是下载页面';
} }
} }

View File

@ -103,28 +103,76 @@ class Skip extends Base{
} }
// 运动曲线 // 运动曲线
public function skip_motion_curve($data = ['aud_id'=>'','record_time'=>'','type'=>'year']){ // public function skip_motion_curve($data = ['aud_id'=>'11','time_data'=>['2024']]){
$time_data = ''; public function skip_motion_curve($data = ['aud_id'=>'11','time_data'=>['2024','04']]){
if($data['type'] == 'year'){ // public function skip_motion_curve($data = ['aud_id'=>'11','time_data'=>['2024','12','31']]){
$time_data = date('Y-m',strtotime($data['record_time'])); // 确保传入的$data是一个数组且包含所需的键
}else if($data['type'] == 'month'){ if (!is_array($data) || !isset($data['aud_id'], $data['time_data'])) {
$time_data = date('Y-m-d',strtotime($data['record_time'])); return $this->msg(10001,'参数格式错误'); // 返回false或抛出异常
}else if($data['type'] == 'day'){ }
$time_data = date('Y-m-d H:i:s',strtotime($data['record_time']));
$audId = $data['aud_id'];
$timeData = $data['time_data'];
// 根据$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(10002,'时间参数错误'); // 无效的时间数据格式
}
// 使用查询构造器进行查询
$result = Db::name('app_card_skip_data')->where($map)->field('jump_num,jump_time,jump_kcal,aud_id,record_time,jump_type,DATEPART(hour, record_time) AS hour,DATEPART(day, record_time) AS day,DATEPART(month, record_time) AS month')->order('record_time')->select();
$return_data = ['jump_num'=>['max'=>0,'list'=>[]],'jump_time'=>['max'=>0,'list'=>[]],'jump_kcal'=>['max'=>0,'list'=>[]]];
if(count($timeData) == 3){
$key_condition = 'hour';
}else if(count($timeData) == 2){
$key_condition = 'day';
}else if(count($timeData) == 1){
$key_condition = 'month';
}
// dump($result);
// die;
foreach ($result as $key => $value) {
if(!array_key_exists($value[$key_condition], $return_data['jump_num']['list'])){
$return_data['jump_num']['list'][$value[$key_condition]] = $value['jump_num'];
}else{ }else{
return $this->msg(10001,'type参数错误'); $return_data['jump_num']['list'][$value[$key_condition]] = $return_data['jump_num']['list'][$value[$key_condition]] + $value['jump_num'];
}
if(!array_key_exists($value[$key_condition], $return_data['jump_time']['list'])){
$return_data['jump_time']['list'][$value[$key_condition]] = $value['jump_time'];
}else{
$return_data['jump_time']['list'][$value[$key_condition]] = $return_data['jump_time']['list'][$value[$key_condition]] + $value['jump_time'];
}
if(!array_key_exists($value[$key_condition], $return_data['jump_kcal']['list'])){
$return_data['jump_kcal']['list'][$value[$key_condition]] = $value['jump_kcal'];
}else{
$return_data['jump_kcal']['list'][$value[$key_condition]] = $return_data['jump_kcal']['list'][$value[$key_condition]] + $value['jump_kcal'];
}
} }
$user_data = Db::table('app_card_skip_data')->where([
'CONVERT(varchar(10), record_time, 120)' => "",
'jump_num' => $data['num'],
'jump_time' => $data['time'],
'jump_kcal' => $data['kcal'],
'aud_id' => $data['aud_id'],
'acd_id' => 5,
'jump_type' => $data['num']
]);
dump($user_data); foreach ($return_data as $key => $value) {
foreach ($value['list'] as $k => $v) {
$return_data[$key]['max'] = $v>$return_data[$key]['max']?$v:$return_data[$key]['max'];
}
}
return $this->msg(0,'success',$return_data);
// dump($result);
// dump($return_data);
// die;
// return $result;
} }
@ -136,30 +184,37 @@ class Skip extends Base{
################################################################跳绳数据卡片接口################################################################ ################################################################跳绳数据卡片接口################################################################
################################################################跳绳数据卡片接口################################################################ ################################################################跳绳数据卡片接口################################################################
public function get_skip_record_data(){}
################################################################other################################################################ ################################################################other################################################################
################################################################other################################################################ ################################################################other################################################################
################################################################other################################################################ ################################################################other################################################################
// 数据记录 // 假随机数据插入
function generateRandomJumpData($n = 666) { public function generateRandomJumpData($n = 666) {
$return_data = []; $return_data = [];
$startDate = new \DateTime('2022-01-01 00:00:00'); $startDate = new \DateTime('2024-01-01 00:00:00');
$endDate = new \DateTime('2024-12-31 23:59:59'); $endDate = new \DateTime('2024-12-31 23:59:59');
// 为了保证在$startDate和$endDate之间随机生成日期先确定两个日期之间的天数差 // 为了保证在$startDate和$endDate之间随机生成日期先确定两个日期之间的天数差
$diff = $endDate->diff($startDate)->format('%a'); $diff = $endDate->diff($startDate)->format('%a');
$startTime = strtotime('2024-01-01 00:00:00');
$endTime = strtotime('2024-12-31 23:59:59');
for ($i = 0; $i < $n; $i++) { for ($i = 0; $i < $n; $i++) {
// 生成随机日期 // 生成随机日期
$randomDateTime = $startDate->modify(sprintf('+%d seconds', rand(0, $endDate->getTimestamp() - $startDate->getTimestamp())))->format('Y-m-d H:i:s'); $randomSeconds = random_int($startTime, $endTime);
// $randomDate = $startDate->modify(sprintf('+%d days', rand(0, $diff)))->format('Y-m-d'); $randomDateTime = date('Y-m-d H:i:s', $randomSeconds);
// 生成随机jump_num // 生成随机jump_num
$jump_num = rand(30, 70); $jump_num = rand(30, 70);
// 生成随机jump_time // 生成随机jump_time
$jump_time = rand(60, 200); $jump_time = rand(60, 150);
// 生成随机jump_kcal // 生成随机jump_kcal
$jump_kcal = rand(100, 400); $jump_kcal = rand(100, 400);
@ -184,12 +239,23 @@ class Skip extends Base{
'jump_type' => $jump_type 'jump_type' => $jump_type
]; ];
} }
// dump($return_data);
// die;
$user_data = Db::table('app_card_skip_data')->insertAll($return_data); $user_data = Db::table('app_card_skip_data')->insertAll($return_data);
dump($user_data); dump($user_data);
dump($return_data); dump($return_data);
die; die;
} }
// 设置数据库
public function setdb($n = 666) {
$num = [1,1];
for ($i=0; $i < 10; $i++) {
$num;
}
}

View File

@ -87,7 +87,7 @@ return [
// URL参数方式 0 按名称成对解析 1 按顺序解析 // URL参数方式 0 按名称成对解析 1 按顺序解析
'url_param_type' => 0, 'url_param_type' => 0,
// 是否开启路由 // 是否开启路由
'url_route_on' => false, 'url_route_on' => true,
// 路由使用完整匹配 // 路由使用完整匹配
'route_complete_match' => false, 'route_complete_match' => false,
// 路由配置文件(支持配置多个) // 路由配置文件(支持配置多个)

View File

@ -34,6 +34,44 @@ Route::get('/download', 'app/download/demo');
// // ################################################################APP接口################################################################ // // ################################################################APP接口################################################################
// // ################################################################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 // 处理404错误 z
Route::miss(function(){ Route::miss(function(){