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;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								}
							 |