宜搭低代码开发师(高级)「FaaS连接器加解密系统」操作步骤(亲测OK)

这篇具有很好参考价值的文章主要介绍了宜搭低代码开发师(高级)「FaaS连接器加解密系统」操作步骤(亲测OK)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

目标:

步骤:

一、FaaS连接器

二、页面步骤介绍


目标:

轻松搞定高级认证!!!


步骤:

提示:这里可以添加要学的内容

一、FaaS连接器

1. 界面介绍

宜搭低代码开发师(高级)「FaaS连接器加解密系统」操作步骤(亲测OK),宜搭低代码高级考试,低代码,javascript,阿里云

 

说明: 右上点击进来 => 点击连接器工厂 => 填写信息(开发语言分三种)

宜搭低代码开发师(高级)「FaaS连接器加解密系统」操作步骤(亲测OK),宜搭低代码高级考试,低代码,javascript,阿里云 接口入参填写,可以直接在上面测试。不过可以前往云 IDE开发。

工具类(宜搭给的加解密)DESUtil

package com.alibaba.work.faas.util;

import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;

import com.aliyuncs.utils.StringUtils;

import java.security.SecureRandom;
import org.apache.commons.codec.binary.Base64;
import javax.crypto.SecretKey;
import java.io.IOException;
import javax.crypto.Cipher;

public class DESUtil {
private final static String DES = "DES";

public static void main(String[] args) {
String data = "测试";
String key = "asasas";
String encryptStr = encrypt(data, key);
System.out.println("加密后的字符串:" + encryptStr);
String decryptStr = decrypt(encryptStr, key);
System.out.println("解密后的字符串:" + decryptStr);
}

/**
* Description 根据键值进行加密
*
* @param data
* @param key 加密键byte数组
* @return
* @throws Exception
*/
public static String encrypt(String data, String key) {
  System.out.println("ddata+++++" + data);
  System.out.println("data.getBytes()+++++" + data.getBytes());
if (null == data || StringUtils.isEmpty(key)) {
System.out.println("入参为空,data:" + data + ",key=" + key);
return null;
}
try {
byte[] bt = encrypt(data.getBytes(), key.getBytes());
String strs = Base64.encodeBase64String(bt);
return strs;
}
catch (Exception ex) {
System.out.println("加密遇到错误:");
ex.printStackTrace();
}
return null;
}

/**
* Description 根据键值进行解密
*
* @param data
* @param key 加密键byte数组
* @return
* @throws IOException
* @throws Exception
*/
public static String decrypt(String data, String key) {
  System.out.println("decrypt+++++" + data);
if (null == data|| StringUtils.isEmpty(key)) {
System.out.println("入参为空,data:" + data + ",key=" + key);
return null;
}
try {
byte[] dataNew = Base64.decodeBase64(data);
byte[] bt = decrypt(dataNew, key.getBytes());
return new String(bt);
}
catch (Exception ex) {
System.out.println("解密遇到错误:");
ex.printStackTrace();
}
return null;

}

/**
* Description 根据键值进行加密
*
* @param data
* @param key 加密键byte数组
* @return
* @throws Exception
*/
private static byte[] encrypt(byte[] data, byte[] key) throws Exception {
// 生成一个可信任的随机数源
SecureRandom sr = new SecureRandom();

// 从原始密钥数据创建DESKeySpec对象
DESKeySpec dks = new DESKeySpec(key);

// 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
SecretKey securekey = keyFactory.generateSecret(dks);

// Cipher对象实际完成加密操作
Cipher cipher = Cipher.getInstance(DES);

// 用密钥初始化Cipher对象
cipher.init(Cipher.ENCRYPT_MODE, securekey, sr);

return cipher.doFinal(data);
}


/**
* Description 根据键值进行解密
*
* @param data
* @param key 加密键byte数组
* @return
* @throws Exception
*/
private static byte[] decrypt(byte[] data, byte[] key) throws Exception {
// 生成一个可信任的随机数源
SecureRandom sr = new SecureRandom();

// 从原始密钥数据创建DESKeySpec对象
DESKeySpec dks = new DESKeySpec(key);

// 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
SecretKey securekey = keyFactory.generateSecret(dks);

// Cipher对象实际完成解密操作
Cipher cipher = Cipher.getInstance(DES);

// 用密钥初始化Cipher对象
cipher.init(Cipher.DECRYPT_MODE, securekey, sr);

return cipher.doFinal(data);
}
}

