2025-12-22 03:58:08 +08:00
< ? php
namespace app\KitchenScale3\controller\app ;
use think\Db ;
2026-02-03 18:56:47 +08:00
use app\KitchenScale3\controller\app\Language2 ;
2025-12-22 03:58:08 +08:00
class Cookbook extends Base {
// protected $token_time = 2592000;//30天的秒数
protected $default_head_pic = 'http://tc.pcxbc.com/tsf/head_pic.png' ;
protected $page_num = 10 ;
protected $reedaw_db_msg = [
// 'zhanghao'=>'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' );
2025-12-27 21:27:08 +08:00
$user_msg = $cfc -> table ( $this -> kitchenscale_db_msg [ 'user' ])
-> where ([ 'token' => $data [ 'token' ]])
-> field ( " id,language,token " )
-> find ();
2026-02-03 18:56:47 +08:00
// 根据用户输入语种查询
$Language2 = new Language2 ;
$Language2_type = $Language2 -> check ( $data [ 'search_data' ], $user_msg [ 'language' ]);
// dump($data['search_data']);
// dump($user_msg['language']);
// dump($Language2_type);
2025-12-27 21:27:08 +08:00
// die;
2026-02-03 18:56:47 +08:00
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 , '未识别到您的语种' );
}
2025-12-27 21:27:08 +08:00
2026-02-03 18:56:47 +08:00
// dump($user_msg['language']);
// dump($Language2_type);
// die;
2025-12-22 03:58:08 +08:00
$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' ];
2026-02-03 18:56:47 +08:00
// 根据用户输入语种查询
if ( $Language2_type == 'zh' ){
2025-12-27 21:27:08 +08:00
$data [ 'search_data' ] = " AND food_name LIKE '% " . str_replace ( '[' , '[[]' , $ss ) . " %' " ;
2026-02-03 18:56:47 +08:00
} else {
$data [ 'search_data' ] = " AND " . $user_sc_data2 . " LIKE N'% " . str_replace ( '[' , '[[]' , $ss ) . " %' " ;
2025-12-27 21:27:08 +08:00
}
2025-12-22 03:58:08 +08:00
}
}
2026-02-03 18:56:47 +08:00
2025-12-22 03:58:08 +08:00
$search_sql_str = $search_sql_str . $data [ 'search_data' ];
2025-12-27 21:27:08 +08:00
2025-12-22 03:58:08 +08:00
// 计算总数
$count_sql = " SELECT COUNT(*) as total FROM { $this -> kitchenscale_db_msg [ 'foodlist3' ] } WHERE { $search_sql_str } " ;
$count_result = $cfc -> query ( $count_sql );
2026-02-03 18:56:47 +08:00
2025-12-22 03:58:08 +08:00
$content_num = $count_result [ 0 ][ 'total' ] ? ? 0 ;
$page_total = ceil ( $content_num / $cp_page_num );
2025-12-27 21:27:08 +08:00
2025-12-22 03:58:08 +08:00
// 计算分页偏移量
$page = max ( 1 , intval ( $data [ 'page' ]));
$offset = ( $page - 1 ) * $cp_page_num ;
// SQL Server分页查询 - 使用OFFSET FETCH语法( SQL Server 2012及以上版本)
2025-12-27 21:27:08 +08:00
$sql = " SELECT id, record_id, $user_sc_data2 as name, pic_url, Calorie_val as kcal, weight_unit as unit
2025-12-22 03:58:08 +08:00
FROM { $this -> kitchenscale_db_msg [ 'foodlist3' ]}
WHERE { $search_sql_str }
ORDER BY id
OFFSET { $offset } ROWS
FETCH NEXT { $cp_page_num } ROWS ONLY " ;
2026-02-03 18:56:47 +08:00
2025-12-22 03:58:08 +08:00
$collect_list = $cfc -> query ( $sql );
2026-02-03 18:56:47 +08:00
2025-12-22 03:58:08 +08:00
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' ];
2025-12-27 21:27:08 +08:00
array_push ( $nutrients_list_id , $collect_list [ $key ][ 'id' ]);
$nutrients_list_temporary [ $collect_list [ $key ][ 'id' ]] = [];
2025-12-22 03:58:08 +08:00
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 ) . " ) " )
2025-12-27 21:27:08 +08:00
-> field ( " father_id,name_en, " . $user_sc_data . " ,unit,value,type " )
2025-12-22 03:58:08 +08:00
-> select ();
for ( $i = 0 ; $i < count ( $nutrients_list_data ); $i ++ ) {
2025-12-27 21:27:08 +08:00
// 去掉末尾0
$nutrients_list_data [ $i ][ 'value' ] = rtrim ( rtrim ( $nutrients_list_data [ $i ][ 'value' ], '0' ), '.' );
2025-12-22 03:58:08 +08:00
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' ]],[
2025-12-27 21:27:08 +08:00
'name' => $nutrients_list_data [ $i ][ 'name_en' ],
'name_ch' => $nutrients_list_data [ $i ][ $user_sc_data ],
2025-12-22 03:58:08 +08:00
'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 ;
2025-12-27 21:27:08 +08:00
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 ) {
2025-12-22 03:58:08 +08:00
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 ;
}
}
}
}
}
// 记录搜索历史
2025-12-27 21:27:08 +08:00
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' ]);
2025-12-22 03:58:08 +08:00
}
}
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);
}
}