function($agency){ // $agency->with('partner:id,name,mobile')->select('id','province','city','partner_id'); // }, 'commission' => function ($commission) { $commission->with(['service_user:user_id,name,mobile'])->select('id', 'order_id', 'role', 'user_id'); }, 'service_role' => function ($service_role) { $service_role->with(['serviceUser:user_id,name,mobile'])->select('order_id', 'role_id', 'user_id'); }, 'offline_order:id,order_id,operate_user_id,operate_user_name', 'agreement:order_id,number,sign_date,quota_id', 'agreement.quotaInfo:id,agency_id,collaborator_id,num', 'agreement.quotaInfo.collaboratorInfo:id,avatar,name,mobile', 'agreement.quotaInfo.agencyInfo:id,grade,pro_id,city_id,province,city', "recommendUser", "asginSigner:order_id,status,company_status,user_sign_url,company_sign_url", "asginContract:order_id,preview_url", "userInfo:user_id,card_photo", "payment", "group", ])->serviceOrder(); $keyword = $request->input('keyword'); //关键词筛选 if ($keyword) { $keyword = trim($keyword); // $orders = $orders->whereHas("user", function ($sql) use ($keyword) { // $sql->where('name', 'like', '%' . $keyword . '%') // ->orWhere('mobile', 'like', '%' . $keyword . '%'); // }); $orders = $orders->Where(function ($sql) use ($keyword) { $sql->whereHas("user", function ($sql) use ($keyword) { $sql->where('name', 'like', '%' . $keyword . '%') ->orWhere('mobile', 'like', '%' . $keyword . '%'); })->orWhere("name", "like", "%" . $keyword . "%")->orWhere('mobile', 'like', '%' . $keyword . '%'); }); } //支付状态筛选 $pay_status = $request->input('pay_status'); if ($pay_status) { $orders = $orders->where('pay_status', $pay_status); } //开始状态筛选 $status = $request->input('status'); if ($status) { $orders = $orders->where("status", $status); } //子公司筛选 $agency_id = $request->input('agency_id'); if ($agency_id) { // $orders = $orders->where("agency_id", $agency_id); $orders = $orders->whereHas('agreement.quotaInfo', function ($query) use ($agency_id) { $query->where('agency_id', $agency_id); }); } $is_export = $request->input('is_export'); if ($is_export) { $orders = $orders->orderByDesc('id')->get(); return Excel::download(new OrdersExportV2($orders), 'DMA订单.xlsx'); } $orders = $orders->orderByDesc('id')->paginate(); foreach ($orders as $order) { if ($order->user) { $order->user->makeVisible('mobile'); } } return $this->success('ok', $orders); } public function getAllOrders() { $list = Order::select('id', 'name', 'mobile', 'trade_no')->get(); return $this->success('ok', $list); } /** * 设置订单是否展示 * @param Request $request * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Http\JsonResponse */ public function setOrderIsShow(Request $request) { try { $is_show = $request->get('is_show'); $order_id = $request->get('order_id'); $order_info = Order::where('id', $order_id)->first(); if (empty($order_info)) { return $this->failure('订单不存在'); } $order_info->is_show = $is_show; $order_info->save(); return $this->success('ok'); } catch (\Exception $e) { Log::error('setOrderIsShow:' . $e->getMessage()); return $this->failure($e->getMessage()); } } public function export(Request $request) { return Excel::download(new OrdersExport($request->all()), '订单.xlsx'); } public function order(Request $request, $order_id) { $order = Order::find($order_id); //service_users.id,service_users.user_id,service_users.name,service_users.mobile' $roles = ServiceRole::with([ 'roleUsers' => function ($sql) use ($order_id) { $sql->where('order_id', $order_id); } ])->get(); $order->service = $order->service()->select('id', 'pic', 'title')->first(); $order->group; //是否有餐单 $order->has_guides = $order->guides()->count() ? 1 : 0; if ($order->has_guides) { $order->guide_status = 'MADE'; Cache::forget('guide_status_' . $order_id); } else { //餐单生成状态 $order->guide_status = Cache::get('guide_status_' . $order_id, 'NOTMAKE'); } foreach ($roles as $role) { $url = config('app.url') . "/h5/#/temporaryIdentity?order_id=" . $order_id . "&role=" . $role->id; $role->qr_code = CommonService::makeqrcode($url); if (count($role->roleUsers)) { $role->share_option = ServiceRoleOrder::where("order_id", $order_id)->where("user_id", ($role->roleUsers)[0]->user_id)->where("role_id", $role->id)->value("share_option") ?: ""; } } $order->asginContract; $order->asginSigner; return $this->success('ok', compact('order', 'roles')); } public function changeOrderAgency(Request $request, $order_id) { $order = Order::find($order_id); $agency_id = $request->input('agency_id'); $order->agency_id = $agency_id; $order->save(); //操作记录 OperationLoggedEvent::dispatch("修改订单: $order->id 的子公司为:$agency_id"); return $this->success('ok'); } public function updateOrder(Request $request, $order_id) { $order = Order::find($order_id); $status = $request->input('status'); if ($status) { $order->status = $status; if ($status == 'STARTING') { //通知 $user = $order->user; if ($user && $user->officialWechat) { $param = [ 'touser' => $user->officialWechat->openid, 'template_id' => config('wechat.tpls.make_guide_notice'), 'url' => '', 'miniprogram' => [ 'appid' => config('wechat.mini_program.app_id'), 'pagepath' => 'pages/tabBar/serve', ], 'data' => [ 'first' => ['value' => '您的餐单生成成功!'], 'keyword1' => ['value' => $user->name], "keyword2" => ['value' => date('Y-m-d H:i:s')], 'remark' => ['value' => "点击进入查看详情"] ] ]; SendTemplateNotice::dispatch($param)->onQueue('health'); } //该订单是否是线下订单 if ($order->offline_order) { //触发订单服务开始事件 OrderServeStartedEvent::dispatch($order->offline_order); } } //订单结束 if ($status == 'FINISHED') { //该订单是否是线下订单 if ($order->offline_order) { //触发订单结束事件 OrderServeFinishedEvent::dispatch($order->offline_order); } } //操作记录 OperationLoggedEvent::dispatch("修改订单: $order->id 的状态为:$status"); } $order->save(); return $this->success('ok'); } public function updateOrderCheckSign(Request $request, $order_id) { $order = Order::find($order_id); //合同签署 $check_sign_status = $request->input("check_sign_status"); $order->check_sign_status = $check_sign_status; $order->save(); DmaProcessLog::addUserProcessLog($order->user_id ?? 0, $order_id, 1, "admin_sign_status", "行政确认用户已签署合同", auth()->user()->id ?? 0, 4); //创建群聊 $group_exists = Group::where("order_id", $order_id)->exists(); if ($group_exists) { $group = new Group(); $group->autoCreateChat($order->id); } DmaProcessLog::addUserProcessLog($order->user_id ?? 0, $order_id, 1, "create_group", "已自动建立群聊", auth()->user()->id ?? 0, 4); DmaProcessLog::addUserProcessLog($order->user_id ?? 0, $order_id, 1, "add_user_to_group", "行政已拉用户入群", auth()->user()->id ?? 0, 4); DmaProcessLog::addUserProcessLog($order->user_id ?? 0, $order_id, 1, "send_group_notice", "系统已发送群公告", auth()->user()->id ?? 0, 5); return $this->success('ok'); } public function storeOrderRoleUser(Request $request, Order $order) { $role_user_id = $request->input('role_user_id'); $user_id = $request->input("user_id"); $role_id = $request->input('role_id'); $role_user = null; if ($role_user_id) { $role_user = ServiceUser::find($role_user_id); } else if ($user_id) { $role_user = ServiceUser::where("user_id", $user_id)->first(); } if (empty($role_user)) { return $this->failure("服务人员不存在"); } $role = $role_user->roles()->where('service_roles.id', $role_id)->first(); if (empty($role)) throw new \Exception("用户角色有误"); //订单角色是否存在 // $order_role = ServiceRoleOrder::where('order_id',$order->id)->where('role_id', $role_id)->first(); // if ($order_role) return $this->failure("订单已经有角色【".$role->name."】"); if (empty($role_user->user_id)) return $this->failure("该服务成员未绑定微信信息"); DB::beginTransaction(); ServiceRoleOrder::firstOrCreate(['order_id' => $order->id, 'role_id' => $role->id, 'user_id' => $role_user->user_id]); // GroupUser::firstOrCreate(['user_id'=>$role_user->user_id, 'group_id'=>$order->group->id, 'role_id'=>$role->id, 'role_name'=>$role->name]); $groupRoles = [ServiceRole::MAIN_COACH, ServiceRole::COACH, ServiceRole::CUSTOMER, ServiceRole::TUTOR, ServiceRole::PERSONAL_COACH]; if (!empty($order->group->im_chat_id) && in_array($role_id, $groupRoles)) { GroupUser::addGroupUser($order->group, $role_user, [$role_id]); } DB::commit(); //操作记录 OperationLoggedEvent::dispatch("给订单: $order->id 增加服务人员-$role->name :$role_user->name"); DmaProcessLog::addUserProcessLog($order->user_id, $order->id, 1, "add_server_to_group", "行政已拉服务人员入群", auth()->user()->id, 4); return $this->success('ok'); } public function deleteOrderRoleUser(Request $request, Order $order) { DB::beginTransaction(); $role_id = $request->input("role_id"); $user_id = $request->input("user_id"); $role_order = ServiceRoleOrder::where('order_id', $order->id)->where('user_id', $user_id)->where('role_id', $role_id)->first(); GroupUser::where(['user_id' => $role_order->user_id, 'group_id' => $order->group->id, 'role_id' => $role_order->role_id])->delete(); ServiceRoleOrder::where('order_id', $order->id)->where('user_id', $user_id)->where('role_id', $role_id)->delete(); DB::commit(); if (!empty($order->group->im_chat_id)) { $owner_ac_cid = make_wangyiyun_accid($order->group->owner_id); $delete_user_ac_cid = make_wangyiyun_accid($role_order->user_id); $other_role = ServiceRoleOrder::where('order_id', $order->id)->where('user_id', $user_id)->where('role_id', "<>", $role_id)->first(); if (empty($other_role)) { //踢人 $imTeam = new Team(config('chat.im.app_id'), config('chat.im.app_secret')); $imTeam->kick($order->group->im_chat_id, $owner_ac_cid, $delete_user_ac_cid); } } //操作记录 OperationLoggedEvent::dispatch("删除了订单的: $order->id 的服务人员:$role_order->user_id"); return $this->success('ok'); } /** * 查询订单方案列表 * @param Request $request * @return \Illuminate\Http\JsonResponse|void */ public function getOrderSchemeList(Request $request) { try { $keyword = $request->get('keyword'); $start_time = $request->get('start_time'); $end_time = $request->get('end_time'); $end_time = date('Y-m-d', strtotime('+1 day', strtotime($end_time))); // $order_scheme = Order::with('scheme') // ->when($keyword,function($query) use ($keyword) { // $query->where('name','like','%'.$keyword."%"); // }) // ->whereHas('scheme',function ($roleQuery) use ($start_time,$end_time){ // if(!empty($start_time)){ // $roleQuery->whereBetween('created_at',[$start_time,$end_time]); // } // }) // ->orderBy('created_at','desc') // ->paginate(); $order_scheme = Order::rightJoin('guide_schemes', 'orders.id', '=', 'guide_schemes.order_id') ->when($keyword, function ($query) use ($keyword) { $query->where('orders.name', 'like', '%' . $keyword . "%"); }) ->where(function ($query) use ($start_time, $end_time) { if (!empty($start_time)) { $query->whereBetween('guide_schemes.created_at', [$start_time, $end_time]); } }) ->orderByDesc('guide_schemes.created_at') ->paginate(); return $this->success('ok', $order_scheme); } catch (\Exception $e) { Log::error('getOrderSchemeList:' . $e->getMessage()); return $this->failure($e->getMessage()); } } /** * 导出数据 * @param Request $request * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Http\JsonResponse */ public function exportOrderSchemeList(Request $request) { try { $keyword = $request->get('keyword'); $start_time = $request->get('start_time'); $end_time = $request->get('end_time'); $end_time = date('Y-m-d', strtotime('+1 day', strtotime($end_time))); $order_scheme = Order::rightJoin('guide_schemes', 'orders.id', '=', 'guide_schemes.order_id') ->when($keyword, function ($query) use ($keyword) { $query->where('orders.name', 'like', '%' . $keyword . "%"); }) ->where(function ($query) use ($start_time, $end_time) { if (!empty($start_time)) { $query->whereBetween('guide_schemes.created_at', [$start_time, $end_time]); } }) ->orderByDesc('guide_schemes.created_at') ->get()->toArray(); // 下载 Excel 文件 return Excel::download(new OrderSchemeExport($order_scheme), 'Reappraises.xlsx'); } catch (\Exception $e) { Log::error('getOrderSchemeList:' . $e->getMessage()); return $this->failure($e->getMessage()); } } /** * 通过订单id获取餐单方案 * @param Request $request * @param Order $order * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Http\JsonResponse */ public function getSchemeByOrderId(Request $request, Order $order) { if (empty($order)) { return $this->failure('订单不存在'); } $scheme = GuideScheme::where('order_id', $order->id)->first(); return $this->success('ok', $scheme); } /** * 更新方案 * @param Request $request * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Http\JsonResponse */ public function updateOrderScheme(Request $request) { try { $order_id = $request->input('order_id'); if (empty($order_id)) { return $this->failure('订单不存在'); } $scheme_info = GuideScheme::where('order_id', $order_id)->first(); if (empty($scheme_info)) { return $this->failure('方案不存在'); } $schemes = $request->input("schemes") ?? []; $hour = (time() - strtotime($scheme_info->created_at)) / 3600; if ($hour > 24) { //插入操作记录 OrderOperateLog::create(['order_id' => $order_id, 'type' => 2]); } $scheme_info->update(['scheme' => $schemes]); return $this->success('ok'); } catch (\Exception $e) { return $this->failure($e->getMessage()); } } /** * 导出方案信息 * @param Request $request * @return \Illuminate\Http\JsonResponse|void */ public function exportOrderScheme(Request $request) { try { $order_id = $request->get('order_id'); if (empty($order_id)) { return $this->failure('订单不存在'); } $scheme = GuideScheme::where('order_id', $order_id)->first(); return Excel::download(new SchemeExport($scheme), 'scheme.xlsx'); } catch (\Exception $e) { Log::error('exportScheme:' . $e->getMessage()); return $this->failure('导出失败'); } } public function addAgreement(Request $request) { DB::beginTransaction(); try { $data = $request->only(['order_id', 'number', 'sign_date', 'material_type', 'sign_id', 'introduce_id', 'introduce_rights', 'quota_id']); $validated = Validator::make($data, [ 'order_id' => 'required|unique:agreement', 'sign_date' => 'required', 'sign_id' => 'required', 'number' => 'required|unique:agreement', 'quota_id' => 'required', ], [ 'order_id.unique' => '订单已存在协议', 'order_id.required' => '请选择订单', 'sign_date.required' => '请填写签署日期', 'number.required' => '请填写协议编号', 'number.unique' => '协议编号重复', 'sign_id.required' => '请选择合作商', 'quota_id.required' => '请选择名额归属' ]); $data['introduce_rights'] = json_encode($data['introduce_rights']); if ($validated->fails()) { $errors = $validated->errors()->all(); $error = count($errors) ? $errors[0] : null; return $this->failure($error); } $quota_info = Quota::find($data['quota_id']); if (empty($quota_info)) return $this->failure('名额归属不为空'); $admin = auth()->user(); $quota_info->num = $quota_info->num - Quota::USE_NUM; if ($quota_info->num < 0) { return $this->failure('名额不足'); } $quota_info->save(); QuotaLog::addQuotaLog($admin, $data['order_id'], Quota::USE_NUM, $quota_info->id); $agreementModel = Agreement::create($data); AgreementLog::addAgreementLog($admin, $data['order_id'], $agreementModel->id, "创建了订单协议"); DB::commit(); return $this->success('ok'); } catch (\Exception $e) { DB::rollBack(); Log::error('addAgreement:' . $e->getMessage()); return $this->failure($e->getMessage()); } } public function getAgreement(Request $request) { try { $keyword = $request->get('keyword'); $order_id = $request->get('order_id'); $no_page = $request->get('no_page'); $is_export = $request->get('is_export'); if ($is_export) { $no_page = true; } $query = Agreement::query()->with('signInfo', 'introduceInfo', 'orderInfo', 'quotaInfo'); $query->when($keyword, function ($query) use ($keyword) { $query->where('number', 'like', "%{$keyword}%"); }); $query->when($order_id, function ($query) use ($order_id) { $query->where('order_id', $order_id); }); $query->orderByDesc('id'); if ($no_page) { $list = $query->get(); } else { $list = $query->paginate(); } foreach ($list as $item) { $item->img = json_decode($item->img); $item->notice_img = json_decode($item->notice_img); $item->rights_img = json_decode($item->rights_img); $item->introduce_rights = json_decode($item->introduce_rights, true); $item->agency_info = null; if (empty($item->quotaInfo)) { continue; } $item->agency_info = Agency::where('id', $item->quotaInfo->agency_id)->first(); $item->collaborator_info = Collaborator::where('id', $item->quotaInfo->collaborator_id)->first(); } if ($is_export) { return Excel::download(new AgreementExport($list), '协议.xlsx'); } return $this->success('ok', $list); } catch (\Exception $e) { Log::error('getAgreement:' . $e->getMessage()); return $this->failure($e->getMessage()); } } public function updateAgreement(Request $request, $id) { DB::beginTransaction(); try { $data = $request->only(['number', 'sign_date', 'material_type', 'sign_id', 'introduce_id', 'introduce_rights', 'quota_id', 'is_receive', 'is_notice', 'notice_img', 'rights_img', 'img']); $detail = Agreement::findOrFail($id); $remark = "修改了订单协议:"; if (isset($data['is_notice']) && $data['is_notice']) { $remark .= "标记通知书."; } if (isset($data['is_receive']) && $data['is_receive']) { $remark .= "标记权益已领取."; } if (isset($data['img']) && !empty($data['img'])) { $remark .= "添加扫描文件."; } $admin = auth()->user(); AgreementLog::addAgreementLog($admin, $detail->order_id, $id, $remark); //查看名额是否修改 if (!empty($data['quota_id']) && ($data['quota_id'] != $detail->quota_id)) { $old_quota = Quota::find($detail->quota_id); $old_quota->num = $old_quota->num + Quota::USE_NUM; $old_quota->save(); QuotaLog::addQuotaLog($admin, $detail->order_id, Quota::USE_NUM, $old_quota->id); $new_quota = Quota::find($data['quota_id']); if ($new_quota->num < 0) { return $this->failure('名额不足'); } $new_quota->num = $new_quota->num + Quota::USE_NUM; $new_quota->save(); QuotaLog::addQuotaLog($admin, $detail->order_id, Quota::USE_NUM, $new_quota->id); AgreementLog::addAgreementLog($admin, $detail->order_id, $id, '修改订单协议名额:旧名额id为:' . $old_quota->id . '|新的名额id为:' . $new_quota->id); } $detail->update($data); DB::commit(); return $this->success('ok'); } catch (\Exception $e) { DB::rollBack(); Log::error('updateAgreement:' . $e->getMessage()); return $this->failure($e->getMessage()); } } public function getAgreementDetail($id, Agreement $agreement) { try { $detail = $agreement->with('signInfo', 'introduceInfo', 'orderInfo')->find($id); $detail->img = json_decode($detail->img); $detail->notice_img = json_decode($detail->notice_img); $detail->rights_img = json_decode($detail->rights_img); $detail->introduce_rights = json_decode($detail->introduce_rights); $detail->quota_info = Quota::with('agencyInfo')->where('id', $detail->quota_id)->first(); return $this->success('ok', $detail); } catch (\Exception $e) { Log::error('getAgreementDetail:' . $e->getMessage()); return $this->failure($e->getMessage()); } } public function getAgreementLog(Request $request, $id, AgreementLog $agreementLog) { try { $is_export = $request->get('is_export'); $query = $agreementLog::query()->with('agreement')->where('agreement_id', $id); $query->orderByDesc('id'); if ($is_export) { $list = $query->get(); } else { $list = $query->paginate(); } if ($is_export) { return Excel::download(new AgreementLogExport($list), '协议操作记录.xlsx'); } return $this->success('ok', $list); } catch (\Exception $e) { Log::error('getAgreementLog:' . $e->getMessage()); return $this->failure($e->getMessage()); } } public function getStepApply(Request $request) { try { $keyword = $request->get('keyword'); $status = $request->get('status'); $is_export = $request->get('is_export'); $query = UserStepApply::query()->with(['user']); $query->when(strlen($status) > 0, function ($query) use ($status) { $query->where('status', $status); }); $query->whereHas('user', function ($query) use ($keyword) { $query->where('name', 'like', '%' . $keyword . '%'); }); if ($is_export) { $list = $query->get(); return Excel::download(new StepApplyExport($list), '订单.xlsx'); } else { $list = $query->paginate(); } return $this->success('ok', $list); } catch (\Exception $e) { AddErrorLog::dispatch('getStepApply file:' . $e->getFile() . ' line:' . $e->getLine() . ' message:' . $e->getMessage())->onQueue('health'); return $this->failure('获取失败'); } } public function updateStepApplyStatus(Request $request, $id) { try { $detail = UserStepApply::findOrFail($id); if ($request->has('status')) { $detail->status = $request->input('status'); } if ($request->has('reason')) { $detail->reason = $request->input('reason'); } $detail->save(); return $this->success('ok'); } catch (\Exception $e) { AddErrorLog::dispatch('updateStepApplyStatus file:' . $e->getFile() . ' line:' . $e->getLine() . ' message:' . $e->getMessage())->onQueue('health'); return $this->failure('更新失败'); } } public function getOrderStatList(Request $request) { try { $type = $request->get('type'); $keyword = $request->get('keyword'); $query = Order::query(); $is_export = $request->get('is_export'); if ($type == 0) { $query->where('pay_status', 'PAID'); } if ($type == 1) { $query->whereNotIn('id', function ($sql) { $sql->where('role_id', ServiceRole::MAIN_COACH)->select('order_id')->from('service_role_orders'); }); } if ($type == 2) { $query->whereNotIn('id', function ($sql) { $sql->where('role_id', ServiceRole::COACH)->select('order_id')->from('service_role_orders'); }); } if ($type == 3) { $query->whereNotIn('id', function ($sql) { $sql->where('role_id', ServiceRole::CUSTOMER)->select('order_id')->from('service_role_orders'); }); } if ($type == 4) { $query->leftJoin('users as u', 'u.id', '=', 'orders.user_id') ->where(function ($query) { $query->whereNull('u.id') ->orWhere(function ($query) { $query->whereNull('u.name') ->orWhereNull('u.birthday') ->orWhereNull('u.stature'); }); }); } $query->select('orders.*'); $query->when($keyword, function ($sql) use ($keyword) { $sql->where('name', 'like', '%' . $keyword . '%')->orWhere('mobile', 'like', '%' . $keyword . '%'); }); if ($is_export) { $list = $query->get(); return Excel::download(new OrderStatExport($list), '订单统计.xlsx'); } $list = $query->paginate(); return $this->success('ok', $list); } catch (\Exception $e) { AddErrorLog::dispatch('getOrderStatList file:' . $e->getFile() . ' line:' . $e->getLine() . ' message:' . $e->getMessage())->onQueue('health'); return $this->failure('获取失败'); } } public function getOrderMarkLog(Request $request, $id) { try { $keyword = $request->input('keyword'); $query = MarkOrderLog::query(); $query->when($keyword, function ($sql) use ($keyword) { $sql->where('operate_name', 'like', '%' . $keyword . '%')->orWhere('remark', 'like', '%' . $keyword . '%'); }); $query->where('order_id', $id); $log = $query->paginate(); return $this->success('ok', $log); } catch (\Exception $e) { AddErrorLog::dispatch('getOrderMarkLog file:' . $e->getFile() . ' line:' . $e->getLine() . ' message:' . $e->getMessage())->onQueue('health'); return $this->failure('获取失败'); } } /** * 获取图标数据 * @param Request $request * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Http\JsonResponse */ public function getFatKindsV1(Request $request) { $user_id = $request->input('user_id'); if (empty($user_id)) { return $this->failure('用户id不为空'); } $user = User::find($user_id); if (empty($user)) return $this->failure("用户不存在"); $fatService = new FatService(); $res = $fatService->getFatKinds($user); if (!$res['status']) { return $this->failure($res['msg']); } return $this->success('ok', $res['data'] ?? []); } /** * 获取图表统计 * @param Request $request * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Http\JsonResponse */ public function getFatStatV1(Request $request) { try { $user_id = $request->input('user_id'); if (empty($user_id)) { return $this->failure('用户id不为空'); } $name = $request->input('fat_name'); $start_date = $request->input('start_date'); $end_date = $request->input('end_date'); $user = User::find($user_id); if (empty($user)) return $this->failure("用户不存在"); $fatService = new FatService(); $res = $fatService->getFatStat($name, $start_date, $end_date, $user); if (!$res['status']) { return $this->failure($res['msg']); } return $this->success('ok', $res['data'] ?? []); } catch (\Exception $e) { AddErrorLog::dispatch('getFatStatV1:' . $e->getMessage())->onQueue('health'); return $this->failure('获取失败'); } } }