id; $users = User::query() ->filter($filter) ->where('is_register', User::REGISTER_OK) ->orderByDesc('id'); if (!Admin::isAdministrator()) { $area_ids = AdminUser::getAreaIdsByAdminId($admin_id); if (count($area_ids) !== 0) { $users = $users->whereIn('register_area_id', $area_ids); } else { $area_id = AdminUserArea::query()->where('admin_id', $admin_id)->first('area_id'); $area_id = $area_id->area_id ?? 0; $users = $users->where('register_area_id', $area_id); } } $users = $users->paginate(); return $this->ok(UserResource::collection($users)); } /** * update 更新用户信息 * * @param UserRequest $request * @param User $user * @return \Illuminate\Http\JsonResponse * @author Fx * */ public function update(UserRequest $request, User $user) { $inputs = $request->validated(); $user->update($inputs); return $this->created(UserResource::make($user)); } /** * userNumber总用户数 总有效用户数 * * @return \Illuminate\Http\JsonResponse * @author Fx * */ public function userNumber() { $admin_id = Admin::user()->id; $data['user_total'] = User::query(); $data['user_true_total'] = User::query()->where('is_card_certified', User::CARD_OK); if (!Admin::isAdministrator()) { $area_ids = AdminUser::getAreaIdsByAdminId($admin_id); if (count($area_ids) !== 0) { $data['user_total'] = $data['user_total']->whereIn('register_area_id', $area_ids); $data['user_true_total'] = $data['user_true_total']->whereIn('register_area_id', $area_ids); } else { $area_id = AdminUserArea::query()->where('admin_id', $admin_id)->first('area_id'); $area_id = $area_id->area_id ?? 0; $data['user_total'] = $data['user_total']->where('register_area_id', $area_id); $data['user_true_total'] = $data['user_true_total']->where('register_area_id', $area_id); } } $data['user_total'] = $data['user_total']->count('id'); $data['user_true_total'] = $data['user_true_total']->count('id'); return $this->ok($data); } /** * moneySum 总充值数 总余额数 * @return \Illuminate\Http\JsonResponse * @author Fx * */ public function moneySum() { $admin_id = Admin::user()->id; $data['recharge_total'] = User::query(); $data['wallet_money_total'] = User::query(); if (!Admin::isAdministrator()) { $area_ids = AdminUser::getAreaIdsByAdminId($admin_id); if (count($area_ids) !== 0) { $data['recharge_total'] = $data['recharge_total']->whereIn('register_area_id', $area_ids); $data['wallet_money_total'] = $data['wallet_money_total']->whereIn('register_area_id', $area_ids); } else { $area_id = AdminUserArea::query()->where('admin_id', $admin_id)->first('area_id'); $area_id = $area_id->area_id ?? 0; $data['recharge_total'] = $data['recharge_total']->where('register_area_id', $area_id); $data['wallet_money_total'] = $data['wallet_money_total']->where('register_area_id', $area_id); } } $data['recharge_total'] = $data['recharge_total']->sum('recharge'); $data['wallet_money_total'] = $data['wallet_money_total']->sum('wallet_money'); return $this->ok($data); } /** * wallet 钱包列表 * * @param Request $request * @return \Illuminate\Http\JsonResponse *@author Fx * */ public function wallet(Request $request) { $user_id = $request->get('user_id') ?? ''; if (empty($user_id)) return $this->error('参数错误'); $wallet = WalletLog::query() ->where('user_id', $user_id) ->orderByDesc('id') ->paginate(); return $this->ok(WalletResource::collection($wallet)); } /** * changeStatus 改变用户status * * @param Request $request * @return \Illuminate\Http\JsonResponse *@author Fx * */ public function changeStatus(Request $request) { $user_id = $request->get('user_id') ?? ''; $status = $request->get('status') ?? 0; $is_card_certified = $request->get('is_card_certified') ?? 0; $is_bind_mobile = $request->get('is_bind_mobile') ?? 0; $is_match_ride_age = $request->get('is_match_ride_age') ?? 0; $truename = $request->get('truename') ?? ''; $card_id = $request->get('card_id') ?? ''; $mobile = $request->get('mobile') ?? ''; // $reason = $request->get('reason') ?? ''; //封号原因 if (empty($user_id)) return $this->error('参数错误'); try { $bool = User::query()->where('id', $user_id)->update([ 'truename' => $truename, 'card_id' => $card_id, 'mobile' => $mobile, 'status' => $status, 'is_bind_mobile' => $is_bind_mobile, 'is_card_certified' => $is_card_certified, 'is_match_ride_age' => $is_match_ride_age, ]); } catch (\Exception $e) { Log::info($e->getMessage()); return $this->error("修改失败,请联系管理员"); } if ($bool) { return $this->created(); } else { return $this->error("修改失败,请联系管理员"); } } /** * returnDeposit 退还押金 * * @param Request $request * @return \Illuminate\Http\JsonResponse * @author Fx * */ public function returnDeposit(Request $request) { $user_id = $request->get('user_id') ?? ''; if (empty($user_id)) return $this->error('参数错误'); $user = User::find($user_id); if (empty($user)) return $this->error('找不到该用户信息'); // 此验证暂时不验证 防止交两次押金无法退还 // if($user->is_deposit == User::DEPOSIT_NO) return $this->error('此用户还没缴纳押金'); $order = Order::query()->where('user_id', $user_id) ->whereIn('status', [Order::STATUS_RIDE_BIKE, Order::STATUS_PAUSE_BIKE, Order::STATUS_CLOSE_BIKE]) ->first(); if (!empty($order)) return $this->error('该用户还有未完成得订单'); $orderRent = OrderRent::query()->where('user_id', $user_id) ->whereIn('status', [OrderRent::STATUS_RENT_BIKE, OrderRent::STATUS_CLOSE_RENT_BIKE]) ->first(); if (!empty($orderRent)) return $this->error('该用户还有未完成得日租订单'); $depositOrder = DepositOrder::where('user_id', $user_id)->where('pay_status', DepositOrder::PAY_STATUS_OK)->where('is_refund', DepositOrder::REFUND_NO)->orderBy('id', 'desc')->first(); if (empty($depositOrder)) return $this->error('此用户还没缴纳押金'); if (DepositRefund::where('deposit_id', $depositOrder->id)->where('pay_status', DepositRefund::PAY_STATUS_NO)->exists()) { return $this->error('您已提交,请耐心等待审核'); } try { DB::beginTransaction(); // 1.添加记录 $refund = DepositRefund::firstOrCreate([ 'deposit_id' => $depositOrder->id, 'user_id' => $user_id, ], [ 'no' => DepositRefund::makeNo(), 'money' => $depositOrder->pay_money, 'type' => DepositRefund::TYPE_USER, 'is_check_status' => DepositRefund::CHECK_STATUS_OK, 'area_id' => $depositOrder->area_id, 'pay_type' => $depositOrder->pay_type, 'pay_money' => $depositOrder->pay_money, 'pay_status' => DepositRefund::PAY_STATUS_NO ]); //2.修改用户押金 User::where('id', $user_id)->update([ 'deposit_money' => 0, 'is_deposit' => User::DEPOSIT_NO ]); //3.微信退款 $payment = app('wechat.payment'); // 微信支付 $result = $payment->refund->byOutTradeNumber($depositOrder->no, $refund->no, wechat_fee($depositOrder->pay_money), wechat_fee($refund->pay_money), [ // 可在此处传入其他参数,详细参数见微信支付文档 'refund_desc' => '退押金', 'notify_url' => config('wechat.payment.refund_deposit_notify_url') ]); $refund->save(); if ($result['return_code'] === 'SUCCESS') { DB::commit(); return $this->ok('退还成功'); } else { Log::error('微信退款接口失败'); DB::rollBack(); return $this->error('退还失败,请联系管理员'); } } catch (\Exception $e) { Log::error($e->getMessage()); DB::rollBack(); return $this->error('退还失败,请联系管理员'); } } }