| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215 | <?phpnamespace 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);    }}
 |