如何使用ChatGPT修改小程序代码 | 为小程序增加百度内容审核

作者:FancyPig | 发布时间: | 更新时间:

相关阅读

data-postsbox="{"id":30192,"title":"使用ChatGPT修改WPOSS插件代码 | 新增判断 支持GIF图片加载","author":"FancyPig","author_id":1,"cover_image":"https://static.pigsec.cn/wp-content/uploads/2023/01/20230111013651539.gif","cover_video":"","views":1520,"comment_count":11,"category":"project","is_forum_post":false}">{"id":30192,"title":"使用ChatGPT修改WPOSS插件代码 | 新增判断 支持GIF图片加载","author":"FancyPig","author_id":1,"cover_image":"https://static.pigsec.cn/wp-content/uploads/2023/01/20230111013651539.gif","cover_video":"","views":1520,"comment_count":11,"category":"project","is_forum_post":false}
data-postsbox="{"id":30130,"title":"使用ChatGPT写一个二次元动漫图片爬虫","author":"FancyPig","author_id":1,"cover_image":"https://static.pigsec.cn/wp-content/uploads/2023/01/20230110152749493.png","cover_video":"","views":1730,"comment_count":5,"category":"knowledge","is_forum_post":false}">{"id":30130,"title":"使用ChatGPT写一个二次元动漫图片爬虫","author":"FancyPig","author_id":1,"cover_image":"https://static.pigsec.cn/wp-content/uploads/2023/01/20230110152749493.png","cover_video":"","views":1730,"comment_count":5,"category":"knowledge","is_forum_post":false}
data-postsbox="{"id":31554,"title":"我用ChatGPT写了一个射击游戏 | ChatGPT玩法介绍","author":"FancyPig","author_id":1,"cover_image":"https://static.pigsec.cn/wp-content/uploads/2023/02/20230131163521695.png","cover_video":"https://v.pigsec.cn/I%20Made%20a%20Game%20with%20ChatGPT..._ts.m3u8","views":3824,"comment_count":5,"category":"knowledge","is_forum_post":false}">{"id":31554,"title":"我用ChatGPT写了一个射击游戏 | ChatGPT玩法介绍","author":"FancyPig","author_id":1,"cover_image":"https://static.pigsec.cn/wp-content/uploads/2023/02/20230131163521695.png","cover_video":"https://v.pigsec.cn/I%20Made%20a%20Game%20with%20ChatGPT..._ts.m3u8","views":3824,"comment_count":5,"category":"knowledge","is_forum_post":false}

杂谈

最近,热心网友让我帮忙看一看他的小程序

需求就是在发布内容之前加入一个百度审核的功能

我们将详细分享如何使用ChatGPT来修改代码,支持百度内容审核。

代码定位

要修改代码,首先我们应该定位到代码的位置,通常情况下,这里可以看到是发布动态触发的发布功能。

因此,我们可以尝试在vscode里搜索下关键词,如发布发帖

如果你不知道也可以去看下Nginx日志,可以看到请求接口,进一步定位

我们这里通过搜索就找到了相关代码的位置

可以找到相关代码

    //发布帖子
    public function addNewGoods(Request $request)
    {
        $param = $request->param();
 
        if ($request->loginInfo['status']==1)
        {
         return error(false,'你被禁言了');   
        }   
        //images tags_ids cate_id content 
  
        $site = xn_cfg('base');
        if (isset($site['add_goods_sh']) && $site['add_goods_sh'] == 1) {
            $param['is_sh'] = 1;
             $msg="发布成功";
        }else{
            $param['is_sh'] = 0;
                 $msg="发布成功,请等待审核";

        }
        



        $param['create_time'] = time();
        $param['tags_ids'] = ','.$param['tags_ids'].',';
        $param['user_id'] = $request->loginInfo['id'];
  
        $res = Db::name('goods')->strict(false)->insertGetId($param);
        if ($res) {
            Db::name('category')->where('id',$param['cate_id'])->inc('goods_num')->update();
            Db::name('tags')->where('id',$param['tags_ids'])->inc('goods_num')->update();
            //closedoig();
            addAfterLevel($request->loginInfo,'goods');//处理等级
            addAfterMedal($request->loginInfo,'goods');//处理勋章      
            return success([],$msg);
        }

        return error($res,'发布失败');
    }

