当前位置: 首页 > news >正文

腾讯云使用

注:本文的所有演示的代码都基于尚硅谷的尚乐代驾项目

对象存储COS

一种云存储器

官方文档:

对象存储 快速入门-SDK 文档-文档中心-腾讯云 (tencent.com)

一  上传文件

1  初始化客户端

官方示例:

// 1 传入获取到的临时密钥 (tmpSecretId, tmpSecretKey, sessionToken)
String tmpSecretId = "SECRETID";
String tmpSecretKey = "SECRETKEY";
String sessionToken = "TOKEN";
BasicSessionCredentials cred = new BasicSessionCredentials(tmpSecretId, tmpSecretKey, sessionToken);
// 2 设置 bucket 的地域
// clientConfig 中包含了设置 region, https(默认 http), 超时, 代理等 set 方法, 使用可参见源码或者常见问题 Java SDK 部分
Region region = new Region("COS_REGION"); //COS_REGION 参数:配置成存储桶 bucket 的实际地域,例如 ap-beijing,更多 COS 地域的简称请参见 https://cloud.tencent.com/document/product/436/6224
ClientConfig clientConfig = new ClientConfig(region);
// 3 生成 cos 客户端
COSClient cosClient = new COSClient(cred, clientConfig);

自己实际用的。尚硅谷的乐尚代驾内的内容。这里面要自己定义一个配置类,将腾讯云存储的相关的属性写到yml文件中,然后用配置类读取。这里没用到token

// 1 初始化用户身份信息(secretId, secretKey)。String secretId = tencentCloudProperties.getSecretId();String secretKey = tencentCloudProperties.getSecretKey();COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);// 2 设置 bucket 的地域, COS 地域Region region = new Region(tencentCloudProperties.getRegion());ClientConfig clientConfig = new ClientConfig(region);// 这里建议设置使用 https 协议clientConfig.setHttpProtocol(HttpProtocol.https);// 3 生成 cos 客户端。COSClient cosClient = new COSClient(cred, clientConfig);

2  上传文件

官方示例:

// 指定要上传的文件
File localFile = new File(localFilePath);
// 指定文件将要存放的存储桶
String bucketName = "examplebucket-1250000000";
// 指定文件上传到 COS 上的路径,即对象键。例如对象键为 folder/picture.jpg,则表示将文件 picture.jpg 上传到 folder 路径下
String key = "folder/picture.jpg";
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, localFile);
PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest);

自己修改的

//文件上传//元数据信息ObjectMetadata meta = new ObjectMetadata();meta.setContentLength(file.getSize());meta.setContentEncoding("UTF-8");meta.setContentType(file.getContentType());//向存储桶中保存文件String fileType = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")); //文件后缀名String uploadPath = "/driver/" + path + "/" + UUID.randomUUID().toString().replaceAll("-", "") + fileType;// 01.jpg// /driver/auth/0o98754.jpgPutObjectRequest putObjectRequest = null;try {//1 bucket名称//2putObjectRequest = new PutObjectRequest(tencentCloudProperties.getBucketPrivate(),uploadPath,file.getInputStream(),meta);} catch (IOException e) {throw new RuntimeException(e);}putObjectRequest.setStorageClass(StorageClass.Standard);PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest); //上传文件cosClient.shutdown();

这里区别有点大:

两段代码示例都是关于使用腾讯云 COS Java SDK 来上传文件到 COS 存储桶的。它们展示了两种不同的上传方式,但都实现了相同的目标。下面是它们之间的关系和区别:

  1. 基本上传:

    • 第一段代码是一个更简单的上传示例,它直接使用本地文件对象 localFile 和目标路径 key 来创建 PutObjectRequest 请求。
    • 它没有设置任何额外的元数据信息,直接使用文件的默认属性。
  2. 带元数据的上传:

    • 第二段代码在上传文件之前设置了一些元数据信息,例如内容长度、内容编码和内容类型。
    • 它还生成了一个随机的文件名和路径,以确保上传的文件名是唯一的。

