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