百度内容审核API

之后,我们需要看下百度内容审核API文档,这里可以复制相关代码

<?php
class Sample {
    const API_KEY = "百度内容审核API_KEY";
    const SECRET_KEY = "百度内容审核SECRET_KEY";

    public function run() {
        $curl = curl_init();
        curl_setopt_array($curl, array(
            CURLOPT_URL => "https://aip.baidubce.com/rest/2.0/solution/v1/text_censor/v2/user_defined?access_token={$this->getAccessToken()}",
            CURLOPT_TIMEOUT => 30,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_CUSTOMREQUEST => 'POST',
            
            CURLOPT_POSTFIELDS => 'text=%E4%BD%A0%E5%A6%B9%E7%9A%84',
    
            CURLOPT_HTTPHEADER => array(
                'Content-Type: application/x-www-form-urlencoded',
                'Accept: application/json'
            ),

        ));
        $response = curl_exec($curl);
        curl_close($curl);
        return $response;
    }
    
    /**
     * 使用 AK,SK 生成鉴权签名(Access Token)
     * @return string 鉴权签名信息(Access Token)
     */
    private function getAccessToken(){
        $curl = curl_init();
        $postData = array(
            'grant_type' => 'client_credentials',
            'client_id' => self::API_KEY,
            'client_secret' => self::SECRET_KEY
        );
        curl_setopt_array($curl, array(
            CURLOPT_URL => 'https://aip.baidubce.com/oauth/2.0/token',
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_POSTFIELDS => http_build_query($postData)
        ));
        $response = curl_exec($curl);
        curl_close($curl);
        $rtn = json_decode($response);
        return $rtn->access_token;
    }
}

$rtn = (new Sample())->run();
print_r($rtn);

注意这里复制到的会将输入内容也携带上,后面我们需要将内容修改为发帖携带的变量内容

CURLOPT_POSTFIELDS => 'text=%E4%BD%A0%E5%A6%B9%E7%9A%84',

并且我们需要进行调试,看下成功应该返回什么,失败应该返回什么

我这里尝试输入一句话骂人的话你妹的,可以看到响应内容

{
    "conclusion": "不合规",
    "log_id": "16870111916138307",
    "data": [
        {
            "msg": "存在低俗辱骂不合规",
            "conclusion": "不合规",
            "hits": [
                {
                    "wordHitPositions": [],
                    "probability": 1,
                    "datasetName": "百度默认文本反作弊库",
                    "words": [],
                    "modelHitPositions": [
                        [
                            0,
                            2,
                            1
                        ]
                    ]
                }
            ],
            "subType": 5,
            "conclusionType": 2,
            "type": 12
        }
    ],
    "isHitMd5": false,
    "conclusionType": 2
}

再试下正常词的返回结果

如何让ChatGPT帮助我们修改代码

提供发布帖子代码,并提供百度内容审核API以及要修改的需求

