From 0c86dbe0c64eacb69de6e04995188f1a3ad1b158 Mon Sep 17 00:00:00 2001 From: tsf Date: Fri, 28 Nov 2025 19:45:05 +0800 Subject: [PATCH] =?UTF-8?q?251128=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../KitchenScale2/controller/app/Base.php | 112 +++- .../KitchenScale2/controller/app/Cookbook.php | 1 + .../controller/app/Countfood.php | 321 ++++++----- .../KitchenScale2/controller/app/Index.php | 56 +- .../controller/app/Usercenter.php | 538 +++++++++--------- application/route.php | 17 +- public/new_reedaw/icon/bmi.png | Bin 0 -> 1926 bytes public/new_reedaw/icon/card_config.png | Bin 0 -> 13250 bytes public/new_reedaw/icon/card_fh.png | Bin 0 -> 14097 bytes public/new_reedaw/icon/card_hs.png | Bin 0 -> 15856 bytes public/new_reedaw/icon/card_mb.png | Bin 0 -> 4539 bytes public/new_reedaw/icon/card_sm.png | Bin 0 -> 14425 bytes public/new_reedaw/icon/card_ts.png | Bin 0 -> 17786 bytes public/new_reedaw/icon/contrast.png | Bin 0 -> 2330 bytes public/new_reedaw/icon/inheritHeighet.png | Bin 0 -> 1788 bytes public/new_reedaw/icon/report.png | Bin 0 -> 2690 bytes 16 files changed, 599 insertions(+), 446 deletions(-) create mode 100644 public/new_reedaw/icon/bmi.png create mode 100644 public/new_reedaw/icon/card_config.png create mode 100644 public/new_reedaw/icon/card_fh.png create mode 100644 public/new_reedaw/icon/card_hs.png create mode 100644 public/new_reedaw/icon/card_mb.png create mode 100644 public/new_reedaw/icon/card_sm.png create mode 100644 public/new_reedaw/icon/card_ts.png create mode 100644 public/new_reedaw/icon/contrast.png create mode 100644 public/new_reedaw/icon/inheritHeighet.png create mode 100644 public/new_reedaw/icon/report.png diff --git a/application/KitchenScale2/controller/app/Base.php b/application/KitchenScale2/controller/app/Base.php index 1ad5e86..f02fd03 100644 --- a/application/KitchenScale2/controller/app/Base.php +++ b/application/KitchenScale2/controller/app/Base.php @@ -115,6 +115,40 @@ class Base extends Controller{ ################################################################通用工具################################################################ ################################################################通用工具################################################################ ################################################################通用工具################################################################ + + // 验证验证码是否有效 + public function check_code($data = 18530934717 , $code = 123456){ + // // 默认验证码正确 + + if(cache($data) == false){ + return '验证码过期'; + }else{ + if($code != cache($data)){ + return '验证码错误'; + } + } + return true; + } + + // 判断字符串是手机还是邮箱 + public function is_tel_email($str) { + // 手机号码的正则表达式(中国大陆格式)(下面正则实际判断的是是否为11位数字) + $mobilePattern = '/^\d{11}$/'; + // 电子邮件地址的正则表达式 + $emailPattern = '/^[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/'; + // 判断是否为手机号码 + if (preg_match($mobilePattern, $str)) { + return 'tel'; + } + // 判断是否为电子邮件地址 + if (preg_match($emailPattern, $str)) { + return 'email'; + } + // 如果都不是,返回其他 + return false; + } + + // 判断token是否过期 public function token_time_validate($token){ // 591b70e0d80b5fa6d77e6e1384453ab9 @@ -250,7 +284,16 @@ class Base extends Controller{ // 中度活动(每周3-5天中度运动):BMR × 1.55 // 高度活动(每周6-7天高强度运动):BMR × 1.725 // 极高活动(体力劳动或每天高强度训练):BMR × 1.9 - $tdee = bcmul($bmr,1.55,2); + if(array_key_exists('activity_level',$data)){ + if($data['activity_level'] != null){ + $tdee = bcmul($bmr,$data['activity_level'],2); + }else{ + $tdee = bcmul($bmr,1.55,2); + } + }else{ + $tdee = bcmul($bmr,1.55,2); + } + // 碳水化合物:通常占总热量的45-65% // 蛋白质:通常占总热量的10-35% @@ -261,15 +304,73 @@ class Base extends Controller{ // 1.碳水化合物(克): (TDEE × 碳水化合物比例) / 4 // 2.蛋白质(克):(TDEE × 蛋白质比例) / 4 // 3.脂肪(克): (TDEE × 脂肪比例) / 9 + + $carbohydrate_p = 0.5; $carbohydrate = bcdiv(bcmul($tdee,0.5,20),4,2); if($data['age_num'] < 65){ + $protein_p = 0.2; + $fat_p = 0.3; $protein = bcdiv(bcmul($tdee,0.2,20),4,2); $fat = bcdiv(bcmul($tdee,0.3,20),9,2); }else{ + $protein_p = 0.25; + $fat_p = 0.25; $protein = bcdiv(bcmul($tdee,0.25,20),4,2); $fat =bcdiv(bcmul($tdee,0.25,20),9,2); } - return ['kcal'=>$tdee,'carbohydrate'=>$carbohydrate,'protein'=>$protein,'fat'=>$fat,'bmr'=>$bmr]; + return ['kcal'=>$tdee,'carbohydrate'=>$carbohydrate,'protein'=>$protein,'fat'=>$fat,'bmr'=>$bmr,'carbohydrate_p'=>$carbohydrate_p,'protein_p'=>$protein_p,'fat_p'=>$fat_p]; + } + /** + * 将重量转换为克(g) + * @param string $weight 重量值 + * @param string $unit 单位 (g, oz, lb, lb:oz) + * @return float 转换后的克重 + */ + function convertWeightToGrams($weight, $unit) { + // 定义精确的转换常量 + $G_PER_OZ = '28.349523125'; + $G_PER_LB = '453.59237'; + + $unit = strtolower($unit); + $result = 0; + + switch ($unit) { + // case 'g': + case '克': + // 已经是克,直接返回 + $result = $weight; + break; + + // case 'oz': + case '盎司': + // 盎司转克 + $result = bcmul($weight,$G_PER_OZ,2); + break; + + // case 'lb': + case '磅': + // 磅转克 + $result = bcmul($weight,$G_PER_LB,2); + break; + + // case 'lb:oz': + case '磅:盎司': + // 磅:盎司复合单位处理 + if (strpos($weight, ':') !== false) { + $temporary_data = explode(':', $weight); + $result = bcadd(bcmul($temporary_data[0],$G_PER_LB,20),bcmul($temporary_data[1],$G_PER_OZ,20),2); + } else { + // 如果格式不正确,可以抛出异常或返回0 + $result = '0'; + } + break; + + default: + $result = '0'; + } + + // 保留两位小数并返回 + return $result; } // 计算营养物质 @@ -293,6 +394,7 @@ class Base extends Controller{ // 乘 bcmul(,,20) // 除 bcdiv(,,20) for ($i=0; $i < count($data); $i++) { + $zong_all = bcadd($data[$i]['protein_val'],bcadd($data[$i]['fat_val'],$data[$i]['carbohydrate_val'],20),20); $data[$i]['nutrients_four'][] = [ 'name' => '卡路里', 'unit' => 'kcal', @@ -305,21 +407,21 @@ class Base extends Controller{ 'unit' => 'g', 'color' => '#5180D8', 'value' => $data[$i]['protein_val'], - 'proportion' => bcmul(bcdiv($data[$i]['protein_val'],bcadd($data[$i]['protein_val'],bcadd($data[$i]['fat_val'],$data[$i]['carbohydrate_val'],20),20),2),100,0), + 'proportion' => $zong_all == 0?0:bcmul(bcdiv($data[$i]['protein_val'],$zong_all,2),100,0), ]; $data[$i]['nutrients_four'][] = [ 'name' => '脂肪', 'unit' => 'g', 'color' => '#ED7886', 'value' => $data[$i]['fat_val'], - 'proportion' => bcmul(bcdiv($data[$i]['fat_val'],bcadd($data[$i]['protein_val'],bcadd($data[$i]['fat_val'],$data[$i]['carbohydrate_val'],20),20),2),100,0), + 'proportion' => $zong_all == 0?0:bcmul(bcdiv($data[$i]['fat_val'],$zong_all,2),100,0), ]; $data[$i]['nutrients_four'][] = [ 'name' => '碳水化合物', 'unit' => 'g', 'color' => '#FFB169', 'value' => $data[$i]['carbohydrate_val'], - 'proportion' => bcmul(bcdiv($data[$i]['carbohydrate_val'],bcadd($data[$i]['protein_val'],bcadd($data[$i]['fat_val'],$data[$i]['carbohydrate_val'],20),20),2),100,0), + 'proportion' => $zong_all == 0?0:bcmul(bcdiv($data[$i]['carbohydrate_val'],$zong_all,2),100,0), ]; $data[$i]['nutrients_list'][] = [ 'name' => 'Calorie', diff --git a/application/KitchenScale2/controller/app/Cookbook.php b/application/KitchenScale2/controller/app/Cookbook.php index b4e893f..954bf48 100644 --- a/application/KitchenScale2/controller/app/Cookbook.php +++ b/application/KitchenScale2/controller/app/Cookbook.php @@ -600,6 +600,7 @@ class Cookbook extends Base{ 'step_data'=>json_encode($data['step_list']), // 'food_type'=>implode(',', $food_type), 'cook_label'=>$data['cook_label'], + 'is_del'=>1, 'create_time'=>date('Y-m-d H:i:s') ]; // dump($insert_data); diff --git a/application/KitchenScale2/controller/app/Countfood.php b/application/KitchenScale2/controller/app/Countfood.php index d6fdee1..4bf3e70 100644 --- a/application/KitchenScale2/controller/app/Countfood.php +++ b/application/KitchenScale2/controller/app/Countfood.php @@ -48,12 +48,18 @@ class Countfood extends Base{ if(!array_key_exists('food_list', $data)){ return $this->msg(10001,'food_list is miss'); } + if(!array_key_exists('time', $data)){ + return $this->msg(10001,'food_list is miss'); + } if(!$this->verify_data_is_ok($data['token'],'str')){ return $this->msg(10005,'token type is error'); } if(!$this->verify_data_is_ok($data['aud_id'],'intnum')){ return $this->msg(10005,'aud_id type is error'); } + if(!$this->verify_data_is_ok($data['time'],'datetime')){ + return $this->msg(10005,'time type is error'); + } $return_data = $this->add_intake_food_action($data); return $return_data; } catch (\Exception $e) { @@ -194,49 +200,7 @@ class Countfood extends Base{ return json(['status' => 'error', 'message' => '系统错误']); } } - // 设置用户的卡路里 - public function set_user_kcal($data=['token'=>'caadd1be045a65f30b92aa805f1de54a','aud_id'=>61,'set_kcal'=>2000]){ - // 尝试捕获异常 - try { - if(count(input('post.')) > 0){ - $data = input('post.'); - } - if(!array_key_exists('token', $data)){ - return $this->msg(10001,'token is miss'); - } - if(!array_key_exists('aud_id', $data)){ - return $this->msg(10001,'aud_id is miss'); - } - if(!array_key_exists('set_kcal', $data)){ - return $this->msg(10001,'set_kcal is miss'); - } - if(!$this->verify_data_is_ok($data['token'],'str')){ - return $this->msg(10005,'token type is error'); - } - if(!$this->verify_data_is_ok($data['aud_id'],'intnum')){ - return $this->msg(10005,'aud_id type is error'); - } - if(!$this->verify_data_is_ok($data['set_kcal'],'num')){ - return $this->msg(10005,'set_kcal type is error'); - } - - $return_data = $this->set_user_kcal_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'] .= "代码: " . $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 json(['status' => 'error', 'message' => '系统错误']); - } - } + public function del_user_eat_log($data=['token'=>'caadd1be045a65f30b92aa805f1de54a','aud_id'=>6,'eat_log_id'=>160]){ // 尝试捕获异常 try { @@ -334,7 +298,9 @@ class Countfood extends Base{ if(!$user_data){ return $this->msg(10003); } - + if(count($data['food_list']) <= 0){ + return $this->msg(10001,'未选择食材'); + } // 统计食物的id $food_id_arr = []; @@ -351,21 +317,22 @@ class Countfood extends Base{ if(!$this->verify_data_is_ok($value['id'],'intnum')){ return $this->msg(10005,'id type is error'); } - if(!$this->verify_data_is_ok($value['weight'],'num')){ - return $this->msg(10005,'weight type is error'); - } + // if(!$this->verify_data_is_ok($value['weight'],'num')){ + // return $this->msg(10005,'weight type is error'); + // } if(!in_array($value['meals_type'],['早餐','午餐','晚餐','加餐'])){ return $this->msg(10005,'meals_type type is error'); } foreach ($data['food_list'][$key] as $k => $v) { - if(!in_array($k,['id','weight','meals_type'])){ + if(!in_array($k,['id','weight','meals_type','unit'])){ unset($data['food_list'][$key][$k]); } } array_push($food_id_arr,$value['id']); + $data['food_list'][$key]['weight_g'] = $this->convertWeightToGrams($value['weight'],$value['unit']); } - + // return $this->msg($data); $food_content = $cfc->table($this->kitchenscale_db_msg['foodlist3']) ->where("id in (".implode(',',$food_id_arr).")") ->field('id,food_name as name,Calorie_val as kcal,Carbohydrate_val as carbohydrate,Protein_val as protein,Fat_val as fat') @@ -374,16 +341,18 @@ class Countfood extends Base{ if(count($food_content) <= 0){ return $this->msg(10004,'未找到对应食材'); } + + // 整理食物信息 $food_content_arr = []; foreach ($food_content as $key => $value) { $food_content_arr[$value['id']] = $value; } - $create_time = date('Y-m-d H:i:s'); + // $create_time = date('Y-m-d H:i:s'); foreach ($data['food_list'] as $key => $value) { //获取每100g食物的比例 - $proportion_num = bcdiv($value['weight'],100,2); + $proportion_num = bcdiv($value['weight_g'],100,2); if(array_key_exists($value['id'], $food_content_arr)){ $data['food_list'][$key]['kcal_val'] = bcmul($food_content_arr[$value['id']]['kcal'],$proportion_num,2); $data['food_list'][$key]['carbohydrate_val'] = bcmul($food_content_arr[$value['id']]['carbohydrate'],$proportion_num,2); @@ -392,29 +361,38 @@ class Countfood extends Base{ $data['food_list'][$key]['food_name'] = $food_content_arr[$value['id']]['name']; $data['food_list'][$key]['aud_id'] = $data['aud_id']; $data['food_list'][$key]['meals_type'] = $value['meals_type']; - $data['food_list'][$key]['create_time'] = $create_time; + $data['food_list'][$key]['create_time'] = $data['time'].date(' H:i:s'); $data['food_list'][$key]['food_id'] = $value['id']; unset($data['food_list'][$key]['id']); + unset($data['food_list'][$key]['weight_g']); }else{ unset($data['food_list'][$key]); } } + // dump($data['food_list']); // die; // 数据库数据字段:id,aud_id,meals_type,food_id,food_name,weight,kcal_val,carbohydrate_val,protein_val,fat_val,create_time // 启动事务 - + // return $this->msg($data['food_list']); Db::startTrans(); try{ - $result = $cfc->table($this->kitchenscale_db_msg['eat_log'])->insertAll($data['food_list']); - if ($result !== count($data['food_list'])) { - Db::rollback(); - return $this->msg(10002,'添加数据错误'); - } else { + if(count($data['food_list']) > 1){ + $result = $cfc->table($this->kitchenscale_db_msg['eat_log'])->insertAll($data['food_list']);//新增所有 + if ($result !== count($data['food_list'])) { + Db::rollback(); + return $this->msg(10002,'添加数据错误'); + } else { + Db::commit(); + return $this->msg([]); + } + }else{ + $result = $cfc->table($this->kitchenscale_db_msg['eat_log'])->insertGetId($data['food_list'][0]);//新增1个 Db::commit(); - return $this->msg([]); + return $this->msg(['id'=>$result]); } + } catch (\Exception $e) { // 回滚事务 Db::rollback(); @@ -431,7 +409,8 @@ class Countfood extends Base{ $user_data = $cfc->table($this->kitchenscale_db_msg['user']) ->where(["id"=>$data['aud_id']]) - ->field('weight,height,gender,age,birthday,is_use_set_kcal,set_kcal') + // ->field('weight,height,gender,age,birthday,is_use_set_kcal,set_kcal') + ->field('weight,height,gender,age,is_use_set_kcal,set_kcal,birthday,set_carbohydrate_v,set_carbohydrate_p,set_protein_v,set_protein_p,set_fat_v,set_fat_p,activity_level') ->find(); if(!$user_data){ return $this->msg(10003); @@ -443,12 +422,24 @@ class Countfood extends Base{ } $nutrition_data = $this->count_user_nutrition_all($user_data); if($user_data['is_use_set_kcal'] == 1){ - $proportion = bcdiv($user_data['set_kcal'],$nutrition_data['kcal'],20); - $nutrition_data['kcal'] = $user_data['set_kcal']; - $nutrition_data['carbohydrate'] = bcmul($nutrition_data['carbohydrate'],$proportion,2); - $nutrition_data['protein'] = bcmul($nutrition_data['protein'],$proportion,2); - $nutrition_data['fat'] = bcmul($nutrition_data['fat'],$proportion,2); + // $proportion = bcdiv($user_data['set_kcal'],$nutrition_data['kcal'],20); + // $nutrition_data['kcal'] = $user_data['set_kcal']; + // $nutrition_data['carbohydrate'] = bcmul($nutrition_data['carbohydrate'],$proportion,2); + // $nutrition_data['protein'] = bcmul($nutrition_data['protein'],$proportion,2); + // $nutrition_data['fat'] = bcmul($nutrition_data['fat'],$proportion,2); + $nutrition_data['kcal'] = $user_data['set_kcal'] != 0?$user_data['set_kcal']:$nutrition_data['kcal']; + $nutrition_data['carbohydrate'] = $user_data['set_carbohydrate_v'] != null?$user_data['set_carbohydrate_v']:$nutrition_data['carbohydrate']; + $nutrition_data['protein'] = $user_data['set_protein_v'] != null?$user_data['set_protein_v']:$nutrition_data['protein']; + $nutrition_data['fat'] = $user_data['set_fat_v'] != null?$user_data['set_fat_v']:$nutrition_data['fat']; + + $nutrition_data['carbohydrate_p'] = $user_data['set_carbohydrate_p'] != null?$user_data['set_carbohydrate_p']:bcmul($nutrition_data['carbohydrate_p'],100,2); + $nutrition_data['protein_p'] = $user_data['set_protein_p'] != null?$user_data['set_protein_p']:bcmul($nutrition_data['protein_p'],100,2); + $nutrition_data['fat_p'] = $user_data['set_fat_p'] != null?$user_data['set_fat_p']:bcmul($nutrition_data['fat_p'],100,2); + }else{ + $nutrition_data['carbohydrate_p'] = bcmul($nutrition_data['carbohydrate_p'],100,2); + $nutrition_data['protein_p'] = bcmul($nutrition_data['protein_p'],100,2); + $nutrition_data['fat_p'] = bcmul($nutrition_data['fat_p'],100,2); } $return_data = [ 'date'=>$data['time'], //时间 @@ -795,7 +786,7 @@ class Countfood extends Base{ ->alias('a') ->join('app_z_national_standard_food_type_3 b','a.food_id = b.id','LEFT') ->where("a.is_del = 0 AND a.aud_id = " . $data['aud_id'] . " AND CAST(a.create_time AS DATE) = CAST('" . $data['time'] . "' AS DATE)") - ->field('a.meals_type,a.food_name,a.weight,a.kcal_val,a.carbohydrate_val,a.protein_val,a.fat_val,a.id,\'https://tc.pcxbc.com\' + b.pic_url as pic_url,a.food_id') + ->field('a.meals_type,a.food_name,a.weight,a.unit,a.kcal_val,a.carbohydrate_val,a.protein_val,a.fat_val,a.id,\'https://tc.pcxbc.com\' + b.pic_url as pic_url,a.food_id') ->select(); if(count($food_content) > 0){ //计算营养物质 @@ -816,7 +807,7 @@ class Countfood extends Base{ $return_data['list'][0]['nutrients_four'][3]['value'] = bcadd($return_data['list'][0]['nutrients_four'][3]['value'],$value['fat_val'],2); array_push($return_data['list'][0]['list'],[ 'name'=>$value['food_name'], - 'weight'=>$value['weight'].'克', + 'weight'=>$value['weight'].' '.$value['unit'], 'id'=>$value['id'], 'pic_url'=>$value['pic_url'], 'val'=>$value['kcal_val'], @@ -831,7 +822,7 @@ class Countfood extends Base{ $return_data['list'][1]['nutrients_four'][3]['value'] = bcadd($return_data['list'][1]['nutrients_four'][3]['value'],$value['fat_val'],2); array_push($return_data['list'][1]['list'],[ 'name'=>$value['food_name'], - 'weight'=>$value['weight'].'克', + 'weight'=>$value['weight'].' '.$value['unit'], 'id'=>$value['id'], 'pic_url'=>$value['pic_url'], 'val'=>$value['kcal_val'], @@ -846,7 +837,7 @@ class Countfood extends Base{ $return_data['list'][2]['nutrients_four'][3]['value'] = bcadd($return_data['list'][2]['nutrients_four'][3]['value'],$value['fat_val'],2); array_push($return_data['list'][2]['list'],[ 'name'=>$value['food_name'], - 'weight'=>$value['weight'].'克', + 'weight'=>$value['weight'].' '.$value['unit'], 'id'=>$value['id'], 'pic_url'=>$value['pic_url'], 'val'=>$value['kcal_val'], @@ -861,7 +852,7 @@ class Countfood extends Base{ $return_data['list'][3]['nutrients_four'][3]['value'] = bcadd($return_data['list'][3]['nutrients_four'][3]['value'],$value['fat_val'],2); array_push($return_data['list'][3]['list'],[ 'name'=>$value['food_name'], - 'weight'=>$value['weight'].'克', + 'weight'=>$value['weight'].' '.$value['unit'], 'id'=>$value['id'], 'pic_url'=>$value['pic_url'], 'val'=>$value['kcal_val'], @@ -887,6 +878,7 @@ class Countfood extends Base{ // 微量元素处理全天 $return_data = $this->calculate_trace_elements($return_data); // 处理单餐营养占比 + // return $this->msg($return_data); foreach ($return_data['list'] as $key => $value) { $all_yy_data_0 = bcadd($value['nutrients_four'][3]['value'],bcadd($value['nutrients_four'][1]['value'],$value['nutrients_four'][2]['value'],20),2); foreach ($value['nutrients_four'] as $k => $v) { @@ -894,11 +886,16 @@ class Countfood extends Base{ if($all_yy_data_0 == 0){ $return_data['list'][$key]['nutrients_four'][$k]['proportion'] = 0; }else{ - $return_data['list'][$key]['nutrients_four'][$k]['proportion'] = bcdiv($value['nutrients_four'][$k]['value'],$all_yy_data_0,2) >= 1?'100':(bcdiv($value['nutrients_four'][$k]['value'],$all_yy_data_0,2))*100; + $return_data['list'][$key]['nutrients_four'][$k]['proportion'] = bcdiv($value['nutrients_four'][$k]['value'],$all_yy_data_0,2) >= 1?'100':bcmul(bcdiv($value['nutrients_four'][$k]['value'],$all_yy_data_0,2),100,2); } + // if($value['name'] == '晚餐'){ + // // dump($return_data['list'][$key]['nutrients_four'][$k]['proportion']); + // } + // dump($return_data['list'][$key]['nutrients_four'][$k]['proportion']); } } } + // return $this->msg($return_data); } @@ -918,15 +915,18 @@ class Countfood extends Base{ 'today_intake'=>$return_data['today_intake'][$key], 'icon'=>$nameMap[$key][2], 'color'=>$nameMap[$key][3], - 'proportion'=>bcdiv($return_data['today_intake'][$key],$value,2) >= 1?'100':(bcdiv($return_data['today_intake'][$key],$value,2))*100, - 'proportion_fp'=>$key == 'kcal'?0:(bcdiv($return_data['suggestion'][$key],$all_yy_data,2))*100, + 'proportion'=>bcdiv($return_data['today_intake'][$key],$value,2) >= 1?'100':bcmul(bcdiv($return_data['today_intake'][$key],$value,2),100,2), + // 'proportion_fp'=>$key == 'kcal'?0:(bcdiv($return_data['suggestion'][$key],$all_yy_data,2))*100, + 'proportion_fp'=>$key == 'kcal'?0:$nutrition_data[$key.'_p'], + ]; } + // dump($user_data); unset($return_data['suggestion']); unset($return_data['today_intake']); - // $return_data = $this->calculate_kcal_proportion($return_data); + // return $return_data; return $this->msg($return_data); } @@ -934,7 +934,7 @@ class Countfood extends Base{ $cfc = Db::connect('cfc_db'); $user_data = $cfc->table($this->kitchenscale_db_msg['user']) ->where(["id"=>$data['aud_id']]) - ->field('weight,height,gender,age,is_use_set_kcal,set_kcal') + ->field('weight,height,gender,age,is_use_set_kcal,set_kcal,activity_level') ->find(); if(!$user_data){ return $this->msg(10003); @@ -981,74 +981,118 @@ class Countfood extends Base{ 'content_list'=>$return_data ]); } + public function set_up_content_action($data){ $cfc = Db::connect('cfc_db'); $user_data = $cfc->table($this->kitchenscale_db_msg['user']) ->where(["id"=>$data['aud_id']]) - ->field('weight,height,gender,age,is_use_set_kcal,set_kcal') + ->field('weight,height,gender,age,is_use_set_kcal,set_kcal,birthday,set_carbohydrate_v,set_carbohydrate_p,set_protein_v,set_protein_p,set_fat_v,set_fat_p,activity_level') ->find(); if(!$user_data){ return $this->msg(10003); } // 计算年龄 - $user_data['age_num'] = $user_data['age']; + if($user_data['birthday']){ + $user_data['age_num'] = $this->calculate_age($user_data['birthday']); + }else{ + $user_data['age_num'] = $user_data['age']; + } // 计算推荐营养 $nutrition_data = $this->count_user_nutrition_all($user_data); if($user_data['is_use_set_kcal'] == 1){ - $nutrition_data['kcal'] = $user_data['set_kcal']; + $nutrition_data['kcal'] = $user_data['set_kcal'] != 0?$user_data['set_kcal']:$nutrition_data['kcal']; + $nutrition_data['carbohydrate'] = $user_data['set_carbohydrate_v'] != null?$user_data['set_carbohydrate_v']:$nutrition_data['carbohydrate']; + $nutrition_data['protein'] = $user_data['set_protein_v'] != null?$user_data['set_protein_v']:$nutrition_data['protein']; + $nutrition_data['fat'] = $user_data['set_fat_v'] != null?$user_data['set_fat_v']:$nutrition_data['fat']; + + + // $nutrition_data['carbohydrate_p'] = $user_data['set_carbohydrate_p'] != null?bcdiv($user_data['set_carbohydrate_p'],100,2):$nutrition_data['carbohydrate_p']; + // $nutrition_data['protein_p'] = $user_data['set_protein_p'] != null?bcdiv($user_data['set_protein_p'],100,2):$nutrition_data['protein_p']; + // $nutrition_data['fat_p'] = $user_data['set_fat_p'] != null?bcdiv($user_data['set_fat_p'],100,2):$nutrition_data['fat_p']; + $nutrition_data['carbohydrate_p'] = $user_data['set_carbohydrate_p'] != null?$user_data['set_carbohydrate_p']:bcmul($nutrition_data['carbohydrate_p'],100,2); + $nutrition_data['protein_p'] = $user_data['set_protein_p'] != null?$user_data['set_protein_p']:bcmul($nutrition_data['protein_p'],100,2); + $nutrition_data['fat_p'] = $user_data['set_fat_p'] != null?$user_data['set_fat_p']:bcmul($nutrition_data['fat_p'],100,2); + }else{ + $nutrition_data['carbohydrate_p'] = bcmul($nutrition_data['carbohydrate_p'],100,2); + $nutrition_data['protein_p'] = bcmul($nutrition_data['protein_p'],100,2); + $nutrition_data['fat_p'] = bcmul($nutrition_data['fat_p'],100,2); } $nutrition_describe = [ [ - '对于一个孩子(2-18岁)(没有特殊健康问题),身体处于快速生长发育阶段,需要充足的营养支持,尤其是蛋白质和健康脂肪。通常建议的三大营养素比例为:', - '1、碳水化合物:45%-65% 的总热量', - '提供能量,支持孩子的日常活动和生长发育。', - '优先选择复合碳水化合物(如全谷物、蔬菜、水果),避免精制糖和高糖零食。', - '2、蛋白质:10%-30% 的总热量', - '支持肌肉、骨骼和器官的发育。', - '建议摄入优质蛋白质来源,如瘦肉、鱼类、鸡蛋、豆类和乳制品。', - '蛋白质需求较高,尤其是青春期孩子。', - '3、脂肪:25%-35% 的总热量', - '提供能量,并支持大脑发育(尤其是Omega-3脂肪酸)。', - '优先选择健康脂肪,如鱼类、坚果、种子、橄榄油和牛油果。', - '避免反式脂肪和过多的饱和脂肪。', - '注意事项', - '如果你有特定的健康目标(如增高,减重),可以进一步调整比例,并咨询营养师或医生以获得个性化建议。', + // '对于一个孩子(2-18岁)(没有特殊健康问题),身体处于快速生长发育阶段,需要充足的营养支持,尤其是蛋白质和健康脂肪。通常建议的三大营养素比例为:', + // '1、碳水化合物:45%-65% 的总热量', + // '提供能量,支持孩子的日常活动和生长发育。', + // '优先选择复合碳水化合物(如全谷物、蔬菜、水果),避免精制糖和高糖零食。', + // '2、蛋白质:10%-30% 的总热量', + // '支持肌肉、骨骼和器官的发育。', + // '建议摄入优质蛋白质来源,如瘦肉、鱼类、鸡蛋、豆类和乳制品。', + // '蛋白质需求较高,尤其是青春期孩子。', + // '3、脂肪:25%-35% 的总热量', + // '提供能量,并支持大脑发育(尤其是Omega-3脂肪酸)。', + // '优先选择健康脂肪,如鱼类、坚果、种子、橄榄油和牛油果。', + // '避免反式脂肪和过多的饱和脂肪。', + // '注意事项', + // '如果你有特定的健康目标(如增高,减重),可以进一步调整比例,并咨询营养师或医生以获得个性化建议。', + '孩子(2-18岁)处于快速生长发育期,需充足营养,尤其蛋白质和健康脂肪。建议比例:', + '1、碳水化合物:45%-65%总热量', + '提供能量,优选全谷物、蔬果等复合碳水,避免高糖零食。', + '2、蛋白质:10%-30%总热量', + '支持肌肉、骨骼发育,推荐鱼、蛋、瘦肉、豆类等优质蛋白。', + '3、脂肪:25%-35%总热量', + '供能并促进大脑发育,选择坚果、鱼类、橄榄油等健康脂肪。', + '注意事项:若有增高、减重等目标,可咨询专业人士调整。' ], [ - '对于一个正常成年人(没有特殊健康问题或特定健身目标),通常建议的三大营养素比例为:', - '1、碳水化合物:45%-65% 的总热量', - '主要功能是提供能量', - '建议选择复合碳水化合物(如全谷物、蔬菜、豆类),而不是精制糖。', - '对于普通人,碳水化合物占总热量的 50%-55% 是一个常见的推荐值。', - '2、蛋白质:10%-35% 的总热量', - '用于维持肌肉、修复组织和支持免疫功能。', - '普通人每日蛋白质摄入量建议为 0.8-1.2克/公斤体重。', - '对于活动量较大或健身人群,蛋白质比例可以提高到 20%-30%。', - '3、脂肪:20%-35% 的总热量', - '提供能量、支持细胞功能并帮助吸收脂溶性维生素。', - '建议以 不饱和脂肪(如橄榄油、坚果、鱼类)为主,减少饱和脂肪和反式脂肪的摄入。', - '脂肪占总热量的 20%-30% 是常见的推荐值。', - '以上是根据世界卫生组织(WHO)和其他健康机构的建议制定的。具体比例可以根据个人的活动水平、健康状况和目标进行微调。', - '注意事项', - '活动水平:活动量大的人可能需要更多的碳水化合物来提供能量,而健身人群可能需要更多的蛋白质。', - '健康状况:例如,糖尿病患者可能需要控制碳水化合物比例,而心血管疾病患者可能需要减少脂肪摄入。', - '个体差异:每个人的代谢和需求不同,建议根据个人情况调整。', - '如果你有特定的健康目标(如减脂、增肌或控制慢性病),可以进一步调整比例,并咨询营养师或医生以获得个性化建议。', + // '对于一个正常成年人(没有特殊健康问题或特定健身目标),通常建议的三大营养素比例为:', + // '1、碳水化合物:45%-65% 的总热量', + // '主要功能是提供能量', + // '建议选择复合碳水化合物(如全谷物、蔬菜、豆类),而不是精制糖。', + // '对于普通人,碳水化合物占总热量的 50%-55% 是一个常见的推荐值。', + // '2、蛋白质:10%-35% 的总热量', + // '用于维持肌肉、修复组织和支持免疫功能。', + // '普通人每日蛋白质摄入量建议为 0.8-1.2克/公斤体重。', + // '对于活动量较大或健身人群,蛋白质比例可以提高到 20%-30%。', + // '3、脂肪:20%-35% 的总热量', + // '提供能量、支持细胞功能并帮助吸收脂溶性维生素。', + // '建议以 不饱和脂肪(如橄榄油、坚果、鱼类)为主,减少饱和脂肪和反式脂肪的摄入。', + // '脂肪占总热量的 20%-30% 是常见的推荐值。', + // '以上是根据世界卫生组织(WHO)和其他健康机构的建议制定的。具体比例可以根据个人的活动水平、健康状况和目标进行微调。', + // '注意事项', + // '活动水平:活动量大的人可能需要更多的碳水化合物来提供能量,而健身人群可能需要更多的蛋白质。', + // '健康状况:例如,糖尿病患者可能需要控制碳水化合物比例,而心血管疾病患者可能需要减少脂肪摄入。', + // '个体差异:每个人的代谢和需求不同,建议根据个人情况调整。', + // '如果你有特定的健康目标(如减脂、增肌或控制慢性病),可以进一步调整比例,并咨询营养师或医生以获得个性化建议。', + '正常成年人(无特殊健康问题)建议营养比例:', + '1、碳水化合物:45%-65%总热量', + '主要供能,推荐全谷物、豆类等复合碳水。', + '2、蛋白质:10%-35%总热量', + '维持肌肉与免疫功能,日常建议0.8-1.2克/公斤体重。', + '3、脂肪:20%-35%总热量', + '支持细胞功能,以不饱和脂肪为主,减少饱和脂肪。', + '注意事项:根据活动量、健康状况微调,特殊目标需个性化建议。' ], [ - '对于一个老人(65岁以上)(没有特殊健康问题),身体的代谢率下降,肌肉量减少,可能面临营养不良或慢性病风险,因此需要调整营养比例。通常建议的三大营养素比例为:', - '1、碳水化合物:45%-65% 的总热量', - '提供能量,但应选择低血糖指数(GI)的食物,如全谷物、蔬菜和豆类,以控制血糖水平。', - '避免精制糖和高糖食物,尤其是糖尿病患者。', - '帮助维持肌肉质量,预防肌肉流失(少肌症)。', - '建议摄入优质蛋白质,如鱼类、瘦肉、鸡蛋、豆类和乳制品。', - '蛋白质需求较高,尤其是活动量较大的老人。', - '3、脂肪:20%-35% 的总热量', - '提供能量,并支持细胞功能和脂溶性维生素的吸收。', - '优先选择不饱和脂肪,如橄榄油、坚果、种子和鱼类。', - '减少饱和脂肪和反式脂肪的摄入,以降低心血管疾病风险。', - '注意事项', - '如果你有特定的健康目标(控制慢性病),可以进一步调整比例,并咨询营养师或医生以获得个性化建议。', + // '对于一个老人(65岁以上)(没有特殊健康问题),身体的代谢率下降,肌肉量减少,可能面临营养不良或慢性病风险,因此需要调整营养比例。通常建议的三大营养素比例为:', + // '1、碳水化合物:45%-65% 的总热量', + // '提供能量,但应选择低血糖指数(GI)的食物,如全谷物、蔬菜和豆类,以控制血糖水平。', + // '避免精制糖和高糖食物,尤其是糖尿病患者。', + // '帮助维持肌肉质量,预防肌肉流失(少肌症)。', + // '建议摄入优质蛋白质,如鱼类、瘦肉、鸡蛋、豆类和乳制品。', + // '蛋白质需求较高,尤其是活动量较大的老人。', + // '3、脂肪:20%-35% 的总热量', + // '提供能量,并支持细胞功能和脂溶性维生素的吸收。', + // '优先选择不饱和脂肪,如橄榄油、坚果、种子和鱼类。', + // '减少饱和脂肪和反式脂肪的摄入,以降低心血管疾病风险。', + // '注意事项', + // '如果你有特定的健康目标(控制慢性病),可以进一步调整比例,并咨询营养师或医生以获得个性化建议。', + '老人(65岁以上)代谢减缓,需关注肌肉维持与慢性病预防。建议比例:', + '1、碳水化合物:45%-65%总热量', + '选择低GI食物如全谷物、蔬菜,控制血糖。', + '2、蛋白质:10%-30%总热量', + '预防肌肉流失,优选鱼、蛋、豆类等易消化蛋白。', + '3、脂肪:20%-35%总热量', + '支持营养吸收,以橄榄油、鱼类等健康脂肪为主。', + '注意事项:慢性病患者需结合医生建议调整饮食。' ] ]; $return_data = [ @@ -1075,21 +1119,21 @@ class Countfood extends Base{ [ 'name'=>'碳水化合物', 'icon'=>'icon-tanshuihuahewu', - 'proportion'=>'50%', + 'proportion'=>$nutrition_data['carbohydrate_p'], 'val'=>$nutrition_data['carbohydrate'], 'unit'=>'克' ], [ 'name'=>'蛋白质', 'icon'=>'icon-Sm-danbaizhi', - 'proportion'=>'20%', + 'proportion'=>$nutrition_data['protein_p'], 'val'=>$nutrition_data['protein'], 'unit'=>'克' ], [ 'name'=>'脂肪', 'icon'=>'icon-w_fat_normal', - 'proportion'=>'30%', + 'proportion'=>$nutrition_data['fat_p'], 'val'=>$nutrition_data['fat'], 'unit'=>'克' ] @@ -1109,28 +1153,7 @@ class Countfood extends Base{ return $this->msg($return_data); } - public function set_user_kcal_action($data){ - $cfc = Db::connect('cfc_db'); - $user_data = $cfc->table($this->kitchenscale_db_msg['user']) - ->where(["id"=>$data['aud_id']]) - ->field('weight,height,gender,age,is_use_set_kcal,set_kcal') - ->find(); - if(!$user_data){ - return $this->msg(10003); - } - $result = $cfc->table($this->kitchenscale_db_msg['user']) - ->where(["id"=>$data['aud_id']]) - ->update([ - 'is_use_set_kcal'=>1, - 'set_kcal'=>$data['set_kcal'] - ]); - - if($result){ - return $this->msg([]); - }else{ - return $this->msg(10002); - } - } + public function del_user_eat_log_action($data){ $cfc = Db::connect('cfc_db'); $user_data = $cfc->table($this->kitchenscale_db_msg['eat_log']) diff --git a/application/KitchenScale2/controller/app/Index.php b/application/KitchenScale2/controller/app/Index.php index 6137ac1..567ec26 100644 --- a/application/KitchenScale2/controller/app/Index.php +++ b/application/KitchenScale2/controller/app/Index.php @@ -3,7 +3,7 @@ namespace app\KitchenScale2\controller\app; use think\Db; -use app\KitchenScale2\controller\app\Guessyoulike;// 引入Wechat服务类 +use app\KitchenScale2\controller\app\Guessyoulike; class Index extends Base{ @@ -233,23 +233,6 @@ class Index extends Base{ // 新版 public function get_default_config_action($data){ $return_data = [ - // 'user_data'=>[], - // 'kcal_data'=>[ - // 'title'=>'今日已摄入热量', - // 'time'=>date('Y-m-d H:i:s'), - // 'kcal'=>['value'=>0,'unit'=>'kcal','standard'=>'不达标','color'=>'#F0AD4E'], - // 'other_elements'=>[ - // 'carbohydrate'=>['value'=>0,'unit'=>'g'], - // 'protein'=>['value'=>0,'unit'=>'g'], - // 'fat'=>['value'=>0,'unit'=>'g'], - // ], - // 'list'=>[ - // ['title'=>'早餐(千卡)','icon'=>'','value'=>0,'unit'=>'kcal'], - // ['title'=>'午餐(千卡)','icon'=>'','value'=>0,'unit'=>'kcal'], - // ['title'=>'晚餐(千卡)','icon'=>'','value'=>0,'unit'=>'kcal'], - // ['title'=>'加餐(千卡)','icon'=>'','value'=>0,'unit'=>'kcal'], - // ], - // ], 'business_cooperation'=>[], 'banner_data'=>[], 'search_history'=>['cookbook'=>[],'food'=>[]], @@ -623,8 +606,14 @@ class Index extends Base{ 'list'=>[], ], ], - ] - // 'cookbook_label'=>[], + ], + 'activity_level'=>[ + ['name'=>'久坐(很少或没有运动)','val'=>'1.2'], + ['name'=>'轻度活动(每周1-3天轻度运动)','val'=>'1.375'], + ['name'=>'中度活动(每周3-5天中度运动)','val'=>'1.55'], + ['name'=>'高度活动(每周6-7天高强度运动)','val'=>'1.725'], + ['name'=>'极高活动(体力劳动或每天高强度训练)','val'=>'1.9'], + ], ]; $cfc = Db::connect('cfc_db'); @@ -643,13 +632,13 @@ class Index extends Base{ ->where(["user_id"=>$user['id'],'is_del'=>0,'type'=>'cookbook']) ->field('id,keyword,last_searched_at,type') ->order('last_searched_at desc') - ->limit(30) + ->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') ->order('last_searched_at desc') - ->limit(30) + ->limit(10) ->select(); // 去重 foreach ($search_history_cookbook as $key => $value) { @@ -727,15 +716,16 @@ class Index extends Base{ }else{ } - $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信息 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 // 处理猜你喜欢信息start @@ -759,8 +749,8 @@ class Index extends Base{ // 添加菜谱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; + $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 diff --git a/application/KitchenScale2/controller/app/Usercenter.php b/application/KitchenScale2/controller/app/Usercenter.php index 3b34b4f..d8135a6 100644 --- a/application/KitchenScale2/controller/app/Usercenter.php +++ b/application/KitchenScale2/controller/app/Usercenter.php @@ -3,6 +3,7 @@ namespace app\KitchenScale2\controller\app; use think\Db; +use app\KitchenScale2\controller\app\Countfood; class Usercenter extends Base{ @@ -39,11 +40,9 @@ class Usercenter extends Base{ ################################################################接口################################################################ // 获取角色信息 - public function get_user_msg($data = ['token'=>'caadd1be045a65f30b92aa805f1de54a']){ - // try { 、 - if(count(input('post.')) > 0){ - $data = input('post.'); - } + public function get_user_msg(){ + try { + $data = input('post.'); if(!array_key_exists('token', $data)){ return $this->msg(10001); } @@ -52,27 +51,25 @@ 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 { - if(count(input('post.')) > 0){ - $data = input('post.'); - } + $data = input('post.'); if(!array_key_exists('token', $data)){ return $this->msg(10001,'token is miss'); } @@ -91,6 +88,9 @@ class Usercenter extends Base{ if(!array_key_exists('weight', $data)){ return $this->msg(10001,'weight is miss'); } + if(!array_key_exists('activity_level', $data)){ + return $this->msg(10001,'weight is miss'); + } if(!$this->verify_data_is_ok($data['token'],'str')){ return $this->msg(10005,'token type is error'); } @@ -109,6 +109,9 @@ class Usercenter extends Base{ if(!$this->verify_data_is_ok($data['weight'],'num')){ return $this->msg(10005,'weight type is error'); } + 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) { @@ -128,11 +131,9 @@ class Usercenter extends Base{ } // 获取用户收藏点赞列表(OK) - public function get_user_collect_list($data = ['token'=>'caadd1be045a65f30b92aa805f1de54a','page'=>1,'search_data'=>'']){ + public function get_user_collect_list(){ try { - if(count(input('post.')) > 0){ - $data = input('post.'); - } + $data = input('post.'); if(!array_key_exists('token', $data)){ return $this->msg(10001,'token is miss'); } @@ -164,11 +165,9 @@ class Usercenter extends Base{ } // 我的菜谱 - public function get_my_cookbook($data = ['token'=>'caadd1be045a65f30b92aa805f1de54a','page'=>1,'search_data'=>'']){ + public function get_my_cookbook(){ try { - if(count(input('post.')) > 0){ - $data = input('post.'); - } + $data = input('post.'); if(!array_key_exists('token', $data)){ return $this->msg(10001,'token is miss'); } @@ -200,11 +199,9 @@ class Usercenter extends Base{ } // 菜谱删除 - public function del_my_cookbook($data = ['token'=>'caadd1be045a65f30b92aa805f1de54a','aud_id'=>1,'cookbook_id'=>'33']){ + public function del_my_cookbook(){ try { - if(count(input('post.')) > 0){ - $data = input('post.'); - } + $data = input('post.'); if(!array_key_exists('token', $data)){ return $this->msg(10001,'token is miss'); } @@ -245,9 +242,7 @@ class Usercenter extends Base{ public function del_search_history(){ // 尝试捕获异常 try { - if(count(input('post.')) > 0){ - $data = input('post.'); - } + $data = input('post.'); if(!array_key_exists('token', $data)){ return $this->msg(10001,'token is miss'); } @@ -289,6 +284,174 @@ class Usercenter extends Base{ public function business_cooperation(){ return $this->fetch(); } + + // 设置营养比例 + public function set_nutrition_proportion(){ + // 尝试捕获异常 + try { + $data = input('post.'); + if(!array_key_exists('token', $data)){ + return $this->msg(10001,'token is miss'); + } + if(!$this->verify_data_is_ok($data['token'],'str')){ + return $this->msg(10005,'token type is error'); + } + if(!array_key_exists('set_kcal', $data)){ + return $this->msg(10001,'set_kcal is miss'); + } + if(!$this->verify_data_is_ok($data['set_kcal'],'num')){ + return $this->msg(10005,'set_kcal type is error'); + } + + if(!array_key_exists('carbohydrate_v', $data)){ + return $this->msg(10001,'carbohydrate_v is miss'); + } + if(!$this->verify_data_is_ok($data['carbohydrate_v'],'num')){ + return $this->msg(10005,'carbohydrate_v type is error'); + } + if(!array_key_exists('carbohydrate_p', $data)){ + return $this->msg(10001,'carbohydrate_p is miss'); + } + if(!$this->verify_data_is_ok($data['carbohydrate_p'],'num')){ + return $this->msg(10005,'carbohydrate_p type is error'); + } + + if(!array_key_exists('protein_v', $data)){ + return $this->msg(10001,'protein_v is miss'); + } + if(!$this->verify_data_is_ok($data['protein_v'],'num')){ + return $this->msg(10005,'protein_v type is error'); + } + if(!array_key_exists('protein_p', $data)){ + return $this->msg(10001,'protein_p is miss'); + } + if(!$this->verify_data_is_ok($data['protein_p'],'num')){ + return $this->msg(10005,'protein_p type is error'); + } + + if(!array_key_exists('fat_v', $data)){ + return $this->msg(10001,'fat_v is miss'); + } + if(!$this->verify_data_is_ok($data['fat_v'],'num')){ + return $this->msg(10005,'fat_v type is error'); + } + if(!array_key_exists('fat_p', $data)){ + return $this->msg(10001,'fat_p is miss'); + } + if(!$this->verify_data_is_ok($data['fat_p'],'num')){ + return $this->msg(10005,'fat_p type is error'); + } + + // $data['del_arr'] = strval($data['del_arr']); + // $data['del_arr'] = trim($data['del_arr']); + // 判断是否是 "all"(不区分大小写) + // if (strtolower($data['del_arr']) !== 'all' && preg_match('/^\d+(,\d+)*$/', $data['del_arr']) !== 1) { + // return $this->msg(10005,'del_arr type is error'); + // } + + $return_data = $this->set_nutrition_proportion_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'] .= "代码: " . $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 json(['status' => 'error', 'message' => '系统错误']); + } + } + + // 重置密码 + public function update_my_password(){ + try { + $data = input('post.'); + if(!array_key_exists('token', $data)){ + return $this->msg(10001,'token is miss'); + } + if(!array_key_exists('password', $data)){ + return $this->msg(10001,'password is miss'); + } + if(!array_key_exists('c_password', $data)){ + return $this->msg(10001,'c_password is miss'); + } + if(!$this->verify_data_is_ok($data['token'],'str')){ + return $this->msg(10005,'token type is error'); + } + if($data['password'] != $data['c_password']){ + return $this->msg(10005,'两次密码不一致'); + } + if($data['password'] == ''){ + return $this->msg(10005,'密码不能为空'); + } + if(!$this->verify_data_is_ok($data['password'],'str')){ + return $this->msg(10005,'password type is error'); + } + if(!$this->verify_data_is_ok($data['c_password'],'str')){ + return $this->msg(10005,'c_password type is error'); + } + $return_data = $this->update_my_password_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); + } + } + // 绑定手机/邮箱 + public function update_my_account_msg(){ + try { + $data = input('post.'); + if(!array_key_exists('token', $data)){ + return $this->msg(10001,'token is miss'); + } + if(!array_key_exists('data', $data)){ + return $this->msg(10001,'data is miss'); + } + if(!array_key_exists('code', $data)){ + return $this->msg(10001,'code is miss'); + } + if(!$this->verify_data_is_ok($data['token'],'str')){ + return $this->msg(10005,'token type is error'); + } + if(!$this->verify_data_is_ok($data['data'],'str')){ + return $this->msg(10005,'data type is error'); + } + if(!$this->verify_data_is_ok($data['code'],'intnum')){ + return $this->msg(10005,'code type is error'); + } + $return_data = $this->update_my_account_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); + } + } + @@ -319,7 +482,7 @@ class Usercenter extends Base{ $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') + ->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'){ @@ -333,7 +496,33 @@ class Usercenter extends Base{ $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['food_count'] = $this->user_that_day_food_count($user_account); + $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); } @@ -363,6 +552,7 @@ class Usercenter extends Base{ $user_msg['birthday'] = $data['birthday']; $user_msg['height'] = $data['height']; $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'); @@ -430,7 +620,6 @@ class Usercenter extends Base{ 'content_list'=>$collect_list ]); } - public function get_my_cookbook_action($data){ // 获取账号下信息以及用户信息 $user_data = Db::table($this->reedaw_db_msg['zhanghao'])->where(['token'=>$data['token']])->count(); @@ -495,7 +684,6 @@ class Usercenter extends Base{ 'content_list'=>$content_list ]); } - public function del_my_cookbook_action($data){ // 获取账号下信息以及用户信息 $user_data = Db::table($this->reedaw_db_msg['zhanghao'])->where(['token'=>$data['token']])->count(); @@ -530,8 +718,6 @@ class Usercenter extends Base{ } } - - public function del_search_history_action($data){ // $data['del_arr'] = strval($data['del_arr']); @@ -567,7 +753,6 @@ class Usercenter extends Base{ // 获取菜谱分类标签end } - public function business_cooperation_action(){ $data = input(); @@ -587,222 +772,63 @@ class Usercenter extends Base{ return $this->msg(10002); } } - - - public function user_that_day_food_count($user_data){ + public function set_nutrition_proportion_action($data){ $cfc = Db::connect('cfc_db'); - if($user_data['birthday']){ - $user_data['age_num'] = $this->calculate_age($user_data['birthday']); + $result = $cfc->table($this->kitchenscale_db_msg['user']) + ->where(['token'=>$data['token']]) + ->update([ + 'is_use_set_kcal'=>1, + 'set_kcal'=>$data['set_kcal'], + 'set_carbohydrate_v'=>$data['carbohydrate_v'], + 'set_carbohydrate_p'=>$data['carbohydrate_p'], + 'set_protein_v'=>$data['protein_v'], + 'set_protein_p'=>$data['protein_p'], + 'set_fat_v'=>$data['fat_v'], + 'set_fat_p'=>$data['fat_p'], + ]); + if($result){ + return $this->msg([]); }else{ - $user_data['age_num'] = $user_data['age']; + return $this->msg(10002); } - $nutrition_data = $this->count_user_nutrition_all($user_data); - if($user_data['is_use_set_kcal'] == 1){ - $proportion = bcdiv($user_data['set_kcal'],$nutrition_data['kcal'],20); - $nutrition_data['kcal'] = $user_data['set_kcal']; - $nutrition_data['carbohydrate'] = bcmul($nutrition_data['carbohydrate'],$proportion,2); - $nutrition_data['protein'] = bcmul($nutrition_data['protein'],$proportion,2); - $nutrition_data['fat'] = bcmul($nutrition_data['fat'],$proportion,2); - - } - $day_time = date('Y-m-d'); - $return_data = [ - 'date'=>$day_time, //时间 - 'suggestion'=>[ //建议 - 'kcal'=>$nutrition_data['kcal'], //建议摄入卡路里量 - 'carbohydrate'=>$nutrition_data['carbohydrate'], //建议摄入碳水量 - 'protein'=>$nutrition_data['protein'], //建议摄入蛋白质量 - 'fat'=>$nutrition_data['fat'], //建议摄入脂肪量 - ], - 'today_intake'=>[ //今日已摄入 - 'kcal'=>0, //今日已摄入卡路里量 - 'carbohydrate'=>0, //今日已摄入碳水量 - 'protein'=>0, //今日已摄入蛋白质量 - 'fat'=>0, //今日已摄入脂肪量 - ], - 'remaining_kcal'=>$nutrition_data['kcal'], //剩下可摄入卡路里量 - 'list'=>[ - [ - 'name'=>'早餐', - 'val'=>0, - 'unit'=>'kcal', - 'color'=>'#0992B4', - 'icon'=>'https://tc.pcxbc.com/kitchenscale_all/meal_1.png', - 'icon_home'=>'/static/1.png', - 'bgimg_home'=>'/static/2.png', - 'kcal_proportion'=>0, - 'list'=>[], - ], - [ - 'name'=>'午餐', - 'val'=>0, - 'unit'=>'kcal', - 'color'=>'#4F9211', - 'icon'=>'https://tc.pcxbc.com/kitchenscale_all/meal_2.png', - 'icon_home'=>'/static/3.png', - 'bgimg_home'=>'/static/4.png', - 'kcal_proportion'=>0, - 'list'=>[], - ], - [ - 'name'=>'晚餐', - 'val'=>0, - 'unit'=>'kcal', - 'color'=>'#B354B0', - 'icon'=>'https://tc.pcxbc.com/kitchenscale_all/meal_3.png', - 'icon_home'=>'/static/5.png', - 'bgimg_home'=>'/static/6.png', - 'kcal_proportion'=>0, - 'list'=>[], - ], - [ - 'name'=>'加餐', - 'val'=>0, - 'unit'=>'kcal', - 'color'=>'#C08433', - 'icon'=>'https://tc.pcxbc.com/kitchenscale_all/meal_4.png', - 'icon_home'=>'/static/7.png', - 'bgimg_home'=>'/static/8.png', - 'kcal_proportion'=>0, - 'list'=>[], - ], - ], - ]; - - // 查询用户今日摄入食物 - $food_content = $cfc->table($this->kitchenscale_db_msg['eat_log']) - ->alias('a') - ->join('app_z_national_standard_food_type_3 b','a.food_id = b.id','LEFT') - ->where("a.is_del = 0 AND a.aud_id = " . $user_data['aud_id'] . " AND CAST(a.create_time AS DATE) = CAST('" . $day_time . "' AS DATE)") - ->field('a.meals_type,a.food_name,a.weight,a.kcal_val,a.carbohydrate_val,a.protein_val,a.fat_val,a.id,\'https://tc.pcxbc.com\' + b.pic_url as pic_url,a.food_id') - ->select(); - - if(count($food_content) > 0){ //计算营养物质 - $food_content = $this->calculate_nutrients($food_content); - // return $this->msg($food_content); - foreach ($food_content as $key => $value) { - // dump($value['nutrients_four']); - $return_data['today_intake']['kcal'] = bcadd($return_data['today_intake']['kcal'],$value['kcal_val'],2); - $return_data['today_intake']['carbohydrate'] = bcadd($return_data['today_intake']['carbohydrate'],$value['carbohydrate_val'],2); - $return_data['today_intake']['protein'] = bcadd($return_data['today_intake']['protein'],$value['protein_val'],2); - $return_data['today_intake']['fat'] = bcadd($return_data['today_intake']['fat'],$value['fat_val'],2); - // 处理各餐 - if($value['meals_type'] == '早餐'){ - $return_data['list'][0]['val'] = bcadd($return_data['list'][0]['val'],$value['kcal_val'],2); - // $return_data['list'][0]['nutrients_four'][0]['value'] = bcadd($return_data['list'][0]['nutrients_four'][0]['value'],$value['kcal_val'],2); - // $return_data['list'][0]['nutrients_four'][1]['value'] = bcadd($return_data['list'][0]['nutrients_four'][1]['value'],$value['carbohydrate_val'],2); - // $return_data['list'][0]['nutrients_four'][2]['value'] = bcadd($return_data['list'][0]['nutrients_four'][2]['value'],$value['protein_val'],2); - // $return_data['list'][0]['nutrients_four'][3]['value'] = bcadd($return_data['list'][0]['nutrients_four'][3]['value'],$value['fat_val'],2); - array_push($return_data['list'][0]['list'],[ - 'name'=>$value['food_name'], - 'weight'=>$value['weight'].'克', - 'id'=>$value['id'], - 'pic_url'=>$value['pic_url'], - 'val'=>$value['kcal_val'], - // 'nutrients_four' => $value['nutrients_four'], - // 'nutrients_list' => $value['nutrients_list'] - ]); - }else if($value['meals_type'] == '午餐'){ - $return_data['list'][1]['val'] = bcadd($return_data['list'][1]['val'],$value['kcal_val'],2); - // $return_data['list'][1]['nutrients_four'][0]['value'] = bcadd($return_data['list'][1]['nutrients_four'][0]['value'],$value['kcal_val'],2); - // $return_data['list'][1]['nutrients_four'][1]['value'] = bcadd($return_data['list'][1]['nutrients_four'][1]['value'],$value['carbohydrate_val'],2); - // $return_data['list'][1]['nutrients_four'][2]['value'] = bcadd($return_data['list'][1]['nutrients_four'][2]['value'],$value['protein_val'],2); - // $return_data['list'][1]['nutrients_four'][3]['value'] = bcadd($return_data['list'][1]['nutrients_four'][3]['value'],$value['fat_val'],2); - array_push($return_data['list'][1]['list'],[ - 'name'=>$value['food_name'], - 'weight'=>$value['weight'].'克', - 'id'=>$value['id'], - 'pic_url'=>$value['pic_url'], - 'val'=>$value['kcal_val'], - // 'nutrients_four' => $value['nutrients_four'], - // 'nutrients_list' => $value['nutrients_list'] - ]); - }else if($value['meals_type'] == '晚餐'){ - $return_data['list'][2]['val'] = bcadd($return_data['list'][2]['val'],$value['kcal_val'],2); - // $return_data['list'][2]['nutrients_four'][0]['value'] = bcadd($return_data['list'][2]['nutrients_four'][0]['value'],$value['kcal_val'],2); - // $return_data['list'][2]['nutrients_four'][1]['value'] = bcadd($return_data['list'][2]['nutrients_four'][1]['value'],$value['carbohydrate_val'],2); - // $return_data['list'][2]['nutrients_four'][2]['value'] = bcadd($return_data['list'][2]['nutrients_four'][2]['value'],$value['protein_val'],2); - // $return_data['list'][2]['nutrients_four'][3]['value'] = bcadd($return_data['list'][2]['nutrients_four'][3]['value'],$value['fat_val'],2); - array_push($return_data['list'][2]['list'],[ - 'name'=>$value['food_name'], - 'weight'=>$value['weight'].'克', - 'id'=>$value['id'], - 'pic_url'=>$value['pic_url'], - 'val'=>$value['kcal_val'], - // 'nutrients_four' => $value['nutrients_four'], - // 'nutrients_list' => $value['nutrients_list'] - ]); - }else{ - $return_data['list'][3]['val'] = bcadd($return_data['list'][3]['val'],$value['kcal_val'],2); - // $return_data['list'][3]['nutrients_four'][0]['value'] = bcadd($return_data['list'][3]['nutrients_four'][0]['value'],$value['kcal_val'],2); - // $return_data['list'][3]['nutrients_four'][1]['value'] = bcadd($return_data['list'][3]['nutrients_four'][1]['value'],$value['carbohydrate_val'],2); - // $return_data['list'][3]['nutrients_four'][2]['value'] = bcadd($return_data['list'][3]['nutrients_four'][2]['value'],$value['protein_val'],2); - // $return_data['list'][3]['nutrients_four'][3]['value'] = bcadd($return_data['list'][3]['nutrients_four'][3]['value'],$value['fat_val'],2); - array_push($return_data['list'][3]['list'],[ - 'name'=>$value['food_name'], - 'weight'=>$value['weight'].'克', - 'id'=>$value['id'], - 'pic_url'=>$value['pic_url'], - 'val'=>$value['kcal_val'], - // 'nutrients_four' => $value['nutrients_four'], - // 'nutrients_list' => $value['nutrients_list'] - ]); - } - } - // dump($return_data['list']); - // die; - $return_data['list'] = array_values($return_data['list']); - // 处理剩下可吃 - $return_data['remaining_kcal'] = bcsub($return_data['suggestion']['kcal'],$return_data['today_intake']['kcal'],2)>=0?bcsub($return_data['suggestion']['kcal'],$return_data['today_intake']['kcal'],2):0; - - $nameMap = [ - 'kcal' => ['卡路里','kcal','https://tc.pcxbc.com/kitchenscale_all/icon_kcal.png','#5180D8'], - 'carbohydrate' => ['碳水','g','https://tc.pcxbc.com/kitchenscale_all/icon_carbohydrate.png','#ED7886'], - 'protein' => ['蛋白质','g','https://tc.pcxbc.com/kitchenscale_all/icon_protein.png','#FFB169'], - 'fat' => ['脂肪','g','https://tc.pcxbc.com/kitchenscale_all/icon_fat.png','#3CB383'], - ]; - $all_yy_data = bcadd($return_data['suggestion']['fat'],bcadd($return_data['suggestion']['carbohydrate'],$return_data['suggestion']['protein'],20),20); - foreach ($return_data['suggestion'] as $key => $value) { - $return_data['nutrients_four'][] = [ - 'name'=>$nameMap[$key][0], - 'unit'=>$nameMap[$key][1], - 'suggestion'=>$value, - 'today_intake'=>$return_data['today_intake'][$key], - 'icon'=>$nameMap[$key][2], - 'color'=>$nameMap[$key][3], - 'proportion'=>bcdiv($return_data['today_intake'][$key],$value,2) >= 1?'100':(bcdiv($return_data['today_intake'][$key],$value,2))*100, - 'proportion_fp'=>$key == 'kcal'?0:(bcdiv($return_data['suggestion'][$key],$all_yy_data,2))*100, - ]; - } - unset($return_data['suggestion']); - unset($return_data['today_intake']); - - - // // 处理各餐卡路里占比 - // $return_data = $this->calculate_kcal_proportion($return_data); - // // 计算营养物质能量占比 - // $return_data = $this->calculate_energy_proportion($return_data); - // // 排序营养元素食物排行榜 - // $return_data = $this->energy_food_rank($return_data); - // // 微量元素处理全天 - // $return_data = $this->calculate_trace_elements($return_data); - // 处理单餐营养占比 - // foreach ($return_data['list'] as $key => $value) { - // $all_yy_data_0 = bcadd($value['nutrients_four'][3]['value'],bcadd($value['nutrients_four'][1]['value'],$value['nutrients_four'][2]['value'],20),2); - // foreach ($value['nutrients_four'] as $k => $v) { - // if($k != 0){ - // if($all_yy_data_0 == 0){ - // $return_data['list'][$key]['nutrients_four'][$k]['proportion'] = 0; - // }else{ - // $return_data['list'][$key]['nutrients_four'][$k]['proportion'] = bcdiv($value['nutrients_four'][$k]['value'],$all_yy_data_0,2) >= 1?'100':(bcdiv($value['nutrients_four'][$k]['value'],$all_yy_data_0,2))*100; - // } - // } - // } - // } - } - - return $return_data; } + 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(); + if(!$find_data){ + return $this->msg(10003); + } + $result = Db::table($this->reedaw_db_msg['zhanghao'])->where(['token'=>$data['token'],'is_del'=>0])->update(['password'=>$data['password']]); + if($result){ + return $this->msg([]); + }else{ + return $this->msg(10002); + } + } + public function update_my_account_msg_action($data){ + $validate_result = $this->check_code($data['data'],$data['code']); + if($validate_result !== true){ + return $this->msg(10001,$validate_result); + } + $montage_data = $this->is_tel_email($data['data']); + if($montage_data == false){ + return $this->msg(10005); + } + $result = Db::table($this->reedaw_db_msg['zhanghao'])->where(['token'=>$data['token'],'is_del'=>0])->update([ + $montage_data=>$data['data'], + 'update_time'=>date('Y-m-d H:i:s') + ]); + if($result){ + return $this->msg([]); + }else{ + return $this->msg(10002); + } + } + + + + diff --git a/application/route.php b/application/route.php index 9c0bc60..319fbdb 100644 --- a/application/route.php +++ b/application/route.php @@ -452,6 +452,8 @@ Route::any('/open_wechat_content', 'app/Msginformation/open_wechat_content'); ########################################################################################################################################### ################################################################以上是Reedaw################################################################ + + ################################################################下面是厨房秤################################################################ ########################################################################################################################################### @@ -541,9 +543,6 @@ Route::any('/kitchenscale2/get_log_list', 'app/kitchenscale2/app.countfood/get_l // 计食器板块-设置内容 Route::any('/kitchenscale/set_up_content', 'app/kitchenscale/app.countfood/set_up_content'); Route::any('/kitchenscale2/set_up_content', 'app/kitchenscale2/app.countfood/set_up_content'); -// 设置用户的卡路里 -Route::any('/kitchenscale/set_user_kcal', 'app/kitchenscale/app.countfood/set_user_kcal'); -Route::any('/kitchenscale2/set_user_kcal', 'app/kitchenscale2/app.countfood/set_user_kcal'); // 删除用户某个饮食记录 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'); @@ -579,6 +578,18 @@ Route::any('/kitchenscale2/business_cooperation', 'app/kitchenscale2/app.usercen // 商务合作提交 Route::any('/kitchenscale/business_cooperation_action', 'app/kitchenscale/app.usercenter/business_cooperation_action'); Route::any('/kitchenscale2/business_cooperation_action', 'app/kitchenscale2/app.usercenter/business_cooperation_action'); +// ☆设置用户的卡路里&营养占比 +Route::any('/kitchenscale/set_user_kcal', 'app/kitchenscale/app.usercenter/set_nutrition_proportion'); +Route::any('/kitchenscale2/set_user_kcal', 'app/kitchenscale2/app.usercenter/set_nutrition_proportion'); +// ☆重置密码 +Route::any('/kitchenscale/update_my_password', 'app/kitchenscale/app.usercenter/update_my_password'); +Route::any('/kitchenscale2/update_my_password', 'app/kitchenscale2/app.usercenter/update_my_password'); +// ☆修改个人信息 +Route::any('/kitchenscale/update_my_account_msg', 'app/kitchenscale/app.usercenter/update_my_account_msg'); +Route::any('/kitchenscale2/update_my_account_msg', 'app/kitchenscale2/app.usercenter/update_my_account_msg'); + + + // 百度图片识别接口################################################################ diff --git a/public/new_reedaw/icon/bmi.png b/public/new_reedaw/icon/bmi.png new file mode 100644 index 0000000000000000000000000000000000000000..a774566ebc4c682ace4506377341a8abbd2a56a9 GIT binary patch literal 1926 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 A4FCWD literal 0 HcmV?d00001 diff --git a/public/new_reedaw/icon/card_fh.png b/public/new_reedaw/icon/card_fh.png new file mode 100644 index 0000000000000000000000000000000000000000..7efa4edc79e567c504fac1907879d18e28dbaff7 GIT binary patch literal 14097 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 P00000NkvXXu0mjfSYmoU literal 0 HcmV?d00001 diff --git a/public/new_reedaw/icon/card_hs.png b/public/new_reedaw/icon/card_hs.png new file mode 100644 index 0000000000000000000000000000000000000000..e4579c8735ae4ba0b73cc657d758e8e923b80d70 GIT binary patch literal 15856 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 literal 0 HcmV?d00001 diff --git a/public/new_reedaw/icon/card_ts.png b/public/new_reedaw/icon/card_ts.png new file mode 100644 index 0000000000000000000000000000000000000000..c9036de8db200eeb35d371652a85dc728648ca45 GIT binary patch literal 17786 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 Rp_Bjs002ovPDHLkV1i?dgx~-G literal 0 HcmV?d00001 diff --git a/public/new_reedaw/icon/contrast.png b/public/new_reedaw/icon/contrast.png new file mode 100644 index 0000000000000000000000000000000000000000..07ad7e27ee2bad58222b430a52eb40d1ecb07885 GIT binary patch literal 2330 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 CBG{P# literal 0 HcmV?d00001 diff --git a/public/new_reedaw/icon/inheritHeighet.png b/public/new_reedaw/icon/inheritHeighet.png new file mode 100644 index 0000000000000000000000000000000000000000..3938d2153991c0178ffd8833f94b5bcb92669b0e GIT binary patch literal 1788 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