dlh_test_server/app/admin/validate/groupbuy/GroupbuyValidate.php
2024-09-24 15:52:33 +08:00

82 lines
2.5 KiB
PHP

<?php
namespace app\admin\validate\groupbuy;
use app\common\basics\Validate;
use app\common\model\goods\Goods;
use app\common\model\goods\GoodsItem;
use app\common\model\groupbuy\GroupbuyGoods;
class GroupbuyValidate extends Validate
{
protected $rule = [
'item' => 'require'
];
protected $message = [
'item.require' => '请选择秒杀商品',
];
public function sceneAdd(){
$this->append('item','checkAdd');
}
public function sceneEdit(){
$this->append('item','checkEdit');
}
public function checkEdit($value,$rule,$data){
$goods_ids = array_unique(array_column($value,'goods_id'));
$goods = Goods::where(['del'=>0])->column('id');
$goods_item = GoodsItem::where(['goods_id'=>$goods_ids])->column('price,spec_value_str','id');
foreach ($value as $item){
if(!in_array($item['goods_id'],$goods)){
return '商品ID:'.$item['goods_id'].'已下架';
}
$goods_price = $goods_item[$item['item_id']]['price'] ?? 0;
//验证商品价格
if($item['activity_price'] > $goods_price){
return '商品规格:'.$goods_item[$item['item_id']]['spec_value_str'] .'的秒杀价格高于原价';
}
}
return true;
}
public function checkAdd($value,$rule,$data){
$goods_ids = array_unique(array_column($value,'goods_id'));
$goods = Goods::where(['del'=>0])->column('id');
$goods_item = GoodsItem::where(['goods_id'=>$goods_ids])->column('price,spec_value_str','id');
foreach($value as $item) {
if(!in_array($item['goods_id'],$goods)){
return '商品ID:'.$item['goods_id'].'已下架';
}
$goods_price = $goods_item[$item['item_id']]['price'] ?? 0;
//验证商品价格
if($item['price'] > $goods_price){
return '商品规格:'.$goods_item[$item['item_id']]['spec_value_str'] .'的秒杀价格高于原价';
}
// 获取当前商品参与过哪些日期及哪些时段的秒杀
$GroupbuyGoods = GroupbuyGoods::where(['del'=>1, 'goods_id'=>$item['goods_id']])
->field('id')
->group('goods_id')->select()->toArray();
if(!empty($GroupbuyGoods)){
return '当前商品已经参加抢购活动';
}
}
return true;
}
}