123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215 |
- <?php
- namespace App\Http\Controllers\Admin;
- use App\Http\Controllers\Controller;
- use App\Http\Models\Message;
- use App\Http\Models\MessageStatus;
- use App\Http\Models\Site;
- use App\Http\Models\User;
- use App\Http\Services\YouMenGApiService;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Validation\Validator;
- /**
- * 项目管理下的详情的工作任务
- * Class WorkTaskController
- * @package App\Http\Controllers\Admin
- */
- class MessageController extends Controller
- {
- /**
- * 主页
- * @param Request $request
- * @return \\Illuminate\Contracts\View\Factory|\Illuminate\Http\JsonResponse|\Illuminate\View\View
- */
- public function index(Request $request)
- {
- if (!$request->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);
- }
- }
|