82 lines
2.5 KiB
PHP
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;
|
|
}
|
|
|
|
} |