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