251227
This commit is contained in:
parent
3363e2a349
commit
af65343cfe
|
|
@ -26,7 +26,7 @@ class Base extends Controller{
|
|||
'10005'=>'参数格式错误',
|
||||
'10006'=>'参数不能为空',
|
||||
'10007'=>'参数错误',
|
||||
'10008'=>'',
|
||||
'10008'=>'请先完善首页顶部角色信息',
|
||||
'10009'=>'',
|
||||
'10010'=>'自定义信息',
|
||||
'20001'=>'登录失效',
|
||||
|
|
|
|||
|
|
@ -334,6 +334,10 @@ class Countfood extends Base{
|
|||
->find();
|
||||
if(!$user_data){
|
||||
return $this->msg(10003);
|
||||
}else{
|
||||
if(!$user_data['weight'] || $user_data['height']){
|
||||
return $this->msg(10008);
|
||||
}
|
||||
}
|
||||
if(count($data['food_list']) <= 0){
|
||||
return $this->msg(10001,'未选择食材');
|
||||
|
|
|
|||
|
|
@ -526,10 +526,12 @@ class Usercenter extends Base{
|
|||
$user_all_data['tel'] = $user_data['tel'];
|
||||
$user_all_data['email'] = $user_data['email'];
|
||||
$cfc = Db::connect('cfc_db');
|
||||
|
||||
$user_account = $cfc->table($this->kitchenscale_db_msg['user'])
|
||||
->where(["token"=>$data['token']])
|
||||
->field('id as aud_id,token,nickname,head_pic,gender,age,height,weight,set_kcal,is_use_set_kcal,birthday,activity_level')
|
||||
->find();
|
||||
|
||||
if($user_account){
|
||||
if($user_account['set_kcal'] == '.00'){
|
||||
$user_account['set_kcal'] = 0;
|
||||
|
|
@ -570,7 +572,42 @@ class Usercenter extends Base{
|
|||
$user_all_data['food_count'] = ($user_all_data['food_count']->getData())['data'];
|
||||
// dump($user_all_data['food_count']);
|
||||
}else{
|
||||
return $this->msg(10004);
|
||||
$user_account['set_kcal'] = 0;
|
||||
$user_all_data['aud_id'] = null;
|
||||
$user_all_data['gender'] = 0;
|
||||
$user_all_data['age'] = false;
|
||||
$user_all_data['height'] = null;
|
||||
$user_all_data['weight'] = null;
|
||||
$user_all_data['set_kcal'] = 0;
|
||||
$user_all_data['is_use_set_kcal'] = 0;
|
||||
$user_all_data['birthday'] = null;
|
||||
$user_all_data['activity_level'] = null;
|
||||
$user_all_data['head_pic'] = "https://tc.pcxbc.com/kitchenscale_all/man1.png";
|
||||
// if($user_all_data['gender'] == 2){
|
||||
// if($user_all_data['age'] <= 18){
|
||||
// $user_all_data['head_pic'] = "https://tc.pcxbc.com/kitchenscale_all/woman1.png";
|
||||
// }else if($user_all_data['age'] <= 39 && $user_all_data['age'] > 18){
|
||||
// $user_all_data['head_pic'] = "https://tc.pcxbc.com/kitchenscale_all/woman2.png";
|
||||
// }else if($user_all_data['age'] <= 59 && $user_all_data['age'] > 39){
|
||||
// $user_all_data['head_pic'] = "https://tc.pcxbc.com/kitchenscale_all/woman3.png";
|
||||
// }else if($user_all_data['age'] >= 60){
|
||||
// $user_all_data['head_pic'] = "https://tc.pcxbc.com/kitchenscale_all/woman4.png";
|
||||
// }
|
||||
// }else{
|
||||
// if($user_all_data['age'] <= 18){
|
||||
// $user_all_data['head_pic'] = "https://tc.pcxbc.com/kitchenscale_all/man1.png";
|
||||
// }else if($user_all_data['age'] <= 39 && $user_all_data['age'] > 18){
|
||||
// $user_all_data['head_pic'] = "https://tc.pcxbc.com/kitchenscale_all/man2.png";
|
||||
// }else if($user_all_data['age'] <= 59 && $user_all_data['age'] > 39){
|
||||
// $user_all_data['head_pic'] = "https://tc.pcxbc.com/kitchenscale_all/man3.png";
|
||||
// }else if($user_all_data['age'] >= 60){
|
||||
// $user_all_data['head_pic'] = "https://tc.pcxbc.com/kitchenscale_all/man4.png";
|
||||
// }
|
||||
// }
|
||||
|
||||
$countfood = new Countfood;
|
||||
$user_all_data['food_count'] = $countfood->get_countfoot_content_action(['token'=>$data['token'],'aud_id'=>$user_all_data['aud_id'],'time'=>date('Y-m-d')]);
|
||||
$user_all_data['food_count'] = ($user_all_data['food_count']->getData())['data'];
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ class Base extends Controller{
|
|||
'10005'=>'参数格式错误',
|
||||
'10006'=>'参数不能为空',
|
||||
'10007'=>'参数错误',
|
||||
'10008'=>'',
|
||||
'10008'=>'请先完善首页顶部角色信息',
|
||||
'10009'=>'',
|
||||
'10010'=>'自定义信息',
|
||||
'20001'=>'登录失效',
|
||||
|
|
@ -156,17 +156,17 @@ class Base extends Controller{
|
|||
if(is_string($token)){
|
||||
$length = strlen($token);
|
||||
if ($length < 10 ) {
|
||||
Log::record('用户尝试更新token时间,token:' . $token.',但是更新token失败,字符串长度小于10', 'token_log');
|
||||
// Log::record('用户尝试更新token时间,token:' . $token.',但是更新token失败,字符串长度小于10', 'token_log');
|
||||
return false;
|
||||
}
|
||||
}else{
|
||||
Log::record('用户尝试更新token时间,token:' . $token.',但是更新token失败,不是字符串', 'token_log');
|
||||
// Log::record('用户尝试更新token时间,token:' . $token.',但是更新token失败,不是字符串', 'token_log');
|
||||
return false;
|
||||
}
|
||||
$cfc = Db::connect('cfc_db');
|
||||
$user_login = $cfc->table($this->base_use_db_name['user'])->where(['token'=>$token])->field('id,login_time')->find();
|
||||
if(!$user_login){
|
||||
Log::record('用户尝试更新token时间,token:' . $token.',但是更新token失败,未找到用户token', 'token_log');
|
||||
// Log::record('用户尝试更新token时间,token:' . $token.',但是更新token失败,未找到用户token', 'token_log');
|
||||
return false;
|
||||
}
|
||||
// 创建 DateTime 对象来表示指定的日期和时间
|
||||
|
|
@ -188,16 +188,16 @@ class Base extends Controller{
|
|||
// 判断差异是否超过指定的天数
|
||||
if ($daysDifference > $this->token_time) {
|
||||
// echo "超过 {$specifiedDays} 天";
|
||||
Log::record('用户尝试更新token时间,token:' . $token.',但是更新token失败,原因没有找到该token,或该token已经超过30天', 'token_log');
|
||||
// Log::record('用户尝试更新token时间,token:' . $token.',但是更新token失败,原因没有找到该token,或该token已经超过30天', 'token_log');
|
||||
return false;
|
||||
} else {
|
||||
// echo "未超过 {$specifiedDays} 天";
|
||||
$user_login = $cfc->table($this->base_use_db_name['user'])->where(['token'=>$token])->update(['login_time'=>date('Y-m-d H:i:s')]);
|
||||
if($user_login){
|
||||
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 true;
|
||||
}else{
|
||||
Log::record('用户尝试更新token时间,token:' . $token.',但是更新token失败,数据库更新时间未成功', 'token_log');
|
||||
// Log::record('用户尝试更新token时间,token:' . $token.',但是更新token失败,数据库更新时间未成功', 'token_log');
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -275,7 +275,7 @@ class Base extends Controller{
|
|||
$bmr = bcsub($bmr,bcmul(5,$data['age_num'],20),20);
|
||||
$bmr = bcsub($bmr,161,2);
|
||||
}else{
|
||||
return $this->msg(10003,'性别未知');
|
||||
return false;
|
||||
}
|
||||
|
||||
// 每日总能量消耗(TDEE)
|
||||
|
|
@ -285,7 +285,7 @@ class Base extends Controller{
|
|||
// 高度活动(每周6-7天高强度运动):BMR × 1.725
|
||||
// 极高活动(体力劳动或每天高强度训练):BMR × 1.9
|
||||
if(array_key_exists('activity_level',$data)){
|
||||
if($data['activity_level'] != null){
|
||||
if($data['activity_level'] != null && $data['activity_level'] > 0){
|
||||
$tdee = bcmul($bmr,$data['activity_level'],2);
|
||||
}else{
|
||||
$tdee = bcmul($bmr,1.55,2);
|
||||
|
|
@ -374,20 +374,22 @@ class Base extends Controller{
|
|||
}
|
||||
|
||||
// 计算营养物质
|
||||
public function calculate_nutrients($data){
|
||||
public function calculate_nutrients($data,$language = 'zh'){
|
||||
// dump($data);
|
||||
$food_id_arr = [];
|
||||
for ($i=0; $i < count($data); $i++) {
|
||||
$food_id_arr[] = $data[$i]['food_id'];
|
||||
}
|
||||
|
||||
// dump($data);
|
||||
// die;
|
||||
$cfc = Db::connect('cfc_db');
|
||||
$nutrients_list = $cfc->table($this->base_use_db_name['foodlist4'])
|
||||
->where("father_id in ('".implode("','",$food_id_arr)."')")
|
||||
// ->field()
|
||||
->field('id,father_id,name_'.$language.' as name,unit,value,type')
|
||||
->select();
|
||||
|
||||
$nutrients_arr = ['VitaminA','VitaminB1','VitaminB2','VitaminB6','VitaminB12','VitaminD','VitaminK','Niacin','VitaminC','VitaminE','FolicAcid','Biotin','PantothenicAcid','TotalCholine','Ca','Phosphorus','Kalium','Mg','Na','Fe','Zn','Se','Cu','Mn','Iodine'];
|
||||
// dump($nutrients_list);
|
||||
// die;
|
||||
// $nutrients_arr = ['VitaminA','VitaminB1','VitaminB2','VitaminB6','VitaminB12','VitaminD','VitaminK','Niacin','VitaminC','VitaminE','FolicAcid','Biotin','PantothenicAcid','TotalCholine','Ca','Phosphorus','Kalium','Mg','Na','Fe','Zn','Se','Cu','Mn','Iodine'];
|
||||
// dump($nutrients_list);
|
||||
// 加 bcadd(,,20)
|
||||
// 减 bcsub(,,20)
|
||||
|
|
@ -461,17 +463,17 @@ class Base extends Controller{
|
|||
];
|
||||
foreach ($nutrients_list as $key => $value) {
|
||||
if($value['father_id'] == $data[$i]['food_id']){
|
||||
if(in_array($value['name'],$nutrients_arr)){
|
||||
// if(in_array($value['name'],$nutrients_arr)){
|
||||
$data[$i]['nutrients_list'][] = [
|
||||
'name' => $value['name'],
|
||||
'name_ch' => $value['name_ch'],
|
||||
'name_ch' => $value['name'],
|
||||
'unit' => $value['unit'],
|
||||
'value' => bcmul($value['value'],bcdiv($data[$i]['weight'],100,20),2),
|
||||
'type' => $value['type'],
|
||||
'type_name' => $value['type'] == 1?'能量及宏量营养素':($value['type'] == 2?'维生素':($value['type'] == 3?'矿物质':'')),
|
||||
'color' => $value['type'] == 1?'#C4FFE0':($value['type'] == 2?'#FFEFB7':($value['type'] == 3?'#7DA8E0':'')),
|
||||
];
|
||||
}
|
||||
// }
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -928,8 +928,20 @@ class Cookbook extends Base{
|
|||
// ->field('id,record_id,food_name as name,pic_url,Calorie_val as kcal,weight_unit as unit')
|
||||
// ->page($data['page'],$cp_page_num)
|
||||
// ->select();
|
||||
|
||||
$cp_page_num = 15;
|
||||
$cfc = Db::connect('cfc_db');
|
||||
$user_msg = $cfc->table($this->kitchenscale_db_msg['user'])
|
||||
->where(['token'=>$data['token']])
|
||||
->field("id,language,token")
|
||||
->find();
|
||||
|
||||
// dump($user_msg);
|
||||
// die;
|
||||
|
||||
$user_sc_data = 'name_zh';
|
||||
$user_sc_data2 = 'food_name';
|
||||
|
||||
$search_sql_str = "is_del = 0";
|
||||
if(!array_key_exists('search_data', $data)){
|
||||
$data['search_data'] = "";
|
||||
|
|
@ -940,60 +952,80 @@ class Cookbook extends Base{
|
|||
$ss = "";
|
||||
}else{
|
||||
$ss = $data['search_data'];
|
||||
$data['search_data'] = " AND food_name LIKE '%".str_replace('[', '[[]', $ss)."%'";
|
||||
if($user_msg){
|
||||
if($user_msg['language'] == 'zh'){
|
||||
$data['search_data'] = " AND food_name LIKE '%".str_replace('[', '[[]', $ss)."%'";
|
||||
$user_sc_data = 'name_zh';
|
||||
$user_sc_data2 = 'food_name';
|
||||
}else{
|
||||
$data['search_data'] = " AND food_name_".$user_msg['language']." LIKE '%".str_replace('[', '[[]', $ss)."%'";
|
||||
$user_sc_data = 'name_'.$user_msg['language'];
|
||||
$user_sc_data2 = "food_name_".$user_msg['language'];
|
||||
}
|
||||
}else{
|
||||
$data['search_data'] = " AND food_name LIKE '%".str_replace('[', '[[]', $ss)."%'";
|
||||
$user_sc_data = 'name_zh';
|
||||
$user_sc_data2 = 'food_name';
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
$search_sql_str = $search_sql_str.$data['search_data'];
|
||||
|
||||
|
||||
// 计算总数
|
||||
$count_sql = "SELECT COUNT(*) as total FROM {$this->kitchenscale_db_msg['foodlist3']} WHERE {$search_sql_str}";
|
||||
$count_result = $cfc->query($count_sql);
|
||||
$content_num = $count_result[0]['total'] ?? 0;
|
||||
$page_total = ceil($content_num/$cp_page_num);
|
||||
|
||||
|
||||
// 计算分页偏移量
|
||||
$page = max(1, intval($data['page']));
|
||||
$offset = ($page - 1) * $cp_page_num;
|
||||
|
||||
// SQL Server分页查询 - 使用OFFSET FETCH语法(SQL Server 2012及以上版本)
|
||||
$sql = "SELECT id, record_id, food_name as name, pic_url, Calorie_val as kcal, weight_unit as unit
|
||||
$sql = "SELECT id, record_id, $user_sc_data2 as name, pic_url, Calorie_val as kcal, weight_unit as unit
|
||||
FROM {$this->kitchenscale_db_msg['foodlist3']}
|
||||
WHERE {$search_sql_str}
|
||||
ORDER BY id
|
||||
OFFSET {$offset} ROWS
|
||||
FETCH NEXT {$cp_page_num} ROWS ONLY";
|
||||
|
||||
// dump($count_sql);
|
||||
|
||||
|
||||
$collect_list = $cfc->query($sql);
|
||||
|
||||
// dump($collect_list);
|
||||
// die;
|
||||
|
||||
if(count($collect_list) > 0){
|
||||
$nutrients_list_id = [];
|
||||
$nutrients_list_temporary = [];
|
||||
foreach ($collect_list as $key => $value) {
|
||||
$collect_list[$key]['pic_url'] = "https://tc.pcxbc.com/kitchenscale_all".$collect_list[$key]['pic_url'];
|
||||
array_push($nutrients_list_id,$collect_list[$key]['record_id']);
|
||||
$nutrients_list_temporary[$collect_list[$key]['record_id']] = [];
|
||||
array_push($nutrients_list_id,$collect_list[$key]['id']);
|
||||
$nutrients_list_temporary[$collect_list[$key]['id']] = [];
|
||||
if (!is_numeric($collect_list[$key]['kcal'])) {
|
||||
$collect_list[$key]['kcal'] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 处理营养物质
|
||||
$nutrients_list_data = $cfc->table($this->kitchenscale_db_msg['foodlist4'])
|
||||
->where("father_id in (". implode(',',$nutrients_list_id) .")")
|
||||
->field("father_id,name,name_ch,unit,value,type")
|
||||
->field("father_id,name_en,".$user_sc_data.",unit,value,type")
|
||||
->select();
|
||||
|
||||
for ($i=0; $i < count($nutrients_list_data); $i++) {
|
||||
// 去掉末尾0
|
||||
$nutrients_list_data[$i]['value'] = rtrim(rtrim($nutrients_list_data[$i]['value'], '0'), '.');
|
||||
if(!is_numeric($nutrients_list_data[$i]['value']) || $nutrients_list_data[$i]['value'] == 0){
|
||||
continue;
|
||||
}else{
|
||||
array_push($nutrients_list_temporary[$nutrients_list_data[$i]['father_id']],[
|
||||
'name'=>$nutrients_list_data[$i]['name'],
|
||||
'name_ch'=>$nutrients_list_data[$i]['name_ch'],
|
||||
'name'=>$nutrients_list_data[$i]['name_en'],
|
||||
'name_ch'=>$nutrients_list_data[$i][$user_sc_data],
|
||||
'unit'=>$nutrients_list_data[$i]['unit'],
|
||||
'value'=>$nutrients_list_data[$i]['value'],
|
||||
'type'=>$nutrients_list_data[$i]['type'],
|
||||
|
|
@ -1007,9 +1039,9 @@ class Cookbook extends Base{
|
|||
$collect_list[$i]['nutrients_four'] = [];
|
||||
$collect_list[$i]['nutrients_list'] = [];
|
||||
$temporary_calculate = 0;
|
||||
if(array_key_exists($collect_list[$i]['record_id'],$nutrients_list_temporary)){
|
||||
$collect_list[$i]['nutrients_list'] = $nutrients_list_temporary[$collect_list[$i]['record_id']];
|
||||
foreach ($nutrients_list_temporary[$collect_list[$i]['record_id']] as $key => $value) {
|
||||
if(array_key_exists($collect_list[$i]['id'],$nutrients_list_temporary)){
|
||||
$collect_list[$i]['nutrients_list'] = $nutrients_list_temporary[$collect_list[$i]['id']];
|
||||
foreach ($nutrients_list_temporary[$collect_list[$i]['id']] as $key => $value) {
|
||||
if($value['type'] == 1){
|
||||
array_push($collect_list[$i]['nutrients_four'],[
|
||||
'name'=>$value['name'] == 'Carbohydrate'?'碳水':$value['name_ch'],
|
||||
|
|
@ -1037,10 +1069,11 @@ class Cookbook extends Base{
|
|||
|
||||
|
||||
// 记录搜索历史
|
||||
if(array_key_exists('token',$data) && $data['token'] != '' && $ss != ''){
|
||||
$user_data = $cfc->table($this->kitchenscale_db_msg['user'])->where(['token'=>$data['token']])->field('id,token')->find();
|
||||
if($user_data){
|
||||
$this->add_search_history_action(['id'=>$user_data['id'],'search_data'=>$ss,'type'=>'food']);
|
||||
if(array_key_exists('token',$data) && $data['token'] != '' && $ss != ''){
|
||||
// $user_data = $cfc->table($this->kitchenscale_db_msg['user'])->where(['token'=>$data['token']])->field('id,token')->find();
|
||||
|
||||
if($user_msg){
|
||||
$this->add_search_history_action(['id'=>$user_msg['id'],'search_data'=>$ss,'type'=>'food']);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -8,9 +8,9 @@ use think\Controller;
|
|||
class Guessyoulike extends Controller {
|
||||
|
||||
protected $kitchenscale_db_msg = [
|
||||
'cookbook' => 'app_user_cookbook', //食谱表
|
||||
'cookbook_label' => 'app_user_cookbook_label', //食谱标签表
|
||||
'cookbook_food_relation' => 'app_user_cookbook_food_relation', //食谱跟食材关系表
|
||||
// 'cookbook' => 'app_user_cookbook', //食谱表
|
||||
// 'cookbook_label' => 'app_user_cookbook_label', //食谱标签表
|
||||
// 'cookbook_food_relation' => 'app_user_cookbook_food_relation', //食谱跟食材关系表
|
||||
'foodlist2' => 'app_z_national_standard_food_type_2_multilingual', //食材标签表2
|
||||
'foodlist3' => 'app_z_national_standard_food_type_3_multilingual', //食材表
|
||||
'kcal_log' => 'app_user_kcal_log_multilingual', //用户饮食记录表记录用户吃了什么食材
|
||||
|
|
@ -24,11 +24,23 @@ class Guessyoulike extends Controller {
|
|||
'item_limit' => 12,
|
||||
'cache_time' => 3600
|
||||
];
|
||||
protected $translations = [
|
||||
'zh' => '搜索最多的食材',
|
||||
'en' => 'Most Searched Ingredients',
|
||||
'jp' => '最も検索された食材',
|
||||
'fra' => 'Ingrédients les Plus Recherchés',
|
||||
'de' => 'Am Häufigsten Gesuchte Lebensmittel',
|
||||
'kor' => '가장 많이 검색된 재료',
|
||||
'ru' => 'Самые Искомые Ингредиенты',
|
||||
'pt' => 'Ingredientes Mais Pesquisados',
|
||||
'spa' => 'Ingredientes Más Buscados',
|
||||
'ara' => 'المكونات الأكثر بحثًا'
|
||||
];
|
||||
|
||||
/**
|
||||
* 猜你喜欢主接口
|
||||
*/
|
||||
public function getGuessYouLike($user_id = 1, $type = 'food', $limit = null) {
|
||||
public function getGuessYouLike($user_id = 1, $type = 'food', $limit = null,$language = 'zh') {
|
||||
try {
|
||||
$cfc = Db::connect('cfc_db');
|
||||
// dump(1);
|
||||
|
|
@ -43,19 +55,19 @@ class Guessyoulike extends Controller {
|
|||
// if ($cache_result !== null) {
|
||||
// return $cache_result;
|
||||
// }
|
||||
|
||||
// dump($language);
|
||||
// 判断用户是否有历史数据
|
||||
$has_history = $this->checkUserHistory($cfc, $user_id);
|
||||
if (!$has_history) {
|
||||
// 新用户,返回最火信息(仅一个标签)
|
||||
$result = $this->getPopularRecommendations($cfc, $type, 1, $item_limit);
|
||||
$result = $this->getPopularRecommendations($cfc, $type, 1, $item_limit,$language);
|
||||
} else {
|
||||
// 老用户,根据类型返回个性化推荐
|
||||
if ($type === 'cookbook') {
|
||||
$result = $this->getCookbookRecommendations($cfc, $user_id, $tag_limit, $item_limit);
|
||||
// $result = $this->getCookbookRecommendations($cfc, $user_id, $tag_limit, $item_limit,$language);
|
||||
|
||||
} else {
|
||||
$result = $this->getFoodRecommendations($cfc, $user_id, $tag_limit, $item_limit);
|
||||
$result = $this->getFoodRecommendations($cfc, $user_id, $tag_limit, $item_limit,$language);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -175,13 +187,13 @@ class Guessyoulike extends Controller {
|
|||
/**
|
||||
* 获取热门推荐(新用户)
|
||||
*/
|
||||
private function getPopularRecommendations($db, $type, $tag_limit, $item_limit) {
|
||||
private function getPopularRecommendations($db, $type, $tag_limit, $item_limit,$language) {
|
||||
// dump($type);
|
||||
if ($type === 'cookbook') {
|
||||
return $this->getPopularCookbooks($db, $tag_limit, $item_limit);
|
||||
} else {
|
||||
// dump(111);
|
||||
return $this->getPopularFoods($db, $tag_limit, $item_limit);
|
||||
return $this->getPopularFoods($db, $tag_limit, $item_limit,$language);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -225,7 +237,7 @@ class Guessyoulike extends Controller {
|
|||
/**
|
||||
* 获取热门食材(新用户)
|
||||
*/
|
||||
private function getPopularFoods($db, $tag_limit, $item_limit) {
|
||||
private function getPopularFoods($db, $tag_limit, $item_limit,$language) {
|
||||
try {
|
||||
// dump(2222);
|
||||
// // 简化查询,避免复杂关联导致的错误
|
||||
|
|
@ -248,10 +260,10 @@ class Guessyoulike extends Controller {
|
|||
$popular_foods_2 = $db->query("
|
||||
SELECT TOP {$num}
|
||||
id,
|
||||
food_name as name
|
||||
food_name_".$language." as name
|
||||
FROM {$this->kitchenscale_db_msg['foodlist3']}
|
||||
WHERE is_del = 0
|
||||
ORDER BY is_popular DESC, food_name ASC
|
||||
ORDER BY is_popular DESC, food_name_".$language." ASC
|
||||
");
|
||||
}
|
||||
|
||||
|
|
@ -265,14 +277,14 @@ class Guessyoulike extends Controller {
|
|||
|
||||
foreach ($popular_foods as $food) {
|
||||
$label_data[] = [
|
||||
'name' => $food['name'] ?? '未知食材',
|
||||
'name' => $food['name'] ?? '????',
|
||||
'id' => $food['id'] ?? 0,
|
||||
'type' => 'food'
|
||||
];
|
||||
}
|
||||
|
||||
if (!empty($label_data)) {
|
||||
$result['最火食材搜索'] = $label_data;
|
||||
$result[$this->translations[$language]] = $label_data;
|
||||
}
|
||||
|
||||
return $result;
|
||||
|
|
@ -355,7 +367,7 @@ class Guessyoulike extends Controller {
|
|||
/**
|
||||
* 获取个性化食材推荐(老用户)
|
||||
*/
|
||||
private function getFoodRecommendations($db, $user_id, $tag_limit, $item_limit) {
|
||||
private function getFoodRecommendations($db, $user_id, $tag_limit, $item_limit,$language) {
|
||||
try {
|
||||
// 获取用户最常吃的食材
|
||||
$user_top_foods = $db->query("
|
||||
|
|
@ -366,13 +378,16 @@ class Guessyoulike extends Controller {
|
|||
ORDER BY eat_count DESC
|
||||
", [$user_id]);
|
||||
|
||||
// dump($user_id);
|
||||
// dump($language);
|
||||
// dump($user_top_foods);
|
||||
if (empty($user_top_foods)) {
|
||||
return $this->getPopularFoods($db, $tag_limit, $item_limit);
|
||||
return $this->getPopularFoods($db, $tag_limit, $item_limit,$language);
|
||||
}
|
||||
|
||||
$food_ids = array_column($user_top_foods, 'food_id');
|
||||
if (empty($food_ids)) {
|
||||
return $this->getPopularFoods($db, $tag_limit, $item_limit);
|
||||
return $this->getPopularFoods($db, $tag_limit, $item_limit,$language);
|
||||
}
|
||||
$food_ids_str = implode(',', $food_ids);
|
||||
|
||||
|
|
@ -390,29 +405,29 @@ class Guessyoulike extends Controller {
|
|||
foreach ($preferred_categories as $category) {
|
||||
// 获取该分类下的其他食材
|
||||
$foods = $db->query("
|
||||
SELECT TOP {$item_limit} id, food_name as name
|
||||
SELECT TOP {$item_limit} id, food_name_".$language." as name
|
||||
FROM {$this->kitchenscale_db_msg['foodlist3']}
|
||||
WHERE two_id = ? AND is_del = 0 AND id NOT IN ({$food_ids_str})
|
||||
ORDER BY is_popular DESC, food_name ASC
|
||||
ORDER BY is_popular DESC, food_name_".$language." ASC
|
||||
", [$category['id']]);
|
||||
|
||||
$category_data = [];
|
||||
foreach ($foods as $food) {
|
||||
$category_data[] = [
|
||||
'name' => $food['name'] ?? '未知食材',
|
||||
'name' => $food['name'] ?? '????',
|
||||
'id' => $food['id'] ?? 0,
|
||||
'type' => 'food'
|
||||
];
|
||||
}
|
||||
|
||||
if (!empty($category_data)) {
|
||||
$result[$category['name'] ?? '未知分类'] = $category_data;
|
||||
$result[$category['name'] ?? '????'] = $category_data;
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
} catch (\Exception $e) {
|
||||
return $this->getPopularFoods($db, $tag_limit, $item_limit);
|
||||
return $this->getPopularFoods($db, $tag_limit, $item_limit,$language);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -26,9 +26,9 @@ class Index extends Base{
|
|||
'collect_list'=>'app_user_collect_list',//点赞表
|
||||
'banner'=>'app_banner_data',//banner
|
||||
'version'=>'app_version_log',//版本表
|
||||
'user'=>'app_user_data',//用户表
|
||||
'user'=>'app_user_data_multilingual',//用户表
|
||||
'kcal_log'=>'app_user_kcal_log',//饮食记录表
|
||||
'search_history'=>'app_user_search_history',//搜索历史表
|
||||
'search_history'=>'app_user_search_history_multilingual',//搜索历史表
|
||||
'business_cooperation'=>'app_business_cooperation',//搜索历史表
|
||||
|
||||
];
|
||||
|
|
@ -43,11 +43,11 @@ class Index extends Base{
|
|||
'jp' => ['日本語(Japanese)','ja'], // 日语(变化)
|
||||
'fra' => ['Français(French)','fr'], // 法语(变化)
|
||||
'de' => ['Deutsch(German)','de'], // 德语
|
||||
'kor' => ['한국어(Korean)','ko'], // 韩语(变化)
|
||||
'ru' => ['Русский(Russian)','ru'], // 俄语
|
||||
'pt' => ['Português(Portuguese)','pt'], // 葡萄牙
|
||||
'spa' => ["Español(Spanish)",'es'], // 西班牙(变化)
|
||||
'ara' => ['Arabic(العربية)','ar'], // 阿拉伯(变化)
|
||||
// 'kor' => ['한국어(Korean)','ko'], // 韩语(变化)
|
||||
// 'ru' => ['Русский(Russian)','ru'], // 俄语
|
||||
// 'pt' => ['Português(Portuguese)','pt'], // 葡萄牙
|
||||
// 'spa' => ["Español(Spanish)",'es'], // 西班牙(变化)
|
||||
// 'ara' => ['Arabic(العربية)','ar'], // 阿拉伯(变化)
|
||||
];
|
||||
// zh, //中文
|
||||
// en, // 英语
|
||||
|
|
@ -72,33 +72,33 @@ class Index extends Base{
|
|||
// 检测版本及判断是否登录失效
|
||||
public function login_invalid_version($data = ['token'=>'']){
|
||||
try {
|
||||
// 获取客户端IP
|
||||
$ip = request()->ip();
|
||||
// 调用IP识别方法
|
||||
$region = $this->getIpInfo($ip);
|
||||
// dump($region);
|
||||
// 解析地区信息
|
||||
$regionParts = explode('|', $region);
|
||||
$country = $regionParts[0] ?? '';
|
||||
// 判断国家是否在支持的语言列表中
|
||||
$language = '';
|
||||
if ($country && $country !== '0') {
|
||||
$languageMap = [
|
||||
'中国' => 'zh',
|
||||
'美国' => 'en',
|
||||
'英国' => 'en',
|
||||
'西班牙' => 'spa',
|
||||
'法国' => 'fra',
|
||||
'葡萄牙' => 'pt',
|
||||
'阿拉伯联合酋长国' => 'ara',
|
||||
'俄罗斯' => 'ru',
|
||||
'德国' => 'de'
|
||||
];
|
||||
$language = $languageMap[$country] ?? '';
|
||||
}
|
||||
// 检查语言是否在支持列表中
|
||||
$language_all = new Language();
|
||||
$isSupportedLanguage = array_key_exists($language, $language_all->getSupportedLanguages());
|
||||
// // 获取客户端IP
|
||||
// $ip = request()->ip();
|
||||
// // 调用IP识别方法
|
||||
// $region = $this->getIpInfo($ip);
|
||||
// // dump($region);
|
||||
// // 解析地区信息
|
||||
// $regionParts = explode('|', $region);
|
||||
// $country = $regionParts[0] ?? '';
|
||||
// // 判断国家是否在支持的语言列表中
|
||||
// $language = '';
|
||||
// if ($country && $country !== '0') {
|
||||
// $languageMap = [
|
||||
// '中国' => 'zh',
|
||||
// '美国' => 'en',
|
||||
// '英国' => 'en',
|
||||
// '西班牙' => 'spa',
|
||||
// '法国' => 'fra',
|
||||
// '葡萄牙' => 'pt',
|
||||
// '阿拉伯联合酋长国' => 'ara',
|
||||
// '俄罗斯' => 'ru',
|
||||
// '德国' => 'de'
|
||||
// ];
|
||||
// $language = $languageMap[$country] ?? '';
|
||||
// }
|
||||
// // 检查语言是否在支持列表中
|
||||
// $language_all = new Language();
|
||||
// $isSupportedLanguage = array_key_exists($language, $language_all->getSupportedLanguages());
|
||||
|
||||
|
||||
// 你的业务逻辑
|
||||
|
|
@ -110,8 +110,9 @@ class Index extends Base{
|
|||
}
|
||||
$cfc = Db::connect('cfc_db');
|
||||
|
||||
$result = $cfc->table($this->kitchenscale_db_msg['version'])->order('is_del,id desc')->find();
|
||||
|
||||
// 处理版本信息
|
||||
$result = $cfc->table($this->kitchenscale_db_msg['version'])->order('is_del,id desc')->field('id,version_num_original,download_url,is_del')->find();
|
||||
|
||||
if($result){
|
||||
$version = $result['version_num_original'];
|
||||
$url = $result['download_url'];
|
||||
|
|
@ -119,21 +120,41 @@ class Index extends Base{
|
|||
$version = '';
|
||||
$url = '';
|
||||
}
|
||||
// 处理登录和语言信息
|
||||
if($data['token'] == ''){
|
||||
return $this->msg(-2,'未登录',['version'=>$version,'url'=>$url,'language'=>'en']);
|
||||
return $this->msg(-2,'未登录',['version'=>$version,'url'=>$url,'language'=>'zh']);
|
||||
}else{
|
||||
$user_token_state = $this->token_time_validate($data['token']);
|
||||
if($user_token_state === false){
|
||||
return $this->msg(-1,'未登录',['version'=>$version,'url'=>$url,'language'=>'zh']);
|
||||
}else{
|
||||
$language_data = $cfc->table($this->kitchenscale_db_msg['user'])->where(['token'=>$data['token']])->field('id,language')->find();
|
||||
$language_str = $this->language_country[$language_data['language']][1];
|
||||
return $this->msg(['version'=>$version,'url'=>$url,'language'=>$language_str]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// dump($data);
|
||||
$user_token_state = $this->token_time_validate($data['token']);
|
||||
// dump($user_token_state);
|
||||
$language_data = $this->pd_language($user_token_state['language'],$isSupportedLanguage,$language);
|
||||
|
||||
|
||||
|
||||
// dump($user_token_state);
|
||||
// dump($language_data);
|
||||
|
||||
if($user_token_state['state'] === false){
|
||||
return $this->msg(-1,'未登录',['version'=>$version,'url'=>$url,'language'=>$language_data]);
|
||||
}else{
|
||||
return $this->msg(['version'=>$version,'url'=>$url,'language'=>$language_data]);
|
||||
}
|
||||
// if($user_token_state['state'] === false){
|
||||
// if($user_token_state === false){
|
||||
// return $this->msg(-1,'未登录',['version'=>$version,'url'=>$url,'language'=>'zh']);
|
||||
// }else{
|
||||
// $language_data = $cfc->table($this->kitchenscale_db_msg['user'])->where(['token'=>$data['token']])->field('id,language')->find();
|
||||
// if(array_key_exists('language',$language_data)){
|
||||
// $language_data = $language_data['language'];
|
||||
// }else{
|
||||
// $language_data = 'zh';
|
||||
// }
|
||||
// return $this->msg(['version'=>$version,'url'=>$url,'language'=>$language_data]);
|
||||
// }
|
||||
|
||||
} catch (\Exception $e) {
|
||||
// 捕获异常
|
||||
|
|
@ -150,40 +171,41 @@ class Index extends Base{
|
|||
return $this->msg(99999);
|
||||
}
|
||||
}
|
||||
// 添加IP信息获取方法
|
||||
protected function getIpInfo($ip) {
|
||||
// 默认IP
|
||||
$ip = $ip ?: request()->ip();
|
||||
try {
|
||||
$ip2region = new \Ip2Region();
|
||||
$info = $ip2region->memorySearch($ip);
|
||||
// 返回国家信息
|
||||
return $info['region'] ?: '未知';
|
||||
} catch (\Exception $e) {
|
||||
return '未知';
|
||||
}
|
||||
}
|
||||
// // 添加IP信息获取方法
|
||||
// protected function getIpInfo($ip) {
|
||||
// // 默认IP
|
||||
// $ip = $ip ?: request()->ip();
|
||||
// try {
|
||||
// $ip2region = new \Ip2Region();
|
||||
// $info = $ip2region->memorySearch($ip);
|
||||
// // 返回国家信息
|
||||
// return $info['region'] ?: '未知';
|
||||
// } catch (\Exception $e) {
|
||||
// return '未知';
|
||||
// }
|
||||
// }
|
||||
|
||||
// 获取默认配置信息(包含:食材的分类列表,用户角色信息)(OK)
|
||||
public function get_default_config(){
|
||||
try {
|
||||
// try {
|
||||
$data = input('post.');
|
||||
|
||||
$return_data = $this->get_default_config_action($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'] .= "接口: (get_default_config)\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);
|
||||
}
|
||||
// } catch (\Exception $e) {
|
||||
// // 捕获异常
|
||||
// $logContent["flie"] = $e->getFile();
|
||||
// $logContent["line"] = $e->getLine();
|
||||
// $logContent['all_content'] = "异常信息:\n";
|
||||
// $logContent['all_content'] .= "消息: " . $e->getMessage() . "\n";
|
||||
// $logContent['all_content'] .= "接口: (get_default_config)\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);
|
||||
// }
|
||||
}
|
||||
|
||||
// 首页搜索接口(OK)
|
||||
|
|
@ -285,156 +307,156 @@ class Index extends Base{
|
|||
'fat'=>['name'=>'脂肪','icon'=>'https://tc.pcxbc.com/kitchenscale_all/icon_fat.png','color'=>'#3CB383','val'=>0,'unit'=>'g','proportion'=>'0.00','rank_list'=>[['icon'=>'https://tc.pcxbc.com/kitchenscale_all/rank1.png','name'=>'','pic_url'=>'','weight'=>''],['icon'=>'https://tc.pcxbc.com/kitchenscale_all/rank2.png','name'=>'','pic_url'=>'','weight'=>''],['icon'=>'https://tc.pcxbc.com/kitchenscale_all/rank3.png','name'=>'','pic_url'=>'','weight'=>'']]],
|
||||
],
|
||||
'trace_elements_all_day' => [
|
||||
[
|
||||
'name' => 'VitaminA',
|
||||
'name_ch' => '维生素A',
|
||||
'unit' => 'μg RAE',
|
||||
'value' => 0
|
||||
],
|
||||
[
|
||||
'name' => 'VitaminB1',
|
||||
'name_ch' => '硫胺素',
|
||||
'unit' => 'mg',
|
||||
'value' => 0
|
||||
],
|
||||
[
|
||||
'name' => 'VitaminB2',
|
||||
'name_ch' => '核黄素',
|
||||
'unit' => 'mg',
|
||||
'value' => 0
|
||||
],
|
||||
[
|
||||
'name' => 'VitaminB6',
|
||||
'name_ch' => '维生素B6',
|
||||
'unit' => 'mg',
|
||||
'value' => 0
|
||||
],
|
||||
[
|
||||
'name' => 'VitaminB12',
|
||||
'name_ch' => '维生素B12',
|
||||
'unit' => 'μg',
|
||||
'value' => 0
|
||||
],
|
||||
[
|
||||
'name' => 'VitaminD',
|
||||
'name_ch' => '维生素D',
|
||||
'unit' => 'μg',
|
||||
'value' => 0
|
||||
],
|
||||
[
|
||||
'name' => 'VitaminK',
|
||||
'name_ch' => '维生素K',
|
||||
'unit' => 'μg',
|
||||
'value' => 0
|
||||
],
|
||||
[
|
||||
'name' => 'Niacin',
|
||||
'name_ch' => '烟酸',
|
||||
'unit' => 'mg',
|
||||
'value' => 0
|
||||
],
|
||||
[
|
||||
'name' => 'VitaminC',
|
||||
'name_ch' => '维生素C',
|
||||
'unit' => 'mg',
|
||||
'value' => 0
|
||||
],
|
||||
[
|
||||
'name' => 'VitaminE',
|
||||
'name_ch' => '维生素E',
|
||||
'unit' => 'mg α-TE',
|
||||
'value' => 0
|
||||
],
|
||||
[
|
||||
'name' => 'FolicAcid',
|
||||
'name_ch' => '叶酸',
|
||||
'unit' => 'μg',
|
||||
'value' => 0
|
||||
],
|
||||
[
|
||||
'name' => 'Biotin',
|
||||
'name_ch' => '生物素',
|
||||
'unit' => 'μg',
|
||||
'value' => 0
|
||||
],
|
||||
[
|
||||
'name' => 'PantothenicAcid',
|
||||
'name_ch' => '泛酸',
|
||||
'unit' => 'mg',
|
||||
'value' => 0
|
||||
],
|
||||
[
|
||||
'name' => 'TotalCholine',
|
||||
'name_ch' => '总胆碱',
|
||||
'unit' => 'mg',
|
||||
'value' => 0
|
||||
],
|
||||
[
|
||||
'name' => 'Ca',
|
||||
'name_ch' => '钙',
|
||||
'unit' => 'mg',
|
||||
'value' => 0
|
||||
],
|
||||
[
|
||||
'name' => 'Phosphorus',
|
||||
'name_ch' => '磷',
|
||||
'unit' => 'mg',
|
||||
'value' => 0
|
||||
],
|
||||
[
|
||||
'name' => 'Kalium',
|
||||
'name_ch' => '钾',
|
||||
'unit' => 'mg',
|
||||
'value' => 0
|
||||
],
|
||||
[
|
||||
'name' => 'Mg',
|
||||
'name_ch' => '镁',
|
||||
'unit' => 'mg',
|
||||
'value' => 0
|
||||
],
|
||||
[
|
||||
'name' => 'Na',
|
||||
'name_ch' => '钠',
|
||||
'unit' => 'mg',
|
||||
'value' => 0
|
||||
],
|
||||
[
|
||||
'name' => 'Fe',
|
||||
'name_ch' => '铁',
|
||||
'unit' => 'mg',
|
||||
'value' => 0
|
||||
],
|
||||
[
|
||||
'name' => 'Zn',
|
||||
'name_ch' => '锌',
|
||||
'unit' => 'mg',
|
||||
'value' => 0
|
||||
],
|
||||
[
|
||||
'name' => 'Se',
|
||||
'name_ch' => '硒',
|
||||
'unit' => 'μg',
|
||||
'value' => 0
|
||||
],
|
||||
[
|
||||
'name' => 'Cu',
|
||||
'name_ch' => '铜',
|
||||
'unit' => 'mg',
|
||||
'value' => 0
|
||||
],
|
||||
[
|
||||
'name' => 'Mn',
|
||||
'name_ch' => '锰',
|
||||
'unit' => 'mg',
|
||||
'value' => 0
|
||||
],
|
||||
[
|
||||
'name' => 'Iodine',
|
||||
'name_ch' => '碘',
|
||||
'unit' => 'μg',
|
||||
'value' => 0
|
||||
]
|
||||
// [
|
||||
// 'name' => 'VitaminA',
|
||||
// 'name_ch' => '维生素A',
|
||||
// 'unit' => 'μg RAE',
|
||||
// 'value' => 0
|
||||
// ],
|
||||
// [
|
||||
// 'name' => 'VitaminB1',
|
||||
// 'name_ch' => '硫胺素',
|
||||
// 'unit' => 'mg',
|
||||
// 'value' => 0
|
||||
// ],
|
||||
// [
|
||||
// 'name' => 'VitaminB2',
|
||||
// 'name_ch' => '核黄素',
|
||||
// 'unit' => 'mg',
|
||||
// 'value' => 0
|
||||
// ],
|
||||
// [
|
||||
// 'name' => 'VitaminB6',
|
||||
// 'name_ch' => '维生素B6',
|
||||
// 'unit' => 'mg',
|
||||
// 'value' => 0
|
||||
// ],
|
||||
// [
|
||||
// 'name' => 'VitaminB12',
|
||||
// 'name_ch' => '维生素B12',
|
||||
// 'unit' => 'μg',
|
||||
// 'value' => 0
|
||||
// ],
|
||||
// [
|
||||
// 'name' => 'VitaminD',
|
||||
// 'name_ch' => '维生素D',
|
||||
// 'unit' => 'μg',
|
||||
// 'value' => 0
|
||||
// ],
|
||||
// [
|
||||
// 'name' => 'VitaminK',
|
||||
// 'name_ch' => '维生素K',
|
||||
// 'unit' => 'μg',
|
||||
// 'value' => 0
|
||||
// ],
|
||||
// [
|
||||
// 'name' => 'Niacin',
|
||||
// 'name_ch' => '烟酸',
|
||||
// 'unit' => 'mg',
|
||||
// 'value' => 0
|
||||
// ],
|
||||
// [
|
||||
// 'name' => 'VitaminC',
|
||||
// 'name_ch' => '维生素C',
|
||||
// 'unit' => 'mg',
|
||||
// 'value' => 0
|
||||
// ],
|
||||
// [
|
||||
// 'name' => 'VitaminE',
|
||||
// 'name_ch' => '维生素E',
|
||||
// 'unit' => 'mg α-TE',
|
||||
// 'value' => 0
|
||||
// ],
|
||||
// [
|
||||
// 'name' => 'FolicAcid',
|
||||
// 'name_ch' => '叶酸',
|
||||
// 'unit' => 'μg',
|
||||
// 'value' => 0
|
||||
// ],
|
||||
// [
|
||||
// 'name' => 'Biotin',
|
||||
// 'name_ch' => '生物素',
|
||||
// 'unit' => 'μg',
|
||||
// 'value' => 0
|
||||
// ],
|
||||
// [
|
||||
// 'name' => 'PantothenicAcid',
|
||||
// 'name_ch' => '泛酸',
|
||||
// 'unit' => 'mg',
|
||||
// 'value' => 0
|
||||
// ],
|
||||
// [
|
||||
// 'name' => 'TotalCholine',
|
||||
// 'name_ch' => '总胆碱',
|
||||
// 'unit' => 'mg',
|
||||
// 'value' => 0
|
||||
// ],
|
||||
// [
|
||||
// 'name' => 'Ca',
|
||||
// 'name_ch' => '钙',
|
||||
// 'unit' => 'mg',
|
||||
// 'value' => 0
|
||||
// ],
|
||||
// [
|
||||
// 'name' => 'Phosphorus',
|
||||
// 'name_ch' => '磷',
|
||||
// 'unit' => 'mg',
|
||||
// 'value' => 0
|
||||
// ],
|
||||
// [
|
||||
// 'name' => 'Kalium',
|
||||
// 'name_ch' => '钾',
|
||||
// 'unit' => 'mg',
|
||||
// 'value' => 0
|
||||
// ],
|
||||
// [
|
||||
// 'name' => 'Mg',
|
||||
// 'name_ch' => '镁',
|
||||
// 'unit' => 'mg',
|
||||
// 'value' => 0
|
||||
// ],
|
||||
// [
|
||||
// 'name' => 'Na',
|
||||
// 'name_ch' => '钠',
|
||||
// 'unit' => 'mg',
|
||||
// 'value' => 0
|
||||
// ],
|
||||
// [
|
||||
// 'name' => 'Fe',
|
||||
// 'name_ch' => '铁',
|
||||
// 'unit' => 'mg',
|
||||
// 'value' => 0
|
||||
// ],
|
||||
// [
|
||||
// 'name' => 'Zn',
|
||||
// 'name_ch' => '锌',
|
||||
// 'unit' => 'mg',
|
||||
// 'value' => 0
|
||||
// ],
|
||||
// [
|
||||
// 'name' => 'Se',
|
||||
// 'name_ch' => '硒',
|
||||
// 'unit' => 'μg',
|
||||
// 'value' => 0
|
||||
// ],
|
||||
// [
|
||||
// 'name' => 'Cu',
|
||||
// 'name_ch' => '铜',
|
||||
// 'unit' => 'mg',
|
||||
// 'value' => 0
|
||||
// ],
|
||||
// [
|
||||
// 'name' => 'Mn',
|
||||
// 'name_ch' => '锰',
|
||||
// 'unit' => 'mg',
|
||||
// 'value' => 0
|
||||
// ],
|
||||
// [
|
||||
// 'name' => 'Iodine',
|
||||
// 'name_ch' => '碘',
|
||||
// 'unit' => 'μg',
|
||||
// 'value' => 0
|
||||
// ]
|
||||
],
|
||||
'list'=>[
|
||||
[
|
||||
|
|
@ -626,12 +648,12 @@ class Index extends Base{
|
|||
if($user){
|
||||
// return $this->msg(20001,'账号信息错误');
|
||||
// 处理搜索历史 start
|
||||
$search_history_cookbook = $cfc->table($this->kitchenscale_db_msg['search_history'])
|
||||
->where(["user_id"=>$user['id'],'is_del'=>0,'type'=>'cookbook'])
|
||||
->field('id,keyword,last_searched_at,type')
|
||||
->order('last_searched_at desc')
|
||||
->limit(10)
|
||||
->select();
|
||||
// $search_history_cookbook = $cfc->table($this->kitchenscale_db_msg['search_history'])
|
||||
// ->where(["user_id"=>$user['id'],'is_del'=>0,'type'=>'cookbook'])
|
||||
// ->field('id,keyword,last_searched_at,type')
|
||||
// ->order('last_searched_at desc')
|
||||
// ->limit(10)
|
||||
// ->select();
|
||||
$search_history_food = $cfc->table($this->kitchenscale_db_msg['search_history'])
|
||||
->where(["user_id"=>$user['id'],'is_del'=>0,'type'=>'food'])
|
||||
->field('id,keyword,last_searched_at,type')
|
||||
|
|
@ -639,117 +661,49 @@ class Index extends Base{
|
|||
->limit(10)
|
||||
->select();
|
||||
// 去重
|
||||
foreach ($search_history_cookbook as $key => $value) {
|
||||
unset($search_history_cookbook[$key]['type']);
|
||||
unset($search_history_cookbook[$key]['ROW_NUMBER']);
|
||||
}
|
||||
// foreach ($search_history_cookbook as $key => $value) {
|
||||
// unset($search_history_cookbook[$key]['type']);
|
||||
// unset($search_history_cookbook[$key]['ROW_NUMBER']);
|
||||
// }
|
||||
foreach ($search_history_food as $key => $value) {
|
||||
unset($search_history_food[$key]['type']);
|
||||
unset($search_history_food[$key]['ROW_NUMBER']);
|
||||
}
|
||||
|
||||
$return_data['search_history']['cookbook'] = $search_history_cookbook;
|
||||
// $return_data['search_history']['cookbook'] = $search_history_cookbook;
|
||||
$return_data['search_history']['food'] = $search_history_food;
|
||||
// 处理搜索历史 end
|
||||
}
|
||||
// $return_data['user_data'] = $user;
|
||||
// if($return_data['user_data']['birthday']){
|
||||
// $return_data['user_data']['age'] = $this->calculate_age($return_data['user_data']['birthday']);
|
||||
// }
|
||||
// unset($return_data['user_data']['id']);
|
||||
// unset($return_data['user_data']['token']);
|
||||
// unset($return_data['user_data']['update_time']);
|
||||
// unset($return_data['user_data']['ROW_NUMBER']);
|
||||
// 获取账号下信息以及用户信息 end
|
||||
// // 处理计食器信息 start
|
||||
// $kcal = $cfc->table($this->kitchenscale_db_msg['kcal_log'])->where(["aud_id"=>$user['id'],'is_del'=>0])->whereTime('create_time', 'today')->order('id desc')->select();
|
||||
// if(count($kcal)>0){
|
||||
// $return_data['kcal_data']['title'] = '今日已摄入热量(千卡)'.$kcal[0]['create_time'];
|
||||
// $return_data['kcal_data']['time'] = $kcal[0]['create_time'];
|
||||
// foreach ($kcal as $key => $value) {
|
||||
|
||||
// $return_data['kcal_data']['kcal']['value'] = bcadd($return_data['kcal_data']['kcal']['value'],$value['kcal_val'],2);
|
||||
// $return_data['kcal_data']['other_elements']['carbohydrate']['value'] = bcadd($return_data['kcal_data']['other_elements']['carbohydrate']['value'],$value['carbohydrate_val'],2);
|
||||
// $return_data['kcal_data']['other_elements']['protein']['value'] = bcadd($return_data['kcal_data']['other_elements']['protein']['value'],$value['protein_val'],2);
|
||||
// $return_data['kcal_data']['other_elements']['fat']['value'] = bcadd($return_data['kcal_data']['other_elements']['fat']['value'],$value['fat_val'],2);
|
||||
// if($value['meals_type'] == '早餐'){
|
||||
// $return_data['kcal_data']['list'][0]['value'] = bcadd($return_data['kcal_data']['list'][0]['value'],$value['kcal_val'],2);
|
||||
// }else if($value['meals_type'] == '午餐'){
|
||||
// $return_data['kcal_data']['list'][1]['value'] = bcadd($return_data['kcal_data']['list'][1]['value'],$value['kcal_val'],2);
|
||||
// }else if($value['meals_type'] == '晚餐'){
|
||||
// $return_data['kcal_data']['list'][2]['value'] = bcadd($return_data['kcal_data']['list'][2]['value'],$value['kcal_val'],2);
|
||||
// }else{
|
||||
// $return_data['kcal_data']['list'][3]['value'] = bcadd($return_data['kcal_data']['list'][3]['value'],$value['kcal_val'],2);
|
||||
// }
|
||||
// }
|
||||
// foreach ($return_data['kcal_data']['list'] as $key => $value) {
|
||||
// if($value['value'] <= 0){
|
||||
// $return_data['kcal_data']['list'][$key]['value'] = '-';
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// if($user['is_use_set_kcal'] == 1){
|
||||
// $nutrition_data['kcal'] = $user['set_kcal'];
|
||||
// }else{
|
||||
// $user['age_num'] = $return_data['user_data']['age'];
|
||||
// $nutrition_data = $this->count_user_nutrition_all($user);
|
||||
// }
|
||||
|
||||
// if(bcdiv($return_data['kcal_data']['kcal']['value'],$nutrition_data['kcal'],2) < 0.9){
|
||||
// $return_data['kcal_data']['kcal']['standard'] = '不达标';
|
||||
// $return_data['kcal_data']['kcal']['color'] = '#F0AD4E';
|
||||
// }else if(bcdiv($return_data['kcal_data']['kcal']['value'],$nutrition_data['kcal'],2) >= 0.9 && bcdiv($return_data['kcal_data']['kcal']['value'],$nutrition_data['kcal'],2) < 1.1){
|
||||
// $return_data['kcal_data']['kcal']['standard'] = '达标';
|
||||
// $return_data['kcal_data']['kcal']['color'] = '#4CD964';
|
||||
// }else{
|
||||
// $return_data['kcal_data']['kcal']['standard'] = '超标';
|
||||
// $return_data['kcal_data']['kcal']['color'] = '#FF0000';
|
||||
// }
|
||||
// // 处理计食器信息 end
|
||||
|
||||
|
||||
// dump($return_data);
|
||||
|
||||
}else{
|
||||
|
||||
}
|
||||
// 处理banner信息 start
|
||||
// $banner_list = Db::table($this->reedaw_db_name['banner'])->where(['scene_data' => '3','is_del'=>0])->cache(43200)->order('sort_num desc')->field('id,type,pic,jump_url,parameter_data,sort_num')->select();
|
||||
// for ($i=0; $i < count($banner_list); $i++) {
|
||||
// if($banner_list[$i]['type'] != 1){
|
||||
// $banner_list[$i]['parameter_data'] = '';
|
||||
// }
|
||||
// unset($banner_list[$i]['sort_num']);
|
||||
// unset($banner_list[$i]['ROW_NUMBER']);
|
||||
// }
|
||||
// $return_data['banner_data'] = $banner_list;
|
||||
// 处理banner信息 end
|
||||
|
||||
// dump($user['language']);
|
||||
// 处理猜你喜欢信息start
|
||||
// 使用三元运算符判断$user是否存在
|
||||
$user_id = isset($user) ? $user['id'] : 9999999;
|
||||
$cnxh = new Guessyoulike;
|
||||
$cookbook_data = $cnxh->getGuessYouLike($user_id,'cookbook');
|
||||
$food_data = $cnxh->getGuessYouLike($user_id,'food');
|
||||
foreach ($cookbook_data as $key => $value) {
|
||||
$return_data['search_guess']['cookbook'][] = ['title'=>$key,'list'=>$value];
|
||||
}
|
||||
// $cookbook_data = $cnxh->getGuessYouLike($user_id,'cookbook');
|
||||
$food_data = $cnxh->getGuessYouLike($user_id,'food',null,$user['language']);
|
||||
// dump($food_data);
|
||||
// die;
|
||||
// foreach ($cookbook_data as $key => $value) {
|
||||
// $return_data['search_guess']['cookbook'][] = ['title'=>$key,'list'=>$value];
|
||||
// }
|
||||
foreach ($food_data as $key => $value) {
|
||||
$return_data['search_guess']['food_data'][] = ['title'=>$key,'list'=>$value];
|
||||
}
|
||||
// 处理猜你喜欢信息end
|
||||
|
||||
// 添加商务合作信息start
|
||||
$business_cooperation = $cfc->table($this->kitchenscale_db_msg['business_cooperation'])->where(["is_del"=>0])->field('id,title,data_url as jump_url')->find();
|
||||
$return_data['business_cooperation'] = $business_cooperation;
|
||||
// 添加商务合作信息start
|
||||
// // 添加商务合作信息start
|
||||
// $business_cooperation = $cfc->table($this->kitchenscale_db_msg['business_cooperation'])->where(["is_del"=>0])->field('id,title,data_url as jump_url')->find();
|
||||
// $return_data['business_cooperation'] = $business_cooperation;
|
||||
// // 添加商务合作信息start
|
||||
|
||||
// 添加菜谱label start
|
||||
// // 添加菜谱label start
|
||||
|
||||
$cookbook_label = $cfc->table($this->kitchenscale_db_msg['cookbook_label'])->where(["is_del"=>0])->field('id,name')->select();
|
||||
$return_data['cookbook_label'] = $cookbook_label;
|
||||
// 添加菜谱label end
|
||||
// $cookbook_label = $cfc->table($this->kitchenscale_db_msg['cookbook_label'])->where(["is_del"=>0])->field('id,name')->select();
|
||||
// $return_data['cookbook_label'] = $cookbook_label;
|
||||
// // 添加菜谱label end
|
||||
|
||||
// 添加每餐背景图start
|
||||
$return_data['meal_list'] = [
|
||||
|
|
@ -761,6 +715,13 @@ class Index extends Base{
|
|||
// 添加每餐背景图start
|
||||
|
||||
|
||||
if($user){
|
||||
if($user['language'] != 'zh'){
|
||||
$Language_action = new Language;
|
||||
|
||||
$return_data = $Language_action->handling_languages_from_multiple_countries($user['language'],$return_data);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,122 +1,447 @@
|
|||
<?php
|
||||
|
||||
namespace app\KitchenScale2\controller\app;
|
||||
namespace app\KitchenScale3\controller\app;
|
||||
|
||||
class Language extends Base
|
||||
{
|
||||
// 支持的语言列表
|
||||
// protected $supportedLanguages = [
|
||||
// 'en' => 'English',
|
||||
// 'zh-Hans' => 'Chinese',
|
||||
// 'es' => 'Spanish',
|
||||
// 'fr' => 'French',
|
||||
// 'pt' => 'Portuguese',
|
||||
// 'ar' => 'Arabic',
|
||||
// 'ru' => 'Russian',
|
||||
// 'de' => 'German'
|
||||
// ];
|
||||
protected $supportedLanguages = [
|
||||
'en' => 'English',
|
||||
'zh-Hans' => 'Chinese',
|
||||
'es' => 'Spanish',
|
||||
'fr' => 'French',
|
||||
'pt' => 'Portuguese',
|
||||
'ar' => 'Arabic',
|
||||
'ru' => 'Russian',
|
||||
'de' => 'German'
|
||||
'zh' => ['中文','zh'], // 中文(简体)★
|
||||
'en' => ['English','en'], // 英语(通用)★
|
||||
'jp' => ['日本語(Japanese)','ja'], // 日语(变化)
|
||||
'fra' => ['Français(French)','fr'], // 法语(变化)
|
||||
'de' => ['Deutsch(German)','de'], // 德语
|
||||
'kor' => ['한국어(Korean)','ko'], // 韩语(变化)
|
||||
'ru' => ['Русский(Russian)','ru'], // 俄语
|
||||
'pt' => ['Português(Portuguese)','pt'], // 葡萄牙
|
||||
'spa' => ["Español(Spanish)",'es'], // 西班牙(变化)
|
||||
'ara' => ['Arabic(العربية)','ar'], // 阿拉伯(变化)
|
||||
];
|
||||
|
||||
// 语言映射表
|
||||
protected $languageMap = [
|
||||
'en' => [
|
||||
'操作成功' => 'Success',
|
||||
'关键参数缺失' => 'Required parameter missing',
|
||||
'操作失败' => 'Operation failed',
|
||||
'信息核实错误' => 'Information verification error',
|
||||
'未找到有效数据' => 'No valid data found',
|
||||
'参数格式错误' => 'Parameter format error',
|
||||
'参数不能为空' => 'Parameter cannot be empty',
|
||||
'参数错误' => 'Parameter error',
|
||||
'自定义信息' => 'Custom message',
|
||||
'登录失效' => 'Login invalid',
|
||||
'网络异常,请稍后重试' => 'Network error, please try again later',
|
||||
'年龄' => 'Age',
|
||||
'岁' => '',
|
||||
'无' => 'none',
|
||||
'体重' => 'Weight',
|
||||
'身高' => 'Height',
|
||||
'消瘦' => 'Slim',
|
||||
'正常' => 'Normal',
|
||||
'偏重' => 'Overweight',
|
||||
'肥胖' => 'Obesity',
|
||||
'反映和衡量一个人健康状况的重要标志之一' => "One of the important indicators reflecting and measuring a person's health status",
|
||||
'人体纵向部分的长度,源于人体的纵向生长,受遗传因素的影响较大' => "The length of the longitudinal part of the human body is derived from its longitudinal growth and is greatly influenced by genetic factors",
|
||||
'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",
|
||||
'CM' => "cm",
|
||||
'年' => "-",
|
||||
'月' => "-",
|
||||
'日' => "",
|
||||
'身体得分' => "Physical score",
|
||||
'分' => "score",
|
||||
'身体类型' => "body type",
|
||||
'健美肌肉型' => "Bodybuilding muscle type",
|
||||
'低' => "Low",
|
||||
'偏低' => "Slightly low",
|
||||
'标准' => "Standard",
|
||||
'偏高' => "Slightly high",
|
||||
'高' => "High",
|
||||
'矮' => "Short",
|
||||
'偏矮' => "Slightly short",
|
||||
'脂肪率' => "Body Fat Percentage",
|
||||
'体脂率是指身体成分中,脂肪组织所占的比率。测量体脂率比单纯的只测量体重更能反映我们身体的脂肪水平(肥胖程度)。' => "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",
|
||||
'人体脂肪的重量' => "Body Fat Weight",
|
||||
'肌肉率' => "Muscle Percentage",
|
||||
'优' => "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 Mass",
|
||||
'不足' => "Insufficient",
|
||||
'肌肉量=实际体重*肌肉率' => "Muscle Mass = Actual Weight × Muscle Percentage",
|
||||
'水分' => "Body Water",
|
||||
'指人体内水分比例。' => "Refers to the proportion of water in the human body.",
|
||||
'蛋白量' => "Protein Mass",
|
||||
'蛋白量=实际体重*蛋白率' => "Protein Mass = Actual Weight × Protein Percentage",
|
||||
'骨重' => "Bone Mass",
|
||||
'单位体积内,骨组织、骨矿物质(钙、磷等)和骨基质(骨胶原、蛋白率、无机盐等等)含量,骨量代表它们骨骼健康的情况。' => "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",
|
||||
'人体内蛋白率含量。' => "The proportion of protein in the human body.",
|
||||
'基础代谢' => "Basal Metabolic Rate (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.",
|
||||
'内脏指数' => "Visceral Fat Index",
|
||||
'警惕' => "Caution",
|
||||
'危险' => "Danger",
|
||||
'内脏脂肪指数' => "Visceral Fat Level",
|
||||
'皮下脂肪' => "Subcutaneous Fat",
|
||||
'皮下脂脂肪就是贮存于皮下的脂肪组织,人体的脂肪大约有2/3贮存在皮下组织' => "Subcutaneous fat refers to adipose tissue stored under the skin. About two-thirds of body fat is stored subcutaneously.",
|
||||
'肥胖等级' => "Obesity Level",
|
||||
'体重不足' => "Underweight",
|
||||
'肥胖的程度,表现实际体重与理想体重的差距。肥胖等级是判定肥胖症的一个指标。' => "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 children in their growth and development stage, the most beneficial nutrients for height growth are proteins, carbohydrates, vitamins, and minerals. It is recommended to ensure adequate intake of nutrients such as protein, zinc, iron, calcium, vitamin D, and lysine.",
|
||||
'坚持适当、科学的跳跃运动能够科学地增加学生体重,能够改善学 生体重过低的情况;同时运动会消耗能量并加速胃肠蠕动,这会使孩子的食欲大开,再配合均衡的营养有利于孩子增重。' => "Moderate, scientifically designed jumping exercises can help underweight students gain weight by boosting energy expenditure and gastrointestinal motility, thereby increasing appetite. Combined with balanced nutrition, this supports healthy weight gain.",
|
||||
'3-7岁的孩子:骑两轮车、拍踢球、打篮球、游泳、爬山,每天高强度运动不超过30分钟。' => "Ages 3–7: Bicycling, ball games, basketball, swimming, hiking. Limit high-intensity exercise to 30 minutes daily.",
|
||||
'该年龄段睡眠时间建议:9-11小时' => "Recommended sleep duration for this age group: 9–11 hours.",
|
||||
'孩子开始对于赞赏、鼓励、认同和肯定有需求,而且此阶段父亲在孩子的性格塑造、情绪控制以及责任感培养方面扮演着重要的角色,必须告诉孩子什么事应该做、什么事不应该做,并经常性地给孩子一些积极地暗示。例如,可以时常向孩子表达“我会一直在你身边,不要害怕””我对你的进步都看在眼里等类似的话语。' => "Children begin to crave praise, encouragement, and validation. Fathers play a key role in shaping character, emotional regulation, and responsibility during this phase. Clearly define boundaries while offering positive affirmations (e.g., 'I’m always here for you,' 'I see your progress').",
|
||||
'《中华人民共和国卫生行业标准WS/T 423-2022》' => "《Chinese Health Industry Standard WS 423-2022》",
|
||||
'《中华人民共和国卫生行业标准WS/T 612-2018》' => "《Chinese Health Industry Standard WS/T 612-2018》",
|
||||
'《中华人民共和国卫生行业标准WS/T 586-2018》' => "《Chinese Health Industry Standard WS/T 586-2018》",
|
||||
'《WHO 5~19岁身高/体重判定标准》' => "《WHO Growth Reference for Children and Adolescents (5–19 Years)》",
|
||||
'头围' => "Head Circumference",
|
||||
'头围是指绕头部一周的最大长度,头围的大小与脑的发育密切相关' => "Head circumference refers to the maximum length around the head. Its measurement is closely related to brain development.",
|
||||
'心率' => "Heart rate",
|
||||
'过缓' => "Too slow",
|
||||
'过速' => "Too fast",
|
||||
'心率变化与心脏疾病密切相关,请随时关注心率变化情况,尤其是运动时期。' => "Heart rate changes are closely related to heart disease, please keep an eye on heart rate changes, especially during exercise.",
|
||||
'心率图' => "heart rate chart",
|
||||
'第1次' => "1st",
|
||||
'第2次' => "2nd",
|
||||
'第3次' => "3rd",
|
||||
'第4次' => "4th",
|
||||
'第5次' => "5th",
|
||||
'第6次' => "6th",
|
||||
'第7次' => "7th",
|
||||
'第8次' => "8th",
|
||||
'第9次' => "9th",
|
||||
'第10次' => "10th",
|
||||
'第11次' => "11th",
|
||||
'第12次' => "12th",
|
||||
|
||||
'久坐(很少或没有运动)' => 'Sedentary (little or no exercise)',
|
||||
'轻度活动(每周1-3天轻度运动)' => 'Lightly Active (light exercise 1-3 days/week)',
|
||||
'中度活动(每周3-5天中度运动)' => 'Moderately Active (moderate exercise 3-5 days/week)',
|
||||
'高度活动(每周6-7天高强度运动)' => 'Very Active (hard exercise 6-7 days/week)',
|
||||
'极高活动(体力劳动或每天高强度训练)' => 'Extremely Active (physical labor or intense daily training)',
|
||||
'碳水' => 'Carbs',
|
||||
'碳水化合物' => 'Carbohydrates',
|
||||
'脂肪' => 'Fat',
|
||||
'蛋白质' => 'Protein',
|
||||
'卡路里' => 'Calories',
|
||||
'早餐' => 'Breakfast',
|
||||
'午餐' => 'Lunch',
|
||||
'晚餐' => 'Dinner',
|
||||
'加餐' => 'Snack',
|
||||
'孩子(2-18岁)处于快速生长发育期,需充足营养,尤其蛋白质和健康脂肪。建议比例:' => 'Children (2-18 years) are in a period of rapid growth and development, requiring adequate nutrition, especially protein and healthy fats. Suggested ratios:',
|
||||
'1、碳水化合物:45%-65%总热量' => '1. Carbohydrates: 45%-65% of total calories',
|
||||
'提供能量,优选全谷物、蔬果等复合碳水,避免高糖零食。' => 'Provides energy. Prioritize complex carbohydrates like whole grains, fruits, and vegetables; avoid high-sugar snacks.',
|
||||
'2、蛋白质:10%-30%总热量' => '2. Protein: 10%-30% of total calories',
|
||||
'支持肌肉、骨骼发育,推荐鱼、蛋、瘦肉、豆类等优质蛋白。' => 'Supports muscle and bone development. Recommended sources: fish, eggs, lean meats, and legumes for high-quality protein.',
|
||||
'3、脂肪:25%-35%总热量' => '3. Fat: 25%-35% of total calories',
|
||||
'供能并促进大脑发育,选择坚果、鱼类、橄榄油等健康脂肪。' => 'Provides energy and promotes brain development. Choose healthy fats like nuts, fish, and olive oil.',
|
||||
'注意事项:若有增高、减重等目标,可咨询专业人士调整。' => 'Note: For goals like increasing height or weight loss, consult a professional for adjustments.',
|
||||
'正常成年人(无特殊健康问题)建议营养比例:' => 'Normal adults (without specific health issues) suggested nutrition ratios:',
|
||||
'1、碳水化合物:45%-65%总热量' => '1. Carbohydrates: 45%-65% of total calories',
|
||||
'主要供能,推荐全谷物、豆类等复合碳水。' => 'Main energy source. Recommended: complex carbohydrates like whole grains and legumes.',
|
||||
'2、蛋白质:10%-35%总热量' => '2. Protein: 10%-35% of total calories',
|
||||
'维持肌肉与免疫功能,日常建议0.8-1.2克/公斤体重。' => 'Maintains muscle mass and immune function. Daily recommendation: 0.8-1.2 grams per kilogram of body weight.',
|
||||
'3、脂肪:20%-35%总热量' => '3. Fat: 20%-35% of total calories',
|
||||
'支持细胞功能,以不饱和脂肪为主,减少饱和脂肪。' => 'Supports cellular functions. Emphasize unsaturated fats and reduce saturated fats.',
|
||||
'注意事项:根据活动量、健康状况微调,特殊目标需个性化建议。' => 'Note: Fine-tune based on activity level and health condition. Specific goals require personalized advice.',
|
||||
'老人(65岁以上)代谢减缓,需关注肌肉维持与慢性病预防。建议比例:' => 'Elderly (65+ years) experience slowed metabolism; focus on muscle maintenance and chronic disease prevention. Suggested ratios:',
|
||||
'1、碳水化合物:45%-65%总热量' => '1. Carbohydrates: 45%-65% of total calories',
|
||||
'选择低GI食物如全谷物、蔬菜,控制血糖。' => 'Choose low-GI foods like whole grains and vegetables to control blood sugar.',
|
||||
'2、蛋白质:10%-30%总热量' => '2. Protein: 10%-30% of total calories',
|
||||
'预防肌肉流失,优选鱼、蛋、豆类等易消化蛋白。' => 'Prevent muscle loss. Opt for easily digestible proteins like fish, eggs, and legumes.',
|
||||
'3、脂肪:20%-35%总热量' => '3. Fat: 20%-35% of total calories',
|
||||
'支持营养吸收,以橄榄油、鱼类等健康脂肪为主。' => 'Supports nutrient absorption. Focus on healthy fats like olive oil and fish.',
|
||||
'注意事项:慢性病患者需结合医生建议调整饮食。' => 'Note: Individuals with chronic conditions should adjust their diet based on doctor\'s advice.',
|
||||
'建议修改时请以医生建议为准!' => 'Please follow medical advice for any suggested modifications.',
|
||||
'千卡'=>'kcal',
|
||||
'克'=>'g',
|
||||
'超标'=>'Exceeds target',
|
||||
'达标'=>'Meets standard',
|
||||
'不达标'=>'Below standard',
|
||||
],
|
||||
'jp' => [
|
||||
'久坐(很少或没有运动)' => '運動不足(ほとんど、または全く運動しない)',
|
||||
'轻度活动(每周1-3天轻度运动)' => '低活動(週1-3日の軽い運動)',
|
||||
'中度活动(每周3-5天中度运动)' => '中程度の活動(週3-5日の中程度の運動)',
|
||||
'高度活动(每周6-7天高强度运动)' => '高活動(週6-7日の激しい運動)',
|
||||
'极高活动(体力劳动或每天高强度训练)' => '非常に高い活動(肉体労働または毎日の高強度トレーニング)',
|
||||
'碳水' => '炭水化物',
|
||||
'碳水化合物' => '炭水化物',
|
||||
'脂肪' => '脂質',
|
||||
'蛋白质' => 'タンパク質',
|
||||
'卡路里' => 'カロリー',
|
||||
'早餐' => '朝食',
|
||||
'午餐' => '昼食',
|
||||
'晚餐' => '夕食',
|
||||
'加餐' => '間食',
|
||||
'孩子(2-18岁)处于快速生长发育期,需充足营养,尤其蛋白质和健康脂肪。建议比例:' => '子供(2〜18歳)は急激な成長発達期にあり、十分な栄養、特にタンパク質と健康的な脂質が必要です。推奨比率:',
|
||||
'1、碳水化合物:45%-65%总热量' => '1. 炭水化物:総カロリーの45〜65%',
|
||||
'提供能量,优选全谷物、蔬果等复合碳水,避免高糖零食。' => 'エネルギーを供給します。全粒穀物、野菜、果物などの複合炭水化物を優先し、高糖質のスナックは避けましょう。',
|
||||
'2、蛋白质:10%-30%总热量' => '2. タンパク質:総カロリーの10〜30%',
|
||||
'支持肌肉、骨骼发育,推荐鱼、蛋、瘦肉、豆类等优质蛋白。' => '筋肉や骨の発達をサポートします。魚、卵、赤身肉、豆類などの良質なタンパク質がおすすめです。',
|
||||
'3、脂肪:25%-35%总热量' => '3. 脂質:総カロリーの25〜35%',
|
||||
'供能并促进大脑发育,选择坚果、鱼类、橄榄油等健康脂肪。' => 'エネルギー供給と脳の発達を促進します。ナッツ、魚、オリーブオイルなどの健康的な脂質を選びましょう。',
|
||||
'注意事项:若有增高、减重等目标,可咨询专业人士调整。' => '注意点:身長を伸ばす、減量などの目標がある場合は、専門家に相談して調整してください。',
|
||||
'正常成年人(无特殊健康问题)建议营养比例:' => '健康な成人(特別な健康問題なし)の推奨栄養比率:',
|
||||
'1、碳水化合物:45%-65%总热量' => '1. 炭水化物:総カロリーの45〜65%',
|
||||
'主要供能,推荐全谷物、豆类等复合碳水。' => '主なエネルギー源です。全粒穀物、豆類などの複合炭水化物をお勧めします。',
|
||||
'2、蛋白质:10%-35%总热量' => '2. タンパク質:総カロリーの10〜35%',
|
||||
'维持肌肉与免疫功能,日常建议0.8-1.2克/公斤体重。' => '筋肉量と免疫機能を維持します。1日あたり体重1kg当たり0.8〜1.2グラムが目安です。',
|
||||
'3、脂肪:20%-35%总热量' => '3. 脂質:総カロリーの20〜35%',
|
||||
'支持细胞功能,以不饱和脂肪为主,减少饱和脂肪。' => '細胞機能をサポートします。不飽和脂肪酸を中心に、飽和脂肪酸を減らしましょう。',
|
||||
'注意事项:根据活动量、健康状况微调,特殊目标需个性化建议。' => '注意点:活動量や健康状態に応じて微調整し、特別な目標には個別のアドバイスが必要です。',
|
||||
'老人(65岁以上)代谢减缓,需关注肌肉维持与慢性病预防。建议比例:' => '高齢者(65歳以上)は代謝が低下し、筋肉維持と慢性疾患の予防に注意が必要です。推奨比率:',
|
||||
'1、碳水化合物:45%-65%总热量' => '1. 炭水化物:総カロリーの45〜65%',
|
||||
'选择低GI食物如全谷物、蔬菜,控制血糖。' => '全粒穀物、野菜などの低GI食品を選び、血糖値をコントロールしましょう。',
|
||||
'2、蛋白质:10%-30%总热量' => '2. タンパク質:総カロリーの10〜30%',
|
||||
'预防肌肉流失,优选鱼、蛋、豆类等易消化蛋白。' => '筋肉の減少を防ぎます。魚、卵、豆類など消化しやすいタンパク質を優先しましょう。',
|
||||
'3、脂肪:20%-35%总热量' => '3. 脂質:総カロリーの20〜35%',
|
||||
'支持营养吸收,以橄榄油、鱼类等健康脂肪为主。' => '栄養吸収をサポートします。オリーブオイル、魚などの健康的な脂質を中心に。',
|
||||
'注意事项:慢性病患者需结合医生建议调整饮食。' => '注意点:慢性疾患のある方は、医師のアドバイスに基づいて食事を調整してください。',
|
||||
'建议修改时请以医生建议为准!' => '提案された変更を行う際は、必ず医師のアドバイスに従ってください!',
|
||||
'千卡' => 'kcal',
|
||||
'克' => 'g',
|
||||
'超标' => '目標超過',
|
||||
'达标' => '基準達成',
|
||||
'不达标' => '基準未達成',
|
||||
],
|
||||
'fra' => [
|
||||
'久坐(很少或没有运动)' => 'Sédentaire (peu ou pas d\'exercice)',
|
||||
'轻度活动(每周1-3天轻度运动)' => 'Légèrement actif (exercice léger 1-3 jours/semaine)',
|
||||
'中度活动(每周3-5天中度运动)' => 'Modérément actif (exercice modéré 3-5 jours/semaine)',
|
||||
'高度活动(每周6-7天高强度运动)' => 'Très actif (exercice intense 6-7 jours/semaine)',
|
||||
'极高活动(体力劳动或每天高强度训练)' => 'Extrêmement actif (travail physique ou entraînement intense quotidien)',
|
||||
'碳水' => 'Glucides',
|
||||
'碳水化合物' => 'Glucides',
|
||||
'脂肪' => 'Lipides',
|
||||
'蛋白质' => 'Protéines',
|
||||
'卡路里' => 'Calories',
|
||||
'早餐' => 'Petit-déjeuner',
|
||||
'午餐' => 'Déjeuner',
|
||||
'晚餐' => 'Dîner',
|
||||
'加餐' => 'Collation',
|
||||
'孩子(2-18岁)处于快速生长发育期,需充足营养,尤其蛋白质和健康脂肪。建议比例:' => 'Les enfants (2-18 ans) sont en période de croissance rapide et ont besoin d\'une nutrition adéquate, en particulier de protéines et de graisses saines. Proportions recommandées :',
|
||||
'1、碳水化合物:45%-65%总热量' => '1. Glucides : 45%-65% des calories totales',
|
||||
'提供能量,优选全谷物、蔬果等复合碳水,避免高糖零食。' => 'Fournissent de l\'énergie. Privilégiez les glucides complexes comme les céréales complètes, les fruits et légumes ; évitez les collations riches en sucre.',
|
||||
'2、蛋白质:10%-30%总热量' => '2. Protéines : 10%-30% des calories totales',
|
||||
'支持肌肉、骨骼发育,推荐鱼、蛋、瘦肉、豆类等优质蛋白。' => 'Soutiennent le développement musculaire et osseux. Sources recommandées : poisson, œufs, viandes maigres et légumineuses pour des protéines de qualité.',
|
||||
'3、脂肪:25%-35%总热量' => '3. Lipides : 25%-35% des calories totales',
|
||||
'供能并促进大脑发育,选择坚果、鱼类、橄榄油等健康脂肪。' => 'Fournissent de l\'énergie et favorisent le développement cérébral. Choisissez des graisses saines comme les noix, le poisson et l\'huile d\'olive.',
|
||||
'注意事项:若有增高、减重等目标,可咨询专业人士调整。' => 'Remarque : Pour des objectifs comme augmenter la taille ou perdre du poids, consultez un professionnel pour des ajustements.',
|
||||
'正常成年人(无特殊健康问题)建议营养比例:' => 'Adultes normaux (sans problèmes de santé spécifiques) proportions nutritionnelles suggérées :',
|
||||
'1、碳水化合物:45%-65%总热量' => '1. Glucides : 45%-65% des calories totales',
|
||||
'主要供能,推荐全谷物、豆类等复合碳水。' => 'Source d\'énergie principale. Recommandé : glucides complexes comme les céréales complètes et les légumineuses.',
|
||||
'2、蛋白质:10%-35%总热量' => '2. Protéines : 10%-35% des calories totales',
|
||||
'维持肌肉与免疫功能,日常建议0.8-1.2克/公斤体重。' => 'Maintient la masse musculaire et la fonction immunitaire. Apport quotidien recommandé : 0,8-1,2 gramme par kilogramme de poids corporel.',
|
||||
'3、脂肪:20%-35%总热量' => '3. Lipides : 20%-35% des calories totales',
|
||||
'支持细胞功能,以不饱和脂肪为主,减少饱和脂肪。' => 'Soutient les fonctions cellulaires. Privilégiez les graisses insaturées et réduisez les graisses saturées.',
|
||||
'注意事项:根据活动量、健康状况微调,特殊目标需个性化建议。' => 'Remarque : Ajustez en fonction du niveau d\'activité et de l\'état de santé. Les objectifs spécifiques nécessitent des conseils personnalisés.',
|
||||
'老人(65岁以上)代谢减缓,需关注肌肉维持与慢性病预防。建议比例:' => 'Les personnes âgées (65+ ans) ont un métabolisme ralenti ; concentrez-vous sur le maintien musculaire et la prévention des maladies chroniques. Proportions suggérées :',
|
||||
'1、碳水化合物:45%-65%总热量' => '1. Glucides : 45%-65% des calories totales',
|
||||
'选择低GI食物如全谷物、蔬菜,控制血糖。' => 'Choisissez des aliments à faible IG comme les céréales complètes et les légumes pour contrôler la glycémie.',
|
||||
'2、蛋白质:10%-30%总热量' => '2. Protéines : 10%-30% des calories totales',
|
||||
'预防肌肉流失,优选鱼、蛋、豆类等易消化蛋白。' => 'Prévient la perte musculaire. Optez pour des protéines facilement digestibles comme le poisson, les œufs et les légumineuses.',
|
||||
'3、脂肪:20%-35%总热量' => '3. Lipides : 20%-35% des calories totales',
|
||||
'支持营养吸收,以橄榄油、鱼类等健康脂肪为主。' => 'Favorise l\'absorption des nutriments. Concentrez-vous sur les graisses saines comme l\'huile d\'olive et le poisson.',
|
||||
'注意事项:慢性病患者需结合医生建议调整饮食。' => 'Remarque : Les personnes souffrant de maladies chroniques doivent ajuster leur alimentation en fonction des conseils médicaux.',
|
||||
'建议修改时请以医生建议为准!' => 'Veuillez suivre les conseils médicaux pour toute modification suggérée !',
|
||||
'千卡' => 'kcal',
|
||||
'克' => 'g',
|
||||
'超标' => 'Dépasse la cible',
|
||||
'达标' => 'Conforme à la norme',
|
||||
'不达标' => 'En dessous de la norme',
|
||||
],
|
||||
'de' => [
|
||||
'久坐(很少或没有运动)' => 'Sitzend (wenig oder keine Bewegung)',
|
||||
'轻度活动(每周1-3天轻度运动)' => 'Leicht aktiv (leichte Bewegung 1-3 Tage/Woche)',
|
||||
'中度活动(每周3-5天中度运动)' => 'Mäßig aktiv (moderate Bewegung 3-5 Tage/Woche)',
|
||||
'高度活动(每周6-7天高强度运动)' => 'Sehr aktiv (intensive Bewegung 6-7 Tage/Woche)',
|
||||
'极高活动(体力劳动或每天高强度训练)' => 'Äußerst aktiv (körperliche Arbeit oder tägliches intensives Training)',
|
||||
'碳水' => 'Kohlenhydrate',
|
||||
'碳水化合物' => 'Kohlenhydrate',
|
||||
'脂肪' => 'Fett',
|
||||
'蛋白质' => 'Protein',
|
||||
'卡路里' => 'Kalorien',
|
||||
'早餐' => 'Frühstück',
|
||||
'午餐' => 'Mittagessen',
|
||||
'晚餐' => 'Abendessen',
|
||||
'加餐' => 'Snack',
|
||||
'孩子(2-18岁)处于快速生长发育期,需充足营养,尤其蛋白质和健康脂肪。建议比例:' => 'Kinder (2-18 Jahre) befinden sich in einer Phase schnellen Wachstums und benötigen ausreichend Nährstoffe, insbesondere Protein und gesunde Fette. Empfohlene Verhältnisse:',
|
||||
'1、碳水化合物:45%-65%总热量' => '1. Kohlenhydrate: 45%-65% der Gesamtkalorien',
|
||||
'提供能量,优选全谷物、蔬果等复合碳水,避免高糖零食。' => 'Liefert Energie. Bevorzugen Sie komplexe Kohlenhydrate wie Vollkorn, Gemüse und Obst; vermeiden Sie zuckerreiche Snacks.',
|
||||
'2、蛋白质:10%-30%总热量' => '2. Protein: 10%-30% der Gesamtkalorien',
|
||||
'支持肌肉、骨骼发育,推荐鱼、蛋、瘦肉、豆类等优质蛋白。' => 'Unterstützt Muskel- und Knochenentwicklung. Empfohlene Quellen: Fisch, Eier, mageres Fleisch und Hülsenfrüchte für hochwertiges Protein.',
|
||||
'3、脂肪:25%-35%总热量' => '3. Fett: 25%-35% der Gesamtkalorien',
|
||||
'供能并促进大脑发育,选择坚果、鱼类、橄榄油等健康脂肪。' => 'Liefert Energie und fördert die Gehirnentwicklung. Wählen Sie gesunde Fette wie Nüsse, Fisch und Olivenöl.',
|
||||
'注意事项:若有增高、减重等目标,可咨询专业人士调整。' => 'Hinweis: Für Ziele wie Größenwachstum oder Gewichtsabnahme konsultieren Sie einen Fachmann für Anpassungen.',
|
||||
'正常成年人(无特殊健康问题)建议营养比例:' => 'Erwachsene ohne besondere Gesundheitsprobleme - empfohlene Nährstoffverhältnisse:',
|
||||
'1、碳水化合物:45%-65%总热量' => '1. Kohlenhydrate: 45%-65% der Gesamtkalorien',
|
||||
'主要供能,推荐全谷物、豆类等复合碳水。' => 'Hauptenergiequelle. Empfohlen: komplexe Kohlenhydrate wie Vollkorn und Hülsenfrüchte.',
|
||||
'2、蛋白质:10%-35%总热量' => '2. Protein: 10%-35% der Gesamtkalorien',
|
||||
'维持肌肉与免疫功能,日常建议0.8-1.2克/公斤体重。' => 'Erhält Muskelmasse und Immunfunktion. Tägliche Empfehlung: 0,8-1,2 Gramm pro Kilogramm Körpergewicht.',
|
||||
'3、脂肪:20%-35%总热量' => '3. Fett: 20%-35% der Gesamtkalorien',
|
||||
'支持细胞功能,以不饱和脂肪为主,减少饱和脂肪。' => 'Unterstützt Zellfunktionen. Konzentrieren Sie sich auf ungesättigte Fette und reduzieren Sie gesättigte Fette.',
|
||||
'注意事项:根据活动量、健康状况微调,特殊目标需个性化建议。' => 'Hinweis: Feinanpassung je nach Aktivitätsniveau und Gesundheitszustand. Spezifische Ziele erfordern individuelle Beratung.',
|
||||
'老人(65岁以上)代谢减缓,需关注肌肉维持与慢性病预防。建议比例:' => 'Ältere Menschen (65+ Jahre) haben einen verlangsamten Stoffwechsel; konzentrieren Sie sich auf Muskelpflege und Prävention chronischer Krankheiten. Empfohlene Verhältnisse:',
|
||||
'1、碳水化合物:45%-65%总热量' => '1. Kohlenhydrate: 45%-65% der Gesamtkalorien',
|
||||
'选择低GI食物如全谷物、蔬菜,控制血糖。' => 'Wählen Sie Lebensmittel mit niedrigem GI wie Vollkorn und Gemüse, um den Blutzucker zu kontrollieren.',
|
||||
'2、蛋白质:10%-30%总热量' => '2. Protein: 10%-30% der Gesamtkalorien',
|
||||
'预防肌肉流失,优选鱼、蛋、豆类等易消化蛋白。' => 'Verhindert Muskelabbau. Bevorzugen Sie leicht verdauliche Proteine wie Fisch, Eier und Hülsenfrüchte.',
|
||||
'3、脂肪:20%-35%总热量' => '3. Fett: 20%-35% der Gesamtkalorien',
|
||||
'支持营养吸收,以橄榄油、鱼类等健康脂肪为主。' => 'Unterstützt die Nährstoffaufnahme. Konzentrieren Sie sich auf gesunde Fette wie Olivenöl und Fisch.',
|
||||
'注意事项:慢性病患者需结合医生建议调整饮食。' => 'Hinweis: Chronisch Kranke sollten ihre Ernährung nach ärztlichem Rat anpassen.',
|
||||
'建议修改时请以医生建议为准!' => 'Bitte folgen Sie bei vorgeschlagenen Änderungen dem ärztlichen Rat!',
|
||||
'千卡' => 'kcal',
|
||||
'克' => 'g',
|
||||
'超标' => 'Über Ziel',
|
||||
'达标' => 'Entspricht dem Standard',
|
||||
'不达标' => 'Unter Standard',
|
||||
],
|
||||
'kor' => [
|
||||
'久坐(很少或没有运动)' => '비활동적 (거의 또는 전혀 운동 안 함)',
|
||||
'轻度活动(每周1-3天轻度运动)' => '저강도 활동 (주 1-3일 가벼운 운동)',
|
||||
'中度活动(每周3-5天中度运动)' => '중강도 활동 (주 3-5일 중간 강도 운동)',
|
||||
'高度活动(每周6-7天高强度运动)' => '고강도 활동 (주 6-7일 고강도 운동)',
|
||||
'极高活动(体力劳动或每天高强度训练)' => '극고강도 활동 (육체노동 또는 매일 고강도 훈련)',
|
||||
'碳水' => '탄수화물',
|
||||
'碳水化合物' => '탄수화물',
|
||||
'脂肪' => '지방',
|
||||
'蛋白质' => '단백질',
|
||||
'卡路里' => '칼로리',
|
||||
'早餐' => '아침식사',
|
||||
'午餐' => '점심식사',
|
||||
'晚餐' => '저녁식사',
|
||||
'加餐' => '간식',
|
||||
'孩子(2-18岁)处于快速生长发育期,需充足营养,尤其蛋白质和健康脂肪。建议比例:' => '아이들(2~18세)은 빠른 성장 발달기에 있으며, 충분한 영양, 특히 단백질과 건강한 지방이 필요합니다. 권장 비율:',
|
||||
'1、碳水化合物:45%-65%总热量' => '1. 탄수화물: 총 열량의 45%~65%',
|
||||
'提供能量,优选全谷物、蔬果等复合碳水,避免高糖零食。' => '에너지를 공급합니다. 전곡물, 채소, 과일 등의 복합 탄수화물을 우선 선택하고, 고당도 간식은 피하세요.',
|
||||
'2、蛋白质:10%-30%总热量' => '2. 단백질: 총 열량의 10%~30%',
|
||||
'支持肌肉、骨骼发育,推荐鱼、蛋、瘦肉、豆类等优质蛋白。' => '근육과 뼈 발달을 지원합니다. 생선, 달걀, 살코기, 콩류 등의 고품질 단백질을 추천합니다.',
|
||||
'3、脂肪:25%-35%总热量' => '3. 지방: 총 열량의 25%~35%',
|
||||
'供能并促进大脑发育,选择坚果、鱼类、橄榄油等健康脂肪。' => '에너지 공급과 뇌 발달을 촉진합니다. 견과류, 생선, 올리브오일 등의 건강한 지방을 선택하세요.',
|
||||
'注意事项:若有增高、减重等目标,可咨询专业人士调整。' => '주의사항: 키 성장, 체중 감량 등의 목표가 있을 경우, 전문가와 상담하여 조정하세요.',
|
||||
'正常成年人(无特殊健康问题)建议营养比例:' => '정상 성인(특별한 건강 문제 없음) 권장 영양 비율:',
|
||||
'1、碳水化合物:45%-65%总热量' => '1. 탄수화물: 총 열량의 45%~65%',
|
||||
'主要供能,推荐全谷物、豆类等复合碳水。' => '주요 에너지원입니다. 전곡물, 콩류 등의 복합 탄수화물을 추천합니다.',
|
||||
'2、蛋白质:10%-35%总热量' => '2. 단백질: 총 열량의 10%~35%',
|
||||
'维持肌肉与免疫功能,日常建议0.8-1.2克/公斤体重。' => '근육량과 면역 기능을 유지합니다. 체중 1kg당 하루 0.8~1.2g을 권장합니다.',
|
||||
'3、脂肪:20%-35%总热量' => '3. 지방: 총 열량의 20%~35%',
|
||||
'支持细胞功能,以不饱和脂肪为主,减少饱和脂肪。' => '세포 기능을 지원합니다. 불포화 지방을 위주로 하고 포화 지방을 줄이세요.',
|
||||
'注意事项:根据活动量、健康状况微调,特殊目标需个性化建议。' => '주의사항: 활동량과 건강 상태에 따라 세부 조정하고, 특별한 목표에는 맞춤형 조언이 필요합니다.',
|
||||
'老人(65岁以上)代谢减缓,需关注肌肉维持与慢性病预防。建议比例:' => '노인(65세 이상)은 신진대사가 느려지며, 근육 유지와 만성질환 예방에 주의해야 합니다. 권장 비율:',
|
||||
'1、碳水化合物:45%-65%总热量' => '1. 탄수화물: 총 열량의 45%~65%',
|
||||
'选择低GI食物如全谷物、蔬菜,控制血糖。' => '전곡물, 채소 등의 저GI 식품을 선택하여 혈당을 조절하세요.',
|
||||
'2、蛋白质:10%-30%总热量' => '2. 단백질: 총 열량의 10%~30%',
|
||||
'预防肌肉流失,优选鱼、蛋、豆类等易消化蛋白。' => '근육 감소를 예방합니다. 생선, 달걀, 콩류 등 소화가 쉬운 단백질을 우선 선택하세요.',
|
||||
'3、脂肪:20%-35%总热量' => '3. 지방: 총 열량의 20%~35%',
|
||||
'支持营养吸收,以橄榄油、鱼类等健康脂肪为主。' => '영양 흡수를 돕습니다. 올리브오일, 생선 등의 건강한 지방을 위주로 하세요.',
|
||||
'注意事项:慢性病患者需结合医生建议调整饮食。' => '주의사항: 만성질환 환자는 의사의 조언에 따라 식단을 조정해야 합니다.',
|
||||
'建议修改时请以医生建议为准!' => '제안된 수정사항 적용 시 의사의 조언을 따르세요!',
|
||||
'千卡' => 'kcal',
|
||||
'克' => 'g',
|
||||
'超标' => '목표 초과',
|
||||
'达标' => '기준 달성',
|
||||
'不达标' => '기준 미달',
|
||||
],
|
||||
'ru' => [
|
||||
'久坐(很少或没有运动)' => 'Сидячий (мало или нет движения)',
|
||||
'轻度活动(每周1-3天轻度运动)' => 'Малоактивный (легкие упражнения 1-3 дня/неделю)',
|
||||
'中度活动(每周3-5天中度运动)' => 'Умеренно активный (умеренные упражнения 3-5 дней/неделю)',
|
||||
'高度活动(每周6-7天高强度运动)' => 'Очень активный (интенсивные упражнения 6-7 дней/неделю)',
|
||||
'极高活动(体力劳动或每天高强度训练)' => 'Чрезвычайно активный (физический труд или ежедневные интенсивные тренировки)',
|
||||
'碳水' => 'Углеводы',
|
||||
'碳水化合物' => 'Углеводы',
|
||||
'脂肪' => 'Жиры',
|
||||
'蛋白质' => 'Белки',
|
||||
'卡路里' => 'Калории',
|
||||
'早餐' => 'Завтрак',
|
||||
'午餐' => 'Обед',
|
||||
'晚餐' => 'Ужин',
|
||||
'加餐' => 'Перекус',
|
||||
'孩子(2-18岁)处于快速生长发育期,需充足营养,尤其蛋白质和健康脂肪。建议比例:' => 'Дети (2-18 лет) находятся в фазе быстрого роста и развития, нуждаются в полноценном питании, особенно в белках и здоровых жирах. Рекомендуемые пропорции:',
|
||||
'1、碳水化合物:45%-65%总热量' => '1. Углеводы: 45%-65% от общего количества калорий',
|
||||
'提供能量,优选全谷物、蔬果等复合碳水,避免高糖零食。' => 'Обеспечивают энергией. Отдавайте предпочтение сложным углеводам, таким как цельные зерна, овощи и фрукты; избегайте высококалорийных закусок.',
|
||||
'2、蛋白质:10%-30%总热量' => '2. Белки: 10%-30% от общего количества калорий',
|
||||
'支持肌肉、骨骼发育,推荐鱼、蛋、瘦肉、豆类等优质蛋白。' => 'Поддерживают развитие мышц и костей. Рекомендуемые источники: рыба, яйца, нежирное мясо и бобовые для качественного белка.',
|
||||
'3、脂肪:25%-35%总热量' => '3. Жиры: 25%-35% от общего количества калорий',
|
||||
'供能并促进大脑发育,选择坚果、鱼类、橄榄油等健康脂肪。' => 'Обеспечивают энергией и способствуют развитию мозга. Выбирайте здоровые жиры, такие как орехи, рыба и оливковое масло.',
|
||||
'注意事项:若有增高、减重等目标,可咨询专业人士调整。' => 'Примечание: Для целей, таких как увеличение роста или потеря веса, проконсультируйтесь со специалистом для корректировки.',
|
||||
'正常成年人(无特殊健康问题)建议营养比例:' => 'Взрослые без особых проблем со здоровьем - рекомендуемые пропорции питания:',
|
||||
'1、碳水化合物:45%-65%总热量' => '1. Углеводы: 45%-65% от общего количества калорий',
|
||||
'主要供能,推荐全谷物、豆类等复合碳水。' => 'Основной источник энергии. Рекомендуется: сложные углеводы, такие как цельные зерна и бобовые.',
|
||||
'2、蛋白质:10%-35%总热量' => '2. Белки: 10%-35% от общего количества калорий',
|
||||
'维持肌肉与免疫功能,日常建议0.8-1.2克/公斤体重。' => 'Поддерживают мышечную массу и иммунную функцию. Суточная рекомендация: 0,8-1,2 грамма на килограмм массы тела.',
|
||||
'3、脂肪:20%-35%总热量' => '3. Жиры: 20%-35% от общего количества калорий',
|
||||
'支持细胞功能,以不饱和脂肪为主,减少饱和脂肪。' => 'Поддерживают клеточные функции. Делайте акцент на ненасыщенных жирах и уменьшайте насыщенные жиры.',
|
||||
'注意事项:根据活动量、健康状况微调,特殊目标需个性化建议。' => 'Примечание: Регулируйте в зависимости от уровня активности и состояния здоровья. Специфические цели требуют индивидуальных рекомендаций.',
|
||||
'老人(65岁以上)代谢减缓,需关注肌肉维持与慢性病预防。建议比例:' => 'Пожилые люди (65+ лет) имеют замедленный метаболизм; сосредоточьтесь на поддержании мышц и профилактике хронических заболеваний. Рекомендуемые пропорции:',
|
||||
'1、碳水化合物:45%-65%总热量' => '1. Углеводы: 45%-65% от общего количества калорий',
|
||||
'选择低GI食物如全谷物、蔬菜,控制血糖。' => 'Выбирайте продукты с низким ГИ, такие как цельные зерна и овощи, чтобы контролировать уровень сахара в крови.',
|
||||
'2、蛋白质:10%-30%总热量' => '2. Белки: 10%-30% от общего количества калорий',
|
||||
'预防肌肉流失,优选鱼、蛋、豆类等易消化蛋白。' => 'Предотвращает потерю мышечной массы. Отдавайте предпочтение легко усваиваемым белкам, таким как рыба, яйца и бобовые.',
|
||||
'3、脂肪:20%-35%总热量' => '3. Жиры: 20%-35% от общего количества калорий',
|
||||
'支持营养吸收,以橄榄油、鱼类等健康脂肪为主。' => 'Поддерживают усвоение питательных веществ. Сосредоточьтесь на здоровых жирах, таких как оливковое масло и рыба.',
|
||||
'注意事项:慢性病患者需结合医生建议调整饮食。' => 'Примечание: Пациентам с хроническими заболеваниями следует корректировать питание в соответствии с рекомендациями врача.',
|
||||
'建议修改时请以医生建议为准!' => 'При внесении предлагаемых изменений следуйте рекомендациям врача!',
|
||||
'千卡' => 'ккал',
|
||||
'克' => 'г',
|
||||
'超标' => 'Превышает цель',
|
||||
'达标' => 'Соответствует стандарту',
|
||||
'不达标' => 'Ниже стандарта',
|
||||
],
|
||||
'pt' => [
|
||||
'久坐(很少或没有运动)' => 'Sedentário (pouco ou nenhum exercício)',
|
||||
'轻度活动(每周1-3天轻度运动)' => 'Levemente ativo (exercício leve 1-3 dias/semana)',
|
||||
'中度活动(每周3-5天中度运动)' => 'Moderadamente ativo (exercício moderado 3-5 dias/semana)',
|
||||
'高度活动(每周6-7天高强度运动)' => 'Muito ativo (exercício intenso 6-7 dias/semana)',
|
||||
'极高活动(体力劳动或每天高强度训练)' => 'Extremamente ativo (trabalho físico ou treino intenso diário)',
|
||||
'碳水' => 'Carboidratos',
|
||||
'碳水化合物' => 'Carboidratos',
|
||||
'脂肪' => 'Gorduras',
|
||||
'蛋白质' => 'Proteínas',
|
||||
'卡路里' => 'Calorias',
|
||||
'早餐' => 'Café da manhã',
|
||||
'午餐' => 'Almoço',
|
||||
'晚餐' => 'Jantar',
|
||||
'加餐' => 'Lanche',
|
||||
'孩子(2-18岁)处于快速生长发育期,需充足营养,尤其蛋白质和健康脂肪。建议比例:' => 'Crianças (2-18 anos) estão em período de rápido crescimento e desenvolvimento, necessitando de nutrição adequada, especialmente proteínas e gorduras saudáveis. Proporções sugeridas:',
|
||||
'1、碳水化合物:45%-65%总热量' => '1. Carboidratos: 45%-65% das calorias totais',
|
||||
'提供能量,优选全谷物、蔬果等复合碳水,避免高糖零食。' => 'Fornece energia. Priorize carboidratos complexos como grãos integrais, frutas e vegetais; evite lanches ricos em açúcar.',
|
||||
'2、蛋白质:10%-30%总热量' => '2. Proteínas: 10%-30% das calorias totais',
|
||||
'支持肌肉、骨骼发育,推荐鱼、蛋、瘦肉、豆类等优质蛋白。' => 'Apoia o desenvolvimento muscular e ósseo. Fontes recomendadas: peixe, ovos, carnes magras e leguminosas para proteínas de alta qualidade.',
|
||||
'3、脂肪:25%-35%总热量' => '3. Gorduras: 25%-35% das calorias totais',
|
||||
'供能并促进大脑发育,选择坚果、鱼类、橄榄油等健康脂肪。' => 'Fornece energia e promove o desenvolvimento cerebral. Escolha gorduras saudáveis como nozes, peixe e azeite de oliva.',
|
||||
'注意事项:若有增高、减重等目标,可咨询专业人士调整。' => 'Nota: Para objetivos como aumentar a altura ou perda de peso, consulte um profissional para ajustes.',
|
||||
'正常成年人(无特殊健康问题)建议营养比例:' => 'Adultos normais (sem problemas de saúde específicos) - proporções nutricionais sugeridas:',
|
||||
'1、碳水化合物:45%-65%总热量' => '1. Carboidratos: 45%-65% das calorias totais',
|
||||
'主要供能,推荐全谷物、豆类等复合碳水。' => 'Principal fonte de energia. Recomendado: carboidratos complexos como grãos integrais e leguminosas.',
|
||||
'2、蛋白质:10%-35%总热量' => '2. Proteínas: 10%-35% das calorias totais',
|
||||
'维持肌肉与免疫功能,日常建议0.8-1.2克/公斤体重。' => 'Mantém a massa muscular e função imunológica. Recomendação diária: 0,8-1,2 gramas por quilograma de peso corporal.',
|
||||
'3、脂肪:20%-35%总热量' => '3. Gorduras: 20%-35% das calorias totais',
|
||||
'支持细胞功能,以不饱和脂肪为主,减少饱和脂肪。' => 'Apoia funções celulares. Dê ênfase a gorduras insaturadas e reduza gorduras saturadas.',
|
||||
'注意事项:根据活动量、健康状况微调,特殊目标需个性化建议。' => 'Nota: Ajuste de acordo com o nível de atividade e condição de saúde. Objetivos específicos requerem aconselhamento personalizado.',
|
||||
'老人(65岁以上)代谢减缓,需关注肌肉维持与慢性病预防。建议比例:' => 'Idosos (65+ anos) têm metabolismo desacelerado; foque na manutenção muscular e prevenção de doenças crônicas. Proporções sugeridas:',
|
||||
'1、碳水化合物:45%-65%总热量' => '1. Carboidratos: 45%-65% das calorias totais',
|
||||
'选择低GI食物如全谷物、蔬菜,控制血糖。' => 'Escolha alimentos de baixo IG como grãos integrais e vegetais para controlar o açúcar no sangue.',
|
||||
'2、蛋白质:10%-30%总热量' => '2. Proteínas: 10%-30% das calorias totais',
|
||||
'预防肌肉流失,优选鱼、蛋、豆类等易消化蛋白。' => 'Previne a perda muscular. Prefira proteínas de fácil digestão como peixe, ovos e leguminosas.',
|
||||
'3、脂肪:20%-35%总热量' => '3. Gorduras: 20%-35% das calorias totais',
|
||||
'支持营养吸收,以橄榄油、鱼类等健康脂肪为主。' => 'Apoia a absorção de nutrientes. Concentre-se em gorduras saudáveis como azeite de oliva e peixe.',
|
||||
'注意事项:慢性病患者需结合医生建议调整饮食。' => 'Nota: Pacientes com condições crônicas devem ajustar sua dieta de acordo com o aconselhamento médico.',
|
||||
'建议修改时请以医生建议为准!' => 'Por favor, siga o aconselhamento médico para quaisquer modificações sugeridas!',
|
||||
'千卡' => 'kcal',
|
||||
'克' => 'g',
|
||||
'超标' => 'Excede o alvo',
|
||||
'达标' => 'Atende ao padrão',
|
||||
'不达标' => 'Abaixo do padrão',
|
||||
],
|
||||
'spa' => [
|
||||
'久坐(很少或没有运动)' => 'Sedentario (poco o ningún ejercicio)',
|
||||
'轻度活动(每周1-3天轻度运动)' => 'Ligeramente activo (ejercicio ligero 1-3 días/semana)',
|
||||
'中度活动(每周3-5天中度运动)' => 'Moderadamente activo (ejercicio moderado 3-5 días/semana)',
|
||||
'高度活动(每周6-7天高强度运动)' => 'Muy activo (ejercicio intenso 6-7 días/semana)',
|
||||
'极高活动(体力劳动或每天高强度训练)' => 'Extremadamente activo (trabajo físico o entrenamiento intenso diario)',
|
||||
'碳水' => 'Carbohidratos',
|
||||
'碳水化合物' => 'Carbohidratos',
|
||||
'脂肪' => 'Grasas',
|
||||
'蛋白质' => 'Proteínas',
|
||||
'卡路里' => 'Calorías',
|
||||
'早餐' => 'Desayuno',
|
||||
'午餐' => 'Almuerzo',
|
||||
'晚餐' => 'Cena',
|
||||
'加餐' => 'Merienda',
|
||||
'孩子(2-18岁)处于快速生长发育期,需充足营养,尤其蛋白质和健康脂肪。建议比例:' => 'Los niños (2-18 años) están en un período de rápido crecimiento y desarrollo, necesitan nutrición adecuada, especialmente proteínas y grasas saludables. Proporciones sugeridas:',
|
||||
'1、碳水化合物:45%-65%总热量' => '1. Carbohidratos: 45%-65% de las calorías totales',
|
||||
'提供能量,优选全谷物、蔬果等复合碳水,避免高糖零食。' => 'Proporciona energía. Priorice carbohidratos complejos como granos integrales, frutas y verduras; evite snacks altos en azúcar.',
|
||||
'2、蛋白质:10%-30%总热量' => '2. Proteínas: 10%-30% de las calorías totales',
|
||||
'支持肌肉、骨骼发育,推荐鱼、蛋、瘦肉、豆类等优质蛋白。' => 'Apoya el desarrollo muscular y óseo. Fuentes recomendadas: pescado, huevos, carnes magras y legumbres para proteínas de alta calidad.',
|
||||
'3、脂肪:25%-35%总热量' => '3. Grasas: 25%-35% de las calorías totales',
|
||||
'供能并促进大脑发育,选择坚果、鱼类、橄榄油等健康脂肪。' => 'Proporciona energía y promueve el desarrollo cerebral. Elija grasas saludables como nueces, pescado y aceite de oliva.',
|
||||
'注意事项:若有增高、减重等目标,可咨询专业人士调整。' => 'Nota: Para objetivos como aumentar la estatura o pérdida de peso, consulte a un profesional para ajustes.',
|
||||
'正常成年人(无特殊健康问题)建议营养比例:' => 'Adultos normales (sin problemas de salud específicos) - proporciones nutricionales sugeridas:',
|
||||
'1、碳水化合物:45%-65%总热量' => '1. Carbohidratos: 45%-65% de las calorías totales',
|
||||
'主要供能,推荐全谷物、豆类等复合碳水。' => 'Fuente principal de energía. Recomendado: carbohidratos complejos como granos integrales y legumbres.',
|
||||
'2、蛋白质:10%-35%总热量' => '2. Proteínas: 10%-35% de las calorías totales',
|
||||
'维持肌肉与免疫功能,日常建议0.8-1.2克/公斤体重。' => 'Mantiene la masa muscular y la función inmunológica. Recomendación diaria: 0,8-1,2 gramos por kilogramo de peso corporal.',
|
||||
'3、脂肪:20%-35%总热量' => '3. Grasas: 20%-35% de las calorías totales',
|
||||
'支持细胞功能,以不饱和脂肪为主,减少饱和脂肪。' => 'Apoya las funciones celulares. Enfatice las grasas insaturadas y reduzca las grasas saturadas.',
|
||||
'注意事项:根据活动量、健康状况微调,特殊目标需个性化建议。' => 'Nota: Ajuste según el nivel de actividad y condición de salud. Los objetivos específicos requieren asesoramiento personalizado.',
|
||||
'老人(65岁以上)代谢减缓,需关注肌肉维持与慢性病预防。建议比例:' => 'Adultos mayores (65+ años) tienen metabolismo ralentizado; enfoque en mantenimiento muscular y prevención de enfermedades crónicas. Proporciones sugeridas:',
|
||||
'1、碳水化合物:45%-65%总热量' => '1. Carbohidratos: 45%-65% de las calorías totales',
|
||||
'选择低GI食物如全谷物、蔬菜,控制血糖。' => 'Elija alimentos de bajo IG como granos integrales y verduras para controlar el azúcar en sangre.',
|
||||
'2、蛋白质:10%-30%总热量' => '2. Proteínas: 10%-30% de las calorías totales',
|
||||
'预防肌肉流失,优选鱼、蛋、豆类等易消化蛋白。' => 'Previene la pérdida muscular. Prefiera proteínas fácilmente digeribles como pescado, huevos y legumbres.',
|
||||
'3、脂肪:20%-35%总热量' => '3. Grasas: 20%-35% de las calorías totales',
|
||||
'支持营养吸收,以橄榄油、鱼类等健康脂肪为主。' => 'Apoya la absorción de nutrientes. Concéntrese en grasas saludables como aceite de oliva y pescado.',
|
||||
'注意事项:慢性病患者需结合医生建议调整饮食。' => 'Nota: Los pacientes con condiciones crónicas deben ajustar su dieta según el consejo médico.',
|
||||
'建议修改时请以医生建议为准!' => '¡Por favor, siga el consejo médico para cualquier modificación sugerida!',
|
||||
'千卡' => 'kcal',
|
||||
'克' => 'g',
|
||||
'超标' => 'Excede el objetivo',
|
||||
'达标' => 'Cumple con el estándar',
|
||||
'不达标' => 'Por debajo del estándar',
|
||||
],
|
||||
'ara' => [
|
||||
'久坐(很少或没有运动)' => 'قليل النشاط (قليل أو بدون تمارين)',
|
||||
'轻度活动(每周1-3天轻度运动)' => 'نشط قليلاً (تمارين خفيفة 1-3 أيام/أسبوع)',
|
||||
'中度活动(每周3-5天中度运动)' => 'نشط بشكل معتدل (تمارين متوسطة 3-5 أيام/أسبوع)',
|
||||
'高度活动(每周6-7天高强度运动)' => 'نشط جداً (تمارين مكثفة 6-7 أيام/أسبوع)',
|
||||
'极高活动(体力劳动或每天高强度训练)' => 'نشط للغاية (عمل بدني أو تدريب مكثف يومي)',
|
||||
'碳水' => 'الكربوهيدرات',
|
||||
'碳水化合物' => 'الكربوهيدرات',
|
||||
'脂肪' => 'الدهون',
|
||||
'蛋白质' => 'البروتين',
|
||||
'卡路里' => 'السعرات الحرارية',
|
||||
'早餐' => 'الإفطار',
|
||||
'午餐' => 'الغداء',
|
||||
'晚餐' => 'العشاء',
|
||||
'加餐' => 'وجبة خفيفة',
|
||||
'孩子(2-18岁)处于快速生长发育期,需充足营养,尤其蛋白质和健康脂肪。建议比例:' => 'الأطفال (2-18 سنة) في مرحلة نمو وتطور سريع، يحتاجون إلى تغذية كافية، خاصة البروتين والدهون الصحية. النسب المقترحة:',
|
||||
'1、碳水化合物:45%-65%总热量' => '1. الكربوهيدرات: 45%-65% من إجمالي السعرات الحرارية',
|
||||
'提供能量,优选全谷物、蔬果等复合碳水,避免高糖零食。' => 'يوفر الطاقة. يفضل الكربوهيدرات المعقدة مثل الحبوب الكاملة والخضار والفواكه؛ تجنب الوجبات الخفيفة عالية السكر.',
|
||||
'2、蛋白质:10%-30%总热量' => '2. البروتين: 10%-30% من إجمالي السعرات الحرارية',
|
||||
'支持肌肉、骨骼发育,推荐鱼、蛋、瘦肉、豆类等优质蛋白。' => 'يدعم نمو العضلات والعظام. المصادر الموصى بها: السمك، البيض، اللحوم الخالية من الدهون، والبقوليات للبروتين عالي الجودة.',
|
||||
'3、脂肪:25%-35%总热量' => '3. الدهون: 25%-35% من إجمالي السعرات الحرارية',
|
||||
'供能并促进大脑发育,选择坚果、鱼类、橄榄油等健康脂肪。' => 'يوفر الطاقة ويعزز نمو الدماغ. اختر الدهون الصحية مثل المكسرات والأسماك وزيت الزيتون.',
|
||||
'注意事项:若有增高、减重等目标,可咨询专业人士调整。' => 'ملاحظة: لأهداف مثل زيادة الطول أو فقدان الوزن، استشر أخصائي للتعديلات.',
|
||||
'正常成年人(无特殊健康问题)建议营养比例:' => 'البالغون الطبيعيون (بدون مشاكل صحية خاصة) - نسب التغذية المقترحة:',
|
||||
'1、碳水化合物:45%-65%总热量' => '1. الكربوهيدرات: 45%-65% من إجمالي السعرات الحرارية',
|
||||
'主要供能,推荐全谷物、豆类等复合碳水。' => 'المصدر الرئيسي للطاقة. موصى به: الكربوهيدرات المعقدة مثل الحبوب الكاملة والبقوليات.',
|
||||
'2、蛋白质:10%-35%总热量' => '2. البروتين: 10%-35% من إجمالي السعرات الحرارية',
|
||||
'维持肌肉与免疫功能,日常建议0.8-1.2克/公斤体重。' => 'يحافظ على كتلة العضلات والوظيفة المناعية. التوصية اليومية: 0.8-1.2 جرام لكل كيلوغرام من وزن الجسم.',
|
||||
'3、脂肪:20%-35%总热量' => '3. الدهون: 20%-35% من إجمالي السعرات الحرارية',
|
||||
'支持细胞功能,以不饱和脂肪为主,减少饱和脂肪。' => 'يدعم الوظائف الخلوية. ركز على الدهون غير المشبعة وقلل الدهون المشبعة.',
|
||||
'注意事项:根据活动量、健康状况微调,特殊目标需个性化建议。' => 'ملاحظة: اضبط حسب مستوى النشاط والحالة الصحية. الأهداف الخاصة تتطلب مشورة مخصصة.',
|
||||
'老人(65岁以上)代谢减缓,需关注肌肉维持与慢性病预防。建议比例:' => 'كبار السن (65+ سنة) لديهم تباطؤ في التمثيل الغذائي؛ ركز على صيانة العضلات والوقاية من الأمراض المزمنة. النسب المقترحة:',
|
||||
'1、碳水化合物:45%-65%总热量' => '1. الكربوهيدرات: 45%-65% من إجمالي السعرات الحرارية',
|
||||
'选择低GI食物如全谷物、蔬菜,控制血糖。' => 'اختر أطعمة ذات مؤشر جلايسيمي منخفض مثل الحبوب الكاملة والخضروات للتحكم في سكر الدم.',
|
||||
'2、蛋白质:10%-30%总热量' => '2. البروتين: 10%-30% من إجمالي السعرات الحرارية',
|
||||
'预防肌肉流失,优选鱼、蛋、豆类等易消化蛋白。' => 'يمنع فقدان العضلات. يفضل البروتينات سهلة الهضم مثل السمك والبيض والبقوليات.',
|
||||
'3、脂肪:20%-35%总热量' => '3. الدهون: 20%-35% من إجمالي السعرات الحرارية',
|
||||
'支持营养吸收,以橄榄油、鱼类等健康脂肪为主。' => 'يدعم امتصاص المغذيات. ركز على الدهون الصحية مثل زيت الزيتون والأسماك.',
|
||||
'注意事项:慢性病患者需结合医生建议调整饮食。' => 'ملاحظة: يجب على مرضى الأمراض المزمنة تعديل نظامهم الغذائي بناءً على نصيحة الطبيب.',
|
||||
'建议修改时请以医生建议为准!' => 'يرجى اتباع نصيحة الطبيب لأي تعديلات مقترحة!',
|
||||
'千卡' => 'سعر حراري',
|
||||
'克' => 'جرام',
|
||||
'超标' => 'يتجاوز الهدف',
|
||||
'达标' => 'يلبي المعيار',
|
||||
'不达标' => 'أقل من المعيار',
|
||||
],
|
||||
// 可以添加更多语言映射
|
||||
];
|
||||
|
|
@ -133,14 +458,14 @@ class Language extends Base
|
|||
// dump($data);
|
||||
// 验证语言是否支持
|
||||
if (!$this->isLanguageSupported($language)) {
|
||||
return $this->msg($data['data']);
|
||||
return $data;
|
||||
}
|
||||
|
||||
// 如果是数组,递归处理每个元素
|
||||
if (is_array($data)) {
|
||||
// dump(2);
|
||||
$data = $this->translateArray($language, $data);
|
||||
return $this->msg($data['data']);
|
||||
return $data;
|
||||
}
|
||||
|
||||
// 如果是字符串,直接翻译
|
||||
|
|
|
|||
|
|
@ -1,19 +1,30 @@
|
|||
<?php
|
||||
|
||||
namespace app\KitchenScale2\controller\app;
|
||||
namespace app\KitchenScale3\controller\app;
|
||||
|
||||
|
||||
use think\Db;
|
||||
use PHPMailer\PHPMailer\PHPMailer;
|
||||
use app\app\controller\Wechat;// 引入Wechat服务类
|
||||
|
||||
|
||||
class Login extends Base{
|
||||
protected $code_time = 50;
|
||||
protected $code_time = 300;
|
||||
// protected $token_time = 2592000;//30天的秒数
|
||||
protected $default_head_pic = 'http://tc.pcxbc.com/tsf/head_pic.png';
|
||||
protected $login_use_db_name = [
|
||||
'1'=>'app_account_number',
|
||||
'account'=>'app_user_data_multilingual',
|
||||
];
|
||||
protected $language_country = [
|
||||
'zh' => ['中文','zh'], // 中文(简体)★
|
||||
'en' => ['English','en'], // 英语(通用)★
|
||||
'jp' => ['日本語(Japanese)','ja'], // 日语(变化)
|
||||
'fra' => ['Français(French)','fr'], // 法语(变化)
|
||||
'de' => ['Deutsch(German)','de'], // 德语
|
||||
'kor' => ['한국어(Korean)','ko'], // 韩语(变化)
|
||||
'ru' => ['Русский(Russian)','ru'], // 俄语
|
||||
'pt' => ['Português(Portuguese)','pt'], // 葡萄牙
|
||||
'spa' => ["Español(Spanish)",'es'], // 西班牙(变化)
|
||||
'ara' => ['Arabic(العربية)','ar'], // 阿拉伯(变化)
|
||||
];
|
||||
|
||||
################################################################接口################################################################
|
||||
|
|
@ -21,68 +32,84 @@ class Login extends Base{
|
|||
################################################################接口################################################################
|
||||
|
||||
// 注册
|
||||
public function register_action($data = ['data'=>13408173311,'password'=>'123','code'=>'746119']){
|
||||
public function register_action(){
|
||||
try {
|
||||
// 你的业务逻辑
|
||||
// 验证是否前段发送过来的数据
|
||||
if(count(input('post.')) > 0){
|
||||
$data = input('post.');
|
||||
}
|
||||
$data = input('post.');
|
||||
// 验证数据项是否完整
|
||||
if(!array_key_exists('data', $data) || !array_key_exists('password', $data) || !array_key_exists('code', $data)){
|
||||
return $this->msg(10001);
|
||||
if(!array_key_exists('data', $data)){
|
||||
return $this->msg(10001,'data is miss');
|
||||
}
|
||||
// 验证数据值是否合规
|
||||
if(!$data['data'] || !$data['password'] || !$data['code']){
|
||||
return $this->msg(10006);
|
||||
if(!array_key_exists('password', $data)){
|
||||
return $this->msg(10001,'password is miss');
|
||||
}
|
||||
if(!array_key_exists('confirm_password', $data)){
|
||||
return $this->msg(10001,'confirm_password is miss');
|
||||
}
|
||||
if(!array_key_exists('code', $data)){
|
||||
return $this->msg(10001,'code is miss');
|
||||
}
|
||||
if(!array_key_exists('language', $data)){
|
||||
return $this->msg(10001,'language is miss');
|
||||
}
|
||||
|
||||
if (!preg_match('/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/', $data['data'])) {
|
||||
return $this->msg(10005,'data type is error');
|
||||
}else{
|
||||
if(!strlen($data['data']) > 20){
|
||||
return $this->msg(10005,'data too long');
|
||||
}
|
||||
}
|
||||
if(!$this->verify_data_is_ok($data['password'],'str')){
|
||||
return $this->msg(10005);
|
||||
return $this->msg(10005,'password type is error');
|
||||
}else{
|
||||
if(!strlen($data['password']) > 20){
|
||||
return $this->msg(10005,'password too long');
|
||||
}else{
|
||||
if($data['password'] != $data['confirm_password']){
|
||||
return $this->msg(10005,'请确认密码');
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!$this->verify_data_is_ok($data['code'],'num')){
|
||||
return $this->msg(10005);
|
||||
}
|
||||
// 验证是手机还是邮箱
|
||||
$montage_data = $this->is_tel_email($data['data']);
|
||||
if($montage_data == false){
|
||||
return $this->msg(10005);
|
||||
if(!array_key_exists($data['language'],$this->language_country)){
|
||||
return $this->msg(10005,'language type is error');
|
||||
}
|
||||
|
||||
|
||||
$cfc = Db::connect('cfc_db');
|
||||
// 查询账号是否已经注册
|
||||
$inspect_repeat = Db::table($this->login_use_db_name['1'])->where([$montage_data=>$data['data'],'is_del'=>0])->count();
|
||||
$inspect_repeat = $cfc->table($this->login_use_db_name['account'])->where(['account'=>$data['data'],'is_del'=>0])->field('id,token')->find();
|
||||
|
||||
if($inspect_repeat > 0){
|
||||
if($inspect_repeat){
|
||||
return $this->msg(10002,'注册失败,账号已存在');
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 检查验证码
|
||||
$code_result = $this->check_code($data['data'],$data['code']);
|
||||
if($code_result !== true){
|
||||
return $this->msg(10002,$code_result);
|
||||
return $this->msg(10002,'验证码错误或失效');
|
||||
}
|
||||
|
||||
// 验证完之后
|
||||
$set_data = [];
|
||||
if($montage_data == 'tel'){
|
||||
$set_data['tel'] = $data['data'];
|
||||
}else{
|
||||
$set_data['email'] = $data['data'];
|
||||
}
|
||||
$set_data['password'] = $data['password'];
|
||||
$set_data['account'] = $data['data'];
|
||||
$set_data['head_pic'] = $this->default_head_pic;
|
||||
$set_data['nickname'] = '用户'.time();
|
||||
$set_data['create_time'] = date('Y-m-d H:i:s');
|
||||
$set_data['login_time'] = date('Y-m-d H:i:s');
|
||||
$set_data['language'] = $data['language'];
|
||||
$set_data['token'] = md5($data['data'].$this->create_random_string(12).time());
|
||||
$result = Db::table($this->login_use_db_name['1'])->insertGetId($set_data);
|
||||
|
||||
$result = $cfc->table($this->login_use_db_name['account'])->insertGetId($set_data);
|
||||
if($result){
|
||||
$return_data = $this->msg(['token'=>$set_data['token'],'aan_id'=>$result]);
|
||||
return $this->msg(['token'=>$set_data['token'],'aan_id'=>$result]);
|
||||
}else{
|
||||
$return_data = $this->msg(10002);
|
||||
return $this->msg(10002);
|
||||
}
|
||||
|
||||
// 成功
|
||||
$this->record_api_log($data, null, $return_data);
|
||||
return $return_data;
|
||||
} catch (\Exception $e) {
|
||||
// 捕获异常
|
||||
$logContent["flie"] = $e->getFile();
|
||||
|
|
@ -99,6 +126,137 @@ class Login extends Base{
|
|||
}
|
||||
|
||||
}
|
||||
// 登录
|
||||
public function login_action(){
|
||||
try {
|
||||
// 你的业务逻辑
|
||||
$data = input('post.');
|
||||
|
||||
if(!array_key_exists('data', $data)){
|
||||
return $this->msg(10001,'data is miss');
|
||||
}
|
||||
if(!array_key_exists('validate_data', $data)){
|
||||
return $this->msg(10001,'validate_data is miss');
|
||||
}
|
||||
if(!array_key_exists('validate_type', $data)){
|
||||
return $this->msg(10001,'validate_type is miss');
|
||||
}
|
||||
|
||||
if (!preg_match('/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/', $data['data'])) {
|
||||
return $this->msg(10005,'data type is error');
|
||||
}else{
|
||||
if(!strlen($data['data']) > 30){
|
||||
return $this->msg(10005,'data too long');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$cfc = Db::connect('cfc_db');
|
||||
|
||||
if($data['validate_type'] == 'code'){
|
||||
if(!$this->verify_data_is_ok($data['validate_data'],'intnum')){
|
||||
return $this->msg(10005,'validate_data type is error');
|
||||
}
|
||||
|
||||
// 检查验证码
|
||||
$code_result = $this->check_code($data['data'],$data['validate_data']);
|
||||
if($code_result !== true){
|
||||
return $this->msg(20001,'验证码错误或失效');
|
||||
}
|
||||
|
||||
|
||||
$code_name = $data['data'];
|
||||
if($this->check_code($code_name,$data['validate_data']) === true){
|
||||
// 查询账号是否已经注册
|
||||
$inspect_repeat = $cfc->table($this->login_use_db_name['account'])->where(['account'=>$data['data']])->field('id,token')->find();
|
||||
if($inspect_repeat){
|
||||
$cfc->table($this->login_use_db_name['account'])->where(['token'=>$inspect_repeat['token']])->update(['login_time'=>date('Y-m-d H:i:s')]);
|
||||
return $this->msg(['token'=>$inspect_repeat['token'],'aan_id'=>$inspect_repeat['id']],'登录成功');
|
||||
}else{
|
||||
return $this->msg(10003,'账号未注册,请先注册');
|
||||
}
|
||||
}else{
|
||||
return $this->msg(10002,'登录失败,验证码错误或失效');
|
||||
}
|
||||
}else if($data['validate_type'] == 'password'){
|
||||
if(!$this->verify_data_is_ok($data['validate_data'],'str')){
|
||||
return $this->msg(10005,'validate_data type is error');
|
||||
}else{
|
||||
if(!strlen($data['validate_data']) > 20){
|
||||
return $this->msg(10005,'validate_data too long');
|
||||
}
|
||||
}
|
||||
// 查询账号是否已经注册
|
||||
$inspect_repeat = $cfc->table($this->login_use_db_name['account'])->where(['account'=>$data['data'],'password'=>$data['validate_data']])->field('id,token')->find();
|
||||
|
||||
if($inspect_repeat){
|
||||
|
||||
$cfc->table($this->login_use_db_name['account'])->where(['token'=>$inspect_repeat['token']])->update(['login_time'=>date('Y-m-d H:i:s')]);
|
||||
|
||||
return $this->msg(['token'=>$inspect_repeat['token'],'aan_id'=>$inspect_repeat['id']],'登录成功');
|
||||
}else{
|
||||
return $this->msg(10003,'账号未注册,请先注册');
|
||||
}
|
||||
}else{
|
||||
return $this->msg(10005,'validate_type type is error');
|
||||
}
|
||||
} 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'] .= "方法: " . __METHOD__ . "\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 user_quit_account($data=['token'=>'0dafb98a10995c98b5a33b7d59d986ca']){
|
||||
// try {
|
||||
// 你的业务逻辑
|
||||
if(count(input('post.')) > 0){
|
||||
$data = input('post.');
|
||||
}
|
||||
if(!array_key_exists('token', $data)){
|
||||
$return_data = $this->msg(10001);
|
||||
}
|
||||
// if($this->token_time_validate($data['token']) === false){
|
||||
// $return_data = $this->msg(20001);
|
||||
// }
|
||||
$cfc = Db::connect('cfc_db');
|
||||
$result = $cfc->table($this->login_use_db_name['account'])->where(['token'=>$data['token']])->update(['login_time'=>'2000-01-01 00:00:00']);
|
||||
if($result){
|
||||
$return_data = $this->msg([]);
|
||||
}else{
|
||||
$return_data = $this->msg(10002);
|
||||
}
|
||||
// 成功
|
||||
$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'] .= "方法: " . __METHOD__ . "\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 reset_password($data = ['data'=>'18530934717','password'=>'ceshi1','c_password'=>'ceshi1','code'=>'491661']){
|
||||
try {
|
||||
|
|
@ -164,206 +322,9 @@ class Login extends Base{
|
|||
}
|
||||
|
||||
}
|
||||
// 登录
|
||||
public function login_action($data = ['data'=>'18530934717','validate_data'=>'0932','type'=>'login','validate_type'=>'password']){
|
||||
try {
|
||||
// 你的业务逻辑
|
||||
if(count(input('post.')) > 0){
|
||||
$data = input('post.');
|
||||
}
|
||||
if(!array_key_exists('data', $data) || !array_key_exists('validate_data', $data) || !array_key_exists('validate_type', $data)){
|
||||
return $this->msg(10001);
|
||||
}
|
||||
// 检测是否为手机
|
||||
$montage_data = $this->is_tel_email($data['data']);
|
||||
if($montage_data == false){
|
||||
return $this->msg(10005);
|
||||
}
|
||||
|
||||
$verify_result[$montage_data] = $data['data'];
|
||||
$verify_result['is_del'] = 0;
|
||||
// 检测校验途径
|
||||
if($data['validate_type'] == 'code'){
|
||||
$code_name = $data['data'];
|
||||
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();
|
||||
if($result){
|
||||
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']]);
|
||||
}else{
|
||||
$set_data['password'] = '';
|
||||
$set_data[$montage_data] = $data['data'];
|
||||
$set_data['head_pic'] = $this->default_head_pic;
|
||||
$set_data['nickname'] = '用户'.$data['data'];
|
||||
$set_data['create_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());
|
||||
$result = Db::table($this->login_use_db_name['1'])->insertGetId($set_data);
|
||||
if($result){
|
||||
$return_data = $this->msg(['token'=>$set_data['token'],'aan_id'=>$result],'登录成功');
|
||||
}else{
|
||||
$return_data = $this->msg(10002);
|
||||
}
|
||||
}
|
||||
}else{
|
||||
$return_data = $this->msg(10003,'登录失败,验证码错误或失效');
|
||||
}
|
||||
}else if($data['validate_type'] == 'password'){
|
||||
// $verify_result['password'] = $data['validate_data'];
|
||||
$result = Db::table($this->login_use_db_name['1'])->where($verify_result)->field('id,token,password')->find();
|
||||
if($result){
|
||||
if($result['password'] == ''){
|
||||
$return_data = $this->msg(10003,'该账户未设密码,请用验证码登录');
|
||||
}
|
||||
if($data['validate_data'] != $result['password']){
|
||||
$return_data = $this->msg(10003,'账号密码错误');
|
||||
}else{
|
||||
|
||||
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']],'登录成功');
|
||||
}
|
||||
}else{
|
||||
$return_data = $this->msg(10003,'账号未注册,请先注册');
|
||||
}
|
||||
}else{
|
||||
$return_data = $this->msg(10003,'校验参数错误');
|
||||
}
|
||||
|
||||
// 成功
|
||||
$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'] .= "方法: " . __METHOD__ . "\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 wechat_quick_login(){
|
||||
try {
|
||||
// 你的业务逻辑
|
||||
if(count(input('post.')) > 0){
|
||||
$data = input('post.');
|
||||
}
|
||||
if(!array_key_exists('code', $data)){
|
||||
// return $this->msg(10001,'');
|
||||
return $this->msg(10001,'code is miss');
|
||||
}
|
||||
if(!array_key_exists('encryptedData', $data)){
|
||||
return $this->msg(10001,'encryptedData is miss');
|
||||
}
|
||||
if(!array_key_exists('iv', $data)){
|
||||
return $this->msg(10001,'iv is miss');
|
||||
}
|
||||
// 校验参数
|
||||
if (empty($data['code'])) {
|
||||
return $this->msg(10001,'code is miss.');
|
||||
}
|
||||
if (empty($data['encryptedData'])) {
|
||||
return $this->msg(10001,'encryptedData is miss.');
|
||||
}
|
||||
if (empty($data['iv'])) {
|
||||
return $this->msg(10001,'iv is miss.');
|
||||
}
|
||||
|
||||
|
||||
// 调用Wechat服务类处理微信登录逻辑
|
||||
$wechatService = new Wechat();
|
||||
$result = $wechatService->handleWechatLogin($data['code'], $data['encryptedData'], $data['iv']);
|
||||
|
||||
// die;
|
||||
if($result['code'] == 0){
|
||||
// return $this->msg($result['code'],$result['msg']);
|
||||
|
||||
$user_data = Db::table($this->login_use_db_name['1'])->where(['tel'=>$result['data']['phoneNumber'],'is_del'=>0])->find();
|
||||
|
||||
if($user_data){
|
||||
Db::table($this->login_use_db_name['1'])->where(['token'=>$user_data['token']])->update(['login_time'=>date('Y-m-d H:i:s')]);
|
||||
$return_data = $this->msg(['token'=>$user_data['token'],'aan_id'=>$user_data['id']]);
|
||||
}else{
|
||||
$set_data['password'] = '';
|
||||
$set_data['tel'] = $result['data']['phoneNumber'];
|
||||
$set_data['head_pic'] = $this->default_head_pic;
|
||||
$set_data['nickname'] = '用户'.$result['data']['phoneNumber'];
|
||||
$set_data['create_time'] = date('Y-m-d H:i:s');
|
||||
$set_data['login_time'] = date('Y-m-d H:i:s');
|
||||
$set_data['token'] = md5($result['data']['phoneNumber'].$this->create_random_string(12).time());
|
||||
$set_user_result = Db::table($this->login_use_db_name['1'])->insertGetId($set_data);
|
||||
if($set_user_result){
|
||||
$return_data = $this->msg(['token'=>$set_data['token'],'aan_id'=>$set_user_result],'登录成功');
|
||||
}else{
|
||||
$return_data = $this->msg(10002);
|
||||
}
|
||||
}
|
||||
return $return_data;
|
||||
}else{
|
||||
return $this->msg($result['code'],$result['msg']);
|
||||
}
|
||||
|
||||
} 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'] .= "方法: " . __METHOD__ . "\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 user_quit_account($data=['token'=>'0dafb98a10995c98b5a33b7d59d986ca']){
|
||||
try {
|
||||
// 你的业务逻辑
|
||||
if(count(input('post.')) > 0){
|
||||
$data = input('post.');
|
||||
}
|
||||
if(!array_key_exists('token', $data)){
|
||||
$return_data = $this->msg(10001);
|
||||
}
|
||||
if($this->token_time_validate($data['token']) === false){
|
||||
$return_data = $this->msg(20001);
|
||||
}
|
||||
|
||||
$result = Db::table($this->login_use_db_name['1'])->where(['token'=>$data['token']])->update(['login_time'=>'2024-09-01 00:00:00']);
|
||||
if($result){
|
||||
$return_data = $this->msg([]);
|
||||
}else{
|
||||
$return_data = $this->msg(10002);
|
||||
}
|
||||
// 成功
|
||||
$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'] .= "方法: " . __METHOD__ . "\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 delete_account($data=['token'=>'0dafb98a10995c98b5a33b7d59d986ca']){
|
||||
try {
|
||||
|
|
@ -423,107 +384,24 @@ class Login extends Base{
|
|||
return $this->msg(10001);
|
||||
}
|
||||
|
||||
if(cache($data['data'])){
|
||||
if(cache($data['data'].'_cfc_multilingual')){
|
||||
return $this->msg(10002,'60秒仅可发送一次验证码');
|
||||
}
|
||||
|
||||
$num = mt_rand(100000,999999);
|
||||
if (preg_match('/^\d{11}$/', $data['data'])) {
|
||||
// 本公司短信
|
||||
$result = $this->send_tel_code($data['data'],$num);
|
||||
// 阿里云短信
|
||||
// $sms_all = new Smsaliyun;
|
||||
// $result = $sms_all->send_sms($data['data'],$num);
|
||||
// dump($result);
|
||||
$road = 'tel';
|
||||
}else{
|
||||
$result = $this->send_email_code([$data['data']],['title'=>'体测APP验证码','from_user_name'=>'体测APP','content'=>$num]);
|
||||
$road = 'email';
|
||||
}
|
||||
|
||||
$result = $this->send_email_code([$data['data']],['title'=>'CAPTCHA','from_user_name'=>'Wendu','content'=>$num]);
|
||||
if(is_array($result) && $result['code'] == 0){
|
||||
cache($data['data'], $num, $this->code_time);
|
||||
// return $this->msg(['code'=>$num]);
|
||||
cache($data['data'].'_cfc_multilingual', $num, $this->code_time);
|
||||
return $this->msg([]);
|
||||
// return true;
|
||||
}else{
|
||||
return $this->msg(10010,'验证码发送失败');
|
||||
// return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
################################内部调用################################
|
||||
/* 接口说明(发手机短信)
|
||||
|
||||
*/
|
||||
public function send_tel_code($tel,$code){
|
||||
// 初始化cURL会话
|
||||
$ch = curl_init();
|
||||
$headers = [
|
||||
'Accept: application/json',
|
||||
'Content-Type: application/json',
|
||||
];
|
||||
// 设置头部信息
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
||||
// 设置请求的URL
|
||||
$url = "http://sms.ybhdmob.com/Message/Send?token=ybhdmob";
|
||||
curl_setopt($ch, CURLOPT_URL, $url);
|
||||
// 设置为POST请求
|
||||
curl_setopt($ch, CURLOPT_POST, 1);
|
||||
// 设置POST数据
|
||||
$postData = array(
|
||||
'phone' => $tel,
|
||||
// 'content' => '【巨天】您好,欢迎使用Reedaw,您的手机验证码是:'.$code.',验证码一分钟内有效,若非本人操作,请忽略本短信'
|
||||
// 'content' => '【郑州品传科技】您好,欢迎使用Reedaw,您的手机验证码是:'.$code.',验证码一分钟内有效,若非本人操作,请忽略本短信'
|
||||
// 'content' => '【每日一称】您好,欢迎使用Reedaw,您的手机验证码是:'.$code.',验证码一分钟内有效,若非本人操作,请忽略本短信'
|
||||
'content' => '【小白健康】您好,欢迎使用Reedaw,您的手机验证码是:'.$code.',验证码一分钟内有效,若非本人操作,请忽略本短信'
|
||||
);
|
||||
$postData = json_encode($postData);
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
|
||||
// 设置返回结果不直接输出,而是返回到变量中
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
// 发送请求并获取响应
|
||||
$response = curl_exec($ch);
|
||||
// dump($response);
|
||||
// 检查是否有错误发生
|
||||
if (curl_errno($ch)) {
|
||||
$error_message = curl_error($ch);
|
||||
return "请求错误: " . $error_message;
|
||||
}
|
||||
// 关闭cURL会话
|
||||
curl_close($ch);
|
||||
// 处理响应
|
||||
// dump(json_decode($response,true));
|
||||
if ($response) {
|
||||
return json_decode($response,true);
|
||||
} else {
|
||||
echo "未收到响应";
|
||||
}
|
||||
}
|
||||
// 手机号区分
|
||||
function getCarrierByPhone($phone) {
|
||||
// 验证手机号格式(11位数字且以1开头)
|
||||
if (!preg_match('/^1[3-9]\d{9}$/', $phone)) {
|
||||
return '无效手机号';
|
||||
}
|
||||
|
||||
$prefix3 = substr($phone, 0, 3);
|
||||
|
||||
// 2025年最新3位号段(排除4位号段)
|
||||
$carriers = [
|
||||
'中国移动' => ['134', '135', '136', '137', '138', '139', '150', '151', '152', '157', '158', '159', '178', '182', '183', '184', '187', '188', '195', '197', '198'],
|
||||
'中国联通' => ['130', '131', '132', '155', '156', '166', '175', '176', '185', '186', '196'],
|
||||
'中国电信' => ['133', '153', '173', '177', '180', '181', '189', '190', '191', '193', '199'],
|
||||
'中国广电' => ['192']
|
||||
];
|
||||
|
||||
foreach ($carriers as $carrier => $segments) {
|
||||
if (in_array($prefix3, $segments)) {
|
||||
return $carrier;
|
||||
}
|
||||
}
|
||||
|
||||
return '未知运营商';
|
||||
}
|
||||
/* 接口说明(发邮件)
|
||||
* $address(收件人的邮箱地址) 数组 格式: ['460834639@qq.com','460834639@qq.com'.......]
|
||||
* $content(邮件的主题数据信息) 数组 格式:['title'=>'123','from_user_name'=>'123','content'=>'123']
|
||||
|
|
@ -562,6 +440,11 @@ class Login extends Base{
|
|||
|
||||
$mail->IsHTML(true); //支持html格式内容
|
||||
|
||||
$huashu1 = 'Wendu';
|
||||
$huashu2 = 'Thank you for choosing Wendu products!';
|
||||
$huashu3 = 'The following 6-digit number is the email verification code. Please enter it in the required field to pass verification.';
|
||||
$huashu4 = '(If you did not request an email verification code, please ignore this message.)';
|
||||
|
||||
$neirong = '<div style="margin: 0; padding: 0;">
|
||||
|
||||
<table cellpadding="0" cellspacing="0" border="0" width="100%" style="background: #f3f3f3; min-width: 350px; font-size: 1px; line-height: normal;">
|
||||
|
|
@ -586,7 +469,7 @@ class Login extends Base{
|
|||
<td align="left" valign="top">
|
||||
<div style="height: 39px; line-height: 39px; font-size: 37px;"> </div>
|
||||
<font class="mob_title1" face="\'Source Sans Pro\', sans-serif" color="#1a1a1a" style="font-size: 52px; line-height: 55px; font-weight: 300; letter-spacing: -1.5px;">
|
||||
<span class="mob_title1" style="font-family: \'Nunito\', Arial, Tahoma, Geneva, sans-serif; color: #fb966e; font-size: 48px; line-height: 55px; font-weight: 700; letter-spacing: -1.5px;">Reedaw!</span>
|
||||
<span class="mob_title1" style="font-family: \'Nunito\', Arial, Tahoma, Geneva, sans-serif; color: #fb966e; font-size: 48px; line-height: 55px; font-weight: 700; letter-spacing: -1.5px;">'.$huashu1.'</span>
|
||||
</font>
|
||||
<div style="height: 73px; line-height: 73px; font-size: 71px;"> </div>
|
||||
</td>
|
||||
|
|
@ -598,15 +481,15 @@ class Login extends Base{
|
|||
<td align="left" valign="top">
|
||||
<div style="height: 33px; line-height: 33px; font-size: 31px;"> </div>
|
||||
<font face="\'Nunito\', sans-serif" color="#585858" style="font-size: 24px; line-height: 32px;">
|
||||
<span style="font-family: \'Nunito\', Arial, Tahoma, Geneva, sans-serif; color: #585858; font-size: 24px; line-height: 32px;">感谢您选择锐动产品!</span>
|
||||
<span style="font-family: \'Nunito\', Arial, Tahoma, Geneva, sans-serif; color: #585858; font-size: 24px; line-height: 32px;">'.$huashu2.'</span>
|
||||
</font>
|
||||
<div style="height: 33px; line-height: 33px; font-size: 31px;"> </div>
|
||||
<font face="\'Nunito\', sans-serif" color="#585858" style="font-size: 24px; line-height: 32px;">
|
||||
<span style="font-family: \'Nunito\', Arial, Tahoma, Geneva, sans-serif; color: #585858; font-size: 24px; line-height: 32px;">以下6位数字是邮箱验证码,请在需要的位置填写以通过验证</span>
|
||||
<span style="font-family: \'Nunito\', Arial, Tahoma, Geneva, sans-serif; color: #585858; font-size: 24px; line-height: 32px;">'.$huashu3.'</span>
|
||||
</font>
|
||||
<div style="height: 18px; line-height: 33px; font-size: 31px;"> </div>
|
||||
<font face="\'Nunito\', sans-serif" color="#585858" style="font-size: 24px; line-height: 32px;">
|
||||
<span style="font-family: \'Nunito\', Arial, Tahoma, Geneva, sans-serif; color: #aaaaaa; font-size: 16px; line-height: 32px;">(如果您从未请求发送邮箱验证码,请忽略此邮件)</span>
|
||||
<span style="font-family: \'Nunito\', Arial, Tahoma, Geneva, sans-serif; color: #aaaaaa; font-size: 16px; line-height: 32px;">'.$huashu4.'</span>
|
||||
</font>
|
||||
<div style="height: 33px; line-height: 33px; font-size: 31px;"> </div>
|
||||
<table class="mob_btn" cellpadding="0" cellspacing="0" border="0" style="background: #fb966e; border-radius: 4px;">
|
||||
|
|
@ -675,10 +558,10 @@ class Login extends Base{
|
|||
public function check_code($data = 18530934717 , $code = 123456){
|
||||
// // 默认验证码正确
|
||||
|
||||
if(cache($data) == false){
|
||||
if(cache($data.'_cfc_multilingual') == false){
|
||||
return '验证码过期';
|
||||
}else{
|
||||
if($code != cache($data)){
|
||||
if($code != cache($data.'_cfc_multilingual')){
|
||||
return '验证码错误';
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
<?php
|
||||
|
||||
namespace app\KitchenScale2\controller\app;
|
||||
namespace app\KitchenScale3\controller\app;
|
||||
|
||||
use think\Db;
|
||||
use app\KitchenScale2\controller\app\Countfood;
|
||||
use app\KitchenScale3\controller\app\Countfood;
|
||||
|
||||
class Usercenter extends Base{
|
||||
|
||||
|
|
@ -11,23 +11,23 @@ class Usercenter extends Base{
|
|||
// protected $token_time = 2592000;//30天的秒数
|
||||
protected $default_head_pic = 'http://tc.pcxbc.com/tsf/head_pic.png';
|
||||
protected $page_num = 20;
|
||||
protected $reedaw_db_msg = [
|
||||
'zhanghao'=>'app_account_number',//账号表
|
||||
'juese'=>'app_user_data',//角色表
|
||||
];
|
||||
// protected $reedaw_db_msg = [
|
||||
// 'zhanghao'=>'app_account_number',//账号表
|
||||
// 'juese'=>'app_user_data',//角色表
|
||||
// ];
|
||||
protected $kitchenscale_db_msg = [
|
||||
'cookbook'=>'app_user_cookbook',//菜谱表
|
||||
'cookbook_label'=>'app_user_cookbook_label',//菜谱标签表
|
||||
'uploadimg'=>'app_user_upload_img',//图片素材表
|
||||
'foodlist1'=>'app_z_national_standard_food_type_1',//食材列表1
|
||||
'foodlist2'=>'app_z_national_standard_food_type_2',//食材列表2
|
||||
'foodlist3'=>'app_z_national_standard_food_type_3',//食材列表3
|
||||
'collect_list'=>'app_user_collect_list',//点赞表
|
||||
'banner'=>'app_banner_data',//banner
|
||||
'user'=>'app_user_data',//用户表
|
||||
'search_history'=>'app_user_search_history',//用户搜索表
|
||||
'business_cooperation'=>'app_business_cooperation_log',//商务合作
|
||||
'eat_log'=>'app_user_kcal_log',//食材列表3
|
||||
// 'cookbook'=>'app_user_cookbook',//菜谱表
|
||||
// 'cookbook_label'=>'app_user_cookbook_label',//菜谱标签表
|
||||
// 'uploadimg'=>'app_user_upload_img',//图片素材表
|
||||
'foodlist1'=>'app_z_national_standard_food_type_1_multilingual',//食材列表1
|
||||
'foodlist2'=>'app_z_national_standard_food_type_2_multilingual',//食材列表2
|
||||
'foodlist3'=>'app_z_national_standard_food_type_3_multilingual',//食材列表3
|
||||
// 'collect_list'=>'app_user_collect_list',//点赞表
|
||||
// 'banner'=>'app_banner_data',//banner
|
||||
'user'=>'app_user_data_multilingual',//用户表
|
||||
'search_history'=>'app_user_search_history_multilingual',//用户搜索表
|
||||
// 'business_cooperation'=>'app_business_cooperation_log',//商务合作
|
||||
'eat_log'=>'app_user_kcal_log_multilingual',//食材列表3
|
||||
];
|
||||
protected $language_country = [
|
||||
'zh' => '中文', // 中文(简体)★
|
||||
|
|
@ -53,7 +53,7 @@ class Usercenter extends Base{
|
|||
|
||||
// 获取角色信息
|
||||
public function get_user_msg(){
|
||||
try {
|
||||
// try {
|
||||
$data = input('post.');
|
||||
if(!array_key_exists('token', $data)){
|
||||
return $this->msg(10001);
|
||||
|
|
@ -63,24 +63,24 @@ class Usercenter extends Base{
|
|||
}
|
||||
$return_data = $this->get_user_msg_action($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'] .= "接口: (get_default_config)\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);
|
||||
}
|
||||
// } catch (\Exception $e) {
|
||||
// // 捕获异常
|
||||
// $logContent["flie"] = $e->getFile();
|
||||
// $logContent["line"] = $e->getLine();
|
||||
// $logContent['all_content'] = "异常信息:\n";
|
||||
// $logContent['all_content'] .= "消息: " . $e->getMessage() . "\n";
|
||||
// $logContent['all_content'] .= "接口: (get_default_config)\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 update_user_msg(){
|
||||
try {
|
||||
// try {
|
||||
$data = input('post.');
|
||||
if(!array_key_exists('token', $data)){
|
||||
return $this->msg(10001,'token is miss');
|
||||
|
|
@ -124,22 +124,21 @@ class Usercenter extends Base{
|
|||
if(!$this->verify_data_is_ok($data['activity_level'],'num')){
|
||||
return $this->msg(10005,'activity_level type is error');
|
||||
}
|
||||
$return_data = $this->update_user_msg_action($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'] .= "接口: (get_default_config)\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);
|
||||
}
|
||||
return $this->update_user_msg_action($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'] .= "接口: (get_default_config)\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);
|
||||
// }
|
||||
}
|
||||
|
||||
// 获取用户收藏点赞列表(OK)
|
||||
|
|
@ -507,71 +506,70 @@ class Usercenter extends Base{
|
|||
|
||||
public function get_user_msg_action($data){
|
||||
// 获取账号下信息以及用户信息
|
||||
$user_data = Db::table($this->reedaw_db_msg['zhanghao'])->where(['token'=>$data['token']])->field('id,token,nickname,head_pic,tel,email')->find();
|
||||
if(!$user_data){
|
||||
return $this->msg(10004);
|
||||
$cfc = Db::connect('cfc_db');
|
||||
|
||||
$user_account = $cfc->table($this->kitchenscale_db_msg['user'])->where(['token'=>$data['token']])->field('id as aud_id,token,nickname,head_pic,gender,age,height,weight,set_kcal,is_use_set_kcal,birthday,activity_level')->find();
|
||||
if(!$user_account){
|
||||
return $this->msg(20001);
|
||||
}
|
||||
// $return_data = [];
|
||||
// 获取账号下信息以及用户信息start
|
||||
$user_all_data['aud_id'] = '';
|
||||
$user_all_data['token'] = $user_data['token'];
|
||||
$user_all_data['nickname'] = $user_data['nickname'];
|
||||
$user_all_data['head_pic'] = $user_data['head_pic'];
|
||||
$user_all_data['token'] = $user_account['token'];
|
||||
$user_all_data['nickname'] = $user_account['nickname'];
|
||||
$user_all_data['head_pic'] = $user_account['head_pic'];
|
||||
$user_all_data['gender'] = '';
|
||||
$user_all_data['age'] = '';
|
||||
$user_all_data['height'] = '';
|
||||
$user_all_data['weight'] = '';
|
||||
$user_all_data['set_kcal'] = '';
|
||||
$user_all_data['is_use_set_kcal'] = '';
|
||||
$user_all_data['tel'] = $user_data['tel'];
|
||||
$user_all_data['email'] = $user_data['email'];
|
||||
$cfc = Db::connect('cfc_db');
|
||||
$user_account = $cfc->table($this->kitchenscale_db_msg['user'])
|
||||
->where(["token"=>$data['token']])
|
||||
->field('id as aud_id,token,nickname,head_pic,gender,age,height,weight,set_kcal,is_use_set_kcal,birthday,activity_level')
|
||||
->find();
|
||||
if($user_account){
|
||||
if($user_account['set_kcal'] == '.00'){
|
||||
$user_account['set_kcal'] = 0;
|
||||
}
|
||||
$user_all_data['aud_id'] = $user_account['aud_id'];
|
||||
$user_all_data['gender'] = $user_account['gender'];
|
||||
$user_all_data['age'] = $user_account['age']?$user_account['age']:$this->calculate_age($user_account['birthday']);
|
||||
$user_all_data['height'] = $user_account['height'];
|
||||
$user_all_data['weight'] = $user_account['weight'];
|
||||
$user_all_data['set_kcal'] = $user_account['set_kcal'];
|
||||
$user_all_data['is_use_set_kcal'] = $user_account['is_use_set_kcal'];
|
||||
$user_all_data['birthday'] = $user_account['birthday'];
|
||||
$user_all_data['activity_level'] = $user_account['activity_level'];
|
||||
if($user_all_data['gender'] == 2){
|
||||
if($user_all_data['age'] <= 18){
|
||||
$user_all_data['head_pic'] = "https://tc.pcxbc.com/kitchenscale_all/woman1.png";
|
||||
}else if($user_all_data['age'] <= 39 && $user_all_data['age'] > 18){
|
||||
$user_all_data['head_pic'] = "https://tc.pcxbc.com/kitchenscale_all/woman2.png";
|
||||
}else if($user_all_data['age'] <= 59 && $user_all_data['age'] > 39){
|
||||
$user_all_data['head_pic'] = "https://tc.pcxbc.com/kitchenscale_all/woman3.png";
|
||||
}else if($user_all_data['age'] >= 60){
|
||||
$user_all_data['head_pic'] = "https://tc.pcxbc.com/kitchenscale_all/woman4.png";
|
||||
}
|
||||
}else{
|
||||
if($user_all_data['age'] <= 18){
|
||||
$user_all_data['head_pic'] = "https://tc.pcxbc.com/kitchenscale_all/man1.png";
|
||||
}else if($user_all_data['age'] <= 39 && $user_all_data['age'] > 18){
|
||||
$user_all_data['head_pic'] = "https://tc.pcxbc.com/kitchenscale_all/man2.png";
|
||||
}else if($user_all_data['age'] <= 59 && $user_all_data['age'] > 39){
|
||||
$user_all_data['head_pic'] = "https://tc.pcxbc.com/kitchenscale_all/man3.png";
|
||||
}else if($user_all_data['age'] >= 60){
|
||||
$user_all_data['head_pic'] = "https://tc.pcxbc.com/kitchenscale_all/man4.png";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$countfood = new Countfood;
|
||||
$user_all_data['food_count'] = $countfood->get_countfoot_content_action(['token'=>$data['token'],'aud_id'=>$user_all_data['aud_id'],'time'=>date('Y-m-d')]);
|
||||
$user_all_data['food_count'] = ($user_all_data['food_count']->getData())['data'];
|
||||
// dump($user_all_data['food_count']);
|
||||
}else{
|
||||
return $this->msg(10004);
|
||||
if($user_account['set_kcal'] == '.00'){
|
||||
$user_account['set_kcal'] = 0;
|
||||
}
|
||||
$user_all_data['aud_id'] = $user_account['aud_id'];
|
||||
$user_all_data['gender'] = $user_account['gender'];
|
||||
$user_all_data['age'] = $user_account['age']?$user_account['age']:$this->calculate_age($user_account['birthday']);
|
||||
$user_all_data['height'] = $user_account['height'];
|
||||
$user_all_data['weight'] = $user_account['weight'];
|
||||
$user_all_data['set_kcal'] = $user_account['set_kcal'];
|
||||
$user_all_data['is_use_set_kcal'] = $user_account['is_use_set_kcal'];
|
||||
$user_all_data['birthday'] = $user_account['birthday'];
|
||||
$user_all_data['activity_level'] = $user_account['activity_level'];
|
||||
if($user_all_data['gender'] == 2){
|
||||
if($user_all_data['age'] <= 18){
|
||||
$user_all_data['head_pic'] = "https://tc.pcxbc.com/kitchenscale_all/woman1.png";
|
||||
}else if($user_all_data['age'] <= 39 && $user_all_data['age'] > 18){
|
||||
$user_all_data['head_pic'] = "https://tc.pcxbc.com/kitchenscale_all/woman2.png";
|
||||
}else if($user_all_data['age'] <= 59 && $user_all_data['age'] > 39){
|
||||
$user_all_data['head_pic'] = "https://tc.pcxbc.com/kitchenscale_all/woman3.png";
|
||||
}else if($user_all_data['age'] >= 60){
|
||||
$user_all_data['head_pic'] = "https://tc.pcxbc.com/kitchenscale_all/woman4.png";
|
||||
}
|
||||
}else{
|
||||
if($user_all_data['age'] <= 18){
|
||||
$user_all_data['head_pic'] = "https://tc.pcxbc.com/kitchenscale_all/man1.png";
|
||||
}else if($user_all_data['age'] <= 39 && $user_all_data['age'] > 18){
|
||||
$user_all_data['head_pic'] = "https://tc.pcxbc.com/kitchenscale_all/man2.png";
|
||||
}else if($user_all_data['age'] <= 59 && $user_all_data['age'] > 39){
|
||||
$user_all_data['head_pic'] = "https://tc.pcxbc.com/kitchenscale_all/man3.png";
|
||||
}else if($user_all_data['age'] >= 60){
|
||||
$user_all_data['head_pic'] = "https://tc.pcxbc.com/kitchenscale_all/man4.png";
|
||||
}
|
||||
}
|
||||
|
||||
// dump($data['token']);
|
||||
// dump($user_all_data['aud_id']);
|
||||
// dump($data['token']);
|
||||
// die;
|
||||
$countfood = new Countfood;
|
||||
$user_all_data['food_count'] = $countfood->get_countfoot_content_action(['token'=>$data['token'],'aud_id'=>$user_all_data['aud_id'],'time'=>date('Y-m-d')]);
|
||||
// dump($user_all_data['food_count']->getData());
|
||||
// die;
|
||||
$user_all_data['food_count'] = ($user_all_data['food_count']->getData())['data'];
|
||||
|
||||
|
||||
// $return_data = $user_all_data;
|
||||
|
|
@ -582,15 +580,13 @@ class Usercenter extends Base{
|
|||
if($data['gender'] == 0){
|
||||
return $this->msg(10005,'性别信息错误');
|
||||
}
|
||||
// 获取账号下信息以及用户信息
|
||||
$user_data = Db::table($this->reedaw_db_msg['zhanghao'])->where(['token'=>$data['token']])->count();
|
||||
if($user_data<=0){
|
||||
return $this->msg(10005,'账号信息错误');
|
||||
}
|
||||
|
||||
$cfc = Db::connect('cfc_db');
|
||||
|
||||
$is_user_true = $cfc->table($this->kitchenscale_db_msg['user'])->where(['token'=>$data['token']])->count();
|
||||
// 获取账号下信息以及用户信息
|
||||
$user_data = $cfc->table($this->kitchenscale_db_msg['user'])->where(['token'=>$data['token']])->field('id,token')->find();
|
||||
if(!$user_data){
|
||||
return $this->msg(20001,'账号信息错误');
|
||||
}
|
||||
// $is_user_true = $cfc->table($this->kitchenscale_db_msg['user'])->where(['token'=>$data['token']])->count();
|
||||
|
||||
$user_msg['nickname'] = $data['nickname'];
|
||||
$user_msg['head_pic'] = $data['gender'] == 1?'https://tc.pcxbc.com/tsf/1.png':'https://tc.pcxbc.com/tsf/2.png';
|
||||
|
|
@ -600,17 +596,31 @@ class Usercenter extends Base{
|
|||
$user_msg['weight'] = $data['weight'];
|
||||
$user_msg['activity_level'] = $data['activity_level'];
|
||||
|
||||
if($is_user_true>0){
|
||||
$user_msg['update_time'] = date('Y-m-d H:i:s');
|
||||
$result = $cfc->table($this->kitchenscale_db_msg['user'])
|
||||
->where(['token'=>$data['token']])
|
||||
->update($user_msg);
|
||||
}else{
|
||||
$user_msg['token'] = $data['token'];
|
||||
$result = $cfc->table($this->kitchenscale_db_msg['user'])
|
||||
->insert($user_msg);
|
||||
}
|
||||
Db::table($this->reedaw_db_msg['zhanghao'])->where(['token'=>$data['token']])->update(['nickname'=>$user_msg['nickname']]);
|
||||
// $user_msg['age_num'] = $this->calculate_age($user_msg['birthday']);
|
||||
// $nutrition_data = $this->count_user_nutrition_all($user_msg);
|
||||
// dump($nutrition_data);
|
||||
// if($nutrition_data){
|
||||
// $user_msg['set_carbohydrate_v'] = '';
|
||||
// $user_msg['set_carbohydrate_p'] = '';
|
||||
// $user_msg['set_protein_v'] = '';
|
||||
// $user_msg['set_protein_p'] = '';
|
||||
// $user_msg['set_fat_v'] = '';
|
||||
// $user_msg['set_fat_p'] = '';
|
||||
// $user_msg['set_carbohydrate_v'] = '';
|
||||
// }
|
||||
// dump($user_msg);
|
||||
// die;
|
||||
$user_msg['update_time'] = date('Y-m-d H:i:s');
|
||||
$result = $cfc->table($this->kitchenscale_db_msg['user'])
|
||||
->where(['token'=>$data['token']])
|
||||
->update($user_msg);
|
||||
// if($user_data>0){
|
||||
|
||||
// }else{
|
||||
// $user_msg['token'] = $data['token'];
|
||||
// $result = $cfc->table($this->kitchenscale_db_msg['user'])
|
||||
// ->insert($user_msg);
|
||||
// }
|
||||
if($result){
|
||||
return $this->msg([]);
|
||||
}else{
|
||||
|
|
@ -841,11 +851,11 @@ class Usercenter extends Base{
|
|||
public function update_my_password_action($data){
|
||||
// $cfc = Db::connect('cfc_db');
|
||||
// 检查账号是否存在
|
||||
$find_data = Db::table($this->reedaw_db_msg['zhanghao'])->where(['token'=>$data['token'],'is_del'=>0])->count();
|
||||
$find_data = Db::table($this->kitchenscale_db_msg['user'])->where(['token'=>$data['token'],'is_del'=>0])->count();
|
||||
if(!$find_data){
|
||||
return $this->msg(10003);
|
||||
return $this->msg(20001);
|
||||
}
|
||||
$result = Db::table($this->reedaw_db_msg['zhanghao'])->where(['token'=>$data['token'],'is_del'=>0])->update(['password'=>$data['password']]);
|
||||
$result = Db::table($this->kitchenscale_db_msg['user'])->where(['token'=>$data['token'],'is_del'=>0])->update(['password'=>$data['password']]);
|
||||
if($result){
|
||||
return $this->msg([]);
|
||||
}else{
|
||||
|
|
|
|||
|
|
@ -552,7 +552,7 @@ Route::any('/kitchenscale/set_up_content', 'app/kitchenscale/app.countfood/set_u
|
|||
Route::any('/kitchenscale2/set_up_content', 'app/kitchenscale2/app.countfood/set_up_content');
|
||||
// 删除用户某个饮食记录
|
||||
Route::any('/kitchenscale/del_user_eat_log', 'app/kitchenscale/app.countfood/del_user_eat_log');
|
||||
Route::any('/kitchenscale2/del_user_eat_log', 'app/kitchenscale/app.countfood/del_user_eat_log');
|
||||
Route::any('/kitchenscale2/del_user_eat_log', 'app/kitchenscale2/app.countfood/del_user_eat_log');
|
||||
// 删除用户某个饮食记录
|
||||
// Route::any('/kitchenscale/del_user_eat_list_log', 'app/kitchenscale/app.countfood/del_user_eat_list_log');
|
||||
Route::any('/kitchenscale2/del_user_eat_list_log', 'app/kitchenscale2/app.countfood/del_user_eat_list_log');
|
||||
|
|
@ -646,17 +646,65 @@ Route::any('/k/a/cookbook/stop_and_run', 'app/kitchenscale/admin.cookbook/stop_a
|
|||
#########################################################前端接口############################################################
|
||||
|
||||
|
||||
// 公共内容################################################################
|
||||
// 登录注册################################################################
|
||||
// 发送验证码
|
||||
Route::any('/kitchenscale3/send_phone_email_code', 'app/kitchenscale3/app.login/send_phone_email_code');
|
||||
// 注册
|
||||
Route::any('/kitchenscale3/register_action', 'app/kitchenscale3/app.login/register_action');
|
||||
// 登录
|
||||
Route::any('/kitchenscale3/login_action', 'app/kitchenscale3/app.login/login_action');
|
||||
// 退出登录
|
||||
Route::any('/kitchenscale3/user_quit_account', 'app/kitchenscale3/app.login/user_quit_account');
|
||||
|
||||
|
||||
|
||||
// 首页内容################################################################
|
||||
// 检测版本及判断是否登录失效
|
||||
Route::any('/kitchenscale2/login_invalid_version', 'app/kitchenscale2/app.Index/login_invalid_version');
|
||||
Route::any('/kitchenscale3/login_invalid_version', 'app/kitchenscale3/app.Index/login_invalid_version');
|
||||
// 获取配置类信息
|
||||
Route::any('/kitchenscale2/get_default_config', 'app/Kitchenscale2/app.Index/get_default_config');
|
||||
Route::any('/kitchenscale3/get_default_config', 'app/Kitchenscale3/app.Index/get_default_config');
|
||||
// 首页搜索接口
|
||||
Route::any('/kitchenscale2/search_column', 'app/kitchenscale2/app.index/search_column');
|
||||
Route::any('/kitchenscale3/search_column', 'app/kitchenscale3/app.index/search_column');
|
||||
|
||||
// 添加或者修改角色信息
|
||||
Route::any('/kitchenscale3/update_user_msg', 'app/kitchenscale3/app.usercenter/update_user_msg');
|
||||
// ☆设置用户的卡路里&营养占比
|
||||
Route::any('/kitchenscale3/set_user_kcal', 'app/kitchenscale3/app.usercenter/set_nutrition_proportion');
|
||||
// 获取角色信息
|
||||
Route::any('/kitchenscale3/get_user_msg', 'app/kitchenscale3/app.usercenter/get_user_msg');
|
||||
// ☆修改语言设置(多语言)
|
||||
Route::any('/kitchenscale3/update_language', 'app/kitchenscale3/app.usercenter/update_language');
|
||||
// ☆重置密码
|
||||
Route::any('/kitchenscale3/update_my_password', 'app/kitchenscale3/app.usercenter/update_my_password');
|
||||
|
||||
// 获取记食器板块内容
|
||||
Route::any('/kitchenscale3/get_countfoot_content', 'app/kitchenscale3/app.countfood/get_countfoot_content');
|
||||
// 获取记食器记录
|
||||
Route::any('/kitchenscale3/get_log_list', 'app/kitchenscale3/app.countfood/get_log_list');
|
||||
// 添加每日摄入记录
|
||||
Route::any('/kitchenscale3/add_intake_food', 'app/kitchenscale3/app.countfood/add_intake_food');
|
||||
// 获取指定饮食记录的四大营养分析
|
||||
Route::any('/kitchenscale3/current_food_statistics', 'app/kitchenscale3/app.countfood/current_food_statistics');
|
||||
// 删除用户某个饮食记录
|
||||
Route::any('/kitchenscale3/del_user_eat_log', 'app/kitchenscale3/app.countfood/del_user_eat_log');
|
||||
// 计食器板块-设置内容
|
||||
Route::any('/kitchenscale3/set_up_content', 'app/kitchenscale3/app.countfood/set_up_content');
|
||||
|
||||
// 获取所有食材列表
|
||||
Route::any('/kitchenscale3/get_food_list', 'app/kitchenscale3/app.cookbook/get_food_list');
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// 菜谱内容################################################################
|
||||
|
|
@ -672,36 +720,28 @@ Route::any('/kitchenscale2/search_column', 'app/kitchenscale2/app.index/search_c
|
|||
// 获取当前食材重量卡路里
|
||||
// Route::any('/kitchenscale2/food_count_kcal', 'app/kitchenscale2/app.cookbook/food_count_kcal');
|
||||
// 食材列表查询接口
|
||||
Route::any('/kitchenscale2/find_food', 'app/kitchenscale2/app.cookbook/find_food');
|
||||
// 获取所有食材列表
|
||||
Route::any('/kitchenscale2/get_food_list', 'app/kitchenscale2/app.cookbook/get_food_list');
|
||||
Route::any('/kitchenscale3/find_food', 'app/kitchenscale3/app.cookbook/find_food');
|
||||
|
||||
// 获取查询页页面导航食材列表
|
||||
Route::any('/kitchenscale2/get_search_food_page_list', 'app/kitchenscale2/app.cookbook/get_search_food_page_list');
|
||||
Route::any('/kitchenscale3/get_search_food_page_list', 'app/kitchenscale3/app.cookbook/get_search_food_page_list');
|
||||
|
||||
|
||||
// 计食器################################################################
|
||||
// 添加每日摄入记录
|
||||
Route::any('/kitchenscale2/add_intake_food', 'app/kitchenscale2/app.countfood/add_intake_food');
|
||||
// 获取记食器板块内容
|
||||
Route::any('/kitchenscale2/get_countfoot_content', 'app/kitchenscale2/app.countfood/get_countfoot_content');
|
||||
// 获取记食器记录
|
||||
Route::any('/kitchenscale2/get_log_list', 'app/kitchenscale2/app.countfood/get_log_list');
|
||||
// 计食器板块-设置内容
|
||||
Route::any('/kitchenscale2/set_up_content', 'app/kitchenscale2/app.countfood/set_up_content');
|
||||
// 删除用户某个饮食记录
|
||||
Route::any('/kitchenscale2/del_user_eat_log', 'app/kitchenscale/app.countfood/del_user_eat_log');
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// 删除用户某个饮食记录
|
||||
Route::any('/kitchenscale2/del_user_eat_list_log', 'app/kitchenscale2/app.countfood/del_user_eat_list_log');
|
||||
// 获取指定饮食记录的四大营养分析
|
||||
Route::any('/kitchenscale2/current_food_statistics', 'app/kitchenscale2/app.countfood/current_food_statistics');
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// 我的################################################################
|
||||
// 获取角色信息
|
||||
Route::any('/kitchenscale2/get_user_msg', 'app/kitchenscale2/app.usercenter/get_user_msg');
|
||||
|
||||
// 修改角色信息
|
||||
Route::any('/kitchenscale2/update_user_msg', 'app/kitchenscale2/app.usercenter/update_user_msg');
|
||||
// 账号收藏点赞列表
|
||||
|
|
@ -716,14 +756,11 @@ Route::any('/kitchenscale2/del_search_history', 'app/kitchenscale2/app.usercente
|
|||
Route::any('/kitchenscale2/business_cooperation', 'app/kitchenscale2/app.usercenter/business_cooperation');
|
||||
// 商务合作提交
|
||||
Route::any('/kitchenscale2/business_cooperation_action', 'app/kitchenscale2/app.usercenter/business_cooperation_action');
|
||||
// ☆设置用户的卡路里&营养占比
|
||||
Route::any('/kitchenscale2/set_user_kcal', 'app/kitchenscale2/app.usercenter/set_nutrition_proportion');
|
||||
// ☆重置密码
|
||||
Route::any('/kitchenscale2/update_my_password', 'app/kitchenscale2/app.usercenter/update_my_password');
|
||||
|
||||
|
||||
// ☆修改个人信息
|
||||
Route::any('/kitchenscale2/update_my_account_msg', 'app/kitchenscale2/app.usercenter/update_my_account_msg');
|
||||
// ☆修改语言设置(多语言)
|
||||
Route::any('/kitchenscale2/update_language', 'app/kitchenscale2/app.usercenter/update_language');
|
||||
|
||||
|
||||
|
||||
#########################################################管理后台############################################################
|
||||
|
|
@ -980,6 +1017,8 @@ Route::any('/xishuju1/next_pass_action', 'test/xishuju1/next_pass_action');
|
|||
Route::any('/xishuju1/new_step1_action', 'test/xishuju1/new_step1_action');
|
||||
Route::any('/xishuju1/new_step2_action', 'test/xishuju1/new_step2_action');
|
||||
Route::any('/xishuju1/new_step3_action', 'test/xishuju1/new_step3_action');
|
||||
Route::any('/xishuju1/new_step4_action', 'test/xishuju1/new_step4_action');
|
||||
|
||||
|
||||
Route::any('/xishuju1/ceshiyong', 'test/xishuju1/ceshiyong');
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,23 @@ use PhpOffice\PhpSpreadsheet\IOFactory;
|
|||
class Baidufanyi extends Controller
|
||||
{
|
||||
// API Key - 按你说的放在控制器属性中
|
||||
protected $api_key = 'hMo4_d4p9d29a9802e5gscdf0';
|
||||
// protected $api_key = 'hMo4_d4p9d29a9802e5gscdf0';//自己的
|
||||
// protected $app_id = '20251205002512839';//自己的
|
||||
|
||||
// protected $api_key = 'N0i8_d572v1iio4kk2k6v91kg';//公司
|
||||
// protected $app_id = '20251218002521924';//公司
|
||||
|
||||
// protected $api_key = 'k185_d5759udrfk5qno0pjmdg';//邱总
|
||||
// protected $app_id = '20251226002527798';//邱总
|
||||
|
||||
protected $api_key = 'bT16_d57oa0lrfk5qno0pprj0';//同事
|
||||
protected $app_id = '20251227002528232';//同事
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// 百度翻译API地址
|
||||
protected $api_url = 'https://fanyi-api.baidu.com/ait/api/aiTextTranslate';
|
||||
|
|
@ -89,7 +105,7 @@ class Baidufanyi extends Controller
|
|||
private function httpPost($data)
|
||||
{
|
||||
$ch = curl_init();
|
||||
$data['appid'] = '20251205002512839';
|
||||
$data['appid'] = $this->app_id;
|
||||
// 设置cURL选项
|
||||
curl_setopt($ch, CURLOPT_URL, $this->api_url);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
|
|
|
|||
|
|
@ -323,30 +323,40 @@ class Xishuju1 extends Controller{
|
|||
|
||||
public function wash_step3_chuli_shicai_name(){
|
||||
|
||||
$name_data = 'food_name_pt';
|
||||
$mubiao_yuyan = 'pt';
|
||||
|
||||
|
||||
// 处理食物表数据
|
||||
$cfc = Db::connect('cfc_db');
|
||||
// 获取一条数据
|
||||
$shicai_data = $cfc->table('app_z_national_standard_food_type_3_multilingual_copy1')->where("food_name = ''")->order('id')->find();
|
||||
$shicai_data = $cfc->table('app_z_national_standard_food_type_3_multilingual')->where("$name_data is null")->order('id')->field('id,food_name_en')->find();
|
||||
if(!$shicai_data){
|
||||
return $this->msg(10004,'没了');
|
||||
}
|
||||
// dump($shicai_data);
|
||||
// die;
|
||||
$baidufanyi = new Baidufanyi;
|
||||
$result = $baidufanyi->fanyi_action($shicai_data['food_name_en'], 'en', 'zh');
|
||||
$result = $baidufanyi->fanyi_action($shicai_data['food_name_en'], 'en', $mubiao_yuyan);
|
||||
// dump($result);
|
||||
// dump($result['data']['trans_result'][0]['dst']);
|
||||
// die;
|
||||
// $fanyi_result = '';
|
||||
if($result['success'] == true){
|
||||
$fanyi_result = $cfc->table('app_z_national_standard_food_type_3_multilingual_copy1')->where(['id'=>$shicai_data['id']])->update(['food_name'=>$result['data']['trans_result'][0]['dst']]);
|
||||
$chuli_data[$name_data] = $result['data']['trans_result'][0]['dst'];
|
||||
$fanyi_result = $cfc->table('app_z_national_standard_food_type_3_multilingual')->where(['id'=>$shicai_data['id']])->update($chuli_data);
|
||||
if($fanyi_result){
|
||||
return $this->msg([]);
|
||||
}else{
|
||||
return $this->msg(10002);
|
||||
}
|
||||
}else{
|
||||
return $this->msg(10002,'翻译失败');
|
||||
if($result['error_msg'] == '用户余额不足'){
|
||||
return $this->msg(99999,'没token了');
|
||||
}else{
|
||||
return $this->msg(10002,'翻译失败');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1503,6 +1513,91 @@ class Xishuju1 extends Controller{
|
|||
return $this->msg(10002);
|
||||
}
|
||||
}
|
||||
public function new_step4_action(){
|
||||
$nutrients = [
|
||||
"10-Formyl folic acid (10HCOFA)" => "حمض الفوليك 10-فورميل",
|
||||
"25-hydroxycholecalciferol" => "25-هيدروكسي كوليكالسيفيرول",
|
||||
"5-Formyltetrahydrofolic acid (5-HCOH4)" => "حمض 5-فورميل تتراهيدروفوليك",
|
||||
"5-methyl tetrahydrofolate (5-MTHF)" => "5-ميثيل تتراهيدروفولات",
|
||||
"Biotin" => "البيوتين",
|
||||
"Calcium, Ca" => "الكالسيوم",
|
||||
"Calorie" => "السعرات الحرارية",
|
||||
"Carbohydrate" => "الكربوهيدرات",
|
||||
"Choline, free" => "الكولين الحر",
|
||||
"Choline, from glycerophosphocholine" => "الكولين من الجليسيروفوسفوكولين",
|
||||
"Choline, from phosphocholine" => "الكولين من الفوسفوكولين",
|
||||
"Choline, from phosphotidyl choline" => "الكولين من الفوسفاتيديل كولين",
|
||||
"Choline, from sphingomyelin" => "الكولين من السفينجوميالين",
|
||||
"Choline, total" => "إجمالي الكولين",
|
||||
"Copper, Cu" => "النحاس",
|
||||
"Fat" => "الدهون",
|
||||
"Folate, DFE" => "الفولات (DFE)",
|
||||
"Folate, food" => "الفولات الغذائي",
|
||||
"Folate, total" => "إجمالي الفولات",
|
||||
"Folic acid" => "حمض الفوليك",
|
||||
"Iodine, I" => "اليود",
|
||||
"Iron, Fe" => "الحديد",
|
||||
"Magnesium, Mg" => "المغنيسيوم",
|
||||
"Manganese, Mn" => "المنغنيز",
|
||||
"Niacin" => "النياسين",
|
||||
"Pantothenic acid" => "حمض البانتوثينيك",
|
||||
"Phosphorus, P" => "الفوسفور",
|
||||
"Potassium, K" => "البوتاسيوم",
|
||||
"Protein" => "البروتين",
|
||||
"Retinol" => "الريتينول",
|
||||
"Riboflavin" => "الريبوفلافين",
|
||||
"Selenium, Se" => "السيلينيوم",
|
||||
"Sodium, Na" => "الصوديوم",
|
||||
"Thiamin" => "الثيامين",
|
||||
"Tocopherol, beta" => "توكوفيرول بيتا",
|
||||
"Tocopherol, delta" => "توكوفيرول دلتا",
|
||||
"Tocopherol, gamma" => "توكوفيرول غاما",
|
||||
"Vitamin A, IU" => "فيتامين أ (وحدة دولية)",
|
||||
"Vitamin A, RAE" => "فيتامين أ (RAE)",
|
||||
"Vitamin B-12" => "فيتامين ب-12",
|
||||
"Vitamin B-12, added" => "فيتامين ب-12 المضاف",
|
||||
"Vitamin B-6" => "فيتامين ب-6",
|
||||
"Vitamin C, total ascorbic acid" => "إجمالي حمض الأسكوربيك (فيتامين ج)",
|
||||
"Vitamin D (D2 + D3)" => "فيتامين د (D2 + D3)",
|
||||
"Vitamin D (D2 + D3), International Units" => "فيتامين د (الوحدات الدولية)",
|
||||
"Vitamin D2 (ergocalciferol)" => "فيتامين د2 (إرغوكالسيفيرول)",
|
||||
"Vitamin D3 (cholecalciferol)" => "فيتامين د3 (كوليكالسيفيرول)",
|
||||
"Vitamin D4" => "فيتامين د4",
|
||||
"Vitamin E (alpha-tocopherol)" => "فيتامين هـ (ألفا-توكوفيرول)",
|
||||
"Vitamin E, added" => "فيتامين هـ المضاف",
|
||||
"Vitamin K (Dihydrophylloquinone)" => "فيتامين ك (دايهيدروفيلوكينون)",
|
||||
"Vitamin K (Menaquinone-4)" => "فيتامين ك (ميناكينون-4)",
|
||||
"Vitamin K (phylloquinone)" => "فيتامين ك (فيلوكينون)",
|
||||
"Zinc, Zn" => "الزنك"
|
||||
];
|
||||
$cfc = Db::connect('cfc_db');
|
||||
$num = 0;
|
||||
foreach ($nutrients as $key => $value) {
|
||||
$congfu_num = $cfc->table('app_z_national_standard_food_type_4_multilingual')
|
||||
->where(['name_en'=>$key])
|
||||
->update([
|
||||
'name_ara'=>$value
|
||||
]);
|
||||
$num = $num+1;
|
||||
dump($num);
|
||||
}
|
||||
|
||||
// if(!$congfu_num){
|
||||
// return $this->msg(11006,'没了');
|
||||
// }
|
||||
// // 加 bcadd(,,20)
|
||||
// // 减 bcsub(,,20)
|
||||
// // 乘 bcmul(,,20)
|
||||
// // 除 bcdiv(,,20)
|
||||
// $kcal_val = bcdiv($congfu_num['Calorie_val'],4.184,2);
|
||||
// $result = $cfc->table('app_z_national_standard_food_type_3_multilingual_copy1')->where(['id'=>$congfu_num['id']])->update(['Calorie_unit'=>'KCAL','Calorie_val'=>$kcal_val]);
|
||||
|
||||
// if($result){
|
||||
// return $this->msg([]);
|
||||
// }else{
|
||||
// return $this->msg(10002);
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@
|
|||
</head>
|
||||
|
||||
<body>
|
||||
<div class="start_action" onclick="start_action2()">开始</div>
|
||||
<div class="start_action" onclick="start_action()">开始</div>
|
||||
<div class="title">描述:</div>
|
||||
<div class="centent"></div><br/><br/>
|
||||
<div>~~~~~~~~~~~~~~~~~~~~~~分割线~~~~~~~~~~~~~~~~~~~~</div>
|
||||
|
|
@ -106,6 +106,11 @@
|
|||
+ "<p>处理失败:"+content2+"项</p>"
|
||||
+ "<p>处理完毕</p>"
|
||||
$('.centent').html(str)
|
||||
}else if(req.code == 99999){
|
||||
str = "<p>处理成功:"+content+"项</p>"
|
||||
+ "<p>处理失败:"+content2+"项</p>"
|
||||
+ "<p>token余额不足</p>"
|
||||
$('.centent').html(str)
|
||||
}else{
|
||||
content2 = content2 + 1
|
||||
str = "<p>处理成功:"+content+"项</p>"
|
||||
|
|
|
|||
Loading…
Reference in New Issue