ChatGPT工作提效之小鹅通二次开发批量API对接解决方案(学习记录同步、用户注册同步、权益订购同步、开发文档)

news/2024/11/23 23:36:07/

ChatGPT工作提效系列

  1. ChatGPT工作提效之初探路径独孤九剑遇强则强
  2. ChatGPT工作提效之在程序开发中的巧劲和指令(创建MySQL语句、PHP语句、Javascript用法、python的交互)
  3. ChatGPT工作提效之生成开发需求和报价单并转为Excel格式

ChatGPT工作提效之小鹅通二次开发批量API对接解决方案

  • ChatGPT工作提效系列
  • 一、项目需求
    • 1.chatGPT:使用php分批分时输出的代码
    • 2.chatGPT使用javascript分批分时输出的代码
  • 二、批量修复API接口
    • 1.修复单位不存在API
    • 2.修复单位depart_id不存在
    • 3.批量更新登录权限
  • 三、开发中遇见的问题
    • 1.查询字段为空的sql语句
    • 2.设置登录cookie永不过期
    • 3.实现短信验证码的代码是什么

ChatGPT是一种实时对话生成模型,能够帮助用户快速地回答问题、提供信息,并且能够流畅地进行对话,准确理解用户的意图,并作出相应的回应。

ChatGPT模型的优点在于其生成文本的自然度和连贯度都非常好,不会出现明显的逻辑错误和语法错误。此外,ChatGPT的训练数据集丰富多样,能够应对大部分的问题场景。由于使用预训练模型,可以快速定制成各种应用场景的问答模型,能够大幅提升开发效率。不过,ChatGPT也存在一些缺点。由于其是基于预训练模型的生成模型,无法像传统的规则引擎一样对自己的回答逻辑处理进行调整,因此产生了一些无意义的回答或者矛盾的回答。

近期,在小鹅通的项目实战开发过程中,增加了“面向ChatGPT开发”的使用频率。现就有关过程记录如下:

在这里插入图片描述

一、项目需求

调用小鹅通API接口获取指定资源学习记录信息,xe.user.leaning_record_by_resource.get/1.0.0。
请求方式及url

  • 请求方式:POST
  • 请求头:Content-Type:application/json
  • 接口地址:https://api.xiaoe-tech.com/xe.user.leaning_record_by_resource.get/1.0.0
  • 频率限制:10秒3000次
  • 备注:数据是准实时的,4~5分钟延迟
  • user_id数组,请求数量上限,请求参数如图:
    在这里插入图片描述
    目前需要在小鹅通上述API条件的限制做,批量获取用户指定资源的学习记录。在php中是完善的延迟进程的算法的,很容易API超限或请求频繁导致token失效。
    如何实现队列更新呢?

1.chatGPT:使用php分批分时输出的代码

php写一下一个100长度的数组,分批分时输出的代码

<?php// 创建一个100长度的数组
$array = range(1, 100);// 每批输出的长度
$batch_size = 10;// 循环输出数组内容
for ($i = 0; $i < count($array); $i += $batch_size) {echo "批次 " . ($i / $batch_size + 1) . "\n";echo implode(", ", array_slice($array, $i, $batch_size)) . "\n";sleep(1); // 暂停1秒,以模拟分时输出
}?>

sleep(1)

2.chatGPT使用javascript分批分时输出的代码

在javascript中实现一个100长度的数组,分批分时输出的代码怎么写

 var arr = Array(100).fill(null).map((_, i) => i + 1); // 创建长度为100的数组function outputArrayInBatch(arr, batchNum, interval) {var startIndex = batchNum * interval; // 当前批次的起始索引var endIndex = (batchNum + 1) * interval; // 当前批次的结束索引if (startIndex > arr.length - 1) {return; // 当所有元素都输出完毕后,退出递归}if (endIndex > arr.length) {endIndex = arr.length; // 当结束索引超过数组长度时,将结束索引设置为数组的最后一个元素的索引}var batchArr = arr.slice(startIndex, endIndex); // 当前批次需要输出的元素数组//对批次数组进行遍历操作;console.log(batchArr); // 输出当前批次的元素setTimeout(function () {outputArrayInBatch(arr, batchNum + 1, interval); // 递归调用下一批次的输出}, 2000); // 每隔1秒输出一批次}// 执行输出outputArrayInBatch(arr, 0, 10); // 一次输出10个元素,共分10批输出

代码中首先创建了长度为100的数组。outputArrayInBatch()函数接收三个参数:待输出的数组、当前批次数、每批次需要输出的元素个数。在函数中,首先根据批次数和输出元素个数计算当前需要输出的元素数组;然后输出当前批次的元素,并通过setTimeout()函数递归调用函数,输出下一批次的元素。

这里输出的是每隔1秒输出一批次的元素,可以根据具体需求调整输出时间间隔。
在这里插入图片描述

二、批量修复API接口

1.修复单位不存在API