两段代码的共同点:

  • 都使用了 PutObjectRequest 来设置上传请求的参数。
  • 都调用了 cosClient.putObject 方法来执行上传操作,并接收 PutObjectResult 作为响应。

不同点:

  • 第一段代码直接使用本地文件进行上传,而第二段代码使用文件输入流 file.getInputStream()
  • 第二段代码设置了更多的元数据信息,这在需要自定义文件属性时非常有用。
  • 第二段代码中还设置了存储类别 StorageClass,这可以影响文件的存储成本和可用性。

在实际应用中,你可以根据需求选择使用哪种方式。如果你需要上传的文件已经存在于本地文件系统中,并且不需要设置特殊的元数据,那么可以使用第一段代码的方式。如果你需要更多的控制,比如设置自定义的元数据、生成唯一的文件名或者使用文件流,那么第二段代码的方式可能更适合你。

二  回显url

1  详细信息

对象存储 生成预签名 URL-SDK 文档-文档中心-腾讯云 (tencent.com)

这个支持我们上传了文件之后,来获得这个文件的url

生成临时访问URL的功能不仅限于图片文件,它适用于所有存储在腾讯云对象存储(COS)中的文件类型,包括但不限于:

  • 图片文件(如.jpg, .png, .gif等)
  • 文档文件(如.pdf, .docx, .xlsx等)
  • 视频文件(如.mp4, .mov等)
  • 音频文件(如.mp3, .wav等)
  • 以及其他任何格式的文件

要获取其他类型文件的临时访问URL,你只需要将文件路径作为参数传递给getImageUrl方法,方法本身会生成一个适用于该路径的临时URL,无论该路径指向的是图片还是其他类型的文件。

生成预签名 URL

对象存储(Cloud Object Storage,COS)支持使用预签名 URL 进行对象的上传、下载,原理是将签名嵌入 URL 生成签名链接

2  代码编写

官方给的创造临时URL的示例代码:

// 调用 COS 接口之前必须保证本进程存在一个 COSClient 实例,如果没有则创建
// 详细代码参见本页:创建 COSClient
COSClient cosClient = createCOSClient();// 存储桶的命名格式为 BucketName-APPID,此处填写的存储桶名称必须为此格式
String bucketName = "examplebucket-1250000000";
// 对象键(Key)是对象在存储桶中的唯一标识。详情请参见 [对象键](https://cloud.tencent.com/document/product/436/13324)
String key = "exampleobject";GeneratePresignedUrlRequest req =new GeneratePresignedUrlRequest(bucketName, key, HttpMethodName.GET);// 设置下载时返回的 http 头
ResponseHeaderOverrides responseHeaders = new ResponseHeaderOverrides();
String responseContentType = "image/x-icon";
String responseContentLanguage = "zh-CN";
// 设置返回头部里包含文件名信息
String responseContentDispositon = "filename=exampleobject";
String responseCacheControl = "no-cache";
String cacheExpireStr =DateUtils.formatRFC822Date(new Date(System.currentTimeMillis() + 24L * 3600L * 1000L));
responseHeaders.setContentType(responseContentType);
responseHeaders.setContentLanguage(responseContentLanguage);
responseHeaders.setContentDisposition(responseContentDispositon);
responseHeaders.setCacheControl(responseCacheControl);
responseHeaders.setExpires(cacheExpireStr);req.setResponseHeaders(responseHeaders);// 设置签名过期时间(可选),若未进行设置,则默认使用 ClientConfig 中的签名过期时间(1小时)
// 这里设置签名在半个小时后过期
Date expirationDate = new Date(System.currentTimeMillis() + 30L * 60L * 1000L);
req.setExpiration(expirationDate);// 填写本次请求的参数
req.addRequestParameter("param1", "value1");
// 填写本次请求的头部
// host 必填
req.putCustomRequestHeader(Headers.HOST, cosClient.getClientConfig().getEndpointBuilder().buildGeneralApiEndpoint(bucketName));
req.putCustomRequestHeader("header1", "value1");URL url = cosClient.generatePresignedUrl(req);
System.out.println(url.toString());// 确认本进程不再使用 cosClient 实例之后,关闭即可
cosClient.shutdown();

