'app_account_number',//账号表 // 'juese'=>'app_user_data',//角色表 ]; protected $kitchenscale_db_msg = [ // 'cookbook'=>'app_user_cookbook',//菜谱表 // 'cookbook_food_relation'=>'app_user_cookbook_food_relation',//菜谱表 // 'cookbook_label'=>'app_user_cookbook_label',//菜谱标签表 // 'uploadimg'=>'app_user_upload_img',//素材表 // 'followlist'=>'app_user_follow_list',//关注列表 // 'collect_list'=>'app_user_collect_list',//收藏列表 'foodlist1'=>'app_z_national_standard_food_type_1_multilingual',//食材列表3 'foodlist2'=>'app_z_national_standard_food_type_2_multilingual',//食材列表3 'foodlist3'=>'app_z_national_standard_food_type_3_multilingual',//食材列表3 'foodlist4'=>'app_z_national_standard_food_type_4_multilingual',//食材列表3 // 'nutrition'=>'app_user_cookbook_nutrition',//能量 // 'vitamin'=>'app_user_cookbook_vitamin',//维生素 // 'mineral'=>'app_user_cookbook_mineral',//矿物质 'user'=>'app_user_data_multilingual',//用户表 ]; // 加 bcadd(,,20) // 减 bcsub(,,20) // 乘 bcmul(,,20) // 除 bcdiv(,,20) ################################################################接口################################################################ ################################################################接口################################################################ ################################################################接口################################################################ // 根据菜谱标签查询列表(首页用)(OK) // public function find_by_cook_label($data=['token'=>'','cook_label'=>4,'page'=>'1']){ // // 尝试捕获异常 // try { // if(count(input('post.')) > 0){ // $data = input('post.'); // } // if(!array_key_exists('cook_label', $data)){ // return $this->msg(10001,'cook_label is miss'); // } // // if(!array_key_exists('page', $data)){ // // return $this->msg(10001,'page is miss'); // // } // if(!$this->verify_data_is_ok($data['cook_label'],'intnum')){ // return $this->msg(10005,'cook_label type is error'); // } // // if(!$this->verify_data_is_ok($data['page'],'intnum')){ // // return $this->msg(10005,'page type is error'); // // } // $return_data = $this->find_by_cook_label_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' => '系统错误']); // } // } // 根据食材详细查找列表(OK) // public function find_by_food($data=['token'=>'caadd1be045a65f30b92aa805f1de54a','food_name'=>"2724,2670",'page'=>'1']){ // // 尝试捕获异常 // 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('food_name', $data)){ // return $this->msg(10001,'food_name is miss'); // } // // if(!array_key_exists('page', $data)){ // // return $this->msg(10001,'page 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['food_name'],'str')){ // return $this->msg(10005,'tofood_nameken type is error'); // } // // if(!$this->verify_data_is_ok($data['page'],'intnum')){ // // return $this->msg(10005,'page type is error'); // // } // $return_data = $this->find_by_food_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' => '系统错误']); // } // } // 查询食谱的详情(OK) // public function cookbook_details($data=['token'=>'','cookbook_id'=>'3594']){ // // 尝试捕获异常 // try { // if(count(input('post.')) > 0){ // $data = input('post.'); // } // if(!array_key_exists('cookbook_id', $data)){ // return $this->msg(10001,'cookbook_id is miss'); // } // if(!$this->verify_data_is_ok($data['cookbook_id'],'intnum')){ // return $this->msg(10005,'cookbook_id type is error'); // } // $return_data = $this->cookbook_details_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' => '系统错误']); // } // } // 关注行为(OK) // public function cookbook_follow($data=['token'=>'caadd1be045a65f3','being_followed'=>'caadd1be045a65f30b92aa805f1de54a']){ // // 尝试捕获异常 // 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('being_followed', $data)){ // return $this->msg(10001,'cookbook_id 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['being_followed'],'str')){ // return $this->msg(10005,'cookbook_id type is error'); // } // $return_data = $this->cookbook_follow_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' => '系统错误']); // } // } // 点赞收藏菜谱(OK) // public function cookbook_like($data=['token'=>'caadd1be045a65f30b92aa805f1de54a','cookbook_id'=>'12']){ // // 尝试捕获异常 // 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('cookbook_id', $data)){ // return $this->msg(10001,'cookbook_id 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['cookbook_id'],'intnum')){ // return $this->msg(10005,'cookbook_id type is error'); // } // $return_data = $this->cookbook_like_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' => '系统错误']); // } // } // 计算当前食材重量的卡路里(OK) // public function food_count_kcal($data=['food_name'=>'鸡肉','food_weight'=>456.37]){ // // 尝试捕获异常 // try { // if(count(input('post.')) > 0){ // $data = input('post.'); // } // if(!array_key_exists('food_name', $data)){ // return $this->msg(10001,'food_name is miss'); // } // if(!array_key_exists('food_weight', $data)){ // return $this->msg(10001,'food_weight is miss'); // } // if(!$this->verify_data_is_ok($data['food_name'],'str')){ // return $this->msg(10005,'food_name type is error'); // } // if(!$this->verify_data_is_ok($data['food_weight'],'num')){ // return $this->msg(10005,'food_weight type is error'); // } // $return_data = $this->food_count_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' => '系统错误']); // } // } // 食材列表查询接口(OK) public function find_food($data=['food_name'=>'鸡肉']){ // 尝试捕获异常 try { if(count(input('post.')) > 0){ $data = input('post.'); } if(!array_key_exists('food_name', $data)){ return $this->msg(10001,'food_name is miss'); } if(!$this->verify_data_is_ok($data['food_name'],'str')){ return $this->msg(10005,'food_name type is error'); } $return_data = $this->find_food_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 get_food_list(){ // 尝试捕获异常 // try { if(count(input('post.')) > 0){ $data = input('post.'); } // if(!array_key_exists('food_level2_id', $data)){ // return $this->msg(10001,'food_level2_id is miss'); // } // if(!array_key_exists('page', $data)){ // return $this->msg(10001,'page is miss'); // } // if(!$this->verify_data_is_ok($data['food_level2_id'],'intnum')){ // return $this->msg(10005,'food_level2_id type is error'); // } // if(!$this->verify_data_is_ok($data['page'],'intnum')){ // return $this->msg(10005,'page type is error'); // } $return_data = $this->get_food_list_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' => '系统错误']); // } } // 获取所有食谱label // public function get_cookbook_label_list($data=['token'=>'caadd1be045a65f30b92aa805f1de54a']){ // // 尝试捕获异常 // try { // if(count(input('post.')) > 0){ // $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'); // } // $return_data = $this->get_cookbook_label_list_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 get_search_food_page_list($data=['token'=>'caadd1be045a65f30b92aa805f1de54a']){ // 尝试捕获异常 try { if(count(input('post.')) > 0){ $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'); } $return_data = $this->get_search_food_page_list_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' => '系统错误']); } } #######################################################################action####################################################################### #######################################################################action####################################################################### #######################################################################action####################################################################### // public function find_by_cook_label_action($data){ // $page_now = array_key_exists('page',$data)?$data['page']:1; // $page_total = $page_now; // $page_num = 20; // $cook_label = $data['cook_label']; // $cfc = Db::connect('cfc_db'); // $content_num = $cfc->table($this->kitchenscale_db_msg['cookbook']) // ->where(['cook_label'=>$cook_label,'is_del'=>0]) // ->count(); // $page_total = ceil($content_num/$page_num); // $content_list = $cfc->table($this->kitchenscale_db_msg['cookbook']) // ->alias('a') // ->join($this->kitchenscale_db_msg['uploadimg'].' b','a.cover = b.id','LEFT') // ->where(['a.cook_label'=>$cook_label,'a.is_del'=>0]) // ->field('a.id,a.title,b.pic_url as cover,a.create_user_head_pic,a.create_user_nickname,a.likes_num') // // ->order('id DESC') // ->page("$page_now,$page_num") // ->select(); // if(array_key_exists('token',$data)){ // if($data['token'] != ''){ // // 获取账号下信息以及用户信息 // $user_data = Db::table($this->reedaw_db_msg['zhanghao'])->where(['token'=>$data['token']])->field('id,token,nickname,head_pic')->find(); // if(!$user_data){ // return $this->msg(20001,'账号信息错误'); // } // // 获取用户收藏列表 // $my_collect_list = $cfc->table($this->kitchenscale_db_msg['collect_list']) // ->where(['token'=>$data['token'],'is_del'=>0]) // ->column('cookbook_id'); // // dump($my_collect_list); // // 处理菜谱收藏信息 // foreach ($content_list as $key => $value) { // // if(in_array($value['id'],$my_collect_list)){ // if(array_key_exists($value['id'],$my_collect_list)){ // $content_list[$key]['is_me_like_it'] = 'yes'; // }else{ // $content_list[$key]['is_me_like_it'] = 'no'; // } // if($value['cover'] == null){ // $content_list[$key]['cover'] = 'https://tc.pcxbc.com/kitchenscale_all/diule.jpg'; // } // unset($content_list[$key]['ROW_NUMBER']); // } // }else{ // foreach ($content_list as $key => $value) { // $content_list[$key]['is_me_like_it'] = 'no'; // if($value['cover'] == null){ // $content_list[$key]['cover'] = 'https://tc.pcxbc.com/kitchenscale_all/diule.jpg'; // } // unset($content_list[$key]['ROW_NUMBER']); // } // } // }else{ // foreach ($content_list as $key => $value) { // $content_list[$key]['is_me_like_it'] = 'no'; // if($value['cover'] == null){ // $content_list[$key]['cover'] = 'https://tc.pcxbc.com/kitchenscale_all/diule.jpg'; // } // unset($content_list[$key]['ROW_NUMBER']); // } // } // // dump($content_list); // // die; // return $this->msg([ // 'page_now'=>$page_now, // 'page_total'=>$page_total, // 'content_list'=>$content_list // ]); // } // public function find_by_food_action($data){ // // 获取账号下信息以及用户信息 // $user_data = Db::table($this->reedaw_db_msg['zhanghao'])->where(['token'=>$data['token']])->field('id,token,nickname,head_pic')->find(); // if(!$user_data){ // return $this->msg(20001,'账号信息错误'); // } // $page_now = array_key_exists('page',$data)?$data['page']:1; // $page_total = $page_now; // $page_num = 20; // $food_name = $data['food_name']; // $cfc = Db::connect('cfc_db'); // // $food_name = implode(',',$food_name); // // dump($food_name); // // die; // $content_num = $cfc->table($this->kitchenscale_db_msg['cookbook_food_relation']) // ->where("food_id in ($food_name)") // ->group('cookbook_id') // ->field('count(distinct cookbook_id) as count') // 显式指定列名 // ->select(); // 然后获取结果 // // dump($content_num); // $page_total = ceil(count($content_num)/$page_num); // $content_list = $cfc->table($this->kitchenscale_db_msg['cookbook_food_relation']) // ->alias('a') // ->join($this->kitchenscale_db_msg['cookbook'].' b','a.cookbook_id = b.id','LEFT') // ->join($this->kitchenscale_db_msg['uploadimg'].' c','b.cover = c.id','LEFT') // ->where("a.food_id in ($food_name)") // ->field('b.id,b.title,c.pic_url as cover,b.create_user_head_pic,b.create_user_nickname,b.likes_num') // ->group('b.id,b.title,c.pic_url,b.create_user_head_pic,b.create_user_nickname,b.likes_num') // ->page("$page_now,$page_num") // ->select(); // // dump($food_name); // // dump($content_num); // // dump($page_total); // // dump($content_list); // // die; // // $content_num = $cfc->table($this->kitchenscale_db_msg['cookbook']) // // ->where("food_type like '%$food_name%'") // // ->count(); // // $page_total = ceil($content_num/$page_num); // // $content_list = $cfc->table($this->kitchenscale_db_msg['cookbook']) // // ->alias('cookbook') // // ->join($this->kitchenscale_db_msg['uploadimg'].' uploadimg','cookbook.cover = uploadimg.id','LEFT') // // ->where("cookbook.food_type like '%$food_name%'") // // ->field('cookbook.id,cookbook.title,uploadimg.pic_url as cover,cookbook.create_user_head_pic,cookbook.create_user_nickname,cookbook.likes_num') // // ->page("$page_now,$page_num") // // ->select(); // // 获取用户收藏列表 // $my_collect_list = $cfc->table($this->kitchenscale_db_msg['collect_list']) // ->where(['token'=>$data['token']]) // ->column('cookbook_id'); // // dump($my_collect_list); // // 处理菜谱收藏信息 // foreach ($content_list as $key => $value) { // // if(in_array($value['id'],$my_collect_list)){ // if(array_key_exists($value['id'],$my_collect_list)){ // $content_list[$key]['is_me_like_it'] = 'yes'; // }else{ // $content_list[$key]['is_me_like_it'] = 'no'; // } // if($value['cover'] == null){ // $content_list[$key]['cover'] = 'https://tc.pcxbc.com/kitchenscale_all/diule.jpg'; // } // unset($content_list[$key]['ROW_NUMBER']); // } // return $this->msg([ // 'page_now'=>$page_now, // 'page_total'=>$page_total, // 'content_list'=>$content_list // ]); // } // public function cookbook_details_action($data){ // $cfc = Db::connect('cfc_db'); // $img_arr = []; // // 查询菜谱详情 // $cookbook_data = $cfc->table($this->kitchenscale_db_msg['cookbook'])->where(['id'=>$data['cookbook_id']])->find(); // if(!$cookbook_data){ // return $this->msg(10004,'菜谱不存在'); // } // $cookbook_data['food_data'] = json_decode($cookbook_data['food_data'],true); // $cookbook_data['step_data'] = json_decode($cookbook_data['step_data'],true); // // $cookbook_data['food_type'] = explode(',',$cookbook_data['food_type']); // $cookbook_data_step_data_count = count($cookbook_data['step_data']); // // 设置需要的图片id // array_push($img_arr, $cookbook_data['cover']); // foreach ($cookbook_data['step_data'] as $key => $value) { // if(count($value['pic_list']) > 0){ // foreach ($value['pic_list'] as $k => $v) { // if(!in_array($v, $img_arr)){ // array_push($img_arr, $v); // } // } // } // } // // dump($cookbook_data); // // die; // $img_arr = implode(',',$img_arr); // // 查找需要的图片 // $img_arr_data = $cfc->table($this->kitchenscale_db_msg['uploadimg'])->where("id in ($img_arr) AND is_del = 0")->field('id,pic_name,pic_url')->select(); // $cookbook_img_data = []; // // 处理菜谱图片 // foreach ($img_arr_data as $key => $value) { // $cookbook_img_data[$value['id']] = $value['pic_url']; // } // // 设置菜谱图片 // foreach ($cookbook_data['step_data'] as $key => $value) { // $cookbook_data['step_data'][$key]['step_num'] = "步骤".($key+1).'/'.$cookbook_data_step_data_count; // $cookbook_data['step_data'][$key]['pic_url_list'] = []; // foreach ($value['pic_list'] as $k => $v) { // if(array_key_exists($v, $cookbook_img_data)){ // array_push($cookbook_data['step_data'][$key]['pic_url_list'],$cookbook_img_data[$v]); // }else{ // array_push($cookbook_data['step_data'][$key]['pic_url_list'],'https://tc.pcxbc.com/kitchenscale_all/diule.jpg'); // } // } // } // // $cookbook_data['cover_id'] = $cookbook_data['cover']; // if(array_key_exists($cookbook_data['cover'], $cookbook_img_data)){ // $cookbook_data['cover_pic_url'] = $cookbook_img_data[$cookbook_data['cover']]; // }else{ // $cookbook_data['cover_pic_url'] = 'https://tc.pcxbc.com/kitchenscale_all/diule.jpg'; // } // if(array_key_exists($cookbook_data['cover'], $cookbook_img_data)){ // if($data['token'] != ''){ // // 获取账号下信息以及用户信息 // $user_data = Db::table($this->reedaw_db_msg['zhanghao'])->where(['token'=>$data['token']])->field('id,token,nickname,head_pic')->find(); // if(!$user_data){ // return $this->msg(20001,'账号信息错误'); // } // $collect_data = $cfc->table($this->kitchenscale_db_msg['collect_list']) // ->where([ // 'token'=>$data['token'], // 'cookbook_id'=>$data['cookbook_id'], // ]) // ->find(); // if($collect_data){ // if($collect_data['is_del'] == 0){ // // 如果有结果并且没被删过 // $cookbook_data['collect_status'] = 'yes'; // }else{ // // 如果有结果被删过 // $cookbook_data['collect_status'] = 'no'; // } // }else{ // // 如果没结果 // $cookbook_data['collect_status'] = 'no'; // } // }else{ // $cookbook_data['collect_status'] = 'no'; // } // }else{ // $cookbook_data['collect_status'] = 'no'; // } // // 处理营养物质 // $nutrition = $cfc->table($this->kitchenscale_db_msg['nutrition'])->where(['cookbook_id'=>$data['cookbook_id']])->field('name_en,name_ch as name,unit,value as weight,nrv')->select(); // $vitamin = $cfc->table($this->kitchenscale_db_msg['vitamin'])->where(['cookbook_id'=>$data['cookbook_id']])->field('name_en,name_ch as name,unit,value as weight,nrv')->select(); // $mineral = $cfc->table($this->kitchenscale_db_msg['mineral'])->where(['cookbook_id'=>$data['cookbook_id']])->field('name_en,name_ch as name,unit,value as weight,nrv')->select(); // $cookbook_data['tags'] = []; // array_push($cookbook_data['tags'],[ // 'title'=>'所需食材', // 'desc'=>'重量', // 'list'=>$cookbook_data['food_data'], // ]); // if(count($nutrition)>0){ // array_push($cookbook_data['tags'],[ // 'title'=>'能量', // 'desc'=>'含量', // 'list'=>$nutrition, // ]); // }else{ // array_push($cookbook_data['tags'],[ // 'title'=>'', // 'desc'=>'', // 'list'=>[], // ]); // } // if(count($vitamin)>0){ // array_push($cookbook_data['tags'],[ // 'title'=>'维生素', // 'desc'=>'含量', // 'list'=>$vitamin, // ]); // }else{ // array_push($cookbook_data['tags'],[ // 'title'=>'', // 'desc'=>'', // 'list'=>[], // ]); // } // if(count($mineral)>0){ // array_push($cookbook_data['tags'],[ // 'title'=>'矿物质', // 'desc'=>'含量', // 'list'=>$mineral, // ]); // }else{ // array_push($cookbook_data['tags'],[ // 'title'=>'', // 'desc'=>'', // 'list'=>[], // ]); // } // $cookbook_data['token'] = $cookbook_data['create_user_token']; // $cookbook_data['description'] = $cookbook_data['describe_data']; // // $cookbook_data['food_list'] = $cookbook_data['food_data']; // $cookbook_data['step_list'] = $cookbook_data['step_data']; // unset($cookbook_data['create_user_token']); // unset($cookbook_data['describe_data']); // unset($cookbook_data['food_data']); // unset($cookbook_data['step_data']); // unset($cookbook_data['create_time']); // unset($cookbook_data['food_type']); // unset($cookbook_data['ROW_NUMBER']); // unset($cookbook_data['is_del']); // return $this->msg($cookbook_data); // } // public function cookbook_follow_action($data){ // // 获取账号下信息以及用户信息 // $user_data = Db::table($this->reedaw_db_msg['zhanghao'])->where(['token'=>$data['token']])->field('id,token,nickname,head_pic')->find(); // if(!$user_data){ // return $this->msg(20001,'账号信息错误'); // } // // dump($data); // $cfc = Db::connect('cfc_db'); // // $cookbook_data = $cfc->table($this->kitchenscale_db_msg['cookbook'])->where(['id'=>$data['cookbook_id']])->field('id,create_user_token')->find(); // // if(!$cookbook_data){ // // return $this->msg(10002,'未找到菜谱'); // // } // if($data['token'] == $data['being_followed']){ // // 如果查询跟作者一致 // return $this->msg(10003,'不能关注自己'); // } // $follow_data = $cfc->table($this->kitchenscale_db_msg['followlist']) // ->where([ // 'follow_user_token'=>$data['token'], // 'being_follow_user_token'=>$data['being_followed'], // ]) // ->find(); // $follow_data_state = 0; // if($follow_data){ // if($follow_data['is_del'] == 0){ // // 如果当前是关注状态 // $follow_data_state = 1; // }else{ // $follow_data_state = 0; // } // $follow_result= $cfc->table($this->kitchenscale_db_msg['followlist']) // ->where(['id'=>$follow_data['id']]) // ->update(['is_del'=>$follow_data_state]); // }else{ // $follow_result = $cfc->table($this->kitchenscale_db_msg['followlist']) // ->insert([ // 'follow_user_token'=>$data['token'], // 'being_follow_user_token'=>$data['being_followed'], // 'create_time'=>date('Y-m-d H:i:s') // ]); // } // if($follow_result){ // return $this->msg([]); // }else{ // return $this->msg(10002,'操作失败'); // } // } // public function cookbook_like_action($data){ // // 获取账号下信息以及用户信息 // $user_data = Db::table($this->reedaw_db_msg['zhanghao'])->where(['token'=>$data['token']])->field('id,token,nickname,head_pic')->find(); // if(!$user_data){ // return $this->msg(20001,'账号信息错误'); // } // $cfc = Db::connect('cfc_db'); // $cookbook_data = $cfc->table($this->kitchenscale_db_msg['cookbook'])->where(['id'=>$data['cookbook_id']])->field('id,create_user_token,likes_num')->find(); // if(!$cookbook_data){ // return $this->msg(10004,'未找到菜谱'); // } // // return $this->msg(10002,'是这里'); // // if($data['token'] == $cookbook_data['create_user_token']){ // // // 如果查询跟作者一致 // // return $this->msg(10002,'不能收藏自己'); // // } // $like_data = $cfc->table($this->kitchenscale_db_msg['collect_list'])->where(['token'=>$data['token'],'cookbook_id'=>$data['cookbook_id']])->find(); // $like_data_state = 0; // if($like_data){ // if($like_data['is_del'] == 0){ // // 如果当前是关注状态 // $like_data_state = 1; // }else{ // $like_data_state = 0; // } // // 启动事务 // Db::startTrans(); // try{ // $cfc->table($this->kitchenscale_db_msg['collect_list']) // ->where(['id'=>$like_data['id']]) // ->update(['is_del'=>$like_data_state]); // if($like_data_state == 0){ // $cfc->table($this->kitchenscale_db_msg['cookbook'])->where(['id'=>$data['cookbook_id']])->setInc('likes_num'); // }else{ // $cfc->table($this->kitchenscale_db_msg['cookbook'])->where(['id'=>$data['cookbook_id']])->setDec('likes_num'); // } // // 提交事务 // Db::commit(); // if($like_data_state==0){ // $likes_num = $cookbook_data['likes_num']+1; // }else{ // $likes_num = $cookbook_data['likes_num']-1; // if($likes_num <= 0){ // $likes_num = 0; // } // } // return $this->msg([ // 'collect_status'=>$like_data_state==0?'yes':'no', // 'likes_num'=>$likes_num // ]); // } catch (\Exception $e) { // // 回滚事务 // Db::rollback(); // return $this->msg(10002,'操作失败.'); // } // }else{ // // 启动事务 // Db::startTrans(); // try{ // $cfc->table($this->kitchenscale_db_msg['collect_list']) // ->insert([ // 'token'=>$data['token'], // 'cookbook_id'=>$data['cookbook_id'], // 'create_time'=>date('Y-m-d H:i:s') // ]); // $cfc->table($this->kitchenscale_db_msg['cookbook'])->where(['id'=>$data['cookbook_id']])->setInc('likes_num'); // // 提交事务 // Db::commit(); // return $this->msg([ // 'collect_status'=>"yes", // 'likes_num'=>$cookbook_data['likes_num']+1 // ]); // } catch (\Exception $e) { // // 回滚事务 // Db::rollback(); // return $this->msg(10002,'操作失败'); // } // } // } public function food_count_kcal_action($data){ $cfc = Db::connect('cfc_db'); $food_data = $cfc->table($this->kitchenscale_db_msg['foodlist3'])->where(['name'=>$data['food_name']])->field("kcal")->find(); if(!$food_data){ return $this->msg(10004,'未登记的食材'); } $weight = bcdiv($data['food_weight'],100,2); $kcal = bcmul($weight,$food_data['kcal'],2); return $this->msg(['value'=>$kcal,'unit'=>'kcal']); } public function find_food_action($data){ $cfc = Db::connect('cfc_db'); $food_data = $cfc->query("select f3.id,f3.food_name as name,f3.pic_url,f3.Calorie_val as kcal,f3.weight_unit as unit,f2.id as up_one_level_id,f1.id as up_two_level_id from ".$this->kitchenscale_db_msg['foodlist3']." as f3 LEFT JOIN ".$this->kitchenscale_db_msg['foodlist2']." as f2 on f3.two_id = f2.id LEFT JOIN ".$this->kitchenscale_db_msg['foodlist1']." as f1 on f2.one_id = f1.id where f3.is_del=0 AND f3.food_name like '%".$data['food_name']."%' "); if(count($food_data)>0){ for ($i=0; $i < count($food_data); $i++) { if($food_data[$i]['pic_url'] != ''){ $food_data[$i]['pic_url'] = 'https://tc.pcxbc.com/kitchenscale_all'.$food_data[$i]['pic_url']; } } return $this->msg($food_data); }else{ return $this->msg(10004,'未找到该食材'); } } public function get_food_list_action($data){ if(!array_key_exists('page',$data)){ $data['page'] = 1; }else{ if(!$this->verify_data_is_ok($data['page'],'intnum')){ $data['page'] = 1; } } $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(); // 根据用户输入语种查询 $Language2 = new Language2; $Language2_type = $Language2->check($data['search_data'],$user_msg['language']); // dump($data['search_data']); // dump($user_msg['language']); // dump($Language2_type); // die; if($Language2_type !== false){ if($Language2_type == 'zh'){ $user_sc_data = 'name_zh'; $user_sc_data2 = 'food_name'; }else{ $user_sc_data = 'name_'.$Language2_type; $user_sc_data2 = "food_name_".$Language2_type; } }else{ return $this->msg(10010,'未识别到您的语种'); } // dump($user_msg['language']); // dump($Language2_type); // die; $search_sql_str = "is_del = 0"; if(!array_key_exists('search_data', $data)){ $data['search_data'] = ""; $ss = ""; }else{ if($data['search_data'] === ""){ $data['search_data'] = ""; $ss = ""; }else{ $ss = $data['search_data']; // 根据用户输入语种查询 if($Language2_type == 'zh'){ $data['search_data'] = " AND food_name LIKE '%".str_replace('[', '[[]', $ss)."%'"; }else{ $data['search_data'] = " AND ".$user_sc_data2." LIKE N'%".str_replace('[', '[[]', $ss)."%'"; } } } $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, $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"; $collect_list = $cfc->query($sql); 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]['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_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_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'], 'type_name'=>$nutrients_list_data[$i]['type'] == 1?'能量及宏量营养素':($nutrients_list_data[$i]['type'] == 2?'维生素':'矿物质'), 'color'=>$nutrients_list_data[$i]['type'] == 1?'#C4FFE0':($nutrients_list_data[$i]['type'] == 2?'#FFEFB7':'#7DA8E0') ]); } } for ($i=0; $i < count($collect_list); $i++) { $collect_list[$i]['nutrients_four'] = []; $collect_list[$i]['nutrients_list'] = []; $temporary_calculate = 0; 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'], 'unit'=>$value['unit'], 'color'=>$value['name'] == 'Carbohydrate'?'#FFB169':($value['name'] == 'Fat'?'#ED7886':($value['name'] == 'Protein'?'#5180D8':'')), 'value'=>!is_numeric($value['value'])?0:$value['value'], ]); // 如果不为卡路里 if($value['name'] != 'Calorie'){ $temporary_calculate = $temporary_calculate+$value['value']; } } } // 处理详情当中的环数据占比 foreach ($collect_list[$i]['nutrients_four'] as $k => $v) { if($v['name'] != '卡路里'){ $collect_list[$i]['nutrients_four'][$k]['proportion'] = bcmul(bcdiv($v['value'],$temporary_calculate,2),100,0); }else{ $collect_list[$i]['nutrients_four'][$k]['proportion'] = 0; } } } } } // 记录搜索历史 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']); } } return $this->msg([ 'page_now'=>$data['page'], 'page_total'=>$page_total, 'content_list'=>$collect_list ]); } // public function get_cookbook_label_list_action(){ // $cfc = Db::connect('cfc_db'); // // 获取菜谱分类标签start // $cook_label = $cfc->table($this->kitchenscale_db_msg['cookbook_label']) // ->where("is_del = 0") // ->field('id,name') // ->select(); // $temporary_label = []; // foreach ($cook_label as $key => $value) { // unset($cook_label[$key]['ROW_NUMBER']); // $cook_label[$key]['list'] = []; // $temporary_label[$value['id']] = $key; // } // $content_list = $cfc->table($this->kitchenscale_db_msg['cookbook']) // ->alias('a') // ->join($this->kitchenscale_db_msg['uploadimg'].' b','a.cover = b.id','LEFT') // ->where(['a.is_del'=>0]) // ->field('a.id,a.cook_label,a.title,b.pic_url as cover') // ->select(); // foreach ($content_list as $key => $value) { // unset($content_list[$key]['ROW_NUMBER']); // array_push($cook_label[$temporary_label[$value['cook_label']]]['list'],$content_list[$key]); // } // return $this->msg($cook_label); // // 获取菜谱分类标签end // } public function get_search_food_page_list_action($data){ $cfc = Db::connect('cfc_db'); // 获取菜谱分类标签start // 蔬菜类id:4 6 7 // 肉类id:10 11 14 $data_list = $cfc->table($this->kitchenscale_db_msg['foodlist3']) ->where('two_id in (4,6,7,10,11,14) and is_popular = 1') ->field('id,food_name,two_id') ->select(); $result = [ 'food'=>[ 'title'=>'流行食材', 'list'=>[ [ 'title'=>'蔬菜', 'list'=>[] ], [ 'title'=>'肉类', 'list'=>[] ], ] ], 'log'=>[], ]; foreach ($data_list as $key => $value) { if($value['two_id'] == 4 || $value['two_id'] == 6 || $value['two_id'] == 7){ array_push($result['food']['list'][0]['list'],['id'=>$value['id'],'name'=>$value['food_name']]); }else if($value['two_id'] == 10 || $value['two_id'] == 11 || $value['two_id'] == 14){ array_push($result['food']['list'][1]['list'],['id'=>$value['id'],'name'=>$value['food_name']]); } } return $this->msg($result); // 获取菜谱分类标签end } #######################################################################小工具####################################################################### #######################################################################小工具####################################################################### #######################################################################小工具####################################################################### // 处理食材的卡路里 public function count_calorie($data,$step){ $foot_name = array_column($data, 'id'); $foot_name = array_unique($foot_name); $cfc = Db::connect('cfc_db'); $foot_kcal = $cfc->table($this->kitchenscale_db_msg['foodlist3'])->where("id in ('".implode("','", $foot_name)."')")->field("id,food_name as name,Calorie_val as kcal")->select(); $foot_kcal2 = []; foreach ($foot_kcal as $key => $value) { $foot_kcal2[$value['name']] = [$value['id'],$value['kcal']]; } // dump($data); // dump($foot_kcal2); // die; foreach ($data as $key => $value) { if(array_key_exists($value['name'], $foot_kcal2)){ $data[$key]['id'] = $foot_kcal2[$value['name']][0]; $data[$key]['kcal'] = $foot_kcal2[$value['name']][1]; }else{ $data[$key]['kcal'] = '0'; $data[$key]['id'] = 0; } $data[$key]['unit'] = 'g'; } return $data; } // 加 bcadd(,,20) // 减 bcsub(,,20) // 乘 bcmul(,,20) // 除 bcdiv(,,20) // 计算卡路里 public function count_calorie_action($weight,$kcal){ $weight = bcdiv($weight,100,2); return bcmul($weight,$kcal,2); } public function chuli_shuju(){ $cfc = Db::connect('cfc_db'); // $foot_kcal = $cfc->table('app_user_cookbook')->field("food_data,id")->select(); // $foot_name = []; // // dump($foot_kcal); // foreach ($foot_kcal as $key => $value) { // unset($foot_kcal[$key]['ROW_NUMBER']); // $foot_kcal[$key]['food_data'] = json_decode($foot_kcal[$key]['food_data'],true); // foreach ($foot_kcal[$key]['food_data'] as $k => $v) { // $linshi_data = $v; // // dump($linshi_data); // $foot_kcal[$key]['food_data'][$k] = []; // $foot_kcal[$key]['food_data'][$k]['name'] = $linshi_data['name']; // $foot_kcal[$key]['food_data'][$k]['weight'] = $linshi_data['weight']; // $foot_kcal[$key]['food_data'][$k]['unit'] = 'g'; // $foot_kcal[$key]['food_data'][$k]['kcal'] = rtrim($linshi_data['kcal'], "kcal"); // if(!in_array($linshi_data['name'], $foot_name)){ // array_push($foot_name,$linshi_data['name']); // } // } // // $foot_kcal[$key]['food_data'] = $foot_kcal[$key]['food_data'][0]; // // $foot_kcal[$key]['food_data'] = json_encode($foot_kcal[$key]['food_data']); // } // $shicai = $cfc->table($this->kitchenscale_db_msg['foodlist3'])->where("name in ('".implode("','", $foot_name)."')")->field("id,name,kcal")->select(); // $shicai2 = []; // foreach ($shicai as $key => $value) { // $shicai2[$value['name']] = [$value['id'],$value['kcal']]; // } // // dump($shicai2); // foreach ($foot_kcal as $key => $value) { // foreach ($foot_kcal[$key]['food_data'] as $k => $v) { // $foot_kcal[$key]['food_data'][$k]['kcal'] = $shicai2[$v['name']][1]; // $foot_kcal[$key]['food_data'][$k]['id'] = $shicai2[$v['name']][0]; // } // // $foot_kcal[$key]['food_data'] = $foot_kcal[$key]['food_data'][0]; // $foot_kcal[$key]['food_data'] = json_encode($foot_kcal[$key]['food_data']); // } // // dump($foot_kcal); // // die; // foreach ($foot_kcal as $key => $value) { // $cfc->table('app_user_cookbook')->where(['id'=>$value['id']])->update(['food_data'=>$value['food_data']]); // } // dump($foot_kcal); // die; $sql = "SELECT father_id,count(*) as num FROM app_z_national_standard_food_type_4 GROUP BY father_id ORDER BY num DESC"; $result = $cfc->query($sql); $aa = []; foreach ($result as $key => $value) { if($value['num'] >= 30){ $aa[] = $value['father_id']; } } $bb = implode("','",$aa); $sql2 = "SELECT id,father_id FROM app_z_national_standard_food_type_4 WHERE father_id IN ('".$bb."')"; $result2 = $cfc->query($sql2); $cc = []; foreach ($result2 as $key => $value) { if (array_key_exists($value['father_id'], $cc)) { // 基本用法 if (!in_array($value['id'], $cc[$value['father_id']])) { $cc[$value['father_id']][] = $value['id']; } } else { $cc[$value['father_id']] = [$value['id']]; } } $toDeleteStructured = []; foreach ($cc as $key => $value) { // 每个数组有58个元素,后29个是需要删除的 $deletePart = array_slice($value, 29, 29); $toDeleteStructured[$key] = $deletePart; // $toDeleteStructured[$key] = count($deletePart); } foreach ($toDeleteStructured as $key => $value) { $zz = implode("','",$value); $result3 = $cfc->table('app_z_national_standard_food_type_4') ->where("id in ('".$zz."')") ->update(['is_del'=>1]); dump($key); dump($result3); // $sql3 = "UPDATE app_z_national_standard_food_type_4 SET is_del = 1 WHERE id IN (".$zz.")"; // $result3 = $cfc->query($sql3); } // foreach ($toDeleteStructured as $key => $value) { // foreach ($value as $k => $v) { // $dd[] = $v; // } // } // $zz = implode(",",$dd); // $sql3 = "UPDATE app_z_national_standard_food_type_4 SET is_del = 1 WHERE id IN (".$zz.")"; // $result3 = $cfc->query($sql3); // dump($result3); // dump($toDeleteStructured); } }