SchoolPhysicalExamination/application/KitchenScale/controller/app/Cookbook.php

764 lines
34 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace app\KitchenScale\controller\app;
use think\Db;
class Cookbook extends Base{
protected $code_time = 50;
// protected $token_time = 2592000;//30天的秒数
protected $default_head_pic = 'http://tc.pcxbc.com/tsf/head_pic.png';
protected $reedaw_db_msg = [
'zhanghao'=>'app_account_number',//账号表
'juese'=>'app_user_data',//角色表
];
protected $kitchenscale_db_msg = [
'cookbook'=>'app_user_cookbook',//菜谱表
'uploadimg'=>'app_user_upload_img',//素材表
'followlist'=>'app_user_follow_list',//关注列表
'collect_list'=>'app_user_collect_list',//收藏列表
'foodlist3'=>'app_food_type_three',//食材列表3
];
// 加 bcadd(,,20)
// 减 bcsub(,,20)
// 乘 bcmul(,,20)
// 除 bcdiv(,,20)
################################################################接口################################################################
################################################################接口################################################################
################################################################接口################################################################
// 添加菜谱(OK)
public function add_cookbook(){
// 尝试捕获异常
// 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('cover', $data)){
return $this->msg(10001,'cover is miss');
}
if(!array_key_exists('description', $data)){
return $this->msg(10001,'description is miss');
}
if(!array_key_exists('cook_label', $data)){
return $this->msg(10001,'cook_label is miss');
}
if(!array_key_exists('food_list', $data)){
$data['food_list'] = [];
}
if(!array_key_exists('step_list', $data)){
$data['step_list'] = [];
}
if(!$this->verify_data_is_ok($data['token'],'str')){
return $this->msg(10005,'token type is error');
}
if(!$this->verify_data_is_ok($data['cover'],'intnum')){
return $this->msg(10005,'cover type is error');
}
if(!$this->verify_data_is_ok($data['description'],'str')){
return $this->msg(10005,'description type is error');
}
if (!is_array($data['food_list'])) {
return $this->msg(10005,'food_list type is error');
}
if (!is_array($data['step_list'])) {
return $this->msg(10005,'step_list type is error');
}
$return_data = $this->add_cookbook_action($data);
return $return_data;
// } catch (\Exception $e) {
// // 捕获异常
// $logContent["file"] = $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_cook_label($data=['token'=>'caadd1be045a65f3','cook_label'=>'家常菜谱','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('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['token'],'str')){
return $this->msg(10005,'token type is error');
}
if(!$this->verify_data_is_ok($data['cook_label'],'str')){
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["file"] = $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'=>'caadd1be045a65f3','food_name'=>'猪肉','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,'food_name 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["file"] = $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'=>'caadd1be045a65f30b92aa805f1de54a','cookbook_id'=>'17']){
// 尝试捕获异常
// 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_details_action($data);
return $return_data;
// } catch (\Exception $e) {
// // 捕获异常
// $logContent["file"] = $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["file"] = $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["file"] = $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 food_count_kcal($data=['token'=>'caadd1be045a65f30b92aa805f1de54a','food_name'=>'鸡肉','food_weight'=>456.37]){
// 尝试捕获异常
// 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('food_weight', $data)){
return $this->msg(10001,'food_weight 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,'cook_label type is error');
}
if(!$this->verify_data_is_ok($data['food_weight'],'num')){
return $this->msg(10005,'cook_label type is error');
}
$return_data = $this->food_count_kcal_action($data);
return $return_data;
// } catch (\Exception $e) {
// // 捕获异常
// $logContent["file"] = $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 add_cookbook_action($data){
if(count($data['food_list']) < 1){
return $this->msg(10005,'至少添加一个食物');
}
if(count($data['step_list']) < 1){
return $this->msg(10005,'至少添加一个步骤');
}
$food_type = [];
// 检验一下food_list是否合规食材列表
foreach ($data['food_list'] as $key => $value) {
if (!array_key_exists('name', $value) || !array_key_exists('weight', $value)) {
return $this->msg(10005,'食材缺少名称或者重量');
}
if(!$this->verify_data_is_ok($value['name'],'str')){
return $this->msg(10005,'食材名称格式错误');
}
if(!$this->verify_data_is_ok($value['weight'],'intnum')){
return $this->msg(10005,'食材重量格式错误,需整数数字');
}
array_push($food_type, $value['name']);
}
// 检验一下step_list是否合规步骤列表
foreach ($data['step_list'] as $key => $value) {
if (!array_key_exists('description', $value) || !array_key_exists('pic_list', $value)) {
return $this->msg(10005,'步骤缺少描述或者图片');
}
if(!$this->verify_data_is_ok($value['description'],'str')){
return $this->msg(10005,'步骤描述格式错误,需要正常字符');
}
foreach ($value['pic_list'] as $k => $v) {
if(!$this->verify_data_is_ok($v,'intnum')){
return $this->msg(10005,'步骤中图片ID错误,需整数数字');
}
}
}
$cfc = Db::connect('cfc_db');
// 获取账号下信息以及用户信息
$user_data = Db::table($this->reedaw_db_msg['zhanghao'])->where(['token'=>$data['token']])->field('id,token,nickname,head_pic')->find();
// 处理食材卡路里start
$kcal_data = $this->count_calorie($data['food_list'],$data['step_list']);
$data['food_list'] =$kcal_data[0];
$data['step_list'] = $kcal_data[1];
// 处理食材卡路里end
$insert_data = [
'title'=>$data['title'],
'cover'=>$data['cover'],
'create_user_token'=>$user_data['token'],
'create_user_head_pic'=>$user_data['head_pic'],
'create_user_nickname'=>$user_data['nickname'],
'describe_data'=>$data['description'],
'food_data'=>json_encode($data['food_list']),
'step_data'=>json_encode($data['step_list']),
'food_type'=>implode(',', $food_type),
'cook_label'=>$data['cook_label'],
'create_time'=>date('Y-m-d H:i:s')
];
$cook_book_result = $cfc->table($this->kitchenscale_db_msg['cookbook'])->insert($insert_data);
if($cook_book_result){
return $this->msg([]);
}else{
return $this->msg(10002);
}
}
public function find_by_cook_label_action($data){
$page_now = $data['page'];
$page_total = $data['page'];
$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])
->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.cook_label'=>$cook_label])
->field('cookbook.id,cookbook.title,uploadimg.pic_url as cover,cookbook.create_user_head_pic,cookbook.create_user_nickname,cookbook.like_it as like_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'] = 1;
}else{
$content_list[$key]['is_me_like_it'] = 0;
}
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 find_by_food_action($data){
$page_now = $data['page'];
$page_total = $data['page'];
$page_num = 20;
$food_name = $data['food_name'];
$cfc = Db::connect('cfc_db');
$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.like_it as like_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'] = 1;
}else{
$content_list[$key]['is_me_like_it'] = 0;
}
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(10002,'菜谱不存在');
}
$cookbook_data['food_data'] = json_decode($cookbook_data['food_data'],true);
$cookbook_data['step_data'] = json_decode($cookbook_data['step_data'],true);
$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);
}
}
}
}
$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]['pic_list_ls'] = [];
foreach ($value['pic_list'] as $k => $v) {
if(array_key_exists($v, $cookbook_img_data)){
array_push($cookbook_data['step_data'][$key]['pic_list_ls'],$cookbook_img_data[$v]);
}else{
array_push($cookbook_data['step_data'][$key]['pic_list_ls'],'https://tc.pcxbc.com/kitchenscale_all/diule.jpg');
}
}
$cookbook_data['step_data'][$key]['pic_list'] = $cookbook_data['step_data'][$key]['pic_list_ls'];
unset($cookbook_data['step_data'][$key]['pic_list_ls']);
$cookbook_data['step_data'][$key]['step_num'] = "步骤".($key+1).'/'.$cookbook_data_step_data_count;
}
if(array_key_exists($cookbook_data['cover'], $cookbook_img_data)){
$cookbook_data['cover'] = $cookbook_img_data[$cookbook_data['cover']];
}else{
$cookbook_data['cover'] = 'https://tc.pcxbc.com/kitchenscale_all/diule.jpg';
}
// 处理关注跟收藏信息
if($data['token'] == $cookbook_data['create_user_token']){
// 如果查询跟作者一致
$cookbook_data['follow_status'] = 'myself';
$cookbook_data['collect_status'] = 'myself';
}else{
$follow_data = $cfc->table($this->kitchenscale_db_msg['followlist'])
->where([
'follow_user_token'=>$data['token'],
'being_follow_user_token'=>$cookbook_data['create_user_token'],
])
->find();
if($follow_data){
if($follow_data['is_del'] == 0){
// 如果有结果并且没被删过
$cookbook_data['follow_status'] = 'yes';
}else{
// 如果有结果被删过
$cookbook_data['follow_status'] = 'no';
}
}else{
// 如果没结果
$cookbook_data['follow_status'] = 'no';
}
$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';
}
}
// 添加阅读量
$read_num = $cfc->table($this->kitchenscale_db_msg['cookbook'])->where(['id'=>$data['cookbook_id']])->setInc('read_it');
if($read_num){
$cookbook_data['read_it'] = $cookbook_data['read_it']+1;
}
// unset($cookbook_data['create_user_token']);
unset($cookbook_data['create_time']);
unset($cookbook_data['cook_label']);
unset($cookbook_data['food_type']);
unset($cookbook_data['ROW_NUMBER']);
return $this->msg($cookbook_data);
}
public function cookbook_follow_action($data){
// 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(10002,'不能关注自己');
}
$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(10001,'操作失败');
}
}
public function cookbook_like_action($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'] == $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('like_it');
}else{
$cfc->table($this->kitchenscale_db_msg['cookbook'])->where(['id'=>$data['cookbook_id']])->setDec('like_it');
}
// 提交事务
Db::commit();
return $this->msg([]);
} catch (\Exception $e) {
// 回滚事务
Db::rollback();
return $this->msg(10001,'操作失败');
}
}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('like_it');
// 提交事务
Db::commit();
return $this->msg([]);
} catch (\Exception $e) {
// 回滚事务
Db::rollback();
return $this->msg(10001,'操作失败');
}
}
}
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(10002,'未登记的食材');
}
$weight = bcdiv($data['food_weight'],100,2);
$kcal = bcmul($weight,$food_data['kcal'],2);
return $this->msg(['kcal'=>$kcal.'kcal']);
}
#######################################################################小工具#######################################################################
#######################################################################小工具#######################################################################
#######################################################################小工具#######################################################################
// 处理食材的卡路里
public function count_calorie($data,$step){
$foot_name = array_column($data, 'name');
$foot_name = array_unique($foot_name);
$cfc = Db::connect('cfc_db');
$foot_kcal = $cfc->table($this->kitchenscale_db_msg['foodlist3'])->where("name in ('".implode("','", $foot_name)."')")->field("name,kcal")->select();
$foot_kcal2 = [];
foreach ($foot_kcal as $key => $value) {
$foot_kcal2[$value['name']] = $value['kcal'];
}
foreach ($data as $key => $value) {
if(array_key_exists($value['name'], $foot_kcal2)){
$data[$key]['kcal'] = $this->count_calorie_action($value['weight'],$foot_kcal2[$value['name']]).'kcal';
}else{
$data[$key]['kcal'] = '0kcal';
}
$data[$key]['weight'] = $data[$key]['weight'].'g';
}
foreach ($step as $key => $value) {
foreach ($value['foot_list'] as $k => $v) {
if(array_key_exists($v['name'], $foot_kcal2)){
$step[$key]['foot_list'][$k]['kcal'] = $this->count_calorie_action($v['weight'],$foot_kcal2[$v['name']]).'kcal';
}else{
$step[$key]['foot_list'][$k]['kcal'] = '0kcal';
}
$step[$key]['foot_list'][$k]['weight'] = $step[$key]['foot_list'][$k]['weight'].'g';
}
}
return [$data,$step];
}
// 加 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);
}
}