app\api\validate\Order
验证器类为订单相关的API接口提供了完整的参数验证功能,确保请求参数的正确性和安全性。
address_id
: 收货地址ID,必须,整数,大于0user_coupon_id
: 优惠券ID,可选,整数,大于0memo
: 备注,可选,最大500字符ids
: 购物车商品选择ID,必须,数组cart_ids
: 购物车ID列表,必须,数组goods_list
: 商品列表,必须,数组,包含自定义验证
goods_id
: 商品ID,必须,整数,大于0goods_sku_id
: 商品规格ID,可选,整数,大于等于0nums
: 购买数量,必须,整数,大于0type
: 计算类型,必须,支持: cart(购物车模式), goods(商品规格模式)order_sn
: 订单号,必须,字母数字paytype
: 支付方式,必须,支持: alipay, wechat, unionpay, balancemethod
: 支付方法,必须,支持: web, wap, app, miniapp, mp, mini// API接口: POST /api/order/createByGoods
$data = [
'goods_list' => [
[
'goods_id' => 1,
'goods_sku_id' => 5,
'nums' => 2
],
[
'goods_id' => 2,
'nums' => 1
]
],
'address_id' => 1,
'user_coupon_id' => 10,
'memo' => '请尽快发货'
];
// 验证器会自动验证这些参数
// API接口: POST /api/order/calculate
$data = [
'type' => 'goods', // 计算类型:商品规格模式
'goods_list' => [
[
'goods_id' => 1,
'goods_sku_id' => 5,
'nums' => 2
]
],
'address_id' => 1,
'user_coupon_id' => 10
];
// API接口: POST /api/order/calculate
$data = [
'type' => 'cart', // 计算类型:购物车模式
'cart_ids' => [1, 2, 3], // 购物车ID
'address_id' => 1,
'user_coupon_id' => 10
];
// API接口: POST /api/order/create
$data = [
'ids' => [1, 2, 3], // 购物车商品选择ID
'address_id' => 1,
'user_coupon_id' => 10,
'memo' => '备注信息'
];
// API接口: POST /api/order/pay
$data = [
'order_sn' => 'O202412270001',
'paytype' => 'wechat',
'method' => 'miniapp'
];
// API接口: POST /api/order/cancel
$data = [
'order_sn' => 'O202412270001'
];
// API接口: GET /api/order/detail?order_sn=O202412270001
// 或者 POST /api/order/detail
$data = [
'order_sn' => 'O202412270001'
];
验证器包含一个自定义验证方法 checkGoodsList
,用于验证商品列表的格式:
protected function checkGoodsList($value, $rule, $data)
{
// 验证商品列表是否为数组
// 验证每个商品项的必要字段
// 验证商品ID和数量的有效性
// 验证可选字段的格式
}
验证器提供了详细的中文错误消息,包括:
在订单控制器中的使用方式:
public function createByGoods()
{
// 验证请求参数
$validate = new \app\api\validate\Order();
if (!$validate->scene('createByGoods')->check($this->request->post())) {
$this->error($validate->getError());
}
// 业务逻辑处理
// ...
}
接口 | 方法 | 验证场景 | 说明 |
---|---|---|---|
/api/order/create |
POST | create | 通过购物车创建订单 |
/api/order/createByGoods |
POST | createByGoods | 通过商品规格创建订单 |
/api/order/calculate |
POST | calculate | 计算订单(支持两种模式) |
/api/order/detail |
GET/POST | detail | 获取订单详情 |
/api/order/cancel |
POST | cancel | 取消订单 |
/api/order/pay |
POST | pay | 订单支付 |
/api/order/receipt |
POST | detail | 确认收货 |
/api/order/logistics |
GET | detail | 查询物流 |
通过这个验证器,可以确保所有订单相关的API接口都有统一、规范的参数验证,提高系统的安全性和稳定性。