public function upDepart(){global $db, $res;dbc();@$user_phone = get_param('user_phone');if ($user_phone == "") {die("参数错误");}//读取单位认证$row = $db->fetch('depart_audit', '*', array('user_phone' => $user_phone), ' audit_id DESC');//获取单位ID$row_depart = $db->fetch('depart', 'depart_id', array('depart_name' => $row['depart_name']), ' depart_id DESC');if ($row_depart['depart_id'] == "") {die("单位不存在或未验证");}//更新单位库$user_roles = 1;//单位管理员权限;$user_menu = 0;//可操作$user_auth = 1;//已审$db->insert('admin', array('user_phone' => $user_phone, 'user_name' => $row['user_name'], 'user_pwd' => $row['user_pwd'], 'user_mail' => $row['user_mail'], 'depart_id' => $row_depart['depart_id'], 'user_depart' => $row['depart_name'],'user_branch' => $row['user_branch'], 'user_titles' => $row['user_titles'], 'user_province' => $row['province'], 'user_city' => $row['city'], 'user_area' => $row['area'],'user_roles' => $user_roles, 'user_menu' => $user_menu, 'user_auth' => $user_auth));$res["data"] = $user_phone . "-更新成功";die(json_encode_lockdata($res));}

2.修复单位depart_id不存在

public function upDeID(){global $db, $res;dbc();//读取管理员信息$sql = "select depart_id,user_depart FROM " . $db->table('admin') . " WHERE depart_id IS NULL";$sql .= " ORDER BY user_id DESC";$row = $db->queryall($sql);for ($i = 0; $i < count($row); $i++) {// echo $row[$i]['user_depart'] . '<br>';//获取单位ID$row_depart = $db->fetch('depart', 'depart_id,depart_name', array('depart_name' => $row[$i]['user_depart']), ' depart_id DESC');if ($row_depart) {$db->update('admin', array('depart_id' => $row_depart['depart_id']), array('user_depart' => $row[$i]['user_depart']));}}$res["data"] = "更新成功";die(json_encode_lockdata($res));}

3.批量更新登录权限

public function upAuth(){global $db, $res;dbc();$db->update('user', array('user_auth' => 1), array('user_auth' => 0));$res["data"] = "更新成功";die(json_encode_lockdata($res));}

三、开发中遇见的问题

1.查询字段为空的sql语句

mysql筛选某字段未空的查询语句怎么写

在MySQL中,筛选某字段未空的查询语句可以使用 IS NOT NULL 来表示。例如,假设有一个表名为 my_table,其中包含 field1 字段,要查找 field1 字段不为空的数据,可以使用以下 SQL 查询语句:

SELECT * FROM my_table WHERE field1 IS NOT NULL;

其中 SELECT * 表示选择所有列,FROM my_table 表示从 my_table 表中查询数据,WHERE field1 IS NOT NULL 表示筛选 field1 字段不为空的数据。

如果要筛选出某个字段值为空的数据,可以使用 IS NULL 来表示,例如:

SELECT * FROM my_table WHERE field1 IS NULL;

这条 SQL 查询语句将会返回 field1 字段为空的记录所有数据,其他字段可能为空或者有值。

而在实际的开发过程中,在写查询字段为空的sql语句中时,用了is null查表中user_eid为空的记录,结果是没有结果。其原因在于,只有是显示(null)的字段才是真正的空值,如果之前为该字段赋值之后删除值框里什么都没有应该是下面的写法:user_eid = ''

    public function getEid(){checkAdminAuth($_COOKIE['admin_roles'], '0', 1);//超管权限global $db, $res;dbc();//读取管理员信息$sql = "select user_eid,user_name,user_phone FROM " . $db->table('user') . " WHERE user_eid = ''";$sql .= " ORDER BY user_id DESC";// LIMIT 100$row = $db->queryall($sql);$res["data"] = $row;die(json_encode_lockdata($res));}

2.设置登录cookie永不过期

php如何设置登录cookie永不过期

要设置PHP登录cookie永不过期,可以指定一个很大的过期时间,如设置为2038年1月19日,这是PHP可以处理的最大日期。

可以使用setcookie()函数设置cookie,具体示例如下:

$cookie_name = "user";
$cookie_value = "John Doe";
$expiry_date = strtotime('2038-01-19');
setcookie($cookie_name, $cookie_value, $expiry_date, "/");

在上面的示例中,$expiry_date变量设置为2038年1月19日的时间戳,该时间戳将在setcookie()函数中设置为cookie的过期时间。在本例中,cookie的路径设置为“/”,这表示cookie与服务器上所有页面都关联,而不是仅与当前页面关联。

这样设置后,用户的登录cookie将被永久保存,直到浏览器将其删除或达到在服务器上规定的最长持续时间为止。

3.实现短信验证码的代码是什么

除了Redis外,还有很多其他的方式实现短信验证码的流控。下面是一个基于文件系统的示例代码:

<?php// 定义短信验证码保存目录
define('SMS_DIR', '/path/to/sms/dir/');// 获取客户端IP地址
$ip = $_SERVER['REMOTE_ADDR'];// 获取手机号码
$phone = 'your_phone_number';// 定义文件名规则
$filename = md5($ip . $phone) . '.json';// 检查文件是否存在
if (file_exists(SMS_DIR . $filename)) {// 如果文件存在,则读取文件内容$content = file_get_contents(SMS_DIR . $filename);// 解析JSON内容$data = json_decode($content, true);// 如果超过发送次数限制,则提示用户并退出if ($data['count'] >= 5 && time() - $data['timestamp'] < 300) {echo "发送频率过快,请稍后再试。";exit;} else {// 如果可以发送,则将发送次数加1,并更新时间戳$data['count']++;$data['timestamp'] = time();}
} else {// 如果文件不存在,则创建新文件并写入初始内容$data = ['count' => 1,'timestamp' => time()];$content = json_encode($data);file_put_contents(SMS_DIR . $filename, $content);
}// 发送短信验证码?>

在上述代码中,将短信验证码的发送次数保存在一个JSON文件中,与客户端IP地址和手机号码相关联。代码中使用md5值来生成文件名,文件内容为JSON格式的字符串,包含发送次数和最后发送时间戳两个字段。

在发送短信验证码时,先根据请求参数生成文件名,然后检查是否存在对应的文件。如果文件存在,则读取文件内容,检查发送次数和时间戳是否超过限制。如果可以发送,则将发送次数加1,并将更新后的内容写回文件;如果发送次数已经达到限制,则提示用户稍后再试。如果文件不存在,则创建新文件,并写入初始的发送次数和时间戳。

基于文件系统的方式性能略低于Redis或其他内存型数据库,同时也更容易受到并发访问的影响。因此,建议在高并发场景下使用更为高效的Redis等缓存服务器。


@漏刻有时


http://www.ppmy.cn/news/82646.html

相关文章

做什么类型的抖音自媒体账号赚钱?

其实有两类账号&#xff0c;大周认为是比较赚钱的&#xff1a; 1、种草类账号 2、测评类账号 但并不是所有人都适合做这种账号赚钱&#xff0c;那还有哪些领域可以选择呢&#xff1f; 今天这期内容大周就来给粉丝们分享一波&#xff0c;抓紧点赞收藏 首先问自己几个问题&a…

使用Vue完成一个户籍管理系统

js <template> <div> <h2>学籍管理系统</h2> <div> 姓名&#xff1a; <input v-model"user.name" /> </div> <div> 年龄&#xff1a; <input v-model"user.age" /> </div> <div> 性别…

effective c++ 53-不要忽略编译器的警告

effective c 53-不要忽略编译器的警告 这一节所讲解的道理是很简单的&#xff0c;主要就是告诉大家要利用好编译器给出的warning信息&#xff0c;不要轻易忽视。但是在日常开发中&#xff0c;很多人都对warnging的警告不太重视。在编程方法中的很多优化方法都是将运行态的错误…

从传统 IT 容灾转向“全栈云容灾”|什么是更适合政企的云

凌晨 3 点&#xff0c;在某医院的自助缴费机前&#xff0c;一位医患家属正愁眉紧锁&#xff0c;手中的医保卡已经刷了无数遍&#xff0c;可次次都提示缴费失败&#xff0c;至亲的手术已经迫在眉睫… 早上 8 点&#xff0c;是上班族在通勤途中打开新闻 app 刷新闻的高峰&#x…

链式二叉树OJ题思路分享

⏩博主CSDN主页:杭电码农-NEO⏩   ⏩专栏分类:刷题分享⏪   ⏩代码仓库:NEO的学习日记⏩   &#x1f339;关注我&#x1faf5;带你刷更多C语言和数据结构的题!   &#x1f51d;&#x1f51d; 链式二叉树OJ题分享 1. 前言&#x1f6a9;2. 单值二叉树&#x1f6a9;2.1 审题…

【JavaSE】Java基础语法(八)

文章目录 &#x1f353;1. 类和对象&#x1f379;&#x1f379;1.1 类和对象的关系&#x1f379;&#x1f379;1.2 类的定义 &#x1f353;2. 对象内存图&#x1f379;&#x1f379;2.1 单个对象内存图&#x1f379;&#x1f379;2.2 多个对象内存图2.3 多个对象指向相同内存图…

常见淘宝API文档接口使用攻略,一文搞定

探索淘宝数据的奥秘&#xff0c;淘宝是目前国内最大的B2C电商平台之一&#xff0c;每天都会产生海量的数据。借助淘宝API技术文档&#xff0c;我们可以轻松地获取到这些数据&#xff0c;从而为电商运营和数据分析提供有力支持。 1.什么是淘宝API&#xff1f; 淘宝API&#xf…

C++编译和链接

目录 一、源代码的组织 ①头文件&#xff08;*.h&#xff09; ②源文件&#xff08;*.cpp&#xff09; ③主程序&#xff08;main函数所在的程序&#xff09; ④从源代码到可执行文件&#xff0c;编译的过程有三大步骤&#xff1a; 1&#xff09;编译预处理 2&#xff09…