我们需要把代码写到外面FaasEntry 这个类中。

package com.alibaba.work.faas;



import java.util.Arrays;

import java.util.Collections;

import java.util.List;

import java.util.Map;

import java.util.Objects;



import com.alibaba.fastjson.JSON;

import com.alibaba.fastjson.JSONObject;



import com.alibaba.work.faas.common.AbstractEntry;

import com.alibaba.work.faas.common.FaasInputs;

import com.alibaba.work.faas.util.DESUtil;

import com.alibaba.work.faas.util.DingOpenApiUtil;

import com.alibaba.work.faas.util.YidaConnectorUtil;

import com.alibaba.work.faas.util.YidaConnectorUtil.ConnectorTypeEnum;

import com.alibaba.work.faas.util.YidaConnectorUtil.YidaResponse;

import com.aliyun.credentials.utils.StringUtils;

import com.aliyun.dingtalkyida_1_0.models.BatchSaveFormDataRequest;

import com.aliyun.fc.runtime.Context;



/**

 * @Description 宜搭Faas连接器函数入口,FC

 *              handler:com.alibaba.work.faas.FaasEntry::handleRequest

 * @Version 2.1

 * @Author bufan

 **/

public class FaasEntry extends AbstractEntry {

    



    @Override

    public JSONObject execute(FaasInputs faasInputs, Context context) {

        context.getLogger().info("faasInputs: " + JSON.toJSONString(faasInputs));

        //填充宜搭工具类的上下文, 必须调用此方法!!! 请不要删除

        initYidaUtil(faasInputs);

        

        //登录态里的钉钉userId

        String userId = (String) faasInputs.getYidaContext().get("userId");

        //登录态里的钉钉corpId

        String corpId = (String) faasInputs.getYidaContext().get("corpId");

        

        //业务传的实际入参(如果您配置了参数映射(也就是点击了连接器工厂里的解析Body按钮并配置了各个参数描述和映射), 那么就是业务实际参数经过参数映射处理后的值)

        Map<String, Object> input = faasInputs.getInputs();

        String content = (String) input.get("content");
        String password = (String) input.get("password");
        Integer type = Integer.parseInt(String.valueOf(input.get("type")));
        /** * 在这里编写您的业务代码, 也可以将业务代码封装到其他类或方法里. */
        JSONObject result = new JSONObject();
        result.put("success", false);
        result.put("result", "");
        result.put("error", "");
        if (0 == type) {
          /** * 加密 */
          String encryptContent = DESUtil.encrypt(content, password);
          System.out.println("加密后的字符串:" + encryptContent);
          if (StringUtils.isEmpty(encryptContent)) {
            result.put("error", "empty string got!");
            return result;
          }
          result.put("result", encryptContent);
          result.put("success", true);
        } else {
          /** * 解密 */
          String encryptContent = DESUtil.decrypt(content, password);
          System.out.println("解密后的字符串:" + encryptContent);
          if (StringUtils.isEmpty(encryptContent)) {
            result.put("error", "empty string got!");
            return result;
          }
          result.put("result", encryptContent);
          result.put("success", true);
        }
        System.out.println("返回:" + JSON.toJSONString(result));
        return result;
        

        /**

         * 示例1, 在doYourBusiness方法里编写您的业务代码, 也可以将业务代码封装到其他Class源文件或方法里, cloudIDE和您的本地IDE基本无区别。

         */

        // JSONObject result = new JSONObject();

        // try {

        //    Object businessResult = doYourBusiness(input);

        //    result.put("success",true);

        //    result.put("result",businessResult);

        //    result.put("error","");

        //    return result;

        // } catch (Exception e) {

        //    result.put("success",false);

        //    result.put("result",null);

        //    result.put("error35555",e.getMessage());

        //    return result;

        // }





           
    }



    /**

     * 将相关参数存到宜搭工具类里, 必须要调用此方法!!! 请不要删除!!!

     * 

     * @param faasInputs

     */

