232 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			232 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			PHP
		
	
	
|  | <?php | |||
|  | // +----------------------------------------------------------------------
 | |||
|  | // | likeshop开源商城系统
 | |||
|  | // +----------------------------------------------------------------------
 | |||
|  | // | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
 | |||
|  | // | gitee下载:https://gitee.com/likeshop_gitee
 | |||
|  | // | github下载:https://github.com/likeshop-github
 | |||
|  | // | 访问官网:https://www.likeshop.cn
 | |||
|  | // | 访问社区:https://home.likeshop.cn
 | |||
|  | // | 访问手册:http://doc.likeshop.cn
 | |||
|  | // | 微信公众号:likeshop技术社区
 | |||
|  | // | likeshop系列产品在gitee、github等公开渠道开源版本可免费商用,未经许可不能去除前后端官方版权标识
 | |||
|  | // |  likeshop系列产品收费版本务必购买商业授权,购买去版权授权后,方可去除前后端官方版权标识
 | |||
|  | // | 禁止对系统程序代码以任何目的,任何形式的再发布
 | |||
|  | // | likeshop团队版权所有并拥有最终解释权
 | |||
|  | // +----------------------------------------------------------------------
 | |||
|  | // | author: likeshop.cn.team
 | |||
|  | // +----------------------------------------------------------------------
 | |||
|  | namespace app\api\validate; | |||
|  | 
 | |||
|  | use app\common\model\bargain\BargainLaunch; | |||
|  | use think\facade\Db; | |||
|  | use app\common\basics\Validate; | |||
|  | 
 | |||