请在下面的代码基础上修改,并增加百度内容审核API,先确定提交内容合规再发布,如果不合规则返回内容不合规
```
class User extends Base
{
    //发布帖子
    public function addNewGoods(Request $request)
    {
        $param = $request->param();
 
        if ($request->loginInfo['status']==1)
        {
         return error(false,'你被禁言了');   
        }   
        //images tags_ids cate_id content 
  
        $site = xn_cfg('base');
        if (isset($site['add_goods_sh']) && $site['add_goods_sh'] == 1) {
            $param['is_sh'] = 1;
             $msg="发布成功";
        }else{
            $param['is_sh'] = 0;
                 $msg="发布成功,请等待审核";

        }
        
        $param['create_time'] = time();
        $param['tags_ids'] = ','.$param['tags_ids'].',';
        $param['user_id'] = $request->loginInfo['id'];
  
        $res = Db::name('goods')->strict(false)->insertGetId($param);
        if ($res) {
            Db::name('category')->where('id',$param['cate_id'])->inc('goods_num')->update();
            Db::name('tags')->where('id',$param['tags_ids'])->inc('goods_num')->update();
            //closedoig();
            addAfterLevel($request->loginInfo,'goods');//处理等级
            addAfterMedal($request->loginInfo,'goods');//处理勋章      
            return success([],$msg);
        }

        return error($res,'发布失败');
    }

```
百度内容审核API接口如下
```
<?php
class Sample {
    const API_KEY = "751f1l****2kWpRA";
    const SECRET_KEY = "n3bBuB****CiwNLZ";

    public function run() {
        $curl = curl_init();
        curl_setopt_array($curl, array(
            CURLOPT_URL => "https://aip.baidubce.com/rest/2.0/solution/v1/text_censor/v2/user_defined?access_token={$this->getAccessToken()}",
            CURLOPT_TIMEOUT => 30,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_CUSTOMREQUEST => 'POST',
            
            
            CURLOPT_HTTPHEADER => array(
                'Content-Type: application/x-www-form-urlencoded',
                'Accept: application/json'
            ),

        ));
        $response = curl_exec($curl);
        curl_close($curl);
        return $response;
    }
    
    /**
     * 使用 AK,SK 生成鉴权签名(Access Token)
     * @return string 鉴权签名信息(Access Token)
     */
    private function getAccessToken(){
        $curl = curl_init();
        $postData = array(
            'grant_type' => 'client_credentials',
            'client_id' => self::API_KEY,
            'client_secret' => self::SECRET_KEY
        );
        curl_setopt_array($curl, array(
            CURLOPT_URL => 'https://aip.baidubce.com/oauth/2.0/token',
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_POSTFIELDS => http_build_query($postData)
        ));
        $response = curl_exec($curl);
        curl_close($curl);
        $rtn = json_decode($response);
        return $rtn->access_token;
    }
}

$rtn = (new Sample())->run();
print_r($rtn);
```
如果合规通常返回
```
{
	"log_id": 15556561295920002,
	"conclusion": "合规",
	"conclusionType": 1
}

或者

{
    "log_id": 15572142621780024,
    "conclusion": "合规",
    "conclusionType": 1,
    "data": [{
        "type": 14,
        "subType": 0,
        "conclusion": "合规",
        "conclusionType": 1,
        "msg": "自定义文本白名单审核通过",
        "hits": [{
            "datasetName": "SLK-测试-自定义文本白名单",
            "words": ["张三"]
        }]
    }]
}
```
如果不合规则返回
```
{
	"log_id": 15656780617612718,
	"conclusion": "不合规",
	"conclusionType": 2,
	"data": [{
		"type": 11,
		"subType": 0,
		"conclusion": "不合规",
		"conclusionType": 2,
		"msg": "存在百度官方默认违禁词库不合规",
		"hits": [{
			"datasetName": "百度默认黑词库",
			"words": ["免费翻墙"]
		}]
	}, {
		"type": 12,
		"subType": 2,
		"conclusion": "不合规",
		"conclusionType": 2,
		"msg": "存在文本色情不合规",
		"hits": [{
			"datasetName": "百度默认文本反作弊库",
			"probability": 1.0,
			"words": ["电话 找小姐"]
		}]
	}, {
		"type": 12,
		"subType": 3,
		"conclusion": "不合规",
		"conclusionType": 2,
		"msg": "存在文本色情不合规",
		"hits": [
                {
                   "modelHitPositions":[
                        [
                            0,
                            6,
                            0.9998
                        ]
                    ],
                    "wordHitPositions":[
                        {
                            "keyword":"找小姐",
                            "positions":[
                                [
                                    0,
                                    2
                                ]
                            ],
                            "label":"201102"
                        }
                    ],
                    "probability":"1.0",
                    "datasetName":"百度默认文本反作弊库",
                    "words":[
                        "找小姐"
                    ]
                }
            ]
	}, {
		"type": 12,
		"subType": 4,
		"conclusion": "不合规",
		"conclusionType": 2,
		"msg": "存在恶意推广不合规",
		"hits": [{
			"probability": 1.0,
			"datasetName": "百度默认文本反作弊库",
			"words": [""]
		}]
	}, {
		"type": 13,
		"subType": 0,
		"conclusion": "不合规",
		"conclusionType": 2,
		"msg": "存在自定义文本黑名单不合规",
		"hits": [{
			"datasetName": "SLK-测试-自定义黑名单",
			"words": ["我是你爹", "他妈的"]
		}]
	}]
}
```
如果失败响应则返回
```
{
    "log_id": 149319909347709, 
    "error_code": 0,
    "error_msg":"configId error"
}
```

