model = $cardRidingUserBags; $this->userRepository = $userRepository; $this->cardRidingRepository = $cardRidingRepository; $this->cardRidingOrderRepository = $cardRidingOrderRepository; } /** * 判断用户是否存在有效骑行卡 有的话返回该卡 没有的话 返回[] * * @param $user_id integer * * @return mixed * * User:Fx * */ public function isExist($user_id, $order_start_time = '') { $cardRidingUser = $this->model->query() ->where('user_id', $user_id) ->where('status', CardRidingUserBags::STATUS_OK) ->merchant() ->first(); if (empty($cardRidingUser)) { // 不存在 return []; } $t1 = Carbon::make($cardRidingUser->expiration_time); // 骑行卡过期时间 $t2 = Carbon::now(); // 对比过期时间 if (!empty($order_start_time)) { $t2 = Carbon::make($order_start_time); } if ($t1->lt($t2)) { // 已过期 $cardRidingUser->status = CardRidingUserBags::STATUS_NO; $cardRidingUser->save(); return []; } if ($cardRidingUser->is_limit_times == CardRidingUserBags::LIMIT_TIMES_YES) { // 限次卡 判断是否次数归0 if ($cardRidingUser->can_ridding_times <= 0) { // 次数已经归0 更新卡失效 $cardRidingUser->status = CardRidingUserBags::STATUS_NO; $cardRidingUser->save(); return []; } } // 存在 return $cardRidingUser; } /** * 更新用户骑行卡失效 * * @param $id integer * @param $user_id integer * * @return bool * */ public function updateStatusNo($id) { try { $this->model->query()->where('id', $id)->update(['status' => CardRidingUserBags::STATUS_NO]); return true; } catch (\Exception $exception) { Log::error($exception->getMessage()); return false; } } /** * 邀请新用户送卡 inviteNewRewardCard * * @param $card_id * @param $user_id * @return void * @author Fx * */ public function inviteNewRewardCard($card_id, $user_id) { $users = $this->userRepository->byIdGetModel($user_id); $cardRiding = $this->cardRidingRepository->byIdGetModel($card_id); $cardRidingOrdersData = [ 'no' => CardRidingOrder::makeNo(), 'area_id' => $users->register_area_id, 'user_id' => $users->id, 'riding_card_id' => $card_id, 'money' => 0, 'discount' => 1, 'pay_money' => 0, 'pay_type' => CardRidingOrder::PAY_TYPE_INVITE_NEW_USER_GIVE, 'pay_status' => CardRidingOrder::PAY_STATUS_OK, 'pay_time' => Carbon::now(), 'merchant_id' => merchant_id() ]; $cardRidingOrder = $this->cardRidingOrderRepository->model::firstOrCreate($cardRidingOrdersData); $expiration_time = Carbon::now()->addDays($cardRiding->effective_days)->format('Y-m-d H:i:s'); $data = [ 'user_id' => $users->id, 'riding_card_id' => $card_id, 'card_riding_order_id' => $cardRidingOrder->id, 'take_effect_time' => Carbon::now(), 'deduction_money' => $cardRiding->deduction_money, 'expiration_time' => $expiration_time, 'is_limit_times' => $cardRiding->is_limit_times, 'can_ridding_times' => $cardRiding->times, 'day_can_ridding_times' => $cardRiding->day_can_ridding_times, 'status' => CardRidingUserBags::STATUS_OK, 'merchant_id' => merchant_id() ]; // Log::info($data); return $this->model::firstOrCreate(['card_riding_order_id' => $cardRidingOrder->id], $data); } }