'require', 'pay_way' => 'require|in:' . PayEnum::BALANCE_PAY . ',' . PayEnum::WECHAT_PAY . ',' . PayEnum::ALI_PAY, 'order_id' => 'require|checkOrderId' ]; protected $message = [ 'from.require' => '参数缺失', 'pay_way.require' => '支付方式参数缺失', 'pay_way.in' => '支付方式参数错误', 'order_id.require' => '订单参数缺失' ]; public function scenePayway() { return $this->only(['from', 'order_id', 'scene']) ->append('scene','require'); } public function scenePrepay() { return $this->only(['from', 'pay_way', 'order_id']) ->append('order_id','checkOrder'); } public function sceneGetPayResult() { return $this->only(['from', 'order_id']); } /** * @notes 检验订单id * @param $value * @param $rule * @param $data * @return bool|string * @author ljj * @date 2022/2/28 5:58 下午 */ public function checkOrderId($value,$rule,$data) { switch ($data['from']) { case 'order': $result = Order::where('id',$value)->findOrEmpty(); break; case 'recharge': $result = RechargeOrder::where('id',$value)->findOrEmpty(); break; case 'orderGap': // 补差价 $result = OrderGap::where('id',$value)->findOrEmpty(); break; case 'orderAppend': // 加钟 $result = OrderAppend::where('id',$value)->findOrEmpty(); break; } if ($result->isEmpty()) { return '订单不存在'; } return true; } /** * @notes 检验订单状态 * @param $value * @param $rule * @param $data * @return bool|string * @author ljj * @date 2022/2/28 6:02 下午 */ public function checkOrder($value,$rule,$data) { switch ($data['from']) { case 'order': $result = Order::where('id',$value)->findOrEmpty(); if ($result['order_status'] == OrderEnum::ORDER_STATUS_CLOSE) { return '订单已关闭'; } if ($result['pay_status'] == PayEnum::ISPAID) { return '订单已支付'; } $appointTime = $result->getData('appoint_time'); if($appointTime < time()){ return '预约时间已超时,请重新下单'; } break; case 'recharge': $result = RechargeOrder::where('id',$value)->findOrEmpty()->toArray(); if ($result['pay_status'] == PayEnum::ISPAID) { return '订单已支付'; } break; case 'orderGap': // 补差价 $result = OrderGap::findOrEmpty($value); if ($result['pay_status'] == PayEnum::ISPAID) { return '订单已支付'; } break; case 'orderAppend': // 加钟 $result = OrderAppend::findOrEmpty($value); if ($result['pay_status'] == PayEnum::ISPAID) { return '订单已支付'; } break; } return true; } }