ajax()) { return view('admin/message/index'); } $pageSize = $request->input('pageSize') ?? 10; $messageList = Message::query()->whereNull('deleted_at')->paginate($pageSize); foreach ($messageList as $key => $value) { $messageList[$key]->messageType = Message::MESSAGE_TYPE[$value->type]; } return $this->ajaxListSuccess($messageList->items() ?? [], $messageList->total() ?? 0); } /** * 添加或修改 * @param Request $request * @param int $id * @return \\Illuminate\Contracts\View\Factory|\Illuminate\Http\JsonResponse|\Illuminate\View\View */ public function addOrUpdate(Request $request, $id = 0) { if (!empty($id)) { $messageInfo = Message::query()->where('id', $id)->first(); } if (!$request->ajax()) { return view('admin/message/add', [ 'messageInfo' => $messageInfo ?? [] ]); } $data = $request->all(); $rules = [ 'title' => 'required|max:255', 'message' => 'required|max:255', 'url' => 'required|max:255', 'img' => 'required|max:255', ]; $message = [ 'title.required' => '标题不能为空', 'message.required' => '内容不能为空', 'url.required' => '链接不能为空', 'img.required' => 'banner不能为空', ]; $validator = \Illuminate\Support\Facades\Validator::make($data, $rules, $message); if ($validator->fails()) { $msg = $validator->errors()->all(); return $this->error($msg[0]); } if (empty($id)) { $result = Message::query()->insert($data); } else { $result = Message::query()->where('id', $id)->update($data); } if (empty($result)) { return $this->error('服务器发生错误'); } return $this->success('操作成功'); } /** * 删除消息 * @param int $id * @return \\Illuminate\Http\JsonResponse */ public function delete($id = 0) { $result = Message::query()->where('id', $id)->update(['deleted_at' => date('Y-m-d H:i:s')]); if (empty($result)) { return $this->error('服务器发生错误'); } return $this->success('操作成功'); } /** * 消息推送 * @param Request $request * @param int $id * @return \\Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function push(Request $request, $id = 0) { if (!$request->ajax()) { $siteList = Site::query()->select('id', 'cn_title')->orderBy('cn_title', 'desc')->get(); return view('admin/message/push', [ 'id' => $id, 'siteList' => $siteList, ]); } $messageInfo = Message::query()->where('id', $id)->first(); if (empty($messageInfo)) { return $this->error('模版不存在'); } $siteIds = $request->input('siteIds') ?? 0; $siteList2 = Site::query()->whereIn('id', $siteIds)->get(); foreach ($siteList2 as $siteInfo) { if (in_array($messageInfo->type, [1, 2, 3, 4, 5])) { if ($messageInfo->type == 1) {//网站到期 $date = $siteInfo->expired_at; } if ($messageInfo->type == 2) {//证书到期 $date = $siteInfo->cert_expired_date; } if ($messageInfo->type == 3) {//cdn到期 $date = $siteInfo->cdn_expired_date; } if ($messageInfo->type == 4) {//域名到期 $date = $siteInfo->domain_expired_date; } if ($messageInfo->type == 5) {//服务期到期 $date = $siteInfo->renewal_end_at; } $message = str_replace('{$date}', $date ?? '本月', $messageInfo->message); $message = str_replace('{$website}', $siteInfo->domain, $message); } else { $userIdList = DB::table('user_has_sites')->where('site_id', $siteInfo->id)->pluck('user_id'); $userList = User::query()->whereIn('id', $userIdList)->get(); foreach ($userList as $key => $value) { if ($value->role_id == 7) { $user = $value->nickname; $mobile = $value->phone; break; } } $message = str_replace('{$user}', $user ?? '小擎', $messageInfo->message); $message = str_replace('{$mobile}', $mobile ?? '0571-86262059', $message); } $update = [ 'title' => $messageInfo->title, 'message' => $message, 'url' => $messageInfo->url, 'img' => $messageInfo->img, 'type' => $messageInfo->type, 'site_id' => $siteInfo->id, 'message_id' => $id, 'date' => strtotime(date('Y-m 00:00:00')), ]; MessageStatus::query()->insert($update); } return $this->success('操作成功'); } /** * 详情 * @param Request $request * @param $messageId * @return \\Illuminate\Contracts\View\Factory|\Illuminate\Http\JsonResponse|\Illuminate\View\View */ public function details(Request $request, $messageId) { if (!$request->ajax()) { return view('admin/message/details', [ 'messageId' => $messageId ]); } $keyword = $request->input('keyword') ?? ''; $pageSize = $request->input('pageSize') ?? 10; $messageStatus = MessageStatus::query(); if (!empty($keyword)) { $siteIds = Site::query()->where('cn_title', 'like', $keyword . '%')->pluck('id'); $messageStatus->whereIn('site_id', $siteIds); } $messageList = $messageStatus->where('message_id', $messageId)->paginate($pageSize); $siteList = Site::query()->pluck('cn_title', 'id')->toArray(); foreach ($messageList as $key => $value) { $messageList[$key]['site'] = $siteList[$value['site_id']]; $messageList[$key]->messageType = Message::MESSAGE_TYPE[$value->type]; $messageList[$key]['messageStatus'] = '待发送'; if ($value['status'] == 1) { $messageList[$key]['messageStatus'] = '成功'; } } return $this->ajaxListSuccess($messageList->items() ?? [], $messageList->total() ?? 0); } }