Wang Chen 4 سال پیش
والد
کامیت
ac376118e2

+ 5 - 0
app/Consts/PushConst.php

@@ -22,6 +22,11 @@ class PushConst
     const TOPIC_ALL = 'all';
 
     /**
+     * 全量用户
+     */
+    const FILTER_ALL_USERS = 'all';
+
+    /**
      * 华为服务商
      */
     const PROVIDER_HW = 'huawei';

+ 4 - 3
app/Modules/Push/Models/QappPushTask.php

@@ -44,16 +44,17 @@ class QappPushTask extends Model
      * 更新主任务状态
      * @param        $id
      * @param        $status
-     * @param string $pushResult
+     * @param        $result
      * @return bool
      */
-    public static function updatePushTaskStatus($id, $status, string $pushResult = ''): bool
+    public static function updateMainTaskStatus($id, $status, $result = ''): bool
     {
         if (empty($id)) {
             return false;
         }
 
-        $data = ['status' => $status, 'push_result' => $pushResult, 'updated_at' => date('Y-m-d H:i:s')];
+        $pushResult = is_string($result) ? $result : json_encode(compact('result'), JSON_UNESCAPED_UNICODE);
+        $data       = ['status' => $status, 'push_result' => $pushResult, 'updated_at' => date('Y-m-d H:i:s')];
         return self::where('id', $id)->update($data);
     }
 

+ 18 - 0
app/Modules/Push/Models/QappPushTaskLogs.php

@@ -38,4 +38,22 @@ class QappPushTaskLogs extends Model
 
         return self::where($where)->update($data);
     }
+
+    /**
+     * 更新主任务状态
+     * @param        $id
+     * @param        $status
+     * @param        $result
+     * @return bool
+     */
+    public static function updateSubTaskStatus($id, $status, $result = ''): bool
+    {
+        if (empty($id)) {
+            return false;
+        }
+
+        $pushResult = is_string($result) ? $result : json_encode(compact('result'), JSON_UNESCAPED_UNICODE);
+        $data       = ['status' => $status, 'push_result' => $pushResult, 'updated_at' => date('Y-m-d H:i:s')];
+        return self::where('id', $id)->update($data);
+    }
 }

+ 11 - 21
app/Modules/Push/Services/PushService.php

@@ -118,7 +118,7 @@ class PushService
         $subTasks = QappPushTaskLogs::getPushTaskLogsByTaskId($taskId);
         if (!$subTasks) {
             // 更新主任务失败状态及原因
-            QappPushTask::updatePushTaskStatus($taskId, PushConst::STATUS_FAIL, '无有效子任务');
+            QappPushTask::updateMainTaskStatus($taskId, PushConst::STATUS_FAIL, '无有效子任务');
             return false;
         }
 
@@ -127,15 +127,15 @@ class PushService
         $pushApps   = QappPushApp::getPushAppByAppIds($pushAppIds);
         if (!$pushApps) {
             // 更新主任务失败状态及原因
-            QappPushTask::updatePushTaskStatus($taskId, PushConst::STATUS_FAIL, '无有效推送APP');
+            QappPushTask::updateMainTaskStatus($taskId, PushConst::STATUS_FAIL, '无有效推送APP');
             return false;
         }
 
         // 更新主任务状态为开始状态
-        QappPushTask::updatePushTaskStatus($taskId, PushConst::STATUS_DOING, '无有效推送APP');
+        QappPushTask::updateMainTaskStatus($taskId, PushConst::STATUS_DOING, '无有效推送APP');
 
-        // 判断是全量发送还是批量发送
-        if (getProp($pushTask, 'push_filter') === 'all') {
+        // 全量发送走标签,否则走批量
+        if (getProp($pushTask, 'push_filter') === PushConst::FILTER_ALL_USERS) {
             $result = self::pushMessageToAll($pushTask, $subTasks, $pushApps);
         } else {
             $result = self::pushMessageToUsers($pushTask, $subTasks, $pushApps);
@@ -143,7 +143,7 @@ class PushService
 
         // 更新主任务最终状态(成功/失败)
         $status = $result ? PushConst::STATUS_SUCCESS : PushConst::STATUS_FAIL;
-        QappPushTask::updatePushTaskStatus($taskId, $status);
+        QappPushTask::updateMainTaskStatus($taskId, $status, $result);
 
         return $result;
     }
@@ -186,10 +186,7 @@ class PushService
             $topic        = PushConst::TOPIC_ALL;
 
             // 更新开始状态
-            QappPushTaskLogs::updateData(['id' => $subTaskId], [
-                'status'     => PushConst::STATUS_DOING,
-                'updated_at' => date('Y-m-d H:i:s')
-            ]);
+            QappPushTaskLogs::updateSubTaskStatus($subTaskId, PushConst::STATUS_DOING);
 
             $result = [];
             try {
@@ -218,23 +215,16 @@ class PushService
                         break;
                 }
             } catch (Exception $e) {
+                // 最终结果
                 $pushResult = 0 && $pushResult;
 
                 // 更新子任务失败状态
-                QappPushTaskLogs::updateData(['id' => $subTaskId], [
-                    'status'      => PushConst::STATUS_FAIL,
-                    'push_result' => json_encode($result, JSON_UNESCAPED_UNICODE),
-                    'updated_at'  => date('Y-m-d H:i:s')
-                ]);
+                QappPushTaskLogs::updateSubTaskStatus($subTaskId, PushConst::STATUS_FAIL, $result);
                 continue;
             }
 
             // 更新成功状态
-            QappPushTaskLogs::updateData(['id' => $subTaskId], [
-                'status'      => PushConst::STATUS_SUCCESS,
-                'push_result' => json_encode($result, JSON_UNESCAPED_UNICODE),
-                'updated_at'  => date('Y-m-d H:i:s')
-            ]);
+            QappPushTaskLogs::updateSubTaskStatus($subTaskId, PushConst::STATUS_SUCCESS, $result);
         }
 
         return $pushResult;
@@ -254,7 +244,7 @@ class PushService
         $taskUsers = QappPushTaskUsers::getTaskUsers($taskId);
         if (!$taskUsers) {
             // 更新主任务失败状态及原因
-            QappPushTask::updatePushTaskStatus($taskId, PushConst::STATUS_FAIL, '未设置推送用户');
+            QappPushTask::updateMainTaskStatus($taskId, PushConst::STATUS_FAIL, '未设置推送用户');
             return false;
         }