wechat_id, $params['friend_id']); if (is_bool($friend)) { return false; } // 添加 $todo = AiWechatTodo::create($params); self::$returnData = $todo->toArray(); return true; } catch (\Exception $e) { self::setError($e->getMessage()); return false; } } /** * @desc 删除 * @param array $params * @return bool */ public static function deleteTodo(array $params) { try { $todo = AiWechatTodo::where('id', $params['id'])->findOrEmpty(); if ($todo->isEmpty()) { self::setError('待办不存在'); return false; } // 获取微信 $wechat = self::wechatInfo($todo->wechat_id); if (is_bool($wechat)) { self::setError('待办不存在'); return false; } $todo->delete(); return true; } catch (\Exception $e) { self::setError($e->getMessage()); return false; } } /** * @desc 推送消息 * @param array $params * @return bool */ public static function pushMessageCron() { try{ // 获取所有代办 AiWechatTodo::where('todo_status', 0) ->order('id', 'asc') ->limit(10) ->select() ->each(function ($item) { // 验证时间 $time = strtotime($item->todo_time); if ($time > time()) { return true; } // 代办提醒, 自动完成即可 if($item->todo_type == 0){ $item->todo_status = 1; $item->save(); return true; } // 失败次数 $failNum = $item->retry_num; if ($failNum >= 3) { $item->todo_status = 2; $item->save(); return true; } // 获取设备 $deviceCode = AiWechat::where('wechat_id', $item->wechat_id)->value('device_code', ''); if (empty($deviceCode)) { $item->retry_num = 3; $item->fail_reason = '设备不存在'; $item->save(); return true; } sleep(10); try { // 推送消息 // $response = \app\common\service\ToolsService::Wechat()->push([ // 'wechat_id' => $item->wechat_id, // 'friend_id' => $item->friend_id, // 'message' => $item->todo_content, // 'device_code' => $deviceCode, // ]); $response = self::wxPush([ 'wechat_id' => $item->wechat_id, 'friend_id' => $item->friend_id, 'message' => $item->todo_content, 'device_code' => $deviceCode, 'opt_type' => 'todo' ]); if ($response['code'] == 10000) { $item->todo_status = 1; $item->fail_reason = ''; $item->save(); } else { $item->retry_num++; $item->fail_reason = $response['message']; $item->save(); } } catch (\think\exception\HttpResponseException $e) { $item->retry_num++; $item->fail_reason = $e->getResponse()->getData()['msg'] ?? '提交任务出错'; $item->save(); return true; } return true; }); return true; } catch (\Exception $e) { self::setError($e->getMessage()); return false; } } }