Files
Smart-Farm/app/shop/model/SeckillGoods.php
2025-12-22 14:32:54 +08:00

321 lines
6.3 KiB
PHP

<?php
namespace app\shop\model;
use app\BaseModel;
use app\farm\model\ShopGoods;
use think\facade\Db;
class SeckillGoods extends BaseModel
{
//定义表名
protected $name = 'lbfarm_v2_seckill_goods';
protected $append = [
'show_data',
'goods_info',
'all_stock',
'all_have_stock',
];
/**
* @author chenniang
* @DataTime: 2021-10-29 18:50
* @功能说明:总的库存
*/
public function getAllStockAttr($value,$data){
if(!empty($data['id'])){
$i_model = new SeckillConfig();
$num = $i_model->where(['atv_id'=>$data['id']])->sum('stock');
return $num;
}
}
/**
* @author chenniang
* @DataTime: 2021-10-29 18:50
* @功能说明:总的库存
*/
public function getAllHaveStockAttr($value,$data){
if(!empty($data['id'])){
$i_model = new SeckillConfig();
$num = $i_model->where(['atv_id'=>$data['id']])->sum('have_stock');
return $num;
}
}
/**
* @param $value
* @param $data
* @功能说明:
* @author chenniang
* @DataTime: 2022-07-21 18:29
*/
public function getGoodsInfoAttr($value,$data){
if(!empty($data['id'])){
$config_model = new SeckillConfig();
$list = $config_model->alias('a')
->join('lbfarm_v2_shop_spe_price b','a.spe_id = b.id')
->where(['a.atv_id' => $data['id']])
->field(['b.stock as goods_stock','b.price as goods_price','a.*'])
->select()
->toArray();
return $list;
}
}
/**
* @param $value
* @param $data
* @功能说明:
* @author chenniang
* @DataTime: 2022-07-21 14:19
*/
public function getShowDataAttr($value,$data){
if(!empty($data['id'])){
$config_model = new SeckillConfig();
$spe_model = new GoodsSpePrice();
$info = $config_model->where(['atv_id'=>$data['id']])->order('price')->find();
if(!empty($info)){
$info = $info->toArray();
$info['init_price'] = $spe_model->where(['id'=>$info['spe_id']])->value('price');
}
return $info;
}
}
/**
* @author chenniang
* @DataTime: 2020-09-29 11:04
* @功能说明:添加
*/
public function dataAdd($data){
$res = $this->insert($data);
return $res;
}
/**
* @author chenniang
* @DataTime: 2020-09-29 11:05
* @功能说明:编辑
*/
public function dataUpdate($dis,$data){
$res = $this->where($dis)->update($data);
return $res;
}
/**
* @author chenniang
* @DataTime: 2020-09-29 11:06
* @功能说明:列表
*/
public function dataList($dis,$page){
$data = $this->where($dis)->order('id desc')->paginate($page)->toArray();
return $data;
}
/**
* @author chenniang
* @DataTime: 2020-09-29 11:43
* @功能说明:
*/
public function dataInfo($dis){
$data = $this->where($dis)->find();
return !empty($data)?$data->toArray():[];
}
/**
* @param $dis
* @param int $page
* @功能说明:商品列表
* @author chenniang
* @DataTime: 2022-07-25 14:59
*/
public function goodsList($dis,$page=10){
$data = $this->alias('a')
->join('lbfarm_shop_goods b','a.goods_id = b.id')
->join('lbfarm_v2_goods_store c','c.goods_id = b.id AND c.type=1')
->join('lbfarm_farmer d','c.store_id = d.id')
->join('lbfarm_v2_seckill_list e','a.atv_id = e.id')
->where($dis)
->field('a.*,b.goods_name,b.cover,d.title as store_name,d.id as store_id,d.cover as store_cover')
->group('a.id')
->order('b.top desc,a.id desc')
->paginate($page)
->toArray();
return $data;
}
/**
* @author chenniang
* @DataTime: 2022-07-25 17:19
* @功能说明:增加销量
*/
public function delAtvStock($atv_id,$goods_id,$spe_id,$num){
$config_model = new SeckillConfig();
$dis = [
'a.atv_id' => $atv_id,
'a.goods_id'=> $goods_id,
'b.spe_id' => $spe_id
];
$data = $this->alias('a')
->join('lbfarm_v2_seckill_config b','a.id = b.atv_id')
->where($dis)
->field('b.*')
->find();
if(empty($data)){
return ['code'=>500,'msg'=>'该活动已经下架'];
}
$data = $data->toArray();
if($data['have_stock']+$num>$data['stock']){
return ['code'=>500,'msg'=>'可兑换数量不足'];
}
$res = $config_model->where(['id'=>$data['id']])->update(['have_stock'=> Db::Raw("have_stock+$num")]);
return $res;
}
/**
* @author chenniang
* @DataTime: 2022-07-25 17:19
* @功能说明:减少销量
*/
public function incAtvStock($atv_id,$goods_id,$spe_id,$num){
$config_model = new SeckillConfig();
$dis = [
'a.atv_id' => $atv_id,
'a.goods_id'=> $goods_id,
'b.spe_id' => $spe_id
];
$data = $this->alias('a')
->join('lbfarm_v2_seckill_config b','a.id = b.atv_id')
->where($dis)
->field('b.*')
->find();
if(empty($data)){
return true;
}
$data = $data->toArray();
$res = $config_model->where(['id'=>$data['id']])->update(['have_stock'=> Db::Raw("have_stock-$num")]);
return $res;
}
/**
* @param $atv_id
* @param $goods_id
* @param $spe_id
* @param $num
* @param int $type
* @功能说明:修改活动销量
* @author chenniang
* @DataTime: 2022-07-25 17:47
*/
public function updateAtvStock($atv_id,$goods_id,$spe_id,$num,$type=1){
if($type==1){
$res = $this->delAtvStock($atv_id,$goods_id,$spe_id,$num);
}else{
$res = $this->incAtvStock($atv_id,$goods_id,$spe_id,$num);
}
return $res;
}
}