    private static final void initYidaUtil(FaasInputs faasInputs){

        /**

         * 用于调用钉钉开放平台OpenAPI的accessToken, 宜搭提供的, 仅申请了钉钉开放平台的部分OpenAPI的调用权限

         * 如果此accessToken不满足您的需求,可在钉钉开放平台创建您自己的钉钉应用并获取appKey和APPSecret并使用com.alibaba.work.faas.util.DingOpenApiUtil获取您自己的customAccessToken

         * 

         * @see com.alibaba.work.faas.util.DingOpenApiUtil#getCustomAccessTokenThenCache(String,String)

         */

        String accessToken = (String) faasInputs.getYidaContext().get("accessToken");

        // 设置钉开放平台访问token, 后续无需再设置

        DingOpenApiUtil.setAccessToken(accessToken);



        // try {

        //     //调用该方法就会自动存储customAccessToken, 之后请不要调用DingOpenApiUtil.setAccessToken(accessToken)将返回的customAccessToken覆盖宜搭传入的accessToken;

        //     DingOpenApiUtil.getCustomAccessTokenThenCache("您的钉钉应用appKey", "您的钉钉应用appSecret");

        // } catch (Exception e) {

        //     System.out.println("getCustomAccessTokenThenCache error:"+e.getMessage());

        // }

        /**

         *调用宜搭连接器依赖consumeCode

         */

        String consumeCode = (String)faasInputs.getYidaContext().get("consumeCode");

        //设置连接器消费码, 后续无需再设置

        YidaConnectorUtil.setConsumeCode(consumeCode);

    }



//     /**

//      * 可以将您的业务代码放在这里

//      * 

//      * @param input

//      * @return

//      * @throws Exception

//      */

    private Object doYourBusiness(Map<String,Object> input) throws Exception{

        //取实际的入参

       String content = (String)input.get("content");

       String password = (String)input.get("password");

      Integer type = Integer.parseInt(String.valueOf(input.get("type")));









//         //业务处理

//        /**

// *在这里编写您的业务代码, 也可以将业务代码封装到其他类或方法里.

// */

JSONObject result = new JSONObject();

result.put("success",false);

result.put("result","");

result.put("error","");

if (0 == type) {

/**

* 加密

*/

String encryptContent = DESUtil.encrypt(content, password);

System.out.println("加密后的字符串:" + encryptContent);

if (StringUtils.isEmpty(encryptContent)) {

result.put("error", "empty string got!");

return result;

}

result.put("result", encryptContent);

result.put("success", true);

}

else {

/**

* 解密

*/

String encryptContent = DESUtil.decrypt(content, password);

System.out.println("解密后的字符串:" + encryptContent);

if (StringUtils.isEmpty(encryptContent)) {

result.put("error", "empty string got!");

return result;

}

result.put("result", encryptContent);

result.put("success", true);

}

System.out.println("返回:" + JSON.toJSONString(result));

return result.get("result");

    }



    /**

     * 示例 调用钉钉官方连接器(待办连接器, 创建待办)

     * 

     * @param faasInputs

     * @return

     * @throws Exception

     */

    private Object  invokeYidaConnector(FaasInputs faasInputs) throws Exception {

        Map<String,Object> input = faasInputs.getInputs();

        String userId = (String)faasInputs.getYidaContext().get("userId");

        String corpId = (String)faasInputs.getYidaContext().get("corpId");

        JSONObject connectorActionInputs = new JSONObject();

        //注意: http连接器的入参是body,query等, 钉钉官方连接器则不是, 请参考宜搭帮助文档 https://www.yuque.com/yida/support/stbfik

        {

	        connectorActionInputs.put("unionId",Arrays.asList(userId));

            connectorActionInputs.put("subject",(String)input.get("title"));

            connectorActionInputs.put("creatorId",Arrays.asList(userId));

            connectorActionInputs.put("description","Faas连接器里调用钉钉官方连接器创建待办");

            connectorActionInputs.put("dueTime",System.currentTimeMillis()+600*1000);

            connectorActionInputs.put("priority",10L);

        } 

        //请确保调用前设置了consumeCode

        //更多钉钉官方连接器ID和动作ID及出入参请参照  https://www.yuque.com/yida/support/stbfik#Mv0dK (如果目标段落不存在, 请访问 https://www.yuque.com/yida/support/stbfik)

        YidaResponse response = YidaConnectorUtil.invokeService("G-CONN-1016B8AEBED50B01B8D00009","G-ACT-1016B8B1911A0B01B8D0000I", ConnectorTypeEnum.DING_INNER_CONNECTOR,null,connectorActionInputs);

        if (Objects.nonNull(response) && response.isSuccess()){

            try {

                return YidaConnectorUtil.extractYidaConnectorExecutionResult(response);

            } catch (Exception e) {

                throw new Exception(e.getMessage());

            }

        }else {

            throw new Exception(Objects.isNull(response)?"执行宜搭连接器失败":response.getErrorCode() +" "+response.getErrorMsg());

        }

    }



