Files
littleTiger/application/admin/validate/FlashSale.php

116 lines
4.0 KiB
PHP
Raw Permalink Normal View History

2019-02-28 19:48:21 +08:00
<?php
namespace app\admin\validate;
use think\Validate;
use think\Db;
class FlashSale extends Validate
{
// 验证规则
protected $rule = [
['id','checkId'],
['title', 'require|unique:flash_sale'],
['goods_id', 'require'],
['price','require|gt:0|checkPrice'],
['goods_num','require|gt:0|checkGoodsNum'],
['buy_limit','require|gt:0|checkLimit'],
['start_time','require'],
['end_time','require|checkEndTime'],
];
//错误信息
protected $message = [
'title.require' => '抢购标题必填',
'title.unique' => '已存在相同抢购标题',
'goods_id.require' => '请选择参与抢购的商品',
'price.require' => '请填写限时抢购价格',
'price.gt' => '限时抢购价格必须是大于0的数字',
'price.checkPrice' => '限时抢购价格必须小于商品原价',
'goods_num.require' => '请填写参加抢购数量',
'goods_num.gt' => '抢购数量必须是大于0的数字',
'buy_limit.require' => '请填写限购数量',
'buy_limit.gt' => '限购数量必须是大于0的数字',
'start_time.require' => '请选择开始时间',
'end_time.require' => '请选择结束时间',
'end_time.checkEndTime' => '结束时间不能早于开始时间',
];
/**
* 检查限购数量
* @param $value|验证数据
* @param $rule|验证规则
* @param $data|全部数据
* @return bool|string
*/
protected function checkLimit($value, $rule ,$data)
{
if($value > $data['goods_num']){
return '限购数量不能超过抢购数量';
}
$goods = Db::name("goods")->where(['goods_id'=>$data['goods_id']])->find();
if($goods['is_virtual'] == 1 && $value > $goods['virtual_limit']){
return '限购数量不能超过虚拟商品购买上限';
}
return true;
}
/**
* 检查结束时间
* @param $value|验证数据
* @param $rule|验证规则
* @param $data|全部数据
* @return bool|string
*/
protected function checkEndTime($value, $rule ,$data)
{
return ($value < $data['start_time']) ? false : true;
}
/**
* 检查抢购价格
* @param $value|验证数据
* @param $rule|验证规则
* @param $data|全部数据
* @return bool|string
*/
protected function checkPrice($value, $rule ,$data)
{
if($data['item_id'] > 0){
//商品规格
$price = Db::name("spec_goods_price")->where(['item_id'=>$data['item_id']])->getField('price');
}else{
$price = Db::name('goods')->where('goods_id',$data['goods_id'])->getField('shop_price');
}
return ($value >= $price) ? false : true;
}
/**
* 检查参与抢购数量
* @param $value|验证数据
* @param $rule|验证规则
* @param $data|全部数据
* @return bool|string
*/
protected function checkGoodsNum($value, $rule ,$data)
{
if($value == 0){
return '抢购数量不能为零';
}
if($data['item_id'] > 0){
//商品规格
$store_count = Db::name("spec_goods_price")->where(['item_id'=>$data['item_id']])->getField('store_count');
}else{
$store_count = Db::name("goods")->where(['goods_id'=>$data['goods_id']])->getField('store_count');
}
return ($value > $store_count) ? '抢购数量不能大于库存数量' : true;
}
/**
* 该活动是否可以编辑
* @param $value|验证数据
* @param $rule|验证规则
* @param $data|全部数据
* @return bool|string
*/
protected function checkId($value, $rule ,$data)
{
$isHaveOrder = Db::name('order_goods')->where(['prom_type'=>1,'prom_id'=>$value])->find();
if($isHaveOrder){
return '该活动已有用户下单购买不能编辑';
}else{
return true;
}
}
}