noticeRule = $noticeRule; } /** * 通知列表 */ 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['notice_type'])){ $where[] = ['notice_type', $request['notice_type']]; } return $this->noticeRule ->where($where) ->orderBy('id','desc') ->paginate($perPage); } /** * 创建消息规则 */ public function create($request) { $noticeUsers = []; $post_type = ''; if($request['notice_user_type'] == 1){ if(!(isset($request['attribute']) && $request['attribute']) && !(isset($request['category']) && $request['category'])){ return Response::create([ 'message' => '请选择属性或分类', 'status_code' => 500 ]); } if(isset($request['attribute']) && $request['attribute']){ $noticeUsers['attribute'] = $request['attribute']; } if(isset($request['category']) && $request['category']){ $noticeUsers['category'] = array_unique($request['category']); } }elseif($request['notice_user_type'] == 2){ if(!(isset($request['uids']) && $request['uids'])){ return Response::create([ 'message' => '请输入用户uid', 'status_code' => 500 ]); } $uids = $noticeGroups = explode('、', $request['uids']); $noticeUsers['uids'] = array_unique($uids); } if(isset($request['action_type']) && $request['action_type'] == 'post'){ //查看内容的类型 $post_type = $this->getPostType($request['action_id']); if(!$post_type){ return Response::create([ 'message' => '请输入有效内容id', 'status_code' => 500 ]); } } $data = [ 'notice_type' => $request['notice_type'], 'title' => $request['title'], 'content' => $request['content'], 'notice_user_type' => $request['notice_user_type'], 'notice_users' => json_encode($noticeUsers), 'action_type' => $request['action_type']??'', 'action_id' => $request['action_id']??0, 'post_type' => $post_type, 'cover' => $request['cover']??'', 'notice_status' => 0, 'send_time' => isset($request['send_time']) && $request['send_time']? $request['send_time']:null, 'send_count' => 0, ]; DB::beginTransaction(); try{ $this->noticeRule->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; } } }