where(AdminMerchant::getMerchantWhere()) ->whereIn('register_area_id', $area_ids) ->where('is_bind_mobile', User::BIND_MOBILE_OK) ->filter($filter) ->orderByDesc('id') ->paginate(); return $this->ok(UserResource::collection($user)); } /** * userDetail 用户详情 * * @param Request $request * @return \Illuminate\Http\JsonResponse * @author Fx * */ public function userDetail(Request $request) { $user_id = $request->get('user_id') ?? ''; if (empty($user_id)) return $this->error('参数错误'); $userDetail = User::query()->where(AdminMerchant::getMerchantWhere())->where('id', $user_id)->first(); if (empty($userDetail)) return $this->error('找不到该用户,参数错误'); $data = [ 'username' => $userDetail->nickname . ($userDetail->truename ? '(' . $userDetail->truename . ')' : ''), 'mobile' => $userDetail->mobile ?? '', 'area' => $userDetail->areas->name ?? '', 'deposit' => $userDetail->deposit_money ?? 0, 'wallet_money' => $userDetail->wallet_money ?? 0, 'remark' => $userDetail->remark ?? '', ]; return $this->ok($data); } public function updateRemark(RemarkRequest $request, $id) { // $user = User::query()->where(AdminMerchant::getMerchantWhere())->where('id', $id)->first(); $inputs = $request->validated(); // Log::info($id); $user->update($inputs); return $this->ok('修改成功'); } /** * historicalOrder 历史订单 * * @param Request $request * @return \Illuminate\Http\JsonResponse * @author Fx * */ public function historicalOrder(Request $request) { $user_id = $request->get('user_id') ?? ''; if (empty($user_id)) return $this->error('参数错误'); $order = Order::query() ->where(AdminMerchant::getMerchantWhere()) ->where('user_id', $user_id) // ->where('status',Order::STATUS_COMPLETE_ORDER) ->orderByDesc('id') ->paginate(); return $this->ok(OrderResource::collection($order)); } /** * historicalOrderRent 历史日租订单 * * @param Request $request * @return \Illuminate\Http\JsonResponse * @author Fx * */ public function historicalOrderRent(Request $request) { $user_id = $request->get('user_id') ?? ''; if (empty($user_id)) return $this->error('参数错误'); $order = OrderRent::query() ->where(AdminMerchant::getMerchantWhere()) ->where('user_id', $user_id) // ->where('status',Order::STATUS_COMPLETE_ORDER) ->orderByDesc('id') ->paginate(); return $this->ok(OrderRentResource::collection($order)); } /** * userStatistics 用户统计 * * @param UserFilter $filter * @param OrderFilter $orderFilter * @return \Illuminate\Http\JsonResponse * @author Fx * */ public function userStatistics(UserFilter $filter, OrderFilter $orderFilter) { $area_ids = self::$areaIds; // 总用户 $totalUser = User::query() ->where(AdminMerchant::getMerchantWhere()) ->whereIn('register_area_id', $area_ids) ->filter($filter) ->count('id'); // 押金用户 $depositUser = User::query() ->where(AdminMerchant::getMerchantWhere()) ->whereIn('register_area_id', $area_ids) ->where('is_deposit', User::DEPOSIT_OK) ->filter($filter) ->count('id'); //有效用户 $cardUser = User::query() ->where(AdminMerchant::getMerchantWhere()) ->whereIn('register_area_id', $area_ids) ->where('is_bind_mobile', User::BIND_MOBILE_OK) ->filter($filter) ->count('id'); //今日新增 $todayAddUser = User::query() ->where(AdminMerchant::getMerchantWhere()) ->whereIn('register_area_id', $area_ids) ->where('is_bind_mobile', User::BIND_MOBILE_OK) ->where('created_at', '>=', Carbon::today()) ->filter($filter) ->count('id'); // 今日活跃 $todayActiveOrder = Order::query() ->where(AdminMerchant::getMerchantWhere()) ->whereIn('area_id', $area_ids) ->where('created_at', '>=', Carbon::today()) ->filter($orderFilter) ->get(['user_id']) ->toArray(); $todayActiveUserArr = []; foreach ($todayActiveOrder as $v) { $todayActiveUserArr[] = $v['user_id']; } $todayActiveUser = count(array_unique($todayActiveUserArr)); //去重复后计算总数 $data = [ 'totalUser' => $totalUser ?? 0, 'depositUser' => $depositUser ?? 0, 'cardUser' => $cardUser ?? 0, 'todayAddUser' => $todayAddUser ?? 0, 'todayActiveUser' => $todayActiveUser ?? 0 ]; return $this->ok($data); } /** * newUsersChart 新用户增长统计图 * * @param Request $request * @return \Illuminate\Http\JsonResponse * @author Fx * */ public function newUsersChart(Request $request, UserFilter $userFilter) { $days = $request->get('days') ?? ''; if (empty($days)) return $this->error('缺少参数'); $newUsers = User::query() // ->where(AdminMerchant::getMerchantWhere()) ->filter($userFilter) // ->where('is_card_certified', User::CARD_OK); ->where('is_bind_mobile', User::BIND_MOBILE_OK); // 去掉是否实名认证过滤条件,只要绑定手机号就算新增用户 // $admin_id = Admin::user()->id; // if (!Admin::isAdministrator()) { // $area_ids = AdminUser::getAreaIdsByAdminId($admin_id); // if (count($area_ids) !== 0) { // $newUsers = $newUsers->whereIn('register_area_id', $area_ids); // } else { // $area_id = AdminUserArea::query()->where('admin_id', $admin_id)->first('area_id'); // $area_id = $area_id ?? 0; // $newUsers = $newUsers->where('register_area_id', $area_id); // } // } $newOrders = $newUsers; switch ($days) { case 'today': $today = Carbon::today(); $newOrders = $newOrders->where('created_at', '>=', $today) ->selectRaw('DATE_FORMAT(created_at,"%m-%d %H:00") as date,count(id) as value') ->groupBy('date')->get()->toArray(); // 有数据得数组 $newOrdersKeyVal = []; if (!empty($newOrders)) { foreach ($newOrders as $v) { $newOrdersKeyVal[$v['date']] = $v['value']; } } // 为0得数组 $i = Carbon::now()->format('H'); $arr = []; for ($i; $i >= 0; $i--) { $str = Carbon::now()->subHours($i)->format('m-d H:00'); $arr[$str] = 0; } //合并 $merge = array_merge($arr, $newOrdersKeyVal); $data = []; foreach ($merge as $key => $value) { $data[] = ['date' => $key, 'value' => $value]; } break; case 'threeDays': $i = 2; break; case 'sevenDays': $i = 6; break; case 'fifteenDays': $i = 14; break; case 'thirtyDays': $i = 29; break; default: return $this->error('参数错误'); } if ($days !== 'today') { $paramDays = Carbon::today()->subDays($i); // 赋值一个值为0得数组 $arr = []; for ($i; $i >= 0; $i--) { $str = Carbon::today()->subDays($i)->format('Y/m/d'); $arr[$str] = 0; } // 有数据得数组 $newOrders = $newOrders->where('created_at', '>', $paramDays) ->selectRaw('DATE_FORMAT(created_at,"%Y/%m/%d") as date,count(id) as value') ->groupBy('date')->get()->toArray(); $newOrdersKeyVal = []; if (!empty($newOrders)) { foreach ($newOrders as $v) { $newOrdersKeyVal[$v['date']] = $v['value']; } } // 合并覆盖0 $merge = array_merge($arr, $newOrdersKeyVal); // 重组结构 $data = []; foreach ($merge as $ks => $vs) { $data[] = ['date' => $ks, 'value' => $vs]; } } return $this->ok($data); } /** * userRepaired 保修列表 * * @param Request $request * @param UserRepairedFilter $userRepairedFilter * @return \Illuminate\Http\JsonResponse * @author Fx * */ public function userRepaired(Request $request, UserRepairedFilter $userRepairedFilter) { $area_ids = self::$areaIds; $repaired = Trouble::query() ->where(AdminMerchant::getMerchantWhere()) ->filter($userRepairedFilter) ->with(['users']) ->whereIn('area_id', $area_ids) ->orderByDesc('id') ->paginate(); return $this->ok(UserRepairedResource::collection($repaired)); } /** * updateUserRepairedStatus 更新为已读 * * @param Request $request * @return \Illuminate\Http\JsonResponse * @author Fx * */ public function updateUserRepairedStatus(Request $request) { $id = $request->get('id') ?? ''; if (empty($id)) return $this->error('参数错误'); $repaired = Trouble::query()->where('id',$id)->where(AdminMerchant::getMerchantWhere())->first(); if (empty($repaired)) return $this->error('参数错误,找不到该报修'); $repaired->status = 1; $repaired->save(); return $this->ok('修改成功'); } /** * getRepairedImg 获取报修图片 * * @param Request $request * @return \Illuminate\Http\JsonResponse *@author Fx * */ public function getRepairedImg(Request $request) { $imgIds = $request->get('imgIds') ?? []; if (empty($imgIds)) return $this->error('参数错误'); $images = Upload::query()->whereIn('id', $imgIds)->where(AdminMerchant::getMerchantWhere())->get(['url'])->toArray(); return $this->ok($images); } /** * index 问题反馈 * * @param Request $request * @param QuestionFilter $filter * @return \Illuminate\Http\JsonResponse * @author Fx * */ public function feedback(Request $request, QuestionFilter $filter) { $area_ids = self::$areaIds; // dd($area_ids); $question = Questions::query() ->where(AdminMerchant::getMerchantWhere()) ->filter($filter) ->orderByDesc('id') ->whereIn('area_id', $area_ids) ->paginate(); return $this->ok(QuestionResource::collection($question)); } /** * isReadChange 改为已读 * * @param Request $request * @return \Illuminate\Http\JsonResponse * @author Fx * */ public function isReadChange(Request $request) { $id = $request->get('id') ?? 0; $question = Questions::query()->where('id',$id)->where(AdminMerchant::getMerchantWhere())->first(); if (empty($question)) { return $this->error('参数错误'); } $question->is_read = Questions::READ_YES; $bool = $question->save(); if ($bool) { return $this->ok('修改成功'); } else { return $this->error('发生错误,请联系管理员'); } } }