下面是ChatGPT返回的

首先,我们需要将百度内容审核API的代码封装成一个方法,以便在发布帖子的代码中调用。为此,在`User`类中添加一个名为`contentReview`的方法,如下所示:

```php
private function contentReview($content)
{
    // 百度内容审核API代码
}
```

接下来,将提供的百度内容审核API代码复制到`contentReview`方法中,并修改`run`方法为以下内容:

```php
public function contentReview($content)
{
    // ...

    // 将 CURLOPT_POSTFIELDS 替换为以下内容
    CURLOPT_POSTFIELDS => http_build_query(array('text' => $content)),
}
```

接下来,在`addNewGoods`方法中,我们需要在发布帖子前调用`contentReview`方法检查内容是否合规。只有在内容合规的情况下,才进行进一步的发布操作。

```php
public function addNewGoods(Request $request)
{
    $param = $request->param();

    // ...

    // 在发布帖子前调用 contentReview 方法检查内容是否合规
    $reviewResult = $this->contentReview($param['content']);
    $reviewResult = json_decode($reviewResult, true);

    if ($reviewResult['conclusionType'] != 1) {
        return error(false, '内容不合规');
    }

    // ...
}
```

将上述修改后的代码应用到您的`User`类中,最终代码如下:

```php
class User extends Base
{
    //发布帖子
    public function addNewGoods(Request $request)
    {
        $param = $request->param();
 
        if ($request->loginInfo['status']==1)
        {
         return error(false,'你被禁言了');   
        }   

        // 在发布帖子前调用 contentReview 方法检查内容是否合规
        $reviewResult = $this->contentReview($param['content']);
        $reviewResult = json_decode($reviewResult, true);

        if ($reviewResult['conclusionType'] != 1) {
            return error(false, '内容不合规');
        }

        // ...

    }

    private function contentReview($content)
    {
        // 百度内容审核API代码
    }
}
```

现在,当调用`addNewGoods`方法发布帖子时,将首先检查帖子内容是否合规。如果内容合规,将继续发布;如果不合规,将返回错误信息“内容不合规”。

之后我们改完代码发现,点击发布按钮,什么效果都没有了,这时我们继续提问

目前并不会返回任何结果了,发布没有任何提示,也不会进入下一个页面,请继续修改代码

ChatGPT进行回复

抱歉,我之前的回答可能导致了一些问题。让我们通过以下步骤解决这个问题:

1. 将`contentReview`方法移动到`User`类外部,并将其改为`public`。
2. 在`User`类的`addNewGoods`方法中创建`ContentReview`类的实例并调用`contentReview`方法。

修改后的代码如下:

