cxhxy/app/api/model/food/Goods.php
2024-01-03 16:01:45 +08:00

1 line
4.4 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\api\model\food;
use app\common\model\food\Goods as GoodsModel;
class Goods extends GoodsModel
{
/**
* 隐藏字段
*/
protected $hidden = [];
/**
* 按照分类获取上架的所有商品
*/
public function getGoodsList($category, $food_mode, $shop_id, $user_id, $table_id)
{
//获取当前购物车商品
$cart = new Cart(self::$applet_id, $shop_id, $user_id, $table_id);
$cart_data = $cart->getCart();
$cartlist = $cart->getList($food_mode);
$list=array();
$other = Setting::getItem('other');//获取基本配置
for($i=0;$i<sizeof($category);$i++){
// 筛选条件
$filter = [
'category_id' => $category[$i]['category_id'],
'shop_id' => $shop_id
];
//下架是否显示
if($other['goods']['delisting'] == 0){
$filter['goods_status'] = 10;
}
$list = $this->with(['spec', 'image.file', 'spec_rel.spec'])
->where($filter)
->order(['goods_sort', 'goods_id' => 'desc'])
->select();
$goods = [];
//筛选是否显示售罄商品
foreach ($list as $item){
//判断是否开启库存
if($other['is_stock'] == 1 and $item['stock'] < 1 and $other['goods']['sell_out'] == 0){
continue;
}
$goods[] = $item;
}
for($n=0;$n<sizeof($goods);$n++){
$goods[$n]['total_num'] = 0;//购物车数量
if($goods[$n]['spec_type'] == 20){
$goods[$n]['specData'] = $this->getManySpecData($goods[$n]['spec_rel'], $goods[$n]['spec']);
for($s=0;$s<sizeof($goods[$n]['spec']);$s++){
$goods[$n]['spec'][$s]['sell_num'] = 0;
$goods[$n]['spec'][$s]['sell_num_two'] = 1;
if(isset($cart_data[$goods[$n]['goods_id'].'_'.$goods[$n]['spec'][$s]['spec_sku_id']])){
$goods[$n]['total_num'] = $goods[$n]['total_num'] + $cart_data[$goods[$n]['goods_id'].'_'.$goods[$n]['spec'][$s]['spec_sku_id']]['goods_num'];
$goods[$n]['spec'][$s]['sell_num'] = $cart_data[$goods[$n]['goods_id'].'_'.$goods[$n]['spec'][$s]['spec_sku_id']]['goods_num'];
}
}
}else{
if(isset($cart_data[$goods[$n]['goods_id'].'_'])){
$goods[$n]['total_num'] = $cart_data[$goods[$n]['goods_id'].'_']['goods_num'];
}
$goods[$n]['specData'] = null;
}
}
$category[$i]['goods'] = $goods;
}
//获取推荐商品
$list = $this->with(['image.file', 'spec', 'spec.image', 'spec_rel.spec'])->where(['is_recommend' => 1, 'goods_status' => 10,'shop_id' => $shop_id])->select();
$goods = [];
//筛选是否显示售罄商品
foreach ($list as $item){
//判断是否开启库存
if($other['is_stock'] == 1 and $item['stock'] < 1 and $other['goods']['sell_out'] == 0){
continue;
}
$goods[] = $item;
}
if(sizeof($goods)){
for($n=0;$n<sizeof($goods);$n++){
$goods[$n]['total_num'] = 0;//购物车数量
if($goods[$n]['spec_type'] == 20){
$goods[$n]['specData'] = $this->getManySpecData($goods[$n]['spec_rel'], $goods[$n]['spec']);
for($s=0;$s<sizeof($goods[$n]['spec']);$s++){
$goods[$n]['spec'][$s]['sell_num'] = 0;
$goods[$n]['spec'][$s]['sell_num_two'] = 1;
if(isset($cart_data[$goods[$n]['goods_id'].'_'.$goods[$n]['spec'][$s]['spec_sku_id']])){
$goods[$n]['total_num'] = $goods[$n]['total_num'] + $cart_data[$goods[$n]['goods_id'].'_'.$goods[$n]['spec'][$s]['spec_sku_id']]['goods_num'];
$goods[$n]['spec'][$s]['sell_num'] = $cart_data[$goods[$n]['goods_id'].'_'.$goods[$n]['spec'][$s]['spec_sku_id']]['goods_num'];
}
}
}else{
if(isset($cart_data[$goods[$n]['goods_id'].'_'])){
$goods[$n]['total_num'] = $cart_data[$goods[$n]['goods_id'].'_']['goods_num'];
}
$goods[$n]['specData'] = null;
}
}
array_unshift($category,[
'category_id' => 10000,
'name' => '商家推荐',
'goods' => $goods
]);
}
return compact('category','cartlist');
}
/**
* 商品详情HTML实体转换回普通字符
*/
public function getContentAttr($value)
{
return htmlspecialchars_decode($value);
}
/**
* 根据商品id集获取商品列表 (购物车列表用)
*/
public function getListByIds($goodsIds) {
return $this->with(['category','image.file', 'spec','spec.image','spec_rel.spec'])
->where('goods_id', 'in', $goodsIds)->select();
}
}