cardRidingUserBagsRepository = $cardRidingUserBagsRepository; $this->cardRidingUseLogRepository = $cardRidingUseLogRepository; $this->orderRepository = $orderRepository; } public function main(&$order) { if ($order->time_money <= 0) return false; //已优惠不能在同时享受 if ((int)$order->is_riding_card == Order::RIDING_CARD_OK) return false; $cardRiding = $this->cardRidingUserBagsRepository->isExist($order->user_id, $order->start_use_bike_time); if (empty($cardRiding)) return false; $cardLogs = $this->cardRidingUseLogRepository->isUseThisCardByOrderId($order->id); if ($cardLogs) return false; $discount_time_money = $cardRiding->deduction_money; if (bccomp($order->time_money, $cardRiding->deduction_money, 2) < 0) { $discount_time_money = $order->time_money; } //调整订单 $order->preferential_money = $discount_time_money; $order->card_preferential_money = $discount_time_money; $order->order_money = bcsub($order->order_money, $order->preferential_money, 2); $order->pay_money = $order->order_money; $order->is_riding_card = Order::RIDING_CARD_OK; //优惠方式 if($order->preferential_type == 0){ $order->preferential_type = arr2str([Order::PREFERENTIAL_CARD_RIDING],'-'); }else{ $arr = str2arr($order->preferential_type,'-'); $order->preferential_type = arr2str(array_merge($arr,[Order::PREFERENTIAL_CARD_RIDING]),'-'); } if($order->pay_money == 0){ $order->pay_type = Order::PAY_TYPE_ACCOUNT; } if ((int)$cardRiding->is_limit_times === CardRidingUserBags::LIMIT_TIMES_YES) { $cardRiding->can_ridding_times -= 1; if ($cardRiding->can_ridding_times <= 0) { // 如果没次数了 直接使其失效 $cardRiding->status = CardRidingUserBags::STATUS_NO; } $cardRiding->save(); } CardRidingUseLog::logs($cardRiding->id, $order->id, $order->preferential_money); } }