82 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			82 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace app\api\validate;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use app\common\basics\Validate;
							 | 
						||
| 
								 | 
							
								use app\common\enum\IntegralGoodsEnum;
							 | 
						||
| 
								 | 
							
								use app\common\model\integral\IntegralGoods;
							 | 
						||
| 
								 | 
							
								use app\common\model\user\UserAddress;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * 积分订单下单验证
							 | 
						||
| 
								 | 
							
								 * Class IntegralOrderValidate
							 | 
						||
| 
								 | 
							
								 * @package app\api\validate
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								class IntegralPlaceOrderValidate extends Validate
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    protected $rule = [
							 | 
						||
| 
								 | 
							
								        'num' => 'require|number',
							 | 
						||
| 
								 | 
							
								        'id' => 'require|number|checkGoods',
							 | 
						||
| 
								 | 
							
								        'address_id' => 'require|checkAddress',
							 | 
						||
| 
								 | 
							
								    ];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    protected $message = [
							 | 
						||
| 
								 | 
							
								        'id.require' => '参数缺失',
							 | 
						||
| 
								 | 
							
								        'id.number' => '参数类型错误',
							 | 
						||
| 
								 | 
							
								        'num.require' => '请选择商品数量',
							 | 
						||
| 
								 | 
							
								        'num.number' => '商品数量参数类型错误',
							 | 
						||
| 
								 | 
							
								        'address_id.require' => '请选择地址',
							 | 
						||
| 
								 | 
							
								    ];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function sceneSettlement()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        return $this->only(['code','num']);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function sceneSubmit()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        return $this->only(['id', 'num', 'address_id'])
							 | 
						||
| 
								 | 
							
								            ->append('id', 'checkGoods');
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // 验证商品
							 | 
						||
| 
								 | 
							
								    protected function checkGoods($value, $rule, $data)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $goods = IntegralGoods::where([
							 | 
						||
| 
								 | 
							
								            'id' => $value,
							 | 
						||
| 
								 | 
							
								            'del' => IntegralGoodsEnum::DEL_NORMAL,
							 | 
						||
| 
								 | 
							
								            'status' => IntegralGoodsEnum::STATUS_SHELVES
							 | 
						||
| 
								 | 
							
								        ])->findOrEmpty();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if ($goods->isEmpty()) {
							 | 
						||
| 
								 | 
							
								            return '积分商品不存在';
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if ($goods['stock'] < intval($data['num'])) {
							 | 
						||
| 
								 | 
							
								            return '积分商品库存不足';
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        return true;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // 验证地址信息
							 | 
						||
| 
								 | 
							
								    protected function checkAddress($value, $rule, $data)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $condition = [
							 | 
						||
| 
								 | 
							
								            'id' => (int)$value,
							 | 
						||
| 
								 | 
							
								            'user_id' => $data['user_id'],
							 | 
						||
| 
								 | 
							
								            'del' => 0
							 | 
						||
| 
								 | 
							
								        ];
							 | 
						||
| 
								 | 
							
								        $address = UserAddress::where($condition)->findOrEmpty();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if ($address->isEmpty()) {
							 | 
						||
| 
								 | 
							
								            return '收货地址信息不存在';
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        return true;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}
							 |