diff --git a/app/Http/Controllers/Api/OrderController.php b/app/Http/Controllers/Api/OrderController.php index 7a5481d..85b5808 100644 --- a/app/Http/Controllers/Api/OrderController.php +++ b/app/Http/Controllers/Api/OrderController.php @@ -119,19 +119,19 @@ class OrderController extends Controller $pay_type_values = join(',', array_keys(PayType::array())); $request->validate([ 'id' => ['required', 'regex:/^\d+$/'], - 'name' => ['required', 'between:2,20'], - 'mobile' => ['required', 'regex:/^1[3-9]\d{9}$/'], +// 'name' => ['required', 'between:2,20'], +// 'mobile' => ['required', 'regex:/^1[3-9]\d{9}$/'], 'pay_type' => ['required', 'in:' . $pay_type_values], 'num' => ['required', 'min:1'], 'spec_id' => ['required', 'array'], 'info' => ['array'], ], [ 'id.required' => '未指定产品ID', - 'name.required' => '请输入联系人姓名', - 'mobile.required' => '请输入联系手机号', +// 'name.required' => '请输入联系人姓名', +// 'mobile.required' => '请输入联系手机号', 'id.regex' => '产品ID错误', - 'name.between' => '联系人姓名在2~20字符之间', - 'mobile.regex' => '请输入11位手机号', +// 'name.between' => '联系人姓名在2~20字符之间', +// 'mobile.regex' => '请输入11位手机号', 'pay_type.required' => '请选择支付方式', 'pay_type.in' => '不存在此支付方式', 'num.required' => '请输入购买数量', @@ -141,7 +141,7 @@ class OrderController extends Controller 'info.array' => '订单信息必须是数组', ]); - $ap = AgentProduct::with(['coupon', 'product', 'agentCloudProduct:id,price']) + $ap = AgentProduct::with(['coupon', 'product.diyForm.fields', 'agentCloudProduct:id,price']) ->where('stock', '>=', $formData['num']) ->where(['id' => $formData['id'], 'status' => ProductStatus::ON_SALE, 'agent_id' => $this->agent_id]) //判断agent_id,防止新入驻小程序的演示产品被下单 ->whereDoesntHave('agentProductItem', function ($query) { @@ -155,6 +155,16 @@ class OrderController extends Controller } $order_info = $formData['info'] ?? []; + if (!empty($ap->product->diyForm->fields) && !$ap->product->diyForm->fields->isEmpty()) { + $fields = array_column($ap->product->diyForm->fields->toArray(), null, 'field'); + foreach ($fields as &$field) { + if ($field['required'] && !isset($order_info[$field['field']])) { //判断是否必填 + return $this->error($field['field'] . '不能为空'); + } + $field['value'] = $order_info[$field['field']] ?? ''; + } + $order_info = $fields; + } //0:单品销售;1:组合销售 if ($ap->type == 0) { @@ -287,8 +297,8 @@ class OrderController extends Controller 'order_no' => $orderNo, 'num' => $formData['num'], 'price' => $order_price, - 'name' => $formData['name'], - 'mobile' => $formData['mobile'], + 'name' => $formData['name'] ?? '', + 'mobile' => $formData['mobile'] ?? '', 'title' => $ap->title, 'picture' => $ap->picture, 'agent_product_id' => $ap->id,