Ver código fonte

编辑消息规则

wzq 5 anos atrás
pai
commit
49e7d4aec9

+ 22 - 0
app/Http/Controllers/MessageRuleController.php

@@ -76,4 +76,26 @@ class MessageRuleController extends Controller
         }
         return  $this->messageRuleRepository->create($request->all());
     }
+
+    /**
+     * 编辑消息规则
+     */
+    public function update(Request $request)
+    {
+        $validator = Validator::make($request->all(), [
+            'id' => 'required|exists:message_rule',
+            'title' => 'required|string|max:20',
+            'notice_groups' => 'required|string|max:31',
+            'message_type' => ['required',Rule::in('star', 'system')],
+            'show_type' => ['required',Rule::in('only_show', 'user', 'post', 'activity', 'topic')],
+            'activity_url' => 'required_unless:show_type,only_show|string|max:64',
+            'cover' => 'required|url',
+            'send_time' => 'nullable|date',
+            'activity_time' => 'nullable|string|max:24',
+        ]);
+        if ($validator->fails()) {
+            return $this->response->error($validator->errors()->first(), 500);
+        }
+        return  $this->messageRuleRepository->update($request->all());
+    }
 }

+ 64 - 0
app/Repositories/MessageRuleRepository.php

@@ -94,4 +94,68 @@ class MessageRuleRepository
             ]);
         }
     }
+
+    /**
+     * 编辑消息规则
+     */
+    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'];
+        $message->cover = $request['cover'];
+
+        if($request['activity_url']){
+            $message->notice_groups = $request['activity_url'];
+        }
+        if(isset($request['send_time'])){
+            if($request['send_time']){
+                $message->send_time = $request['send_time'];
+            }else{
+                $message->send_time = null;
+            }
+
+        }
+        if($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
+            ]);
+        }
+    }
 }

+ 2 - 0
routes/api.php

@@ -60,6 +60,8 @@ $api->version('v1', [
         $api->get('message', 'MessageRuleController@index');
         //创建消息规则
         $api->post('message', 'MessageRuleController@create');
+        //编辑消息规则
+        $api->put('message', 'MessageRuleController@update');
 
     });
     //配置文件