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