其中我们主要用到这两个方法:

2.1  创建请求对象
GeneratePresignedUrlRequest req =new GeneratePresignedUrlRequest(bucketName, key, HttpMethodName.GET);
  1. 创建请求对象:这行代码创建了一个GeneratePresignedUrlRequest的实例,这个实例包含了生成预签名URL所需的所有信息。

  2. 参数说明

    • bucketName:这是一个String类型的参数,表示您要访问的COS存储桶的名称。存储桶名称通常遵循BucketName-APPID的格式,其中APPID是您在腾讯云平台的账户标识。
    • key:这也是一个String类型的参数,表示存储桶中对象的唯一标识符,也就是对象键(Key)。
    • HttpMethodName.GET:这是一个枚举类型的参数,表示您希望对COS对象执行的HTTP方法。在这个例子中,使用GET方法,意味着生成的URL将用于下载或读取对象。
  3. 作用:创建GeneratePresignedUrlRequest对象的主要作用是为了生成一个可以在指定HTTP方法下访问COS对象的URL,而无需提供用户的永久密钥。这个URL将在一定时间后过期,提供临时的访问权限。

  4. 后续操作:创建了GeneratePresignedUrlRequest对象之后,您可能还需要设置其他属性,比如过期时间(setExpiration方法)、响应头(setResponseHeaders方法)等,然后使用COSClient实例的generatePresignedUrl方法来生成最终的预签名URL。

2.2  创建最终的URL
URL url = cosClient.generatePresignedUrl(bucketName, key, expirationDate, method, headers, params);
  1. 方法调用cosClient.generatePresignedUrl是一个方法调用,它属于COSClient类,用于生成一个预签名URL。

  2. 参数

    • bucketName:存储桶的名称,格式通常是BucketName-APPID
    • key:对象在存储桶中的唯一标识符,即对象键(Key)。
    • expirationDate:预签名URL的过期时间,表示这个URL在何时之后将不再有效。这个时间是基于当前时间加上一个额外的时间(例如,30分钟或1小时)来设置的。
    • method:一个HttpMethodName枚举,表示这个预签名URL将用于哪种HTTP方法,例如GETPUT等。
    • headers:一个Map<String, String>,包含要包含在签名中的HTTP头部信息。这个参数是可选的,如果不需要特别指定头部,可以传递一个空的Map或者null。
    • params:一个Map<String, String>,包含要包含在URL查询字符串中的参数。这个参数也是可选的。
  3. 返回值:方法返回一个URL对象,这个对象包含了生成的预签名URL。这个URL可以被用于在指定的过期时间之前执行指定的HTTP方法来访问COS上的对象。

  4. 作用:生成的预签名URL允许用户在没有密钥的情况下访问COS资源。这在需要临时授权他人访问某个资源时非常有用,例如,允许用户下载一个文件而不需要他们拥有访问存储桶的权限。

  5. 安全性:预签名URL的安全性在于它结合了存储桶策略、密钥和过期时间,确保了只有拥有这个URL的用户才能在有限的时间内访问特定的资源。

  6. 使用场景:这个预签名URL可以用于多种场景,包括但不限于:

    • 临时分享文件下载链接。
    • 允许第三方服务在没有密钥的情况下上传文件到您的存储桶。
    • 实现一个安全的、无需密钥的文件上传或下载接口。

2.3  项目实际的使用

具体代码的临时回调地址实现:

