测试版多语言版本,整体版,最后一版

This commit is contained in:
tiansf 2025-04-30 18:38:21 +08:00
parent 3791828a0b
commit 4a82d90a56
9 changed files with 748 additions and 182 deletions

View File

@ -616,20 +616,20 @@ class Card extends Base{
]); ]);
// 只有含有阻抗的记录才有数据参考 // 只有含有阻抗的记录才有数据参考
if($result[0]['record_type'] == 'by_device_adc'){ // if($result[0]['record_type'] == 'by_device_adc'){
if(count($result_end['cplist']['nutritionlist']) <= 0){ // if(count($result_end['cplist']['nutritionlist']) <= 0){
$result_end['literature'] = []; // $result_end['literature'] = [];
}else{ // }else{
$result_end['literature'] = [ $result_end['literature'] = [
'《中华人民共和国卫生行业标准WS 423-2013》', '《中华人民共和国卫生行业标准WS/T 423-2022》',
'《中华人民共和国卫生行业标准WS/T 612-2018》', '《中华人民共和国卫生行业标准WS/T 612-2018》',
'《中华人民共和国卫生行业标准WS/T1586-2018》', '《中华人民共和国卫生行业标准WS/T 586-2018》',
'《WHO 5~19岁身高/体重判定标准》', '《WHO 5~19岁身高/体重判定标准》',
]; ];
} // }
}else{ // }else{
$result_end['literature'] = []; // $result_end['literature'] = [];
} // }
// 加入曲线板块底部的减肥计划数据start // 加入曲线板块底部的减肥计划数据start
$result_end['target_current'] = $this->base_target_initial_cumulative_weight([ $result_end['target_current'] = $this->base_target_initial_cumulative_weight([
@ -892,7 +892,8 @@ class Card extends Base{
$data['e_time'] = $data['e_time'].' 23:59:59'; $data['e_time'] = $data['e_time'].' 23:59:59';
$user_data_list = Db::table($this->card_use_db_name['1']) $user_data_list = Db::table($this->card_use_db_name['1'])
->where('aud_id', $data['aud_id']) // ->where('aud_id', $data['aud_id'])
->where(['aud_id'=>$data['aud_id'],'is_del'=> 0])
->whereTime('record_time', 'between', [$data['s_time'], $data['e_time']]) ->whereTime('record_time', 'between', [$data['s_time'], $data['e_time']])
->field("record_type,record_time,REPLACE(CONVERT(varchar(10), record_time, 23), '-', '-') AS b_time,$card_body_curve_arr") ->field("record_type,record_time,REPLACE(CONVERT(varchar(10), record_time, 23), '-', '-') AS b_time,$card_body_curve_arr")
// ->field("record_time,REPLACE(CONVERT(varchar(10), record_time, 23), '-', '/') AS b_time,$card_body_curve_arr") // ->field("record_time,REPLACE(CONVERT(varchar(10), record_time, 23), '-', '/') AS b_time,$card_body_curve_arr")

View File

@ -171,7 +171,7 @@ class Skip extends Base{
} }
// 曲线 // 曲线
public function skip_curve_chart($data = ['aud_id'=>'9','time'=>'2024-10','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){ public function skip_curve_chart($data = ['aud_id'=>'144','time'=>'2025','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){
try { try {
// 你的业务逻辑 // 你的业务逻辑
if(count(input('post.')) > 0){ if(count(input('post.')) > 0){
@ -355,7 +355,7 @@ class Skip extends Base{
$timeData = explode('-', $data['time']); $timeData = explode('-', $data['time']);
// 根据$timeData的长度构建不同的查询条件 // 根据$timeData的长度构建不同的查询条件
$map = ['aud_id' => $audid]; $map = ['aud_id' => $audid,'is_del'=>0];
switch (count($timeData)) { switch (count($timeData)) {
case 3: // 年月日 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]))]]; $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]))]];

View File

@ -294,7 +294,9 @@ Route::any('/testedition/card_height_prediction', 'testapp/card/card_height_pred
// 身高预测接口 // 身高预测接口
Route::any('/card_bmi_evaluation', 'app/card/card_bmi_evaluation'); Route::any('/card_bmi_evaluation', 'app/card/card_bmi_evaluation');
Route::any('/testedition/card_bmi_evaluation', 'testapp/card/card_bmi_evaluation'); Route::any('/testedition/card_bmi_evaluation', 'testapp/card/card_bmi_evaluation');
// 身高预测接口
Route::any('/incremental_comparison', 'app/card/incremental_comparison');
Route::any('/testedition/incremental_comparison', 'testapp/card/incremental_comparison');
// ################################跳绳接口################################ // ################################跳绳接口################################

View File

@ -169,7 +169,7 @@ class Base extends Controller{
// 如果需要更精确的计算(包括小时、分钟等转换成的天数),可以使用以下方式: // 如果需要更精确的计算(包括小时、分钟等转换成的天数),可以使用以下方式:
// $totalSecondsDifference = $interval->format('%a') * 86400 + $interval->format('%h') * 3600 + $interval->format('%i') * 60 + $interval->format('%s'); // $totalSecondsDifference = $interval->format('%a') * 86400 + $interval->format('%h') * 3600 + $interval->format('%i') * 60 + $interval->format('%s');
// $daysDifference = floor($totalSecondsDifference / 86400); // 将总秒数转换为天数并取整 // $daysDifference = floor($totalSecondsDifference / 86400); // 将总秒数转换为天数并取整
// dump($user_login);
// 判断差异是否超过指定的天数 // 判断差异是否超过指定的天数
if ($daysDifference > $this->token_time) { if ($daysDifference > $this->token_time) {
// echo "超过 {$specifiedDays} 天"; // echo "超过 {$specifiedDays} 天";
@ -177,8 +177,8 @@ class Base extends Controller{
return ['state'=>false,'language'=>$user_login['language']]; return ['state'=>false,'language'=>$user_login['language']];
} else { } else {
// echo "未超过 {$specifiedDays} 天"; // echo "未超过 {$specifiedDays} 天";
$user_login = Db::table($this->base_use_db_name['6'])->where(['token'=>$token])->update(['login_time'=>date('Y-m-d H:i:s')]); $user_login_update = Db::table($this->base_use_db_name['6'])->where(['token'=>$token])->update(['login_time'=>date('Y-m-d H:i:s')]);
if($user_login){ if($user_login_update){
Log::record('用户尝试更新token时间token' . $token.',记录成功,最新的时间为'.date('Y-m-d H:i:s'), 'token_log'); Log::record('用户尝试更新token时间token' . $token.',记录成功,最新的时间为'.date('Y-m-d H:i:s'), 'token_log');
return ['state'=>true,'language'=>$user_login['language']]; return ['state'=>true,'language'=>$user_login['language']];
}else{ }else{
@ -224,6 +224,48 @@ class Base extends Controller{
$ageInMonthsPrecise = intval($ageInMonths + $partialMonth); $ageInMonthsPrecise = intval($ageInMonths + $partialMonth);
return $ageInMonthsPrecise; return $ageInMonthsPrecise;
} }
// 计算年龄(岁数和月数)
public function calculateAge($birthDate) {
// 创建出生日期和当前日期的DateTime对象
$birthDate = new \DateTime($birthDate);
$currentDate = new \DateTime();
// 计算年份差异
$yearDiff = $currentDate->format('Y') - $birthDate->format('Y');
// 计算月份差异
$monthDiff = $currentDate->format('m') - $birthDate->format('m');
// 如果当前月份小于出生月份,或者月份相同但当前日小于出生日
if ($monthDiff < 0 || ($monthDiff == 0 && $currentDate->format('d') < $birthDate->format('d'))) {
$yearDiff--;
$monthDiff += 12;
}
// 如果当前日小于出生日,需要再减一个月
if ($currentDate->format('d') < $birthDate->format('d')) {
$monthDiff--;
// 如果月份变为负数,调整年份和月份
if ($monthDiff < 0) {
$monthDiff += 12;
$yearDiff--;
}
}
// 确保年份和月份不为负数
$yearDiff = max(0, $yearDiff);
$monthDiff = max(0, $monthDiff);
// 构建结果数组
$result = [
'age_year' => $yearDiff,
'age_year_unit' => '岁',
'age_months' => $monthDiff,
'age_months_unit' => '个月',
];
return $result;
}
// 曲线页面-底部统计动作 // 曲线页面-底部统计动作
public function base_target_initial_cumulative_weight($data = []){ public function base_target_initial_cumulative_weight($data = []){
// 第一种:用户详情(所有数据都有) // 第一种:用户详情(所有数据都有)

View File

@ -21,6 +21,7 @@ class Card extends Base{
'9'=>'pc_weightstand_copy1', '9'=>'pc_weightstand_copy1',
'10'=>'pc_bmistand_copy1', '10'=>'pc_bmistand_copy1',
'11'=>'app_account_number_copy1', '11'=>'app_account_number_copy1',
'12'=>'ws_height',
]; ];
protected $age_limit = 16; protected $age_limit = 16;
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_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'=>'%',];
@ -90,7 +91,7 @@ class Card extends Base{
// 详细卡片信息 // 详细卡片信息
// $data = ['id'=>'2'] // $data = ['id'=>'2']
public function card_data_detailed($data=['aud_id'=>'144']){ public function card_data_detailed($data=['aud_id'=>'144']){
// try { try {
// 你的业务逻辑 // 你的业务逻辑
if(count(input('post.')) > 0){ if(count(input('post.')) > 0){
$data = input('post.'); $data = input('post.');
@ -104,46 +105,6 @@ class Card extends Base{
// $return_data; // $return_data;
$return_data = $this->get_user_body_data($data); $return_data = $this->get_user_body_data($data);
return $return_data;
// } catch (\Exception $e) {
// // 捕获异常
// $logContent["flie"] = $e->getFile();
// $logContent["line"] = $e->getLine();
// $logContent['all_content'] = "异常信息:\n";
// $logContent['all_content'] .= "消息: " . $e->getMessage() . "\n";
// $logContent['all_content'] .= "代码: " . $e->getCode() . "\n";
// $logContent['all_content'] .= "文件: " . $e->getFile() . "\n";
// $logContent['all_content'] .= "行号: " . $e->getLine() . "\n";
// $logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n";
// $this->record_api_log($data, $logContent, null);
// return $this->msg(99999);
// }
}
// 曲线页面-曲线接口
public function card_curve_chart($data = ['aud_id'=>'11','s_time'=>'2024-04-01','e_time'=>'2024-12-25','token'=>'caadd1be045a65f30b92aa805f1de54a']){
try {
// 你的业务逻辑
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);
}
unset($data['token']);
if(!$this->verify_data_is_ok($data['aud_id'],'intnum')){
return $this->msg(10005);
}
if(!$this->verify_data_is_ok($data['s_time'],'datetime')){
return $this->msg(10005);
}
if(!$this->verify_data_is_ok($data['e_time'],'datetime')){
return $this->msg(10005);
}
$return_data = $this->curve_chart_action($data);
// 成功
$this->record_api_log($data, null, $return_data);
return $return_data; return $return_data;
} catch (\Exception $e) { } catch (\Exception $e) {
// 捕获异常 // 捕获异常
@ -161,6 +122,46 @@ class Card extends Base{
} }
// 曲线页面-曲线接口
public function card_curve_chart($data = ['aud_id'=>'144','s_time'=>'2025-01-29','e_time'=>'2025-04-29','token'=>'caadd1be045a65f30b92aa805f1de54a']){
// try {
// 你的业务逻辑
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);
}
// unset($data['token']);
if(!$this->verify_data_is_ok($data['aud_id'],'intnum')){
return $this->msg(10005);
}
if(!$this->verify_data_is_ok($data['s_time'],'datetime')){
return $this->msg(10005);
}
if(!$this->verify_data_is_ok($data['e_time'],'datetime')){
return $this->msg(10005);
}
$return_data = $this->curve_chart_action($data);
// 成功
$this->record_api_log($data, null, $return_data);
return $return_data;
// } catch (\Exception $e) {
// // 捕获异常
// $logContent["flie"] = $e->getFile();
// $logContent["line"] = $e->getLine();
// $logContent['all_content'] = "异常信息:\n";
// $logContent['all_content'] .= "消息: " . $e->getMessage() . "\n";
// $logContent['all_content'] .= "代码: " . $e->getCode() . "\n";
// $logContent['all_content'] .= "文件: " . $e->getFile() . "\n";
// $logContent['all_content'] .= "行号: " . $e->getLine() . "\n";
// $logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n";
// $this->record_api_log($data, $logContent, null);
// return $this->msg(99999);
// }
}
// 手动记录 // 手动记录
// $data = ['id'=>'2','time'=>'1991-04-20 10:10:10','height'=>'15.1','weight'=>'75.1'] // $data = ['id'=>'2','time'=>'1991-04-20 10:10:10','height'=>'15.1','weight'=>'75.1']
// public function card_manual_recording($data = ['aud_id'=>'37','time'=>'2024-10-12','height'=>'144.7,cm','weight'=>'36.8,kg','token'=>'caadd1be045a65f30b92aa805f1de54a']){ // public function card_manual_recording($data = ['aud_id'=>'37','time'=>'2024-10-12','height'=>'144.7,cm','weight'=>'36.8,kg','token'=>'caadd1be045a65f30b92aa805f1de54a']){
@ -486,6 +487,42 @@ class Card extends Base{
// return $this->msg(99999); // return $this->msg(99999);
// } // }
} }
public function incremental_comparison($data = ['aud_id'=>'87','token'=>'caadd1be045a65f30b92aa805f1de54a']){
// try {
// 你的业务逻辑
if(count(input('post.')) > 0){
$data = input('post.');
}
if(!is_array($data)){
return $this->msg(10005);
}
if(!array_key_exists('aud_id', $data) || !array_key_exists('token', $data)){
return $this->msg(10001);
}
if(!$this->verify_data_is_ok($data['aud_id'],'intnum')){
return $this->msg(10005);
}
if(!$this->verify_data_is_ok($data['token'],'str')){
return $this->msg(10005);
}
$request_result = $this->incremental_comparison_action($data);
// $this->record_api_log($cbe_data, null, $request_result);
return $this->msg($request_result);
// } catch (\Exception $e) {
// // 捕获异常
// $logContent["flie"] = $e->getFile();
// $logContent["line"] = $e->getLine();
// $logContent['all_content'] = "异常信息:\n";
// $logContent['all_content'] .= "消息: " . $e->getMessage() . "\n";
// $logContent['all_content'] .= "代码: " . $e->getCode() . "\n";
// $logContent['all_content'] .= "文件: " . $e->getFile() . "\n";
// $logContent['all_content'] .= "行号: " . $e->getLine() . "\n";
// $logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n";
// $this->record_api_log($cbe_data, $logContent, null);
// return $this->msg(99999);
// }
}
################################################################业务接口################################################################ ################################################################业务接口################################################################
################################################################业务接口################################################################ ################################################################业务接口################################################################
@ -628,20 +665,20 @@ class Card extends Base{
]); ]);
// 只有含有阻抗的记录才有数据参考 // 只有含有阻抗的记录才有数据参考
if($result[0]['record_type'] == 'by_device_adc'){ // if($result[0]['record_type'] == 'by_device_adc'){
if(count($result_end['cplist']['nutritionlist']) <= 0){ // if(count($result_end['cplist']['nutritionlist']) <= 0){
$result_end['literature'] = []; // $result_end['literature'] = [];
}else{ // }else{
$result_end['literature'] = [ $result_end['literature'] = [
'《中华人民共和国卫生行业标准WS 423-2013》', '《中华人民共和国卫生行业标准WS/T 423-2022》',
'《中华人民共和国卫生行业标准WS/T 612-2018》', '《中华人民共和国卫生行业标准WS/T 612-2018》',
'《中华人民共和国卫生行业标准WS/T1586-2018》', '《中华人民共和国卫生行业标准WS/T 586-2018》',
'《WHO 5~19岁身高/体重判定标准》', '《WHO 5~19岁身高/体重判定标准》',
]; ];
} // }
}else{ // }else{
$result_end['literature'] = []; // $result_end['literature'] = [];
} // }
// 加入曲线板块底部的减肥计划数据start // 加入曲线板块底部的减肥计划数据start
$result_end['target_current'] = $this->base_target_initial_cumulative_weight([ $result_end['target_current'] = $this->base_target_initial_cumulative_weight([
@ -904,13 +941,14 @@ class Card extends Base{
// 曲线图动作函数 // 曲线图动作函数
public function curve_chart_action($data){ public function curve_chart_action($data){
$card_body_curve_arr = implode(',',$this->card_body_curve_arr); $card_body_curve_arr = implode(',',$this->card_body_curve_arr);
$data['s_time'] = $data['s_time'].' 00:00:00'; $data['s_time'] = $data['s_time'].' 00:00:00';
$data['e_time'] = $data['e_time'].' 23:59:59'; $data['e_time'] = $data['e_time'].' 23:59:59';
$user_data_list = Db::table($this->card_use_db_name['1']) $user_data_list = Db::table($this->card_use_db_name['1'])
->where('aud_id', $data['aud_id']) ->where(['aud_id'=>$data['aud_id'],'is_del'=> 0])
->whereTime('record_time', 'between', [$data['s_time'], $data['e_time']]) ->whereTime('record_time', 'between', [$data['s_time'], $data['e_time']])
->field("record_type,record_time,REPLACE(CONVERT(varchar(10), record_time, 23), '-', '-') AS b_time,$card_body_curve_arr") ->field("record_type,record_time,REPLACE(CONVERT(varchar(10), record_time, 23), '-', '-') AS b_time,$card_body_curve_arr")
// ->field("record_time,REPLACE(CONVERT(varchar(10), record_time, 23), '-', '/') AS b_time,$card_body_curve_arr") // ->field("record_time,REPLACE(CONVERT(varchar(10), record_time, 23), '-', '/') AS b_time,$card_body_curve_arr")
@ -956,7 +994,17 @@ class Card extends Base{
array_push($data_arr,$temporary_arr); array_push($data_arr,$temporary_arr);
} }
} }
return $this->msg($data_arr); // dump($data);
$language_data = new Language();
$user_language = Db::table($this->card_use_db_name['11'])
->where(['token'=>$data['token'],'is_del'=>0])
->field('language')
->find();
if(!$user_language['language']){
$user_language['language'] = 'zh-Hans';
}
$result_end = $language_data->handling_languages_from_multiple_countries($user_language['language'], $data_arr);
return $this->msg($result_end);
} }
################################################card_manual_recording ################################################card_manual_recording
@ -1320,11 +1368,388 @@ class Card extends Base{
// 处理key名称一致end // 处理key名称一致end
return $this->msg($data); return $this->msg($data);
} }
################################################incremental_comparison
public function incremental_comparison_action($data){
// 加 bcadd(,,20)
// 减 bcsub(,,20)
// 乘 bcmul(,,20)
// 除 bcdiv(,,20)
// protected $card_use_db_name = [
// '1'=>'app_card_body_data_copy1',
// '2'=>'app_user_data_copy1',
// '3'=>'pc_bmistand_copy1',
// '4'=>'pc_heightstand_copy1',
// '5'=>'pc_weightstand_copy1',
// '6'=>'pc_childrenprescription_copy1',
// '7'=>'pc_childprescriptionbyage_copy1',
// '8'=>'pc_heightstand_copy1',
// '9'=>'pc_weightstand_copy1',
// '10'=>'pc_bmistand_copy1',
// '11'=>'app_account_number_copy1',
// ];
$return_data = [];
$user_last_data = Db::table($this->card_use_db_name['1'])
->alias('a')
->join(''.$this->card_use_db_name['2'].' b','a.aud_id = b.id','LEFT')
->where('a.aud_id',$data['aud_id'])
->order('record_time desc')
->field('a.record_time as record_time,a.height_val,b.gender,b.nickname,b.gender,b.birthday')
->find();
// 设置基础数据
$return_data['nickname'] = $user_last_data['nickname'];
$return_data['gender'] = $user_last_data['gender'] == 1 ? '男' : '女';
$return_data['birthday'] = $user_last_data['birthday'];
$return_data['age'] = $this->calculateAge($user_last_data['birthday']);
// dump($return_data);
// die;
$return_data['age_year'] = $return_data['age']['age_year'];
$return_data['age_year_unit'] = $return_data['age']['age_year_unit'];
$return_data['age_months'] = $return_data['age']['age_months'];
$return_data['age_months_unit'] = $return_data['age']['age_months_unit'];
$return_data['height'] = $user_last_data['height_val'];
unset($return_data['age']);
$half_year = Db::table($this->card_use_db_name['1'])
->where(['aud_id'=>$data['aud_id']])
->whereTime('record_time', '>=', '-6 month')
->order('record_time desc')
->field('id,record_time,height_val')
->select();
$one_year = Db::table($this->card_use_db_name['1'])
->where(['aud_id'=>$data['aud_id']])
->whereTime('record_time', '>=', '-12 month')
->order('record_time desc')
->field('id,record_time,height_val')
->select();
$month_age = $this->calculateAgeInMonthsWithPrecision($user_last_data['birthday']);
$height_standard = Db::table($this->card_use_db_name['12'])
->where(['gender'=>$user_last_data['gender'],'age'=>['<=',$month_age]])
->order('age desc')
->find();
// dump($height_standard);
// 处理身体级别
$true_altitude_list = [
[
'maxvalue' => $height_standard['f1sd'],
'minvalue' => 0,
'text' => '矮',
'color' => '#ff5656',
'level' => 4
],
[
'maxvalue' => $height_standard['middle'],
'minvalue' => $height_standard['f1sd'],
'text' => '偏矮',
'color' => '#ffab00',
'level' => 2
],
[
'maxvalue' => $height_standard['z1sd'],
'minvalue' => $height_standard['middle'],
'text' => '标准',
'color' => '#5ad06d',
'level' => 1
],
[
'maxvalue' => $height_standard['z2sd'],
'minvalue' => $height_standard['z1sd'],
'text' => '偏高',
'color' => '#6492f6',
'level' => 3
],
[
'maxvalue' => 99999,
'minvalue' => $height_standard['z2sd'],
'text' => '高',
'color' => '#3967d6',
'level' => 5
]
];
$return_data['heightlevel'] = 1;
foreach ($true_altitude_list as $key => $value) {
// dump($return_data['height']);
// dump($value);
if($return_data['height'] >= $value['minvalue'] && $return_data['height'] < $value['maxvalue']){
// dump($value);
$return_data['heightlevel'] = $value['level'];
}
}
// die;
// 处理半年信息
if(count($half_year) >= 2){
$return_data['halfyearheight'] = bcsub($half_year[0]['height_val'],$half_year[count($half_year)-1]['height_val'],2);
}else{
$return_data['halfyearheight'] = 0;
}
// $height_standard_half = Db::table($this->card_use_db_name['12'])
// ->where(['gender'=>$user_last_data['gender'],'age'=>['<=',($month_age-6)<=0?0:$month_age-6]])
// ->order('age desc')
// ->find();
$height_standard_half = $this->count_increment_val($return_data,'half_year');
// dump($height_standard_half);
// die;
$halfyearstandlist = [
[
'val' => 0,
'text' => '偏低',
'color' => '#ffda69',
'level' => 2
],
[
'val' => $height_standard_half,
'text' => '正常',
'color' => '#5ad06d',
'level' => 1
]
];
for ($i=count($halfyearstandlist)-1; $i >=0 ; $i--) {
if($return_data['halfyearheight'] >= $halfyearstandlist[$i]['val']){
$return_data['halfyearheightlevel'] = $halfyearstandlist[$i]['level'];
break;
}
}
$return_data['halfyearstandheight'] = $halfyearstandlist[1]['val'];
// 处理一年信息
if(count($one_year) >= 2){
$return_data['yearheight'] = bcsub($one_year[0]['height_val'],$one_year[count($one_year)-1]['height_val'],2);
}else{
$return_data['yearheight'] = 0;
}
// $height_standard_year = Db::table($this->card_use_db_name['12'])
// ->where(['gender'=>$user_last_data['gender'],'age'=>['<=',($month_age-12)<=0?0:$month_age-12]])
// ->order('age desc')
// ->find();
$height_standard_half = $this->count_increment_val($return_data,'one_year');
$yearstandlist = [
[
'val' => 0,
'text' => '偏低',
'color' => '#ffda69',
'level' => 2
],
[
'val' => $height_standard_half,
'text' => '正常',
'color' => '#5ad06d',
'level' => 1
]
];
for ($i=count($yearstandlist)-1; $i >=0 ; $i--) {
if($return_data['yearheight'] >= $yearstandlist[$i]['val']){
$return_data['yearheightlevel'] = $yearstandlist[$i]['level'];
break;
}
}
$return_data['yearstandheight'] = $yearstandlist[1]['val'];
$return_data['f3sd'] = $height_standard['f3sd'];
$return_data['f2sd'] = $height_standard['f2sd'];
$return_data['f1sd'] = $height_standard['f1sd'];
$return_data['median'] = $height_standard['middle'];
$return_data['z1sd'] = $height_standard['z1sd'];
$return_data['z2sd'] = $height_standard['z2sd'];
$return_data['z3sd'] = $height_standard['z3sd'];
$return_data['list'] = $true_altitude_list;
$return_data['halfyearstandlist'] = $halfyearstandlist;
$return_data['yearstandlist'] = $yearstandlist;
// dump($return_data);
// die;
$language_data = new Language();
$zh_language = Db::table($this->card_use_db_name['11'])
->where(['token'=>$data['token'],'is_del'=>0])
->field('id,language')
->find();
if(!$zh_language['language']){
$zh_language['language'] = 'zh-Hans';
}
$result_end = $language_data->handling_languages_from_multiple_countries($zh_language['language'], $return_data);
return $result_end;
}
################################################################其他接口################################################################ ################################################################其他接口################################################################
################################################################其他接口################################################################ ################################################################其他接口################################################################
public function count_increment_val($user,$type){
// 加 bcadd(,,20)
// 减 bcsub(,,20)
// 乘 bcmul(,,20)
// 除 bcdiv(,,20)
// [
// 'min_age' => 0,
// 'max_age' => 1,
// 'boy_val' => '26.1',
// 'girl_val' => '25.3',
// ],
$height_add_list = [
[
'min_age' => 0,
'max_age' => 1,
'boy_val' => '26.1',
'girl_val' => '25.3',
],
[
'min_age' => 1,
'max_age' => 2,
'boy_val' => '12.0',
'girl_val' => '12.2',
],
[
'min_age' => 2,
'max_age' => 3,
'boy_val' => '8.3',
'girl_val' => '8.4',
],
[
'min_age' => 3,
'max_age' => 4,
'boy_val' => '7.3',
'girl_val' => '7.5',
],
[
'min_age' => 4,
'max_age' => 5,
'boy_val' => '7.2',
'girl_val' => '7.1',
],
[
'min_age' => 5,
'max_age' => 6,
'boy_val' => '6.4',
'girl_val' => '6.4',
],
[
'min_age' => 6,
'max_age' => 7,
'boy_val' => '7.8',
'girl_val' => '7.5',
],
[
'min_age' => 7,
'max_age' => 8,
'boy_val' => '5.2',
'girl_val' => '5.2',
],
[
'min_age' => 8,
'max_age' => 9,
'boy_val' => '5.1',
'girl_val' => '5.6',
],
[
'min_age' => 9,
'max_age' => 10,
'boy_val' => '5.0',
'girl_val' => '6.3',
],
[
'min_age' => 10,
'max_age' => 11,
'boy_val' => '6.8',
'girl_val' => '6.2',
],
[
'min_age' => 11,
'max_age' => 12,
'boy_val' => '6.2',
'girl_val' => '5.0',
],
[
'min_age' => 12,
'max_age' => 13,
'boy_val' => '8.0',
'girl_val' => '3.7',
],
[
'min_age' => 13,
'max_age' => 14,
'boy_val' => '5.4',
'girl_val' => '1.7',
],
[
'min_age' => 14,
'max_age' => 15,
'boy_val' => '4.6',
'girl_val' => '0.7',
],
[
'min_age' => 15,
'max_age' => 16,
'boy_val' => '1.6',
'girl_val' => '0.4',
],
[
'min_age' => 16,
'max_age' => 17,
'boy_val' => '0.8',
'girl_val' => '0.3',
],
[
'min_age' => 17,
'max_age' => 18,
'boy_val' => '0.0',
'girl_val' => '0.8',
],
];
$temporary_arr1 = [];
$temporary_arr0 = [];
$gender = $user['gender'] == '男'?'boy_val':'girl_val';
for ($i=0; $i < count($height_add_list); $i++) {
if($user['age_year'] >= $height_add_list[$i]['min_age'] && $user['age_year'] < $height_add_list[$i]['max_age']){
$temporary_arr1 = $height_add_list[$i];
if($i > 0){
$temporary_arr0 = $height_add_list[$i-1];
}
}
}
$monthly = bcdiv($temporary_arr1[$gender],12,20);
if($type == 'half_year'){
if($user['age_months'] >= 6){
$return_data = bcmul($monthly,6,2);
return $return_data;
}else{
if(count($temporary_arr0) > 0){
$return_data = bcmul($monthly,$user['age_months'],20);
$return_data = bcadd($return_data,bcmul(bcdiv($temporary_arr0[$gender],12,20),bcsub(6,$user['age_months'],20),20),2);
return $return_data;
}else{
$return_data = bcmul($monthly,6,2);
return $return_data;
}
}
}else{
if($user['age_months'] < 12){
if(count($temporary_arr0) > 0){
$return_data = bcmul($monthly,$user['age_months'],20);
$return_data = bcadd($return_data,bcmul(bcdiv($temporary_arr0[$gender],12,20),bcsub(12,$user['age_months'],20),20),2);
return $return_data;
}else{
$return_data = bcmul($monthly,12,2);
return $return_data;
}
}else{
$return_data = bcmul($monthly,12,2);
return $return_data;
}
}
}
public function body_temporary_use($age,$gender){ public function body_temporary_use($age,$gender){
$return_data = [ $return_data = [
'height'=>'', 'height'=>'',

View File

@ -5,6 +5,7 @@ namespace app\testapp\controller;
use think\Db; use think\Db;
use \think\Validate; use \think\Validate;
use app\testapp\controller\Language; use app\testapp\controller\Language;
use think\Cache;
// use ip2region\Ip2Region; // use ip2region\Ip2Region;
class Index extends Base{ class Index extends Base{
@ -102,7 +103,7 @@ class Index extends Base{
################################################################个人资料卡################################################################ ################################################################个人资料卡################################################################
// 检测版本及判断是否登录失效 // 检测版本及判断是否登录失效
public function login_invalid_version($data = ['token'=>'caadd1be045a65f30b92aa805f1de54a']){ public function login_invalid_version($data = ['token'=>'2d4ea9b3f44b169ddf64b2f3d2725ceb','is_wechat'=>false]){
// try { // try {
// 获取客户端IP // 获取客户端IP
$ip = request()->ip(); $ip = request()->ip();
@ -138,6 +139,9 @@ class Index extends Base{
if(!array_key_exists('token', $data)){ if(!array_key_exists('token', $data)){
return $this->msg(10001); return $this->msg(10001);
} }
if(!array_key_exists('is_wechat', $data)){
$data['is_wechat'] = false;
}
$result = Db::table($this->index_use_db_name['1'])->order('is_del,id desc')->find(); $result = Db::table($this->index_use_db_name['1'])->order('is_del,id desc')->find();
if($result){ if($result){
$version = $result['version_num_original']; $version = $result['version_num_original'];
@ -146,13 +150,30 @@ class Index extends Base{
$version = ''; $version = '';
$url = ''; $url = '';
} }
$user_token_state = $this->token_time_validate($data['token']);
$user_token_state = $this->token_time_validate($data['token']);
// dump($user_token_state);
$language_data = $this->pd_language($user_token_state['language'],$isSupportedLanguage,$language); $language_data = $this->pd_language($user_token_state['language'],$isSupportedLanguage,$language);
if($user_token_state['state'] === false){ if($user_token_state['state'] === false){
return $this->msg(-1,'未登录',['version'=>$version,'url'=>$url,'language'=>$language_data,'language_arr'=>$this->process_Language()]); return $this->msg(-1,'未登录',[
'version'=>$version,
'url'=>$url,
'language'=>$data['is_wechat']?'zh-Hans':$language_data['user_language'],
'ip_address'=>$language_data['address'],
'language_arr'=>$this->process_Language()
]);
}else{ }else{
return $this->msg(['version'=>$version,'url'=>$url,'language'=>$language_data,'language_arr'=>$this->process_Language()]); if($data['is_wechat'] == true){
$result = Db::table($this->index_use_db_name['7'])->where(['token'=>$data['token']])->update(['language'=>'zh-Hans']);
}
return $this->msg([
'version'=>$version,
'url'=>$url,
'language'=>$data['is_wechat']?'zh-Hans':$language_data['user_language'],
'ip_address'=>$language_data['address'],
'language_arr'=>$this->process_Language()
]);
} }
// } catch (\Exception $e) { // } catch (\Exception $e) {
@ -1144,12 +1165,17 @@ class Index extends Base{
public function pd_language($user_language,$isSupportedLanguage,$language){ public function pd_language($user_language,$isSupportedLanguage,$language){
if(!$user_language){ if(!$user_language){
if($isSupportedLanguage){ if($isSupportedLanguage){
$result = $language; // $result = $language;
$result['user_language'] = null;
$result['address'] = $language;
}else{ }else{
$result = 'zh-Hans'; // 默认语言为中文 $result = null; // 默认语言为中文
$result['user_language'] = null;
$result['address'] = null;
} }
}else{ }else{
$result = $user_language; $result['user_language'] = $user_language;
$result['address'] = $language;
} }
return $result; return $result;
} }

View File

@ -26,6 +26,9 @@ class Language extends Base
protected $languageMap = [ protected $languageMap = [
'en' => [ 'en' => [
'操作成功' => 'Success', '操作成功' => 'Success',
'男' => 'Male',
'女' => 'Female',
'年龄' => 'Age',
'体重' => 'Weight', '体重' => 'Weight',
'身高' => 'Height', '身高' => 'Height',
'消瘦' => 'Slim', '消瘦' => 'Slim',
@ -37,12 +40,14 @@ class Language extends Base
'BMI是身体质量指数,是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。' => "BMI is the body mass index, which is currently a commonly used international standard for measuring the degree of body fat, thinness, and health.", 'BMI是身体质量指数,是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。' => "BMI is the body mass index, which is currently a commonly used international standard for measuring the degree of body fat, thinness, and health.",
'公斤' => "kg", '公斤' => "kg",
'CM' => "cm", 'CM' => "cm",
'岁' => " years,",
'个月' => " months",
'年' => "-", '年' => "-",
'月' => "-", '月' => "-",
'日' => "", '日' => "",
'身体得分' => "Physical score", '身体得分' => "Physical score",
'分' => "score", '分' => "score",
'身体类型' => "body type", '身体类型' => "Body Type",
'健美肌肉型' => "Bodybuilding muscle type", '健美肌肉型' => "Bodybuilding muscle type",
'低' => "Low", '低' => "Low",
'偏低' => "Slightly low", '偏低' => "Slightly low",
@ -51,34 +56,50 @@ class Language extends Base
'高' => "High", '高' => "High",
'矮' => "Short", '矮' => "Short",
'偏矮' => "Slightly short", '偏矮' => "Slightly short",
'脂肪率' => "Body Fat Percentage", // '脂肪率' => "Body Fat Percentage",
'脂肪率' => "Fat%",
'体脂率是指身体成分中,脂肪组织所占的比率。测量体脂率比单纯的只测量体重更能反映我们身体的脂肪水平(肥胖程度)。' => "Body fat percentage refers to the proportion of fat tissue in body composition. Measuring it provides a more accurate reflection of body fat levels (degree of obesity) than weight measurement alone.", '体脂率是指身体成分中,脂肪组织所占的比率。测量体脂率比单纯的只测量体重更能反映我们身体的脂肪水平(肥胖程度)。' => "Body fat percentage refers to the proportion of fat tissue in body composition. Measuring it provides a more accurate reflection of body fat levels (degree of obesity) than weight measurement alone.",
'脂肪量' => "Fat Mass", // '脂肪量' => "Fat Mass",
'脂肪量' => "Fat",
'人体脂肪的重量' => "Body Fat Weight", '人体脂肪的重量' => "Body Fat Weight",
'肌肉率' => "Muscle Percentage", // '肌肉率' => "Muscle Percentage",
'肌肉率' => "Muscle%",
'优' => "Excellent", '优' => "Excellent",
'根据人体肌肉总量和人体体重、身高等相结合得到的人体的一个比例值,这个值的范围决定一个人的身体健康状况以及力量的多少。' => "Muscle percentage is a ratio derived from total muscle mass, body weight, height, etc. Its range determines a person's health status and strength level.", '根据人体肌肉总量和人体体重、身高等相结合得到的人体的一个比例值,这个值的范围决定一个人的身体健康状况以及力量的多少。' => "Muscle percentage is a ratio derived from total muscle mass, body weight, height, etc. Its range determines a person's health status and strength level.",
'肌肉量' => "Muscle Mass", // '肌肉量' => "Muscle Mass",
'肌肉量' => "MM",
'不足' => "Insufficient", '不足' => "Insufficient",
'肌肉量=实际体重*肌肉率' => "Muscle Mass = Actual Weight × Muscle Percentage", '肌肉量=实际体重*肌肉率' => "Muscle Mass = Actual Weight × Muscle Percentage",
'水分' => "Body Water", // '水分' => "Body Water",
'水分' => "TBW%",
'指人体内水分比例。' => "Refers to the proportion of water in the human body.", '指人体内水分比例。' => "Refers to the proportion of water in the human body.",
// '蛋白量' => "Protein Mass",
'蛋白量' => "Protein Mass", '蛋白量' => "Protein Mass",
'蛋白量=实际体重*蛋白率' => "Protein Mass = Actual Weight × Protein Percentage", '蛋白量=实际体重*蛋白率' => "Protein Mass = Actual Weight × Protein Percentage",
'骨重' => "Bone Mass", // '骨重' => "Bone Mass",
'骨重' => "BMC",
'单位体积内,骨组织、骨矿物质(钙、磷等)和骨基质(骨胶原、蛋白率、无机盐等等)含量,骨量代表它们骨骼健康的情况。' => "Bone mass refers to the content of bone tissue, minerals (calcium, phosphorus, etc.), and bone matrix (collagen, proteins, inorganic salts, etc.) per unit volume, reflecting skeletal health.", '单位体积内,骨组织、骨矿物质(钙、磷等)和骨基质(骨胶原、蛋白率、无机盐等等)含量,骨量代表它们骨骼健康的情况。' => "Bone mass refers to the content of bone tissue, minerals (calcium, phosphorus, etc.), and bone matrix (collagen, proteins, inorganic salts, etc.) per unit volume, reflecting skeletal health.",
'蛋白率' => "Protein Percentage", // '蛋白率' => "Protein Percentage",
'蛋白率' => "Protein%",
'人体内蛋白率含量。' => "The proportion of protein in the human body.", '人体内蛋白率含量。' => "The proportion of protein in the human body.",
'基础代谢' => "Basal Metabolic Rate (BMR)", // '基础代谢' => "Basal Metabolic Rate (BMR)",
'基础代谢' => "BMR",
'指人体在清醒而又极端安静的状态下,不受肌肉活动、环境温度、食物及精神紧张等影响时的能量代谢率' => "The energy expenditure rate when the body is awake, completely at rest, and unaffected by muscle activity, ambient temperature, food intake, or mental stress.", '指人体在清醒而又极端安静的状态下,不受肌肉活动、环境温度、食物及精神紧张等影响时的能量代谢率' => "The energy expenditure rate when the body is awake, completely at rest, and unaffected by muscle activity, ambient temperature, food intake, or mental stress.",
'内脏指数' => "Visceral Fat Index", // '内脏指数' => "Visceral Fat Index",
'内脏指数' => "VFL",
'警惕' => "Caution", '警惕' => "Caution",
'危险' => "Danger", '危险' => "Danger",
'内脏脂肪指数' => "Visceral Fat Level", // '内脏脂肪指数' => "Visceral Fat Level",
'皮下脂肪' => "Subcutaneous Fat", '内脏脂肪指数' => "VFI",
// '皮下脂肪' => "Subcutaneous Fat",
'皮下脂肪' => "SubQ Fat",
'皮下脂脂肪就是贮存于皮下的脂肪组织人体的脂肪大约有2/3贮存在皮下组织' => "Subcutaneous fat refers to adipose tissue stored under the skin. About two-thirds of body fat is stored subcutaneously.", '皮下脂脂肪就是贮存于皮下的脂肪组织人体的脂肪大约有2/3贮存在皮下组织' => "Subcutaneous fat refers to adipose tissue stored under the skin. About two-thirds of body fat is stored subcutaneously.",
// '肥胖等级' => "Obesity Level",
'肥胖等级' => "Obesity Level", '肥胖等级' => "Obesity Level",
'体重不足' => "Underweight", '体重不足' => "Underweight",
'去脂体重' => "Lean Body Mass",
'体型' => "Body Type",
'体龄' => "Biological Age",
'肥胖的程度,表现实际体重与理想体重的差距。肥胖等级是判定肥胖症的一个指标。' => "Obesity level indicates the disparity between actual and ideal weight, serving as a diagnostic criterion for obesity.", '肥胖的程度,表现实际体重与理想体重的差距。肥胖等级是判定肥胖症的一个指标。' => "Obesity level indicates the disparity between actual and ideal weight, serving as a diagnostic criterion for obesity.",
'孩子可能存在营养不良对于处在生长发育期的孩子而言蛋白质、碳水化合物、维生素和矿物质这四类营养素非常重要。建议补充足够的蛋白质、锌、钙、铁、维生素D、赖氨酸等营养。建议补充含鸡内金山楂膏健脾开胃类药食同源食物。' => "The child may be malnourished: For growing children, protein, carbohydrates, vitamins, and minerals are critical. Ensure adequate intake of protein, zinc, calcium, iron, vitamin D, lysine, etc. Consider herbal foods like chicken gizzard-hawthorn paste to improve digestion and appetite.", '孩子可能存在营养不良对于处在生长发育期的孩子而言蛋白质、碳水化合物、维生素和矿物质这四类营养素非常重要。建议补充足够的蛋白质、锌、钙、铁、维生素D、赖氨酸等营养。建议补充含鸡内金山楂膏健脾开胃类药食同源食物。' => "The child may be malnourished: For growing children, protein, carbohydrates, vitamins, and minerals are critical. Ensure adequate intake of protein, zinc, calcium, iron, vitamin D, lysine, etc. Consider herbal foods like chicken gizzard-hawthorn paste to improve digestion and appetite.",
@ -165,11 +186,13 @@ class Language extends Base
'坚持适当、科学的跳跃运动能够科学地增加学生体重,能够改善学生体重过低的情况;同时运动会消耗能量并加速胃肠蠕动,这会使孩子的食欲大开,再配合均衡的营养有利于孩子增重。' => 'Consistent, properly-designed jumping exercises can scientifically increase students\' body mass and correct underweight conditions. Concurrently, physical training consumes energy and enhances digestive motility, stimulating appetite which - when supported by nutritional balance - promotes healthy weight gain.', '坚持适当、科学的跳跃运动能够科学地增加学生体重,能够改善学生体重过低的情况;同时运动会消耗能量并加速胃肠蠕动,这会使孩子的食欲大开,再配合均衡的营养有利于孩子增重。' => 'Consistent, properly-designed jumping exercises can scientifically increase students\' body mass and correct underweight conditions. Concurrently, physical training consumes energy and enhances digestive motility, stimulating appetite which - when supported by nutritional balance - promotes healthy weight gain.',
'《中华人民共和国卫生行业标准WS 423-2013》' => "《Chinese Health Industry Standard WS 423-2013》", '《中华人民共和国卫生行业标准WS/T 423-2022》' => "《Chinese Health Industry Standard WS 423-2013》",
'《中华人民共和国卫生行业标准WS/T 612-2018》' => "《Chinese Health Industry Standard WS/T 612-2018》", '《中华人民共和国卫生行业标准WS/T 612-2018》' => "《Chinese Health Industry Standard WS/T 612-2018》",
'《中华人民共和国卫生行业标准WS/T1586-2018》' => "《Chinese Health Industry Standard WS/T 1586-2018》", '《中华人民共和国卫生行业标准WS/T 586-2018》' => "《Chinese Health Industry Standard WS/T 1586-2018》",
'《WHO 5~19岁身高/体重判定标准》' => "《WHO Growth Reference for Children and Adolescents (519 Years)》", '《WHO 5~19岁身高/体重判定标准》' => "《WHO Growth Reference for Children and Adolescents (519 Years)》",
'头围' => "Head Circumference", // '头围' => "Head Circumference",
'头围' => "HC",
'头围是指绕头部一周的最大长度,头围的大小与脑的发育密切相关' => "Head circumference refers to the maximum length around the head. Its measurement is closely related to brain development.", '头围是指绕头部一周的最大长度,头围的大小与脑的发育密切相关' => "Head circumference refers to the maximum length around the head. Its measurement is closely related to brain development.",
'跳绳数量或者分钟、秒钟值必须为整数' => 'The number of jump ropes, minutes, or seconds must be integers.', '跳绳数量或者分钟、秒钟值必须为整数' => 'The number of jump ropes, minutes, or seconds must be integers.',
'跳绳数不能小于等于0' => 'The jump rope count cannot be less than or equal to 0.', '跳绳数不能小于等于0' => 'The jump rope count cannot be less than or equal to 0.',
@ -196,6 +219,8 @@ class Language extends Base
'之前' => 'Before', '之前' => 'Before',
'之后' => 'After', '之后' => 'After',
'异常' => 'Abnormal', '异常' => 'Abnormal',
'至' => 'To',
'无' => 'null',
], ],
// 可以添加更多语言映射 // 可以添加更多语言映射
]; ];

View File

@ -21,7 +21,7 @@ class Login extends Base{
################################################################接口################################################################ ################################################################接口################################################################
// 注册 // 注册
public function register_action($data = ['data'=>13408173311,'password'=>'123','code'=>'746119']){ public function register_action($data = ['data'=>13408173311,'password'=>'123','code'=>'746119','language'=>'en']){
try { try {
// 你的业务逻辑 // 你的业务逻辑
// 验证是否前段发送过来的数据 // 验证是否前段发送过来的数据
@ -29,7 +29,7 @@ class Login extends Base{
$data = input('post.'); $data = input('post.');
} }
// 验证数据项是否完整 // 验证数据项是否完整
if(!array_key_exists('data', $data) || !array_key_exists('password', $data) || !array_key_exists('code', $data)){ if(!array_key_exists('data', $data) || !array_key_exists('password', $data) || !array_key_exists('code', $data) || !array_key_exists('language', $data)){
return $this->msg(10001); return $this->msg(10001);
} }
// 验证数据值是否合规 // 验证数据值是否合规
@ -42,6 +42,9 @@ class Login extends Base{
if(!$this->verify_data_is_ok($data['code'],'num')){ if(!$this->verify_data_is_ok($data['code'],'num')){
return $this->msg(10005); return $this->msg(10005);
} }
if(!$this->verify_data_is_ok($data['language'],'str')){
return $this->msg(10005);
}
// 验证是手机还是邮箱 // 验证是手机还是邮箱
$montage_data = $this->is_tel_email($data['data']); $montage_data = $this->is_tel_email($data['data']);
if($montage_data == false){ if($montage_data == false){
@ -73,9 +76,10 @@ class Login extends Base{
$set_data['create_time'] = date('Y-m-d H:i:s'); $set_data['create_time'] = date('Y-m-d H:i:s');
$set_data['login_time'] = date('Y-m-d H:i:s'); $set_data['login_time'] = date('Y-m-d H:i:s');
$set_data['token'] = md5($data['data'].$this->create_random_string(12).time()); $set_data['token'] = md5($data['data'].$this->create_random_string(12).time());
$set_data['language'] = $data['language'];
$result = Db::table($this->login_use_db_name['1'])->insertGetId($set_data); $result = Db::table($this->login_use_db_name['1'])->insertGetId($set_data);
if($result){ if($result){
$return_data = $this->msg(['token'=>$set_data['token'],'aan_id'=>$result]); $return_data = $this->msg(['token'=>$set_data['token'],'aan_id'=>$result,'language'=>$data['language']]);
}else{ }else{
$return_data = $this->msg(10002); $return_data = $this->msg(10002);
} }
@ -165,13 +169,13 @@ class Login extends Base{
} }
// 登录 // 登录
public function login_action($data = ['data'=>'18530934717','validate_data'=>'0932','type'=>'login','validate_type'=>'password']){ public function login_action($data = ['data'=>'18530934717','validate_data'=>'0932','type'=>'login','validate_type'=>'password','language'=>'en']){
try { try {
// 你的业务逻辑 // 你的业务逻辑
if(count(input('post.')) > 0){ if(count(input('post.')) > 0){
$data = input('post.'); $data = input('post.');
} }
if(!array_key_exists('data', $data) || !array_key_exists('validate_data', $data) || !array_key_exists('validate_type', $data)){ if(!array_key_exists('data', $data) || !array_key_exists('validate_data', $data) || !array_key_exists('validate_type', $data) || !array_key_exists('language', $data)){
return $this->msg(10001); return $this->msg(10001);
} }
// 检测是否为手机 // 检测是否为手机
@ -179,17 +183,19 @@ class Login extends Base{
if($montage_data == false){ if($montage_data == false){
return $this->msg(10005); return $this->msg(10005);
} }
if(!$this->verify_data_is_ok($data['language'],'str')){
return $this->msg(10005);
}
$verify_result[$montage_data] = $data['data']; $verify_result[$montage_data] = $data['data'];
$verify_result['is_del'] = 0; $verify_result['is_del'] = 0;
// 检测校验途径 // 检测校验途径
if($data['validate_type'] == 'code'){ if($data['validate_type'] == 'code'){
$code_name = $data['data']; $code_name = $data['data'];
if($this->check_code($code_name,$data['validate_data']) === true){ if($this->check_code($code_name,$data['validate_data']) === true){
$result = Db::table($this->login_use_db_name['1'])->where($verify_result)->field('id,token')->find(); $result = Db::table($this->login_use_db_name['1'])->where($verify_result)->field('id,token,language')->find();
if($result){ if($result){
Db::table($this->login_use_db_name['1'])->where($verify_result)->update(['login_time'=>date('Y-m-d H:i:s')]); Db::table($this->login_use_db_name['1'])->where($verify_result)->update(['login_time'=>date('Y-m-d H:i:s'),'language'=>$data['language']]);
$return_data = $this->msg(['token'=>$result['token'],'aan_id'=>$result['id']]); $return_data = $this->msg(['token'=>$result['token'],'aan_id'=>$result['id'],'language'=>$data['language']]);
}else{ }else{
$set_data['password'] = ''; $set_data['password'] = '';
$set_data[$montage_data] = $data['data']; $set_data[$montage_data] = $data['data'];
@ -198,9 +204,10 @@ class Login extends Base{
$set_data['create_time'] = date('Y-m-d H:i:s'); $set_data['create_time'] = date('Y-m-d H:i:s');
$set_data['login_time'] = date('Y-m-d H:i:s'); $set_data['login_time'] = date('Y-m-d H:i:s');
$set_data['token'] = md5($data['data'].$this->create_random_string(12).time()); $set_data['token'] = md5($data['data'].$this->create_random_string(12).time());
$set_data['language'] = $data['language'];
$result = Db::table($this->login_use_db_name['1'])->insertGetId($set_data); $result = Db::table($this->login_use_db_name['1'])->insertGetId($set_data);
if($result){ if($result){
$return_data = $this->msg(['token'=>$set_data['token'],'aan_id'=>$result],'登录成功'); $return_data = $this->msg(['token'=>$set_data['token'],'aan_id'=>$result,'language'=>$data['language']],'登录成功');
}else{ }else{
$return_data = $this->msg(10002); $return_data = $this->msg(10002);
} }
@ -210,7 +217,7 @@ class Login extends Base{
} }
}else if($data['validate_type'] == 'password'){ }else if($data['validate_type'] == 'password'){
// $verify_result['password'] = $data['validate_data']; // $verify_result['password'] = $data['validate_data'];
$result = Db::table($this->login_use_db_name['1'])->where($verify_result)->field('id,token,password')->find(); $result = Db::table($this->login_use_db_name['1'])->where($verify_result)->field('id,token,password,language')->find();
if($result){ if($result){
if($result['password'] == ''){ if($result['password'] == ''){
$return_data = $this->msg(10003,'该账户未设密码,请用验证码登录'); $return_data = $this->msg(10003,'该账户未设密码,请用验证码登录');
@ -218,9 +225,8 @@ class Login extends Base{
if($data['validate_data'] != $result['password']){ if($data['validate_data'] != $result['password']){
$return_data = $this->msg(10003,'账号密码错误'); $return_data = $this->msg(10003,'账号密码错误');
}else{ }else{
Db::table($this->login_use_db_name['1'])->where($verify_result)->update(['login_time'=>date('Y-m-d H:i:s'),'language'=>$data['language']]);
Db::table($this->login_use_db_name['1'])->where($verify_result)->update(['login_time'=>date('Y-m-d H:i:s')]); $return_data = $this->msg(['token'=>$result['token'],'aan_id'=>$result['id'],'language'=>$data['language']],'登录成功');
$return_data = $this->msg(['token'=>$result['token'],'aan_id'=>$result['id']],'登录成功');
} }
}else{ }else{
$return_data = $this->msg(10003,'账号未注册,请先注册'); $return_data = $this->msg(10003,'账号未注册,请先注册');

View File

@ -13,6 +13,7 @@ class Pagingcontrast extends Base{
'2'=>'app_card_skip_data_copy1', '2'=>'app_card_skip_data_copy1',
'3'=>'app_card_vitalcapacity_data_copy1', '3'=>'app_card_vitalcapacity_data_copy1',
'4'=>'app_user_data_copy1', '4'=>'app_user_data_copy1',
'5'=>'app_account_number_copy1',
]; ];
protected $request_result = [ protected $request_result = [
'2'=>['height'=>['身高','cm'],'weight'=>['体重','kg'],'age'=>['年龄','岁'],'bmi'=>['BMI',''],'head'=>['头围',''],'fat_w'=>['脂肪量','kg'],'fat_r'=>['脂肪率','%'],'muscleval'=>['肌肉量','kg'],'muscle'=>['肌肉率','%'],'proteinval'=>['蛋白量','kg'],'protein'=>['蛋白率','%'],'water'=>['水分',''],'bone'=>['骨重','kg'],'visceral'=>['内脏指数',''],'sfr'=>['皮下脂肪','%'],'kcal'=>['基础代谢','kcal'],'un_fat_w_weight'=>['去脂体重','kg'],'body_age'=>['体龄',''],'body_level'=>['肥胖等级',''],'body_type'=>['体型','']], '2'=>['height'=>['身高','cm'],'weight'=>['体重','kg'],'age'=>['年龄','岁'],'bmi'=>['BMI',''],'head'=>['头围',''],'fat_w'=>['脂肪量','kg'],'fat_r'=>['脂肪率','%'],'muscleval'=>['肌肉量','kg'],'muscle'=>['肌肉率','%'],'proteinval'=>['蛋白量','kg'],'protein'=>['蛋白率','%'],'water'=>['水分',''],'bone'=>['骨重','kg'],'visceral'=>['内脏指数',''],'sfr'=>['皮下脂肪','%'],'kcal'=>['基础代谢','kcal'],'un_fat_w_weight'=>['去脂体重','kg'],'body_age'=>['体龄',''],'body_level'=>['肥胖等级',''],'body_type'=>['体型','']],
@ -25,7 +26,7 @@ class Pagingcontrast extends Base{
################################################请求接口################################################ ################################################请求接口################################################
// 获取记录信息(分组)(包含身体、跳绳、肺活量) // 获取记录信息(分组)(包含身体、跳绳、肺活量)
public function get_all_record_data_group($data = ['aud_id'=>'202','s_time'=>'2024-04-01','e_time'=>'2025-06-12','type'=>'2']){ public function get_all_record_data_group($data = ['aud_id'=>'202','s_time'=>'2024-04-01','e_time'=>'2025-06-12','type'=>'2']){
try { // try {
// 你的业务逻辑 // 你的业务逻辑
if(count(input('post.')) > 0){ if(count(input('post.')) > 0){
$data = input('post.'); $data = input('post.');
@ -52,25 +53,26 @@ class Pagingcontrast extends Base{
} }
// 成功 // 成功
$this->record_api_log($data, null, $return_data); $this->record_api_log($data, null, $return_data);
return $return_data; return $return_data;
} catch (\Exception $e) { // } catch (\Exception $e) {
// 捕获异常 // // 捕获异常
$logContent["flie"] = $e->getFile(); // $logContent["flie"] = $e->getFile();
$logContent["line"] = $e->getLine(); // $logContent["line"] = $e->getLine();
$logContent['all_content'] = "异常信息:\n"; // $logContent['all_content'] = "异常信息:\n";
$logContent['all_content'] .= "消息: " . $e->getMessage() . "\n"; // $logContent['all_content'] .= "消息: " . $e->getMessage() . "\n";
$logContent['all_content'] .= "代码: " . $e->getCode() . "\n"; // $logContent['all_content'] .= "代码: " . $e->getCode() . "\n";
$logContent['all_content'] .= "文件: " . $e->getFile() . "\n"; // $logContent['all_content'] .= "文件: " . $e->getFile() . "\n";
$logContent['all_content'] .= "行号: " . $e->getLine() . "\n"; // $logContent['all_content'] .= "行号: " . $e->getLine() . "\n";
$logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n"; // $logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n";
$this->record_api_log($data, $logContent, null); // $this->record_api_log($data, $logContent, null);
return $this->msg(99999); // return $this->msg(99999);
} // }
} }
// 获取记录信息(分页)(包含身体、跳绳、肺活量) // 获取记录信息(分页)(包含身体、跳绳、肺活量)
public function get_all_record_data_page($data = ['aud_id'=>'144','page'=>1,'token'=>'caadd1be045a65f30b92aa805f1de54a','type'=>'8']){ public function get_all_record_data_page($data = ['aud_id'=>'144','page'=>1,'token'=>'caadd1be045a65f30b92aa805f1de54a','type'=>'8']){
try { // try {
// 你的业务逻辑 // 你的业务逻辑
if(count(input('post.')) > 0){ if(count(input('post.')) > 0){
$data = input('post.'); $data = input('post.');
@ -96,24 +98,24 @@ class Pagingcontrast extends Base{
// 成功 // 成功
$this->record_api_log($data, null, $return_data); $this->record_api_log($data, null, $return_data);
return $return_data; return $return_data;
} catch (\Exception $e) { // } catch (\Exception $e) {
// 捕获异常 // // 捕获异常
$logContent["flie"] = $e->getFile(); // $logContent["flie"] = $e->getFile();
$logContent["line"] = $e->getLine(); // $logContent["line"] = $e->getLine();
$logContent['all_content'] = "异常信息:\n"; // $logContent['all_content'] = "异常信息:\n";
$logContent['all_content'] .= "消息: " . $e->getMessage() . "\n"; // $logContent['all_content'] .= "消息: " . $e->getMessage() . "\n";
$logContent['all_content'] .= "代码: " . $e->getCode() . "\n"; // $logContent['all_content'] .= "代码: " . $e->getCode() . "\n";
$logContent['all_content'] .= "文件: " . $e->getFile() . "\n"; // $logContent['all_content'] .= "文件: " . $e->getFile() . "\n";
$logContent['all_content'] .= "行号: " . $e->getLine() . "\n"; // $logContent['all_content'] .= "行号: " . $e->getLine() . "\n";
$logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n"; // $logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n";
$this->record_api_log($data, $logContent, null); // $this->record_api_log($data, $logContent, null);
return $this->msg(99999); // return $this->msg(99999);
} // }
} }
// 获取详细历史数据信息(包含身体、跳绳、肺活量) // 获取详细历史数据信息(包含身体、跳绳、肺活量)
public function get_all_record_detailed_information($data = ['id'=>'3802','type'=>'2','aan_id'=>'1841','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){ public function get_all_record_detailed_information($data = ['id'=>'3802','type'=>'2','aan_id'=>'1841','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){
try { // try {
// 你的业务逻辑 // 你的业务逻辑
if(count(input('post.')) > 0){ if(count(input('post.')) > 0){
$data = input('post.'); $data = input('post.');
@ -127,28 +129,28 @@ class Pagingcontrast extends Base{
if(!$this->verify_data_is_ok($data['type'],'intnum')){ if(!$this->verify_data_is_ok($data['type'],'intnum')){
return $this->msg(10005); return $this->msg(10005);
} }
unset($data['token']); // unset($data['token']);
$return_data = $this->jump_transfer_interface_detailed($data); $return_data = $this->jump_transfer_interface_detailed($data);
// 成功 // 成功
$this->record_api_log($data, null, $return_data); $this->record_api_log($data, null, $return_data);
return $return_data; return $return_data;
} catch (\Exception $e) { // } catch (\Exception $e) {
// 捕获异常 // // 捕获异常
$logContent["flie"] = $e->getFile(); // $logContent["flie"] = $e->getFile();
$logContent["line"] = $e->getLine(); // $logContent["line"] = $e->getLine();
$logContent['all_content'] = "异常信息:\n"; // $logContent['all_content'] = "异常信息:\n";
$logContent['all_content'] .= "消息: " . $e->getMessage() . "\n"; // $logContent['all_content'] .= "消息: " . $e->getMessage() . "\n";
$logContent['all_content'] .= "代码: " . $e->getCode() . "\n"; // $logContent['all_content'] .= "代码: " . $e->getCode() . "\n";
$logContent['all_content'] .= "文件: " . $e->getFile() . "\n"; // $logContent['all_content'] .= "文件: " . $e->getFile() . "\n";
$logContent['all_content'] .= "行号: " . $e->getLine() . "\n"; // $logContent['all_content'] .= "行号: " . $e->getLine() . "\n";
$logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n"; // $logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n";
$this->record_api_log($data, $logContent, null); // $this->record_api_log($data, $logContent, null);
return $this->msg(99999); // return $this->msg(99999);
} // }
} }
// 数据对比(包含身体、跳绳、肺活量) // 数据对比(包含身体、跳绳、肺活量)
public function get_all_card_data_contrast($data = ['before_id'=>'171','after_id'=>'174','type'=>'2','token'=>'caadd1be045a65f30b92aa805f1de54a']){ public function get_all_card_data_contrast($data = ['before_id'=>'171','after_id'=>'174','type'=>'2','token'=>'caadd1be045a65f30b92aa805f1de54a']){
try { // try {
// 你的业务逻辑 // 你的业务逻辑
if(count(input('post.')) > 0){ if(count(input('post.')) > 0){
$data = input('post.'); $data = input('post.');
@ -165,29 +167,29 @@ class Pagingcontrast extends Base{
if(!$this->verify_data_is_ok($data['type'],'intnum')){ if(!$this->verify_data_is_ok($data['type'],'intnum')){
return $this->msg(10005); return $this->msg(10005);
} }
unset($data['token']); // unset($data['token']);
$return_data = $this->jump_transfer_interface_data_contrast($data); $return_data = $this->jump_transfer_interface_data_contrast($data);
// 成功 // 成功
$this->record_api_log($data, null, $return_data); $this->record_api_log($data, null, $return_data);
return $return_data; return $return_data;
} catch (\Exception $e) { // } catch (\Exception $e) {
// 捕获异常 // // 捕获异常
$logContent["flie"] = $e->getFile(); // $logContent["flie"] = $e->getFile();
$logContent["line"] = $e->getLine(); // $logContent["line"] = $e->getLine();
$logContent['all_content'] = "异常信息:\n"; // $logContent['all_content'] = "异常信息:\n";
$logContent['all_content'] .= "消息: " . $e->getMessage() . "\n"; // $logContent['all_content'] .= "消息: " . $e->getMessage() . "\n";
$logContent['all_content'] .= "代码: " . $e->getCode() . "\n"; // $logContent['all_content'] .= "代码: " . $e->getCode() . "\n";
$logContent['all_content'] .= "文件: " . $e->getFile() . "\n"; // $logContent['all_content'] .= "文件: " . $e->getFile() . "\n";
$logContent['all_content'] .= "行号: " . $e->getLine() . "\n"; // $logContent['all_content'] .= "行号: " . $e->getLine() . "\n";
$logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n"; // $logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n";
$this->record_api_log($data, $logContent, null); // $this->record_api_log($data, $logContent, null);
return $this->msg(99999); // return $this->msg(99999);
} // }
} }
// 删除历史数据 // 删除历史数据
public function del_all_record_data($data = ['id'=>'29','type'=>'2','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){ public function del_all_record_data($data = ['id'=>'29','type'=>'2','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){
try { // try {
// 你的业务逻辑 // 你的业务逻辑
if(count(input('post.')) > 0){ if(count(input('post.')) > 0){
$data = input('post.'); $data = input('post.');
@ -212,19 +214,19 @@ class Pagingcontrast extends Base{
// 成功 // 成功
$this->record_api_log($data, null, $return_data); $this->record_api_log($data, null, $return_data);
return $return_data; return $return_data;
} catch (\Exception $e) { // } catch (\Exception $e) {
// 捕获异常 // // 捕获异常
$logContent["flie"] = $e->getFile(); // $logContent["flie"] = $e->getFile();
$logContent["line"] = $e->getLine(); // $logContent["line"] = $e->getLine();
$logContent['all_content'] = "异常信息:\n"; // $logContent['all_content'] = "异常信息:\n";
$logContent['all_content'] .= "消息: " . $e->getMessage() . "\n"; // $logContent['all_content'] .= "消息: " . $e->getMessage() . "\n";
$logContent['all_content'] .= "代码: " . $e->getCode() . "\n"; // $logContent['all_content'] .= "代码: " . $e->getCode() . "\n";
$logContent['all_content'] .= "文件: " . $e->getFile() . "\n"; // $logContent['all_content'] .= "文件: " . $e->getFile() . "\n";
$logContent['all_content'] .= "行号: " . $e->getLine() . "\n"; // $logContent['all_content'] .= "行号: " . $e->getLine() . "\n";
$logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n"; // $logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n";
$this->record_api_log($data, $logContent, null); // $this->record_api_log($data, $logContent, null);
return $this->msg(99999); // return $this->msg(99999);
} // }
} }
################################################请求接口################################################ ################################################请求接口################################################
@ -310,7 +312,23 @@ class Pagingcontrast extends Base{
]); ]);
} }
} }
return $this->msg($return_result);
$language_data = new Language();
$user_language = Db::table($this->pagingcontrast_use_db_name['4'])
->alias('a')
->join(''.$this->pagingcontrast_use_db_name['5'].' b','a.aan_id = b.id','LEFT')
->where(['a.id'=>$data['aud_id'],'a.is_del'=>0])
->field('b.language')
->find();
if(!$user_language['language']){
$user_language['language'] = 'zh-Hans';
}
$result_end = $language_data->handling_languages_from_multiple_countries($user_language['language'], $return_result);
// dump($result_end);
// die;
return $this->msg($result_end);
} }
// 获取记录信息列表(分组)-跳绳 // 获取记录信息列表(分组)-跳绳
// 获取记录信息列表(分页)-跳绳 // 获取记录信息列表(分页)-跳绳
@ -504,8 +522,20 @@ class Pagingcontrast extends Base{
]); ]);
} }
} }
$language_data = new Language();
$user_language = Db::table($this->pagingcontrast_use_db_name['5'])
->where(['token'=>$data['token'],'is_del'=>0])
->field('language')
->find();
if(!$user_language['language']){
$user_language['language'] = 'zh-Hans';
}
$result_end = $language_data->handling_languages_from_multiple_countries($user_language['language'], $result_data);
// 添加头围详细end // 添加头围详细end
return $this->msg($result_data); return $this->msg($result_end);
}else{ }else{
return $this->msg(10004); return $this->msg(10004);
} }
@ -561,7 +591,7 @@ class Pagingcontrast extends Base{
} }
} }
$return_data['time'] = $calculate_arr['before']['b_time'].''.$calculate_arr['after']['b_time']; $return_data['time'] = $calculate_arr['before']['b_time'].'/'.$calculate_arr['after']['b_time'];
$return_data['headimg'] = $calculate_arr['before']['head_pic']; $return_data['headimg'] = $calculate_arr['before']['head_pic'];
$return_data['name'] = $calculate_arr['before']['nickname']; $return_data['name'] = $calculate_arr['before']['nickname'];
$return_data['gender'] = $calculate_arr['before']['gender']; $return_data['gender'] = $calculate_arr['before']['gender'];
@ -652,7 +682,16 @@ class Pagingcontrast extends Base{
// } // }
// 添加头围数据如果需要的话end // 添加头围数据如果需要的话end
return $this->msg($return_data); $language_data = new Language();
$user_language = Db::table($this->pagingcontrast_use_db_name['5'])
->where(['token'=>$data['token'],'is_del'=>0])
->field('language')
->find();
if(!$user_language['language']){
$user_language['language'] = 'zh-Hans';
}
$result_end = $language_data->handling_languages_from_multiple_countries($user_language['language'], $return_data);
return $this->msg($result_end);
} }
// 数据对比 // 数据对比
public function get_skip_data_contrast($data){ public function get_skip_data_contrast($data){