```php
class ContentReview
{
    const API_KEY = "751f1l****2kWpRA";
    const SECRET_KEY = "n3bBuB****CiwNLZ";

    public function contentReview($content)
    {
        // 百度内容审核API代码
    }

    // ...
}

class User extends Base
{
    //发布帖子
    public function addNewGoods(Request $request)
    {
        $param = $request->param();

        if ($request->loginInfo['status'] == 1) {
            return error(false, '你被禁言了');
        }

        // 在发布帖子前调用 contentReview 方法检查内容是否合规
        $contentReview = new ContentReview();
        $reviewResult = $contentReview->contentReview($param['content']);
        $reviewResult = json_decode($reviewResult, true);

        if ($reviewResult['conclusionType'] != 1) {
            return error(false, '内容不合规');
        }

        // ...
    }
}
```

请尝试使用此修改后的代码,并告诉我是否解决了问题。如果仍然有问题,请提供更多详细信息,以便我更好地了解您的问题。

我这里怀疑是自己复制代码的时候弄错了,因此让他输出完整的代码

请将ContentReview及百度内容审核API完整代码进行输出

ChatGPT继续输出

以下是将`ContentReview`类与百度内容审核API的完整代码集成在一起的示例:

```php
class ContentReview
{
    const API_KEY = "your_api_key";
    const SECRET_KEY = "your_secret_key";

    public function contentReview($content)
    {
        $url = 'https://aip.baidubce.com/rest/2.0/solution/v1/text_censor/v2/user_defined';
        
        $params = [
            'text' => $content,
        ];

        $response = $this->requestPost($url, $params, $this->getAccessToken());

        return $response;
    }

    private function getAccessToken()
    {
        $url = 'https://aip.baidubce.com/oauth/2.0/token';
        $params = [
            'grant_type' => 'client_credentials',
            'client_id' => self::API_KEY,
            'client_secret' => self::SECRET_KEY,
        ];

        $response = json_decode($this->requestPost($url, $params), true);

        return $response['access_token'];
    }

    private function requestPost($url = '', $params = [], $access_token = '')
    {
        $headers = [
            'Content-Type: application/x-www-form-urlencoded',
        ];

        if ($access_token) {
            array_push($headers, 'Authorization: Bearer ' . $access_token);
        }

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $response = curl_exec($ch);
        curl_close($ch);

        return $response;
    }
}
```

请将`your_api_key`和`your_secret_key`替换为您的百度API密钥和秘密密钥。现在,您可以在其他类中创建`ContentReview`类的实例,并使用`contentReview`方法对文本进行内容审核。

结果发现依旧点击发布没响应,这个时候,我想起来可以让ChatGPT添加一些调试信息,继续发送

能否输出一些调试内容,目前点击发布按钮一直在转,似乎并没有提交成功

ChatGPT的回复

当然可以。我们可以在`User`类的`addNewGoods`方法中添加一些调试信息以便更好地了解问题。在`addNewGoods`方法中添加`error_log`函数来记录关键步骤的调试信息。修改后的代码如下:

```php
class User extends Base
{
    //发布帖子
    public function addNewGoods(Request $request)
    {
        $param = $request->param();

        if ($request->loginInfo['status'] == 1) {
            return error(false, '你被禁言了');
        }

        // 在发布帖子前调用 contentReview 方法检查内容是否合规
        $contentReview = new ContentReview();
        $reviewResult = $contentReview->contentReview($param['content']);
        $reviewResult = json_decode($reviewResult, true);

        // 添加调试信息
        error_log("Review result: " . print_r($reviewResult, true));

        if ($reviewResult['conclusionType'] != 1) {
            return error(false, '内容不合规');
        }

        // 在此处添加发布帖子的代码
        // ...

        // 添加调试信息以确认帖子已发布
        error_log("帖子已发布");
    }
}
```

现在,当您点击发布按钮时,调试信息将被记录到PHP错误日志中。您可以查看错误日志以了解详细信息。如果您无法找到错误日志,请查看您的PHP配置以确定日志文件的位置。通常,错误日志文件可以在以下位置找到:

- Apache:`/var/log/apache2/error.log`
- Nginx:`/var/log/nginx/error.log`
- PHP-FPM:`/var/log/php-fpm.log`