    /**

     * 示例 批量创建宜搭表单实例

     * 

     * @return

     * @throws Exception

     */

    private List<String> invokeDingOpenApi() throws Exception {

        BatchSaveFormDataRequest request = new BatchSaveFormDataRequest();

        request.setAsynchronousExecution(true);

        request.setKeepRunningAfterException(true);

        request.setNoExecuteExpression(true);

        request.setAppType("宜搭应用编码");

        request.setUserId("钉钉userId");

        request.setSystemToken("宜搭应用systemToken");

        request.setFormUuid("表单编码");



        JSONObject formData = new JSONObject();

        formData.put("表单组件1的ID", "表单组件1的值");

        formData.put("表单组件2的ID", "表单组件2的值");

        //批量创建200条

        request.setFormDataJsonList(Collections.nCopies(200,formData.toJSONString()));  

        

        return DingOpenApiUtil.batchSaveFormData(request);

    }

}

 说明:这个是入口,相当于是接口。获取参数并解析即可。

二、页面步骤介绍

宜搭低代码开发师(高级)「FaaS连接器加解密系统」操作步骤(亲测OK),宜搭低代码高级考试,低代码,javascript,阿里云

 1、没啥,不用看。 直接看授权信息查看页

宜搭低代码开发师(高级)「FaaS连接器加解密系统」操作步骤(亲测OK),宜搭低代码高级考试,低代码,javascript,阿里云

宜搭低代码开发师(高级)「FaaS连接器加解密系统」操作步骤(亲测OK),宜搭低代码高级考试,低代码,javascript,阿里云 

 说明: 新建流程,因为这个需要在填写完敏感信息和密钥后,首先回触发 这个流程,直接加密信息。

2、进入页面

宜搭低代码开发师(高级)「FaaS连接器加解密系统」操作步骤(亲测OK),宜搭低代码高级考试,低代码,javascript,阿里云

 

说明:这里直接关联表单——存档页,然后设置筛选条件,数据填充信息。

宜搭低代码开发师(高级)「FaaS连接器加解密系统」操作步骤(亲测OK),宜搭低代码高级考试,低代码,javascript,阿里云

 宜搭低代码开发师(高级)「FaaS连接器加解密系统」操作步骤(亲测OK),宜搭低代码高级考试,低代码,javascript,阿里云

宜搭低代码开发师(高级)「FaaS连接器加解密系统」操作步骤(亲测OK),宜搭低代码高级考试,低代码,javascript,阿里云 

说明:这里要选择高级,始终提交。

3、流程图:

宜搭低代码开发师(高级)「FaaS连接器加解密系统」操作步骤(亲测OK),宜搭低代码高级考试,低代码,javascript,阿里云 这个和刚才那个差不多,条件类型不同。

宜搭低代码开发师(高级)「FaaS连接器加解密系统」操作步骤(亲测OK),宜搭低代码高级考试,低代码,javascript,阿里云

发送消息通知给自己,即可。 

整体大致是这样,希望可以帮助到你。

如果有问题,欢迎留言。文章来源地址https://www.toymoban.com/news/detail-686398.html

