messageRule = $messageRule; } /** * 内容列表 */ public function lists($request) { $perPage = isset($request['per_page']) ? $request['per_page'] : 20; $where = []; if(isset($request['title'])){ $where[] = ['title', 'like', "%{$request['title']}%"]; } if(isset($request['message_type'])){ $where[] = ['message_type', $request['message_type']]; } return $this->messageRule ->where($where) ->orderBy('id','desc') ->paginate($perPage); } /** * 创建消息规则 */ public function create($request) { $post_type = ''; if($request['message_show_type'] == 'post'){ //查看内容的类型 $post_type = $this->getPostType($request['activity_url']); if(!$post_type){ return Response::create([ 'message' => '请输入有效内容id', 'status_code' => 500 ]); } } $noticeGroups = explode(',', $request['notice_groups']); if(in_array(0, $noticeGroups)){ $noticeGroups = 0; } else { if(array_diff($noticeGroups, [1,2])){ return Response::create([ 'message' => '通知群体参数有误', 'status_code' => 500 ]); } $noticeGroups = implode(',', array_unique($noticeGroups)); } $data = [ 'title' => $request['title'], 'content' => isset($request['content']) && $request['message_type'] == 'system'? $request['content']:'', 'notice_groups' => $noticeGroups, 'message_type' => $request['message_type'], 'message_show_type' => isset($request['message_show_type']) && $request['message_type'] == 'star'? $request['message_show_type']:'', 'activity_url' => isset($request['activity_url']) && $request['message_type'] == 'star'? $request['activity_url']:'', 'post_type' => $post_type, 'cover' => $request['message_type'] == 'star'? $request['cover']:'', 'message_status' => 0, 'send_time' => isset($request['send_time']) && $request['send_time']? $request['send_time']:null, 'activity_time' => $request['activity_time']??'', 'sent_count' => 0, 'open_count' => 0 ]; DB::beginTransaction(); try{ $this->messageRule->create($data); DB::commit(); return Response::create(); }catch (QueryException $exception){ DB::rollBack(); Log::debug('创建消息规则:'.$exception->getMessage()); return Response::create([ 'message' => '添加失败,请重试', 'error' => $exception->getMessage(), 'status_code' => 500 ]); } } /** * 编辑消息规则 */ public function update($request) { $message = $this->messageRule->find($request['id']); if(!$message || $message->message_status != 0){ return Response::create([ 'message' => '只能编辑未发送消息', 'status_code' => 500 ]); } $noticeGroups = explode(',', $request['notice_groups']); if(in_array(0, $noticeGroups)){ $noticeGroups = 0; } else { if(array_diff($noticeGroups, [1,2])){ return Response::create([ 'message' => '通知群体参数有误', 'status_code' => 500 ]); } $noticeGroups = implode(',', array_unique($noticeGroups)); } $message->title = $request['title']; $message->notice_groups = $noticeGroups; $message->message_type = $request['message_type']; if(isset($request['cover'])){ $message->cover = $request['cover']; } if(isset($request['activity_url'])){ $message->activity_url = $request['activity_url']; } if(isset($request['message_show_type'])){ $message->message_show_type = $request['message_show_type']; } if(isset($request['content'])){ $message->content = $request['content']; } if(isset($request['send_time'])){ if($request['send_time']){ $message->send_time = $request['send_time']; }else{ $message->send_time = null; } } if(isset($request['activity_time'])){ $message->activity_time = $request['activity_time']; } DB::beginTransaction(); try{ $message->save(); DB::commit(); return Response::create(); }catch (QueryException $exception){ DB::rollBack(); Log::debug('编辑消息规则:'.$exception->getMessage()); return Response::create([ 'message' => '编辑失败,请重试', 'error' => $exception->getMessage(), 'status_code' => 500 ]); } } /** * 消息规则详情 */ public function detail($request) { return $this->messageRule->find($request['id']); } /** * 发送消息规则 */ public function send($request) { $message = $this->messageRule->find($request['id']); if(!$message || $message->message_status != 0){ return Response::create([ 'message' => '只能发送未发送消息', 'status_code' => 500 ]); } $message->send_time = Carbon::now()->toDateTimeString(); DB::beginTransaction(); try{ $message->save(); DB::commit(); return Response::create(); }catch (QueryException $exception){ DB::rollBack(); Log::debug('发送消息规则:'.$exception->getMessage()); return Response::create([ 'message' => '发送失败,请重试', 'error' => $exception->getMessage(), 'status_code' => 500 ]); } } /** * 隐藏消息规则 */ public function hide($request) { $message = $this->messageRule->find($request['id']); if(!$message || $message->message_status != 2){ return Response::create([ 'message' => '只能隐藏已发送消息', 'status_code' => 500 ]); } $message->message_status = 3; DB::beginTransaction(); try{ $message->save(); DB::commit(); return Response::create(); }catch (QueryException $exception){ DB::rollBack(); Log::debug('隐藏消息规则:'.$exception->getMessage()); return Response::create([ 'message' => '隐藏失败,请重试', 'error' => $exception->getMessage(), 'status_code' => 500 ]); } } /** * 更新消息规则 */ public function updateStatus($data) { Log::debug('更新消息规则收到数据:'.json_encode($data)); $message = $this->messageRule->find($data['id']); if(!$message || $message->message_status != 1){ Log::error('更新消息规则状态失败:'.$data['id']); return false; } $message->message_status = 2; $message->sent_count = $data['num']; DB::beginTransaction(); try{ $message->save(); DB::commit(); return true; }catch (QueryException $exception){ DB::rollBack(); Log::error('更新消息规则状态:'.$data['id'].$exception->getMessage()); return false; } } }