请注意,这些文件路径可能因系统和配置而异。如果您仍然无法解决问题,请提供错误日志中的详细信息,以便我更好地了解您的问题。

添加之后,我去看了下Nginx日志,我感觉应该是请求接口的时候出现的问题

然后继续将上面的问题反馈给ChatGPT

报错日志为
```
2023/06/17 22:09:27 [error] 26893#0: *22924 FastCGI sent in stderr: "PHP message: Review result: Array
(
    [error_code] => 14
    [error_msg] => IAM Certification failed
)"
```
我重新检查了下百度内容安全审核API文档,代码如下
```
<?php
class Sample {
    const API_KEY = "751f1l****2kWpRA";
    const SECRET_KEY = "n3bBuB****CiwNLZ";

    public function run() {
        $curl = curl_init();
        curl_setopt_array($curl, array(
            CURLOPT_URL => "https://aip.baidubce.com/rest/2.0/solution/v1/text_censor/v2/user_defined?access_token={$this->getAccessToken()}",
            CURLOPT_TIMEOUT => 30,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_CUSTOMREQUEST => 'POST',
            
            CURLOPT_POSTFIELDS => 'text=123',
    
            CURLOPT_HTTPHEADER => array(
                'Content-Type: application/x-www-form-urlencoded',
                'Accept: application/json'
            ),

        ));
        $response = curl_exec($curl);
        curl_close($curl);
        return $response;
    }
    
    /**
     * 使用 AK,SK 生成鉴权签名(Access Token)
     * @return string 鉴权签名信息(Access Token)
     */
    private function getAccessToken(){
        $curl = curl_init();
        $postData = array(
            'grant_type' => 'client_credentials',
            'client_id' => self::API_KEY,
            'client_secret' => self::SECRET_KEY
        );
        curl_setopt_array($curl, array(
            CURLOPT_URL => 'https://aip.baidubce.com/oauth/2.0/token',
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_POSTFIELDS => http_build_query($postData)
        ));
        $response = curl_exec($curl);
        curl_close($curl);
        $rtn = json_decode($response);
        return $rtn->access_token;
    }
}

$rtn = (new Sample())->run();
print_r($rtn);
```
返回值如果合规为
```
{
    "conclusion": "合规",
    "log_id": "16870111024832167",
    "isHitMd5": false,
    "conclusionType": 1
}
```
如果失败则返回
```
{
    "conclusion": "不合规",
    "log_id": "16870111916138307",
    "data": [
        {
            "msg": "存在低俗辱骂不合规",
            "conclusion": "不合规",
            "hits": [
                {
                    "wordHitPositions": [],
                    "probability": 1,
                    "datasetName": "百度默认文本反作弊库",
                    "words": [],
                    "modelHitPositions": [
                        [
                            0,
                            2,
                            1
                        ]
                    ]
                }
            ],
            "subType": 5,
            "conclusionType": 2,
            "type": 12
        }
    ],
    "isHitMd5": false,
    "conclusionType": 2
}
```
请继续修改代码

这次ChatGPT的回复就解决了代码上的问题

根据您提供的错误日志和百度内容审核API代码示例,我发现问题可能在于`ContentReview`类中的`requestPost`方法。在您的示例代码中,仅在URL中传递了`access_token`,而不是在请求头中传递。让我们修改`ContentReview`类以应用这一变更。

```php
class ContentReview
{
    const API_KEY = "751f1l****2kWpRA";
    const SECRET_KEY = "n3bBuB****CiwNLZ";

    public function contentReview($content)
    {
        $url = 'https://aip.baidubce.com/rest/2.0/solution/v1/text_censor/v2/user_defined';
        $params = [
            'text' => $content,
        ];

        $accessToken = $this->getAccessToken();
        $url .= "?access_token={$accessToken}";

        $response = $this->requestPost($url, $params);

        return $response;
    }

    // ...
    
    private function requestPost($url = '', $params = [])
    {
        $headers = [
            'Content-Type: application/x-www-form-urlencoded',
            'Accept: application/json'
        ];

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $response = curl_exec($ch);
        curl_close($ch);

        return $response;
    }
}
```