到了这里,关于宜搭低代码开发师(高级)「FaaS连接器加解密系统」操作步骤(亲测OK)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 宜搭低代码开发师(高级)考试选择题错误整理集(自己整理的,考试前是50多分,看了后答题93分)

    宜搭低代码开发师(高级)考试选择题错误整理集(自己整理的,考试前是50多分,看了后答题93分)

    目录 完成高级选择题认证目标: 这是我考了无数次,整理的错题集,希望能够帮助到你。  考试前的样子-57分  考试后的样子-93分 试题内容如下: 五分钟搞定它 1. 简易流程编译器中可以使用 并行分支 节点   A 错误 2. 页面数据源面板中配置远程数据源接口,接口有跨域问

    2024年02月14日
    浏览(70)
  • 宜搭低代码高级认证实操题1 todolist

    宜搭低代码高级认证实操题1 todolist

    进行中待办 已完成待办 待办事项 待办事项远程api和变量配置 回调函数 回调函数 页面js 数据绑定表 todoList doneList 动作设置 操作列 顶部操作:新增待办

    2024年04月09日
    浏览(12)
  • 阿里云宜搭低代码开发师(中级)实操题一:仓库库存管理系统

    阿里云宜搭低代码开发师(中级)实操题一:仓库库存管理系统

    创建客户信息表 创建进货登记表 创建出货登记表 创建仓库库存表 然后,回到进货登记表的表单,设置数据联动,也就是进货数量加入到仓库库存表对应物品上。 1 2 3 去出货登记表的表单,同理。 1 2 3 OK,大功告成!

    2024年02月17日
    浏览(49)
  • 阿里云宜搭低代码开发师(中级)实操题二:会员住房信息统计系统

    阿里云宜搭低代码开发师(中级)实操题二:会员住房信息统计系统

    会员信息表 1、首先在“会员信息表”中组建所需的表单元素: 2、在“数据管理”中批量导入提供的Excel数据: 多图混合报表 新建报表,命名为“多图混合报表”: 顶部筛选栏中,新建四个筛选项:小区档次、职业、教育水平、创建时间区间: 新建“人群人数分布图”柱状

    2024年02月07日
    浏览(51)
  • 宜搭低代码快速上手使用手册

    宜搭低代码快速上手使用手册

    广东数据项目组中,需要进行四员协同的开发工作,四员协同这个模块简单点说就是通过表单和流程相结合,进行数据收集和流程流转。在宜搭低代码中,可以直接用成员组件完成钉钉内的流程表单提交,和钉钉app相结合。基于广州项目组地市客户之前已经用过宜搭,故省局

    2024年02月22日
    浏览(9)
  • Flink 之 Kafka连接器

    Flink附带了一个通用的Kafka连接器,它试图跟踪Kafka客户端的最新版本。Kafka的客户端版本会在Flink不同版本间发生变化。现代Kafka客户端向后兼容broker 0.10.0版本及以后的版本。 用法 Kafka Source 提供了一个构造器类来构建KafkaSource的实例。下面代码展示如何构建一个KafkaSource来消

    2023年04月08日
    浏览(13)
  • 汽车连接器接线端子和多芯线束连接界面

    汽车连接器接线端子和多芯线束连接界面

    冷压接的开式压接和闭式压接以及热压接的超声波焊接对汽车连接器接线端子和多芯线束连接界面 连接器接线端子和多芯线束的连接是电子线束行业,特别是汽车行业常用的导线连接方式。汽车整车线束又由许多分支线束组成,而分支线束必须通过连接器实现连接,连接核心

    2024年01月19日
    浏览(9)
  • 【flink sql】kafka连接器

    Kafka 连接器提供从 Kafka topic 中消费和写入数据的能力。 前面已经介绍了flink sql创建表的语法及说明:【flink sql】创建表 这篇博客聊聊怎么通过flink sql连接kafka 以下的连接器元数据可以在表定义中通过元数据列的形式获取。 R/W 列定义了一个元数据是可读的(R)还是可写的(

    2024年02月08日
    浏览(13)
  • 罗技鼠标m590 连接器无法工作

    罗技鼠标m590 连接器无法工作

    买了M590,手感不错,一开始可以连接两台设备。但是后来我重置了蓝牙,调换了两台设备的连接方法,,就发现蓝牙可以,连接器不行。 我比较奇怪,按道理一般连接器要比蓝牙方便,但这次为什么蓝牙可以,连接器不行了。然后我又把两个连接方式调换了一下,发现还是

    2024年02月11日
    浏览(47)
  • 【腾讯云】腾讯云HiFlow场景连接器

    【腾讯云】腾讯云HiFlow场景连接器

    iFlow场景连接器是腾讯云推出的一个免费的应用连接自动化工具。提供助力办公流程自动化的场景连接工具,可以零代码的连接你的多个应用,鼠标轻点即可轻松设置自动化的工作流程数据流程,轻松实现日常办公任务的自动化操作。 通过场景连接器,你可以轻松快速实现如

    2024年02月16日
    浏览(15)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包