将腾讯对象存储的桶,所需要上传文件的url,和方法的请求类型作为参数创建一个GeneratePresignedUrlRequest对象,设置了临时的时间,并传入了腾讯云服务的客户端对象里面,获取了url。

   public String getImageUrl(String path) {if(!StringUtils.hasText(path)) return "";//获取cosclient对象COSClient cosClient = this.getCosClient();//GeneratePresignedUrlRequestGeneratePresignedUrlRequest request =new GeneratePresignedUrlRequest(tencentCloudProperties.getBucketPrivate(),path, HttpMethodName.GET);//设置临时URL有效期为15分钟Date date = new DateTime().plusMinutes(15).toDate();request.setExpiration(date);//调用方法获取URL url = cosClient.generatePresignedUrl(request);cosClient.shutdown();return url.toString();}
}

认证功能

一  腾讯云身份证认证接口

在做这些认证接口之前要去开通相应的服务,比如文字识别服务

官方文档:

API Explorer - 云 API - 控制台 (tencent.com)

1  使用说明

点击地址后,我们看到这个页面

其中我们注意到中间和右边的。中间是可选项,右边是示例代码。我们输入region,并选择要认证的文件为base64格式。如图所示。

2  实现代码

之后下面就是示代码

package com.tencent;
import com.tencentcloudapi.common.AbstractModel;import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.ocr.v20181119.OcrClient;
import com.tencentcloudapi.ocr.v20181119.models.*;public class Sample
{public static void main(String [] args) {try{// 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密// 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见:https://cloud.tencent.com/document/product/1278/85305// 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取Credential cred = new Credential("SecretId", "SecretKey");// 实例化一个http选项,可选的,没有特殊需求可以跳过HttpProfile httpProfile = new HttpProfile();httpProfile.setEndpoint("ocr.tencentcloudapi.com");// 实例化一个client选项,可选的,没有特殊需求可以跳过ClientProfile clientProfile = new ClientProfile();clientProfile.setHttpProfile(httpProfile);// 实例化要请求产品的client对象,clientProfile是可选的OcrClient client = new OcrClient(cred, "ap-guangzhou", clientProfile);// 实例化一个请求对象,每个接口都会对应一个request对象IDCardOCRRequest req = new IDCardOCRRequest();req.setImageBase64("1");// 返回的resp是一个IDCardOCRResponse的实例,与请求对象对应IDCardOCRResponse resp = client.IDCardOCR(req);// 输出json格式的字符串回包System.out.println(AbstractModel.toJsonString(resp));} catch (TencentCloudSDKException e) {System.out.println(e.toString());}}
}

稍作修改后,我们项目最终的代码。

        try {//图片转换base64格式字符串byte[] base64 = Base64.encodeBase64(file.getBytes());String fileBase64 = new String(base64);// 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密Credential cred = new Credential(tencentCloudProperties.getSecretId(), tencentCloudProperties.getSecretKey());// 实例化一个http选项,可选的,没有特殊需求可以跳过HttpProfile httpProfile = new HttpProfile();httpProfile.setEndpoint("ocr.tencentcloudapi.com");// 实例化一个client选项,可选的,没有特殊需求可以跳过ClientProfile clientProfile = new ClientProfile();clientProfile.setHttpProfile(httpProfile);// 实例化要请求产品的client对象,clientProfile是可选的OcrClient client = new OcrClient(cred, tencentCloudProperties.getRegion(), clientProfile);// 实例化一个请求对象,每个接口都会对应一个request对象,并把图片设置进去IDCardOCRRequest req = new IDCardOCRRequest();req.setImageBase64(fileBase64);// 返回的resp是一个IDCardOCRResponse的实例,与请求对象对应IDCardOCRResponse resp = client.IDCardOCR(req);}return idCardOcrVo;} catch (Exception e) {throw new GuiguException(ResultCodeEnum.DATA_ERROR);}}

验证驾驶证以及其他验证相关的功能和上面同理

腾讯位置服务地图选点

一  介绍

他主要有六种服务。我们这里使用距离计算服务

二  前提准备

使用“腾讯位置服务地图选点”插件时,我们要开通“腾讯位置服务”,并且设置授权APP ID,这样才能使用正确使用选点服务

第一步: 访问腾讯官网 https://lbs.qq.com/

第二步 进行注册,手机号或者微信或者其他方式

第三步 使用注册账号进行登录,找到控制台

第四步 在应用管理 -- 我的应用 ,创建应用

第五步 在创建应用中,添加key

第六步 找到添加key的值,要自己保存起来

三  代码演示

官方的接口文档:

WebService API | 腾讯位置服务 (qq.com)

1  封装从前端传来的数据

这四个值是后面请求接口需要用到的

@Data
public class CalculateDrivingLineForm {@Schema(description = "起始地点经度")private BigDecimal startPointLongitude;@Schema(description = "起始点伟度")private BigDecimal startPointLatitude;@Schema(description = "结束地点经度")private BigDecimal endPointLongitude;@Schema(description = "结束地点经度")private BigDecimal endPointLatitude;
}

2  封装前提准备中所申请服务的key

这个也是后面请求接口需要用到的。

我们将他放在配置文件里面,用一个变量提取出来,避免硬编码。

配置文件  :

读取配置文件

@Value("tencent.cloud.map")private String key;

3  发送请求并处理结果

我们对请求的地址进行处理,用RestTemplate发送请求,将结果返回给前端

 //计算驾驶线路@Overridepublic DrivingLineVo calculateDrivingLine(CalculateDrivingLineForm calculateDrivingLineForm) {// 向微信提供的接口地址发送请求,处理返回值/*https://apis.map.qq.com/ws/direction/v1/driving/?from=39.915285,116.403857&to=39.915285,116.803857key=[你的key]*///1  定义原始的url,将里面的参数给替代掉String url = "https://apis.map.qq.com/ws/direction/v1/driving/" +"        ?from={from}" +"        &to={to}" +"        key={key}";//2 替代起始经纬度String begin = calculateDrivingLineForm.getStartPointLatitude() + "," +calculateDrivingLineForm.getStartPointLongitude();url.replace("{from}", begin);//3 代替终点经纬度String end = calculateDrivingLineForm.getEndPointLatitude() + "," +calculateDrivingLineForm.getEndPointLongitude();url.replace("{to}", end);//4 代替我的keyurl.replace("key", key);//5 利用restTemplate来发送请求,获得返回值JSONObject result = restTemplate.getForObject(url, JSONObject.class);//6 处理返回结果 判断调用是否成功int status = result.getIntValue("status");if(status != 0) {//失败throw new GuiguException(ResultCodeEnum.MAP_FAIL);}//7 获取返回路线信息  他会有三条路径,第一条是最优的,所以get 0JSONObject route =result.getJSONObject("result").getJSONArray("routes").getJSONObject(0);//8  创建vo对象DrivingLineVo drivingLineVo = new DrivingLineVo();//预估时间drivingLineVo.setDuration(route.getBigDecimal("duration"));//距离  6.583 == 6.58 / 6.59drivingLineVo.setDistance(route.getBigDecimal("distance").divide(new BigDecimal(1000)).setScale(2, RoundingMode.HALF_UP));//路线drivingLineVo.setPolyline(route.getJSONArray("polyline"));return drivingLineVo;}

4  替换字符串方法

String Str.replace(oldvalue, newvalue);

oldvalue是想要替代的值,newvalue是替代的值。返回值是替代完后的值

我们上面代码中

 //5 利用restTemplate来发送请求,获得返回值JSONObject result = restTemplate.getForObject(url, JSONObject.class);

这行代码做了以下几件事情:

  1. 使用RestTemplate: restTemplate 是Spring框架提供的一个用于发起HTTP请求的工具类。它简化了HTTP客户端的使用,使得发起网络请求变得更加简单。

  2. 发起GET请求: 这行代码使用 getForObject 方法发起了一个GET请求。getForObject 是RestTemplate中用于发送GET请求并将响应体映射为对象的方法。

  3. 请求URL: url 是一个字符串,包含了请求的完整URL地址。

  4. 返回类型: JSONObject.class 指定了响应体应该被映射(转换成)的类型。这意味着服务器返回的JSON响应将被转换成一个 JSONObject 对象。

  5. 结果赋值: 转换后的 JSONObject 对象被赋值给变量 result。之后,你可以使用这个 result 对象来访问JSON响应中的各种属性和值。

我们将map对应的属性给url赋值。这是restTemplate封装的方法。

腾讯云数据万象服务CI

官网地址:https://cloud.tencent.com/product/ci

API文档地址:https://cloud.tencent.com/document/product/460/57227

一  介绍

数据万象(Cloud Infinite,CI)是依托腾讯云对象存储的数据处理平台,涵盖图片处理、内容审核、媒体处理、AI 识别、文档预览等功能,为客户提供一站式的专业数据处理解决方案,满足您多种业务场景的需求。

我们项目中很多业务都可以使用腾讯云的数据万象服务,比如审核司机上传的身份证、驾驶证照片与手持证件照片等是否包含暴力色情的内容,还有审核代驾过程对话记录是否含有暴力色情等等。如果用人工审核,速度太慢,所以我们需要用数据万象的AI引擎来帮我们审核。

二  开通数据万象服务

开通服务后,绑定我们需要处理的cos的桶,手动绑定

三  具体审核

1  审核图片

根据path读取内容并审核。这里我们审核图片。

@Autowiredprivate TencentCloudProperties tencentCloudProperties;private COSClient getPrivateCOSClient() {COSCredentials cred = new BasicCOSCredentials(tencentCloudProperties.getSecretId(), tencentCloudProperties.getSecretKey());ClientConfig clientConfig = new ClientConfig(new Region(tencentCloudProperties.getRegion()));clientConfig.setHttpProtocol(HttpProtocol.https);COSClient cosClient = new COSClient(cred, clientConfig);return cosClient;}@Overridepublic Boolean imageAuditing(String path) {COSClient cosClient = this.getPrivateCOSClient();//审核图片内容//1.创建任务请求对象ImageAuditingRequest request = new ImageAuditingRequest();//2.添加请求参数 参数详情请见 API 接口文档//2.1设置请求 bucketrequest.setBucketName(tencentCloudProperties.getBucketPrivate());//2.2设置审核策略 不传则为默认策略(预设)//request.setBizType("");//2.3设置 bucket 中的图片位置request.setObjectKey(path);//3.调用接口,获取任务响应对象ImageAuditingResponse response = cosClient.imageAuditing(request);cosClient.shutdown();//用于返回该审核场景的审核结果,返回值:0:正常。1:确认为当前场景的违规内容。2:疑似为当前场景的违规内容。if (!response.getPornInfo().getHitFlag().equals("0")|| !response.getAdsInfo().getHitFlag().equals("0")|| !response.getTerroristInfo().getHitFlag().equals("0")|| !response.getPoliticsInfo().getHitFlag().equals("0")) {return false;}return true;}

然后在我们上传图片的接口调用这个方法。如果发现违规,删除存放的照片并报错

Boolean imageAuditing = ciService.imageAuditing(uploadPath);
if(!imageAuditing) {//删除违规图片cosClient.deleteObject(tencentCloudProperties.getBucketPrivate(),uploadPath);throw new GuiguException(ResultCodeEnum.IMAGE_AUDITION_FAIL);
}

2  审核文本(语音转过来的文字)

@Overridepublic TextAuditingVo textAuditing(String content) {// 判断传过来的语音有没有内容if(!StringUtils.hasText(content)) {TextAuditingVo textAuditingVo = new TextAuditingVo();textAuditingVo.setResult("0");return textAuditingVo;}// 创建客户端COSClient cosClient = this.getPrivateCOSClient();TextAuditingRequest request = new TextAuditingRequest();request.setBucketName(tencentCloudProperties.getBucketPrivate());//将图片转换为base64字符串byte[] encoder = org.apache.commons.codec.binary.Base64.encodeBase64(content.getBytes());String contentBase64 = new String(encoder);request.getInput().setContent(contentBase64);request.getConf().setDetectType("all");TextAuditingResponse response = cosClient.createAuditingTextJobs(request);AuditingJobsDetail detail = response.getJobsDetail();TextAuditingVo textAuditingVo = new TextAuditingVo();if ("Success".equals(detail.getState())) {//检测结果: 0(审核正常),1 (判定为违规敏感文件),2(疑似敏感,建议人工复核)。String result = detail.getResult();//违规关键词StringBuffer keywords = new StringBuffer();List<SectionInfo> sectionInfoList = detail.getSectionList();for (SectionInfo info : sectionInfoList) {String pornInfoKeyword = info.getPornInfo().getKeywords();String illegalInfoKeyword = info.getIllegalInfo().getKeywords();String abuseInfoKeyword = info.getAbuseInfo().getKeywords();if (pornInfoKeyword.length() > 0) {keywords.append(pornInfoKeyword).append(",");}if (illegalInfoKeyword.length() > 0) {keywords.append(illegalInfoKeyword).append(",");}if (abuseInfoKeyword.length() > 0) {keywords.append(abuseInfoKeyword).append(",");}}textAuditingVo.setResult(result);textAuditingVo.setKeywords(keywords.toString());}return textAuditingVo;}

调用方法来审核:

//增加文本审核TextAuditingVo textAuditingVo =ciFeignClient.textAuditing(orderMonitorForm.getContent()).getData();orderMonitorRecord.setResult(textAuditingVo.getResult());orderMonitorRecord.setKeywords(textAuditingVo.getKeywords());

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 企业采用电子招投标的原因及系统推荐
  • 50ETF期权可以当天买卖吗?
  • 观众登记2025中国(深圳)国际智能手机供应链展览会
  • 解算方案—二连杆与三连杆解算
  • 学习Vue3的第五天
  • 2024年全国大学生软件测试大赛赛项安排(一)
  • Docker快速部署Apache Guacamole
  • 移动订货小程序哪个好 批发订货系统源码哪个好
  • Mac电脑IDEA2024安装后打不开问题解决
  • Ubuntu IDEA 卡死问题如何解决
  • 大数据安全之Kerberos
  • 3. 轴指令(omron 机器自动化控制器)——>MC_PowerMC_MoveJog
  • C语言 ——— 学习并使用 #if …… #endif 条件编译指令
  • PMP--一模--解题--21-30
  • Vite + Electron 时,Electron 渲染空白,静态资源加载错误等问题解决
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • input实现文字超出省略号功能
  • js对象的深浅拷贝
  • SOFAMosn配置模型
  • springboot_database项目介绍
  • webpack入门学习手记(二)
  • 反思总结然后整装待发
  • 三分钟教你同步 Visual Studio Code 设置
  • const的用法,特别是用在函数前面与后面的区别
  • 树莓派用上kodexplorer也能玩成私有网盘
  • #{} 和 ${}区别
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • #每日一题合集#牛客JZ23-JZ33
  • (52)只出现一次的数字III
  • (day 12)JavaScript学习笔记(数组3)
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (floyd+补集) poj 3275
  • (k8s)Kubernetes本地存储接入
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (七)理解angular中的module和injector,即依赖注入
  • (十六)串口UART
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .NET delegate 委托 、 Event 事件
  • .NET 动态调用WebService + WSE + UsernameToken
  • .netcore 获取appsettings
  • .NET建议使用的大小写命名原则
  • .NET开发者必备的11款免费工具
  • .NET企业级应用架构设计系列之应用服务器
  • /var/log/cvslog 太大
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)
  • [Bug]使用gradio创建应用提示AttributeError: module ‘gradio‘ has no attribute ‘inputs‘
  • [Bzoj4722]由乃(线段树好题)(倍增处理模数小快速幂)
  • [ccc3.0][数字钥匙] UWB配置和使用(二)
  • [codeforces]Checkpoints
  • [Deepin 15] 编译安装 MySQL-5.6.35
  • [emuch.net]MatrixComputations(7-12)
  • [go] 策略模式
  • [javaSE] GUI(事件监听机制)