|  | /** | |||
|  |  * Class BargainValidate | |||
|  |  * @package app\api\validate | |||
|  |  */ | |||
|  | class BargainValidate extends Validate | |||
|  | { | |||
|  |     protected $rule = [ | |||
|  |         'id' => 'require', | |||
|  |         'bargain_id' => 'require', | |||
|  |         'item_id' => 'require|checkGoods', | |||
|  |         'url' => 'require', | |||
|  |     ]; | |||
|  |     protected $message = [ | |||
|  |         'id.require' => '请选择砍价订单', | |||
|  |         'bargain_id.require' => '请选择活动', | |||
|  |         'item_id.require' => '请选择规格', | |||
|  |         'url.require' => '缺少参数', | |||
|  |     ]; | |||
|  | 
 | |||
|  |     /** | |||
|  |      * @notes 砍价商品详情验证场景 | |||
|  |      * @author suny | |||
|  |      * @date 2021/7/13 6:27 下午 | |||
|  |      */ | |||
|  |     public function sceneDetail() | |||
|  |     { | |||
|  | 
 | |||
|  |         $this->only(['bargain_id']) | |||
|  |             ->append('bargain_id', 'checkBargain'); | |||
|  | 
 | |||
|  |     } | |||
|  | 
 | |||
|  |     /** | |||
|  |      * @notes 发起砍价验证 | |||
|  |      * @author suny | |||
|  |      * @date 2021/7/13 6:27 下午 | |||
|  |      */ | |||
|  |     public function sceneSponsor() | |||
|  |     { | |||
|  | 
 | |||
|  |         $this->only(['bargain_id', 'item_id'])->append('bargain_id', 'checkBargain'); | |||
|  |     } | |||
|  | 
 | |||
|  |     /** | |||
|  |      * @notes 砍价详情验证 | |||
|  |      * @author suny | |||
|  |      * @date 2021/7/13 6:27 下午 | |||
|  |      */ | |||
|  |     public function sceneBargainDetail() | |||
|  |     { | |||
|  | 
 | |||
|  |         $this->only(['id']); | |||
|  |     } | |||
|  | 
 | |||
|  |     /** | |||
|  |      * @notes 分享验证 | |||
|  |      * @author suny | |||
|  |      * @date 2021/7/13 6:27 下午 | |||
|  |      */ | |||
|  |     public function sceneShare() | |||
|  |     { | |||
|  | 
 | |||
|  |         $this->only(['id', 'url']) | |||
|  |             ->append('id', 'checkBargainLaunch'); | |||
|  |     } | |||
|  | 
 | |||
|  |     /** | |||
|  |      * @notes 助力验证 | |||
|  |      * @author suny | |||
|  |      * @date 2021/7/13 6:27 下午 | |||
|  |      */ | |||
|  |     public function sceneKnife() | |||
|  |     { | |||
|  | 
 | |||
|  |         $this->only(['id']) | |||
|  |             ->append('id', 'checkBnife'); | |||
|  |     } | |||
|  | 
 | |||
|  |     /** | |||
|  |      * @notes 验证活动是否开启 | |||
|  |      * @param $value | |||
|  |      * @param $rule | |||
|  |      * @param $data | |||
|  |      * @return bool|string | |||
|  |      * @throws \think\db\exception\DataNotFoundException | |||
|  |      * @throws \think\db\exception\ModelNotFoundException | |||
|  |      * @throws \think\exception\DbException | |||
|  |      * @author suny | |||
|  |      * @date 2021/7/13 6:28 下午 | |||
|  |      */ | |||
|  |     protected function checkBargain($value, $rule, $data) | |||
|  |     { | |||
|  | 
 | |||
|  |         $now = time(); | |||
|  |         $bargain = Db::name('bargain') | |||
|  |             ->where([ | |||
|  |                 ['id', '=', $value], | |||
|  |                 ['del', '=', 0], | |||
|  |                 ['activity_start_time', '<', $now], | |||
|  |                 ['activity_end_time', '>', $now], | |||
|  |                 ['status', '=', 1] | |||
|  |             ]) | |||
|  |             ->find(); | |||
|  | 
 | |||
|  |         if (empty($bargain)) { | |||
|  |             return '该砍价活动已下架'; | |||
|  |         } | |||
|  |         return true; | |||
|  | 
 | |||
|  |     } | |||
|  | 
 | |||
|  |     /** | |||
|  |      * @notes 验证商品库存 | |||
|  |      * @param $value | |||
|  |      * @param $rule | |||
|  |      * @param $data | |||
|  |      * @return bool|string | |||
|  |      * @author suny | |||
|  |      * @date 2021/7/13 6:28 下午 | |||
|  |      */ | |||
|  |     protected function checkGoods($value, $rule, $data) | |||
|  |     { | |||
|  | 
 | |||
|  |         $stock = Db::name('goods_item') | |||
|  |             ->where(['id' => $value]) | |||
|  |             ->value('stock'); | |||
|  | 
 | |||
|  |         if ($stock < 1) { | |||
|  |             return '该商品库存不足'; | |||
|  |         } | |||
|  |         return true; | |||
|  |     } | |||
|  | 
 | |||
|  |     /** | |||
|  |      * @notes 验证该砍价订单是否结束 | |||
|  |      * @param $value | |||
|  |      * @param $rule | |||
|  |      * @param $data | |||
|  |      * @return bool|string | |||
|  |      * @throws \think\db\exception\DataNotFoundException | |||
|  |      * @throws \think\db\exception\DbException | |||
|  |      * @throws \think\db\exception\ModelNotFoundException | |||
|  |      * @author suny | |||
|  |      * @date 2021/7/13 6:28 下午 | |||
|  |      */ | |||
|  |     protected function checkBargainLaunch($value, $rule, $data) | |||
|  |     { | |||
|  | 
 | |||
|  |         $bargain_launch = new BargainLaunch(); | |||
|  |         $bargain_launch = $bargain_launch | |||
|  |             ->where(['id' => $value]) | |||
|  |             ->find(); | |||
|  |         if ($bargain_launch['launch_end_time'] <= time() || $bargain_launch['status'] !== 0) { | |||
|  |             return '该砍价已结束'; | |||
|  |         } | |||
|  |         return true; | |||
|  |     } | |||
|  | 
 | |||
|  |     /** | |||
|  |      * @notes 验证该砍价订单是否可助力 | |||
|  |      * @param $value | |||
|  |      * @param $rule | |||
|  |      * @param $data | |||
|  |      * @return bool|string | |||
|  |      * @throws \think\db\exception\DataNotFoundException | |||
|  |      * @throws \think\db\exception\DbException | |||
|  |      * @throws \think\db\exception\ModelNotFoundException | |||
|  |      * @throws \think\exception\DbException | |||
|  |      * @author suny | |||
|  |      * @date 2021/7/13 6:28 下午 | |||
|  |      */ | |||
|  |     protected function checkBnife($value, $rule, $data) | |||
|  |     { | |||
|  | 
 | |||
|  |         $bargain_launch = new BargainLaunch(); | |||
|  |         $bargain_launch = $bargain_launch | |||
|  |             ->where(['id' => $value]) | |||
|  |             ->find()->toarray(); | |||
|  |         if (0 != $bargain_launch['status']) { | |||
|  |             return '该砍价已结束'; | |||
|  |         } | |||
|  |         if ($bargain_launch['launch_end_time'] <= time()) { | |||
|  |             return '该砍价已结束'; | |||
|  |         } | |||
|  |         if ($bargain_launch['user_id'] === $data['user_id']) { | |||
|  |             return '不能助力自己的砍价活动'; | |||
|  |         } | |||
|  |         if ($bargain_launch['current_price'] < 0) { | |||
|  |             return '该砍价活动已成功'; | |||
|  |         } | |||
|  |         //当前活动是砍到低价,且已经低于等于活动低价时,砍价成功
 | |||
|  |         if (1 == $bargain_launch['bargain_snap']['payment_where'] && $bargain_launch['current_price'] <= $bargain_launch['bargain_price']) { | |||
|  |             return '该砍价活动已成功'; | |||
|  |         } | |||
|  |         $bargain_knife = Db::name('bargain_knife') | |||
|  |             ->where(['launch_id' => $value, 'user_id' => $data['user_id']]) | |||
|  |             ->find(); | |||
|  | 
 | |||
|  |         if ($bargain_knife) { | |||
|  |             return '您已助力过了'; | |||
|  |         } | |||
|  | 
 | |||
|  | 
 | |||
|  |         return true; | |||
|  |     } | |||
|  | 
 | |||
|  | 
 | |||
|  | } |