<?php namespace App\Http\Validators; use Validator; class SampleValidator { //保存相关的验证,别问我为什么不用laravel自带的form-request类 //因为控制器那边已经被之前的人魔改的难用的一比,而且控制器那边还接收了一大堆统一变量 public function checkSave($request) { $messages = $this->messages(); $validator = Validator::make($request->all(), [ 'activity_name' => 'required|max:50', 'start_time' => 'required', 'end_time' => 'required', 'goods_scope' => 'in:1,2', 'allow_coupon' => 'required', 'amount' => 'required|max:9999999999', 'amount.*' => 'required', 'item_name' => 'required', 'item_name.*' => 'required', 'num' => 'required|max:1000', 'num.*' => 'required', 'total' => 'required', 'total.*' => 'required', 'pic' => 'required', 'pic.*' => 'required', 'supplier_ids' => 'required', ], $messages); if ($validator->fails()) { return $validator->errors()->first(); } //开始结束时间的判断 $oneDaySeconds = 3600 * 24; if (strtotime($request->get('end_time')) - strtotime($request->get('start_time')) < $oneDaySeconds) { return '结束时间必须大于开始时间一天或以上'; } //满赠商品规则最多设置3个 if (count($request->get('amount')) > 3) { return '满赠商品规则最多设置3个'; } $service = new GiftActivityService(); $itemList = $service->getGiftItemList($request); if (count($itemList) != 1) { foreach ($itemList as $key => $item) { if ($key == 0) { continue; } if ($itemList[$key]['amount'] <= $itemList[$key - 1]['amount']) { return '设置满赠规则的满赠金额需逐级递增'; } } } //通用逻辑判断 $result = $this->commonLogicCheck($request, 2); if ($result !== true) { return $result; } return null; } private function messages() { return [ 'activity_name.max' => '展示名称最长50个汉字', 'show_name.max' => '展示名称最长3个汉字', 'sign.max' => '标识最长1个汉字', 'sign_text.max' => '展示名称最长16个汉字', 'ratio.numeric' => '活动系数只能为纯数字', 'amount.required' => '至少要有一个满赠商品规则', 'activity_name.required' => '活动名称不能为空', 'start_time.required' => '活动开始时间不能为空', 'end_time.required' => '活动结束时间不能为空', 'show_name.required' => '活动展示名称不能为空', 'sign.required' => '活动标识不能为空', 'sign_text.required' => '活动标识文本不能为空', 'allow_coupon.required' => '是否能使用优惠券不能为空', 'amount.*.required' => '请补全满赠商品规则的满赠金额', 'amount.*.max' => '请补全满赠商品规则的满赠金额', 'item_name.*.required' => '请补全满赠商品规则的赠品名称', 'item_name.*.between' => '满赠商品规则的赠品名称必须在2到20个字之间', 'num.*.required' => '请补全满赠商品规则的数量', 'total.*.required' => '请补全满赠商品规则的发行量', 'pic.*.required' => '请补全满赠商品规则的商品图片', 'supplier_ids.required' => '供应商不能为空', 'goods_scope.in' => '商品范围不符合规范', ]; } }