现在`ContentReview`类应该正常工作。使用这个修改后的代码,您应该能够正常发布帖子并获取内容审核结果。如果您仍然遇到问题,请告诉我。

按照ChatGPT的上面代码修改之后可以看到已经生效了

修改后的部分核心代码

class ContentReview
{
    const API_KEY = "百度内容审核API_KEY";
    const SECRET_KEY = "百度内容审核SECRET_KEY";

    public function contentReview($content)
    {
        $url = 'https://aip.baidubce.com/rest/2.0/solution/v1/text_censor/v2/user_defined';
        $params = [
            'text' => $content,
        ];

        $accessToken = $this->getAccessToken();
        $url .= "?access_token={$accessToken}";

        $response = $this->requestPost($url, $params);

        return $response;
    }

    private function getAccessToken()
    {
        $url = 'https://aip.baidubce.com/oauth/2.0/token';
        $params = [
            'grant_type' => 'client_credentials',
            'client_id' => self::API_KEY,
            'client_secret' => self::SECRET_KEY,
        ];

        $response = json_decode($this->requestPost($url, $params), true);

        return $response['access_token'];
    }

    private function requestPost($url = '', $params = [])
    {
        $headers = [
            'Content-Type: application/x-www-form-urlencoded',
            'Accept: application/json'
        ];

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $response = curl_exec($ch);
        curl_close($ch);

        return $response;
    }
}


class User extends Base
{
    // public function __construct(Request $request)
    // {
    //     //如果有JWT则自动获取用户id
    //     $jwt = $request->header('token');
    //     if (!$jwt) {
    //         $jwt = $request->param['token'];
    //     }
    //     if ($jwt) {
    //         $jwtDecode         = Jwt::decode($jwt, Config::get('jwt.key'), ['HS256']);
    //         $request->userInfo = Db::name('user')->where('id', $jwtDecode->uid)->find();
    //         if (!empty($request->userInfo)) {
    //             $request->loginInfo = $request->userInfo;
    //             $request->userId    = $jwtDecode->uid;
    //         }
    //     }
    // }

    //发布帖子
    public function addNewGoods(Request $request)
    {
        $param = $request->param();
 
        if ($request->loginInfo['status']==1)
        {
         return error(false,'你被禁言了');   
        }   
        //images tags_ids cate_id content 
  
        // 在发布帖子前调用 contentReview 方法检查内容是否合规
        $contentReview = new ContentReview();
        $reviewResult = $contentReview->contentReview($param['content']);
        $reviewResult = json_decode($reviewResult, true);

        if ($reviewResult['conclusionType'] != 1) {
            return error(false, '内容不合规');
        }

        $site = xn_cfg('base');
        if (isset($site['add_goods_sh']) && $site['add_goods_sh'] == 1) {
            $param['is_sh'] = 1;
             $msg="发布成功";
        }else{
            $param['is_sh'] = 0;
                 $msg="发布成功,请等待审核";

        }
        



        $param['create_time'] = time();
        $param['tags_ids'] = ','.$param['tags_ids'].',';
        $param['user_id'] = $request->loginInfo['id'];
  
        $res = Db::name('goods')->strict(false)->insertGetId($param);
        if ($res) {
            Db::name('category')->where('id',$param['cate_id'])->inc('goods_num')->update();
            Db::name('tags')->where('id',$param['tags_ids'])->inc('goods_num')->update();
            //closedoig();
            addAfterLevel($request->loginInfo,'goods');//处理等级
            addAfterMedal($request->loginInfo,'goods');//处理勋章      
            return success([],$msg);
        }

        return error($res,'发布失败');
    }

总结

使用ChatGPT修改代码,是不是蛮有意思的,其实你只要描述清楚需求,描述好相关第三方接口的请求与响应,ChatGPT就可以帮你生成相关代码,融合第三方API能力。

标签:小程序, curl, param